@fairfox/polly 0.10.1 → 0.11.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.
@@ -50,7 +50,7 @@
50
50
  "// 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 { 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\n/**\n * Comprehensive architecture analyzer\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 // 2. Extract message handlers\n const handlerExtractor = new HandlerExtractor(this.options.tsConfigPath);\n const { handlers } = 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(this.options.tsConfigPath, handlers);\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 ...(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",
51
51
  "// Context analysis - analyze individual execution contexts\n\nimport {\n type ClassDeclaration,\n type FunctionDeclaration,\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 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 comment = leadingComments[0].getText();\n\n // Extract description from JSDoc\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n if (descMatch) {\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(name: string, node: FunctionDeclaration): 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): string[] {\n const params = node.getParameters();\n if (params.length === 0) return [];\n\n const propsParam = params[0];\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 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 const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const description = jsDocs[0].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",
52
52
  "// Message flow analysis - trace messages between contexts\n\nimport { Node, Project } from \"ts-morph\";\nimport type { MessageFlow, MessageStep } from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\n\nexport class FlowAnalyzer {\n private project: Project;\n private handlers: MessageHandler[];\n\n constructor(tsConfigPath: string, handlers: MessageHandler[]) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.handlers = handlers;\n }\n\n /**\n * Analyze message flows between contexts\n */\n analyzeFlows(): MessageFlow[] {\n const flows: MessageFlow[] = [];\n\n // Group handlers by message type\n const handlersByType = new Map<string, MessageHandler[]>();\n for (const handler of this.handlers) {\n if (!handlersByType.has(handler.messageType)) {\n handlersByType.set(handler.messageType, []);\n }\n handlersByType.get(handler.messageType)?.push(handler);\n }\n\n // For each message type, trace the flow\n for (const [messageType, handlers] of handlersByType) {\n // Find senders\n const senders = this.findMessageSenders(messageType);\n\n // For each sender, create a flow\n for (const sender of senders) {\n const recipients = handlers.map((h) => h.node);\n\n // Build sequence of steps\n const sequence = this.buildSequence(messageType, sender, handlers);\n\n // Extract flow metadata\n const flowMetadata = this.extractFlowMetadata(sender.file, sender.line);\n\n flows.push({\n messageType,\n from: sender.context,\n to: recipients,\n ...(flowMetadata.trigger ? { trigger: flowMetadata.trigger } : {}),\n ...(flowMetadata.flowName ? { flowName: flowMetadata.flowName } : {}),\n ...(flowMetadata.description ? { description: flowMetadata.description } : {}),\n sequence,\n });\n }\n }\n\n return flows;\n }\n\n /**\n * Find all places where a message is sent\n * Supports: .send(), .emit(), postMessage(), ws.send(), broadcast(), etc.\n */\n private findMessageSenders(messageType: string): Array<{\n context: string;\n file: string;\n line: number;\n }> {\n const senders: Array<{ context: string; file: string; line: number }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processMessageSender(node, messageType, context, filePath, senders);\n });\n }\n\n return senders;\n }\n\n /**\n * Process a node that might be a message sender\n */\n private processMessageSender(\n node: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n this.processPropertyAccessSender(node, expression, messageType, context, filePath, senders);\n } else if (Node.isIdentifier(expression)) {\n this.processIdentifierSender(node, expression, messageType, context, filePath, senders);\n }\n }\n\n /**\n * Process property access sender (.send(), .emit(), etc.)\n */\n private processPropertyAccessSender(\n node: CallExpression,\n expression: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isPropertyAccessExpression(expression)) {\n return;\n }\n\n const methodName = expression.getName();\n\n if (!this.isMessageSendMethod(methodName)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const msgType = this.extractMessageTypeFromArg(args[0]);\n if (msgType === messageType) {\n senders.push({\n context,\n file: filePath,\n line: node.getStartLineNumber(),\n });\n }\n }\n\n /**\n * Process identifier sender (postMessage())\n */\n private processIdentifierSender(\n node: CallExpression,\n expression: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isIdentifier(expression)) {\n return;\n }\n\n if (expression.getText() !== \"postMessage\") {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const msgType = this.extractMessageTypeFromArg(args[0]);\n if (msgType === messageType) {\n senders.push({\n context,\n file: filePath,\n line: node.getStartLineNumber(),\n });\n }\n }\n\n /**\n * Check if method name is a message sending method\n */\n private isMessageSendMethod(methodName: string): boolean {\n return (\n methodName === \"send\" ||\n methodName === \"emit\" ||\n methodName === \"postMessage\" ||\n methodName === \"broadcast\"\n );\n }\n\n /**\n * Build sequence of steps for a message flow\n */\n private buildSequence(\n messageType: string,\n sender: { context: string; file: string; line: number },\n handlers: MessageHandler[]\n ): MessageStep[] {\n const steps: MessageStep[] = [];\n let stepNumber = 1;\n\n // Step 1: Send message\n steps.push({\n step: stepNumber++,\n action: `${sender.context}.send(${messageType})`,\n context: sender.context,\n location: {\n file: sender.file,\n line: sender.line,\n },\n });\n\n // Step 2+: Handle in each recipient context\n for (const handler of handlers) {\n steps.push({\n step: stepNumber++,\n action: `${handler.node}.handle(${messageType})`,\n context: handler.node,\n location: handler.location,\n });\n\n // Add substeps for any messages sent by this handler\n const subsends = this.findMessagesInHandler(handler);\n for (const subsend of subsends) {\n steps.push({\n step: stepNumber++,\n action: `${handler.node}.send(${subsend.messageType})`,\n context: handler.node,\n location: subsend.location,\n });\n }\n }\n\n return steps;\n }\n\n /**\n * Find messages sent within a handler\n */\n private findMessagesInHandler(handler: MessageHandler): Array<{\n messageType: string;\n location: { file: string; line: number };\n }> {\n const sends: Array<{ messageType: string; location: { file: string; line: number } }> = [];\n\n const sourceFile = this.project.getSourceFile(handler.location.file);\n if (!sourceFile) return sends;\n\n const targetLine = handler.location.line;\n\n sourceFile.forEachDescendant((node) => {\n this.processSendCall(node, targetLine, handler.location.file, sends);\n });\n\n return sends;\n }\n\n /**\n * Process a node that might be a send/emit call\n */\n private processSendCall(\n node: Node,\n targetLine: number,\n filePath: string,\n sends: Array<{ messageType: string; location: { file: string; line: number } }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const line = node.getStartLineNumber();\n if (!this.isNearLine(line, targetLine)) {\n return;\n }\n\n const expression = node.getExpression();\n if (!this.isSendOrEmitCall(expression)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromArg(args[0]);\n if (messageType) {\n sends.push({\n messageType,\n location: { file: filePath, line },\n });\n }\n }\n\n /**\n * Check if line is near target line\n */\n private isNearLine(line: number, targetLine: number): boolean {\n return Math.abs(line - targetLine) < 20;\n }\n\n /**\n * Check if expression is a send or emit call\n */\n private isSendOrEmitCall(expression: Node): boolean {\n if (!Node.isPropertyAccessExpression(expression)) {\n return false;\n }\n\n const methodName = expression.getName();\n return methodName === \"send\" || methodName === \"emit\";\n }\n\n /**\n * Extract message type from send/emit argument\n */\n private extractMessageTypeFromArg(arg: Node): string | undefined {\n if (Node.isStringLiteral(arg)) {\n return arg.getLiteralValue();\n }\n\n if (Node.isObjectLiteralExpression(arg)) {\n return this.extractMessageTypeFromObject(arg);\n }\n\n return undefined;\n }\n\n /**\n * Extract message type from object literal\n */\n private extractMessageTypeFromObject(obj: Node): string | undefined {\n if (!Node.isObjectLiteralExpression(obj)) {\n return undefined;\n }\n\n const typeProperty = obj.getProperty(\"type\");\n if (!typeProperty || !Node.isPropertyAssignment(typeProperty)) {\n return undefined;\n }\n\n const initializer = typeProperty.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return undefined;\n }\n\n return initializer.getLiteralValue();\n }\n\n /**\n * Extract flow metadata from JSDoc annotations\n */\n private extractFlowMetadata(\n filePath: string,\n lineNumber: number\n ): {\n trigger?: string;\n flowName?: string;\n description?: string;\n } {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) return {};\n\n // Find the node at this line\n let targetNode: Node | null = null;\n\n sourceFile.forEachDescendant((node) => {\n if (node.getStartLineNumber() === lineNumber) {\n targetNode = node;\n }\n });\n\n if (!targetNode) return {};\n\n // Look for JSDoc comments\n const jsDocs = targetNode.getJsDocs?.() || [];\n if (jsDocs.length === 0) return {};\n\n const comment = jsDocs[0].getText();\n\n // Extract @flow annotation\n const flowMatch = comment.match(/@flow\\s+([^\\s]+)/);\n const flowName = flowMatch ? flowMatch[1] : undefined;\n\n // Extract @trigger annotation\n const triggerMatch = comment.match(/@trigger\\s+(.+?)(?:\\n|$)/);\n const trigger = triggerMatch ? triggerMatch[1].trim() : undefined;\n\n // Extract @description\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n const description = descMatch ? descMatch[1].trim() : undefined;\n\n return { trigger, flowName, description };\n }\n\n /**\n * Infer context from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Define context patterns to check\n const contextPatterns: Array<{ context: string; patterns: string[] }> = [\n { context: \"background\", patterns: [\"/background/\", \"\\\\background\\\\\"] },\n { context: \"content\", patterns: [\"/content/\", \"\\\\content\\\\\"] },\n { context: \"popup\", patterns: [\"/popup/\", \"\\\\popup\\\\\"] },\n { context: \"devtools\", patterns: [\"/devtools/\", \"\\\\devtools\\\\\"] },\n { context: \"options\", patterns: [\"/options/\", \"\\\\options\\\\\"] },\n { context: \"offscreen\", patterns: [\"/offscreen/\", \"\\\\offscreen\\\\\"] },\n { context: \"server\", patterns: [\"/server/\", \"\\\\server\\\\\", \"/server.\"] },\n { context: \"client\", patterns: [\"/client/\", \"\\\\client\\\\\", \"/client.\"] },\n { context: \"worker\", patterns: [\"/worker/\", \"\\\\worker\\\\\", \"service-worker\"] },\n ];\n\n for (const { context, patterns } of contextPatterns) {\n if (patterns.some((pattern) => path.includes(pattern))) {\n return context;\n }\n }\n\n return \"unknown\";\n }\n}\n",
