lsp-intelligence 0.1.2 → 0.2.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 +12 -7
- package/dist/analysis/pattern/collectSearchFiles.d.ts +5 -0
- package/dist/analysis/pattern/collectSearchFiles.js +38 -0
- package/dist/analysis/pattern/collectSearchFiles.js.map +1 -0
- package/dist/analysis/pattern/runPatternSearch.d.ts +17 -0
- package/dist/analysis/pattern/runPatternSearch.js +63 -0
- package/dist/analysis/pattern/runPatternSearch.js.map +1 -0
- package/dist/analysis/ts/extractDeclarations.d.ts +7 -0
- package/dist/analysis/ts/extractDeclarations.js +93 -0
- package/dist/analysis/ts/extractDeclarations.js.map +1 -0
- package/dist/analysis/ts/extractUsages.d.ts +7 -0
- package/dist/analysis/ts/extractUsages.js +120 -0
- package/dist/analysis/ts/extractUsages.js.map +1 -0
- package/dist/analysis/ts/parseSourceFile.d.ts +10 -0
- package/dist/analysis/ts/parseSourceFile.js +28 -0
- package/dist/analysis/ts/parseSourceFile.js.map +1 -0
- package/dist/analysis/ts/snippets.d.ts +14 -0
- package/dist/analysis/ts/snippets.js +29 -0
- package/dist/analysis/ts/snippets.js.map +1 -0
- package/dist/analysis/ts/structuralPredicates.d.ts +10 -0
- package/dist/analysis/ts/structuralPredicates.js +170 -0
- package/dist/analysis/ts/structuralPredicates.js.map +1 -0
- package/dist/ast/diffDeclarationShapes.d.ts +16 -0
- package/dist/ast/diffDeclarationShapes.js +179 -0
- package/dist/ast/diffDeclarationShapes.js.map +1 -0
- package/dist/ast/extractExportDeclarations.d.ts +21 -0
- package/dist/ast/extractExportDeclarations.js +218 -0
- package/dist/ast/extractExportDeclarations.js.map +1 -0
- package/dist/ast/findNodeAtPosition.d.ts +12 -0
- package/dist/ast/findNodeAtPosition.js +75 -0
- package/dist/ast/findNodeAtPosition.js.map +1 -0
- package/dist/ast/parseFile.d.ts +10 -0
- package/dist/ast/parseFile.js +29 -0
- package/dist/ast/parseFile.js.map +1 -0
- package/dist/engine/waitForDiagnostics.d.ts +7 -0
- package/dist/engine/waitForDiagnostics.js +16 -0
- package/dist/engine/waitForDiagnostics.js.map +1 -0
- package/dist/git/getBaseFileContent.d.ts +5 -0
- package/dist/git/getBaseFileContent.js +16 -0
- package/dist/git/getBaseFileContent.js.map +1 -0
- package/dist/git/getChangedFiles.d.ts +4 -0
- package/dist/git/getChangedFiles.js +21 -0
- package/dist/git/getChangedFiles.js.map +1 -0
- package/dist/git/getChangedHunks.d.ts +13 -0
- package/dist/git/getChangedHunks.js +51 -0
- package/dist/git/getChangedHunks.js.map +1 -0
- package/dist/git/getMergeBase.d.ts +5 -0
- package/dist/git/getMergeBase.js +23 -0
- package/dist/git/getMergeBase.js.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/resolve/searchScope.d.ts +11 -0
- package/dist/resolve/searchScope.js +52 -0
- package/dist/resolve/searchScope.js.map +1 -0
- package/dist/resolve/targetResolver.d.ts +33 -0
- package/dist/resolve/targetResolver.js +84 -0
- package/dist/resolve/targetResolver.js.map +1 -0
- package/dist/search/families/behaviorFamilies.d.ts +22 -0
- package/dist/search/families/behaviorFamilies.js +90 -0
- package/dist/search/families/behaviorFamilies.js.map +1 -0
- package/dist/search/index/declarationIndex.d.ts +6 -0
- package/dist/search/index/declarationIndex.js +13 -0
- package/dist/search/index/declarationIndex.js.map +1 -0
- package/dist/search/index/types.d.ts +1 -0
- package/dist/search/index/types.js +2 -0
- package/dist/search/index/types.js.map +1 -0
- package/dist/search/index/usageIndex.d.ts +6 -0
- package/dist/search/index/usageIndex.js +13 -0
- package/dist/search/index/usageIndex.js.map +1 -0
- package/dist/search/index/workspaceIndex.d.ts +8 -0
- package/dist/search/index/workspaceIndex.js +91 -0
- package/dist/search/index/workspaceIndex.js.map +1 -0
- package/dist/search/query/parseQuery.d.ts +9 -0
- package/dist/search/query/parseQuery.js +244 -0
- package/dist/search/query/parseQuery.js.map +1 -0
- package/dist/search/query/planQuery.d.ts +9 -0
- package/dist/search/query/planQuery.js +58 -0
- package/dist/search/query/planQuery.js.map +1 -0
- package/dist/search/ranking/assessConfidence.d.ts +6 -0
- package/dist/search/ranking/assessConfidence.js +25 -0
- package/dist/search/ranking/assessConfidence.js.map +1 -0
- package/dist/search/ranking/mergeCandidates.d.ts +10 -0
- package/dist/search/ranking/mergeCandidates.js +46 -0
- package/dist/search/ranking/mergeCandidates.js.map +1 -0
- package/dist/search/ranking/rankCandidates.d.ts +12 -0
- package/dist/search/ranking/rankCandidates.js +58 -0
- package/dist/search/ranking/rankCandidates.js.map +1 -0
- package/dist/search/retrievers/behaviorRetriever.d.ts +7 -0
- package/dist/search/retrievers/behaviorRetriever.js +91 -0
- package/dist/search/retrievers/behaviorRetriever.js.map +1 -0
- package/dist/search/retrievers/identifierRetriever.d.ts +7 -0
- package/dist/search/retrievers/identifierRetriever.js +66 -0
- package/dist/search/retrievers/identifierRetriever.js.map +1 -0
- package/dist/search/retrievers/structuralRetriever.d.ts +11 -0
- package/dist/search/retrievers/structuralRetriever.js +141 -0
- package/dist/search/retrievers/structuralRetriever.js.map +1 -0
- package/dist/search/types.d.ts +121 -0
- package/dist/search/types.js +11 -0
- package/dist/search/types.js.map +1 -0
- package/dist/tools/composites/apiGuard.d.ts +1 -0
- package/dist/tools/composites/apiGuard.js +194 -0
- package/dist/tools/composites/apiGuard.js.map +1 -0
- package/dist/tools/composites/explainError.js +3 -2
- package/dist/tools/composites/explainError.js.map +1 -1
- package/dist/tools/composites/findCode.d.ts +1 -0
- package/dist/tools/composites/findCode.js +68 -0
- package/dist/tools/composites/findCode.js.map +1 -0
- package/dist/tools/composites/findPattern.d.ts +5 -0
- package/dist/tools/composites/findPattern.js +41 -0
- package/dist/tools/composites/findPattern.js.map +1 -0
- package/dist/tools/composites/rootCauseTrace.d.ts +1 -0
- package/dist/tools/composites/rootCauseTrace.js +213 -0
- package/dist/tools/composites/rootCauseTrace.js.map +1 -0
- package/dist/tools/composites/semanticDiff.js +24 -77
- package/dist/tools/composites/semanticDiff.js.map +1 -1
- package/dist/tools/live/liveDiagnostics.js +3 -2
- package/dist/tools/live/liveDiagnostics.js.map +1 -1
- package/dist/tools/primitives/diagnostics.js +2 -2
- package/dist/tools/primitives/diagnostics.js.map +1 -1
- package/dist/tools/registry.d.ts +10 -2
- package/dist/tools/registry.js +7 -2
- package/dist/tools/registry.js.map +1 -1
- package/package.json +8 -4
- package/dist/tools/primitives/typeHierarchy.d.ts +0 -1
- package/dist/tools/primitives/typeHierarchy.js +0 -55
- package/dist/tools/primitives/typeHierarchy.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rootCauseTrace.js","sourceRoot":"","sources":["../../../src/tools/composites/rootCauseTrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAwB,MAAM,iCAAiC,CAAC;AAEtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkCzD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,yKAAyK;IACtL,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC1E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC7D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KACrD,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,4DAA4D;QAC5D,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,aAAa,CAAC,MAAyB,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAiC,CAAC;QACzR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE/E,4EAA4E;QAC5E,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAClF,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAEpF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,0BAA0B,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,EAAiC,CAAC;QACtS,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAE5C,8DAA8D;QAC9D,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,MAAM,CAAC,OAAO,CAAe,oBAAoB,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC;iBAC5G,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;YACvH,MAAM,CAAC,OAAO,CAA+B,yBAAyB,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC;iBACjI,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;SACpI,CAAC,CAAC;QAEH,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnH,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YACzF,iBAAiB,EAAE,YAAY,IAAI,SAAS;YAC5C,YAAY,EAAE,YAAY,IAAI,SAAS;YACvC,YAAY;SACb,CAAC;QAEF,6BAA6B;QAC7B,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,+BAA+B;QAC/B,IAAI,WAAW,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAClC,6BAA6B,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAC3F,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrF,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;oBAC5D,UAAU,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,2CAA2C;QAC3C,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAChC,mCAAmC,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CACjG,CAAC;YACF,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;gBAClB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,OAAO,CACxC,6BAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAC3D,CAAC;gBACF,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACrD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,UAAU,KAAK,QAAQ;wBAAE,SAAS;oBACtC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC3F,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;wBACrC,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;wBACxE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;wBAEzH,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,MAAM,QAAQ,GAAa,CAAC,oBAAoB,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBAClG,IAAI,OAAO,EAAE,CAAC;4BAAC,KAAK,IAAI,CAAC,CAAC;4BAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAAC,CAAC;wBAChE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;4BAAC,KAAK,IAAI,CAAC,CAAC;4BAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;wBAAC,CAAC;wBAExF,UAAU,CAAC,IAAI,CAAC;4BACd,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU;4BAC5C,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,0BAA0B,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,CAAC,CAAC,SAAS,WAAW,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;4BAClK,UAAU,EAAE,OAAO,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;4BACvD,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW;yBAC1E,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,QAAQ,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACrH,CAAC;oBACD,kBAAkB,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACxF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,yBAAyB,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CACjJ,CAAC;oBACF,IAAI,IAAI;wBAAE,YAAY,CAAC,aAAa,GAAG,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5G,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,IAAI,YAAY,KAAK,uBAAuB;gBAAE,YAAY,CAAC,YAAY,GAAG,oCAAoC,CAAC;iBAC1G,IAAI,YAAY,KAAK,mBAAmB;gBAAE,YAAY,CAAC,YAAY,GAAG,8DAA8D,CAAC;iBACrI,IAAI,YAAY,KAAK,yBAAyB;gBAAE,YAAY,CAAC,YAAY,GAAG,6CAA6C,CAAC;iBAC1H,IAAI,YAAY,KAAK,yBAAyB;gBAAE,YAAY,CAAC,YAAY,GAAG,qDAAqD,CAAC;QACzI,CAAC;QAED,OAAO;YACL,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YACrI,SAAS;YACT,UAAU,EAAE,MAAM;YAClB,YAAY;YACZ,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,uBAAuB,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACnI,KAAK,EAAE,EAAE,oBAAoB,EAAE,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE;YACzI,QAAQ;SACsB,CAAC;IACnC,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,cAAc,CAC3B,aAAqB,EACrB,MAAc,EACd,SAAiB,EACjB,IAAwB,EACxB,MAAW,EACX,QAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,MAAM,QAAQ,GAAa,CAAC,GAAG,MAAM,KAAK,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/F,IAAI,gBAAoC,CAAC;IAEzC,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,yBAAyB,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBAChF,IAAI,EAAE,EAAE,CAAC;oBAAC,KAAK,IAAI,CAAC,CAAC;oBAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;oBAAC,gBAAgB,GAAG,EAAE,CAAC;gBAAC,CAAC;YAC3F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,wCAAwC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClK,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC,CAAC,GAAG,MAAM,mBAAmB;QACnF,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QAC9E,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB,EAAE,IAAY,EAAE,aAAqB;IACtF,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACtE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,yBAAyB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,sBAAsB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC"}
|
|
@@ -1,32 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { execSync } from 'child_process';
|
|
3
2
|
import { defineTool } from '../registry.js';
|
|
4
3
|
import { relativePath } from '../../engine/positions.js';
|
|
4
|
+
import { getMergeBase } from '../../git/getMergeBase.js';
|
|
5
|
+
import { getChangedHunks } from '../../git/getChangedHunks.js';
|
|
5
6
|
import { LspError, LspErrorCode, DEFAULT_TIMEOUTS } from '../../engine/types.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// +++ b/path/to/file.ts
|
|
11
|
-
const fileMatch = line.match(/^\+\+\+ b\/(.+)/);
|
|
12
|
-
if (fileMatch) {
|
|
13
|
-
currentFile = `${workspaceRoot}/${fileMatch[1]}`;
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
// @@ -old,count +new,count @@
|
|
17
|
-
const hunkMatch = line.match(/^@@ .+ \+(\d+)(?:,(\d+))? @@/);
|
|
18
|
-
if (hunkMatch && currentFile.match(/\.tsx?$/)) {
|
|
19
|
-
const start = parseInt(hunkMatch[1]);
|
|
20
|
-
const count = parseInt(hunkMatch[2] ?? '1');
|
|
21
|
-
hunks.push({ file: currentFile, startLine: start, endLine: start + count - 1 });
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return hunks;
|
|
25
|
-
}
|
|
7
|
+
const SYMBOL_KINDS = {
|
|
8
|
+
5: 'Class', 6: 'Method', 10: 'Enum', 11: 'Interface',
|
|
9
|
+
12: 'Function', 13: 'Variable', 14: 'Constant',
|
|
10
|
+
};
|
|
26
11
|
function findSymbolAtLine(symbols, line0) {
|
|
27
12
|
for (const sym of symbols) {
|
|
28
13
|
if (line0 >= sym.range.start.line && line0 <= sym.range.end.line) {
|
|
29
|
-
// Check children for more specific match
|
|
30
14
|
if (sym.children) {
|
|
31
15
|
const child = findSymbolAtLine(sym.children, line0);
|
|
32
16
|
if (child)
|
|
@@ -37,51 +21,22 @@ function findSymbolAtLine(symbols, line0) {
|
|
|
37
21
|
}
|
|
38
22
|
return null;
|
|
39
23
|
}
|
|
40
|
-
const SYMBOL_KINDS = {
|
|
41
|
-
5: 'Class', 6: 'Method', 10: 'Enum', 11: 'Interface',
|
|
42
|
-
12: 'Function', 13: 'Variable', 14: 'Constant',
|
|
43
|
-
};
|
|
44
24
|
export const semanticDiff = defineTool({
|
|
45
25
|
name: 'semantic_diff',
|
|
46
|
-
description: 'Analyze git diff semantically: identify changed symbols and their blast radius
|
|
26
|
+
description: 'Analyze git diff semantically: identify changed symbols and their blast radius with risk classification. Requires git.',
|
|
47
27
|
schema: z.object({
|
|
48
|
-
base: z.string().optional().describe('Base ref to diff against. Defaults to merge-base with main
|
|
49
|
-
verbosity: z.enum(['summary', 'normal', 'detailed']).default('normal'),
|
|
28
|
+
base: z.string().optional().describe('Base ref to diff against. Defaults to merge-base with main.'),
|
|
50
29
|
}),
|
|
51
30
|
async handler(params, engine) {
|
|
52
31
|
if (!engine.gitAvailable) {
|
|
53
32
|
throw new LspError(LspErrorCode.GIT_UNAVAILABLE, 'Git is not available in this workspace.');
|
|
54
33
|
}
|
|
55
34
|
const timeout = DEFAULT_TIMEOUTS.composite;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
base = execSync('git merge-base HEAD main', { cwd: engine.workspaceRoot, encoding: 'utf-8' }).trim();
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
try {
|
|
64
|
-
base = execSync('git merge-base HEAD master', { cwd: engine.workspaceRoot, encoding: 'utf-8' }).trim();
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
base = 'HEAD~1';
|
|
68
|
-
}
|
|
69
|
-
}
|
|
35
|
+
const base = getMergeBase(engine.workspaceRoot, params.base);
|
|
36
|
+
const hunks = getChangedHunks(engine.workspaceRoot, base);
|
|
37
|
+
if (hunks.length === 0) {
|
|
38
|
+
return { base, changedSymbols: [], totalReferences: 0, stats: { hunksAnalyzed: 0, filesProcessed: 0 }, warnings: ['No TypeScript changes found'] };
|
|
70
39
|
}
|
|
71
|
-
// Get diff
|
|
72
|
-
let diff;
|
|
73
|
-
try {
|
|
74
|
-
diff = execSync(`git diff ${base} --unified=0`, { cwd: engine.workspaceRoot, encoding: 'utf-8' });
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return 'No changes found or invalid base ref.';
|
|
78
|
-
}
|
|
79
|
-
if (!diff.trim())
|
|
80
|
-
return 'No changes found.';
|
|
81
|
-
const hunks = parseDiffHunks(diff, engine.workspaceRoot);
|
|
82
|
-
if (hunks.length === 0)
|
|
83
|
-
return 'No TypeScript file changes found.';
|
|
84
|
-
// For each changed hunk, identify the symbol
|
|
85
40
|
const changedSymbols = [];
|
|
86
41
|
const processedFiles = new Set();
|
|
87
42
|
for (const hunk of hunks) {
|
|
@@ -91,21 +46,21 @@ export const semanticDiff = defineTool({
|
|
|
91
46
|
const { uri } = await engine.prepareFile(hunk.file);
|
|
92
47
|
const symbols = await engine.request('textDocument/documentSymbol', { textDocument: { uri } }, timeout);
|
|
93
48
|
if (symbols) {
|
|
94
|
-
// Find symbols affected by this hunk
|
|
95
49
|
for (let line = hunk.startLine - 1; line <= hunk.endLine - 1; line++) {
|
|
96
50
|
const sym = findSymbolAtLine(symbols, line);
|
|
97
|
-
if (sym && !changedSymbols.some((s) => s.name === sym.name && s.file === hunk.file)) {
|
|
98
|
-
// Get reference count for blast radius
|
|
51
|
+
if (sym && !changedSymbols.some((s) => s.name === sym.name && s.file === relativePath(hunk.file, engine.workspaceRoot))) {
|
|
99
52
|
const refs = await engine.request('textDocument/references', {
|
|
100
53
|
textDocument: { uri },
|
|
101
54
|
position: sym.selectionRange.start,
|
|
102
55
|
context: { includeDeclaration: false },
|
|
103
56
|
}, timeout).catch(() => null);
|
|
57
|
+
const refCount = refs?.length ?? 0;
|
|
104
58
|
changedSymbols.push({
|
|
105
59
|
name: sym.name,
|
|
106
60
|
kind: SYMBOL_KINDS[sym.kind] ?? 'Unknown',
|
|
107
61
|
file: relativePath(hunk.file, engine.workspaceRoot),
|
|
108
|
-
refCount
|
|
62
|
+
refCount,
|
|
63
|
+
risk: refCount > 10 ? 'high' : refCount > 3 ? 'medium' : 'low',
|
|
109
64
|
});
|
|
110
65
|
}
|
|
111
66
|
}
|
|
@@ -114,22 +69,14 @@ export const semanticDiff = defineTool({
|
|
|
114
69
|
catch { }
|
|
115
70
|
processedFiles.add(hunk.file);
|
|
116
71
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (sym.refCount > 0) {
|
|
126
|
-
lines.push(` → ${sym.refCount} references may need updating`);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
lines.push(` → No external references (safe to change)`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return lines.join('\n');
|
|
72
|
+
const totalReferences = changedSymbols.reduce((s, c) => s + c.refCount, 0);
|
|
73
|
+
return {
|
|
74
|
+
base,
|
|
75
|
+
changedSymbols: changedSymbols.sort((a, b) => b.refCount - a.refCount),
|
|
76
|
+
totalReferences,
|
|
77
|
+
stats: { hunksAnalyzed: hunks.length, filesProcessed: processedFiles.size },
|
|
78
|
+
warnings: [],
|
|
79
|
+
};
|
|
133
80
|
},
|
|
134
81
|
});
|
|
135
82
|
//# sourceMappingURL=semanticDiff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semanticDiff.js","sourceRoot":"","sources":["../../../src/tools/composites/semanticDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"semanticDiff.js","sourceRoot":"","sources":["../../../src/tools/composites/semanticDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,10 @@ export const liveDiagnostics = defineTool({
|
|
|
15
15
|
if (!engine.connection)
|
|
16
16
|
return 'Error: LSP connection not available.';
|
|
17
17
|
await engine.docManager.refreshFromDisk(params.file_path, engine.connection);
|
|
18
|
-
// Wait for TSServer to process changes
|
|
19
|
-
await new Promise((r) => setTimeout(r, 1000));
|
|
18
|
+
// Wait for TSServer to process changes (poll instead of fixed sleep)
|
|
20
19
|
const uri = `file://${params.file_path}`;
|
|
20
|
+
const { waitForDiagnostics } = await import('../../engine/waitForDiagnostics.js');
|
|
21
|
+
await waitForDiagnostics(engine.docManager, uri, 1500);
|
|
21
22
|
const diags = engine.docManager.getCachedDiagnostics(uri);
|
|
22
23
|
const rel = relativePath(params.file_path, engine.workspaceRoot);
|
|
23
24
|
if (diags.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveDiagnostics.js","sourceRoot":"","sources":["../../../src/tools/live/liveDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAE5F,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,gIAAgI;IAC7I,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC9D,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;IACpC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,2CAA2C;QAC3C,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAE,MAAc,CAAC,UAAU;YAAE,OAAO,sCAAsC,CAAC;QAC/E,MAAM,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAG,MAAc,CAAC,UAAU,CAAC,CAAC;QAEtF,
|
|
1
|
+
{"version":3,"file":"liveDiagnostics.js","sourceRoot":"","sources":["../../../src/tools/live/liveDiagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ export const diagnostics = defineTool({
|
|
|
10
10
|
}),
|
|
11
11
|
async handler(params, engine) {
|
|
12
12
|
const { uri } = await engine.prepareFile(params.file_path);
|
|
13
|
-
|
|
14
|
-
await
|
|
13
|
+
const { waitForDiagnostics } = await import('../../engine/waitForDiagnostics.js');
|
|
14
|
+
await waitForDiagnostics(engine.docManager, uri, 800);
|
|
15
15
|
const diags = engine.docManager.getCachedDiagnostics(uri);
|
|
16
16
|
if (diags.length === 0) {
|
|
17
17
|
const rel = relativePath(params.file_path, engine.workspaceRoot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/primitives/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oGAAoG;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACrD,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/primitives/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oGAAoG;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACrD,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAClF,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACjE,OAAO,sBAAsB,GAAG,kBAAkB,CAAC;QACrD,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,kBAAkB,GAAG,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -2,18 +2,26 @@ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
2
2
|
import type { ZodRawShape } from 'zod';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import type { LspEngine } from '../engine/LspEngine.js';
|
|
5
|
+
/**
|
|
6
|
+
* Tool result: either a formatted string or a structured object.
|
|
7
|
+
* Structured objects are JSON-serialized for the MCP response.
|
|
8
|
+
* Skills and formatting layers consume the structured data.
|
|
9
|
+
*/
|
|
10
|
+
export type ToolResult = string | {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
};
|
|
5
13
|
export interface ToolDef {
|
|
6
14
|
name: string;
|
|
7
15
|
description: string;
|
|
8
16
|
schema: z.ZodObject<any>;
|
|
9
17
|
annotations?: Record<string, boolean>;
|
|
10
|
-
handler: (params: any, engine: LspEngine) => Promise<
|
|
18
|
+
handler: (params: any, engine: LspEngine) => Promise<ToolResult>;
|
|
11
19
|
}
|
|
12
20
|
export declare function defineTool<S extends ZodRawShape>(def: {
|
|
13
21
|
name: string;
|
|
14
22
|
description: string;
|
|
15
23
|
schema: z.ZodObject<S>;
|
|
16
24
|
annotations?: Record<string, boolean>;
|
|
17
|
-
handler: (params: z.infer<z.ZodObject<S>>, engine: LspEngine) => Promise<
|
|
25
|
+
handler: (params: z.infer<z.ZodObject<S>>, engine: LspEngine) => Promise<ToolResult>;
|
|
18
26
|
}): ToolDef;
|
|
19
27
|
export declare function registerAll(server: McpServer, engine: LspEngine, tools: ToolDef[]): void;
|
package/dist/tools/registry.js
CHANGED
|
@@ -6,8 +6,13 @@ export function registerAll(server, engine, tools) {
|
|
|
6
6
|
server.tool(tool.name, tool.description, tool.schema.shape, async (params) => {
|
|
7
7
|
try {
|
|
8
8
|
const parsed = tool.schema.parse(params);
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
const result = await tool.handler(parsed, engine);
|
|
10
|
+
// Structured object → JSON text
|
|
11
|
+
if (typeof result === 'object' && result !== null) {
|
|
12
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
13
|
+
}
|
|
14
|
+
// String → pass through (backward compat)
|
|
15
|
+
return { content: [{ type: 'text', text: result }] };
|
|
11
16
|
}
|
|
12
17
|
catch (err) {
|
|
13
18
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,UAAU,CAAwB,GAMjD;IACC,OAAO,GAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiB,EAAE,MAAiB,EAAE,KAAgB;IAChF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,KAAK,EAAE,MAA+B,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAElD,gCAAgC;gBAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzF,CAAC;gBAED,0CAA0C;gBAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxF,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lsp-intelligence",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "LSP-powered code intelligence MCP server for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,22 +8,26 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
+
".npmrc",
|
|
11
12
|
"README.md",
|
|
12
13
|
"LICENSE"
|
|
13
14
|
],
|
|
14
15
|
"scripts": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
16
|
+
"clean": "rm -rf dist",
|
|
17
|
+
"build": "rm -rf dist && tsc",
|
|
18
|
+
"prepublishOnly": "rm -rf dist && tsc",
|
|
17
19
|
"start": "tsx src/index.ts",
|
|
18
20
|
"test": "vitest run",
|
|
19
21
|
"test:watch": "vitest",
|
|
20
22
|
"typecheck": "tsc --noEmit"
|
|
21
23
|
},
|
|
22
24
|
"dependencies": {
|
|
25
|
+
"@ast-grep/napi": "^0.42.0",
|
|
23
26
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
27
|
+
"typescript": "^5.4.0",
|
|
28
|
+
"typescript-language-server": "^4.0.0",
|
|
24
29
|
"vscode-jsonrpc": "^8.2.0",
|
|
25
30
|
"vscode-languageserver-protocol": "^3.17.5",
|
|
26
|
-
"typescript-language-server": "^4.0.0",
|
|
27
31
|
"zod": "^3.25.0"
|
|
28
32
|
},
|
|
29
33
|
"devDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const typeHierarchy: import("../registry.js").ToolDef;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { defineTool } from '../registry.js';
|
|
3
|
-
import { toPosition, fromPosition, relativePath, uriToPath } from '../../engine/positions.js';
|
|
4
|
-
export const typeHierarchy = defineTool({
|
|
5
|
-
name: 'type_hierarchy',
|
|
6
|
-
description: 'Explore inheritance relationships — supertypes and subtypes. Use to understand class/interface hierarchies.',
|
|
7
|
-
schema: z.object({
|
|
8
|
-
symbol: z.string().optional().describe('Symbol name. Use this OR file_path+line+column.'),
|
|
9
|
-
file_path: z.string().optional().describe('Absolute file path'),
|
|
10
|
-
line: z.number().optional().describe('1-indexed line number'),
|
|
11
|
-
column: z.number().optional().describe('1-indexed column number'),
|
|
12
|
-
direction: z.enum(['supertypes', 'subtypes']).default('supertypes'),
|
|
13
|
-
}),
|
|
14
|
-
async handler(params, engine) {
|
|
15
|
-
let uri, position;
|
|
16
|
-
if (params.symbol) {
|
|
17
|
-
const resolved = await engine.resolveSymbol(params.symbol, params.file_path);
|
|
18
|
-
uri = resolved.uri;
|
|
19
|
-
position = resolved.position;
|
|
20
|
-
}
|
|
21
|
-
else if (params.file_path && params.line && params.column) {
|
|
22
|
-
const prepared = await engine.prepareFile(params.file_path);
|
|
23
|
-
uri = prepared.uri;
|
|
24
|
-
position = toPosition(params.line, params.column);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return 'Error: Provide either symbol name or file_path + line + column.';
|
|
28
|
-
}
|
|
29
|
-
let items;
|
|
30
|
-
try {
|
|
31
|
-
items = await engine.request('textDocument/prepareTypeHierarchy', { textDocument: { uri }, position });
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return 'Type hierarchy is not supported by the current language server.';
|
|
35
|
-
}
|
|
36
|
-
if (!items || items.length === 0)
|
|
37
|
-
return 'No type hierarchy available for this symbol.';
|
|
38
|
-
const item = items[0];
|
|
39
|
-
const method = params.direction === 'supertypes'
|
|
40
|
-
? 'typeHierarchy/supertypes' : 'typeHierarchy/subtypes';
|
|
41
|
-
const related = await engine.request(method, { item });
|
|
42
|
-
if (!related || related.length === 0) {
|
|
43
|
-
return `No ${params.direction} found for ${item.name}.`;
|
|
44
|
-
}
|
|
45
|
-
const label = params.direction === 'supertypes' ? 'Supertypes' : 'Subtypes';
|
|
46
|
-
const lines = [`# ${label} of ${item.name}\n\n${related.length} types\n`];
|
|
47
|
-
for (const t of related) {
|
|
48
|
-
const rel = relativePath(uriToPath(t.uri), engine.workspaceRoot);
|
|
49
|
-
const pos = fromPosition(t.selectionRange.start);
|
|
50
|
-
lines.push(`- **${t.name}** — ${rel}:${pos.line}`);
|
|
51
|
-
}
|
|
52
|
-
return lines.join('\n');
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=typeHierarchy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeHierarchy.js","sourceRoot":"","sources":["../../../src/tools/primitives/typeHierarchy.ts"],"names":[],"mappings":"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"}
|