(self)
| 540 | self.shared_lsp_context = {} |
| 541 | |
| 542 | async def _init_lsp_servers(self): |
| 543 | framework_file = os.path.join(self.output_dir, 'framework.txt') |
| 544 | if not os.path.exists(framework_file): |
| 545 | logger.info('framework.txt not found, skipping LSP initialization') |
| 546 | return |
| 547 | |
| 548 | with open(framework_file, 'r') as f: |
| 549 | framework = f.read().lower() |
| 550 | |
| 551 | # Detect all languages in the project |
| 552 | detected_languages = set() |
| 553 | |
| 554 | if any(kw in framework for kw in |
| 555 | ['typescript', 'javascript', 'react', 'node', 'npm', 'html']): |
| 556 | detected_languages.add('typescript') |
| 557 | |
| 558 | if any(kw in framework |
| 559 | for kw in ['python', 'django', 'flask', 'fastapi']): |
| 560 | detected_languages.add('python') |
| 561 | |
| 562 | if any(kw in framework |
| 563 | for kw in ['java ', 'java\n', 'spring', 'maven', 'gradle']): |
| 564 | detected_languages.add('java') |
| 565 | |
| 566 | if not detected_languages: |
| 567 | logger.info('No supported languages detected in framework.txt') |
| 568 | return |
| 569 | |
| 570 | logger.info( |
| 571 | f"Initializing LSP servers for languages: {', '.join(detected_languages)}" |
| 572 | ) |
| 573 | |
| 574 | # Initialize LSP server for each detected language |
| 575 | lsp_config = DictConfig({ |
| 576 | 'workspace_dir': self.output_dir, |
| 577 | 'output_dir': self.output_dir |
| 578 | }) |
| 579 | |
| 580 | lsp_servers = {} |
| 581 | for lang in detected_languages: |
| 582 | lsp_server = LSPCodeServer(lsp_config) |
| 583 | await lsp_server.connect() |
| 584 | lsp_servers[lang] = lsp_server |
| 585 | logger.info(f'LSP Code Server created for {lang}') |
| 586 | |
| 587 | for lang, lsp_server in lsp_servers.items(): |
| 588 | logger.info(f'Building LSP index for {lang}...') |
| 589 | await lsp_server.call_tool( |
| 590 | 'lsp_code_server', |
| 591 | tool_name='check_directory', |
| 592 | tool_args={ |
| 593 | 'directory': '', |
| 594 | 'language': lang |
| 595 | }) |
| 596 | logger.info(f'LSP index built for {lang}') |
| 597 | |
| 598 | self.shared_lsp_context['lsp_servers'] = lsp_servers |
| 599 | self.shared_lsp_context['project_languages'] = detected_languages |
no test coverage detected