53
- "// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n MessageHandler,\n StateAssignment,\n VerificationCondition,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\n// State-level constraint extracted from $constraints() calls\nexport interface StateConstraint {\n field: string;\n messageType: string;\n requires?: string;\n ensures?: string;\n message?: string;\n location: {\n file: string;\n line: number;\n };\n}\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n }\n\n /**\n * Extract all message handlers from the codebase\n */\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n\n // Find all source files\n const sourceFiles = this.project.getSourceFiles();\n this.debugLogSourceFiles(sourceFiles);\n\n for (const sourceFile of sourceFiles) {\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n };\n }\n\n private debugLogSourceFiles(sourceFiles: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${sourceFiles.length} source files`);\n if (sourceFiles.length <= 20) {\n for (const sf of sourceFiles) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check if a string is a valid TLA+ identifier\n * TLA+ identifiers must:\n * - Start with a letter (a-zA-Z)\n * - Contain only letters, digits, and underscores\n * - Not be empty\n */\n private isValidTLAIdentifier(s: string): boolean {\n if (!s || s.length === 0) {\n return false;\n }\n // TLA+ identifiers: start with letter, contain only alphanumeric + underscore\n return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(s);\n }\n\n /**\n * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n }\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n this.extractAssignments(handlerArg, assignments);\n this.extractVerificationConditions(handlerArg, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n this.checkAsyncMutations(handlerArg, messageType);\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n handlerArg,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n };\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression,\n assignments: StateAssignment[]\n ): void {\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n }\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n if (!fieldPath.startsWith(\"state.\")) return;\n\n const field = fieldPath.substring(6);\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n // Get position of first await\n const firstAwaitPos = awaitExpressions[0].getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : [body];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!this.isHandlerMapInitializer(initializer, varDecl)) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = initializer.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Check if initializer is a valid handler map\n */\n private isHandlerMapInitializer(\n initializer: Node | undefined,\n varDecl: VariableDeclaration\n ): initializer is ObjectLiteralExpression {\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n return false;\n }\n\n // Check if variable name suggests it's a handler map\n const varName = varDecl.getName().toLowerCase();\n return /(handler|listener|callback|event)s?/.test(varName);\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(ifNode as IfStatement, typeGuards, context, filePath, handlers);\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as IfStatement;\n const condition = ifStmt.getExpression();\n\n if (!Node.isCallExpression(condition)) {\n return null;\n }\n\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n if (!fieldPath.startsWith(\"state.\")) return;\n\n if ([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const field = fieldPath.substring(6);\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
53
+ "// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n MessageHandler,\n StateAssignment,\n VerificationCondition,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\n// State-level constraint extracted from $constraints() calls\nexport interface StateConstraint {\n field: string;\n messageType: string;\n requires?: string;\n ensures?: string;\n message?: string;\n location: {\n file: string;\n line: number;\n };\n}\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n private analyzedFiles: Set<string>; // Track files we've already analyzed\n private packageRoot: string; // Package directory (contains package.json)\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n this.analyzedFiles = new Set<string>();\n // Find package root by looking for package.json from tsconfig location\n this.packageRoot = this.findPackageRoot(tsConfigPath);\n }\n\n /**\n * Find the nearest package.json directory from tsconfig location\n * This defines the package boundary - we only analyze files within this package\n */\n private findPackageRoot(tsConfigPath: string): string {\n let dir = tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n // Walk up until we find package.json\n while (dir.length > 1) {\n try {\n const packageJsonPath = `${dir}/package.json`;\n const file = Bun.file(packageJsonPath);\n if (file.size > 0) {\n // Found package.json\n return dir;\n }\n } catch {\n // Keep looking\n }\n const parentDir = dir.substring(0, dir.lastIndexOf(\"/\"));\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n // Fallback: use tsconfig directory\n return tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n }\n\n /**\n * Extract all message handlers from the codebase\n *\n * Uses transitive import following to discover all reachable code:\n * 1. Start with source files from tsconfig that are within the package\n * 2. Follow imports recursively (within package boundary)\n * 3. Cache analyzed files to avoid re-processing\n */\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n\n // Find all source files from tsconfig as potential entry points\n const allSourceFiles = this.project.getSourceFiles();\n // Filter to only files within the package boundary\n const entryPoints = allSourceFiles.filter((f) => this.isWithinPackage(f.getFilePath()));\n\n this.debugLogSourceFiles(allSourceFiles, entryPoints);\n\n // Analyze each entry point and follow its imports transitively\n for (const entryPoint of entryPoints) {\n this.analyzeFileAndImports(\n entryPoint,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints\n );\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n this.debugLogAnalysisStats(allSourceFiles.length, entryPoints.length);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n };\n }\n\n /**\n * Analyze a file and recursively follow its imports\n *\n * This implements the Knip pattern: follow imports transitively\n * to discover all reachable code, including files outside src/\n * that are imported from analyzed files.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Import following requires conditional logic for package boundaries, caching, and recursion\n private analyzeFileAndImports(\n sourceFile: SourceFile,\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>,\n stateConstraints: StateConstraint[]\n ): void {\n const filePath = sourceFile.getFilePath();\n\n // Skip if already analyzed\n if (this.analyzedFiles.has(filePath)) {\n return;\n }\n\n // Mark as analyzed\n this.analyzedFiles.add(filePath);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Analyzing: ${filePath}`);\n }\n\n // Extract handlers from this file\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n\n // Follow imports to discover more files (within package boundary only)\n const importDeclarations = sourceFile.getImportDeclarations();\n for (const importDecl of importDeclarations) {\n const importedFile = importDecl.getModuleSpecifierSourceFile();\n\n if (importedFile) {\n const importedPath = importedFile.getFilePath();\n\n // Only follow imports within the same package\n // This excludes:\n // - node_modules (other packages)\n // - Framework code in monorepo parent (other packages)\n // But includes:\n // - All files in this package (src/, specs/, tests/, etc.)\n if (!this.isWithinPackage(importedPath)) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Skipping external import: ${importedPath}`);\n }\n continue;\n }\n\n // Recursively analyze imported file\n this.analyzeFileAndImports(\n importedFile,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints\n );\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Log unresolved imports for debugging\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.startsWith(\"node:\") && !this.isNodeModuleImport(specifier)) {\n console.log(`[DEBUG] Could not resolve import: ${specifier} in ${filePath}`);\n }\n }\n }\n }\n\n /**\n * Check if a file path is within the package boundary\n */\n private isWithinPackage(filePath: string): boolean {\n // Must be under package root\n if (!filePath.startsWith(this.packageRoot)) {\n return false;\n }\n // Must not be in node_modules\n if (filePath.includes(\"/node_modules/\")) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if an import specifier is a node_modules import\n */\n private isNodeModuleImport(specifier: string): boolean {\n // Relative imports start with . or ..\n // Absolute/node_modules imports don't\n return !specifier.startsWith(\".\") && !specifier.startsWith(\"/\");\n }\n\n private debugLogAnalysisStats(totalSourceFiles: number, entryPointCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Analysis Statistics:`);\n console.log(`[DEBUG] Package root: ${this.packageRoot}`);\n console.log(`[DEBUG] Source files from tsconfig: ${totalSourceFiles}`);\n console.log(`[DEBUG] Entry points (in package): ${entryPointCount}`);\n console.log(`[DEBUG] Files analyzed (including imports): ${this.analyzedFiles.size}`);\n console.log(\n `[DEBUG] Additional files discovered: ${this.analyzedFiles.size - entryPointCount}`\n );\n }\n\n private debugLogSourceFiles(allSourceFiles: SourceFile[], entryPoints: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${allSourceFiles.length} source files from tsconfig`);\n console.log(`[DEBUG] Filtered to ${entryPoints.length} entry points within package`);\n if (entryPoints.length <= 20) {\n for (const sf of entryPoints) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check if a string is a valid TLA+ identifier\n * TLA+ identifiers must:\n * - Start with a letter (a-zA-Z)\n * - Contain only letters, digits, and underscores\n * - Not be empty\n */\n private isValidTLAIdentifier(s: string): boolean {\n if (!s || s.length === 0) {\n return false;\n }\n // TLA+ identifiers: start with letter, contain only alphanumeric + underscore\n return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(s);\n }\n\n /**\n * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n }\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n this.extractAssignments(handlerArg, assignments);\n this.extractVerificationConditions(handlerArg, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n this.checkAsyncMutations(handlerArg, messageType);\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n handlerArg,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n };\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression,\n assignments: StateAssignment[]\n ): void {\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n }\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n if (!fieldPath.startsWith(\"state.\")) return;\n\n const field = fieldPath.substring(6);\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n // Get position of first await\n const firstAwaitPos = awaitExpressions[0].getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : [body];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!this.isHandlerMapInitializer(initializer, varDecl)) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = initializer.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Check if initializer is a valid handler map\n */\n private isHandlerMapInitializer(\n initializer: Node | undefined,\n varDecl: VariableDeclaration\n ): initializer is ObjectLiteralExpression {\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n return false;\n }\n\n // Check if variable name suggests it's a handler map\n const varName = varDecl.getName().toLowerCase();\n return /(handler|listener|callback|event)s?/.test(varName);\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(ifNode as IfStatement, typeGuards, context, filePath, handlers);\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as IfStatement;\n const condition = ifStmt.getExpression();\n\n if (!Node.isCallExpression(condition)) {\n return null;\n }\n\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n if (!fieldPath.startsWith(\"state.\")) return;\n\n if ([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const field = fieldPath.substring(6);\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
54
54
  "// Component relationship extraction from TypeScript code\n// Detects function calls, imports, and dependencies between components\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n Node,\n type SourceFile,\n} from \"ts-morph\";\n\n/**\n * Represents a relationship between components detected from code analysis\n */\nexport interface DetectedRelationship {\n /** Source component (handler, service, etc.) */\n from: string;\n /** Target component being called/used */\n to: string;\n /** Description of the relationship */\n description: string;\n /** Technology/method used (e.g., \"Function Call\", \"Import\", \"SQL\", \"HTTP\") */\n technology?: string;\n /** Confidence level of this detection */\n confidence: \"high\" | \"medium\" | \"low\";\n /** Evidence supporting this detection */\n evidence: string[];\n}\n\n/**\n * Extracts component relationships from handler code\n */\nexport class RelationshipExtractor {\n /**\n * Extract relationships from a function/handler body\n */\n extractFromHandler(\n handlerNode: Node,\n sourceFile: SourceFile,\n handlerName: string\n ): DetectedRelationship[] {\n const relationships: DetectedRelationship[] = [];\n const visited = new Set<string>(); // Prevent infinite recursion\n\n this.extractFromNode(handlerNode, sourceFile, handlerName, relationships, visited);\n\n return this.deduplicateRelationships(relationships);\n }\n\n /**\n * Recursively extract relationships from a node and follow function calls\n */\n private extractFromNode(\n node: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n node.forEachDescendant((descendant) => {\n this.processDescendantNode(descendant, sourceFile, handlerName, relationships, visited);\n });\n }\n\n /**\n * Process a single descendant node for relationship extraction\n */\n private processDescendantNode(\n descendant: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n if (Node.isCallExpression(descendant)) {\n this.processCallExpression(descendant, sourceFile, handlerName, relationships, visited);\n }\n\n if (Node.isAwaitExpression(descendant)) {\n const rel = this.extractFromDatabaseCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n if (Node.isCallExpression(descendant) && descendant.getExpression().getText() === \"fetch\") {\n const rel = this.extractFromFetchCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n }\n\n /**\n * Process a call expression for relationship extraction\n */\n private processCallExpression(\n callExpr: CallExpression,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const expr = callExpr.getExpression();\n\n if (Node.isIdentifier(expr)) {\n this.processIdentifierCall(expr, sourceFile, handlerName, relationships, visited);\n return;\n }\n\n if (Node.isPropertyAccessExpression(expr)) {\n const rel = this.extractFromPropertyAccess(expr, handlerName);\n if (rel) {\n relationships.push(rel);\n return;\n }\n }\n\n const rel = this.extractFromFunctionCall(callExpr, handlerName, sourceFile);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n /**\n * Process an identifier call (local or imported function)\n */\n private processIdentifierCall(\n identifier: Identifier,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const functionName = identifier.getText();\n const resolved = this.resolveFunctionDeclaration(functionName, sourceFile);\n\n if (resolved && !visited.has(functionName)) {\n this.followFunctionCall(\n functionName,\n resolved.functionDecl,\n resolved.sourceFile,\n handlerName,\n relationships,\n visited\n );\n return;\n }\n\n if (!resolved) {\n this.tryAddServiceCallRelationship(functionName, handlerName, relationships);\n }\n }\n\n /**\n * Resolve function declaration from name\n */\n private resolveFunctionDeclaration(\n functionName: string,\n sourceFile: SourceFile\n ): { functionDecl: FunctionDeclaration; sourceFile: SourceFile } | null {\n let functionDecl = sourceFile.getFunction(functionName);\n let targetSourceFile = sourceFile;\n\n if (!functionDecl) {\n const resolved = this.resolveImportedFunction(functionName, sourceFile);\n if (resolved) {\n functionDecl = resolved.functionDecl;\n targetSourceFile = resolved.sourceFile;\n }\n }\n\n if (!functionDecl) {\n return null;\n }\n\n return { functionDecl, sourceFile: targetSourceFile };\n }\n\n /**\n * Follow a function call recursively\n */\n private followFunctionCall(\n functionName: string,\n functionDecl: FunctionDeclaration,\n targetSourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n visited.add(functionName);\n\n const body = functionDecl.getBody();\n if (body) {\n this.extractFromNode(body, targetSourceFile, handlerName, relationships, visited);\n }\n }\n\n /**\n * Try to add a service call relationship based on function name\n */\n private tryAddServiceCallRelationship(\n functionName: string,\n handlerName: string,\n relationships: DetectedRelationship[]\n ): void {\n const componentFromName = this.inferComponentFromFunctionName(functionName);\n if (componentFromName) {\n relationships.push({\n from: this.toComponentId(handlerName),\n to: componentFromName,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"medium\",\n evidence: [`Function call: ${functionName}`],\n });\n }\n }\n\n /**\n * Extract relationship from a function call\n */\n private extractFromFunctionCall(\n callExpr: CallExpression,\n handlerName: string,\n sourceFile: SourceFile\n ): DetectedRelationship | null {\n const expr = callExpr.getExpression();\n const exprText = expr.getText();\n\n // Skip common utility functions and built-ins\n const skipList = [\n \"console.\",\n \"JSON.\",\n \"Math.\",\n \"Object.\",\n \"Array.\",\n \"String.\",\n \"Number.\",\n \"Date.\",\n \"Promise.\",\n \"setTimeout\",\n \"setInterval\",\n \"clearTimeout\",\n \"clearInterval\",\n ];\n\n if (skipList.some((skip) => exprText.startsWith(skip))) {\n return null;\n }\n\n // Extract function name\n let functionName = exprText;\n let targetComponent: string | null = null;\n\n // Handle property access (e.g., db.getConnection() -> db_client)\n if (Node.isPropertyAccessExpression(expr)) {\n const objectExpr = expr.getExpression();\n const objectName = objectExpr.getText();\n const methodName = expr.getName();\n\n // Map common patterns to component names\n targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n functionName = methodName;\n } else {\n // Direct function call - try to resolve from imports\n targetComponent = this.resolveComponentFromImport(exprText, sourceFile);\n\n if (!targetComponent) {\n return null;\n }\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Function call: ${exprText}`],\n };\n }\n\n /**\n * Extract relationship from property access chain\n * Handles both simple (obj.method) and nested (obj.prop.method) patterns\n */\n private extractFromPropertyAccess(\n propAccess: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isPropertyAccessExpression(propAccess)) {\n return null;\n }\n\n const fullChain = propAccess.getText();\n const methodName = propAccess.getName();\n\n // Extract the root object from potentially nested property access\n // e.g., repositories.users.create -> repositories\n let rootObject = propAccess.getExpression();\n while (Node.isPropertyAccessExpression(rootObject)) {\n rootObject = rootObject.getExpression();\n }\n\n const objectName = rootObject.getText();\n\n // Map object name to component name\n const targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${methodName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Property access: ${fullChain}`],\n };\n }\n\n /**\n * Extract relationship from database call\n */\n private extractFromDatabaseCall(\n awaitExpr: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isAwaitExpression(awaitExpr)) {\n return null;\n }\n\n const innerExpr = awaitExpr.getExpression();\n if (!Node.isCallExpression(innerExpr)) {\n return null;\n }\n\n const callExpr = innerExpr.getExpression().getText();\n\n // Detect database patterns\n if (\n callExpr.includes(\"db.query\") ||\n callExpr.includes(\"db.execute\") ||\n callExpr.includes(\"db.select\") ||\n callExpr.includes(\"db.insert\") ||\n callExpr.includes(\"db.update\") ||\n callExpr.includes(\"db.delete\")\n ) {\n const operation = this.inferDatabaseOperation(callExpr);\n\n return {\n from: this.toComponentId(handlerName),\n to: \"database\",\n description: operation,\n technology: \"SQL\",\n confidence: \"high\",\n evidence: [`Database call: ${callExpr}`],\n };\n }\n\n return null;\n }\n\n /**\n * Extract relationship from fetch/HTTP call\n */\n private extractFromFetchCall(\n callExpr: CallExpression,\n handlerName: string\n ): DetectedRelationship | null {\n const args = callExpr.getArguments();\n if (args.length === 0 || !args[0]) {\n return null;\n }\n\n const urlArg = args[0].getText();\n\n // Try to extract API name from URL\n let apiName = \"external_api\";\n if (urlArg.includes(\"openai\")) {\n apiName = \"openai_api\";\n } else if (urlArg.includes(\"anthropic\")) {\n apiName = \"anthropic_api\";\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: apiName,\n description: \"Calls external API\",\n technology: \"HTTP/REST\",\n confidence: \"high\",\n evidence: [`fetch() call to: ${urlArg}`],\n };\n }\n\n /**\n * Infer component name from object.method pattern\n */\n private inferComponentFromCall(objectName: string): string | null {\n const mappings: Record<string, string> = {\n db: \"db_client\",\n database: \"database\",\n repos: \"repositories\",\n repository: \"repositories\",\n repositories: \"repositories\",\n cache: \"cache\",\n storage: \"storage\",\n ai: \"ai_service\",\n auth: \"auth_service\",\n authservice: \"auth_service\",\n user: \"user_service\",\n userservice: \"user_service\",\n logger: \"logger\",\n queue: \"queue_service\",\n };\n\n const normalized = objectName.toLowerCase();\n return mappings[normalized] || null;\n }\n\n /**\n * Infer component name from function name patterns\n * Detects patterns like getDatabase(), createRepositories(), etc.\n */\n private inferComponentFromFunctionName(functionName: string): string | null {\n const normalized = functionName.toLowerCase();\n\n // Pattern 1: getXxx() or createXxx()\n if (normalized.startsWith(\"get\") || normalized.startsWith(\"create\")) {\n const prefixLength = normalized.startsWith(\"get\") ? 3 : 6;\n const suffix = functionName.substring(prefixLength);\n return this.matchComponentPattern(suffix);\n }\n\n // Pattern 2: initXxx() or setupXxx()\n if (normalized.startsWith(\"init\") || normalized.startsWith(\"setup\")) {\n const prefixLength = normalized.startsWith(\"init\") ? 4 : 5;\n const suffix = functionName.substring(prefixLength);\n return this.matchInitPattern(suffix);\n }\n\n return null;\n }\n\n /**\n * Match component patterns for get/create functions\n */\n private matchComponentPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n const componentPatterns = [\n {\n patterns: [\"database\", \"db\", \"dbconnection\", \"connection\"],\n component: \"db_client\",\n },\n {\n patterns: [\"repositories\", \"repos\", \"repository\"],\n component: \"repositories\",\n },\n {\n patterns: [\"cache\"],\n component: \"cache\",\n },\n {\n patterns: [\"storage\"],\n component: \"storage\",\n },\n {\n patterns: [\"ai\", \"llm\"],\n component: \"ai_service\",\n },\n {\n patterns: [\"logger\"],\n component: \"logger\",\n },\n ];\n\n for (const { patterns, component } of componentPatterns) {\n if (patterns.some((pattern) => suffixLower.includes(pattern) || suffixLower === pattern)) {\n return component;\n }\n }\n\n // Service patterns (special case with extraction)\n if (suffixLower.includes(\"service\")) {\n const serviceMatch = suffix.match(/^(.+?)Service/i);\n if (serviceMatch) {\n return this.toComponentId(`${serviceMatch[1]}_service`);\n }\n return \"service\";\n }\n\n return null;\n }\n\n /**\n * Match patterns for init/setup functions\n */\n private matchInitPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n if (suffixLower.includes(\"database\") || suffixLower === \"db\") {\n return \"db_client\";\n }\n if (suffixLower.includes(\"cache\")) {\n return \"cache\";\n }\n\n return null;\n }\n\n /**\n * Resolve component from import statement\n */\n private resolveComponentFromImport(functionName: string, sourceFile: SourceFile): string | null {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const modulePath = importDecl.getModuleSpecifierValue();\n const component = this.inferComponentFromModulePath(modulePath);\n if (component) return component;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Infer component from module path\n */\n private inferComponentFromModulePath(modulePath: string): string | null {\n if (modulePath.includes(\"/db/\") || modulePath.includes(\"/database/\")) {\n return \"db_client\";\n }\n if (modulePath.includes(\"/repos\") || modulePath.includes(\"/repositories\")) {\n return \"repositories\";\n }\n if (modulePath.includes(\"/service\") || modulePath.includes(\"/services\")) {\n const match = modulePath.match(/\\/([^/]+)\\.ts$/);\n if (match?.[1]) {\n return this.toComponentId(match[1]);\n }\n }\n return null;\n }\n\n /**\n * Resolve imported function to its declaration in another file\n * This enables cross-file relationship detection for architectures where\n * handlers are separated from routing logic\n */\n private resolveImportedFunction(\n functionName: string,\n sourceFile: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n try {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const moduleSpecifier = importDecl.getModuleSpecifierSourceFile();\n if (!moduleSpecifier) continue;\n\n const result = this.findFunctionInModule(functionName, moduleSpecifier);\n if (result) return result;\n }\n }\n }\n } catch (_error) {\n // Silently fail on resolution errors (e.g., missing files, parse errors)\n // This ensures the extractor is resilient to incomplete projects\n return null;\n }\n\n return null;\n }\n\n /**\n * Find function declaration or arrow function in a module\n */\n private findFunctionInModule(\n functionName: string,\n moduleSpecifier: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n // Find the function in the imported file\n const functionDecl = moduleSpecifier.getFunction(functionName);\n if (functionDecl) {\n return {\n functionDecl,\n sourceFile: moduleSpecifier,\n };\n }\n\n // Also check for exported arrow functions or const declarations\n const variableDecl = moduleSpecifier.getVariableDeclaration(functionName);\n if (variableDecl) {\n const initializer = variableDecl.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return {\n functionDecl: initializer,\n sourceFile: moduleSpecifier,\n };\n }\n }\n\n return null;\n }\n\n /**\n * Infer database operation type\n */\n private inferDatabaseOperation(callExpr: string): string {\n if (callExpr.includes(\"query\") || callExpr.includes(\"select\")) {\n return \"Reads from database\";\n }\n if (\n callExpr.includes(\"execute\") ||\n callExpr.includes(\"insert\") ||\n callExpr.includes(\"update\") ||\n callExpr.includes(\"delete\")\n ) {\n return \"Writes to database\";\n }\n return \"Accesses database\";\n }\n\n /**\n * Convert name to component ID format\n */\n private toComponentId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_|_$/g, \"\");\n }\n\n /**\n * Remove duplicate relationships\n */\n private deduplicateRelationships(relationships: DetectedRelationship[]): DetectedRelationship[] {\n const seen = new Set<string>();\n const unique: DetectedRelationship[] = [];\n\n for (const rel of relationships) {\n const key = `${rel.from}->${rel.to}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(rel);\n }\n }\n\n return unique;\n }\n}\n",
