@mrclrchtr/supi-code-intelligence 3.2.0 → 4.1.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 +157 -435
- package/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
- package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
- package/node_modules/@mrclrchtr/supi-core/package.json +2 -4
- package/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/README.md +72 -62
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -8
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +2 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +9 -9
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +70 -41
- package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +16 -13
- package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +0 -2
- package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +6 -6
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-diagnostics.ts +5 -95
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-recovery.ts +4 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +44 -6
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +47 -65
- package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +132 -79
- package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +6 -14
- package/node_modules/@mrclrchtr/supi-lsp/src/session/readiness.ts +38 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +87 -75
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +5 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/session/{service-registry.ts → runtime-registry.ts} +163 -71
- package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +4 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -8
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +2 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +4 -21
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/rust/tree-sitter-rust.wasm.json +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm +0 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm.json +3 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-kotlin-wasm.mjs +6 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-sql-wasm.mjs +18 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/vendor-wasm.mjs +17 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +2 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/coordinates.ts +20 -41
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +2 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +7 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/operation-support.ts +40 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +9 -7
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +6 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +76 -37
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +224 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +350 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +980 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/package.json +10 -8
- package/src/analysis/architecture/discovery.ts +213 -227
- package/src/analysis/architecture/manifest.ts +147 -0
- package/src/analysis/architecture/model.ts +119 -52
- package/src/analysis/architecture/workspace-config.ts +229 -0
- package/src/analysis/{coverage/coverage-warnings.ts → capability/capability-warnings.ts} +41 -78
- package/src/analysis/evidence.ts +22 -5
- package/src/analysis/health/diagnostics.ts +183 -0
- package/src/analysis/health/recovery.ts +39 -0
- package/src/analysis/health/signals.ts +20 -0
- package/src/analysis/instruction-files.ts +60 -48
- package/src/analysis/provider.ts +31 -12
- package/src/analysis/readiness.ts +29 -9
- package/src/{tool/refactor-apply → analysis/refactor}/apply.ts +120 -26
- package/src/analysis/refactor/position.ts +6 -0
- package/src/analysis/refactor/safety.ts +4 -11
- package/src/analysis/references/locations.ts +20 -0
- package/src/analysis/references/semantic-refs.ts +21 -11
- package/src/{tool/graph → analysis/relations}/implementations.ts +27 -23
- package/src/analysis/relations/provider-locations.ts +179 -0
- package/src/{tool/graph → analysis/relations}/references.ts +25 -21
- package/src/{tool/graph → analysis/relations}/types.ts +4 -19
- package/src/analysis/search/ast-scan.ts +376 -0
- package/src/analysis/search/call-name.ts +68 -0
- package/src/analysis/search/deadline.ts +84 -0
- package/src/analysis/search/paths.ts +88 -0
- package/src/analysis/search/pattern.ts +290 -246
- package/src/analysis/target/anchored.ts +72 -27
- package/src/analysis/target/file.ts +292 -132
- package/src/analysis/target/identity.ts +237 -0
- package/src/analysis/target/symbol.ts +169 -86
- package/src/analysis/target/types.ts +36 -4
- package/src/api.ts +21 -4
- package/src/app/app.ts +54 -44
- package/src/extension.ts +21 -97
- package/src/headless.ts +41 -0
- package/src/session/capability-adapter.ts +26 -118
- package/src/session/find-types.ts +38 -0
- package/src/session/find-workflow.ts +141 -0
- package/src/session/graph/collect.ts +181 -0
- package/src/session/graph-types.ts +77 -0
- package/src/session/graph-workflow.ts +152 -0
- package/src/session/health-types.ts +134 -0
- package/src/session/health-workflow.ts +341 -0
- package/src/session/input/common.ts +216 -0
- package/src/session/input/health-refactor.ts +169 -0
- package/src/session/input/workflows.ts +211 -0
- package/src/session/inspect/collect.ts +304 -0
- package/src/session/inspect/file-point.ts +69 -0
- package/src/session/inspect-types.ts +78 -0
- package/src/session/inspect-workflow.ts +157 -0
- package/src/session/orientation/collect.ts +718 -0
- package/src/session/orientation/context-facts.ts +319 -0
- package/src/session/orientation/context-sections.ts +352 -0
- package/src/session/orientation-types.ts +97 -0
- package/src/session/orientation-workflow.ts +307 -0
- package/src/session/refactor-plans.ts +1 -1
- package/src/session/refactor-types.ts +51 -0
- package/src/session/refactor-workflow.ts +263 -0
- package/src/session/session.ts +263 -234
- package/src/session/target-candidates.ts +60 -0
- package/src/session/target-input.ts +98 -0
- package/src/session/target-store.ts +132 -29
- package/src/session/target-workflow.ts +254 -302
- package/src/session/workflow-control.ts +35 -0
- package/src/substrate/lsp/lifecycle.ts +26 -53
- package/src/substrate/lsp/maintenance.ts +75 -0
- package/src/substrate/lsp/recovery.ts +41 -25
- package/src/substrate/lsp/settings.ts +1 -10
- package/src/substrate/lsp/state.ts +5 -13
- package/src/substrate/workspace-provider-host.ts +129 -0
- package/src/tool/find/ast-kinds.ts +35 -0
- package/src/tool/find/execute.ts +22 -113
- package/src/tool/find/markdown.ts +85 -221
- package/src/tool/find/modes.ts +5 -0
- package/src/tool/find/render.ts +57 -0
- package/src/tool/find/tui.ts +1 -1
- package/src/tool/graph/calls-md.ts +17 -30
- package/src/tool/graph/execute.ts +42 -103
- package/src/tool/graph/implementations-md.ts +32 -54
- package/src/tool/graph/markdown-base.ts +73 -196
- package/src/tool/graph/provider-location-md.ts +9 -0
- package/src/tool/graph/references-md.ts +34 -27
- package/src/tool/graph/tui.ts +8 -26
- package/src/tool/guidance.ts +31 -48
- package/src/tool/health/execute.ts +15 -56
- package/src/tool/health/markdown.ts +199 -148
- package/src/tool/health/semantic-state.ts +24 -0
- package/src/tool/health/tui.ts +262 -36
- package/src/tool/infra/error-results.ts +0 -2
- package/src/tool/infra/progress.ts +2 -2
- package/src/tool/infra/workflow-control.ts +11 -0
- package/src/tool/inspect/execute.ts +23 -63
- package/src/tool/inspect/markdown.ts +114 -95
- package/src/tool/inspect/tui.ts +7 -7
- package/src/tool/orientation/execute.ts +50 -37
- package/src/tool/orientation/markdown.ts +26 -31
- package/src/tool/orientation/tui.ts +41 -39
- package/src/tool/refactor-apply/execute.ts +23 -9
- package/src/tool/refactor-apply/tui.ts +7 -3
- package/src/tool/refactor-plan/execute.ts +44 -61
- package/src/tool/refactor-plan/markdown.ts +33 -56
- package/src/tool/refactor-plan/tui.ts +10 -11
- package/src/tool/register.ts +6 -5
- package/src/tool/resolve/execute.ts +23 -69
- package/src/tool/resolve/markdown.ts +125 -114
- package/src/tool/resolve/tui.ts +11 -9
- package/src/tool/result/assembly.ts +125 -0
- package/src/tool/result/errors.ts +20 -34
- package/src/tool/result/find.ts +107 -21
- package/src/tool/result/graph.ts +163 -64
- package/src/tool/result/health.ts +170 -73
- package/src/tool/result/inspect.ts +183 -41
- package/src/tool/result/orientation.ts +118 -16
- package/src/tool/result/refactor.ts +101 -21
- package/src/tool/result/resolve.ts +243 -80
- package/src/tool/result/types.ts +100 -56
- package/src/tool/schemas.ts +160 -231
- package/src/tool/specs.ts +57 -168
- package/src/types/details.ts +2 -4
- package/src/types/execution.ts +6 -15
- package/src/types/index.ts +2 -4
- package/src/types/tool-names.ts +1 -2
- package/src/ui/footer.ts +3 -3
- package/src/ui/markdown/gather.ts +17 -65
- package/src/ui/markdown/overview-data.ts +143 -21
- package/src/ui/markdown/overview.ts +27 -8
- package/src/ui/markdown/types.ts +12 -16
- package/src/ui/status-command.ts +39 -31
- package/src/ui/status-overlay.ts +23 -15
- package/src/ui/tui/common.ts +121 -74
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-augmentation.ts +0 -82
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-context.ts +0 -116
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-display.ts +0 -69
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +0 -24
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/client-pool.ts +0 -33
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/diagnostic-store.ts +0 -51
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-stale-resync.ts +0 -47
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/recovery-coordinator.ts +0 -37
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/workspace-router.ts +0 -44
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
- package/src/analysis/brief/directory.ts +0 -324
- package/src/analysis/brief/enrich.ts +0 -157
- package/src/analysis/brief/file.ts +0 -84
- package/src/analysis/brief/inventory.ts +0 -177
- package/src/analysis/brief/main.ts +0 -176
- package/src/analysis/brief/models.ts +0 -75
- package/src/analysis/brief/public-brief.ts +0 -179
- package/src/analysis/brief/summarize.ts +0 -208
- package/src/analysis/brief/types.ts +0 -27
- package/src/analysis/brief/use-case.ts +0 -264
- package/src/analysis/search/ripgrep.ts +0 -558
- package/src/analysis/signals/git.ts +0 -89
- package/src/analysis/signals/project.ts +0 -189
- package/src/analysis/target/bridge.ts +0 -152
- package/src/analysis/target/file-resolution.ts +0 -125
- package/src/analysis/target/planner.ts +0 -92
- package/src/analysis/target/query.ts +0 -74
- package/src/analysis/target/resolve-common.ts +0 -115
- package/src/analysis/target/service.ts +0 -229
- package/src/analysis/tests/likely-tests.ts +0 -174
- package/src/analysis/tests/test-discovery.ts +0 -540
- package/src/analysis/tests/vitest.ts +0 -87
- package/src/app/manager.ts +0 -65
- package/src/substrate/lsp/diagnostic-injection.ts +0 -203
- package/src/substrate/lsp/overrides.ts +0 -132
- package/src/substrate/tree-sitter/lifecycle.ts +0 -52
- package/src/tool/find/orchestrate.ts +0 -317
- package/src/tool/find/semantic-search.ts +0 -128
- package/src/tool/graph/collect-relation.ts +0 -372
- package/src/tool/graph/orchestrate.ts +0 -259
- package/src/tool/health/orchestrate.ts +0 -151
- package/src/tool/health/sections/diagnostics.ts +0 -182
- package/src/tool/health/sections/recovery.ts +0 -89
- package/src/tool/health/sections/signals.ts +0 -89
- package/src/tool/impact/analysis.ts +0 -220
- package/src/tool/impact/change-set-impact.ts +0 -152
- package/src/tool/impact/execute.ts +0 -125
- package/src/tool/impact/file-level-impact.ts +0 -82
- package/src/tool/impact/markdown.ts +0 -283
- package/src/tool/impact/orchestrate.ts +0 -97
- package/src/tool/impact/result.ts +0 -2
- package/src/tool/impact/single-impact.ts +0 -90
- package/src/tool/impact/tui.ts +0 -39
- package/src/tool/impact/types.ts +0 -34
- package/src/tool/infra/cross-field.ts +0 -335
- package/src/tool/infra/pipeline.ts +0 -334
- package/src/tool/infra/readiness-message.ts +0 -5
- package/src/tool/inspect/orchestrate.ts +0 -154
- package/src/tool/orientation/deps.ts +0 -63
- package/src/tool/orientation/mode.ts +0 -139
- package/src/tool/orientation/orchestrate.ts +0 -475
- package/src/tool/orientation/precise-target.ts +0 -253
- package/src/tool/params.ts +0 -15
- package/src/tool/refactor-apply/markdown.ts +0 -118
- package/src/tool/refactor-apply/orchestrate.ts +0 -84
- package/src/tool/refactor-plan/orchestrate.ts +0 -355
- package/src/tool/resolve/orchestrate.ts +0 -38
- package/src/tool/result/impact.ts +0 -50
- package/src/ui/markdown/brief.ts +0 -218
- package/src/ui/message-renderer.ts +0 -121
- package/src/ui/tui/index.ts +0 -37
- /package/src/{tool/graph → analysis/relations}/callees.ts +0 -0
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Trust considerations:
|
|
10
10
|
* - The @derekstride/tree-sitter-sql install script uses "npx --yes", which
|
|
11
|
-
* some package managers flag as a supply-chain risk.
|
|
12
|
-
*
|
|
11
|
+
* some package managers flag as a supply-chain risk. This workspace disables
|
|
12
|
+
* that package's build script explicitly via pnpm `allowBuilds`.
|
|
13
13
|
* - The WASM is built locally from the installed package source (not downloaded
|
|
14
|
-
* from npm). The build uses tree-sitter-cli
|
|
14
|
+
* from npm). The build uses tree-sitter-cli with Emscripten/Docker.
|
|
15
15
|
* - Alternatives considered: tree-sitter-sql (m-novikov, stale since 2021),
|
|
16
16
|
* tree-sitter-sql-bigquery (dialect-specific), and dialect-specific grammars.
|
|
17
17
|
* derekstride/tree-sitter-sql is the most mature general-purpose SQL grammar.
|
|
@@ -55,6 +55,7 @@ function readMetadata() {
|
|
|
55
55
|
|
|
56
56
|
function assertSqlWasmCurrent() {
|
|
57
57
|
const sqlPackage = readPackage("@derekstride/tree-sitter-sql");
|
|
58
|
+
const cliPackage = readPackage("tree-sitter-cli");
|
|
58
59
|
const metadata = readMetadata();
|
|
59
60
|
const actualSha = sha256(wasmPath);
|
|
60
61
|
const errors = [];
|
|
@@ -67,6 +68,11 @@ function assertSqlWasmCurrent() {
|
|
|
67
68
|
`metadata pins @derekstride/tree-sitter-sql ${metadata.source?.version}, but installed package is ${sqlPackage.json.version}`,
|
|
68
69
|
);
|
|
69
70
|
}
|
|
71
|
+
if (metadata.generatedWith?.treeSitterCli !== cliPackage.json.version) {
|
|
72
|
+
errors.push(
|
|
73
|
+
`metadata pins tree-sitter-cli ${metadata.generatedWith?.treeSitterCli}, but installed CLI is ${cliPackage.json.version}`,
|
|
74
|
+
);
|
|
75
|
+
}
|
|
70
76
|
if (metadata.sha256 !== actualSha) {
|
|
71
77
|
errors.push(`metadata sha256 ${metadata.sha256} does not match vendored file ${actualSha}`);
|
|
72
78
|
}
|
|
@@ -92,7 +98,7 @@ function generateSqlWasm() {
|
|
|
92
98
|
try {
|
|
93
99
|
fs.cpSync(sqlPackage.dir, grammarDir, { recursive: true });
|
|
94
100
|
|
|
95
|
-
// tree-sitter-cli
|
|
101
|
+
// tree-sitter-cli requires a "tree-sitter" section in package.json
|
|
96
102
|
const grammarPackageJsonPath = path.join(grammarDir, "package.json");
|
|
97
103
|
const grammarPackageJson = JSON.parse(fs.readFileSync(grammarPackageJsonPath, "utf-8"));
|
|
98
104
|
grammarPackageJson["tree-sitter"] = [{ scope: "source.sql" }];
|
|
@@ -128,6 +134,14 @@ function generateSqlWasm() {
|
|
|
128
134
|
treeSitterCli: cliPackage.json.version,
|
|
129
135
|
},
|
|
130
136
|
sha256: checksum,
|
|
137
|
+
trust: {
|
|
138
|
+
note: "The @derekstride/tree-sitter-sql npm package is a devDependency only. It is never resolved at runtime; the vendored WASM above is the sole runtime artifact. This workspace explicitly disables the package's npx-based install script via pnpm allowBuilds. The WASM was built locally from the installed package source. See scripts/generate-sql-wasm.mjs for the rebuild procedure.",
|
|
139
|
+
alternativesConsidered: [
|
|
140
|
+
"tree-sitter-sql (m-novikov, 2021, stale)",
|
|
141
|
+
"tree-sitter-sql-bigquery (BigQuery-specific)",
|
|
142
|
+
"dialect-specific grammars (too narrow)",
|
|
143
|
+
],
|
|
144
|
+
},
|
|
131
145
|
};
|
|
132
146
|
fs.writeFileSync(metadataPath, `${JSON.stringify(metadata, null, 2)}\n`);
|
|
133
147
|
process.stdout.write(`Generated ${wasmPath}\n`);
|
|
@@ -108,8 +108,14 @@ function checkGrammar(grammarId, source) {
|
|
|
108
108
|
|
|
109
109
|
try {
|
|
110
110
|
const pkg = readPackage(source.npmPackage);
|
|
111
|
+
const sourceWasmPath = path.join(pkg.dir, source.wasmFile);
|
|
112
|
+
if (!fs.existsSync(sourceWasmPath)) {
|
|
113
|
+
errors.push(`${grammarId}: installed package is missing ${source.wasmFile}`);
|
|
114
|
+
return errors;
|
|
115
|
+
}
|
|
111
116
|
const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
|
|
112
117
|
const actualSha = sha256(wasmPath);
|
|
118
|
+
const sourceSha = sha256(sourceWasmPath);
|
|
113
119
|
|
|
114
120
|
if (metadata.source?.npmPackage !== source.npmPackage) {
|
|
115
121
|
errors.push(`${grammarId}: metadata source npmPackage mismatch`);
|
|
@@ -119,8 +125,18 @@ function checkGrammar(grammarId, source) {
|
|
|
119
125
|
`${grammarId}: metadata version ${metadata.source?.version} !== installed ${pkg.json.version}`,
|
|
120
126
|
);
|
|
121
127
|
}
|
|
128
|
+
if (actualSha !== sourceSha) {
|
|
129
|
+
errors.push(
|
|
130
|
+
`${grammarId}: vendored sha256 ${actualSha} !== installed package source ${sourceSha}`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
122
133
|
if (metadata.sha256 !== actualSha) {
|
|
123
|
-
errors.push(`${grammarId}: metadata sha256 ${metadata.sha256} !==
|
|
134
|
+
errors.push(`${grammarId}: metadata sha256 ${metadata.sha256} !== vendored ${actualSha}`);
|
|
135
|
+
}
|
|
136
|
+
if (metadata.sha256 !== sourceSha) {
|
|
137
|
+
errors.push(
|
|
138
|
+
`${grammarId}: metadata sha256 ${metadata.sha256} !== installed package source ${sourceSha}`,
|
|
139
|
+
);
|
|
124
140
|
}
|
|
125
141
|
} catch (err) {
|
|
126
142
|
errors.push(`${grammarId}: ${err.message}`);
|
|
@@ -12,6 +12,8 @@ export {
|
|
|
12
12
|
isJsTsGrammar,
|
|
13
13
|
isSupportedFile,
|
|
14
14
|
} from "./language.ts";
|
|
15
|
+
export type { StructuralSearchOperation } from "./operation-support.ts";
|
|
16
|
+
export { getStructuralSearchSupportedExtensions } from "./operation-support.ts";
|
|
15
17
|
export { TreeSitterRuntime } from "./session/runtime.ts";
|
|
16
18
|
export type {
|
|
17
19
|
TsControllerState,
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
// Coordinate conversion between public 1-based UTF-16 positions
|
|
2
|
-
// and Tree-sitter runtime
|
|
2
|
+
// and Tree-sitter runtime positions.
|
|
3
|
+
//
|
|
4
|
+
// web-tree-sitter's Parser.parse(string) uses JavaScript string columns
|
|
5
|
+
// (UTF-16 code unit offsets) for startPosition/endPosition. We convert
|
|
6
|
+
// 1-based user-facing positions to 0-based row/column and back without
|
|
7
|
+
// any byte-level encoding.
|
|
8
|
+
//
|
|
9
|
+
// This matches the column convention used by LSP and Monaco, so ranges
|
|
10
|
+
// are directly shareable between tree-sitter and LSP workflows.
|
|
3
11
|
|
|
4
12
|
import type { SourceRange } from "./types.ts";
|
|
5
13
|
|
|
6
|
-
const encoder = new TextEncoder();
|
|
7
|
-
|
|
8
14
|
/** Point in source: 1-based line and UTF-16 character. */
|
|
9
15
|
export interface PublicPoint {
|
|
10
16
|
line: number;
|
|
@@ -16,7 +22,8 @@ export interface PublicPoint {
|
|
|
16
22
|
* for Tree-sitter lookup.
|
|
17
23
|
*
|
|
18
24
|
* `character` is a UTF-16 code-unit column (editor/LSP convention).
|
|
19
|
-
*
|
|
25
|
+
* The column maps directly to JavaScript string code units — no byte
|
|
26
|
+
* conversion is needed for web-tree-sitter's string-parsing mode.
|
|
20
27
|
*/
|
|
21
28
|
export function publicToTreeSitter(
|
|
22
29
|
line: number,
|
|
@@ -25,32 +32,27 @@ export function publicToTreeSitter(
|
|
|
25
32
|
): { row: number; column: number } {
|
|
26
33
|
const row = line - 1;
|
|
27
34
|
const lines = splitSourceLines(source);
|
|
28
|
-
const lineText = row < lines.length ? lines[row] : "";
|
|
29
|
-
//
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const textBefore = lineText.substring(0, charIndex);
|
|
33
|
-
const byteOffset = encoder.encode(textBefore).length;
|
|
34
|
-
return { row, column: byteOffset };
|
|
35
|
+
const lineText = row < lines.length ? (lines[row] ?? "") : "";
|
|
36
|
+
// Clamp column to the line length.
|
|
37
|
+
const column = Math.max(0, Math.min(character - 1, lineText.length));
|
|
38
|
+
return { row, column };
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
/**
|
|
38
42
|
* Convert a Tree-sitter (row, column) pair to a 1-based (line, character) pair.
|
|
39
43
|
*
|
|
40
|
-
* `column` is a
|
|
41
|
-
* code-unit index.
|
|
44
|
+
* `column` is a zero-based JavaScript string code unit offset within the line.
|
|
42
45
|
*/
|
|
43
46
|
export function treeSitterToPublic(row: number, column: number, source: string): PublicPoint {
|
|
47
|
+
// Clamp to EOL for positions right after the last character.
|
|
44
48
|
const lines = splitSourceLines(source);
|
|
45
|
-
const lineText = row < lines.length ? lines[row] : "";
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return { line: row + 1, character: charIndex + 1 };
|
|
49
|
+
const lineText = row < lines.length ? (lines[row] ?? "") : "";
|
|
50
|
+
const safeColumn = Math.max(0, Math.min(column, lineText.length));
|
|
51
|
+
return { line: row + 1, character: safeColumn + 1 };
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
/**
|
|
52
55
|
* Convert a Tree-sitter point {row, column} to a SourceRange-compatible point.
|
|
53
|
-
* Uses the source text for byte-to-UTF16 conversion.
|
|
54
56
|
*/
|
|
55
57
|
export function tsPointToPublic(
|
|
56
58
|
point: { row: number; column: number },
|
|
@@ -83,26 +85,3 @@ export function nodeToRange(
|
|
|
83
85
|
export function splitSourceLines(source: string): string[] {
|
|
84
86
|
return source.replace(/\r\n?/g, "\n").split("\n");
|
|
85
87
|
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Convert a byte offset within a line to a UTF-16 code unit index.
|
|
89
|
-
*/
|
|
90
|
-
function byteToUtf16Index(line: string, byteOffset: number): number {
|
|
91
|
-
let byteCount = 0;
|
|
92
|
-
for (let i = 0; i < line.length; i++) {
|
|
93
|
-
if (byteCount >= byteOffset) return i;
|
|
94
|
-
const char = line.charCodeAt(i);
|
|
95
|
-
// surrogate pair — 4 bytes in UTF-8, but 2 UTF-16 code units
|
|
96
|
-
if (char >= 0xd800 && char <= 0xdbff) {
|
|
97
|
-
byteCount += 4;
|
|
98
|
-
i++; // skip low surrogate
|
|
99
|
-
} else if (char > 0x7f) {
|
|
100
|
-
// Non-ASCII: 2-3 bytes in UTF-8
|
|
101
|
-
if (char <= 0x7ff) byteCount += 2;
|
|
102
|
-
else byteCount += 3;
|
|
103
|
-
} else {
|
|
104
|
-
byteCount += 1;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return line.length;
|
|
108
|
-
}
|
|
@@ -11,6 +11,8 @@ export {
|
|
|
11
11
|
isJsTsGrammar,
|
|
12
12
|
isSupportedFile,
|
|
13
13
|
} from "./language.ts";
|
|
14
|
+
export type { StructuralSearchOperation } from "./operation-support.ts";
|
|
15
|
+
export { getStructuralSearchSupportedExtensions } from "./operation-support.ts";
|
|
14
16
|
// Provider implementation
|
|
15
17
|
export { createTreeSitterProvider } from "./provider/tree-sitter-provider.ts";
|
|
16
18
|
export { TreeSitterRuntime } from "./session/runtime.ts";
|
|
@@ -61,6 +61,13 @@ export function getSupportedExtensions(): string[] {
|
|
|
61
61
|
return [...SUPPORTED_EXTENSIONS];
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
/** Internal registry snapshot used to derive operation-specific language support. */
|
|
65
|
+
export function getSupportedExtensionGrammarEntries(): Array<
|
|
66
|
+
readonly [SupportedExtension, GrammarId]
|
|
67
|
+
> {
|
|
68
|
+
return Object.entries(EXTENSION_GRAMMAR) as Array<readonly [SupportedExtension, GrammarId]>;
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
/** Get the file extension if it's supported, otherwise undefined. */
|
|
65
72
|
export function getSupportedExtension(filePath: string): SupportedExtension | undefined {
|
|
66
73
|
const ext = path.extname(filePath).toLowerCase();
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getSupportedExtensionGrammarEntries, isJsTsGrammar } from "./language.ts";
|
|
2
|
+
import { supportsCallSitesGrammar } from "./tool/call-sites.ts";
|
|
3
|
+
import type { GrammarId, SupportedExtension } from "./types.ts";
|
|
4
|
+
|
|
5
|
+
/** Structural collection operations whose language support defines an AST Scan universe. */
|
|
6
|
+
const STRUCTURAL_SEARCH_OPERATIONS = ["outline", "imports", "exports", "call-sites"] as const;
|
|
7
|
+
|
|
8
|
+
/** One Tree-sitter structural collection operation used by code-aware search. */
|
|
9
|
+
export type StructuralSearchOperation = (typeof STRUCTURAL_SEARCH_OPERATIONS)[number];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Return the file extensions that the concrete extractor supports for an operation.
|
|
13
|
+
*
|
|
14
|
+
* This is operation support, not general parser support. The result is derived from
|
|
15
|
+
* the same grammar predicates and query registry used by the extractors themselves.
|
|
16
|
+
*/
|
|
17
|
+
export function getStructuralSearchSupportedExtensions(
|
|
18
|
+
operation: StructuralSearchOperation,
|
|
19
|
+
): SupportedExtension[] {
|
|
20
|
+
return getSupportedExtensionGrammarEntries()
|
|
21
|
+
.filter(([, grammar]) => supportsGrammarOperation(grammar, operation))
|
|
22
|
+
.map(([extension]) => extension);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Return whether one grammar is supported by the requested structural operation. */
|
|
26
|
+
export function supportsGrammarOperation(
|
|
27
|
+
grammar: GrammarId,
|
|
28
|
+
operation: StructuralSearchOperation,
|
|
29
|
+
): boolean {
|
|
30
|
+
switch (operation) {
|
|
31
|
+
case "call-sites":
|
|
32
|
+
return supportsCallSitesGrammar(grammar);
|
|
33
|
+
case "outline":
|
|
34
|
+
case "imports":
|
|
35
|
+
case "exports":
|
|
36
|
+
return isJsTsGrammar(grammar);
|
|
37
|
+
default:
|
|
38
|
+
throw new TypeError(`Unsupported structural search operation: ${String(operation)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Session factory — creates runtime-backed Tree-sitter services and owned sessions.
|
|
2
2
|
|
|
3
|
-
import { detectGrammar
|
|
3
|
+
import { detectGrammar } from "../language.ts";
|
|
4
|
+
import { supportsGrammarOperation } from "../operation-support.ts";
|
|
4
5
|
import {
|
|
5
6
|
extractCallSites,
|
|
6
7
|
extractExports,
|
|
@@ -45,15 +46,16 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
|
|
|
45
46
|
},
|
|
46
47
|
|
|
47
48
|
async outline(file: string): Promise<TreeSitterResult<OutlineItem[]>> {
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
if (!isJsTsGrammar(parseResult.data.grammarId)) {
|
|
49
|
+
const grammarId = detectGrammar(file);
|
|
50
|
+
if (grammarId && !supportsGrammarOperation(grammarId, "outline")) {
|
|
51
51
|
return {
|
|
52
52
|
kind: "unsupported-language",
|
|
53
53
|
file,
|
|
54
|
-
message: `outline is not supported for ${
|
|
54
|
+
message: `outline is not supported for ${grammarId} files`,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
+
const parseResult = await runtime.parseFile(file);
|
|
58
|
+
if (parseResult.kind !== "success") return parseResult;
|
|
57
59
|
const { tree, source } = parseResult.data;
|
|
58
60
|
try {
|
|
59
61
|
const items = extractOutline(tree.rootNode, source);
|
|
@@ -65,7 +67,7 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
|
|
|
65
67
|
|
|
66
68
|
async imports(file: string): Promise<TreeSitterResult<ImportRecord[]>> {
|
|
67
69
|
const grammarId = detectGrammar(file);
|
|
68
|
-
if (grammarId && !
|
|
70
|
+
if (grammarId && !supportsGrammarOperation(grammarId, "imports")) {
|
|
69
71
|
return {
|
|
70
72
|
kind: "unsupported-language",
|
|
71
73
|
file,
|
|
@@ -77,7 +79,7 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
|
|
|
77
79
|
|
|
78
80
|
async exports(file: string): Promise<TreeSitterResult<ExportRecord[]>> {
|
|
79
81
|
const grammarId = detectGrammar(file);
|
|
80
|
-
if (grammarId && !
|
|
82
|
+
if (grammarId && !supportsGrammarOperation(grammarId, "exports")) {
|
|
81
83
|
return {
|
|
82
84
|
kind: "unsupported-language",
|
|
83
85
|
file,
|
|
@@ -30,10 +30,15 @@ const CALL_SITE_QUERIES: Partial<Record<GrammarId, string>> = {
|
|
|
30
30
|
kotlin:
|
|
31
31
|
"(call_expression . (simple_identifier) @call) (call_expression . (navigation_expression . (simple_identifier) @call))",
|
|
32
32
|
ruby: "(call method: (identifier) @call)",
|
|
33
|
-
bash: "(command name: (
|
|
33
|
+
bash: "(command name: (command_name) @call)",
|
|
34
34
|
r: "(call function: (identifier) @call)",
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
+
/** Return whether the call-site extractor has a query for one grammar. */
|
|
38
|
+
export function supportsCallSitesGrammar(grammarId: GrammarId): boolean {
|
|
39
|
+
return CALL_SITE_QUERIES[grammarId] !== undefined;
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
/**
|
|
38
43
|
* Extract all call-site callee expressions from a file.
|
|
39
44
|
*
|
|
@@ -188,7 +188,7 @@ export async function lookupCalleesAt(
|
|
|
188
188
|
|
|
189
189
|
try {
|
|
190
190
|
const scopes = ENCLOSING_SCOPE_TYPES[grammarId];
|
|
191
|
-
const tsPoint =
|
|
191
|
+
const tsPoint = { row: line - 1, column: character - 1 };
|
|
192
192
|
const node = tree.rootNode.descendantForPosition(tsPoint);
|
|
193
193
|
|
|
194
194
|
if (!node) {
|
|
@@ -222,13 +222,7 @@ export async function lookupCalleesAt(
|
|
|
222
222
|
};
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
const callees = filterCalleeCaptures(
|
|
226
|
-
queryResult.data,
|
|
227
|
-
enclosingNode,
|
|
228
|
-
scopes,
|
|
229
|
-
tsPoint.row,
|
|
230
|
-
depth,
|
|
231
|
-
);
|
|
225
|
+
const callees = filterCalleeCaptures(queryResult.data, enclosingNode, scopes, tsPoint, depth);
|
|
232
226
|
|
|
233
227
|
const enclosingRange = nodeToSourceRange(enclosingNode);
|
|
234
228
|
const scopeName = extractScopeName(enclosingNode.type, enclosingNode.text);
|
|
@@ -250,47 +244,74 @@ export async function lookupCalleesAt(
|
|
|
250
244
|
}
|
|
251
245
|
|
|
252
246
|
/**
|
|
253
|
-
* Recursively collect
|
|
254
|
-
*
|
|
247
|
+
* Recursively collect inner function/method/callback scopes that do NOT
|
|
248
|
+
* contain the anchor point. Captures from these ranges are excluded so
|
|
255
249
|
* nested calls are not attributed to the parent scope.
|
|
250
|
+
*
|
|
251
|
+
* Containment compares both row and column to handle same-line nested
|
|
252
|
+
* functions correctly.
|
|
256
253
|
*/
|
|
257
254
|
function collectInnerScopes(
|
|
258
255
|
node: {
|
|
259
256
|
type: string;
|
|
260
257
|
children: unknown[];
|
|
261
|
-
startPosition: { row: number };
|
|
262
|
-
endPosition: { row: number };
|
|
258
|
+
startPosition: { row: number; column: number };
|
|
259
|
+
endPosition: { row: number; column: number };
|
|
263
260
|
} | null,
|
|
264
261
|
scopeTypes: ReadonlySet<string>,
|
|
265
|
-
|
|
266
|
-
ranges: Array<{
|
|
262
|
+
anchor: { row: number; column: number },
|
|
263
|
+
ranges: Array<{
|
|
264
|
+
startRow: number;
|
|
265
|
+
startColumn: number;
|
|
266
|
+
endRow: number;
|
|
267
|
+
endColumn: number;
|
|
268
|
+
}>,
|
|
267
269
|
): void {
|
|
268
270
|
if (!node) return;
|
|
269
271
|
// biome-ignore lint/complexity/noForEach: safe iteration over node children
|
|
270
272
|
(node.children ?? []).forEach((child) => {
|
|
271
273
|
const childNode = child as {
|
|
272
274
|
type: string;
|
|
273
|
-
startPosition: { row: number };
|
|
274
|
-
endPosition: { row: number };
|
|
275
|
+
startPosition: { row: number; column: number };
|
|
276
|
+
endPosition: { row: number; column: number };
|
|
275
277
|
children: unknown[];
|
|
276
278
|
};
|
|
277
279
|
if (scopeTypes.has(childNode.type)) {
|
|
278
|
-
// Exclude this inner scope if it does NOT contain the anchor
|
|
279
|
-
|
|
280
|
+
// Exclude this inner scope if it does NOT contain the anchor point.
|
|
281
|
+
const contains = containsPoint(childNode, anchor);
|
|
282
|
+
if (!contains) {
|
|
280
283
|
ranges.push({
|
|
281
|
-
startRow: childNode.startPosition.row
|
|
282
|
-
|
|
284
|
+
startRow: childNode.startPosition.row,
|
|
285
|
+
startColumn: childNode.startPosition.column,
|
|
286
|
+
endRow: childNode.endPosition.row,
|
|
287
|
+
endColumn: childNode.endPosition.column,
|
|
283
288
|
});
|
|
284
289
|
}
|
|
285
290
|
// Still recurse into it for deeper nesting
|
|
286
|
-
collectInnerScopes(childNode, scopeTypes,
|
|
291
|
+
collectInnerScopes(childNode, scopeTypes, anchor, ranges);
|
|
287
292
|
} else {
|
|
288
293
|
// Recurse into non-scope children to find deeper scopes
|
|
289
|
-
collectInnerScopes(childNode, scopeTypes,
|
|
294
|
+
collectInnerScopes(childNode, scopeTypes, anchor, ranges);
|
|
290
295
|
}
|
|
291
296
|
});
|
|
292
297
|
}
|
|
293
298
|
|
|
299
|
+
function containsPoint(
|
|
300
|
+
node: {
|
|
301
|
+
startPosition: { row: number; column: number };
|
|
302
|
+
endPosition: { row: number; column: number };
|
|
303
|
+
},
|
|
304
|
+
point: { row: number; column: number },
|
|
305
|
+
): boolean {
|
|
306
|
+
const afterStart =
|
|
307
|
+
point.row > node.startPosition.row ||
|
|
308
|
+
(point.row === node.startPosition.row && point.column >= node.startPosition.column);
|
|
309
|
+
const beforeEnd =
|
|
310
|
+
point.row < node.endPosition.row ||
|
|
311
|
+
(point.row === node.endPosition.row && point.column <= node.endPosition.column);
|
|
312
|
+
return afterStart && beforeEnd;
|
|
313
|
+
}
|
|
314
|
+
|
|
294
315
|
/**
|
|
295
316
|
* Filter query captures to only those within the enclosing scope.
|
|
296
317
|
* In `direct` depth, excludes captures that fall within inner nested
|
|
@@ -298,35 +319,57 @@ function collectInnerScopes(
|
|
|
298
319
|
* enclosing scope are included regardless of nesting.
|
|
299
320
|
*/
|
|
300
321
|
// biome-ignore lint/complexity/useMaxParams: filtering needs captures + node context + depth
|
|
322
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: filtering combines scope containment, column-aware inner-scope exclusion, and dedup in one cohesive pass
|
|
301
323
|
function filterCalleeCaptures(
|
|
302
324
|
captures: Array<{ range: SourceRange; text: string }>,
|
|
303
325
|
// biome-ignore lint/suspicious/noExplicitAny: tree-sitter SyntaxNode is complex
|
|
304
326
|
enclosingNode: any,
|
|
305
327
|
scopeTypes: ReadonlySet<string>,
|
|
306
|
-
|
|
328
|
+
anchor: { row: number; column: number },
|
|
307
329
|
depth: "direct" | "deep" = "direct",
|
|
308
330
|
): Array<{ name: string; range: SourceRange }> {
|
|
309
|
-
const excludeRanges: Array<{
|
|
331
|
+
const excludeRanges: Array<{
|
|
332
|
+
startRow: number;
|
|
333
|
+
startColumn: number;
|
|
334
|
+
endRow: number;
|
|
335
|
+
endColumn: number;
|
|
336
|
+
}> = [];
|
|
310
337
|
if (depth === "direct") {
|
|
311
|
-
collectInnerScopes(enclosingNode, scopeTypes,
|
|
338
|
+
collectInnerScopes(enclosingNode, scopeTypes, anchor, excludeRanges);
|
|
312
339
|
}
|
|
313
340
|
|
|
314
341
|
const seen = new Set<string>();
|
|
315
342
|
const callees: Array<{ name: string; range: SourceRange }> = [];
|
|
316
343
|
|
|
317
|
-
const enclosingStartRow = enclosingNode.startPosition.row
|
|
318
|
-
const enclosingEndRow = enclosingNode.endPosition.row
|
|
344
|
+
const enclosingStartRow = enclosingNode.startPosition.row;
|
|
345
|
+
const enclosingEndRow = enclosingNode.endPosition.row;
|
|
346
|
+
const enclosingStartColumn = enclosingNode.startPosition.column;
|
|
347
|
+
const enclosingEndColumn = enclosingNode.endPosition.column;
|
|
319
348
|
|
|
320
349
|
for (const capture of captures) {
|
|
321
|
-
// Only include captures within the enclosing scope
|
|
322
|
-
|
|
350
|
+
// Only include captures within the enclosing scope, using columns
|
|
351
|
+
// for same-line containment.
|
|
352
|
+
const capStartLine = capture.range.startLine - 1;
|
|
353
|
+
const capEndLine = capture.range.endLine - 1;
|
|
354
|
+
const capStartChar = capture.range.startCharacter - 1;
|
|
355
|
+
const capEndChar = capture.range.endCharacter - 1;
|
|
356
|
+
if (capStartLine < enclosingStartRow || capEndLine > enclosingEndRow) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
if (capStartLine === enclosingStartRow && capStartChar < enclosingStartColumn) {
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
if (capEndLine === enclosingEndRow && capEndChar > enclosingEndColumn) {
|
|
323
363
|
continue;
|
|
324
364
|
}
|
|
325
365
|
|
|
326
|
-
// In direct depth, exclude captures
|
|
366
|
+
// In direct depth, exclude captures within inner nested function scopes
|
|
327
367
|
if (depth === "direct") {
|
|
328
368
|
const isInInner = excludeRanges.some(
|
|
329
|
-
(exc) =>
|
|
369
|
+
(exc) =>
|
|
370
|
+
(capStartLine > exc.startRow ||
|
|
371
|
+
(capStartLine === exc.startRow && capStartChar >= exc.startColumn)) &&
|
|
372
|
+
(capEndLine < exc.endRow || (capEndLine === exc.endRow && capEndChar <= exc.endColumn)),
|
|
330
373
|
);
|
|
331
374
|
if (isInInner) continue;
|
|
332
375
|
}
|
|
@@ -343,7 +386,8 @@ function filterCalleeCaptures(
|
|
|
343
386
|
|
|
344
387
|
// ── Internal helpers ──────────────────────────────────────────────────
|
|
345
388
|
|
|
346
|
-
/** Convert a tree-sitter node to a SourceRange
|
|
389
|
+
/** Convert a tree-sitter node to a SourceRange using the source text for
|
|
390
|
+
* UTF-16 column conversion. */
|
|
347
391
|
function nodeToSourceRange(node: {
|
|
348
392
|
startPosition: { row: number; column: number };
|
|
349
393
|
endPosition: { row: number; column: number };
|
|
@@ -355,8 +399,3 @@ function nodeToSourceRange(node: {
|
|
|
355
399
|
endCharacter: node.endPosition.column + 1,
|
|
356
400
|
};
|
|
357
401
|
}
|
|
358
|
-
|
|
359
|
-
/** Convert 1-based position to tree-sitter 0-based point. */
|
|
360
|
-
function tsPosition(line: number, character: number): { row: number; column: number } {
|
|
361
|
-
return { row: line - 1, column: character - 1 };
|
|
362
|
-
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright Eemeli Aro <eemeli@gmail.com>
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
4
|
+
with or without fee is hereby granted, provided that the above copyright notice
|
|
5
|
+
and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
8
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
9
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
10
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
11
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
12
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
13
|
+
THIS SOFTWARE.
|