@vybestack/llxprt-code-tools 0.10.0-nightly.260613.1adad3b34
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/LICENSE +202 -0
- package/README.md +294 -0
- package/dist/.last_build +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.d.ts +29 -0
- package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.js +30 -0
- package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.js.map +1 -0
- package/dist/src/__tests__/fixtures/key-storage-fixtures.d.ts +39 -0
- package/dist/src/__tests__/fixtures/key-storage-fixtures.js +53 -0
- package/dist/src/__tests__/fixtures/key-storage-fixtures.js.map +1 -0
- package/dist/src/__tests__/fixtures/provider-formatting-fixtures.d.ts +140 -0
- package/dist/src/__tests__/fixtures/provider-formatting-fixtures.js +157 -0
- package/dist/src/__tests__/fixtures/provider-formatting-fixtures.js.map +1 -0
- package/dist/src/__tests__/red-test-helpers.d.ts +14 -0
- package/dist/src/__tests__/red-test-helpers.js +18 -0
- package/dist/src/__tests__/red-test-helpers.js.map +1 -0
- package/dist/src/formatters/IToolFormatter.d.ts +84 -0
- package/dist/src/formatters/IToolFormatter.js +6 -0
- package/dist/src/formatters/IToolFormatter.js.map +1 -0
- package/dist/src/formatters/ToolFormatter.d.ts +94 -0
- package/dist/src/formatters/ToolFormatter.js +379 -0
- package/dist/src/formatters/ToolFormatter.js.map +1 -0
- package/dist/src/formatters/ToolIdStrategy.d.ts +79 -0
- package/dist/src/formatters/ToolIdStrategy.js +173 -0
- package/dist/src/formatters/ToolIdStrategy.js.map +1 -0
- package/dist/src/formatters/doubleEscapeUtils.d.ts +46 -0
- package/dist/src/formatters/doubleEscapeUtils.js +223 -0
- package/dist/src/formatters/doubleEscapeUtils.js.map +1 -0
- package/dist/src/formatters/index.d.ts +21 -0
- package/dist/src/formatters/index.js +12 -0
- package/dist/src/formatters/index.js.map +1 -0
- package/dist/src/formatters/toolIdNormalization.d.ts +28 -0
- package/dist/src/formatters/toolIdNormalization.js +97 -0
- package/dist/src/formatters/toolIdNormalization.js.map +1 -0
- package/dist/src/formatters/toolNameUtils.d.ts +43 -0
- package/dist/src/formatters/toolNameUtils.js +143 -0
- package/dist/src/formatters/toolNameUtils.js.map +1 -0
- package/dist/src/index.d.ts +88 -0
- package/dist/src/index.js +68 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces/IAsyncTaskService.d.ts +57 -0
- package/dist/src/interfaces/IAsyncTaskService.js +6 -0
- package/dist/src/interfaces/IAsyncTaskService.js.map +1 -0
- package/dist/src/interfaces/IIdeService.d.ts +62 -0
- package/dist/src/interfaces/IIdeService.js +6 -0
- package/dist/src/interfaces/IIdeService.js.map +1 -0
- package/dist/src/interfaces/ILspService.d.ts +54 -0
- package/dist/src/interfaces/ILspService.js +6 -0
- package/dist/src/interfaces/ILspService.js.map +1 -0
- package/dist/src/interfaces/IMcpToolService.d.ts +47 -0
- package/dist/src/interfaces/IMcpToolService.js +6 -0
- package/dist/src/interfaces/IMcpToolService.js.map +1 -0
- package/dist/src/interfaces/IPromptRegistryService.d.ts +51 -0
- package/dist/src/interfaces/IPromptRegistryService.js +6 -0
- package/dist/src/interfaces/IPromptRegistryService.js.map +1 -0
- package/dist/src/interfaces/ISettingsService.d.ts +50 -0
- package/dist/src/interfaces/ISettingsService.js +6 -0
- package/dist/src/interfaces/ISettingsService.js.map +1 -0
- package/dist/src/interfaces/IShellExecutionService.d.ts +55 -0
- package/dist/src/interfaces/IShellExecutionService.js +6 -0
- package/dist/src/interfaces/IShellExecutionService.js.map +1 -0
- package/dist/src/interfaces/IShellToolHost.d.ts +176 -0
- package/dist/src/interfaces/IShellToolHost.js +6 -0
- package/dist/src/interfaces/IShellToolHost.js.map +1 -0
- package/dist/src/interfaces/ISkillService.d.ts +69 -0
- package/dist/src/interfaces/ISkillService.js +6 -0
- package/dist/src/interfaces/ISkillService.js.map +1 -0
- package/dist/src/interfaces/IStorageService.d.ts +42 -0
- package/dist/src/interfaces/IStorageService.js +6 -0
- package/dist/src/interfaces/IStorageService.js.map +1 -0
- package/dist/src/interfaces/ISubagentService.d.ts +112 -0
- package/dist/src/interfaces/ISubagentService.js +6 -0
- package/dist/src/interfaces/ISubagentService.js.map +1 -0
- package/dist/src/interfaces/ITaskToolHost.d.ts +185 -0
- package/dist/src/interfaces/ITaskToolHost.js +6 -0
- package/dist/src/interfaces/ITaskToolHost.js.map +1 -0
- package/dist/src/interfaces/ITodoService.d.ts +79 -0
- package/dist/src/interfaces/ITodoService.js +6 -0
- package/dist/src/interfaces/ITodoService.js.map +1 -0
- package/dist/src/interfaces/IToolHost.d.ts +91 -0
- package/dist/src/interfaces/IToolHost.js +6 -0
- package/dist/src/interfaces/IToolHost.js.map +1 -0
- package/dist/src/interfaces/IToolKeyStorage.d.ts +62 -0
- package/dist/src/interfaces/IToolKeyStorage.js +6 -0
- package/dist/src/interfaces/IToolKeyStorage.js.map +1 -0
- package/dist/src/interfaces/IToolMessageBus.d.ts +63 -0
- package/dist/src/interfaces/IToolMessageBus.js +6 -0
- package/dist/src/interfaces/IToolMessageBus.js.map +1 -0
- package/dist/src/interfaces/IToolRegistryHost.d.ts +43 -0
- package/dist/src/interfaces/IToolRegistryHost.js +6 -0
- package/dist/src/interfaces/IToolRegistryHost.js.map +1 -0
- package/dist/src/interfaces/IWebSearchService.d.ts +16 -0
- package/dist/src/interfaces/IWebSearchService.js +7 -0
- package/dist/src/interfaces/IWebSearchService.js.map +1 -0
- package/dist/src/interfaces/index.d.ts +33 -0
- package/dist/src/interfaces/index.js +6 -0
- package/dist/src/interfaces/index.js.map +1 -0
- package/dist/src/tools/activate-skill.d.ts +26 -0
- package/dist/src/tools/activate-skill.js +121 -0
- package/dist/src/tools/activate-skill.js.map +1 -0
- package/dist/src/tools/apply-patch.d.ts +65 -0
- package/dist/src/tools/apply-patch.js +528 -0
- package/dist/src/tools/apply-patch.js.map +1 -0
- package/dist/src/tools/ast-edit/ast-config.d.ts +67 -0
- package/dist/src/tools/ast-edit/ast-config.js +72 -0
- package/dist/src/tools/ast-edit/ast-config.js.map +1 -0
- package/dist/src/tools/ast-edit/ast-edit-invocation.d.ts +40 -0
- package/dist/src/tools/ast-edit/ast-edit-invocation.js +410 -0
- package/dist/src/tools/ast-edit/ast-edit-invocation.js.map +1 -0
- package/dist/src/tools/ast-edit/ast-query-extractor.d.ts +21 -0
- package/dist/src/tools/ast-edit/ast-query-extractor.js +178 -0
- package/dist/src/tools/ast-edit/ast-query-extractor.js.map +1 -0
- package/dist/src/tools/ast-edit/ast-read-file-invocation.d.ts +26 -0
- package/dist/src/tools/ast-edit/ast-read-file-invocation.js +149 -0
- package/dist/src/tools/ast-edit/ast-read-file-invocation.js.map +1 -0
- package/dist/src/tools/ast-edit/constants.d.ts +30 -0
- package/dist/src/tools/ast-edit/constants.js +36 -0
- package/dist/src/tools/ast-edit/constants.js.map +1 -0
- package/dist/src/tools/ast-edit/context-collector.d.ts +25 -0
- package/dist/src/tools/ast-edit/context-collector.js +115 -0
- package/dist/src/tools/ast-edit/context-collector.js.map +1 -0
- package/dist/src/tools/ast-edit/context-optimizer.d.ts +29 -0
- package/dist/src/tools/ast-edit/context-optimizer.js +86 -0
- package/dist/src/tools/ast-edit/context-optimizer.js.map +1 -0
- package/dist/src/tools/ast-edit/cross-file-analyzer.d.ts +41 -0
- package/dist/src/tools/ast-edit/cross-file-analyzer.js +294 -0
- package/dist/src/tools/ast-edit/cross-file-analyzer.js.map +1 -0
- package/dist/src/tools/ast-edit/edit-calculator.d.ts +71 -0
- package/dist/src/tools/ast-edit/edit-calculator.js +249 -0
- package/dist/src/tools/ast-edit/edit-calculator.js.map +1 -0
- package/dist/src/tools/ast-edit/edit-helpers.d.ts +22 -0
- package/dist/src/tools/ast-edit/edit-helpers.js +36 -0
- package/dist/src/tools/ast-edit/edit-helpers.js.map +1 -0
- package/dist/src/tools/ast-edit/language-analysis.d.ts +19 -0
- package/dist/src/tools/ast-edit/language-analysis.js +123 -0
- package/dist/src/tools/ast-edit/language-analysis.js.map +1 -0
- package/dist/src/tools/ast-edit/local-context-analyzer.d.ts +84 -0
- package/dist/src/tools/ast-edit/local-context-analyzer.js +267 -0
- package/dist/src/tools/ast-edit/local-context-analyzer.js.map +1 -0
- package/dist/src/tools/ast-edit/repository-context-provider.d.ts +22 -0
- package/dist/src/tools/ast-edit/repository-context-provider.js +139 -0
- package/dist/src/tools/ast-edit/repository-context-provider.js.map +1 -0
- package/dist/src/tools/ast-edit/types.d.ts +155 -0
- package/dist/src/tools/ast-edit/types.js +7 -0
- package/dist/src/tools/ast-edit/types.js.map +1 -0
- package/dist/src/tools/ast-edit/workspace-context-provider.d.ts +22 -0
- package/dist/src/tools/ast-edit/workspace-context-provider.js +39 -0
- package/dist/src/tools/ast-edit/workspace-context-provider.js.map +1 -0
- package/dist/src/tools/ast-edit.d.ts +43 -0
- package/dist/src/tools/ast-edit.js +183 -0
- package/dist/src/tools/ast-edit.js.map +1 -0
- package/dist/src/tools/ast-grep.d.ts +22 -0
- package/dist/src/tools/ast-grep.js +291 -0
- package/dist/src/tools/ast-grep.js.map +1 -0
- package/dist/src/tools/check-async-tasks.d.ts +46 -0
- package/dist/src/tools/check-async-tasks.js +241 -0
- package/dist/src/tools/check-async-tasks.js.map +1 -0
- package/dist/src/tools/codesearch.d.ts +25 -0
- package/dist/src/tools/codesearch.js +153 -0
- package/dist/src/tools/codesearch.js.map +1 -0
- package/dist/src/tools/delete_line_range.d.ts +41 -0
- package/dist/src/tools/delete_line_range.js +238 -0
- package/dist/src/tools/delete_line_range.js.map +1 -0
- package/dist/src/tools/direct-web-fetch.d.ts +22 -0
- package/dist/src/tools/direct-web-fetch.js +215 -0
- package/dist/src/tools/direct-web-fetch.js.map +1 -0
- package/dist/src/tools/edit-utils.d.ts +53 -0
- package/dist/src/tools/edit-utils.js +250 -0
- package/dist/src/tools/edit-utils.js.map +1 -0
- package/dist/src/tools/edit.d.ts +70 -0
- package/dist/src/tools/edit.js +816 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/exa-web-search.d.ts +27 -0
- package/dist/src/tools/exa-web-search.js +153 -0
- package/dist/src/tools/exa-web-search.js.map +1 -0
- package/dist/src/tools/glob.d.ts +55 -0
- package/dist/src/tools/glob.js +284 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/google-web-fetch.d.ts +34 -0
- package/dist/src/tools/google-web-fetch.js +417 -0
- package/dist/src/tools/google-web-fetch.js.map +1 -0
- package/dist/src/tools/google-web-search-invocation.d.ts +53 -0
- package/dist/src/tools/google-web-search-invocation.js +180 -0
- package/dist/src/tools/google-web-search-invocation.js.map +1 -0
- package/dist/src/tools/google-web-search.d.ts +16 -0
- package/dist/src/tools/google-web-search.js +34 -0
- package/dist/src/tools/google-web-search.js.map +1 -0
- package/dist/src/tools/grep.d.ts +56 -0
- package/dist/src/tools/grep.js +883 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/insert_at_line.d.ts +41 -0
- package/dist/src/tools/insert_at_line.js +287 -0
- package/dist/src/tools/insert_at_line.js.map +1 -0
- package/dist/src/tools/list-subagents.d.ts +31 -0
- package/dist/src/tools/list-subagents.js +122 -0
- package/dist/src/tools/list-subagents.js.map +1 -0
- package/dist/src/tools/ls.d.ts +71 -0
- package/dist/src/tools/ls.js +238 -0
- package/dist/src/tools/ls.js.map +1 -0
- package/dist/src/tools/memoryTool.d.ts +66 -0
- package/dist/src/tools/memoryTool.js +435 -0
- package/dist/src/tools/memoryTool.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +37 -0
- package/dist/src/tools/modifiable-tool.js +120 -0
- package/dist/src/tools/modifiable-tool.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +49 -0
- package/dist/src/tools/read-file.js +279 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/read-many-files.d.ts +60 -0
- package/dist/src/tools/read-many-files.js +529 -0
- package/dist/src/tools/read-many-files.js.map +1 -0
- package/dist/src/tools/read_line_range.d.ts +47 -0
- package/dist/src/tools/read_line_range.js +248 -0
- package/dist/src/tools/read_line_range.js.map +1 -0
- package/dist/src/tools/ripGrep.d.ts +41 -0
- package/dist/src/tools/ripGrep.js +395 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/shell.d.ts +60 -0
- package/dist/src/tools/shell.js +735 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/structural-analysis.d.ts +27 -0
- package/dist/src/tools/structural-analysis.js +1089 -0
- package/dist/src/tools/structural-analysis.js.map +1 -0
- package/dist/src/tools/stubs.d.ts +10 -0
- package/dist/src/tools/stubs.js +6 -0
- package/dist/src/tools/stubs.js.map +1 -0
- package/dist/src/tools/task.d.ts +41 -0
- package/dist/src/tools/task.js +195 -0
- package/dist/src/tools/task.js.map +1 -0
- package/dist/src/tools/todo-events.d.ts +22 -0
- package/dist/src/tools/todo-events.js +24 -0
- package/dist/src/tools/todo-events.js.map +1 -0
- package/dist/src/tools/todo-pause.d.ts +29 -0
- package/dist/src/tools/todo-pause.js +172 -0
- package/dist/src/tools/todo-pause.js.map +1 -0
- package/dist/src/tools/todo-read.d.ts +18 -0
- package/dist/src/tools/todo-read.js +98 -0
- package/dist/src/tools/todo-read.js.map +1 -0
- package/dist/src/tools/todo-store.d.ts +35 -0
- package/dist/src/tools/todo-store.js +124 -0
- package/dist/src/tools/todo-store.js.map +1 -0
- package/dist/src/tools/todo-write.d.ts +29 -0
- package/dist/src/tools/todo-write.js +366 -0
- package/dist/src/tools/todo-write.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +156 -0
- package/dist/src/tools/tool-registry.js +623 -0
- package/dist/src/tools/tool-registry.js.map +1 -0
- package/dist/src/tools/tools.d.ts +403 -0
- package/dist/src/tools/tools.js +519 -0
- package/dist/src/tools/tools.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +45 -0
- package/dist/src/tools/write-file.js +320 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/types/index.d.ts +17 -0
- package/dist/src/types/index.js +9 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/provider-content-types.d.ts +56 -0
- package/dist/src/types/provider-content-types.js +6 -0
- package/dist/src/types/provider-content-types.js.map +1 -0
- package/dist/src/types/todo-schemas.d.ts +263 -0
- package/dist/src/types/todo-schemas.js +32 -0
- package/dist/src/types/todo-schemas.js.map +1 -0
- package/dist/src/types/tool-confirmation-types.d.ts +34 -0
- package/dist/src/types/tool-confirmation-types.js +29 -0
- package/dist/src/types/tool-confirmation-types.js.map +1 -0
- package/dist/src/types/tool-context.d.ts +31 -0
- package/dist/src/types/tool-context.js +6 -0
- package/dist/src/types/tool-context.js.map +1 -0
- package/dist/src/types/tool-error.d.ts +69 -0
- package/dist/src/types/tool-error.js +94 -0
- package/dist/src/types/tool-error.js.map +1 -0
- package/dist/src/types/tool-names.d.ts +57 -0
- package/dist/src/types/tool-names.js +64 -0
- package/dist/src/types/tool-names.js.map +1 -0
- package/dist/src/utils/EmojiFilter.d.ts +134 -0
- package/dist/src/utils/EmojiFilter.js +370 -0
- package/dist/src/utils/EmojiFilter.js.map +1 -0
- package/dist/src/utils/ast-grep-utils.d.ts +42 -0
- package/dist/src/utils/ast-grep-utils.js +140 -0
- package/dist/src/utils/ast-grep-utils.js.map +1 -0
- package/dist/src/utils/debugLogger.d.ts +11 -0
- package/dist/src/utils/debugLogger.js +16 -0
- package/dist/src/utils/debugLogger.js.map +1 -0
- package/dist/src/utils/diffOptions.d.ts +14 -0
- package/dist/src/utils/diffOptions.js +46 -0
- package/dist/src/utils/diffOptions.js.map +1 -0
- package/dist/src/utils/editor.d.ts +39 -0
- package/dist/src/utils/editor.js +212 -0
- package/dist/src/utils/editor.js.map +1 -0
- package/dist/src/utils/ensure-dirs.d.ts +10 -0
- package/dist/src/utils/ensure-dirs.js +16 -0
- package/dist/src/utils/ensure-dirs.js.map +1 -0
- package/dist/src/utils/errors.d.ts +59 -0
- package/dist/src/utils/errors.js +178 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +11 -0
- package/dist/src/utils/fetch.js +74 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +32 -0
- package/dist/src/utils/fileUtils.js +363 -0
- package/dist/src/utils/fileUtils.js.map +1 -0
- package/dist/src/utils/fuzzy-replacer.d.ts +61 -0
- package/dist/src/utils/fuzzy-replacer.js +492 -0
- package/dist/src/utils/fuzzy-replacer.js.map +1 -0
- package/dist/src/utils/gitLineChanges.d.ts +12 -0
- package/dist/src/utils/gitLineChanges.js +171 -0
- package/dist/src/utils/gitLineChanges.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +6 -0
- package/dist/src/utils/gitUtils.js +31 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/lsp-diagnostics-helper.d.ts +27 -0
- package/dist/src/utils/lsp-diagnostics-helper.js +62 -0
- package/dist/src/utils/lsp-diagnostics-helper.js.map +1 -0
- package/dist/src/utils/mediaUtils.d.ts +38 -0
- package/dist/src/utils/mediaUtils.js +22 -0
- package/dist/src/utils/mediaUtils.js.map +1 -0
- package/dist/src/utils/pathValidation.d.ts +7 -0
- package/dist/src/utils/pathValidation.js +39 -0
- package/dist/src/utils/pathValidation.js.map +1 -0
- package/dist/src/utils/paths.d.ts +7 -0
- package/dist/src/utils/paths.js +158 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/resolveTextSearchTarget.d.ts +17 -0
- package/dist/src/utils/resolveTextSearchTarget.js +45 -0
- package/dist/src/utils/resolveTextSearchTarget.js.map +1 -0
- package/dist/src/utils/retry.d.ts +17 -0
- package/dist/src/utils/retry.js +185 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/ripgrepPathResolver.d.ts +23 -0
- package/dist/src/utils/ripgrepPathResolver.js +179 -0
- package/dist/src/utils/ripgrepPathResolver.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.d.ts +9 -0
- package/dist/src/utils/safeJsonStringify.js +21 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -0
- package/dist/src/utils/schemaValidator.d.ts +13 -0
- package/dist/src/utils/schemaValidator.js +275 -0
- package/dist/src/utils/schemaValidator.js.map +1 -0
- package/dist/src/utils/terminalSerializer.d.ts +33 -0
- package/dist/src/utils/terminalSerializer.js +6 -0
- package/dist/src/utils/terminalSerializer.js.map +1 -0
- package/dist/src/utils/todoContextTracker.d.ts +12 -0
- package/dist/src/utils/todoContextTracker.js +28 -0
- package/dist/src/utils/todoContextTracker.js.map +1 -0
- package/dist/src/utils/todoFormatter.d.ts +24 -0
- package/dist/src/utils/todoFormatter.js +157 -0
- package/dist/src/utils/todoFormatter.js.map +1 -0
- package/dist/src/utils/todoReminderService.d.ts +22 -0
- package/dist/src/utils/todoReminderService.js +43 -0
- package/dist/src/utils/todoReminderService.js.map +1 -0
- package/dist/src/utils/tool-key-storage-facade.d.ts +32 -0
- package/dist/src/utils/tool-key-storage-facade.js +56 -0
- package/dist/src/utils/tool-key-storage-facade.js.map +1 -0
- package/dist/src/utils/tool-key-storage-types.d.ts +56 -0
- package/dist/src/utils/tool-key-storage-types.js +56 -0
- package/dist/src/utils/tool-key-storage-types.js.map +1 -0
- package/dist/src/utils/toolOutputLimiter.d.ts +29 -0
- package/dist/src/utils/toolOutputLimiter.js +107 -0
- package/dist/src/utils/toolOutputLimiter.js.map +1 -0
- package/dist/src/utils/unicodeUtils.d.ts +55 -0
- package/dist/src/utils/unicodeUtils.js +129 -0
- package/dist/src/utils/unicodeUtils.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Internal configuration for AST analysis tools.
|
|
8
|
+
* Contains constants and feature flags for context collection, performance optimization, and language support.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ASTConfig {
|
|
11
|
+
static readonly CONTEXT_DEPTH = 5;
|
|
12
|
+
static readonly MAX_SNIPPETS = 10;
|
|
13
|
+
static readonly ENABLE_AST_PARSING = true;
|
|
14
|
+
static readonly DEFAULT_DRY_RUN = true;
|
|
15
|
+
static readonly MAX_SNIPPET_CHARS = 1000;
|
|
16
|
+
static readonly CHUNK_SIZE = 500;
|
|
17
|
+
static readonly SNIPPET_TRUNCATE_LENGTH = 200;
|
|
18
|
+
/**
|
|
19
|
+
* Whether to build a full in-memory symbol index.
|
|
20
|
+
* [CCR] Reason: Disabled by default to prevent memory leaks and CLI crashes in large repos.
|
|
21
|
+
* Can be overridden via environment variable: LLXPRT_ENABLE_SYMBOL_INDEXING=true
|
|
22
|
+
*/
|
|
23
|
+
static get ENABLE_SYMBOL_INDEXING(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum symbols to query across the workspace per file.
|
|
26
|
+
*/
|
|
27
|
+
static readonly MAX_RELATED_SYMBOLS = 5;
|
|
28
|
+
/**
|
|
29
|
+
* Maximum results to return per symbol query.
|
|
30
|
+
*/
|
|
31
|
+
static readonly MAX_RESULTS_PER_SYMBOL = 10;
|
|
32
|
+
/**
|
|
33
|
+
* Timeout for a single symbol relationship lookup.
|
|
34
|
+
*/
|
|
35
|
+
static readonly FIND_RELATED_TIMEOUT_MS = 3000;
|
|
36
|
+
/**
|
|
37
|
+
* Minimum length for a symbol to be considered for cross-file lookup.
|
|
38
|
+
*/
|
|
39
|
+
static readonly MIN_SYMBOL_LENGTH = 3;
|
|
40
|
+
/**
|
|
41
|
+
* Maximum workspace files to scan. Abort if exceeded to prevent OOM.
|
|
42
|
+
* [CCR] Reason: Safeguard against memory exhaustion in very large monorepos.
|
|
43
|
+
*/
|
|
44
|
+
static readonly MAX_WORKSPACE_FILES = 10000;
|
|
45
|
+
/**
|
|
46
|
+
* Maximum display results for related symbols in output.
|
|
47
|
+
*/
|
|
48
|
+
static readonly MAX_DISPLAY_RESULTS = 5;
|
|
49
|
+
static readonly SUPPORTED_LANGUAGES: {
|
|
50
|
+
ts: string;
|
|
51
|
+
js: string;
|
|
52
|
+
jsx: string;
|
|
53
|
+
tsx: string;
|
|
54
|
+
py: string;
|
|
55
|
+
rb: string;
|
|
56
|
+
go: string;
|
|
57
|
+
rs: string;
|
|
58
|
+
java: string;
|
|
59
|
+
cpp: string;
|
|
60
|
+
c: string;
|
|
61
|
+
html: string;
|
|
62
|
+
css: string;
|
|
63
|
+
json: string;
|
|
64
|
+
yaml: string;
|
|
65
|
+
yml: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import process from 'node:process';
|
|
7
|
+
/**
|
|
8
|
+
* Internal configuration for AST analysis tools.
|
|
9
|
+
* Contains constants and feature flags for context collection, performance optimization, and language support.
|
|
10
|
+
*/
|
|
11
|
+
export class ASTConfig {
|
|
12
|
+
static CONTEXT_DEPTH = 5;
|
|
13
|
+
static MAX_SNIPPETS = 10;
|
|
14
|
+
static ENABLE_AST_PARSING = true;
|
|
15
|
+
static DEFAULT_DRY_RUN = true;
|
|
16
|
+
static MAX_SNIPPET_CHARS = 1000; // Increased budget
|
|
17
|
+
static CHUNK_SIZE = 500;
|
|
18
|
+
static SNIPPET_TRUNCATE_LENGTH = 200;
|
|
19
|
+
// Section: Performance Optimization Constants
|
|
20
|
+
/**
|
|
21
|
+
* Whether to build a full in-memory symbol index.
|
|
22
|
+
* [CCR] Reason: Disabled by default to prevent memory leaks and CLI crashes in large repos.
|
|
23
|
+
* Can be overridden via environment variable: LLXPRT_ENABLE_SYMBOL_INDEXING=true
|
|
24
|
+
*/
|
|
25
|
+
static get ENABLE_SYMBOL_INDEXING() {
|
|
26
|
+
return process.env.LLXPRT_ENABLE_SYMBOL_INDEXING === 'true';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Maximum symbols to query across the workspace per file.
|
|
30
|
+
*/
|
|
31
|
+
static MAX_RELATED_SYMBOLS = 5;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum results to return per symbol query.
|
|
34
|
+
*/
|
|
35
|
+
static MAX_RESULTS_PER_SYMBOL = 10;
|
|
36
|
+
/**
|
|
37
|
+
* Timeout for a single symbol relationship lookup.
|
|
38
|
+
*/
|
|
39
|
+
static FIND_RELATED_TIMEOUT_MS = 3000;
|
|
40
|
+
/**
|
|
41
|
+
* Minimum length for a symbol to be considered for cross-file lookup.
|
|
42
|
+
*/
|
|
43
|
+
static MIN_SYMBOL_LENGTH = 3;
|
|
44
|
+
/**
|
|
45
|
+
* Maximum workspace files to scan. Abort if exceeded to prevent OOM.
|
|
46
|
+
* [CCR] Reason: Safeguard against memory exhaustion in very large monorepos.
|
|
47
|
+
*/
|
|
48
|
+
static MAX_WORKSPACE_FILES = 10000;
|
|
49
|
+
/**
|
|
50
|
+
* Maximum display results for related symbols in output.
|
|
51
|
+
*/
|
|
52
|
+
static MAX_DISPLAY_RESULTS = 5;
|
|
53
|
+
static SUPPORTED_LANGUAGES = {
|
|
54
|
+
ts: 'typescript',
|
|
55
|
+
js: 'javascript',
|
|
56
|
+
jsx: 'javascript',
|
|
57
|
+
tsx: 'typescript',
|
|
58
|
+
py: 'python',
|
|
59
|
+
rb: 'ruby',
|
|
60
|
+
go: 'go',
|
|
61
|
+
rs: 'rust',
|
|
62
|
+
java: 'java',
|
|
63
|
+
cpp: 'cpp',
|
|
64
|
+
c: 'c',
|
|
65
|
+
html: 'html',
|
|
66
|
+
css: 'css',
|
|
67
|
+
json: 'json',
|
|
68
|
+
yaml: 'yaml',
|
|
69
|
+
yml: 'yaml',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=ast-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-config.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;GAGG;AACH,MAAM,OAAO,SAAS;IACpB,MAAM,CAAU,aAAa,GAAG,CAAC,CAAC;IAClC,MAAM,CAAU,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,CAAU,kBAAkB,GAAG,IAAI,CAAC;IAC1C,MAAM,CAAU,eAAe,GAAG,IAAI,CAAC;IACvC,MAAM,CAAU,iBAAiB,GAAG,IAAI,CAAC,CAAC,mBAAmB;IAC7D,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IACjC,MAAM,CAAU,uBAAuB,GAAG,GAAG,CAAC;IAE9C,8CAA8C;IAC9C;;;;OAIG;IACH,MAAM,KAAK,sBAAsB;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,MAAM,CAAC;IAC9D,CAAC;IACD;;OAEG;IACH,MAAM,CAAU,mBAAmB,GAAG,CAAC,CAAC;IACxC;;OAEG;IACH,MAAM,CAAU,sBAAsB,GAAG,EAAE,CAAC;IAC5C;;OAEG;IACH,MAAM,CAAU,uBAAuB,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,MAAM,CAAU,iBAAiB,GAAG,CAAC,CAAC;IACtC;;;OAGG;IACH,MAAM,CAAU,mBAAmB,GAAG,KAAK,CAAC;IAC5C;;OAEG;IACH,MAAM,CAAU,mBAAmB,GAAG,CAAC,CAAC;IAExC,MAAM,CAAU,mBAAmB,GAAG;QACpC,EAAE,EAAE,YAAY;QAChB,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;KACZ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* AST Edit Tool Invocation - Handles execution of edit operations
|
|
7
|
+
*/
|
|
8
|
+
import type { ToolCallConfirmationDetails, ToolInvocation, ToolLocation } from '../tools.js';
|
|
9
|
+
import { type ToolResult } from '../tools.js';
|
|
10
|
+
import type { IToolHost, ILspService } from '../../interfaces/index.js';
|
|
11
|
+
import type { AnsiOutput } from '../../utils/terminalSerializer.js';
|
|
12
|
+
import type { ASTEditToolParams } from './types.js';
|
|
13
|
+
import type { ASTContextCollector } from './context-collector.js';
|
|
14
|
+
import { type CalculatedEdit } from './edit-calculator.js';
|
|
15
|
+
export declare class ASTEditToolInvocation implements ToolInvocation<ASTEditToolParams, ToolResult> {
|
|
16
|
+
private readonly host;
|
|
17
|
+
params: ASTEditToolParams;
|
|
18
|
+
private readonly contextCollector;
|
|
19
|
+
private readonly lspService?;
|
|
20
|
+
constructor(host: IToolHost, params: ASTEditToolParams, contextCollector: ASTContextCollector, lspService?: ILspService | undefined);
|
|
21
|
+
toolLocations(): ToolLocation[];
|
|
22
|
+
shouldConfirmExecute(abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
23
|
+
getDescription(): string;
|
|
24
|
+
execute(signal: AbortSignal, _updateOutput?: (output: string | AnsiOutput) => void, _terminalColumns?: number, _terminalRows?: number, _setPidCallback?: (pid: number) => void): Promise<ToolResult>;
|
|
25
|
+
private executePreview;
|
|
26
|
+
private detectNewFile;
|
|
27
|
+
private checkFreshness;
|
|
28
|
+
private buildPreviewLlmContent;
|
|
29
|
+
private formatConnectedFilesContext;
|
|
30
|
+
private formatRelatedSymbols;
|
|
31
|
+
private executeApply;
|
|
32
|
+
private writeEditResult;
|
|
33
|
+
private appendLspDiagnostics;
|
|
34
|
+
private getEffectiveLspService;
|
|
35
|
+
private normalizeLegacyDiagnostic;
|
|
36
|
+
protected calculateEdit(params: ASTEditToolParams, abortSignal: AbortSignal): Promise<CalculatedEdit>;
|
|
37
|
+
private readFileContent;
|
|
38
|
+
private validateASTSyntax;
|
|
39
|
+
protected getFileLastModified(filePath: string): Promise<number | null>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* AST Edit Tool Invocation - Handles execution of edit operations
|
|
7
|
+
*/
|
|
8
|
+
/* eslint-disable complexity, sonarjs/cognitive-complexity -- Phase 5: legacy core boundary retained while larger decomposition continues. */
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { promises as fsPromises } from 'fs';
|
|
11
|
+
import * as Diff from 'diff';
|
|
12
|
+
import { ToolConfirmationOutcome, } from '../tools.js';
|
|
13
|
+
import { ToolErrorType } from '../../types/tool-error.js';
|
|
14
|
+
import { makeRelative, shortenPath } from '../../utils/paths.js';
|
|
15
|
+
import { isNodeError } from '../../utils/errors.js';
|
|
16
|
+
import { DEFAULT_CREATE_PATCH_OPTIONS } from '../../utils/diffOptions.js';
|
|
17
|
+
import { collectLspDiagnosticsBlock } from '../../utils/lsp-diagnostics-helper.js';
|
|
18
|
+
import { ensureParentDirectoriesExist } from '../../utils/ensure-dirs.js';
|
|
19
|
+
import { ASTConfig } from './ast-config.js';
|
|
20
|
+
import { applyReplacement } from './edit-helpers.js';
|
|
21
|
+
import { calculateEdit, validateASTSyntax, getFileLastModified, } from './edit-calculator.js';
|
|
22
|
+
export class ASTEditToolInvocation {
|
|
23
|
+
host;
|
|
24
|
+
params;
|
|
25
|
+
contextCollector;
|
|
26
|
+
lspService;
|
|
27
|
+
constructor(host, params, contextCollector, lspService) {
|
|
28
|
+
this.host = host;
|
|
29
|
+
this.params = params;
|
|
30
|
+
this.contextCollector = contextCollector;
|
|
31
|
+
this.lspService = lspService;
|
|
32
|
+
}
|
|
33
|
+
toolLocations() {
|
|
34
|
+
return [{ path: this.params.file_path }];
|
|
35
|
+
}
|
|
36
|
+
async shouldConfirmExecute(abortSignal) {
|
|
37
|
+
// For preview mode, return false to let execute method handle it
|
|
38
|
+
if (this.params.force !== true) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// For execution mode, check if confirmation is needed
|
|
42
|
+
const approvalMode = this.host.getApprovalMode();
|
|
43
|
+
if (approvalMode === 'auto' ||
|
|
44
|
+
approvalMode === 'autoEdit' ||
|
|
45
|
+
approvalMode === 'yolo') {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// Confirmation logic for execution mode
|
|
49
|
+
const editData = await this.calculateEdit(this.params, abortSignal);
|
|
50
|
+
if (editData.error) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const fileName = path.basename(this.params.file_path);
|
|
54
|
+
const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', editData.newContent, 'Current', 'Proposed', DEFAULT_CREATE_PATCH_OPTIONS);
|
|
55
|
+
const confirmationDetails = {
|
|
56
|
+
type: 'edit',
|
|
57
|
+
title: `Confirm Edit: ${shortenPath(makeRelative(this.params.file_path, this.host.getTargetDir()))}`,
|
|
58
|
+
fileName,
|
|
59
|
+
filePath: this.params.file_path,
|
|
60
|
+
fileDiff,
|
|
61
|
+
originalContent: editData.currentContent,
|
|
62
|
+
newContent: editData.newContent,
|
|
63
|
+
onConfirm: async (outcome) => {
|
|
64
|
+
if (outcome === ToolConfirmationOutcome.ProceedAlways) {
|
|
65
|
+
this.host.setApprovalMode('autoEdit');
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
metadata: {
|
|
69
|
+
astValidation: editData.astValidation,
|
|
70
|
+
fileFreshness: editData.fileFreshness,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
return confirmationDetails;
|
|
74
|
+
}
|
|
75
|
+
getDescription() {
|
|
76
|
+
const relativePath = makeRelative(this.params.file_path, this.host.getTargetDir());
|
|
77
|
+
if (this.params.old_string === '') {
|
|
78
|
+
return `Create ${shortenPath(relativePath)}`;
|
|
79
|
+
}
|
|
80
|
+
const oldFirstLine = this.params.old_string.split('\n')[0];
|
|
81
|
+
const newFirstLine = this.params.new_string.split('\n')[0];
|
|
82
|
+
const oldStringSnippet = oldFirstLine.substring(0, 30) + (oldFirstLine.length > 30 ? '...' : '');
|
|
83
|
+
const newStringSnippet = newFirstLine.substring(0, 30) + (newFirstLine.length > 30 ? '...' : '');
|
|
84
|
+
if (this.params.old_string === this.params.new_string) {
|
|
85
|
+
return `No file changes to ${shortenPath(relativePath)}`;
|
|
86
|
+
}
|
|
87
|
+
const forceIndicator = this.params.force === true ? ' [EXECUTE] ' : ' [PREVIEW] ';
|
|
88
|
+
return `${forceIndicator}${shortenPath(relativePath)}: ${oldStringSnippet} => ${newStringSnippet}`;
|
|
89
|
+
}
|
|
90
|
+
async execute(signal, _updateOutput, _terminalColumns, _terminalRows, _setPidCallback) {
|
|
91
|
+
// Step 1: Preview mode (force: false or unset)
|
|
92
|
+
if (this.params.force !== true) {
|
|
93
|
+
return this.executePreview(signal);
|
|
94
|
+
}
|
|
95
|
+
// Step 2: Execution mode (force: true)
|
|
96
|
+
return this.executeApply(signal);
|
|
97
|
+
}
|
|
98
|
+
async executePreview(_signal) {
|
|
99
|
+
try {
|
|
100
|
+
const rawCurrentContent = await this.readFileContent();
|
|
101
|
+
const currentContent = rawCurrentContent.replace(/\r\n/g, '\n');
|
|
102
|
+
const currentMtime = await this.getFileLastModified(this.params.file_path);
|
|
103
|
+
const isNewFile = this.detectNewFile(rawCurrentContent, currentMtime);
|
|
104
|
+
const freshnessError = this.checkFreshness(currentMtime);
|
|
105
|
+
if (freshnessError)
|
|
106
|
+
return freshnessError;
|
|
107
|
+
const workspaceRoot = this.host.getTargetDir();
|
|
108
|
+
const enhancedContext = await this.contextCollector.collectEnhancedContext(this.params.file_path, currentContent, workspaceRoot);
|
|
109
|
+
const newContent = applyReplacement(currentContent, this.params.old_string, this.params.new_string, isNewFile);
|
|
110
|
+
const astValidation = this.validateASTSyntax(this.params.file_path, newContent);
|
|
111
|
+
const fileName = path.basename(this.params.file_path);
|
|
112
|
+
const fileDiff = Diff.createPatch(fileName, currentContent, newContent, 'Current', 'Proposed', DEFAULT_CREATE_PATCH_OPTIONS);
|
|
113
|
+
const editPreviewLlmContent = this.buildPreviewLlmContent(enhancedContext, astValidation, currentMtime, workspaceRoot);
|
|
114
|
+
const returnDisplay = {
|
|
115
|
+
fileDiff,
|
|
116
|
+
fileName,
|
|
117
|
+
originalContent: currentContent,
|
|
118
|
+
newContent,
|
|
119
|
+
metadata: { astValidation, currentMtime },
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
llmContent: editPreviewLlmContent,
|
|
123
|
+
returnDisplay,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
128
|
+
return {
|
|
129
|
+
llmContent: `Error preparing preview: ${errorMsg}`,
|
|
130
|
+
returnDisplay: `Error preparing preview: ${errorMsg}`,
|
|
131
|
+
error: {
|
|
132
|
+
message: errorMsg,
|
|
133
|
+
type: ToolErrorType.EDIT_PREPARATION_FAILURE,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
detectNewFile(rawCurrentContent, mtime) {
|
|
139
|
+
if (this.params.old_string === '' && rawCurrentContent === '') {
|
|
140
|
+
return mtime === null;
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
checkFreshness(currentMtime) {
|
|
145
|
+
if (this.params.last_modified !== undefined &&
|
|
146
|
+
currentMtime !== null &&
|
|
147
|
+
currentMtime > this.params.last_modified) {
|
|
148
|
+
const errorMessage = `File ${this.params.file_path} mismatch. Expected mtime <= ${this.params.last_modified}, but found ${currentMtime}.`;
|
|
149
|
+
const displayMessage = `File has been modified since it was last read. Please read the file again to get the latest content.`;
|
|
150
|
+
const rawErrorMessage = JSON.stringify({
|
|
151
|
+
message: errorMessage,
|
|
152
|
+
current_mtime: currentMtime,
|
|
153
|
+
your_mtime: this.params.last_modified,
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
llmContent: rawErrorMessage,
|
|
157
|
+
returnDisplay: `Error: ${displayMessage}`,
|
|
158
|
+
error: {
|
|
159
|
+
message: rawErrorMessage,
|
|
160
|
+
type: ToolErrorType.FILE_MODIFIED_CONFLICT,
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
buildPreviewLlmContent(enhancedContext, astValidation, currentMtime, workspaceRoot) {
|
|
167
|
+
return [
|
|
168
|
+
`LLXPRT EDIT PREVIEW: ${this.params.file_path}`,
|
|
169
|
+
`- Context: ${enhancedContext.language} file with ${enhancedContext.declarations.length} declarations`,
|
|
170
|
+
`- Functions: ${enhancedContext.languageContext.functions.length}`,
|
|
171
|
+
`- Classes: ${enhancedContext.languageContext.classes.length}`,
|
|
172
|
+
`- AST validation: ${astValidation.valid ? 'PASSED' : 'FAILED'}`,
|
|
173
|
+
`- Relevant snippets: ${enhancedContext.relevantSnippets.length} found`,
|
|
174
|
+
enhancedContext.repositoryContext
|
|
175
|
+
? `- Repository: ${enhancedContext.repositoryContext.gitUrl}`
|
|
176
|
+
: '',
|
|
177
|
+
enhancedContext.relatedFiles
|
|
178
|
+
? `- Related files: ${enhancedContext.relatedFiles.length}`
|
|
179
|
+
: '',
|
|
180
|
+
this.formatConnectedFilesContext(enhancedContext, workspaceRoot),
|
|
181
|
+
!astValidation.valid
|
|
182
|
+
? `- AST errors: ${astValidation.errors.join(', ')}`
|
|
183
|
+
: '',
|
|
184
|
+
currentMtime !== null ? `- Timestamp: ${currentMtime}` : '',
|
|
185
|
+
'',
|
|
186
|
+
'ENHANCED CONTEXT ANALYSIS:',
|
|
187
|
+
...enhancedContext.declarations.map((decl) => `- ${decl.type}: ${decl.name} (line ${decl.line})`),
|
|
188
|
+
this.formatRelatedSymbols(enhancedContext),
|
|
189
|
+
'',
|
|
190
|
+
'NEXT STEP: Call again with force: true to apply changes',
|
|
191
|
+
]
|
|
192
|
+
.flat()
|
|
193
|
+
.filter(Boolean)
|
|
194
|
+
.join('\n');
|
|
195
|
+
}
|
|
196
|
+
formatConnectedFilesContext(enhancedContext, workspaceRoot) {
|
|
197
|
+
if (!enhancedContext.connectedFiles ||
|
|
198
|
+
enhancedContext.connectedFiles.length === 0) {
|
|
199
|
+
return [];
|
|
200
|
+
}
|
|
201
|
+
return [
|
|
202
|
+
'',
|
|
203
|
+
'WORKING SET CONTEXT:',
|
|
204
|
+
...enhancedContext.connectedFiles
|
|
205
|
+
.map((file) => {
|
|
206
|
+
const relPath = makeRelative(file.filePath, workspaceRoot);
|
|
207
|
+
if (file.declarations.length === 0)
|
|
208
|
+
return `- ${relPath} (No declarations)`;
|
|
209
|
+
return [
|
|
210
|
+
`- ${relPath}:`,
|
|
211
|
+
...file.declarations.map((d) => ` - ${d.type}: ${d.name}${d.signature ?? ''}`),
|
|
212
|
+
];
|
|
213
|
+
})
|
|
214
|
+
.flat(),
|
|
215
|
+
];
|
|
216
|
+
}
|
|
217
|
+
formatRelatedSymbols(enhancedContext) {
|
|
218
|
+
if (!enhancedContext.relatedSymbols ||
|
|
219
|
+
enhancedContext.relatedSymbols.length === 0) {
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
return [
|
|
223
|
+
'',
|
|
224
|
+
'RELATED SYMBOLS:',
|
|
225
|
+
...enhancedContext.relatedSymbols
|
|
226
|
+
.slice(0, ASTConfig.MAX_DISPLAY_RESULTS)
|
|
227
|
+
.map((symbol) => `- ${symbol.type}: ${symbol.filePath}:${symbol.line}`),
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
async executeApply(signal) {
|
|
231
|
+
let editData;
|
|
232
|
+
try {
|
|
233
|
+
editData = await this.calculateEdit(this.params, signal);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
237
|
+
return {
|
|
238
|
+
llmContent: `Error preparing edit: ${errorMsg}`,
|
|
239
|
+
returnDisplay: `Error preparing edit: ${errorMsg}`,
|
|
240
|
+
error: {
|
|
241
|
+
message: errorMsg,
|
|
242
|
+
type: ToolErrorType.EDIT_PREPARATION_FAILURE,
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
if (editData.error) {
|
|
247
|
+
return {
|
|
248
|
+
llmContent: editData.error.raw,
|
|
249
|
+
returnDisplay: `Error: ${editData.error.display}`,
|
|
250
|
+
error: {
|
|
251
|
+
message: editData.error.raw,
|
|
252
|
+
type: editData.error.type,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return this.writeEditResult(editData);
|
|
257
|
+
}
|
|
258
|
+
async writeEditResult(editData) {
|
|
259
|
+
try {
|
|
260
|
+
await ensureParentDirectoriesExist(this.params.file_path);
|
|
261
|
+
await fsPromises.writeFile(this.params.file_path, editData.newContent, 'utf-8');
|
|
262
|
+
const fileName = path.basename(this.params.file_path);
|
|
263
|
+
const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', editData.newContent, 'Current', 'Applied', DEFAULT_CREATE_PATCH_OPTIONS);
|
|
264
|
+
const displayResult = {
|
|
265
|
+
fileDiff,
|
|
266
|
+
fileName,
|
|
267
|
+
originalContent: editData.currentContent,
|
|
268
|
+
newContent: editData.newContent,
|
|
269
|
+
applied: true,
|
|
270
|
+
metadata: { astValidation: editData.astValidation },
|
|
271
|
+
};
|
|
272
|
+
const llmSuccessMessageParts = [
|
|
273
|
+
`Successfully applied edit to: ${this.params.file_path}`,
|
|
274
|
+
`- Changes: ${editData.occurrences} replacement(s) applied`,
|
|
275
|
+
`- AST validation: ${editData.astValidation?.valid === true ? 'PASSED' : 'FAILED'}`,
|
|
276
|
+
];
|
|
277
|
+
await this.appendLspDiagnostics(llmSuccessMessageParts);
|
|
278
|
+
return {
|
|
279
|
+
llmContent: llmSuccessMessageParts.join('\n\n'),
|
|
280
|
+
returnDisplay: displayResult,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
285
|
+
return {
|
|
286
|
+
llmContent: `Error executing edit: ${errorMsg}`,
|
|
287
|
+
returnDisplay: `Error writing file: ${errorMsg}`,
|
|
288
|
+
error: {
|
|
289
|
+
message: errorMsg,
|
|
290
|
+
type: ToolErrorType.FILE_WRITE_FAILURE,
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// @plan PLAN-20250212-LSP.P31
|
|
296
|
+
// @requirement REQ-DIAG-010
|
|
297
|
+
async appendLspDiagnostics(llmParts) {
|
|
298
|
+
try {
|
|
299
|
+
const lspService = this.getEffectiveLspService();
|
|
300
|
+
if (!lspService) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const diagBlock = await collectLspDiagnosticsBlock(lspService, this.host, this.params.file_path);
|
|
304
|
+
if (diagBlock) {
|
|
305
|
+
llmParts.push(diagBlock);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
// LSP failure must never fail the edit (REQ-GRACE-050, REQ-GRACE-055)
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
getEffectiveLspService() {
|
|
313
|
+
if (this.lspService) {
|
|
314
|
+
return this.lspService;
|
|
315
|
+
}
|
|
316
|
+
const legacyHost = this.host;
|
|
317
|
+
const client = legacyHost.getLspServiceClient?.();
|
|
318
|
+
if (!client || client.isAlive?.() === false) {
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
getDiagnostics: (filePath) => {
|
|
323
|
+
const diagnostics = (client.getDiagnostics?.(filePath) ??
|
|
324
|
+
[]);
|
|
325
|
+
return diagnostics.map((diagnostic) => {
|
|
326
|
+
const value = diagnostic;
|
|
327
|
+
return {
|
|
328
|
+
message: String(value.message ?? ''),
|
|
329
|
+
severity: typeof value.severity === 'number'
|
|
330
|
+
? value.severity === 1
|
|
331
|
+
? 'error'
|
|
332
|
+
: String(value.severity)
|
|
333
|
+
: String(value.severity ?? 'error'),
|
|
334
|
+
line: value.range?.start?.line !== undefined
|
|
335
|
+
? value.range.start.line + 1
|
|
336
|
+
: undefined,
|
|
337
|
+
column: value.range?.start?.character !== undefined
|
|
338
|
+
? value.range.start.character + 1
|
|
339
|
+
: undefined,
|
|
340
|
+
};
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
waitForDiagnostics: async (filePath, timeout) => {
|
|
344
|
+
const checker = client;
|
|
345
|
+
if (checker.checkFile) {
|
|
346
|
+
const controller = new AbortController();
|
|
347
|
+
const timeoutId = timeout
|
|
348
|
+
? setTimeout(() => controller.abort(), timeout)
|
|
349
|
+
: undefined;
|
|
350
|
+
try {
|
|
351
|
+
return (await checker.checkFile(filePath, controller.signal)).map((diagnostic) => this.normalizeLegacyDiagnostic(diagnostic));
|
|
352
|
+
}
|
|
353
|
+
finally {
|
|
354
|
+
if (timeoutId)
|
|
355
|
+
clearTimeout(timeoutId);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return this.getEffectiveLspService().getDiagnostics(filePath);
|
|
359
|
+
},
|
|
360
|
+
getLspConfig: () => legacyHost.getLspConfig?.(),
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
normalizeLegacyDiagnostic(diagnostic) {
|
|
364
|
+
const value = diagnostic;
|
|
365
|
+
return {
|
|
366
|
+
message: String(value.message ?? ''),
|
|
367
|
+
severity: typeof value.severity === 'number'
|
|
368
|
+
? value.severity === 1
|
|
369
|
+
? 'error'
|
|
370
|
+
: String(value.severity)
|
|
371
|
+
: String(value.severity ?? 'error'),
|
|
372
|
+
line: value.line ??
|
|
373
|
+
(value.range?.start?.line !== undefined
|
|
374
|
+
? value.range.start.line + 1
|
|
375
|
+
: undefined),
|
|
376
|
+
column: value.column ??
|
|
377
|
+
(value.range?.start?.character !== undefined
|
|
378
|
+
? value.range.start.character + 1
|
|
379
|
+
: undefined),
|
|
380
|
+
code: typeof value.code === 'string' || typeof value.code === 'number'
|
|
381
|
+
? value.code
|
|
382
|
+
: undefined,
|
|
383
|
+
source: value.source,
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
async calculateEdit(params, abortSignal) {
|
|
387
|
+
return calculateEdit(params, this.host, abortSignal);
|
|
388
|
+
}
|
|
389
|
+
async readFileContent() {
|
|
390
|
+
try {
|
|
391
|
+
const fileSystemService = this.host.getFileSystemService?.();
|
|
392
|
+
return fileSystemService?.readTextFile
|
|
393
|
+
? await fileSystemService.readTextFile(this.params.file_path)
|
|
394
|
+
: await fsPromises.readFile(this.params.file_path, 'utf-8');
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
if (isNodeError(error) && error.code === 'ENOENT') {
|
|
398
|
+
return '';
|
|
399
|
+
}
|
|
400
|
+
throw error;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
validateASTSyntax(filePath, content) {
|
|
404
|
+
return validateASTSyntax(filePath, content);
|
|
405
|
+
}
|
|
406
|
+
async getFileLastModified(filePath) {
|
|
407
|
+
return getFileLastModified(filePath);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=ast-edit-invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-edit-invocation.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-edit-invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedDeclaration } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* ASTQueryExtractor handles AST parsing with @ast-grep/napi and declaration extraction.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ASTQueryExtractor {
|
|
11
|
+
constructor();
|
|
12
|
+
extractDeclarations(filePath: string, content: string): Promise<EnhancedDeclaration[]>;
|
|
13
|
+
private extractJsFamilyDeclarations;
|
|
14
|
+
private extractPythonDeclarations;
|
|
15
|
+
private buildSignature;
|
|
16
|
+
private buildPythonSignature;
|
|
17
|
+
private nodeToDeclaration;
|
|
18
|
+
private fallbackExtraction;
|
|
19
|
+
private extractNameBasic;
|
|
20
|
+
private extractSignatureBasic;
|
|
21
|
+
}
|