@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
package/src/tool/guidance.ts
CHANGED
|
@@ -1,18 +1,58 @@
|
|
|
1
|
-
// Prompt guidance and tool
|
|
1
|
+
// Prompt guidance and tool descriptions for the focused code-intelligence tool surface.
|
|
2
|
+
//
|
|
3
|
+
// Each code_* tool owns its base prompt guidelines (describing its own surface).
|
|
4
|
+
// Additional cross-family orchestration guidelines are appended to help the
|
|
5
|
+
// model choose between code_*, lsp_*, and tree_sitter_* tools.
|
|
2
6
|
|
|
3
|
-
import {
|
|
7
|
+
import { CODE_INTELLIGENCE_TOOL_SPECS, type CodeIntelligenceToolName } from "./tool-specs.ts";
|
|
4
8
|
|
|
5
|
-
export
|
|
9
|
+
export interface CodeIntelligenceToolPromptSurface {
|
|
10
|
+
description: string;
|
|
11
|
+
promptSnippet: string;
|
|
12
|
+
promptGuidelines: string[];
|
|
13
|
+
}
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
export type CodeIntelligenceToolPromptSurfaceMap = Record<
|
|
16
|
+
CodeIntelligenceToolName,
|
|
17
|
+
CodeIntelligenceToolPromptSurface
|
|
18
|
+
>;
|
|
8
19
|
|
|
9
|
-
|
|
20
|
+
// ── Cross-family orchestration guidelines ──────────────────────────────
|
|
21
|
+
//
|
|
22
|
+
// These are appended to the appropriate code_* tools so the model sees a
|
|
23
|
+
// coherent strategy for choosing between code_*, lsp_*, and tree_sitter_*
|
|
24
|
+
// tools. They do not re-own substrate metadata — each of the other packages
|
|
25
|
+
// describes and documents its own tools independently.
|
|
10
26
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
]
|
|
27
|
+
const ORCHESTRATION_GUIDELINES: Record<CodeIntelligenceToolName, string[]> = {
|
|
28
|
+
code_brief: [
|
|
29
|
+
"After code_brief, use lsp_hover/lsp_definition/lsp_references for semantic detail or tree_sitter_* for quick structure.",
|
|
30
|
+
],
|
|
31
|
+
code_map: ["Use code_brief instead when you need prioritized guidance."],
|
|
32
|
+
code_relations: [
|
|
33
|
+
"Follow caller results with lsp_references/lsp_definition; use tree_sitter_callees for structural outgoing calls.",
|
|
34
|
+
],
|
|
35
|
+
code_affected: [
|
|
36
|
+
"Use lsp_references instead when you need a plain reference list, not impact analysis.",
|
|
37
|
+
],
|
|
38
|
+
code_pattern: [
|
|
39
|
+
"Use tree_sitter_query or lsp_hover/lsp_definition when you need structure or semantic precision.",
|
|
40
|
+
],
|
|
41
|
+
};
|
|
16
42
|
|
|
17
|
-
|
|
18
|
-
|
|
43
|
+
// ── Surface builder ────────────────────────────────────────────────────
|
|
44
|
+
|
|
45
|
+
export function buildCodeIntelligenceToolPromptSurfaces(): CodeIntelligenceToolPromptSurfaceMap {
|
|
46
|
+
return Object.fromEntries(
|
|
47
|
+
CODE_INTELLIGENCE_TOOL_SPECS.map((spec) => [
|
|
48
|
+
spec.name,
|
|
49
|
+
{
|
|
50
|
+
description: spec.description,
|
|
51
|
+
promptSnippet: spec.promptSnippet,
|
|
52
|
+
promptGuidelines: [...spec.basePromptGuidelines, ...ORCHESTRATION_GUIDELINES[spec.name]],
|
|
53
|
+
} satisfies CodeIntelligenceToolPromptSurface,
|
|
54
|
+
]),
|
|
55
|
+
) as CodeIntelligenceToolPromptSurfaceMap;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const CODE_INTELLIGENCE_TOOL_PROMPT_SURFACES = buildCodeIntelligenceToolPromptSurfaces();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import {
|
|
3
|
+
CODE_INTELLIGENCE_TOOL_PROMPT_SURFACES,
|
|
4
|
+
type CodeIntelligenceToolPromptSurfaceMap,
|
|
5
|
+
} from "./guidance.ts";
|
|
6
|
+
import { CODE_INTELLIGENCE_TOOL_SPECS } from "./tool-specs.ts";
|
|
7
|
+
|
|
8
|
+
/** Register the focused code-intelligence tool surface from shared specs. */
|
|
9
|
+
export function registerCodeIntelligenceTools(
|
|
10
|
+
pi: ExtensionAPI,
|
|
11
|
+
promptSurfaces: CodeIntelligenceToolPromptSurfaceMap = CODE_INTELLIGENCE_TOOL_PROMPT_SURFACES,
|
|
12
|
+
): void {
|
|
13
|
+
for (const spec of CODE_INTELLIGENCE_TOOL_SPECS) {
|
|
14
|
+
const surface = promptSurfaces[spec.name];
|
|
15
|
+
pi.registerTool({
|
|
16
|
+
name: spec.name,
|
|
17
|
+
label: spec.label,
|
|
18
|
+
description: surface.description,
|
|
19
|
+
promptSnippet: surface.promptSnippet,
|
|
20
|
+
promptGuidelines: surface.promptGuidelines,
|
|
21
|
+
parameters: spec.parameters,
|
|
22
|
+
// biome-ignore lint/complexity/useMaxParams: pi ToolDefinition.execute signature
|
|
23
|
+
execute: async (_toolCallId, params, _signal, _onUpdate, ctx: ExtensionContext) => {
|
|
24
|
+
const { content, details } = await spec.run(params, { cwd: ctx.cwd });
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: "text" as const, text: content }],
|
|
27
|
+
details,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { StringEnum } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type TSchema, Type } from "typebox";
|
|
3
|
+
import type { CodeIntelResult } from "../types.ts";
|
|
4
|
+
import { executeAffectedTool } from "./execute-affected.ts";
|
|
5
|
+
import { executeBriefTool } from "./execute-brief.ts";
|
|
6
|
+
import { executeMapTool } from "./execute-map.ts";
|
|
7
|
+
import { executePatternTool } from "./execute-pattern.ts";
|
|
8
|
+
import { executeRelationsTool } from "./execute-relations.ts";
|
|
9
|
+
|
|
10
|
+
const PathParam = Type.String({ description: "Scope path" });
|
|
11
|
+
const FileParam = Type.String({ description: "Target file" });
|
|
12
|
+
const LineParam = Type.Number({ description: "1-based line" });
|
|
13
|
+
const CharacterParam = Type.Number({ description: "1-based UTF-16 column" });
|
|
14
|
+
const SymbolParam = Type.String({ description: "Symbol name" });
|
|
15
|
+
const PatternParam = Type.String({ description: "Search pattern" });
|
|
16
|
+
const RegexParam = Type.Boolean({ description: "Regex search" });
|
|
17
|
+
const ExportedOnlyParam = Type.Boolean({ description: "Exported symbols only" });
|
|
18
|
+
const MaxResultsParam = Type.Number({ description: "Max results" });
|
|
19
|
+
const ContextLinesParam = Type.Number({ description: "Context lines" });
|
|
20
|
+
const SummaryParam = Type.Boolean({ description: "Summarize by directory" });
|
|
21
|
+
const StructuredPatternKindParam = Type.String({
|
|
22
|
+
description: "Structured kind: definition | export | import",
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const CODE_INTELLIGENCE_TOOL_NAMES = [
|
|
26
|
+
"code_brief",
|
|
27
|
+
"code_map",
|
|
28
|
+
"code_relations",
|
|
29
|
+
"code_affected",
|
|
30
|
+
"code_pattern",
|
|
31
|
+
] as const;
|
|
32
|
+
export type CodeIntelligenceToolName = (typeof CODE_INTELLIGENCE_TOOL_NAMES)[number];
|
|
33
|
+
|
|
34
|
+
export const CODE_RELATION_KIND_NAMES = ["callers", "callees", "implementations"] as const;
|
|
35
|
+
export type CodeRelationsKind = (typeof CODE_RELATION_KIND_NAMES)[number];
|
|
36
|
+
|
|
37
|
+
const CodeRelationsKindEnum = StringEnum(CODE_RELATION_KIND_NAMES);
|
|
38
|
+
|
|
39
|
+
const CodeBriefParameters = Type.Object(
|
|
40
|
+
{
|
|
41
|
+
path: Type.Optional(PathParam),
|
|
42
|
+
file: Type.Optional(FileParam),
|
|
43
|
+
line: Type.Optional(LineParam),
|
|
44
|
+
character: Type.Optional(CharacterParam),
|
|
45
|
+
symbol: Type.Optional(SymbolParam),
|
|
46
|
+
maxResults: Type.Optional(MaxResultsParam),
|
|
47
|
+
},
|
|
48
|
+
{ additionalProperties: false },
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const CodeMapParameters = Type.Object(
|
|
52
|
+
{
|
|
53
|
+
path: Type.Optional(Type.String({ description: "Project/package/dir path" })),
|
|
54
|
+
},
|
|
55
|
+
{ additionalProperties: false },
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const CodeRelationsParameters = Type.Object(
|
|
59
|
+
{
|
|
60
|
+
kind: CodeRelationsKindEnum,
|
|
61
|
+
path: Type.Optional(PathParam),
|
|
62
|
+
file: Type.Optional(FileParam),
|
|
63
|
+
line: Type.Optional(LineParam),
|
|
64
|
+
character: Type.Optional(CharacterParam),
|
|
65
|
+
symbol: Type.Optional(SymbolParam),
|
|
66
|
+
exportedOnly: Type.Optional(ExportedOnlyParam),
|
|
67
|
+
maxResults: Type.Optional(MaxResultsParam),
|
|
68
|
+
},
|
|
69
|
+
{ additionalProperties: false },
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const CodeAffectedParameters = Type.Object(
|
|
73
|
+
{
|
|
74
|
+
file: Type.Optional(FileParam),
|
|
75
|
+
line: Type.Optional(LineParam),
|
|
76
|
+
character: Type.Optional(CharacterParam),
|
|
77
|
+
symbol: Type.Optional(SymbolParam),
|
|
78
|
+
exportedOnly: Type.Optional(ExportedOnlyParam),
|
|
79
|
+
maxResults: Type.Optional(MaxResultsParam),
|
|
80
|
+
},
|
|
81
|
+
{ additionalProperties: false },
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const CodePatternParameters = Type.Object(
|
|
85
|
+
{
|
|
86
|
+
path: Type.Optional(PathParam),
|
|
87
|
+
pattern: PatternParam,
|
|
88
|
+
regex: Type.Optional(RegexParam),
|
|
89
|
+
kind: Type.Optional(StructuredPatternKindParam),
|
|
90
|
+
maxResults: Type.Optional(MaxResultsParam),
|
|
91
|
+
contextLines: Type.Optional(ContextLinesParam),
|
|
92
|
+
summary: Type.Optional(SummaryParam),
|
|
93
|
+
},
|
|
94
|
+
{ additionalProperties: false },
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
export interface CodeIntelligenceToolDefinitionSpec {
|
|
98
|
+
name: CodeIntelligenceToolName;
|
|
99
|
+
label: string;
|
|
100
|
+
description: string;
|
|
101
|
+
promptSnippet: string;
|
|
102
|
+
basePromptGuidelines: string[];
|
|
103
|
+
parameters: TSchema;
|
|
104
|
+
run: (params: unknown, ctx: { cwd: string }) => Promise<CodeIntelResult> | CodeIntelResult;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export const CODE_INTELLIGENCE_TOOL_SPECS = [
|
|
108
|
+
{
|
|
109
|
+
name: "code_brief",
|
|
110
|
+
label: "Code Brief",
|
|
111
|
+
description: "Prioritized brief for a project, package, directory, file, or symbol.",
|
|
112
|
+
promptSnippet: "code_brief — prioritized code orientation",
|
|
113
|
+
basePromptGuidelines: [
|
|
114
|
+
"Use code_brief for prioritized orientation on a project, package, file, or symbol.",
|
|
115
|
+
"Use code_brief before deeper drill-down when you need a start-here recommendation.",
|
|
116
|
+
],
|
|
117
|
+
parameters: CodeBriefParameters,
|
|
118
|
+
run: (params, ctx) => executeBriefTool(params as Parameters<typeof executeBriefTool>[0], ctx),
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: "code_map",
|
|
122
|
+
label: "Code Map",
|
|
123
|
+
description: "Factual map of a repo, package, or directory.",
|
|
124
|
+
promptSnippet: "code_map — factual repo or directory map",
|
|
125
|
+
basePromptGuidelines: ["Use code_map for counts, directories, language mix, and landmarks."],
|
|
126
|
+
parameters: CodeMapParameters,
|
|
127
|
+
run: (params, ctx) => executeMapTool(params as Parameters<typeof executeMapTool>[0], ctx),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "code_relations",
|
|
131
|
+
label: "Code Relations",
|
|
132
|
+
description: "Trace callers, callees, or implementations for a resolved target.",
|
|
133
|
+
promptSnippet: "code_relations — callers, callees, or implementations",
|
|
134
|
+
basePromptGuidelines: [
|
|
135
|
+
"Use code_relations(kind) for `callers`, `callees`, or `implementations`.",
|
|
136
|
+
],
|
|
137
|
+
parameters: CodeRelationsParameters,
|
|
138
|
+
run: (params, ctx) =>
|
|
139
|
+
executeRelationsTool(params as Parameters<typeof executeRelationsTool>[0], ctx),
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: "code_affected",
|
|
143
|
+
label: "Code Affected",
|
|
144
|
+
description: "Estimate blast radius and downstream impact for a target.",
|
|
145
|
+
promptSnippet: "code_affected — blast radius and impact",
|
|
146
|
+
basePromptGuidelines: [
|
|
147
|
+
"Use code_affected before edits to estimate blast radius and follow-up checks.",
|
|
148
|
+
],
|
|
149
|
+
parameters: CodeAffectedParameters,
|
|
150
|
+
run: (params, ctx) =>
|
|
151
|
+
executeAffectedTool(params as Parameters<typeof executeAffectedTool>[0], ctx),
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "code_pattern",
|
|
155
|
+
label: "Code Pattern",
|
|
156
|
+
description: "Run explicit search with literal, regex, or structured matching.",
|
|
157
|
+
promptSnippet: "code_pattern — explicit code search",
|
|
158
|
+
basePromptGuidelines: [
|
|
159
|
+
"Use code_pattern for literal, regex, or structured search in a bounded path.",
|
|
160
|
+
],
|
|
161
|
+
parameters: CodePatternParameters,
|
|
162
|
+
run: (params, ctx) =>
|
|
163
|
+
executePatternTool(params as Parameters<typeof executePatternTool>[0], ctx),
|
|
164
|
+
},
|
|
165
|
+
] as const satisfies readonly CodeIntelligenceToolDefinitionSpec[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import type { CodeQueryParams } from "../query-params.ts";
|
|
3
|
+
import { normalizePath } from "../search-helpers.ts";
|
|
4
|
+
|
|
5
|
+
const STRUCTURED_PATTERN_KINDS = new Set(["definition", "export", "import"]);
|
|
6
|
+
|
|
7
|
+
/** Shared validation for focused tool inputs that can anchor into files. */
|
|
8
|
+
export function validateFocusedToolParams(
|
|
9
|
+
params: Pick<CodeQueryParams, "path" | "file" | "line" | "character">,
|
|
10
|
+
cwd: string,
|
|
11
|
+
): string | null {
|
|
12
|
+
if (params.path && (params.line != null || params.character != null)) {
|
|
13
|
+
return "**Error:** `line` and `character` require `file`, not `path`. Use `path` to scope/focus; use `file` to anchor a position.";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (params.file) {
|
|
17
|
+
const resolvedFile = normalizePath(params.file, cwd);
|
|
18
|
+
if (fs.existsSync(resolvedFile) && fs.statSync(resolvedFile).isDirectory()) {
|
|
19
|
+
return "**Error:** `file` points to a directory. Use `path` to scope a directory; use `file` to anchor a position in a file.";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if ((params.line != null || params.character != null) && !params.file) {
|
|
24
|
+
return "**Error:** `line` and `character` require `file`.";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Shared validation for explicit pattern-tool input. */
|
|
31
|
+
export function validatePatternToolParams(
|
|
32
|
+
params: Pick<CodeQueryParams, "path" | "file" | "line" | "character" | "kind">,
|
|
33
|
+
cwd: string,
|
|
34
|
+
): string | null {
|
|
35
|
+
const commonError = validateFocusedToolParams(params, cwd);
|
|
36
|
+
if (commonError) return commonError;
|
|
37
|
+
|
|
38
|
+
if (params.kind && !STRUCTURED_PATTERN_KINDS.has(params.kind)) {
|
|
39
|
+
return "**Error:** `code_pattern` `kind` must be one of `definition`, `export`, or `import`.";
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return null;
|
|
43
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -17,6 +17,15 @@ export interface BriefDetails {
|
|
|
17
17
|
prioritySignals?: PrioritySignalsSummary | null;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/** Structured details metadata for factual map results. */
|
|
21
|
+
export interface MapDetails {
|
|
22
|
+
scope: string | null;
|
|
23
|
+
totalFiles: number;
|
|
24
|
+
childDirectoryCount: number;
|
|
25
|
+
landmarkCount: number;
|
|
26
|
+
nextQueries: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
/** Structured details metadata for relationship and pattern results. */
|
|
21
30
|
export interface SearchDetails {
|
|
22
31
|
confidence: ConfidenceMode;
|
|
@@ -56,6 +65,7 @@ export interface CodeIntelResult {
|
|
|
56
65
|
content: string;
|
|
57
66
|
details?:
|
|
58
67
|
| { type: "brief"; data: BriefDetails }
|
|
68
|
+
| { type: "map"; data: MapDetails }
|
|
59
69
|
| { type: "search"; data: SearchDetails }
|
|
60
70
|
| { type: "affected"; data: AffectedDetails };
|
|
61
71
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Typed overview data builder from ArchitectureModel.
|
|
2
|
+
|
|
3
|
+
import type { ArchitectureModel } from "../architecture.ts";
|
|
4
|
+
import { formatGitContext, gatherGitContext } from "../git-context.ts";
|
|
5
|
+
import type { OverviewData, OverviewModule } from "./types.ts";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Build structured overview data from an architecture model.
|
|
9
|
+
* No markdown rendering — callers pass the result to a presentation renderer.
|
|
10
|
+
*/
|
|
11
|
+
export function buildOverviewData(model: ArchitectureModel): OverviewData | null {
|
|
12
|
+
if (model.modules.length === 0) return null;
|
|
13
|
+
|
|
14
|
+
const dependedOn = new Set(model.edges.map((e) => e.to));
|
|
15
|
+
|
|
16
|
+
const modules: OverviewModule[] = model.modules.slice(0, 8).map((mod) => ({
|
|
17
|
+
name: mod.name,
|
|
18
|
+
shortName: mod.name.replace(/^@[^/]+\//, ""),
|
|
19
|
+
description: mod.description,
|
|
20
|
+
isLeaf: !dependedOn.has(mod.name),
|
|
21
|
+
internalDeps: mod.internalDeps,
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
const omittedModuleCount = Math.max(0, model.modules.length - 8);
|
|
25
|
+
|
|
26
|
+
const gitCtx = gatherGitContext(model.root);
|
|
27
|
+
const gitContextOverview = gitCtx ? formatGitContext(gitCtx) : null;
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
projectName: model.name,
|
|
31
|
+
projectDescription: model.description,
|
|
32
|
+
modules,
|
|
33
|
+
omittedModuleCount,
|
|
34
|
+
gitContextOverview,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
// Affected orchestration use-case — blast-radius analysis for a symbol change.
|
|
2
|
+
// Coordinates target resolution, reference collection, architecture analysis, and
|
|
3
|
+
// returns fully rendered content + details metadata.
|
|
4
|
+
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { buildArchitectureModel, findModuleForPath, getDependents } from "../architecture.ts";
|
|
7
|
+
import {
|
|
8
|
+
renderAffectedFileLevel,
|
|
9
|
+
renderAffectedSingle,
|
|
10
|
+
} from "../presentation/markdown/affected.ts";
|
|
11
|
+
import { summarizePrioritySignalsForFiles } from "../prioritization-signals.ts";
|
|
12
|
+
import { resolveTarget } from "../resolve-target.ts";
|
|
13
|
+
import { isResolvedTargetGroup } from "../semantic-action-helpers.ts";
|
|
14
|
+
import type { SemanticSubstrate } from "../substrates/types.ts";
|
|
15
|
+
import type { ResolvedTarget, ResolvedTargetGroup } from "../target-resolution.ts";
|
|
16
|
+
import type { AffectedDetails, CodeIntelResult, ConfidenceMode } from "../types.ts";
|
|
17
|
+
import {
|
|
18
|
+
aggregatePerTarget,
|
|
19
|
+
collectReferences,
|
|
20
|
+
type ReferenceCollection,
|
|
21
|
+
} from "./support/semantic-references.ts";
|
|
22
|
+
|
|
23
|
+
export interface AffectedInput {
|
|
24
|
+
file?: string;
|
|
25
|
+
line?: number;
|
|
26
|
+
character?: number;
|
|
27
|
+
symbol?: string;
|
|
28
|
+
exportedOnly?: boolean;
|
|
29
|
+
maxResults?: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface AffectedDeps {
|
|
33
|
+
cwd: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Execute the affected use-case — target resolution, reference collection, analysis, and rendering. */
|
|
37
|
+
export async function executeAffected(
|
|
38
|
+
input: AffectedInput,
|
|
39
|
+
deps: AffectedDeps,
|
|
40
|
+
): Promise<CodeIntelResult> {
|
|
41
|
+
const semantic: SemanticSubstrate = await import("../substrates/lsp-adapter.ts").then((m) =>
|
|
42
|
+
m.createSemanticSubstrate(deps.cwd),
|
|
43
|
+
);
|
|
44
|
+
const target = await resolveTarget(input, deps.cwd, semantic);
|
|
45
|
+
|
|
46
|
+
if (typeof target === "string") {
|
|
47
|
+
return {
|
|
48
|
+
content: target,
|
|
49
|
+
details: {
|
|
50
|
+
type: "affected" as const,
|
|
51
|
+
data: {
|
|
52
|
+
confidence: "unavailable",
|
|
53
|
+
directCount: 0,
|
|
54
|
+
downstreamCount: 0,
|
|
55
|
+
riskLevel: "low",
|
|
56
|
+
checkNext: [],
|
|
57
|
+
likelyTests: [],
|
|
58
|
+
omittedCount: 0,
|
|
59
|
+
nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (isResolvedTargetGroup(target)) {
|
|
66
|
+
return executeFileLevelAffected(target, input, deps.cwd, semantic);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const symbolName =
|
|
70
|
+
target.name ?? `symbol at ${path.relative(deps.cwd, target.file)}:${target.displayLine}`;
|
|
71
|
+
return executeSingleAffected(target, symbolName, input, deps.cwd, semantic);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ── Single target ────────────────────────────────────────────────────
|
|
75
|
+
|
|
76
|
+
interface ImpactAnalysis {
|
|
77
|
+
confidence: ConfidenceMode;
|
|
78
|
+
affectedFiles: Set<string>;
|
|
79
|
+
affectedModules: Set<string>;
|
|
80
|
+
downstreamCount: number;
|
|
81
|
+
checkNext: string[];
|
|
82
|
+
likelyTests: string[];
|
|
83
|
+
riskLevel: "low" | "medium" | "high";
|
|
84
|
+
externalRefs: number;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// biome-ignore lint/complexity/useMaxParams: substrate injection and analysis inputs keep related parameters explicit
|
|
88
|
+
async function executeSingleAffected(
|
|
89
|
+
target: ResolvedTarget,
|
|
90
|
+
symbolName: string,
|
|
91
|
+
input: AffectedInput,
|
|
92
|
+
cwd: string,
|
|
93
|
+
semantic: SemanticSubstrate,
|
|
94
|
+
): Promise<CodeIntelResult> {
|
|
95
|
+
const refs = await collectReferences(target, cwd, semantic);
|
|
96
|
+
const model = await buildArchitectureModel(cwd);
|
|
97
|
+
const analysis = analyzeImpact(refs, model, target.name, cwd);
|
|
98
|
+
|
|
99
|
+
const prioritySignals = summarizePrioritySignalsForFiles(
|
|
100
|
+
cwd,
|
|
101
|
+
analysis.affectedFiles.size > 0 ? [...analysis.affectedFiles] : [target.file],
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
const content = renderAffectedSingle({
|
|
105
|
+
symbolName,
|
|
106
|
+
refs,
|
|
107
|
+
analysis,
|
|
108
|
+
maxResults: input.maxResults ?? 8,
|
|
109
|
+
prioritySignals,
|
|
110
|
+
target,
|
|
111
|
+
cwd,
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const details: AffectedDetails = {
|
|
115
|
+
confidence: analysis.confidence,
|
|
116
|
+
directCount: refs.refs.length,
|
|
117
|
+
downstreamCount: analysis.downstreamCount,
|
|
118
|
+
riskLevel: analysis.riskLevel,
|
|
119
|
+
checkNext: analysis.checkNext,
|
|
120
|
+
likelyTests: analysis.likelyTests,
|
|
121
|
+
omittedCount: computeOmittedCount(analysis.externalRefs, analysis.affectedFiles.size, input),
|
|
122
|
+
nextQueries: buildAffectedNextQueries(target, symbolName, cwd),
|
|
123
|
+
prioritySignals,
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
return { content, details: { type: "affected" as const, data: details } };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ── File-level target group ──────────────────────────────────────────
|
|
130
|
+
|
|
131
|
+
async function executeFileLevelAffected(
|
|
132
|
+
targetGroup: ResolvedTargetGroup,
|
|
133
|
+
input: AffectedInput,
|
|
134
|
+
cwd: string,
|
|
135
|
+
semantic: SemanticSubstrate,
|
|
136
|
+
): Promise<CodeIntelResult> {
|
|
137
|
+
const perTarget = await Promise.all(
|
|
138
|
+
targetGroup.targets.map(async (t) => ({
|
|
139
|
+
target: t,
|
|
140
|
+
refs: await collectReferences(t, cwd, semantic),
|
|
141
|
+
})),
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
const aggregated = await aggregatePerTarget(targetGroup.targets, (t) =>
|
|
145
|
+
collectReferences(t, cwd, semantic),
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
const model = await buildArchitectureModel(cwd);
|
|
149
|
+
const analysis = analyzeImpact(aggregated, model, null, cwd);
|
|
150
|
+
|
|
151
|
+
const prioritySignals = summarizePrioritySignalsForFiles(
|
|
152
|
+
cwd,
|
|
153
|
+
analysis.affectedFiles.size > 0 ? [...analysis.affectedFiles] : [targetGroup.file],
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
const content = renderAffectedFileLevel({
|
|
157
|
+
targetGroup,
|
|
158
|
+
perTarget,
|
|
159
|
+
aggregated,
|
|
160
|
+
analysis,
|
|
161
|
+
maxResults: input.maxResults ?? 8,
|
|
162
|
+
prioritySignals,
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const details: AffectedDetails = {
|
|
166
|
+
confidence: analysis.confidence,
|
|
167
|
+
directCount: aggregated.refs.length,
|
|
168
|
+
downstreamCount: analysis.downstreamCount,
|
|
169
|
+
riskLevel: analysis.riskLevel,
|
|
170
|
+
checkNext: analysis.checkNext,
|
|
171
|
+
likelyTests: analysis.likelyTests,
|
|
172
|
+
omittedCount: computeOmittedCount(analysis.externalRefs, analysis.affectedFiles.size, input),
|
|
173
|
+
nextQueries: [
|
|
174
|
+
"`code_brief` on the most-affected module for deeper context",
|
|
175
|
+
"Use `file` + coordinates to inspect one exported target precisely",
|
|
176
|
+
],
|
|
177
|
+
prioritySignals,
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
return { content, details: { type: "affected" as const, data: details } };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// ── Impact analysis ──────────────────────────────────────────────────
|
|
184
|
+
|
|
185
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: impact analysis with downstream module traversal and multiple risk dimensions is clearer as one function
|
|
186
|
+
function analyzeImpact(
|
|
187
|
+
result: ReferenceCollection,
|
|
188
|
+
model: Awaited<ReturnType<typeof buildArchitectureModel>>,
|
|
189
|
+
_symbolName: string | null,
|
|
190
|
+
cwd: string,
|
|
191
|
+
): ImpactAnalysis {
|
|
192
|
+
const affectedFiles = new Set(result.refs.map((r) => r.file));
|
|
193
|
+
const affectedModules = new Set<string>();
|
|
194
|
+
const checkNext: string[] = [];
|
|
195
|
+
let downstreamCount = 0;
|
|
196
|
+
|
|
197
|
+
if (model) {
|
|
198
|
+
for (const file of affectedFiles) {
|
|
199
|
+
const mod = findModuleForPath(model, path.resolve(cwd, file));
|
|
200
|
+
if (mod) affectedModules.add(mod.name);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const downstreamModules = new Set<string>();
|
|
204
|
+
const queue = [...affectedModules];
|
|
205
|
+
while (queue.length > 0) {
|
|
206
|
+
const modName = queue.shift() as string;
|
|
207
|
+
for (const dep of getDependents(model, modName)) {
|
|
208
|
+
if (!affectedModules.has(dep.name) && !downstreamModules.has(dep.name)) {
|
|
209
|
+
downstreamModules.add(dep.name);
|
|
210
|
+
queue.push(dep.name);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
downstreamCount = downstreamModules.size;
|
|
215
|
+
|
|
216
|
+
for (const modName of [...affectedModules, ...downstreamModules].slice(0, 3)) {
|
|
217
|
+
const mod = model.modules.find((m) => m.name === modName);
|
|
218
|
+
if (mod) checkNext.push(`${mod.name.replace(/^@[^/]+\//, "")} (\`${mod.relativePath}\`)`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const likelyTests = findLikelyTests(affectedFiles);
|
|
223
|
+
const riskLevel = assessRisk(
|
|
224
|
+
result.refs.length + result.externalCount,
|
|
225
|
+
affectedModules.size,
|
|
226
|
+
downstreamCount,
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
return {
|
|
230
|
+
confidence: result.confidence,
|
|
231
|
+
affectedFiles,
|
|
232
|
+
affectedModules,
|
|
233
|
+
downstreamCount,
|
|
234
|
+
checkNext,
|
|
235
|
+
likelyTests,
|
|
236
|
+
riskLevel,
|
|
237
|
+
externalRefs: result.externalCount,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function findLikelyTests(affectedFiles: Set<string>): string[] {
|
|
242
|
+
const tests: string[] = [];
|
|
243
|
+
for (const file of affectedFiles) {
|
|
244
|
+
if (file.includes("test") || file.includes("spec") || file.includes("__tests__")) {
|
|
245
|
+
tests.push(file);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return tests.slice(0, 3);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function assessRisk(
|
|
252
|
+
totalRefs: number,
|
|
253
|
+
moduleCount: number,
|
|
254
|
+
downstreamCount: number,
|
|
255
|
+
): "low" | "medium" | "high" {
|
|
256
|
+
if (totalRefs > 10 || moduleCount > 3 || downstreamCount > 1) return "high";
|
|
257
|
+
if (totalRefs > 3 || moduleCount > 1 || downstreamCount >= 1) return "medium";
|
|
258
|
+
return "low";
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function computeOmittedCount(
|
|
262
|
+
externalRefs: number,
|
|
263
|
+
affectedFileCount: number,
|
|
264
|
+
input: AffectedInput,
|
|
265
|
+
): number {
|
|
266
|
+
return externalRefs + Math.max(0, affectedFileCount - (input.maxResults ?? 8));
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function buildAffectedNextQueries(
|
|
270
|
+
target: ResolvedTarget,
|
|
271
|
+
symbolName: string,
|
|
272
|
+
cwd: string,
|
|
273
|
+
): string[] {
|
|
274
|
+
const relPath = path.relative(cwd, target.file);
|
|
275
|
+
return [
|
|
276
|
+
`\`code_brief\` with \`file: "${relPath}"\`, \`line: ${target.displayLine}\`, and \`character: ${target.displayCharacter}\` for deeper context around ${symbolName}`,
|
|
277
|
+
`\`code_relations\` with \`kind: "callers"\`, \`file: "${relPath}"\`, \`line: ${target.displayLine}\`, and \`character: ${target.displayCharacter}\` for call sites`,
|
|
278
|
+
];
|
|
279
|
+
}
|