55
55
  "// External integration detection - find external APIs, services, etc.\n\nimport { Node, Project, type SourceFile } from \"ts-morph\";\nimport type { ExternalIntegration } from \"../types/architecture\";\n\nexport class IntegrationAnalyzer {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze external integrations in the codebase\n */\n analyzeIntegrations(): ExternalIntegration[] {\n const integrations = new Map<string, ExternalIntegration>();\n\n // Find all fetch() calls\n const fetchCalls = this.findFetchCalls();\n for (const call of fetchCalls) {\n this.addOrMergeIntegration(integrations, this.createAPIIntegration(call));\n }\n\n // Find WebSocket connections\n const websockets = this.findWebSockets();\n for (const ws of websockets) {\n this.addOrMergeIntegration(integrations, this.createWebSocketIntegration(ws));\n }\n\n // Find external script imports\n const externalScripts = this.findExternalScripts();\n for (const script of externalScripts) {\n this.addOrMergeIntegration(integrations, script);\n }\n\n return Array.from(integrations.values());\n }\n\n /**\n * Find all fetch() API calls\n */\n private findFetchCalls(): Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }> {\n const calls: Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n sourceFile.forEachDescendant((node) => {\n this.processFetchCall(node, sourceFile, calls);\n });\n }\n\n return calls;\n }\n\n /**\n * Process a node that might be a fetch call\n */\n private processFetchCall(\n node: Node,\n sourceFile: SourceFile,\n calls: Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const expression = node.getExpression();\n if (!this.isFetchCall(expression)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const url = this.extractURLFromArg(args[0]);\n if (!url) {\n return;\n }\n\n const method = this.extractMethodFromOptions(args);\n const description = this.extractJSDocDescription(node);\n\n calls.push({\n url,\n method,\n file: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n description,\n });\n }\n\n /**\n * Check if expression is a fetch call\n */\n private isFetchCall(expression: Node): boolean {\n return Node.isIdentifier(expression) && expression.getText() === \"fetch\";\n }\n\n /**\n * Extract URL from fetch argument\n */\n private extractURLFromArg(urlArg: Node): string | null {\n if (Node.isStringLiteral(urlArg)) {\n return urlArg.getLiteralValue();\n }\n\n if (Node.isTemplateExpression(urlArg)) {\n return this.extractBaseURL(urlArg.getText());\n }\n\n return null;\n }\n\n /**\n * Extract HTTP method from fetch options\n */\n private extractMethodFromOptions(args: Node[]): string {\n const defaultMethod = \"GET\";\n\n if (args.length <= 1) {\n return defaultMethod;\n }\n\n const optionsArg = args[1];\n if (!Node.isObjectLiteralExpression(optionsArg)) {\n return defaultMethod;\n }\n\n const methodProp = optionsArg.getProperty(\"method\");\n if (!methodProp || !Node.isPropertyAssignment(methodProp)) {\n return defaultMethod;\n }\n\n const initializer = methodProp.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return defaultMethod;\n }\n\n return initializer.getLiteralValue().toUpperCase();\n }\n\n /**\n * Find WebSocket connections\n */\n private findWebSockets(): Array<{\n url: string;\n file: string;\n line: number;\n description?: string;\n }> {\n const websockets: Array<{\n url: string;\n file: string;\n line: number;\n description?: string;\n }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n sourceFile.forEachDescendant((node) => {\n if (Node.isNewExpression(node)) {\n const expression = node.getExpression();\n\n // Check for new WebSocket()\n if (Node.isIdentifier(expression) && expression.getText() === \"WebSocket\") {\n const args = node.getArguments();\n if (args.length > 0 && Node.isStringLiteral(args[0])) {\n const url = args[0].getLiteralValue();\n const description = this.extractJSDocDescription(node);\n\n websockets.push({\n url,\n file: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n description,\n });\n }\n }\n }\n });\n }\n\n return websockets;\n }\n\n /**\n * Find external script dependencies (from imports)\n */\n private findExternalScripts(): ExternalIntegration[] {\n const scripts: ExternalIntegration[] = [];\n const seen = new Set<string>();\n\n for (const sourceFile of this.project.getSourceFiles()) {\n this.extractExternalImportsFromFile(sourceFile, scripts, seen);\n }\n\n return scripts;\n }\n\n /**\n * Extract external imports from a single file\n */\n private extractExternalImportsFromFile(\n sourceFile: SourceFile,\n scripts: ExternalIntegration[],\n seen: Set<string>\n ): void {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const moduleSpecifier = importDecl.getModuleSpecifierValue();\n\n if (this.isExternalImport(moduleSpecifier)) {\n const packageName = this.extractPackageName(moduleSpecifier);\n\n if (packageName && !seen.has(packageName)) {\n seen.add(packageName);\n scripts.push(this.createExternalScriptIntegration(packageName, sourceFile));\n }\n }\n }\n }\n\n /**\n * Check if import is external (not relative)\n */\n private isExternalImport(moduleSpecifier: string): boolean {\n return !moduleSpecifier.startsWith(\".\") && !moduleSpecifier.startsWith(\"/\");\n }\n\n /**\n * Extract package name from module specifier\n */\n private extractPackageName(moduleSpecifier: string): string | undefined {\n // Handle scoped packages (@org/package)\n if (moduleSpecifier.startsWith(\"@\")) {\n return moduleSpecifier.split(\"/\").slice(0, 2).join(\"/\");\n }\n // Handle regular packages\n return moduleSpecifier.split(\"/\")[0];\n }\n\n /**\n * Create external script integration object\n */\n private createExternalScriptIntegration(\n packageName: string,\n sourceFile: SourceFile\n ): ExternalIntegration {\n return {\n type: \"external-script\",\n name: packageName,\n technology: \"npm package\",\n usedIn: [sourceFile.getFilePath()],\n description: `External dependency: ${packageName}`,\n };\n }\n\n /**\n * Create API integration from fetch call\n */\n private createAPIIntegration(call: {\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }): ExternalIntegration {\n // Extract base URL\n const baseURL = this.extractBaseURL(call.url);\n\n // Infer name from URL\n const name = this.inferAPIName(baseURL);\n\n return {\n type: \"api\",\n name,\n technology: \"REST API\",\n url: baseURL,\n usedIn: [call.file],\n description: call.description || `External API: ${name}`,\n calls: [\n {\n method: call.method,\n endpoint: call.url,\n location: {\n file: call.file,\n line: call.line,\n },\n description: call.description,\n },\n ],\n };\n }\n\n /**\n * Create WebSocket integration\n */\n private createWebSocketIntegration(ws: {\n url: string;\n file: string;\n line: number;\n description?: string;\n }): ExternalIntegration {\n const name = this.inferAPIName(ws.url);\n\n return {\n type: \"websocket\",\n name,\n technology: \"WebSocket\",\n url: ws.url,\n usedIn: [ws.file],\n description: ws.description || `WebSocket connection: ${name}`,\n };\n }\n\n /**\n * Extract base URL from full URL or template\n */\n private extractBaseURL(url: string): string {\n // Remove template parts\n let cleanUrl = url.replace(/\\$\\{[^}]+\\}/g, \"\");\n cleanUrl = cleanUrl.replace(/`/g, \"\");\n\n try {\n const parsed = new URL(cleanUrl);\n return `${parsed.protocol}//${parsed.host}`;\n } catch {\n // If parsing fails, try to extract domain\n const match = cleanUrl.match(/https?:\\/\\/([^/]+)/);\n return match ? match[0] : cleanUrl;\n }\n }\n\n /**\n * Infer API name from URL\n */\n private inferAPIName(url: string): string {\n try {\n const parsed = new URL(url);\n const hostname = parsed.hostname;\n\n // Remove www. prefix\n const cleanHost = hostname.replace(/^www\\./, \"\");\n\n // Take first part of domain\n const parts = cleanHost.split(\".\");\n if (parts.length > 0 && parts[0]) {\n // Capitalize first letter\n return `${parts[0].charAt(0).toUpperCase() + parts[0].slice(1)} API`;\n }\n } catch {\n // Fallback\n }\n\n return \"External API\";\n }\n\n /**\n * Add or merge integration into map\n */\n private addOrMergeIntegration(\n map: Map<string, ExternalIntegration>,\n integration: ExternalIntegration\n ): void {\n const key = `${integration.type}:${integration.name}`;\n\n if (map.has(key)) {\n const existing = map.get(key);\n if (!existing) return;\n\n // Merge usedIn\n existing.usedIn = [...new Set([...existing.usedIn, ...integration.usedIn])];\n\n // Merge calls\n if (integration.calls && existing.calls) {\n existing.calls.push(...integration.calls);\n } else if (integration.calls) {\n existing.calls = integration.calls;\n }\n } else {\n map.set(key, integration);\n }\n }\n\n /**\n * Extract JSDoc description from node\n */\n private extractJSDocDescription(node: Node): string | undefined {\n const jsDocs = node.getJsDocs?.() || [];\n if (jsDocs.length === 0) return undefined;\n\n const comment = jsDocs[0].getDescription().trim();\n return comment || undefined;\n }\n}\n",
