@mrclrchtr/supi-code-intelligence 1.6.0 → 1.8.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 +53 -24
- package/node_modules/@mrclrchtr/supi-core/package.json +18 -3
- package/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
- package/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
- 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 +27 -82
- 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/tool-framework.ts +116 -0
- package/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
- package/node_modules/@mrclrchtr/supi-lsp/README.md +13 -8
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +18 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +27 -82
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/License.txt +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/README.md +69 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/browser.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/connection.js +1214 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.cmd +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/package.json +45 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/License.txt +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/README.md +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/browser.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/License.txt +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/README.md +69 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.cmd +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.d.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.js +7 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/package.json +45 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/package.json +45 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/License.txt +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/README.md +17 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/package.json +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
- package/node_modules/@mrclrchtr/supi-lsp/package.json +9 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +8 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +79 -190
- package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/config/server-config.ts +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/config/types.ts +61 -387
- package/node_modules/@mrclrchtr/supi-lsp/src/format.ts +16 -8
- package/node_modules/@mrclrchtr/supi-lsp/src/handlers/diagnostic-injection.ts +182 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/handlers/session-lifecycle.ts +139 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/handlers/status-command.ts +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/handlers/workspace-recovery.ts +92 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/lsp.ts +15 -413
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-helpers.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-project-info.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/session/lsp-state.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/session/scanner.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/session/service-registry.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/session/settings-registration.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/tool/guidance.ts +6 -15
- package/node_modules/@mrclrchtr/supi-lsp/src/tool/names.ts +12 -4
- package/node_modules/@mrclrchtr/supi-lsp/src/tool/register-tools.ts +2 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/tool/service-actions.ts +141 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/tool/tool-specs.ts +93 -93
- package/node_modules/@mrclrchtr/supi-lsp/src/utils.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/workspace-change.ts +40 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +26 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +18 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +27 -82
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/service-registry.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/guidance.ts +29 -25
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/handlers.ts +196 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/register-tools.ts +107 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/tool-specs.ts +117 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tree-sitter.ts +4 -300
- package/package.json +4 -4
- package/src/api.ts +16 -0
- package/src/architecture.ts +1 -1
- package/src/brief-focused.ts +5 -5
- package/src/brief.ts +11 -55
- package/src/code-intelligence.ts +12 -77
- package/src/index.ts +16 -0
- package/src/pattern-structured.ts +27 -27
- package/src/presentation/markdown/affected.ts +170 -0
- package/src/presentation/markdown/brief.ts +174 -0
- package/src/presentation/markdown/map.ts +54 -0
- package/src/presentation/markdown/overview.ts +59 -0
- package/src/presentation/markdown/pattern.ts +239 -0
- package/src/presentation/markdown/relations.ts +121 -0
- package/src/prioritization-signals.ts +13 -26
- package/src/query-params.ts +15 -0
- package/src/resolve-target.ts +60 -42
- package/src/search-helpers.ts +19 -6
- package/src/substrates/lsp-adapter.ts +197 -0
- package/src/substrates/tree-sitter-adapter.ts +173 -0
- package/src/substrates/types.ts +113 -0
- package/src/target-resolution.ts +37 -493
- package/src/targeting/query.ts +60 -0
- package/src/targeting/resolve-anchored.ts +80 -0
- package/src/targeting/resolve-file.ts +197 -0
- package/src/targeting/resolve-symbol.ts +110 -0
- package/src/targeting/types.ts +111 -0
- package/src/tool/execute-affected.ts +25 -0
- package/src/tool/execute-brief.ts +51 -0
- package/src/tool/execute-map.ts +35 -0
- package/src/tool/execute-pattern.ts +28 -0
- package/src/tool/execute-relations.ts +40 -0
- package/src/tool/guidance.ts +52 -12
- package/src/tool/register-tools.ts +32 -0
- package/src/tool/tool-specs.ts +165 -0
- package/src/tool/validation.ts +43 -0
- package/src/types.ts +10 -0
- package/src/use-case/build-overview.ts +36 -0
- package/src/use-case/generate-affected.ts +279 -0
- package/src/use-case/generate-brief.ts +324 -0
- package/src/use-case/generate-map.ts +176 -0
- package/src/use-case/generate-pattern.ts +270 -0
- package/src/use-case/generate-relations.ts +392 -0
- package/src/use-case/support/semantic-references.ts +114 -0
- package/src/use-case/types.ts +43 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/action-specs.ts +0 -92
- package/src/actions/affected-action.ts +0 -439
- package/src/actions/brief-action.ts +0 -241
- package/src/actions/callees-action.ts +0 -155
- package/src/actions/callers-action.ts +0 -282
- package/src/actions/implementations-action.ts +0 -208
- package/src/actions/index-action.ts +0 -187
- package/src/actions/pattern-action.ts +0 -392
- package/src/providers/semantic-provider.ts +0 -34
- package/src/providers/structural-provider.ts +0 -26
- package/src/tool/action-specs.ts +0 -66
- package/src/tool-actions.ts +0 -100
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
// Pattern search markdown renderer — all formatting for literal, regex, and structured search results.
|
|
2
|
+
|
|
3
|
+
import type { StructuredMatch, StructuredPatternResult } from "../../pattern-structured.ts";
|
|
4
|
+
import type { RgMatch } from "../../search-helpers.ts";
|
|
5
|
+
import { groupByFile } from "../../search-helpers.ts";
|
|
6
|
+
import type { StructuralSubstrate } from "../../substrates/types.ts";
|
|
7
|
+
|
|
8
|
+
// ── Structured search formatting ─────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
// biome-ignore lint/complexity/useMaxParams: structured empty-state with optional result parameter keeps partial-warning logic together
|
|
11
|
+
export function renderStructuredEmptyState(
|
|
12
|
+
pattern: string,
|
|
13
|
+
kind: "definition" | "export" | "import",
|
|
14
|
+
relScope: string,
|
|
15
|
+
_structural?: StructuralSubstrate,
|
|
16
|
+
result?: StructuredPatternResult,
|
|
17
|
+
): string {
|
|
18
|
+
const lines = [`No ${kind} matches found for \`${pattern}\` in \`${relScope}\`.`];
|
|
19
|
+
if (result && result.omittedCount > 0 && result.partialReason) {
|
|
20
|
+
lines.push("");
|
|
21
|
+
if (result.partialReason === "timeout") {
|
|
22
|
+
lines.push(
|
|
23
|
+
`_Partial structured results — scan timed out with +${result.omittedCount} file${result.omittedCount !== 1 ? "s" : ""} omitted. Narrow \`path\` or \`pattern\` for complete coverage._`,
|
|
24
|
+
);
|
|
25
|
+
} else {
|
|
26
|
+
lines.push(
|
|
27
|
+
`_Partial structured results — +${result.omittedCount} file${result.omittedCount !== 1 ? "s" : ""} omitted after reaching the structured scan cap. Narrow \`path\` or \`pattern\` for complete coverage._`,
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return lines.join("\n");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function renderStructuredMatches(
|
|
35
|
+
pattern: string,
|
|
36
|
+
kind: "definition" | "export" | "import",
|
|
37
|
+
relScope: string,
|
|
38
|
+
result: StructuredPatternResult,
|
|
39
|
+
): string {
|
|
40
|
+
const grouped = new Map<string, StructuredMatch[]>();
|
|
41
|
+
for (const match of result.matches) {
|
|
42
|
+
const group = grouped.get(match.file) ?? [];
|
|
43
|
+
group.push(match);
|
|
44
|
+
grouped.set(match.file, group);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const kindLabel =
|
|
48
|
+
kind === "definition" ? "Definitions" : kind === "export" ? "Exports" : "Imports";
|
|
49
|
+
const lines: string[] = [];
|
|
50
|
+
lines.push(`# Pattern ${kindLabel}: \`${pattern}\``);
|
|
51
|
+
lines.push("");
|
|
52
|
+
lines.push(
|
|
53
|
+
`**${result.matches.length} match${result.matches.length !== 1 ? "es" : ""}** across **${grouped.size} file${grouped.size !== 1 ? "s" : ""}** in \`${relScope}\``,
|
|
54
|
+
);
|
|
55
|
+
const partialWarning = formatPartialStructuredWarning(result);
|
|
56
|
+
if (partialWarning) {
|
|
57
|
+
lines.push(partialWarning);
|
|
58
|
+
}
|
|
59
|
+
lines.push("");
|
|
60
|
+
|
|
61
|
+
if (kind === "definition" || kind === "export") {
|
|
62
|
+
addDuplicateSummary(lines, result.matches);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (const [file, fileMatches] of grouped) {
|
|
66
|
+
lines.push(`### ${file}`);
|
|
67
|
+
for (const match of fileMatches.slice(0, 8)) {
|
|
68
|
+
lines.push(`- \`${match.name}\` (${match.kind}) L${match.line}`);
|
|
69
|
+
}
|
|
70
|
+
if (fileMatches.length > 8) {
|
|
71
|
+
lines.push(`- _+${fileMatches.length - 8} more in this file_`);
|
|
72
|
+
}
|
|
73
|
+
lines.push("");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return lines.join("\n");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function formatPartialStructuredWarning(result: StructuredPatternResult): string | null {
|
|
80
|
+
if (!result.partialReason || result.omittedCount <= 0) return null;
|
|
81
|
+
|
|
82
|
+
if (result.partialReason === "timeout") {
|
|
83
|
+
return `_Partial structured results — scan timed out with +${result.omittedCount} file${result.omittedCount !== 1 ? "s" : ""} omitted. Narrow \`path\` or \`pattern\` for complete coverage._`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return `_Partial structured results — +${result.omittedCount} file${result.omittedCount !== 1 ? "s" : ""} omitted after reaching the structured scan cap. Narrow \`path\` or \`pattern\` for complete coverage._`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function addDuplicateSummary(lines: string[], matches: StructuredMatch[]): void {
|
|
90
|
+
const byName = new Map<string, Set<string>>();
|
|
91
|
+
for (const match of matches) {
|
|
92
|
+
const files = byName.get(match.name) ?? new Set<string>();
|
|
93
|
+
files.add(match.file);
|
|
94
|
+
byName.set(match.name, files);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const duplicates = [...byName.entries()]
|
|
98
|
+
.map(([name, files]) => ({ name, files: [...files].sort((a, b) => a.localeCompare(b)) }))
|
|
99
|
+
.filter((entry) => entry.files.length > 1)
|
|
100
|
+
.sort((a, b) => b.files.length - a.files.length || a.name.localeCompare(b.name));
|
|
101
|
+
|
|
102
|
+
if (duplicates.length === 0) return;
|
|
103
|
+
|
|
104
|
+
lines.push("## Duplicate Definitions");
|
|
105
|
+
for (const duplicate of duplicates.slice(0, 8)) {
|
|
106
|
+
lines.push(
|
|
107
|
+
`- \`${duplicate.name}\` — defined in ${duplicate.files.length} files: ${duplicate.files
|
|
108
|
+
.map((file) => `\`${file}\``)
|
|
109
|
+
.join(", ")}`,
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
if (duplicates.length > 8) {
|
|
113
|
+
lines.push(`- _+${duplicates.length - 8} more duplicates_`);
|
|
114
|
+
}
|
|
115
|
+
lines.push("");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── Text search formatting ──────────────────────────────────────────
|
|
119
|
+
|
|
120
|
+
export function renderRegexError(pattern: string, error: string): string {
|
|
121
|
+
const errLines = error
|
|
122
|
+
.split("\n")
|
|
123
|
+
.map((line) => line.trim())
|
|
124
|
+
.filter(Boolean);
|
|
125
|
+
const detail =
|
|
126
|
+
[...errLines]
|
|
127
|
+
.reverse()
|
|
128
|
+
.find((line) => line.startsWith("error:"))
|
|
129
|
+
?.replace(/^error:\s*/, "") ??
|
|
130
|
+
errLines.at(-1) ??
|
|
131
|
+
"ripgrep rejected the regex.";
|
|
132
|
+
return `**Error:** Invalid regex pattern \`${pattern}\`: ${detail}`;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export function renderPatternResults(
|
|
136
|
+
pattern: string,
|
|
137
|
+
relScope: string,
|
|
138
|
+
matches: RgMatch[],
|
|
139
|
+
maxResults: number,
|
|
140
|
+
): string {
|
|
141
|
+
const lines: string[] = [];
|
|
142
|
+
lines.push(`# Pattern: \`${pattern}\``);
|
|
143
|
+
lines.push("");
|
|
144
|
+
lines.push(`**${matches.length} match${matches.length > 1 ? "es" : ""}** in \`${relScope}\``);
|
|
145
|
+
lines.push("");
|
|
146
|
+
|
|
147
|
+
const byFile = groupByFile(matches);
|
|
148
|
+
let shown = 0;
|
|
149
|
+
for (const [file, fileMatches] of byFile) {
|
|
150
|
+
if (shown >= maxResults) break;
|
|
151
|
+
lines.push(`### ${file}`);
|
|
152
|
+
const renderedLines = new Set<number>();
|
|
153
|
+
const matchLines = new Set(fileMatches.map((match) => match.line));
|
|
154
|
+
for (const m of fileMatches.slice(0, 5)) {
|
|
155
|
+
renderMatchWithContext(lines, m, renderedLines, matchLines, pattern);
|
|
156
|
+
}
|
|
157
|
+
if (fileMatches.length > 5) {
|
|
158
|
+
lines.push(`- _+${fileMatches.length - 5} more in this file_`);
|
|
159
|
+
}
|
|
160
|
+
lines.push("");
|
|
161
|
+
shown++;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (byFile.size > maxResults) {
|
|
165
|
+
lines.push(
|
|
166
|
+
`_+${byFile.size - maxResults} more files omitted. Narrow \`path\` or increase \`maxResults\`._`,
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
lines.push("");
|
|
170
|
+
lines.push("_Text search — results may include comments, strings, or unrelated matches._");
|
|
171
|
+
lines.push("");
|
|
172
|
+
|
|
173
|
+
return lines.join("\n");
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: context-line rendering with before/after/skip logic is clearer as one function
|
|
177
|
+
// biome-ignore lint/complexity/useMaxParams: options-object refactor would reduce readability for this rendering helper
|
|
178
|
+
function renderMatchWithContext(
|
|
179
|
+
lines: string[],
|
|
180
|
+
m: RgMatch,
|
|
181
|
+
renderedLines: Set<number>,
|
|
182
|
+
matchLines: Set<number>,
|
|
183
|
+
_pattern: string,
|
|
184
|
+
): void {
|
|
185
|
+
if (m.context) {
|
|
186
|
+
for (const c of m.context.filter((cx) => cx.line < m.line)) {
|
|
187
|
+
if (renderedLines.has(c.line) || matchLines.has(c.line)) continue;
|
|
188
|
+
lines.push(` L${c.line}: ${c.text.slice(0, 120)}`);
|
|
189
|
+
renderedLines.add(c.line);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!renderedLines.has(m.line)) {
|
|
193
|
+
lines.push(`- L${m.line}: \`${(m.text || "").slice(0, 120)}\``);
|
|
194
|
+
renderedLines.add(m.line);
|
|
195
|
+
}
|
|
196
|
+
if (m.context) {
|
|
197
|
+
for (const c of m.context.filter((cx) => cx.line > m.line)) {
|
|
198
|
+
if (renderedLines.has(c.line) || matchLines.has(c.line)) continue;
|
|
199
|
+
lines.push(` L${c.line}: ${c.text.slice(0, 120)}`);
|
|
200
|
+
renderedLines.add(c.line);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export function renderPatternSummary(
|
|
206
|
+
pattern: string,
|
|
207
|
+
relScope: string,
|
|
208
|
+
matches: RgMatch[],
|
|
209
|
+
maxResults: number,
|
|
210
|
+
): string {
|
|
211
|
+
const byFile = groupByFile(matches);
|
|
212
|
+
const sorted = [...byFile.entries()].sort((a, b) => b[1].length - a[1].length);
|
|
213
|
+
|
|
214
|
+
const lines: string[] = [];
|
|
215
|
+
lines.push(`# Pattern Summary: \`${pattern}\``);
|
|
216
|
+
lines.push("");
|
|
217
|
+
lines.push(
|
|
218
|
+
`**${matches.length} match${matches.length > 1 ? "es" : ""}** across **${byFile.size} file${byFile.size > 1 ? "s" : ""}** in \`${relScope}\``,
|
|
219
|
+
);
|
|
220
|
+
lines.push("");
|
|
221
|
+
|
|
222
|
+
for (const [file, fileMatches] of sorted.slice(0, maxResults)) {
|
|
223
|
+
const lineNums = [...new Set(fileMatches.map((m) => m.line))].sort((a, b) => a - b).slice(0, 3);
|
|
224
|
+
const extra = fileMatches.length > 3 ? ` (+${fileMatches.length - 3} more)` : "";
|
|
225
|
+
const linesStr = lineNums.join(", ");
|
|
226
|
+
lines.push(
|
|
227
|
+
`- \`${file}\` — ${fileMatches.length} match${fileMatches.length > 1 ? "es" : ""}${linesStr ? ` at L${linesStr}` : ""}${extra}`,
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (sorted.length > maxResults) {
|
|
232
|
+
lines.push(`- _+${sorted.length - maxResults} more files omitted_`);
|
|
233
|
+
}
|
|
234
|
+
lines.push("");
|
|
235
|
+
lines.push("_Text search — results may include comments, strings, or unrelated matches._");
|
|
236
|
+
lines.push("");
|
|
237
|
+
|
|
238
|
+
return lines.join("\n");
|
|
239
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Relations markdown renderer — consumes use-case data and produces markdown content.
|
|
2
|
+
|
|
3
|
+
import { isInProjectPath, uriToFile } from "../../search-helpers.ts";
|
|
4
|
+
import type { ReferenceCollection } from "../../use-case/support/semantic-references.ts";
|
|
5
|
+
import { formatReferenceList } from "../../use-case/support/semantic-references.ts";
|
|
6
|
+
|
|
7
|
+
// ── Callers ──────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
export function renderCallersResult(
|
|
10
|
+
symbolName: string,
|
|
11
|
+
result: ReferenceCollection,
|
|
12
|
+
cwd: string,
|
|
13
|
+
maxResults: number,
|
|
14
|
+
): string {
|
|
15
|
+
const lines: string[] = [];
|
|
16
|
+
lines.push(`# Callers of \`${symbolName}\``);
|
|
17
|
+
lines.push("");
|
|
18
|
+
lines.push(
|
|
19
|
+
`**${result.refs.length} reference${result.refs.length !== 1 ? "s" : ""}** (${result.confidence})`,
|
|
20
|
+
);
|
|
21
|
+
if (result.externalCount > 0) {
|
|
22
|
+
lines.push(
|
|
23
|
+
`_+${result.externalCount} external reference${result.externalCount !== 1 ? "s" : ""}_`,
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
lines.push("");
|
|
27
|
+
|
|
28
|
+
formatReferenceList(lines, result.refs, maxResults, cwd);
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ── Implementations ──────────────────────────────────────────────────
|
|
33
|
+
|
|
34
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: implementation rendering with project/external splitting and formatting is clearer as one function
|
|
35
|
+
export function renderImplementationsResult(
|
|
36
|
+
locations: Array<{
|
|
37
|
+
uri?: string;
|
|
38
|
+
targetUri?: string;
|
|
39
|
+
range?: { start: { line: number } };
|
|
40
|
+
targetRange?: { start: { line: number } };
|
|
41
|
+
targetSelectionRange?: { start: { line: number } };
|
|
42
|
+
}>,
|
|
43
|
+
cwd: string,
|
|
44
|
+
maxResults: number,
|
|
45
|
+
): string {
|
|
46
|
+
const projectLocs = locations.filter((loc) => {
|
|
47
|
+
const uri = loc.uri ?? loc.targetUri ?? "";
|
|
48
|
+
const filePath = uriToFile(uri);
|
|
49
|
+
return filePath && isInProjectPath(filePath, cwd);
|
|
50
|
+
});
|
|
51
|
+
const externalLocs = locations.filter((loc) => {
|
|
52
|
+
const uri = loc.uri ?? loc.targetUri ?? "";
|
|
53
|
+
const filePath = uriToFile(uri);
|
|
54
|
+
return !filePath || !isInProjectPath(filePath, cwd);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const lines: string[] = [];
|
|
58
|
+
lines.push("# Implementations (semantic)");
|
|
59
|
+
lines.push("");
|
|
60
|
+
if (projectLocs.length > 0) {
|
|
61
|
+
lines.push(
|
|
62
|
+
`**${projectLocs.length} implementation${projectLocs.length !== 1 ? "s" : ""}** in the project`,
|
|
63
|
+
);
|
|
64
|
+
lines.push("");
|
|
65
|
+
for (const loc of projectLocs.slice(0, maxResults)) {
|
|
66
|
+
const uri = loc.uri ?? loc.targetUri ?? "";
|
|
67
|
+
const filePath = uriToFile(uri);
|
|
68
|
+
const range = loc.targetSelectionRange ?? loc.targetRange ?? loc.range;
|
|
69
|
+
if (filePath && range) {
|
|
70
|
+
lines.push(`- \`${filePath}:${(range as { start: { line: number } }).start.line + 1}\``);
|
|
71
|
+
} else if (filePath) {
|
|
72
|
+
lines.push(`- \`${filePath}\``);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
lines.push("");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (externalLocs.length > 0) {
|
|
79
|
+
lines.push(
|
|
80
|
+
`_+${externalLocs.length} external location${externalLocs.length !== 1 ? "s" : ""} (outside this project)_`,
|
|
81
|
+
);
|
|
82
|
+
lines.push("");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
lines.push(
|
|
86
|
+
"_Semantic analysis. Use `code_pattern` only when you explicitly want text-search hints for likely implementations._",
|
|
87
|
+
);
|
|
88
|
+
lines.push("");
|
|
89
|
+
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ── Callees ──────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
export function renderCalleesResult(
|
|
96
|
+
data: { enclosingScope: { name: string }; callees: Array<{ name: string; startLine: number }> },
|
|
97
|
+
relPath: string,
|
|
98
|
+
maxResults: number,
|
|
99
|
+
): string {
|
|
100
|
+
const lines: string[] = [];
|
|
101
|
+
lines.push(`# Callees of \`${data.enclosingScope.name}\` (structural)`);
|
|
102
|
+
lines.push("");
|
|
103
|
+
lines.push(
|
|
104
|
+
`**${data.callees.length} outgoing call${data.callees.length > 1 ? "s" : ""}** from \`${data.enclosingScope.name}\` in \`${relPath}\``,
|
|
105
|
+
);
|
|
106
|
+
lines.push("");
|
|
107
|
+
|
|
108
|
+
const shown = data.callees.slice(0, maxResults);
|
|
109
|
+
for (const c of shown) {
|
|
110
|
+
lines.push(`- \`${c.name}\` (L${c.startLine})`);
|
|
111
|
+
}
|
|
112
|
+
if (data.callees.length > maxResults) {
|
|
113
|
+
lines.push(`- _+${data.callees.length - maxResults} more_`);
|
|
114
|
+
}
|
|
115
|
+
lines.push("");
|
|
116
|
+
lines.push(
|
|
117
|
+
"_Structural analysis — may include unresolved or qualified names. Use `lsp_hover` with `file`, `line`, and `character` for precise type information._",
|
|
118
|
+
);
|
|
119
|
+
lines.push("");
|
|
120
|
+
return lines.join("\n");
|
|
121
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
1
|
import * as path from "node:path";
|
|
2
|
+
import { readJsonFile } from "@mrclrchtr/supi-core/config";
|
|
3
3
|
import { getSessionLspService } from "@mrclrchtr/supi-lsp/api";
|
|
4
4
|
|
|
5
5
|
export interface PrioritySignalsSummary {
|
|
@@ -106,22 +106,18 @@ function loadDiagnostics(
|
|
|
106
106
|
|
|
107
107
|
function loadCoverageSummary(cwd: string): Map<string, number> {
|
|
108
108
|
const coveragePath = path.join(cwd, "coverage", "coverage-summary.json");
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
map.set(path.resolve(cwd, file), pct);
|
|
120
|
-
}
|
|
121
|
-
return map;
|
|
122
|
-
} catch {
|
|
123
|
-
return new Map();
|
|
109
|
+
const parsed = readJsonFile(coveragePath);
|
|
110
|
+
if (!parsed) return new Map();
|
|
111
|
+
|
|
112
|
+
const map = new Map<string, number>();
|
|
113
|
+
for (const [file, value] of Object.entries(parsed)) {
|
|
114
|
+
if (file === "total" || typeof value !== "object" || value === null) continue;
|
|
115
|
+
const linesPct = getPct(value, "lines");
|
|
116
|
+
const statementsPct = getPct(value, "statements");
|
|
117
|
+
const pct = Math.min(linesPct ?? 100, statementsPct ?? 100);
|
|
118
|
+
map.set(path.resolve(cwd, file), pct);
|
|
124
119
|
}
|
|
120
|
+
return map;
|
|
125
121
|
}
|
|
126
122
|
|
|
127
123
|
function loadUnusedFiles(cwd: string): Set<string> {
|
|
@@ -157,16 +153,7 @@ function loadUnusedExports(cwd: string): Array<{ file: string; name: string }> {
|
|
|
157
153
|
}
|
|
158
154
|
|
|
159
155
|
function loadKnipJson(cwd: string): Record<string, unknown> | null {
|
|
160
|
-
|
|
161
|
-
if (!fs.existsSync(knipPath)) return null;
|
|
162
|
-
try {
|
|
163
|
-
const parsed = JSON.parse(fs.readFileSync(knipPath, "utf-8"));
|
|
164
|
-
return typeof parsed === "object" && parsed !== null
|
|
165
|
-
? (parsed as Record<string, unknown>)
|
|
166
|
-
: null;
|
|
167
|
-
} catch {
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
156
|
+
return readJsonFile(path.join(cwd, "knip.json"));
|
|
170
157
|
}
|
|
171
158
|
|
|
172
159
|
function getPct(value: object, key: string): number | null {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Shared parameter bag for internal code-intelligence actions. */
|
|
2
|
+
export interface CodeQueryParams {
|
|
3
|
+
path?: string;
|
|
4
|
+
file?: string;
|
|
5
|
+
line?: number;
|
|
6
|
+
character?: number;
|
|
7
|
+
symbol?: string;
|
|
8
|
+
pattern?: string;
|
|
9
|
+
regex?: boolean;
|
|
10
|
+
kind?: string;
|
|
11
|
+
exportedOnly?: boolean;
|
|
12
|
+
maxResults?: number;
|
|
13
|
+
contextLines?: number;
|
|
14
|
+
summary?: boolean;
|
|
15
|
+
}
|
package/src/resolve-target.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action-facing target resolution — routes normalized queries and
|
|
3
|
+
* maps typed resolver outcomes to user-facing strings and legacy types.
|
|
4
|
+
*
|
|
5
|
+
* This is the thin orchestration layer between tool/action params and
|
|
6
|
+
* the typed targeting pipeline. Formatting of disambiguation/error
|
|
7
|
+
* outcomes happens here, at the action boundary.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { CodeQueryParams as ActionParams } from "./query-params.ts";
|
|
1
11
|
import {
|
|
2
12
|
type ResolvedTarget,
|
|
3
13
|
type ResolvedTargetGroup,
|
|
@@ -5,33 +15,44 @@ import {
|
|
|
5
15
|
resolveFileTargetGroup,
|
|
6
16
|
resolveSymbolTarget,
|
|
7
17
|
} from "./target-resolution.ts";
|
|
8
|
-
import
|
|
18
|
+
import { normalizeQuery } from "./targeting/query.ts";
|
|
19
|
+
import type { ResolverDeps, TargetOutcome } from "./targeting/types.ts";
|
|
9
20
|
|
|
10
21
|
/**
|
|
11
|
-
* Resolve a target from action params.
|
|
12
|
-
*
|
|
22
|
+
* Resolve a target from action params.
|
|
23
|
+
*
|
|
24
|
+
* Returns either a {@link ResolvedTarget}, a {@link ResolvedTargetGroup},
|
|
25
|
+
* or a user-facing error/disambiguation string.
|
|
13
26
|
*/
|
|
14
27
|
export async function resolveTarget(
|
|
15
28
|
params: ActionParams,
|
|
16
29
|
cwd: string,
|
|
30
|
+
semantic?: import("./substrates/types.ts").SemanticSubstrate,
|
|
17
31
|
): Promise<ResolvedTarget | ResolvedTargetGroup | string> {
|
|
18
|
-
|
|
19
|
-
return "**Error:** Semantic actions require either anchored coordinates (`file`, `line`, `character`) or a `symbol` for discovery.";
|
|
20
|
-
}
|
|
32
|
+
const query = normalizeQuery(params);
|
|
21
33
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
switch (query.kind) {
|
|
35
|
+
case "anchored":
|
|
36
|
+
return resolveAnchored(query.file, query.line, query.character, cwd);
|
|
25
37
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
38
|
+
case "file":
|
|
39
|
+
return resolveByFile(query.file, cwd);
|
|
29
40
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
case "symbol": {
|
|
42
|
+
if (!semantic) {
|
|
43
|
+
return "**Error:** Symbol discovery requires active LSP. Use `file` + coordinates, or enable LSP and retry.";
|
|
44
|
+
}
|
|
45
|
+
const deps: ResolverDeps = { cwd, semantic };
|
|
46
|
+
return resolveBySymbol(query.symbol, deps, {
|
|
47
|
+
path: query.path,
|
|
48
|
+
kind: query.symbolKind,
|
|
49
|
+
exportedOnly: query.exportedOnly,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
33
52
|
|
|
34
|
-
|
|
53
|
+
case "invalid":
|
|
54
|
+
return `**Error:** ${query.reason}`;
|
|
55
|
+
}
|
|
35
56
|
}
|
|
36
57
|
|
|
37
58
|
function resolveAnchored(
|
|
@@ -43,7 +64,7 @@ function resolveAnchored(
|
|
|
43
64
|
const result = resolveAnchoredTarget(file, line, character, cwd);
|
|
44
65
|
if (result.kind === "error") return result.message;
|
|
45
66
|
if (result.kind === "resolved") return result.target;
|
|
46
|
-
return "**Error:** Unexpected
|
|
67
|
+
return "**Error:** Unexpected resolution outcome.";
|
|
47
68
|
}
|
|
48
69
|
|
|
49
70
|
async function resolveByFile(file: string, cwd: string): Promise<ResolvedTargetGroup | string> {
|
|
@@ -53,38 +74,35 @@ async function resolveByFile(file: string, cwd: string): Promise<ResolvedTargetG
|
|
|
53
74
|
}
|
|
54
75
|
|
|
55
76
|
async function resolveBySymbol(
|
|
56
|
-
|
|
57
|
-
|
|
77
|
+
symbol: string,
|
|
78
|
+
deps: ResolverDeps,
|
|
79
|
+
options?: { path?: string; kind?: string; exportedOnly?: boolean },
|
|
58
80
|
): Promise<ResolvedTarget | string> {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
81
|
+
const outcome: TargetOutcome = await resolveSymbolTarget(
|
|
82
|
+
symbol,
|
|
83
|
+
deps.cwd,
|
|
84
|
+
// biome-ignore lint/style/noNonNullAssertion: semantic is always set for symbol queries
|
|
85
|
+
deps.semantic!,
|
|
86
|
+
options,
|
|
87
|
+
);
|
|
64
88
|
|
|
65
|
-
if (
|
|
66
|
-
|
|
89
|
+
if (outcome.kind === "resolved") {
|
|
90
|
+
return outcome.target as ResolvedTarget;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (outcome.kind === "error") {
|
|
94
|
+
return outcome.message;
|
|
95
|
+
}
|
|
67
96
|
|
|
68
|
-
return formatDisambiguation(
|
|
97
|
+
return formatDisambiguation(symbol, outcome);
|
|
69
98
|
}
|
|
70
99
|
|
|
71
100
|
function formatDisambiguation(
|
|
72
|
-
|
|
73
|
-
result: {
|
|
74
|
-
candidates: Array<{
|
|
75
|
-
name: string;
|
|
76
|
-
kind: string | null;
|
|
77
|
-
container: string | null;
|
|
78
|
-
file: string;
|
|
79
|
-
line: number;
|
|
80
|
-
character: number;
|
|
81
|
-
rank: number;
|
|
82
|
-
}>;
|
|
83
|
-
omittedCount: number;
|
|
84
|
-
},
|
|
101
|
+
symbol: string,
|
|
102
|
+
result: Extract<TargetOutcome, { kind: "disambiguation" }>,
|
|
85
103
|
): string {
|
|
86
104
|
const lines: string[] = [];
|
|
87
|
-
lines.push(`# Disambiguation needed for \`${
|
|
105
|
+
lines.push(`# Disambiguation needed for \`${symbol}\``);
|
|
88
106
|
lines.push("");
|
|
89
107
|
const omitNote = result.omittedCount > 0 ? ` (+${result.omittedCount} more)` : "";
|
|
90
108
|
lines.push(
|
|
@@ -104,7 +122,7 @@ function formatDisambiguation(
|
|
|
104
122
|
if (result.candidates.length > 0) {
|
|
105
123
|
const first = result.candidates[0];
|
|
106
124
|
lines.push(
|
|
107
|
-
`Example:
|
|
125
|
+
`Example: rerun with \`file: "${first.file}"\`, \`line: ${first.line}\`, and \`character: ${first.character}\`.`,
|
|
108
126
|
);
|
|
109
127
|
}
|
|
110
128
|
|
package/src/search-helpers.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// Shared search helpers for
|
|
1
|
+
// Shared search helpers for code-intelligence search and routing helpers.
|
|
2
2
|
|
|
3
3
|
import { execFileSync } from "node:child_process";
|
|
4
4
|
import * as path from "node:path";
|
|
5
|
-
import { resolveToolPath, uriToFile as uriToFileShared } from "@mrclrchtr/supi-core/
|
|
5
|
+
import { resolveToolPath, uriToFile as uriToFileShared } from "@mrclrchtr/supi-core/path";
|
|
6
6
|
|
|
7
7
|
const LOW_SIGNAL_DIRS = new Set([
|
|
8
8
|
"node_modules",
|
|
@@ -71,7 +71,7 @@ export interface RipgrepRunResult {
|
|
|
71
71
|
/**
|
|
72
72
|
* Run ripgrep with JSON output and parse matches, filtering low-signal paths.
|
|
73
73
|
*
|
|
74
|
-
* This helper preserves the historical behavior used by
|
|
74
|
+
* This helper preserves the historical behavior used by internal
|
|
75
75
|
* actions: any ripgrep execution failure is treated like an empty match set.
|
|
76
76
|
* Call `runRipgrepDetailed()` when a caller needs to surface regex parse errors
|
|
77
77
|
* or other non-no-match failures to the agent.
|
|
@@ -80,7 +80,12 @@ export function runRipgrep(
|
|
|
80
80
|
pattern: string,
|
|
81
81
|
scopePath: string,
|
|
82
82
|
cwd: string,
|
|
83
|
-
opts?: {
|
|
83
|
+
opts?: {
|
|
84
|
+
maxMatches?: number;
|
|
85
|
+
contextLines?: number;
|
|
86
|
+
literal?: boolean;
|
|
87
|
+
filterLowSignal?: boolean;
|
|
88
|
+
},
|
|
84
89
|
): RgMatch[] {
|
|
85
90
|
return runRipgrepDetailed(pattern, scopePath, cwd, opts).matches;
|
|
86
91
|
}
|
|
@@ -93,7 +98,12 @@ export function runRipgrepDetailed(
|
|
|
93
98
|
pattern: string,
|
|
94
99
|
scopePath: string,
|
|
95
100
|
cwd: string,
|
|
96
|
-
opts?: {
|
|
101
|
+
opts?: {
|
|
102
|
+
maxMatches?: number;
|
|
103
|
+
contextLines?: number;
|
|
104
|
+
literal?: boolean;
|
|
105
|
+
filterLowSignal?: boolean;
|
|
106
|
+
},
|
|
97
107
|
): RipgrepRunResult {
|
|
98
108
|
const filter = opts?.filterLowSignal ?? true;
|
|
99
109
|
|
|
@@ -114,12 +124,15 @@ export function runRipgrepDetailed(
|
|
|
114
124
|
function buildRipgrepArgs(
|
|
115
125
|
pattern: string,
|
|
116
126
|
scopePath: string,
|
|
117
|
-
opts?: { maxMatches?: number; contextLines?: number },
|
|
127
|
+
opts?: { maxMatches?: number; contextLines?: number; literal?: boolean },
|
|
118
128
|
): string[] {
|
|
119
129
|
const args = ["--json", "-m", String(opts?.maxMatches ?? 30)];
|
|
120
130
|
if ((opts?.contextLines ?? 0) > 0) {
|
|
121
131
|
args.push("-C", String(opts?.contextLines ?? 0));
|
|
122
132
|
}
|
|
133
|
+
if (opts?.literal) {
|
|
134
|
+
args.push("-F");
|
|
135
|
+
}
|
|
123
136
|
args.push("-e", pattern, scopePath);
|
|
124
137
|
return args;
|
|
125
138
|
}
|