@fairfox/polly 0.13.2 → 0.14.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.
- package/dist/tools/analysis/src/extract/handlers.d.ts +12 -1
- package/dist/tools/teach/src/cli.js +56 -15
- package/dist/tools/teach/src/cli.js.map +3 -3
- package/dist/tools/teach/src/index.js +56 -15
- package/dist/tools/teach/src/index.js.map +3 -3
- package/dist/tools/verify/src/cli.js +56 -15
- package/dist/tools/verify/src/cli.js.map +3 -3
- package/dist/tools/visualize/src/cli.js +56 -15
- package/dist/tools/visualize/src/cli.js.map +3 -3
- package/package.json +1 -1
|
@@ -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 type { MessageHandler } from \"../types/core\";\nimport { extractADRs } from \"./adr\";\nimport { ContextAnalyzer } from \"./contexts\";\nimport { FlowAnalyzer } from \"./flows\";\nimport { HandlerExtractor } from \"./handlers\";\nimport { IntegrationAnalyzer } from \"./integrations\";\nimport { ManifestParser } from \"./manifest\";\n\nexport interface ArchitectureAnalysisOptions {\n /** Path to tsconfig.json */\n tsConfigPath: string;\n\n /** Project root directory */\n projectRoot: string;\n\n /** Optional: Override detected contexts */\n contexts?: string[];\n\n /** Optional: Use generic project detection (non-extension) */\n useProjectDetector?: boolean;\n}\n\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 ArrowFunction,\n type ClassDeclaration,\n type FunctionDeclaration,\n type FunctionExpression,\n Node,\n Project,\n type SourceFile,\n} from \"ts-morph\";\nimport type { ComponentInfo, ContextInfo } from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\n\nexport class ContextAnalyzer {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze a specific context given its entry point\n */\n analyzeContext(contextType: string, entryPoint: string, handlers: MessageHandler[]): ContextInfo {\n const sourceFile = this.project.getSourceFile(entryPoint);\n\n if (!sourceFile) {\n throw new Error(`Could not find source file: ${entryPoint}`);\n }\n\n // Extract Chrome API usage\n const chromeAPIs = this.extractChromeAPIs(sourceFile);\n\n // Extract dependencies\n const dependencies = this.extractDependencies(sourceFile);\n\n // Extract JSDoc description\n const description = this.extractDescription(sourceFile);\n\n // Extract components (for UI contexts)\n const components = this.isUIContext(contextType)\n ? this.extractComponents(sourceFile)\n : undefined;\n\n // Filter handlers for this context\n const contextHandlers = handlers.filter((h) => h.node === contextType);\n\n return {\n type: contextType,\n entryPoint,\n handlers: contextHandlers,\n chromeAPIs,\n externalAPIs: [], // Will be filled by integration analyzer\n ...(components ? { components } : {}),\n dependencies,\n ...(description ? { description } : {}),\n };\n }\n\n /**\n * Extract Chrome API usage from source file\n */\n private extractChromeAPIs(sourceFile: SourceFile): string[] {\n const apis = new Set<string>();\n\n sourceFile.forEachDescendant((node: Node) => {\n if (Node.isPropertyAccessExpression(node)) {\n const text = node.getText();\n this.detectAPIPattern(text, apis);\n }\n });\n\n return Array.from(apis).sort();\n }\n\n /**\n * Detect and extract API from text using various patterns\n */\n private detectAPIPattern(text: string, apis: Set<string>): void {\n // Match chrome.* API calls\n if (text.startsWith(\"chrome.\")) {\n const api = this.extractAPIFromPrefix(text, \"chrome\");\n if (api) apis.add(api);\n return;\n }\n\n // Match browser.* for Firefox compatibility\n if (text.startsWith(\"browser.\")) {\n const api = this.extractAPIFromPrefix(text, \"browser\");\n if (api) apis.add(api);\n return;\n }\n\n // Match bus.adapters.* pattern (framework abstraction)\n if (text.includes(\"bus.adapters.\")) {\n const api = this.extractAPIFromBusAdapter(text);\n if (api) apis.add(api);\n }\n }\n\n /**\n * Extract API namespace from chrome.* or browser.* prefix\n */\n private extractAPIFromPrefix(text: string, prefix: string): string | null {\n const pattern = new RegExp(`^${prefix}\\\\.([^.(]+(?:\\\\.[^.(]+)?)`);\n const match = text.match(pattern);\n return match?.[1] || null;\n }\n\n /**\n * Extract API from bus.adapters.* pattern\n */\n private extractAPIFromBusAdapter(text: string): string | null {\n const match = text.match(/bus\\.adapters\\.([^.(]+)/);\n return match?.[1] || null;\n }\n\n /**\n * Extract import dependencies\n */\n private extractDependencies(sourceFile: SourceFile): string[] {\n const deps: string[] = [];\n\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const moduleSpecifier = importDecl.getModuleSpecifierValue();\n deps.push(moduleSpecifier);\n }\n\n return deps;\n }\n\n /**\n * Extract JSDoc description from file\n */\n private extractDescription(sourceFile: SourceFile): string | undefined {\n // Look for file-level JSDoc comment\n const firstStatement = sourceFile.getStatements()[0];\n if (!firstStatement) return undefined;\n\n const leadingComments = firstStatement.getLeadingCommentRanges();\n if (leadingComments.length === 0) return undefined;\n\n const firstComment = leadingComments[0];\n if (!firstComment) return undefined;\n\n const comment = firstComment.getText();\n\n // Extract description from JSDoc\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n if (descMatch?.[1]) {\n return descMatch[1].trim();\n }\n\n // Or just take the first line of the comment\n const lines = comment\n .split(\"\\n\")\n .map((l: string) => l.replace(/^[\\s*]+/, \"\").trim())\n .filter((l: string) => l && !l.startsWith(\"@\"));\n\n return lines[0] || undefined;\n }\n\n /**\n * Extract React/Preact components from source file\n */\n private extractComponents(sourceFile: SourceFile): ComponentInfo[] {\n const components: ComponentInfo[] = [];\n\n sourceFile.forEachDescendant((node: Node) => {\n this.extractFunctionComponent(node, sourceFile, components);\n this.extractArrowFunctionComponent(node, sourceFile, components);\n this.extractClassComponent(node, sourceFile, components);\n });\n\n return components;\n }\n\n /**\n * Extract function component from node if applicable\n */\n private extractFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isFunctionDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeComponent(name, node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract arrow function component from node if applicable\n */\n private extractArrowFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isVariableDeclaration(node)) return;\n\n const name = node.getName();\n const initializer = node.getInitializer();\n\n if (!name || !initializer) return;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) return;\n if (!this.looksLikeComponent(name, initializer)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(initializer),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract class component from node if applicable\n */\n private extractClassComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isClassDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeClassComponent(node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"class\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractPropsFromClass(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Check if a function looks like a React/Preact component\n */\n private looksLikeComponent(\n name: string,\n node: FunctionDeclaration | ArrowFunction | FunctionExpression\n ): boolean {\n // Component names should start with uppercase\n if (!/^[A-Z]/.test(name)) return false;\n\n // Check if it returns JSX\n const body = node.getBody();\n if (!body) return false;\n\n let hasJSX = false;\n\n if (Node.isBlock(body)) {\n body.forEachDescendant((child: Node) => {\n if (Node.isJsxElement(child) || Node.isJsxSelfClosingElement(child)) {\n hasJSX = true;\n }\n });\n } else if (Node.isJsxElement(body) || Node.isJsxSelfClosingElement(body)) {\n // Arrow function with implicit return\n hasJSX = true;\n }\n\n return hasJSX;\n }\n\n /**\n * Check if a class looks like a React component\n */\n private looksLikeClassComponent(node: ClassDeclaration): boolean {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return false;\n\n const extendsText = extendedTypes.getText();\n return /Component|PureComponent/.test(extendsText);\n }\n\n /**\n * Extract props from function component\n */\n private extractProps(node: FunctionDeclaration | ArrowFunction | FunctionExpression): string[] {\n const params = node.getParameters();\n if (params.length === 0) return [];\n\n const propsParam = params[0];\n if (!propsParam) return [];\n\n const type = propsParam.getType();\n\n const props: string[] = [];\n for (const prop of type.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract props from class component\n */\n private extractPropsFromClass(node: ClassDeclaration): string[] {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return [];\n\n const typeArgs = extendedTypes.getType().getTypeArguments();\n if (typeArgs.length === 0) return [];\n\n const propsType = typeArgs[0];\n if (!propsType) return [];\n\n const props: string[] = [];\n\n for (const prop of propsType.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract JSDoc description from node\n */\n private extractJSDocDescription(node: Node): string | undefined {\n if (!Node.isJSDocable(node)) return undefined;\n\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return undefined;\n\n const description = firstDoc.getDescription().trim();\n return description || undefined;\n }\n\n /**\n * Check if context is a UI context\n */\n private isUIContext(contextType: string): boolean {\n return [\"popup\", \"options\", \"devtools\"].includes(contextType);\n }\n}\n",
|
|
52
52
|
"// Message flow analysis - trace messages between contexts\n\nimport { type CallExpression, 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 firstArg = args[0];\n if (!firstArg) return;\n\n const msgType = this.extractMessageTypeFromArg(firstArg);\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 firstArg = args[0];\n if (!firstArg) return;\n\n const msgType = this.extractMessageTypeFromArg(firstArg);\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 firstArg = args[0];\n if (!firstArg) return;\n\n const messageType = this.extractMessageTypeFromArg(firstArg);\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 - use type guard to check if node supports JSDoc\n // biome-ignore lint/suspicious/noExplicitAny: Type guard for dynamic JSDoc support\n const nodeAny = targetNode as any;\n if (!(\"getJsDocs\" in nodeAny) || typeof nodeAny.getJsDocs !== \"function\") {\n return {};\n }\n\n const jsDocs = nodeAny.getJsDocs();\n if (jsDocs.length === 0) return {};\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return {};\n\n const comment = firstDoc.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 FunctionDeclaration,\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 StateConstraint,\n VerificationCondition,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\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 let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n if (actualHandler) {\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\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 (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\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 * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\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 if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(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 * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\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 const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.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 | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [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 if (!conditionArg) return null;\n\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 (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.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 * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\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 value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\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 * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\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 if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\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\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 FunctionDeclaration,\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 StateConstraint,\n VerificationCondition,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\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 let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n if (actualHandler) {\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\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 (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\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 * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\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 if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(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 or someState.value.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\n // Pattern 1: state.field = value (original pattern)\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 return;\n }\n\n // Pattern 2: someState.value.field = value (signal pattern)\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch && valueMatch[1]) {\n const field = valueMatch[1];\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return;\n }\n\n // Pattern 3: someState.value = { object literal } (signal replacement)\n if (fieldPath.endsWith(\".value\") && Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, assignments);\n }\n }\n\n /**\n * Extract assignments from object literal properties\n * Used for: someState.value = { field1: value1, field2: value2 }\n */\n private extractObjectLiteralAssignments(\n objectLiteral: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isObjectLiteralExpression(objectLiteral)) return;\n\n for (const prop of objectLiteral.getProperties()) {\n // Handle regular property assignments: { field: value }\n if (Node.isPropertyAssignment(prop)) {\n const name = prop.getName();\n const initializer = prop.getInitializer();\n\n if (!name || !initializer) continue;\n\n const value = this.extractValue(initializer);\n if (value !== undefined) {\n assignments.push({ field: name, value });\n }\n }\n\n // Handle shorthand properties: { field }\n if (Node.isShorthandPropertyAssignment(prop)) {\n const name = prop.getName();\n // For shorthand, we can't extract the value statically\n // but we know the field is being set\n assignments.push({ field: name, value: \"@\" }); // Use @ as placeholder\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 const field = this.extractFieldFromStatePath(fieldPath);\n\n if (!field) return;\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 * Check if field path is a state mutation pattern and extract field name\n * Supports: state.field, someState.value.field\n * Returns: field name or null if not a state pattern\n */\n private extractFieldFromStatePath(fieldPath: string): string | null {\n // Pattern 1: state.field\n if (fieldPath.startsWith(\"state.\")) {\n return fieldPath.substring(6);\n }\n\n // Pattern 2: someState.value.field\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch && valueMatch[1]) {\n return valueMatch[1];\n }\n\n return null;\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 const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\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 * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\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 const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\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 const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.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 | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [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 if (!conditionArg) return null;\n\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 (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.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 * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\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 value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\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 * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\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 if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\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\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 const field = this.extractFieldFromStatePath(fieldPath);\n if (field) {\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 const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field && [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\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 type Identifier,\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 ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n let functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression | undefined =\n 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 | ArrowFunction | FunctionExpression,\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 firstArg = args[0];\n if (!firstArg) return;\n\n const url = this.extractURLFromArg(firstArg);\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 if (!Node.isJSDocable(node)) return undefined;\n\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return undefined;\n\n const comment = firstDoc.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\"] as string) || \"Unknown Extension\",\n version: (manifest[\"version\"] as string) || \"0.0.0\",\n description: manifest[\"description\"] as string | undefined,\n manifestVersion: (manifest[\"manifest_version\"] as number) || 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\"] as string[]) || [],\n hostPermissions: (manifest[\"host_permissions\"] as string[]) || [],\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\"] as Record<string, unknown> | undefined;\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\"] as string],\n };\n }\n\n // Manifest V2 - scripts\n if (bg[\"scripts\"]) {\n return {\n type: \"script\",\n files: bg[\"scripts\"] as string[],\n };\n }\n\n // Manifest V2 - page\n if (bg[\"page\"]) {\n return {\n type: \"script\",\n files: [bg[\"page\"] as string],\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: Record<string, unknown>) => ({\n matches: (script[\"matches\"] as string[]) || [],\n js: (script[\"js\"] as string[]) || [],\n css: script[\"css\"] as string[] | undefined,\n }));\n }\n\n /**\n * Parse popup configuration\n */\n private parsePopup(): ManifestInfo[\"popup\"] {\n if (!this.manifestData) return undefined;\n\n const action =\n (this.manifestData[\"action\"] as Record<string, unknown> | undefined) ||\n (this.manifestData[\"browser_action\"] as Record<string, unknown> | undefined);\n if (!action) return undefined;\n\n if (action[\"default_popup\"]) {\n return {\n html: action[\"default_popup\"] as string,\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 const optionsObj = options as Record<string, unknown>;\n return {\n page: optionsObj[\"page\"] as string,\n openInTab: optionsObj[\"open_in_tab\"] as boolean,\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 as string,\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",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
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- **Testing & Adapters**: Using mock adapters for testing and verification in Node.js environments\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\n# Testing & Adapters\n\n## The Adapter Pattern\n\nPolly uses an **adapter pattern** to abstract Chrome extension APIs, enabling testing in Node.js environments and solving the \"chrome is not defined\" issue during verification.\n\n### Core Adapter Types\n\nAll extension API access goes through adapters defined in \\`ExtensionAdapters\\`:\n- \\`runtime\\` - Message passing, extension lifecycle\n- \\`storage\\` - Persistent storage (local, sync, session)\n- \\`tabs\\` - Tab management and queries\n- \\`window\\` - Window management\n- \\`offscreen\\` - Offscreen documents\n- \\`contextMenus\\` - Context menu registration\n- \\`fetch\\` - HTTP requests\n- \\`logger\\` - Logging infrastructure\n\n### Why This Matters for Verification\n\n**Problem**: Chrome extensions use \\`chrome.*\\` APIs that don't exist in Node.js. When Polly's verification runs in Node.js/Docker, importing files that access \\`chrome.*\\` fails with \"chrome is not defined\".\n\n**Solution**: Pass mock adapters to MessageBus/context creators, allowing verification code to import and analyze handler files without Chrome runtime.\n\n## Using Mock Adapters\n\n### In Tests\n\n\\`\\`\\`typescript\nimport { createMockAdapters } from '@fairfox/polly/test';\n\nconst adapters = createMockAdapters();\nconst bus = new MessageBus('background', adapters);\n\\`\\`\\`\n\n### With createBackground()\n\n\\`\\`\\`typescript\nimport { createBackground } from '@fairfox/polly/background';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Production (Chrome extension)\nconst bus = createBackground(); // Uses real Chrome adapters\n\n// Testing/Verification (Node.js)\nconst bus = createBackground(createMockAdapters()); // Uses mocks\n\\`\\`\\`\n\n### With createContext()\n\n\\`\\`\\`typescript\nimport { createContext } from '@fairfox/polly';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Production\nconst bus = createContext('popup', {\n async onInit(bus) {\n // Setup handlers\n }\n});\n\n// Testing/Verification\nconst bus = createContext('popup', {\n adapters: createMockAdapters(),\n waitForDOM: false,\n async onInit(bus) {\n // Setup handlers\n }\n});\n\\`\\`\\`\n\n## Solving GitHub Issue #25: \"chrome is not defined\"\n\n**Issue**: Handler extraction fails during verification when background scripts use \\`createBackground()\\` because it tries to access \\`chrome.*\\` APIs at module load time.\n\n**Root Cause**: \\`createBackground()\\` internally calls \\`createChromeAdapters()\\` which instantiates adapter classes that immediately access \\`chrome.runtime\\`, \\`chrome.storage\\`, etc.\n\n**Solution (Implemented)**:\n1. \\`createBackground()\\` now accepts optional \\`adapters\\` parameter\n2. \\`createContext()\\` now accepts \\`adapters\\` in config\n3. Both pass adapters to \\`getMessageBus()\\`, bypassing Chrome API access\n\n**Verification Setup Pattern**:\n\n\\`\\`\\`typescript\n// specs/verification.config.ts\nimport { defineVerification } from '@fairfox/polly/verify';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Import state (works - no chrome needed)\nimport '../packages/api/src/state.ts';\n\n// Import handlers with mock adapters\nimport { createBackground } from '@fairfox/polly/background';\nconst adapters = createMockAdapters();\n\n// This file sets up handlers for extraction\nimport '../packages/api/src/bus.ts'; // Now works!\n\nexport default defineVerification({\n // ... verification config\n});\n\\`\\`\\`\n\n**Alternative**: Create verification-specific handler registration file:\n\n\\`\\`\\`typescript\n// packages/api/specs/handlers-verify.ts\nimport { createBackground } from '@fairfox/polly/background';\nimport { createMockAdapters } from '@fairfox/polly/test';\nimport { connectionState } from '../src/state';\n\nconst bus = createBackground(createMockAdapters());\n\nbus.on('authenticate', async ({ message, wsId }) => {\n connectionState.value = {\n ...connectionState.value,\n authenticated: true,\n user: { userId: 1, auth0Id: 'auth0|123', handle: 'user' },\n };\n return { type: 'ack', success: true };\n});\n\n// Import this in verification.config.ts instead of runtime bus.ts\n\\`\\`\\`\n\n## Best Practices\n\n1. **Always accept adapters in factory functions** - Makes code testable\n2. **Use mock adapters in tests** - Don't require Chrome runtime for unit tests\n3. **Separate verification handler setup** - Keep runtime and verification concerns separate if needed\n4. **Document adapter requirements** - Help users understand when mocks are needed\n\n## API Consistency\n\nAll context creation functions now follow the adapter pattern:\n- \\`createBackground(adapters?)\\` ✓\n- \\`createContext(context, { adapters?, ... })\\` ✓\n- \\`getMessageBus(context, adapters?)\\` ✓\n- \\`new MessageBus(context, adapters?)\\` ✓\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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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
|
|
66
|
-
"debugId": "
|
|
65
|
+
"mappings": "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",
|
|
66
|
+
"debugId": "20A98BE870D3CEDD64756E2164756E21",
|
|
67
67
|
"names": []
|
|
68
68
|
}
|