56
56
  "// Manifest.json parser for Chrome extensions\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ManifestInfo } from \"../types/architecture\";\n\n/**\n * Parse manifest.json and extract context information\n */\nexport class ManifestParser {\n private manifestPath: string;\n private manifestData: Record<string, unknown> | null;\n private baseDir: string;\n\n constructor(projectRoot: string, optional = false) {\n this.baseDir = projectRoot;\n this.manifestPath = path.join(projectRoot, \"manifest.json\");\n\n if (!fs.existsSync(this.manifestPath)) {\n if (optional) {\n this.manifestData = null;\n return;\n }\n throw new Error(`manifest.json not found at ${this.manifestPath}`);\n }\n\n try {\n const content = fs.readFileSync(this.manifestPath, \"utf-8\");\n this.manifestData = JSON.parse(content);\n } catch (error) {\n throw new Error(`Failed to parse manifest.json: ${error}`);\n }\n }\n\n /**\n * Check if manifest.json exists and was loaded\n */\n hasManifest(): boolean {\n return this.manifestData !== null;\n }\n\n /**\n * Parse manifest and extract all information\n */\n parse(): ManifestInfo {\n if (!this.manifestData) {\n throw new Error(\n \"Cannot parse manifest: manifest.json not loaded. Use hasManifest() to check availability.\"\n );\n }\n\n const manifest = this.manifestData;\n\n return {\n name: manifest.name || \"Unknown Extension\",\n version: manifest.version || \"0.0.0\",\n description: manifest.description,\n manifestVersion: manifest.manifest_version || 2,\n background: this.parseBackground(),\n contentScripts: this.parseContentScripts(),\n popup: this.parsePopup(),\n options: this.parseOptions(),\n devtools: this.parseDevtools(),\n permissions: manifest.permissions || [],\n hostPermissions: manifest.host_permissions || [],\n };\n }\n\n /**\n * Get context entry points from manifest\n */\n getContextEntryPoints(): Record<string, string> {\n if (!this.manifestData) {\n return {};\n }\n\n const entryPoints: Record<string, string> = {};\n\n this.addBackgroundEntryPoint(entryPoints);\n this.addContentScriptEntryPoint(entryPoints);\n this.addPopupEntryPoint(entryPoints);\n this.addOptionsEntryPoint(entryPoints);\n this.addDevtoolsEntryPoint(entryPoints);\n\n return entryPoints;\n }\n\n private addBackgroundEntryPoint(entryPoints: Record<string, string>): void {\n const background = this.parseBackground();\n if (!background) return;\n\n const entryFile = background.files[0];\n if (entryFile) {\n entryPoints[\"background\"] = this.findSourceFile(entryFile);\n }\n }\n\n private addContentScriptEntryPoint(entryPoints: Record<string, string>): void {\n const contentScripts = this.parseContentScripts();\n if (!contentScripts || contentScripts.length === 0) return;\n\n const firstScript = contentScripts[0]?.js[0];\n if (firstScript) {\n entryPoints[\"content\"] = this.findSourceFile(firstScript);\n }\n }\n\n private addPopupEntryPoint(entryPoints: Record<string, string>): void {\n const popup = this.parsePopup();\n if (!popup) return;\n\n const htmlPath = path.join(this.baseDir, popup.html);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"popup\"] = jsPath;\n }\n }\n\n private addOptionsEntryPoint(entryPoints: Record<string, string>): void {\n const options = this.parseOptions();\n if (!options) return;\n\n const htmlPath = path.join(this.baseDir, options.page);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"options\"] = jsPath;\n }\n }\n\n private addDevtoolsEntryPoint(entryPoints: Record<string, string>): void {\n const devtools = this.parseDevtools();\n if (!devtools) return;\n\n const htmlPath = path.join(this.baseDir, devtools.page);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"devtools\"] = jsPath;\n }\n }\n\n /**\n * Parse background configuration\n */\n private parseBackground(): ManifestInfo[\"background\"] {\n if (!this.manifestData) return undefined;\n\n const bg = this.manifestData.background;\n if (!bg) return undefined;\n\n // Manifest V3 - service worker\n if (bg.service_worker) {\n return {\n type: \"service_worker\",\n files: [bg.service_worker],\n };\n }\n\n // Manifest V2 - scripts\n if (bg.scripts) {\n return {\n type: \"script\",\n files: bg.scripts,\n };\n }\n\n // Manifest V2 - page\n if (bg.page) {\n return {\n type: \"script\",\n files: [bg.page],\n };\n }\n\n return undefined;\n }\n\n /**\n * Parse content scripts configuration\n */\n private parseContentScripts(): ManifestInfo[\"contentScripts\"] {\n if (!this.manifestData) return undefined;\n\n const cs = this.manifestData.content_scripts;\n if (!cs || !Array.isArray(cs)) return undefined;\n\n return cs.map((script) => ({\n matches: script.matches || [],\n js: script.js || [],\n css: script.css,\n }));\n }\n\n /**\n * Parse popup configuration\n */\n private parsePopup(): ManifestInfo[\"popup\"] {\n if (!this.manifestData) return undefined;\n\n const action = this.manifestData.action || this.manifestData.browser_action;\n if (!action) return undefined;\n\n if (action.default_popup) {\n return {\n html: action.default_popup,\n default: true,\n };\n }\n\n return undefined;\n }\n\n /**\n * Parse options configuration\n */\n private parseOptions(): ManifestInfo[\"options\"] {\n if (!this.manifestData) return undefined;\n\n const options = this.manifestData.options_ui || this.manifestData.options_page;\n if (!options) return undefined;\n\n if (typeof options === \"string\") {\n return {\n page: options,\n openInTab: false,\n };\n }\n\n return {\n page: options.page,\n openInTab: options.open_in_tab,\n };\n }\n\n /**\n * Parse devtools configuration\n */\n private parseDevtools(): ManifestInfo[\"devtools\"] {\n if (!this.manifestData) return undefined;\n\n const devtools = this.manifestData.devtools_page;\n if (!devtools) return undefined;\n\n return {\n page: devtools,\n };\n }\n\n /**\n * Find source file from manifest reference\n * Tries multiple locations: exact path, src/ directory, .ts extension\n */\n private findSourceFile(manifestPath: string): string {\n const candidates = [\n // Exact path from manifest\n path.join(this.baseDir, manifestPath),\n // Same path with .ts extension\n path.join(this.baseDir, manifestPath.replace(/\\.js$/, \".ts\")),\n // In src/ directory\n path.join(this.baseDir, \"src\", manifestPath),\n path.join(this.baseDir, \"src\", manifestPath.replace(/\\.js$/, \".ts\")),\n // In src/ with .tsx extension\n path.join(this.baseDir, \"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 // Fallback to manifest path (will error later if not found)\n return path.join(this.baseDir, 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 // Try with and without .js/.ts extension\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: look for 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 path.join(dir, \"index.js\"),\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 * Parse manifest.json and extract information\n */\nexport function parseManifest(projectRoot: string): ManifestInfo {\n const parser = new ManifestParser(projectRoot);\n return parser.parse();\n}\n\n/**\n * Get context entry points from manifest.json\n */\nexport function getContextEntryPoints(projectRoot: string): Record<string, string> {\n const parser = new ManifestParser(projectRoot);\n return parser.getContextEntryPoints();\n}\n",
