@mrclrchtr/supi-lsp 1.7.0 → 1.9.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/README.md +33 -10
- package/node_modules/@mrclrchtr/supi-code-runtime/README.md +13 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +97 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +53 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +30 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +76 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +186 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +119 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-provider-registry.ts +36 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-tag.ts +31 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +255 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +30 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +40 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project-roots.ts +170 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/registry-utils.ts +86 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session-utils.ts +29 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +15 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +41 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +226 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/terminal.ts +60 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/package.json +40 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +35 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +68 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +31 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +110 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/context.ts +41 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +170 -0
- package/node_modules/@mrclrchtr/supi-core/README.md +3 -13
- package/node_modules/@mrclrchtr/supi-core/package.json +13 -8
- package/node_modules/@mrclrchtr/supi-core/src/api.ts +26 -92
- package/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
- package/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
- package/node_modules/@mrclrchtr/supi-core/src/index.ts +26 -92
- package/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
- package/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
- package/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
- package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
- package/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
- package/node_modules/vscode-jsonrpc/License.txt +11 -0
- package/node_modules/vscode-jsonrpc/README.md +69 -0
- package/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
- package/node_modules/vscode-jsonrpc/browser.js +7 -0
- package/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
- package/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
- package/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
- package/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
- package/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
- package/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
- package/node_modules/vscode-jsonrpc/lib/common/connection.js +1214 -0
- package/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
- package/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
- package/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
- package/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
- package/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
- package/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
- package/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
- package/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
- package/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
- package/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
- package/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
- package/node_modules/vscode-jsonrpc/node.cmd +5 -0
- package/node_modules/vscode-jsonrpc/node.d.ts +6 -0
- package/node_modules/vscode-jsonrpc/node.js +7 -0
- package/node_modules/vscode-jsonrpc/package.json +45 -0
- package/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
- package/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/node_modules/vscode-languageserver-protocol/License.txt +11 -0
- package/node_modules/vscode-languageserver-protocol/README.md +16 -0
- package/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
- package/node_modules/vscode-languageserver-protocol/browser.js +7 -0
- package/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
- package/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
- package/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
- package/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
- package/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
- package/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
- package/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
- package/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
- package/node_modules/vscode-languageserver-protocol/node.js +7 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/License.txt +11 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/README.md +69 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.js +7 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.cmd +5 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.d.ts +6 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.js +7 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/package.json +45 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
- package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/node_modules/vscode-languageserver-protocol/package.json +45 -0
- package/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
- package/node_modules/vscode-languageserver-types/License.txt +11 -0
- package/node_modules/vscode-languageserver-types/README.md +17 -0
- package/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
- package/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
- package/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
- package/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
- package/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
- package/node_modules/vscode-languageserver-types/package.json +38 -0
- package/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
- package/package.json +9 -6
- package/src/config/config.ts +1 -1
- package/src/handlers/diagnostic-injection.ts +182 -0
- package/src/handlers/session-lifecycle.ts +149 -0
- package/src/handlers/status-command.ts +38 -0
- package/src/handlers/workspace-recovery.ts +92 -0
- package/src/lsp.ts +18 -414
- package/src/manager/capability-index.ts +24 -0
- package/src/manager/client-pool.ts +33 -0
- package/src/manager/diagnostic-store.ts +51 -0
- package/src/manager/manager-helpers.ts +1 -1
- package/src/manager/manager-workspace-symbol.ts +1 -1
- package/src/manager/manager.ts +1 -1
- package/src/manager/recovery-coordinator.ts +37 -0
- package/src/manager/workspace-router.ts +44 -0
- package/src/provider/lsp-semantic-provider.ts +156 -0
- package/src/session/runtime-registration.ts +39 -0
- package/src/session/scanner.ts +1 -1
- package/src/session/service-registry.ts +1 -1
- package/src/session/settings-registration.ts +1 -1
- package/src/tool/guidance.ts +5 -14
- package/src/tool/names.ts +12 -4
- package/src/tool/register-tools.ts +2 -4
- package/src/tool/service-actions.ts +141 -0
- package/src/tool/tool-specs.ts +93 -93
- package/src/utils.ts +1 -1
- package/src/workspace-change.ts +40 -0
- package/node_modules/@mrclrchtr/supi-core/src/extension.ts +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// LSP semantic provider adapter — wraps SessionLspService into the shared
|
|
2
|
+
// SemanticProvider contract from supi-code-runtime.
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
CodeLocation,
|
|
6
|
+
CodePosition,
|
|
7
|
+
CodeSymbol,
|
|
8
|
+
SemanticProvider,
|
|
9
|
+
} from "@mrclrchtr/supi-code-runtime/api";
|
|
10
|
+
import type { DocumentSymbol, Location, LocationLink, SymbolInformation } from "../config/types.ts";
|
|
11
|
+
import type { SessionLspService } from "../session/service-registry.ts";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Create a SemanticProvider backed by a SessionLspService.
|
|
15
|
+
* Maps LSP types into the shared code-runtime types.
|
|
16
|
+
*/
|
|
17
|
+
export function createLspSemanticProvider(lsp: SessionLspService): SemanticProvider {
|
|
18
|
+
return {
|
|
19
|
+
async references(filePath: string, position: CodePosition): Promise<CodeLocation[] | null> {
|
|
20
|
+
const refResult = await lsp.references(filePath, position);
|
|
21
|
+
if (!refResult) return null;
|
|
22
|
+
const mapped: CodeLocation[] = [];
|
|
23
|
+
for (const item of refResult) {
|
|
24
|
+
const loc = toCodeLocation(item);
|
|
25
|
+
if (loc) mapped.push(loc);
|
|
26
|
+
}
|
|
27
|
+
return mapped;
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
async implementation(filePath: string, position: CodePosition): Promise<CodeLocation[] | null> {
|
|
31
|
+
const implResult = await lsp.implementation(filePath, position);
|
|
32
|
+
if (!implResult) return null;
|
|
33
|
+
const normalized = Array.isArray(implResult) ? implResult : [implResult];
|
|
34
|
+
const mapped: CodeLocation[] = [];
|
|
35
|
+
for (const item of normalized) {
|
|
36
|
+
const loc = toCodeLocation(item);
|
|
37
|
+
if (loc) mapped.push(loc);
|
|
38
|
+
}
|
|
39
|
+
return mapped;
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
async documentSymbols(filePath: string): Promise<CodeSymbol[] | null> {
|
|
43
|
+
const symbols = await lsp.documentSymbols(filePath);
|
|
44
|
+
if (!symbols) return null;
|
|
45
|
+
return flattenDocumentSymbols(symbols, filePath);
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
async workspaceSymbols(query: string): Promise<CodeSymbol[] | null> {
|
|
49
|
+
const results = await lsp.workspaceSymbol(query);
|
|
50
|
+
if (!results) return null;
|
|
51
|
+
return results.map((sym) => toCodeSymbol(sym as SymbolInformation));
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// ── Type conversion helpers ───────────────────────────────────────────
|
|
57
|
+
|
|
58
|
+
function toCodeLocation(item: Location | LocationLink): CodeLocation | null {
|
|
59
|
+
const loc = item as Record<string, unknown>;
|
|
60
|
+
const uri = loc.uri ?? loc.targetUri;
|
|
61
|
+
if (typeof uri !== "string") return null;
|
|
62
|
+
|
|
63
|
+
// Prefer targetSelectionRange > targetRange > range
|
|
64
|
+
const range = loc.targetSelectionRange ?? loc.targetRange ?? loc.range;
|
|
65
|
+
if (!range || typeof range !== "object") return null;
|
|
66
|
+
|
|
67
|
+
const r = range as { start: Record<string, unknown>; end: Record<string, unknown> };
|
|
68
|
+
const start = r.start;
|
|
69
|
+
const end = r.end;
|
|
70
|
+
if (!start || !end) return null;
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
uri,
|
|
74
|
+
range: {
|
|
75
|
+
start: { line: (start.line as number) ?? 0, character: (start.character as number) ?? 0 },
|
|
76
|
+
end: { line: (end.line as number) ?? 0, character: (end.character as number) ?? 0 },
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const SYMBOL_KIND_NAMES: Record<number, string> = {
|
|
82
|
+
1: "File",
|
|
83
|
+
2: "Module",
|
|
84
|
+
3: "Namespace",
|
|
85
|
+
4: "Package",
|
|
86
|
+
5: "Class",
|
|
87
|
+
6: "Method",
|
|
88
|
+
7: "Property",
|
|
89
|
+
8: "Field",
|
|
90
|
+
9: "Constructor",
|
|
91
|
+
10: "Enum",
|
|
92
|
+
11: "Interface",
|
|
93
|
+
12: "Function",
|
|
94
|
+
13: "Variable",
|
|
95
|
+
14: "Constant",
|
|
96
|
+
15: "String",
|
|
97
|
+
16: "Number",
|
|
98
|
+
17: "Boolean",
|
|
99
|
+
18: "Array",
|
|
100
|
+
19: "Object",
|
|
101
|
+
20: "Key",
|
|
102
|
+
21: "Null",
|
|
103
|
+
22: "EnumMember",
|
|
104
|
+
23: "Struct",
|
|
105
|
+
24: "Event",
|
|
106
|
+
25: "Operator",
|
|
107
|
+
26: "TypeParameter",
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
function symbolKindName(kind: number): string {
|
|
111
|
+
return SYMBOL_KIND_NAMES[kind] ?? "Unknown";
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function flattenDocumentSymbols(
|
|
115
|
+
symbols: DocumentSymbol[] | SymbolInformation[],
|
|
116
|
+
filePath: string,
|
|
117
|
+
container: string | null = null,
|
|
118
|
+
): CodeSymbol[] {
|
|
119
|
+
const result: CodeSymbol[] = [];
|
|
120
|
+
|
|
121
|
+
for (const sym of symbols) {
|
|
122
|
+
// DocumentSymbol has selectionRange; SymbolInformation has location
|
|
123
|
+
const ds = sym as DocumentSymbol;
|
|
124
|
+
const si = sym as SymbolInformation;
|
|
125
|
+
const start = ds.selectionRange?.start ?? si.location?.range?.start;
|
|
126
|
+
if (!start) continue;
|
|
127
|
+
|
|
128
|
+
result.push({
|
|
129
|
+
name: sym.name,
|
|
130
|
+
kind: symbolKindName(sym.kind),
|
|
131
|
+
file: filePath,
|
|
132
|
+
line: start.line + 1,
|
|
133
|
+
character: start.character + 1,
|
|
134
|
+
container,
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
if (Array.isArray(ds.children) && ds.children.length > 0) {
|
|
138
|
+
result.push(...flattenDocumentSymbols(ds.children, filePath, sym.name));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function toCodeSymbol(sym: SymbolInformation): CodeSymbol {
|
|
146
|
+
const uri = sym.location?.uri ?? "";
|
|
147
|
+
const start = sym.location?.range?.start;
|
|
148
|
+
return {
|
|
149
|
+
name: sym.name,
|
|
150
|
+
kind: symbolKindName(sym.kind),
|
|
151
|
+
file: uri.startsWith("file://") ? decodeURIComponent(uri.slice(7)) : uri,
|
|
152
|
+
line: start ? start.line + 1 : 0,
|
|
153
|
+
character: start ? start.character + 1 : 0,
|
|
154
|
+
container: sym.containerName ?? null,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP-to-runtime capability registration.
|
|
3
|
+
*
|
|
4
|
+
* Adapts a SessionLspService into the runtime's SemanticProvider interface
|
|
5
|
+
* and registers/unregisters it with the shared WorkspaceRuntime at session
|
|
6
|
+
* lifecycle boundaries.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { WorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
|
|
10
|
+
import { createLspSemanticProvider } from "../provider/lsp-semantic-provider.ts";
|
|
11
|
+
import type { SessionLspService } from "./service-registry.ts";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Register LSP capabilities for a workspace cwd.
|
|
15
|
+
*
|
|
16
|
+
* Wraps SessionLspService into a SemanticProvider via the existing
|
|
17
|
+
* semantic adapter and publishes it into the shared workspace runtime
|
|
18
|
+
* so that code-intelligence and other consumers can discover semantic
|
|
19
|
+
* analysis availability.
|
|
20
|
+
*/
|
|
21
|
+
export function registerLspCapabilities(
|
|
22
|
+
runtime: WorkspaceRuntime,
|
|
23
|
+
cwd: string,
|
|
24
|
+
service: SessionLspService,
|
|
25
|
+
): void {
|
|
26
|
+
const provider = createLspSemanticProvider(service);
|
|
27
|
+
runtime.registerSemantic(cwd, provider);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Unregister LSP capabilities for a workspace cwd.
|
|
32
|
+
*
|
|
33
|
+
* Clears only the semantic capability slot — structural (tree-sitter)
|
|
34
|
+
* state is left intact so that a later tree-sitter session_start does
|
|
35
|
+
* not needlessly wipe LSP state on its own restart path.
|
|
36
|
+
*/
|
|
37
|
+
export function unregisterLspCapabilities(runtime: WorkspaceRuntime, cwd: string): void {
|
|
38
|
+
runtime.clearSemantic(cwd);
|
|
39
|
+
}
|
package/src/session/scanner.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
-
import { dedupeTopmostRoots, walkProject } from "@mrclrchtr/supi-core/
|
|
3
|
+
import { dedupeTopmostRoots, walkProject } from "@mrclrchtr/supi-core/project";
|
|
4
4
|
import type {
|
|
5
5
|
DetectedProjectServer,
|
|
6
6
|
LspConfig,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Peer extensions can import `getSessionLspService` from the package root
|
|
3
3
|
// to reuse the active LSP runtime without starting duplicate servers.
|
|
4
4
|
|
|
5
|
-
import { createSessionStateRegistry } from "@mrclrchtr/supi-core/
|
|
5
|
+
import { createSessionStateRegistry } from "@mrclrchtr/supi-core/session";
|
|
6
6
|
import type {
|
|
7
7
|
CodeAction,
|
|
8
8
|
Diagnostic,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
loadSupiConfig,
|
|
8
8
|
loadSupiConfigForScope,
|
|
9
9
|
registerConfigSettings,
|
|
10
|
-
} from "@mrclrchtr/supi-core/
|
|
10
|
+
} from "@mrclrchtr/supi-core/config";
|
|
11
11
|
import { loadConfig } from "../config/config.ts";
|
|
12
12
|
|
|
13
13
|
// ── Types ────────────────────────────────────────────────────
|
package/src/tool/guidance.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import type { ProjectServerInfo } from "../config/server-config.ts";
|
|
5
|
-
import {
|
|
5
|
+
import { LSP_HOVER_TOOL, type LspToolName } from "./names.ts";
|
|
6
6
|
import { LSP_TOOL_DEFINITION_SPECS } from "./tool-specs.ts";
|
|
7
7
|
|
|
8
8
|
export interface LspToolPromptSurface {
|
|
@@ -28,7 +28,7 @@ export function buildLspToolPromptSurfaces(
|
|
|
28
28
|
description: spec.description,
|
|
29
29
|
promptSnippet: spec.promptSnippet,
|
|
30
30
|
promptGuidelines:
|
|
31
|
-
|
|
31
|
+
spec.name === LSP_HOVER_TOOL && coverageGuidelines.length > 0
|
|
32
32
|
? [...spec.basePromptGuidelines, ...coverageGuidelines]
|
|
33
33
|
: [...spec.basePromptGuidelines],
|
|
34
34
|
} satisfies LspToolPromptSurface,
|
|
@@ -43,8 +43,8 @@ function buildCoverageGuidelines(servers: ProjectServerInfo[], cwd: string): str
|
|
|
43
43
|
const root = displayRoot(server.root, cwd);
|
|
44
44
|
const fileTypes = server.fileTypes.map((entry) => `.${entry}`).join(",");
|
|
45
45
|
const actions = server.supportedActions.join(",");
|
|
46
|
-
const actionText = actions.length > 0 ? ` | actions
|
|
47
|
-
return `lsp server coverage: ${server.name} | root
|
|
46
|
+
const actionText = actions.length > 0 ? ` | actions:${actions}` : "";
|
|
47
|
+
return `lsp server coverage: ${server.name} | root:${root} | files:${fileTypes}${actionText}`;
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
const unavailable = servers
|
|
@@ -54,7 +54,7 @@ function buildCoverageGuidelines(servers: ProjectServerInfo[], cwd: string): str
|
|
|
54
54
|
const dynamic = [...active];
|
|
55
55
|
if (unavailable.length > 0) {
|
|
56
56
|
dynamic.push(
|
|
57
|
-
`lsp server unavailable: ${unavailable.join(",")} — install or enable
|
|
57
|
+
`lsp server unavailable: ${unavailable.join(",")} — install or enable for more coverage`,
|
|
58
58
|
);
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -67,12 +67,3 @@ function displayRoot(root: string, cwd: string): string {
|
|
|
67
67
|
if (relative.startsWith(`..${path.sep}`) || relative === "..") return root;
|
|
68
68
|
return relative.replaceAll(path.sep, "/");
|
|
69
69
|
}
|
|
70
|
-
|
|
71
|
-
// Compatibility exports for older internal tests and helper imports.
|
|
72
|
-
export const toolDescription = defaultLspToolPromptSurfaces[LSP_LOOKUP_TOOL].description;
|
|
73
|
-
export const promptSnippet = defaultLspToolPromptSurfaces[LSP_LOOKUP_TOOL].promptSnippet;
|
|
74
|
-
export const promptGuidelines = defaultLspToolPromptSurfaces[LSP_LOOKUP_TOOL].promptGuidelines;
|
|
75
|
-
|
|
76
|
-
export function buildProjectGuidelines(servers: ProjectServerInfo[], cwd: string): string[] {
|
|
77
|
-
return buildLspToolPromptSurfaces(servers, cwd)[LSP_LOOKUP_TOOL].promptGuidelines;
|
|
78
|
-
}
|
package/src/tool/names.ts
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
// Stable LSP tool names shared across registration, guidance, and runtime state.
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const LSP_HOVER_TOOL = "lsp_hover";
|
|
4
|
+
export const LSP_DEFINITION_TOOL = "lsp_definition";
|
|
5
|
+
export const LSP_REFERENCES_TOOL = "lsp_references";
|
|
6
|
+
export const LSP_IMPLEMENTATION_TOOL = "lsp_implementation";
|
|
4
7
|
export const LSP_DOCUMENT_SYMBOLS_TOOL = "lsp_document_symbols";
|
|
5
8
|
export const LSP_WORKSPACE_SYMBOLS_TOOL = "lsp_workspace_symbols";
|
|
6
9
|
export const LSP_DIAGNOSTICS_TOOL = "lsp_diagnostics";
|
|
7
|
-
export const
|
|
10
|
+
export const LSP_RENAME_TOOL = "lsp_rename";
|
|
11
|
+
export const LSP_CODE_ACTIONS_TOOL = "lsp_code_actions";
|
|
8
12
|
export const LSP_RECOVER_TOOL = "lsp_recover";
|
|
9
13
|
|
|
10
14
|
export const LSP_TOOL_NAMES = [
|
|
11
|
-
|
|
15
|
+
LSP_HOVER_TOOL,
|
|
16
|
+
LSP_DEFINITION_TOOL,
|
|
17
|
+
LSP_REFERENCES_TOOL,
|
|
18
|
+
LSP_IMPLEMENTATION_TOOL,
|
|
12
19
|
LSP_DOCUMENT_SYMBOLS_TOOL,
|
|
13
20
|
LSP_WORKSPACE_SYMBOLS_TOOL,
|
|
14
21
|
LSP_DIAGNOSTICS_TOOL,
|
|
15
|
-
|
|
22
|
+
LSP_RENAME_TOOL,
|
|
23
|
+
LSP_CODE_ACTIONS_TOOL,
|
|
16
24
|
LSP_RECOVER_TOOL,
|
|
17
25
|
] as const;
|
|
18
26
|
|
|
@@ -47,14 +47,12 @@ function createToolExecutor(
|
|
|
47
47
|
params: unknown,
|
|
48
48
|
) => Promise<string>,
|
|
49
49
|
) {
|
|
50
|
-
// biome-ignore lint/complexity/useMaxParams: pi ToolDefinition.execute signature
|
|
51
50
|
return async (
|
|
52
51
|
_toolCallId: string,
|
|
53
52
|
params: unknown,
|
|
54
|
-
|
|
55
|
-
_onUpdate: unknown,
|
|
56
|
-
ctx: ExtensionContext,
|
|
53
|
+
...rest: [AbortSignal | undefined, unknown, ExtensionContext]
|
|
57
54
|
) => {
|
|
55
|
+
const ctx = rest[2];
|
|
58
56
|
const service = getReadyService(ctx.cwd);
|
|
59
57
|
const text = service
|
|
60
58
|
? await run(service, ctx.cwd, params)
|
|
@@ -128,6 +128,147 @@ export async function executeLookup(
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Focused lookup tools (replacing the old multiplexed executeLookup)
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
|
|
135
|
+
export interface LspPositionToolParams {
|
|
136
|
+
file: string;
|
|
137
|
+
line: number;
|
|
138
|
+
character: number;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface LspRenameToolParams {
|
|
142
|
+
file: string;
|
|
143
|
+
line: number;
|
|
144
|
+
character: number;
|
|
145
|
+
newName: string;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export async function executeHover(
|
|
149
|
+
service: SessionLspService,
|
|
150
|
+
cwd: string,
|
|
151
|
+
params: LspPositionToolParams,
|
|
152
|
+
): Promise<string> {
|
|
153
|
+
try {
|
|
154
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
155
|
+
if (positionError) return positionError;
|
|
156
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
157
|
+
if (fileError) return fileError;
|
|
158
|
+
const position = toZeroBased(params.line, params.character);
|
|
159
|
+
const hover = await service.hover(params.file, position);
|
|
160
|
+
return hover ? formatHover(hover) : "No hover information available at this position.";
|
|
161
|
+
} catch (error) {
|
|
162
|
+
return formatUnexpectedFailure("hover", error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export async function executeDefinition(
|
|
167
|
+
service: SessionLspService,
|
|
168
|
+
cwd: string,
|
|
169
|
+
params: LspPositionToolParams,
|
|
170
|
+
): Promise<string> {
|
|
171
|
+
try {
|
|
172
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
173
|
+
if (positionError) return positionError;
|
|
174
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
175
|
+
if (fileError) return fileError;
|
|
176
|
+
const position = toZeroBased(params.line, params.character);
|
|
177
|
+
const result = await service.definition(params.file, position);
|
|
178
|
+
if (!result) return "No definition found.";
|
|
179
|
+
const locations = normalizeLocations(result);
|
|
180
|
+
return locations.length > 0
|
|
181
|
+
? formatLocations("Definition", locations, cwd)
|
|
182
|
+
: "No definition found.";
|
|
183
|
+
} catch (error) {
|
|
184
|
+
return formatUnexpectedFailure("definition", error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export async function executeReferences(
|
|
189
|
+
service: SessionLspService,
|
|
190
|
+
cwd: string,
|
|
191
|
+
params: LspPositionToolParams,
|
|
192
|
+
): Promise<string> {
|
|
193
|
+
try {
|
|
194
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
195
|
+
if (positionError) return positionError;
|
|
196
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
197
|
+
if (fileError) return fileError;
|
|
198
|
+
const position = toZeroBased(params.line, params.character);
|
|
199
|
+
const references = await service.references(params.file, position);
|
|
200
|
+
return references && references.length > 0
|
|
201
|
+
? formatLocations("References", references, cwd)
|
|
202
|
+
: "No references found.";
|
|
203
|
+
} catch (error) {
|
|
204
|
+
return formatUnexpectedFailure("references", error);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export async function executeImplementation(
|
|
209
|
+
service: SessionLspService,
|
|
210
|
+
cwd: string,
|
|
211
|
+
params: LspPositionToolParams,
|
|
212
|
+
): Promise<string> {
|
|
213
|
+
try {
|
|
214
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
215
|
+
if (positionError) return positionError;
|
|
216
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
217
|
+
if (fileError) return fileError;
|
|
218
|
+
const position = toZeroBased(params.line, params.character);
|
|
219
|
+
const result = await service.implementation(params.file, position);
|
|
220
|
+
if (!result) return "No implementation found.";
|
|
221
|
+
const locations = normalizeLocations(result);
|
|
222
|
+
return locations.length > 0
|
|
223
|
+
? formatLocations("Implementation", locations, cwd)
|
|
224
|
+
: "No implementation found.";
|
|
225
|
+
} catch (error) {
|
|
226
|
+
return formatUnexpectedFailure("implementation", error);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export async function executeRename(
|
|
231
|
+
service: SessionLspService,
|
|
232
|
+
cwd: string,
|
|
233
|
+
params: LspRenameToolParams,
|
|
234
|
+
): Promise<string> {
|
|
235
|
+
try {
|
|
236
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
237
|
+
if (positionError) return positionError;
|
|
238
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
239
|
+
if (fileError) return fileError;
|
|
240
|
+
const newName = params.newName?.trim();
|
|
241
|
+
if (!newName) {
|
|
242
|
+
return "Validation error: `newName` is required for rename.";
|
|
243
|
+
}
|
|
244
|
+
const position = toZeroBased(params.line, params.character);
|
|
245
|
+
const edit = await service.rename(params.file, position, newName);
|
|
246
|
+
return edit ? formatWorkspaceEdit(edit, cwd) : "Rename not available at this position.";
|
|
247
|
+
} catch (error) {
|
|
248
|
+
return formatUnexpectedFailure("rename", error);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export async function executeCodeActions(
|
|
253
|
+
service: SessionLspService,
|
|
254
|
+
cwd: string,
|
|
255
|
+
params: LspPositionToolParams,
|
|
256
|
+
): Promise<string> {
|
|
257
|
+
try {
|
|
258
|
+
const positionError = validatePositivePosition(params.line, params.character);
|
|
259
|
+
if (positionError) return positionError;
|
|
260
|
+
const fileError = validateFile(service, cwd, params.file);
|
|
261
|
+
if (fileError) return fileError;
|
|
262
|
+
const position = toZeroBased(params.line, params.character);
|
|
263
|
+
const actions = await service.codeActions(params.file, position);
|
|
264
|
+
return actions && actions.length > 0
|
|
265
|
+
? formatCodeActions(actions)
|
|
266
|
+
: "No code actions available at this position.";
|
|
267
|
+
} catch (error) {
|
|
268
|
+
return formatUnexpectedFailure("code actions", error);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
131
272
|
export async function executeDocumentSymbols(
|
|
132
273
|
service: SessionLspService,
|
|
133
274
|
cwd: string,
|