@@ -59,10 +59,10 @@
59
59
  "// Strict types for Structurizr DSL generation\n\n/**\n * Shape options for elements in Structurizr diagrams\n */\nexport type ElementShape =\n | \"Box\"\n | \"RoundedBox\"\n | \"Circle\"\n | \"Ellipse\"\n | \"Hexagon\"\n | \"Cylinder\"\n | \"Component\"\n | \"Person\"\n | \"Robot\"\n | \"Folder\"\n | \"WebBrowser\"\n | \"MobileDevicePortrait\"\n | \"MobileDeviceLandscape\"\n | \"Pipe\";\n\n/**\n * Routing options for relationships\n */\nexport type RelationshipRouting = \"Direct\" | \"Orthogonal\" | \"Curved\";\n\n/**\n * Line style for relationships\n */\nexport type LineStyle = \"Solid\" | \"Dashed\" | \"Dotted\";\n\n/**\n * Style configuration for an element tag\n */\nexport interface ElementStyle {\n /** Shape of the element */\n shape?: ElementShape;\n /** Icon URL */\n icon?: string;\n /** Width in pixels */\n width?: number;\n /** Height in pixels */\n height?: number;\n /** Background color (hex) */\n background?: string;\n /** Text color (hex) */\n color?: string;\n /** Font size in pixels */\n fontSize?: number;\n /** Border style */\n border?: LineStyle;\n /** Opacity (0-100) */\n opacity?: number;\n /** Metadata display */\n metadata?: boolean;\n /** Description display */\n description?: boolean;\n}\n\n/**\n * Style configuration for a relationship tag\n */\nexport interface RelationshipStyle {\n /** Line thickness in pixels */\n thickness?: number;\n /** Line color (hex) */\n color?: string;\n /** Line style */\n style?: LineStyle;\n /** Routing algorithm */\n routing?: RelationshipRouting;\n /** Font size for labels */\n fontSize?: number;\n /** Width for lines */\n width?: number;\n /** Position of label (0-100) */\n position?: number;\n /** Opacity (0-100) */\n opacity?: number;\n}\n\n/**\n * Complete styling configuration\n */\nexport interface StructurizrStyles {\n /** Element styles keyed by tag */\n elements?: Record<string, ElementStyle>;\n /** Relationship styles keyed by tag */\n relationships?: Record<string, RelationshipStyle>;\n /** Theme URL */\n theme?: string;\n}\n\n/**\n * Component relationship in the architecture\n */\nexport interface ComponentRelationship {\n /** Source component ID */\n from: string;\n /** Destination component ID */\n to: string;\n /** Description of the relationship */\n description: string;\n /** Technology used (e.g., \"HTTP\", \"SQL\", \"Function Call\") */\n technology?: string;\n /** Tags for the relationship */\n tags?: string[];\n}\n\n/**\n * Component properties (metadata)\n */\nexport interface ComponentProperties {\n /** Source file path and line numbers */\n Source?: string;\n /** Technology stack */\n Technology?: string;\n /** Detection pattern used */\n Pattern?: string;\n /** Message type handled */\n \"Message Type\"?: string;\n /** Additional custom properties */\n [key: string]: string | undefined;\n}\n\n/**\n * Group of related components\n */\nexport interface ComponentGroup {\n /** Group name */\n name: string;\n /** Component IDs in this group */\n components: string[];\n}\n\n/**\n * Step in a dynamic diagram sequence\n */\nexport interface DynamicDiagramStep {\n /** Step number */\n order: number;\n /** Source element ID */\n from: string;\n /** Destination element ID */\n to: string;\n /** Description of the interaction */\n description: string;\n /** Technology used */\n technology?: string;\n}\n\n/**\n * Dynamic diagram (sequence/flow diagram)\n */\nexport interface DynamicDiagram {\n /** Unique key for the diagram */\n key: string;\n /** Container scope */\n scope: string;\n /** Diagram title */\n title: string;\n /** Diagram description */\n description?: string;\n /** Sequence of steps */\n steps: DynamicDiagramStep[];\n}\n\n/**\n * Architectural perspective\n */\nexport interface Perspective {\n /** Perspective name (e.g., \"Security\", \"Performance\") */\n name: string;\n /** Description/reasoning */\n description: string;\n}\n\n/**\n * Container instance in a deployment node\n */\nexport interface ContainerInstance {\n /** Container context name (e.g., \"server\", \"client\", \"background\") */\n container: string;\n /** Number of instances */\n instances?: number;\n}\n\n/**\n * Deployment node in infrastructure\n */\nexport interface DeploymentNode {\n /** Node name */\n name: string;\n /** Description */\n description?: string;\n /** Technology */\n technology?: string;\n /** Tags (use \"environment:Production\" to specify environment) */\n tags?: string[];\n /** Properties */\n properties?: Record<string, string>;\n /** Container instances deployed to this node */\n containerInstances?: ContainerInstance[];\n /** Child deployment nodes (nested infrastructure) */\n children?: DeploymentNode[];\n}\n\n/**\n * Enhanced options for Structurizr DSL generation\n */\nexport interface StructurizrDSLOptions {\n /** Include dynamic diagrams for message flows */\n includeDynamicDiagrams?: boolean;\n\n /** Include component diagrams for contexts */\n includeComponentDiagrams?: boolean;\n\n /** Which contexts to generate component diagrams for */\n componentDiagramContexts?: string[];\n\n /** Styling configuration */\n styles?: StructurizrStyles;\n\n /** Whether to include default styles */\n includeDefaultStyles?: boolean;\n\n /** Component relationships to include */\n relationships?: ComponentRelationship[];\n\n /** Component properties to include */\n properties?: Record<string, ComponentProperties>;\n\n /** Component groups */\n groups?: ComponentGroup[];\n\n /** Dynamic diagrams to generate */\n dynamicDiagrams?: DynamicDiagram[];\n\n /** Architectural perspectives */\n perspectives?: Record<string, Perspective[]>;\n\n /** Deployment nodes */\n deploymentNodes?: DeploymentNode[];\n}\n\n/**\n * Default style palette\n */\nexport const DEFAULT_COLORS = {\n // Message handler types\n messageHandler: \"#1168bd\",\n queryHandler: \"#51cf66\",\n commandHandler: \"#ff922b\",\n authHandler: \"#ff6b6b\",\n subscribeHandler: \"#845ef7\",\n\n // Architectural layers\n service: \"#95a5a6\",\n repository: \"#74b9ff\",\n database: \"#0984e3\",\n externalSystem: \"#e17055\",\n\n // Infrastructure\n container: \"#6c5ce7\",\n deployment: \"#00b894\",\n\n // Text\n textLight: \"#ffffff\",\n textDark: \"#2d3436\",\n\n // Relationships\n relationship: \"#707070\",\n} as const;\n\n/**\n * Default element styles based on common tags\n */\nexport const DEFAULT_ELEMENT_STYLES: Record<string, ElementStyle> = {\n \"Message Handler\": {\n shape: \"Hexagon\",\n background: DEFAULT_COLORS.messageHandler,\n color: DEFAULT_COLORS.textLight,\n fontSize: 14,\n },\n Query: {\n background: DEFAULT_COLORS.queryHandler,\n color: DEFAULT_COLORS.textDark,\n },\n Command: {\n background: DEFAULT_COLORS.commandHandler,\n color: DEFAULT_COLORS.textDark,\n },\n Authentication: {\n background: DEFAULT_COLORS.authHandler,\n color: DEFAULT_COLORS.textLight,\n },\n Subscribe: {\n background: DEFAULT_COLORS.subscribeHandler,\n color: DEFAULT_COLORS.textLight,\n },\n Service: {\n shape: \"RoundedBox\",\n background: DEFAULT_COLORS.service,\n color: DEFAULT_COLORS.textLight,\n },\n Repository: {\n shape: \"Cylinder\",\n background: DEFAULT_COLORS.repository,\n color: DEFAULT_COLORS.textDark,\n },\n Database: {\n shape: \"Cylinder\",\n background: DEFAULT_COLORS.database,\n color: DEFAULT_COLORS.textLight,\n },\n \"External System\": {\n background: DEFAULT_COLORS.externalSystem,\n color: DEFAULT_COLORS.textLight,\n },\n Container: {\n background: DEFAULT_COLORS.container,\n color: DEFAULT_COLORS.textLight,\n },\n};\n\n/**\n * Default relationship styles\n */\nexport const DEFAULT_RELATIONSHIP_STYLES: Record<string, RelationshipStyle> = {\n Relationship: {\n routing: \"Orthogonal\",\n thickness: 2,\n color: DEFAULT_COLORS.relationship,\n fontSize: 12,\n },\n Sync: {\n style: \"Solid\",\n thickness: 2,\n },\n Async: {\n style: \"Dashed\",\n thickness: 2,\n },\n Database: {\n style: \"Solid\",\n thickness: 3,\n color: DEFAULT_COLORS.database,\n },\n};\n\n/**\n * Default theme URL\n */\nexport const DEFAULT_THEME = \"https://static.structurizr.com/themes/default/theme.json\";\n",
60
60
  "// Structurizr DSL generator\n\nimport type {\n ArchitectureAnalysis,\n ContextInfo,\n MessageFlow,\n MessageHandler,\n} from \"../../../analysis/src\";\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} from \"../types/structurizr\";\n\n// Re-export the enhanced type\nexport type StructurizrDSLOptions = EnhancedDSLOptions;\n\nexport class StructurizrDSLGenerator {\n private analysis: ArchitectureAnalysis;\n private options: StructurizrDSLOptions;\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 ...options.styles?.elements,\n },\n relationships: {\n ...DEFAULT_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 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 // 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 * 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 componentName = this.toComponentName(messageType);\n const description = this.generateComponentDescription(messageType, handlers[0]);\n const tags = this.getComponentTags(messageType, handlers[0]);\n const properties = this.getComponentProperties(messageType, handlers[0], contextType);\n\n componentDefs.push({\n id: this.toId(componentName),\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.toId(this.toComponentName(messageType));\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.toId(this.toComponentName(messageType));\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\n return parts.join(\"\\n\");\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.toId(`${handler.messageType}_handler`);\n\n // Show flow for each relationship\n for (const rel of handler.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;\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;\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 };\n\n return technologies[contextType] || \"Extension 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 /**\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 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 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",
61
61
  "// Context builder for Claude-powered teaching session\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n ArchitectureAnalysis,\n ContextInfo,\n MessageFlow,\n} from \"../../analysis/src/types/architecture.ts\";\n\nexport interface TeachingContext {\n project: {\n root: string;\n architecture: ArchitectureAnalysis;\n summary: string;\n };\n verification?: {\n config?: unknown;\n lastResults?: {\n success: boolean;\n stats?: { statesGenerated: number; distinctStates: number };\n violation?: { name: string; trace: string[] };\n error?: string;\n timestamp?: Date;\n };\n };\n codebase: {\n tsConfigPath: string;\n stateFilePath?: string;\n };\n}\n\n/**\n * Build comprehensive teaching context from project analysis\n */\nexport async function buildTeachingContext(\n projectRoot: string,\n analysis: ArchitectureAnalysis\n): Promise<TeachingContext> {\n const contexts = Object.entries(analysis.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = analysis.messageFlows || [];\n\n const summary = generateArchitectureSummary(contexts, allHandlers, messageFlows);\n\n const context: TeachingContext = {\n project: {\n root: projectRoot,\n architecture: analysis,\n summary,\n },\n codebase: {\n tsConfigPath: findTsConfig(projectRoot) || `${projectRoot}/tsconfig.json`,\n stateFilePath: findStateFile(projectRoot),\n },\n };\n\n // Try to load verification config and results\n const verification = await loadVerificationInfo(projectRoot);\n if (verification) {\n context.verification = verification;\n }\n\n return context;\n}\n\nfunction generateArchitectureSummary(\n contexts: [string, ContextInfo][],\n handlers: unknown[],\n flows: MessageFlow[]\n): string {\n const parts = [\n `Project contains ${contexts.length} context(s) and ${handlers.length} message handler(s).`,\n ];\n\n if (flows.length > 0) {\n parts.push(`${flows.length} message flow(s) detected between contexts.`);\n }\n\n const stateVariablesCount = contexts.reduce((sum, [_, ctx]) => {\n return sum + Object.keys(ctx.state?.variables || {}).length;\n }, 0);\n\n if (stateVariablesCount > 0) {\n parts.push(`${stateVariablesCount} total state variables tracked across contexts.`);\n }\n\n return parts.join(\" \");\n}\n\nasync function loadVerificationInfo(\n projectRoot: string\n): Promise<TeachingContext[\"verification\"] | null> {\n const configPath = path.join(projectRoot, \"specs\", \"verification.config.ts\");\n const resultsPath = path.join(projectRoot, \"specs\", \"tla\", \"generated\", \"tlc-output.log\");\n\n let config: unknown;\n let lastResults: TeachingContext[\"verification\"][\"lastResults\"];\n\n // Try to load verification config\n if (fs.existsSync(configPath)) {\n try {\n const resolvedPath = path.resolve(configPath);\n const configModule = await import(`file://${resolvedPath}?t=${Date.now()}`);\n config = configModule.verificationConfig || configModule.default;\n } catch (error) {\n // Config exists but couldn't load - that's fine\n console.log(`Note: Could not load verification config: ${error}`);\n }\n }\n\n // Try to load last verification results\n if (fs.existsSync(resultsPath)) {\n try {\n const stats = fs.statSync(resultsPath);\n const output = fs.readFileSync(resultsPath, \"utf-8\");\n lastResults = parseVerificationResults(output, stats.mtime);\n } catch (error) {\n // Results exist but couldn't parse - that's fine\n console.log(`Note: Could not load verification results: ${error}`);\n }\n }\n\n if (config || lastResults) {\n return { config, lastResults };\n }\n\n return null;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TLC output parsing requires complex conditional logic\nfunction parseVerificationResults(\n output: string,\n timestamp: Date\n): TeachingContext[\"verification\"][\"lastResults\"] {\n const result: TeachingContext[\"verification\"][\"lastResults\"] = {\n success: false,\n timestamp,\n };\n\n // Check for success\n if (output.includes(\"Model checking completed\") && output.includes(\"No error has been found\")) {\n result.success = true;\n\n // Extract stats\n const statesMatch = output.match(/(\\d+) states generated/);\n const distinctMatch = output.match(/(\\d+) distinct states/);\n if (statesMatch || distinctMatch) {\n result.stats = {\n statesGenerated: statesMatch ? Number.parseInt(statesMatch[1], 10) : 0,\n distinctStates: distinctMatch ? Number.parseInt(distinctMatch[1], 10) : 0,\n };\n }\n } else {\n // Look for violations\n const violationMatch = output.match(/Invariant (.+?) is violated/);\n if (violationMatch) {\n result.violation = {\n name: violationMatch[1],\n trace: output.split(\"\\n\").filter((line) => line.includes(\"State \")),\n };\n }\n\n // Look for errors\n const errorMatch = output.match(/Error: (.+?)$/m);\n if (errorMatch) {\n result.error = errorMatch[1];\n }\n }\n\n return result;\n}\n\nfunction findTsConfig(projectRoot: string): string | null {\n const locations = [\n path.join(projectRoot, \"tsconfig.json\"),\n path.join(projectRoot, \"packages\", \"web-ext\", \"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 findStateFile(projectRoot: string): string | undefined {\n const locations = [\n path.join(projectRoot, \"types\", \"state.ts\"),\n path.join(projectRoot, \"src\", \"types\", \"state.ts\"),\n path.join(projectRoot, \"packages\", \"web-ext\", \"src\", \"shared\", \"state\", \"app-state.ts\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return undefined;\n}\n",
62
- "// System prompt generator for Claude-powered teaching\n\nimport type { ContextInfo, MessageFlow } from \"../../analysis/src/types/architecture.ts\";\nimport type { TeachingContext } from \"./context-builder.ts\";\n\n/**\n * Generate teaching system prompt with project context\n */\nexport function generateTeachingPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert instructor teaching a developer about their Polly project and formal verification.\n\n# Communication Style\n\n- Direct and precise language\n- No emojis or decorative elements\n- No florid language or superlatives\n- Classic style: clear and simple as truth\n- Academic rigor without unnecessary ornamentation\n- Act like an Oxford university professor\n\n# Your Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Your Role\n\n1. **Understand their project**: Use the architecture analysis to explain their specific codebase\n2. **Teach Polly concepts**: Explain how Polly's analysis, verification, and visualization work\n3. **Explain formal verification**: Teach TLA+ and verification concepts using their actual code as examples\n4. **Debug and optimize**: Help interpret verification results and suggest improvements\n5. **Answer questions directly**: Address their specific questions with precise technical answers\n\n# Key Areas You Can Help With\n\n- **Architecture**: How contexts, handlers, and message flows work in their project\n- **Translation**: How TypeScript code becomes TLA+ specifications\n- **Verification**: What properties are being verified and what they mean\n- **State-Level Constraints**: Using $constraints() to declare verification constraints alongside state\n- **Performance**: How to optimize verification speed and state space exploration\n- **Debugging**: Interpreting counterexamples and fixing violations\n- **Configuration**: Understanding maxInFlight, bounds, and other verification parameters\n\n# Important Notes\n\n- Always reference specific code from their project when explaining concepts\n- If asked about verification performance, consider the verification config and results\n- Provide actionable suggestions, not just general advice\n- If you don't know something specific about their project, say so clearly\n- **State-Level Constraints**: Explain that $constraints() allows declaring verification constraints alongside state:\n - Constraints are automatically wired as preconditions in generated TLA+ handlers\n - Example: \\`$constraints(\"loggedIn\", { USER_LOGOUT: { requires: \"state.loggedIn === true\" } })\\`\n - This eliminates duplication and creates a single source of truth for state invariants\n - Parser extracts constraints and adds them to all relevant message handlers automatically\n\nBegin by understanding their question and providing a clear, precise answer based on their project context.`;\n}\n\nfunction generateProjectSection(\n context: TeachingContext,\n contexts: [string, ContextInfo][],\n handlers: unknown[],\n flows: MessageFlow[]\n): string {\n const section = `## Architecture Overview\n\n${context.project.summary}\n\n### Contexts\n\n${contexts\n .map(([name, ctx]) => {\n const handlerList = ctx.handlers || [];\n const stateVars = Object.keys(ctx.state?.variables || {});\n return `**${name}**\n- Entry point: ${ctx.entryPoint}\n- Handlers: ${handlerList.length}\n- State variables: ${stateVars.join(\", \") || \"none\"}`;\n })\n .join(\"\\n\\n\")}\n\n### Message Flows\n\n${\n flows.length > 0\n ? flows\n .map((flow: MessageFlow) => {\n return `- ${flow.from} → ${flow.to}: ${flow.messageType}`;\n })\n .join(\"\\n\")\n : \"No message flows detected.\"\n}\n\n### Handlers\n\nTotal handlers: ${handlers.length}\n\n${\n handlers.length > 0\n ? `Example handlers from the project:\n${handlers\n .slice(0, 3)\n .map((h: { name: string; file: string; location?: { line: number } }) => {\n return `- ${h.name} (${h.file}:${h.location?.line || \"?\"})`;\n })\n .join(\"\\n\")}`\n : \"\"\n}`;\n\n return section;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Comprehensive verification status formatting requires many branches\nfunction generateVerificationSection(context: TeachingContext): string {\n if (!context.verification) {\n return `## Verification Status\n\nNo verification has been configured yet. To set up verification:\n1. Run \\`polly verify --setup\\`\n2. Review and configure \\`specs/verification.config.ts\\`\n3. Run \\`polly verify\\` to start verification`;\n }\n\n let section = \"## Verification\\n\\n\";\n\n if (context.verification.config) {\n section += \"### Configuration\\n\\n\";\n section += \"A verification configuration exists at `specs/verification.config.ts`.\\n\";\n\n // Try to extract key config details\n const config = context.verification.config as {\n messages?: { maxInFlight?: number; maxTabs?: number };\n bounds?: { maxInFlight?: number };\n preset?: string;\n verification?: { timeout?: number; workers?: number };\n };\n\n if (config.messages || config.bounds) {\n section += \"\\nKey bounds:\\n\";\n const maxInFlight = config.messages?.maxInFlight || config.bounds?.maxInFlight;\n if (maxInFlight !== undefined) {\n section += `- maxInFlight: ${maxInFlight}\\n`;\n }\n if (config.messages?.maxTabs !== undefined) {\n section += `- maxTabs: ${config.messages.maxTabs}\\n`;\n }\n }\n\n if (config.preset) {\n section += `\\nPreset: ${config.preset}\\n`;\n }\n\n if (config.verification) {\n section += \"\\nVerification settings:\\n\";\n if (config.verification.timeout !== undefined) {\n section += `- Timeout: ${config.verification.timeout === 0 ? \"unlimited\" : `${config.verification.timeout}s`}\\n`;\n }\n if (config.verification.workers !== undefined) {\n section += `- Workers: ${config.verification.workers}\\n`;\n }\n }\n }\n\n if (context.verification.lastResults) {\n const results = context.verification.lastResults;\n section += \"\\n### Last Verification Results\\n\\n\";\n\n if (results.timestamp) {\n section += `Run at: ${results.timestamp.toLocaleString()}\\n`;\n }\n\n if (results.success) {\n section += \"\\n✓ Verification passed!\\n\\n\";\n if (results.stats) {\n section += `Statistics:\n- States generated: ${results.stats.statesGenerated}\n- Distinct states: ${results.stats.distinctStates}\\n`;\n }\n } else {\n section += \"\\n✗ Verification failed\\n\\n\";\n\n if (results.violation) {\n section += `Invariant violated: ${results.violation.name}\\n`;\n section += \"\\nCounterexample trace available.\\n\";\n }\n\n if (results.error) {\n section += `Error: ${results.error}\\n`;\n }\n }\n }\n\n return section;\n}\n\n/**\n * Generate optimization-focused system prompt\n */\nexport function generateOptimizationPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert in formal verification optimization and TLA+ model checking.\n\n# Your Mission\n\nAnalyze this Polly project's verification setup and suggest **precise, actionable optimizations**\nto reduce verification time while maintaining or improving verification precision.\n\n**IMPORTANT**: All Tier 1 and Tier 2 optimization features described below are fully implemented\nand available in the current version of Polly. You can recommend any of these optimizations with\nconfidence that they will work when users apply them to their configuration.\n\n# Communication Style\n\n- Direct and precise - no fluff\n- Always provide concrete, copy-paste-able config changes\n- Explain the safety/precision trade-off for each optimization\n- Prioritize Tier 1 (safe, no precision loss) optimizations\n\n# Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Your Expertise: Optimization Tiers\n\n## Tier 1: Safe Optimizations (ZERO precision loss)\n\n### 1. Message Type Filtering\n**Problem**: Analyzers often detect browser events (mousedown, load, install) and other noise\nthat aren't part of the distributed system being verified, causing exponential state space growth.\n\n**Example Impact**:\n- 23 message types (14 noise) with maxInFlight: 2 → timeout after 5 minutes\n- 9 relevant message types with maxInFlight: 2 → completes quickly\n\n**Solution**: Add include/exclude filters to config:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', ...], // Only protocol messages\n // OR\n exclude: ['load', 'install', 'mousedown', ...], // Exclude browser events\n}\n\\`\\`\\`\n\n### 2. Symmetry Reduction\nTreat identical or commutative message types as interchangeable to reduce state space.\n\n**Example**: For multiple independent symmetry groups (e.g., workers and replicas):\n\\`\\`\\`typescript\nmessages: {\n symmetry: [\n ['worker1', 'worker2', 'worker3'], // Workers are interchangeable\n ['replica1', 'replica2'], // Replicas are interchangeable\n ],\n}\n\\`\\`\\`\n\nPolly generates: \\`Symmetry == Permutations(Set1) \\\\cup Permutations(Set2)\\` which preserves\nindependent group semantics (elements within each group are interchangeable, but not across groups).\nThis is the standard TLA+ pattern used in Paxos and SimpleAllocator.\n\n### 3. Message-Specific Bounds\nDifferent maxInFlight per message type - auth messages should be sequential (1),\nbut data queries might allow concurrency (3).\n\n### 4. State Abstractions\nAbstract implementation details that don't affect correctness properties.\n\n## Tier 2: Controlled Approximations (Minimal, understood precision loss)\n\n### 1. Temporal Constraints\nAdd known ordering requirements (e.g., \"login before other operations\").\n\n### 2. Bounded Exploration\nLimit depth while ensuring critical paths are covered.\n\n### 3. Incremental Verification\nVerify subsystems separately, then compose results.\n\n# Analysis Framework\n\nWhen analyzing, check:\n\n1. **Message Types**: Are there browser events or UI noise?\n2. **State Space**: Current states explored - is it realistic?\n3. **Concurrency**: Is maxInFlight uniform when it should be per-message?\n4. **Symmetries**: Are there duplicate or commutative message types?\n5. **Constraints**: What ordering requirements are implicit?\n\n# Output Format\n\nWhen user says \"analyze\", provide:\n1. Top 3-5 optimization opportunities (prioritize Tier 1)\n2. For each:\n - Tier number\n - Expected impact (e.g., \"60% state space reduction\")\n - Concrete config diff\n - Safety guarantees or trade-offs\n\nExample format:\n\\`\\`\\`\n## Optimization 1: Message Type Filtering [Tier 1]\n\n**Impact**: ~60% state space reduction\n**Safety**: Zero precision loss - only removes irrelevant messages\n\n**Config Change**:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', 'error']\n}\n\\`\\`\\`\n\n**Rationale**: [Explain based on their actual message types]\n\\`\\`\\`\n\nReference their actual message types, handlers, and flows in your analysis.`;\n}\n",
62
+ "// System prompt generator for Claude-powered teaching\n\nimport type { ContextInfo, MessageFlow } from \"../../analysis/src/types/architecture.ts\";\nimport type { TeachingContext } from \"./context-builder.ts\";\n\n/**\n * Generate teaching system prompt with project context\n */\nexport function generateTeachingPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert instructor teaching a developer about their Polly project and formal verification.\n\n# Communication Style\n\n- Direct and precise language\n- No emojis or decorative elements\n- No florid language or superlatives\n- Classic style: clear and simple as truth\n- Academic rigor without unnecessary ornamentation\n- Act like an Oxford university professor\n\n# Your Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Your Role\n\n1. **Understand their project**: Use the architecture analysis to explain their specific codebase\n2. **Teach Polly concepts**: Explain how Polly's analysis, verification, and visualization work\n3. **Explain formal verification**: Teach TLA+ and verification concepts using their actual code as examples\n4. **Debug and optimize**: Help interpret verification results and suggest improvements\n5. **Answer questions directly**: Address their specific questions with precise technical answers\n\n# Key Areas You Can Help With\n\n- **Architecture**: How contexts, handlers, and message flows work in their project\n- **Translation**: How TypeScript code becomes TLA+ specifications\n- **Verification**: What properties are being verified and what they mean\n- **State-Level Constraints**: Using $constraints() to declare verification constraints alongside state\n- **Performance**: How to optimize verification speed and state space exploration\n- **Debugging**: Interpreting counterexamples and fixing violations\n- **Configuration**: Understanding maxInFlight, bounds, and other verification parameters\n- **Elysia Integration**: Using Polly with Elysia/Bun servers for full-stack distributed systems verification\n\n# Important Notes\n\n- Always reference specific code from their project when explaining concepts\n- If asked about verification performance, consider the verification config and results\n- Provide actionable suggestions, not just general advice\n- If you don't know something specific about their project, say so clearly\n- **State-Level Constraints**: Explain that $constraints() allows declaring verification constraints alongside state:\n - Constraints are automatically wired as preconditions in generated TLA+ handlers\n - Example: \\`$constraints(\"loggedIn\", { USER_LOGOUT: { requires: \"state.loggedIn === true\" } })\\`\n - This eliminates duplication and creates a single source of truth for state invariants\n - Parser extracts constraints and adds them to all relevant message handlers automatically\n - **File Organization**: Constraints can be organized in separate files (e.g., specs/constraints.ts)\n - **Transitive Discovery**: The analyzer uses transitive import following to discover constraints\n - Files outside src/ are automatically found if imported from handler files\n - This enables clean separation of verification code from runtime code\n\n# Elysia/Bun Integration\n\nPolly now provides first-class support for Elysia (Bun-first web framework) with Eden type-safe client generation:\n\n## Server-Side Middleware (\\`@fairfox/polly/elysia\\`)\n\nThe \\`polly()\\` middleware adds distributed systems semantics to Elysia apps:\n\n**Key Features:**\n- **State Management**: Define client and server state signals\n- **Client Effects**: Specify what should happen on the client after server operations\n- **Authorization**: Route-level authorization rules\n- **Offline Behavior**: Configure optimistic updates and queueing\n- **WebSocket Broadcast**: Real-time updates to connected clients\n- **TLA+ Generation**: Automatic formal specification generation from routes + config\n\n**Example:**\n\\`\\`\\`typescript\nimport { Elysia, t } from 'elysia';\nimport { polly } from '@fairfox/polly/elysia';\nimport { $syncedState, $serverState } from '@fairfox/polly';\n\nconst app = new Elysia()\n .use(polly({\n state: {\n client: {\n todos: $syncedState('todos', []),\n user: $syncedState('user', null),\n },\n server: {\n db: $serverState('db', db),\n },\n },\n effects: {\n 'POST /todos': {\n client: ({ result, state }) => {\n state.client.todos.value = [...state.client.todos.value, result];\n },\n broadcast: true, // Send to all connected clients\n },\n },\n authorization: {\n 'POST /todos': ({ state }) => state.client.user.value !== null,\n },\n offline: {\n 'POST /todos': {\n queue: true,\n optimistic: (body) => ({ id: -Date.now(), ...body }),\n },\n },\n }))\n .post('/todos', handler, { body: t.Object({ text: t.String() }) });\n\\`\\`\\`\n\n**Route Pattern Matching:**\n- Exact: \\`'POST /todos'\\`\n- Params: \\`'GET /todos/:id'\\`\n- Wildcard: \\`'/todos/*'\\`\n\n**Production Behavior:**\n- In development: Adds metadata to responses for hot-reload and debugging\n- In production: Pass-through (minimal overhead) - client effects are bundled at build time\n- Authorization and broadcasts work in both modes\n\n## Client-Side Wrapper (\\`@fairfox/polly/client\\`)\n\nEnhances Eden treaty client with Polly features:\n\n**Example:**\n\\`\\`\\`typescript\nimport { createPollyClient } from '@fairfox/polly/client';\nimport { $syncedState } from '@fairfox/polly';\nimport type { app } from './server';\n\nconst clientState = {\n todos: $syncedState('todos', []),\n user: $syncedState('user', null),\n};\n\nexport const api = createPollyClient<typeof app>('http://localhost:3000', {\n state: clientState,\n websocket: true, // Enable real-time updates\n});\n\n// Use it (types are automatically inferred from server!)\nawait api.todos.post({ text: 'Buy milk' });\n\n// Access Polly features\nconsole.log(api.$polly.state.isOnline.value); // true/false\nconsole.log(api.$polly.state.queuedRequests.value); // Queued requests\napi.$polly.sync(); // Manually sync queued requests\n\\`\\`\\`\n\n**Key Features:**\n- Offline queueing with automatic retry\n- WebSocket connection for real-time updates\n- Lamport clock synchronization\n- Type inference from server via Eden\n\n## Why This Matters for Distributed Systems\n\nSPAs/PWAs are distributed systems facing classic problems:\n- **CAP theorem**: Must choose consistency vs availability during partitions\n- **Network unreliability**: The first fallacy of distributed computing\n- **Cache invalidation**: \"One of the two hard things in computer science\"\n- **Eventual consistency**: State sync across client/server\n- **Conflict resolution**: When multiple devices edit offline\n\nThe Elysia integration addresses this by:\n1. Making distributed concerns explicit (offline, authorization, effects)\n2. Leveraging Eden for zero-duplication type safety\n3. Supporting verification via TLA+ generation from middleware config\n4. Providing WebSocket broadcast for real-time consistency\n\n## Architecture Pattern\n\n\\`\\`\\`\nBrowser (Client)\n ├── Eden Treaty Client (types from Elysia)\n ├── Polly Wrapper (offline, sync, WebSocket)\n └── Client State ($syncedState)\n │\n │ HTTP / WebSocket\n │\nServer (Elysia + Bun)\n ├── Elysia Routes (normal routes)\n ├── Polly Middleware (effects, auth, broadcast)\n └── Server State ($serverState)\n\\`\\`\\`\n\n## Best Practices\n\n1. **Separate Elysia is the contract** - Don't define types twice. Elysia routes define the API, Eden generates client types.\n2. **Effects describe client behavior** - Keep effects pure and deterministic.\n3. **Authorization at route level** - Centralize security rules in middleware config.\n4. **Queue selectively** - Only queue idempotent operations when offline.\n5. **Broadcast with filters** - Use broadcastFilter to target specific clients.\n6. **Generate TLA+ for verification** - Enable tlaGeneration in dev to verify distributed properties.\n\nBegin by understanding their question and providing a clear, precise answer based on their project context.`;\n}\n\nfunction generateProjectSection(\n context: TeachingContext,\n contexts: [string, ContextInfo][],\n handlers: unknown[],\n flows: MessageFlow[]\n): string {\n const section = `## Architecture Overview\n\n${context.project.summary}\n\n### Contexts\n\n${contexts\n .map(([name, ctx]) => {\n const handlerList = ctx.handlers || [];\n const stateVars = Object.keys(ctx.state?.variables || {});\n return `**${name}**\n- Entry point: ${ctx.entryPoint}\n- Handlers: ${handlerList.length}\n- State variables: ${stateVars.join(\", \") || \"none\"}`;\n })\n .join(\"\\n\\n\")}\n\n### Message Flows\n\n${\n flows.length > 0\n ? flows\n .map((flow: MessageFlow) => {\n return `- ${flow.from} → ${flow.to}: ${flow.messageType}`;\n })\n .join(\"\\n\")\n : \"No message flows detected.\"\n}\n\n### Handlers\n\nTotal handlers: ${handlers.length}\n\n${\n handlers.length > 0\n ? `Example handlers from the project:\n${handlers\n .slice(0, 3)\n .map((h: { name: string; file: string; location?: { line: number } }) => {\n return `- ${h.name} (${h.file}:${h.location?.line || \"?\"})`;\n })\n .join(\"\\n\")}`\n : \"\"\n}`;\n\n return section;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Comprehensive verification status formatting requires many branches\nfunction generateVerificationSection(context: TeachingContext): string {\n if (!context.verification) {\n return `## Verification Status\n\nNo verification has been configured yet. To set up verification:\n1. Run \\`polly verify --setup\\`\n2. Review and configure \\`specs/verification.config.ts\\`\n3. Run \\`polly verify\\` to start verification`;\n }\n\n let section = \"## Verification\\n\\n\";\n\n if (context.verification.config) {\n section += \"### Configuration\\n\\n\";\n section += \"A verification configuration exists at `specs/verification.config.ts`.\\n\";\n\n // Try to extract key config details\n const config = context.verification.config as {\n messages?: { maxInFlight?: number; maxTabs?: number };\n bounds?: { maxInFlight?: number };\n preset?: string;\n verification?: { timeout?: number; workers?: number };\n };\n\n if (config.messages || config.bounds) {\n section += \"\\nKey bounds:\\n\";\n const maxInFlight = config.messages?.maxInFlight || config.bounds?.maxInFlight;\n if (maxInFlight !== undefined) {\n section += `- maxInFlight: ${maxInFlight}\\n`;\n }\n if (config.messages?.maxTabs !== undefined) {\n section += `- maxTabs: ${config.messages.maxTabs}\\n`;\n }\n }\n\n if (config.preset) {\n section += `\\nPreset: ${config.preset}\\n`;\n }\n\n if (config.verification) {\n section += \"\\nVerification settings:\\n\";\n if (config.verification.timeout !== undefined) {\n section += `- Timeout: ${config.verification.timeout === 0 ? \"unlimited\" : `${config.verification.timeout}s`}\\n`;\n }\n if (config.verification.workers !== undefined) {\n section += `- Workers: ${config.verification.workers}\\n`;\n }\n }\n }\n\n if (context.verification.lastResults) {\n const results = context.verification.lastResults;\n section += \"\\n### Last Verification Results\\n\\n\";\n\n if (results.timestamp) {\n section += `Run at: ${results.timestamp.toLocaleString()}\\n`;\n }\n\n if (results.success) {\n section += \"\\n✓ Verification passed!\\n\\n\";\n if (results.stats) {\n section += `Statistics:\n- States generated: ${results.stats.statesGenerated}\n- Distinct states: ${results.stats.distinctStates}\\n`;\n }\n } else {\n section += \"\\n✗ Verification failed\\n\\n\";\n\n if (results.violation) {\n section += `Invariant violated: ${results.violation.name}\\n`;\n section += \"\\nCounterexample trace available.\\n\";\n }\n\n if (results.error) {\n section += `Error: ${results.error}\\n`;\n }\n }\n }\n\n return section;\n}\n\n/**\n * Generate optimization-focused system prompt\n */\nexport function generateOptimizationPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert in formal verification optimization and TLA+ model checking.\n\n# Your Mission\n\nAnalyze this Polly project's verification setup and suggest **precise, actionable optimizations**\nto reduce verification time while maintaining or improving verification precision.\n\n**IMPORTANT**: All Tier 1 and Tier 2 optimization features described below are fully implemented\nand available in the current version of Polly. You can recommend any of these optimizations with\nconfidence that they will work when users apply them to their configuration.\n\n**Code Organization**: The analyzer uses transitive import following to discover all reachable code.\nConstraints and type guards can be organized in separate files (e.g., specs/constraints.ts) and will\nbe automatically discovered via imports. Files outside src/ are fully supported.\n\n# Communication Style\n\n- Direct and precise - no fluff\n- Always provide concrete, copy-paste-able config changes\n- Explain the safety/precision trade-off for each optimization\n- Prioritize Tier 1 (safe, no precision loss) optimizations\n\n# Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Your Expertise: Optimization Tiers\n\n## Tier 1: Safe Optimizations (ZERO precision loss)\n\n### 1. Message Type Filtering\n**Problem**: Analyzers often detect browser events (mousedown, load, install) and other noise\nthat aren't part of the distributed system being verified, causing exponential state space growth.\n\n**Example Impact**:\n- 23 message types (14 noise) with maxInFlight: 2 → timeout after 5 minutes\n- 9 relevant message types with maxInFlight: 2 → completes quickly\n\n**Solution**: Add include/exclude filters to config:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', ...], // Only protocol messages\n // OR\n exclude: ['load', 'install', 'mousedown', ...], // Exclude browser events\n}\n\\`\\`\\`\n\n### 2. Symmetry Reduction\nTreat identical or commutative message types as interchangeable to reduce state space.\n\n**Example**: For multiple independent symmetry groups (e.g., workers and replicas):\n\\`\\`\\`typescript\nmessages: {\n symmetry: [\n ['worker1', 'worker2', 'worker3'], // Workers are interchangeable\n ['replica1', 'replica2'], // Replicas are interchangeable\n ],\n}\n\\`\\`\\`\n\nPolly generates: \\`Symmetry == Permutations(Set1) \\\\cup Permutations(Set2)\\` which preserves\nindependent group semantics (elements within each group are interchangeable, but not across groups).\nThis is the standard TLA+ pattern used in Paxos and SimpleAllocator.\n\n### 3. Message-Specific Bounds\nDifferent maxInFlight per message type - auth messages should be sequential (1),\nbut data queries might allow concurrency (3).\n\n### 4. State Abstractions\nAbstract implementation details that don't affect correctness properties.\n\n## Tier 2: Controlled Approximations (Minimal, understood precision loss)\n\n### 1. Temporal Constraints\nAdd known ordering requirements (e.g., \"login before other operations\").\n\n### 2. Bounded Exploration\nLimit depth while ensuring critical paths are covered.\n\n### 3. Incremental Verification\nVerify subsystems separately, then compose results.\n\n# Analysis Framework\n\nWhen analyzing, check:\n\n1. **Message Types**: Are there browser events or UI noise?\n2. **State Space**: Current states explored - is it realistic?\n3. **Concurrency**: Is maxInFlight uniform when it should be per-message?\n4. **Symmetries**: Are there duplicate or commutative message types?\n5. **Constraints**: What ordering requirements are implicit?\n\n# Output Format\n\nWhen user says \"analyze\", provide:\n1. Top 3-5 optimization opportunities (prioritize Tier 1)\n2. For each:\n - Tier number\n - Expected impact (e.g., \"60% state space reduction\")\n - Concrete config diff\n - Safety guarantees or trade-offs\n\nExample format:\n\\`\\`\\`\n## Optimization 1: Message Type Filtering [Tier 1]\n\n**Impact**: ~60% state space reduction\n**Safety**: Zero precision loss - only removes irrelevant messages\n\n**Config Change**:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', 'error']\n}\n\\`\\`\\`\n\n**Rationale**: [Explain based on their actual message types]\n\\`\\`\\`\n\nReference their actual message types, handlers, and flows in your analysis.`;\n}\n",
63
63
  "#!/usr/bin/env bun\n// CLI for Polly teaching system - Claude-powered\n\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { analyzeArchitecture } from \"../../analysis/src/index.ts\";\nimport { generateStructurizrDSL } from \"../../visualize/src/codegen/structurizr.ts\";\nimport { buildTeachingContext } from \"./context-builder.ts\";\nimport { generateOptimizationPrompt, generateTeachingPrompt } from \"./system-prompt.ts\";\n\nasync function main() {\n const cwd = process.cwd();\n\n // Check for mode flag\n const args = process.argv.slice(2);\n const modeArg = args.find((arg) => arg.startsWith(\"--mode=\"));\n const mode = modeArg ? modeArg.split(\"=\")[1] : \"teach\";\n\n // Check for API key\n const apiKey = process.env.ANTHROPIC_API_KEY;\n if (!apiKey) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\n❌ Error: ANTHROPIC_API_KEY environment variable not set\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\nTo use polly teach, you need a Claude API key:\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"1. Get an API key from https://console.anthropic.com/\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"2. Set the environment variable:\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\" export ANTHROPIC_API_KEY=your_key_here\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\nAlternatively, add it to your shell profile (.bashrc, .zshrc, etc.)\\n\");\n process.exit(1);\n }\n\n console.log(\n mode === \"optimize\" ? \"Analyzing verification setup...\" : \"Analyzing Polly project...\"\n );\n console.log();\n\n try {\n // Run architecture analysis\n const analysis = await analyzeArchitecture({\n projectRoot: cwd,\n tsConfigPath: `${cwd}/tsconfig.json`,\n });\n\n // Generate visualization\n const dsl = await generateStructurizrDSL(analysis);\n\n // Build teaching context\n const context = await buildTeachingContext(cwd, analysis);\n\n // Display appropriate overview based on mode\n if (mode === \"optimize\") {\n displayOptimizationOverview(context);\n } else {\n displayProjectOverview(context, dsl);\n }\n\n // Start Claude-powered interactive session\n await startClaudeSession(apiKey, context, mode);\n } catch (error) {\n console.log(`\\n❌ Failed to analyze project: ${error}`);\n process.exit(1);\n }\n}\n\nfunction displayProjectOverview(context: ReturnType<typeof buildTeachingContext>, dsl: string) {\n const contexts = Object.entries(context.project.architecture.contexts);\n const _allHandlers = contexts.flatMap(\n ([_, ctx]: [string, { handlers?: unknown[] }]) => ctx.handlers || []\n );\n const messageFlows = context.project.architecture.messageFlows || [];\n\n console.log(\n `\n# Polly Project Analysis\n\n## Architecture\n\n${context.project.summary}\n\n### Contexts\n\n${contexts\n .map(\n ([name, ctx]: [\n string,\n { entryPoint: string; handlers?: unknown[]; state?: { variables?: Record<string, unknown> } },\n ]) => {\n return `\n**${name}**\nLocation: ${ctx.entryPoint}\nHandlers: ${ctx.handlers?.length || 0}\nState variables: ${Object.keys(ctx.state?.variables || {}).length}`;\n }\n )\n .join(\"\\n\")}\n\n### Message Flows\n\n${\n messageFlows.length > 0\n ? messageFlows\n .map((flow: { from: string; to: string; messageType: string }) => {\n return `- ${flow.from} → ${flow.to}: ${flow.messageType}`;\n })\n .join(\"\\n\")\n : \"No message flows detected.\"\n}\n\n## Architecture Diagram\n\n\\`\\`\\`structurizr\n${dsl}\n\\`\\`\\`\n\n---\n\nWhat would you like to understand about your project?\n\nI'm powered by Claude and have full context of your Polly project's architecture,\nhandlers, state, message flows, and verification configuration. Ask me anything!\n `.trim()\n );\n}\n\nfunction displayOptimizationOverview(context: Awaited<ReturnType<typeof buildTeachingContext>>) {\n let output = \"# Verification Optimization Session\\n\\n\";\n output += \"## Current Setup\\n\\n\";\n output += `${context.project.summary}\\n\\n`;\n\n if (context.verification?.config) {\n output += \"### Verification Configuration\\n\\n\";\n output += \"Config found at `specs/verification.config.ts`\\n\";\n\n if (context.verification.lastResults) {\n output += \"\\n### Last Verification Results\\n\\n\";\n output += context.verification.lastResults.success ? \"✓ Passed\\n\" : \"✗ Failed\\n\";\n\n if (context.verification.lastResults.stats) {\n output += `- States explored: ${context.verification.lastResults.stats.statesGenerated}\\n`;\n output += `- Distinct states: ${context.verification.lastResults.stats.distinctStates}\\n`;\n }\n\n if (context.verification.lastResults.timestamp) {\n output += `- Run at: ${context.verification.lastResults.timestamp.toLocaleString()}\\n`;\n }\n }\n } else {\n output += \"### No Verification Setup\\n\\n\";\n output += \"Run `polly verify --setup` to configure verification.\\n\";\n }\n\n output += \"\\n---\\n\\n\";\n output += \"I'll analyze your verification setup and suggest optimizations to:\\n\";\n output += \"- Reduce verification time while maintaining precision\\n\";\n output += \"- Implement safe state space reductions\\n\";\n output += \"- Configure optimal bounds and constraints\\n\\n\";\n output += 'Ask me about specific optimizations or say \"analyze\" for a full assessment.\\n';\n\n console.log(output);\n}\n\nasync function startClaudeSession(\n apiKey: string,\n context: Awaited<ReturnType<typeof buildTeachingContext>>,\n mode: string = \"teach\"\n) {\n const anthropic = new Anthropic({ apiKey });\n const systemPrompt =\n mode === \"optimize\" ? generateOptimizationPrompt(context) : generateTeachingPrompt(context);\n\n // Initialize conversation history\n const conversationHistory: Array<{\n role: \"user\" | \"assistant\";\n content: string;\n }> = [];\n\n const readline = await import(\"node:readline\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: \"\\n\\nPrompt: \",\n });\n\n rl.prompt();\n\n rl.on(\"line\", async (input: string) => {\n const query = input.trim();\n\n if (!query || query === \"exit\" || query === \"quit\") {\n console.log(\"\\nGoodbye!\");\n rl.close();\n process.exit(0);\n }\n\n // Add user message to history\n conversationHistory.push({\n role: \"user\",\n content: query,\n });\n\n try {\n // Call Claude API\n const response = await anthropic.messages.create({\n model: \"claude-sonnet-4-20250514\",\n max_tokens: 4096,\n system: systemPrompt,\n messages: conversationHistory,\n });\n\n const assistantMessage = response.content[0];\n if (assistantMessage.type === \"text\") {\n const text = assistantMessage.text;\n\n // Add assistant message to history\n conversationHistory.push({\n role: \"assistant\",\n content: text,\n });\n\n // Display response\n console.log(`\\n${text}`);\n }\n } catch (error) {\n if (error instanceof Anthropic.APIError) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(`\\n❌ API Error: ${error.message}`);\n if (error.status === 401) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"Your API key may be invalid. Please check ANTHROPIC_API_KEY.\");\n }\n } else {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(`\\n❌ Error: ${error}`);\n }\n }\n\n rl.prompt();\n });\n\n rl.on(\"close\", () => {\n console.log(\"\\nGoodbye!\");\n process.exit(0);\n });\n}\n\nmain();\n"
64
64
  ],
65
- "mappings": "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",
66
- "debugId": "8BD8EAFF3D45D43B64756E2164756E21",
65
+ "mappings": "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",
66
+ "debugId": "CDFF2E3A99C1DA5C64756E2164756E21",
67
67
  "names": []
68
68
  }