@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
package/src/analysis/evidence.ts
CHANGED
|
@@ -11,14 +11,24 @@
|
|
|
11
11
|
* evidence-list primitive beneath it.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
export type EvidencePartialReason =
|
|
14
|
+
export type EvidencePartialReason =
|
|
15
|
+
| "timeout"
|
|
16
|
+
| "safety-limit"
|
|
17
|
+
| "interrupted"
|
|
18
|
+
| "provider-limited"
|
|
19
|
+
| "filesystem-error"
|
|
20
|
+
| "configuration-error"
|
|
21
|
+
| "invalid-provider-location";
|
|
15
22
|
|
|
16
23
|
export interface EvidenceListMetadata {
|
|
17
24
|
key: string;
|
|
18
25
|
totalCount: number | null;
|
|
19
26
|
shownCount: number;
|
|
27
|
+
/** Known collected atoms hidden by presentation; null when not tracked. */
|
|
20
28
|
omittedCount: number | null;
|
|
21
29
|
partialReason: EvidencePartialReason | null;
|
|
30
|
+
/** Unusable semantic-provider locations excluded from valid evidence totals. */
|
|
31
|
+
invalidLocationCount?: number;
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
export interface EvidenceList<T> {
|
|
@@ -38,6 +48,8 @@ export interface CreatePartialEvidenceListParams<T> {
|
|
|
38
48
|
key: string;
|
|
39
49
|
items: T[];
|
|
40
50
|
partialReason: EvidencePartialReason;
|
|
51
|
+
/** Optional display cap; the overall evidence total remains unknown. */
|
|
52
|
+
maxResults?: number;
|
|
41
53
|
}
|
|
42
54
|
|
|
43
55
|
export interface EvidenceListSummary {
|
|
@@ -67,14 +79,17 @@ export function createEvidenceList<T>(params: CreateEvidenceListParams<T>): Evid
|
|
|
67
79
|
export function createPartialEvidenceList<T>(
|
|
68
80
|
params: CreatePartialEvidenceListParams<T>,
|
|
69
81
|
): EvidenceList<T> {
|
|
82
|
+
const maxResults = params.maxResults ?? params.items.length;
|
|
83
|
+
const items = params.items.slice(0, Math.max(0, maxResults));
|
|
70
84
|
return {
|
|
71
85
|
key: params.key,
|
|
72
|
-
items
|
|
86
|
+
items,
|
|
73
87
|
metadata: {
|
|
74
88
|
key: params.key,
|
|
75
89
|
totalCount: null,
|
|
76
|
-
shownCount:
|
|
77
|
-
omittedCount:
|
|
90
|
+
shownCount: items.length,
|
|
91
|
+
omittedCount:
|
|
92
|
+
params.maxResults === undefined ? null : Math.max(0, params.items.length - items.length),
|
|
78
93
|
partialReason: params.partialReason,
|
|
79
94
|
},
|
|
80
95
|
};
|
|
@@ -89,7 +104,9 @@ export function renderEvidenceListMetadataDisclosure(
|
|
|
89
104
|
): string | null {
|
|
90
105
|
if (metadata.totalCount === null) {
|
|
91
106
|
if (metadata.partialReason === null) return null;
|
|
92
|
-
|
|
107
|
+
const omitted = metadata.omittedCount ?? 0;
|
|
108
|
+
const omittedDisclosure = omitted > 0 ? `; ${omitted} collected omitted` : "";
|
|
109
|
+
return `_(showing ${metadata.shownCount}${omittedDisclosure}; more may exist — ${metadata.partialReason})_`;
|
|
93
110
|
}
|
|
94
111
|
|
|
95
112
|
if ((metadata.omittedCount ?? 0) <= 0) return null;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Diagnostics collection for code_health.
|
|
2
|
+
// Extracted from orchestrate.ts.
|
|
3
|
+
|
|
4
|
+
import { existsSync, statSync } from "node:fs";
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
import { isWithinOrEqual } from "@mrclrchtr/supi-core/api";
|
|
7
|
+
import type { Diagnostic, WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
|
|
8
|
+
import type {
|
|
9
|
+
HealthDiagnosticEntry,
|
|
10
|
+
HealthDiagnosticMessage,
|
|
11
|
+
HealthDiagnosticObservation,
|
|
12
|
+
HealthDiagnosticScope,
|
|
13
|
+
HealthSection,
|
|
14
|
+
} from "../../session/health-types.ts";
|
|
15
|
+
|
|
16
|
+
// ── Diagnostics ───────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
export function isScopedFile(scopeFilter: string | null): scopeFilter is string {
|
|
19
|
+
return scopeFilter !== null && existsSync(scopeFilter) && !isDirectory(scopeFilter);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Describe exactly what a health diagnostic observation can establish. */
|
|
23
|
+
export function diagnosticScope(scopeFilter: string | null): HealthDiagnosticScope {
|
|
24
|
+
return isScopedFile(scopeFilter)
|
|
25
|
+
? { kind: "file", path: scopeFilter }
|
|
26
|
+
: { kind: "tracked-files", filter: scopeFilter };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface CollectDiagnosticsOptions {
|
|
30
|
+
readonly service: WorkspaceLspRuntime | null;
|
|
31
|
+
readonly included: readonly HealthSection[];
|
|
32
|
+
readonly scope: HealthDiagnosticScope;
|
|
33
|
+
readonly cwd: string;
|
|
34
|
+
readonly unavailableReason: string;
|
|
35
|
+
/** Collect individual messages per file (detailed level). */
|
|
36
|
+
readonly detailed?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Collect diagnostics without widening the requested evidence scope. */
|
|
40
|
+
export async function collectDiagnostics(
|
|
41
|
+
options: CollectDiagnosticsOptions,
|
|
42
|
+
): Promise<HealthDiagnosticObservation> {
|
|
43
|
+
const { service, included, scope, cwd, unavailableReason, detailed } = options;
|
|
44
|
+
if (!included.includes("diagnostics")) return { kind: "not-requested", entries: [] };
|
|
45
|
+
if (!service) return unavailableDiagnostics(scope, unavailableReason);
|
|
46
|
+
|
|
47
|
+
return scope.kind === "file"
|
|
48
|
+
? collectScopedFileDiagnostics(service, scope, detailed)
|
|
49
|
+
: collectTrackedFileDiagnostics(service, scope, cwd, detailed);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function collectScopedFileDiagnostics(
|
|
53
|
+
service: WorkspaceLspRuntime,
|
|
54
|
+
scope: Extract<HealthDiagnosticScope, { kind: "file" }>,
|
|
55
|
+
detailed?: boolean,
|
|
56
|
+
): Promise<HealthDiagnosticObservation> {
|
|
57
|
+
try {
|
|
58
|
+
const result = await service.fileDiagnostics(scope.path, 4);
|
|
59
|
+
if (result.kind === "unavailable") return unavailableDiagnostics(scope, result.reason);
|
|
60
|
+
|
|
61
|
+
const entries = toFileDiagnosticEntries(scope.path, result.data, detailed);
|
|
62
|
+
return result.kind === "partial"
|
|
63
|
+
? { kind: "partial", scope, entries, reason: result.reason }
|
|
64
|
+
: { kind: "completed", scope, entries };
|
|
65
|
+
} catch (error) {
|
|
66
|
+
return unavailableDiagnostics(scope, errorMessage(error, "File diagnostic request failed."));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function collectTrackedFileDiagnostics(
|
|
71
|
+
service: WorkspaceLspRuntime,
|
|
72
|
+
scope: Extract<HealthDiagnosticScope, { kind: "tracked-files" }>,
|
|
73
|
+
cwd: string,
|
|
74
|
+
detailed?: boolean,
|
|
75
|
+
): HealthDiagnosticObservation {
|
|
76
|
+
try {
|
|
77
|
+
const entries = detailed
|
|
78
|
+
? collectWorkspaceDiagnosticsDetailed(service, scope.filter, cwd)
|
|
79
|
+
: collectWorkspaceDiagnostics(service, scope.filter, cwd);
|
|
80
|
+
return { kind: "completed", scope, entries };
|
|
81
|
+
} catch (error) {
|
|
82
|
+
return unavailableDiagnostics(
|
|
83
|
+
scope,
|
|
84
|
+
errorMessage(error, "Tracked-file diagnostic snapshot is unavailable."),
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function toFileDiagnosticEntries(
|
|
90
|
+
file: string,
|
|
91
|
+
diagnostics: ReadonlyArray<Pick<Diagnostic, "severity" | "message" | "source" | "range">>,
|
|
92
|
+
detailed?: boolean,
|
|
93
|
+
): HealthDiagnosticEntry[] {
|
|
94
|
+
const errors = diagnostics.filter((diagnostic) => (diagnostic.severity ?? 1) === 1).length;
|
|
95
|
+
const warnings = diagnostics.filter((diagnostic) => (diagnostic.severity ?? 1) === 2).length;
|
|
96
|
+
if (!hasIssueCounts(errors, warnings)) return [];
|
|
97
|
+
const entry: HealthDiagnosticEntry = { file, errors, warnings };
|
|
98
|
+
if (detailed) {
|
|
99
|
+
return [{ ...entry, messages: extractMessages(diagnostics) }];
|
|
100
|
+
}
|
|
101
|
+
return [entry];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function collectWorkspaceDiagnostics(
|
|
105
|
+
service: WorkspaceLspRuntime,
|
|
106
|
+
scopeFilter: string | null,
|
|
107
|
+
cwd: string,
|
|
108
|
+
): HealthDiagnosticEntry[] {
|
|
109
|
+
const summary = service.getWorkspaceDiagnosticSummary();
|
|
110
|
+
const result: HealthDiagnosticEntry[] = [];
|
|
111
|
+
|
|
112
|
+
for (const entry of summary) {
|
|
113
|
+
const filePath = resolve(cwd, entry.file);
|
|
114
|
+
if (scopeFilter && !isWithinOrEqual(scopeFilter, filePath)) continue;
|
|
115
|
+
if (!hasIssueCounts(entry.errors, entry.warnings)) continue;
|
|
116
|
+
result.push({ file: filePath, errors: entry.errors, warnings: entry.warnings });
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Detailed workspace path: full diagnostics with messages, capped per file. */
|
|
123
|
+
function collectWorkspaceDiagnosticsDetailed(
|
|
124
|
+
service: WorkspaceLspRuntime,
|
|
125
|
+
scopeFilter: string | null,
|
|
126
|
+
cwd: string,
|
|
127
|
+
): HealthDiagnosticEntry[] {
|
|
128
|
+
const outstanding = service.getOutstandingDiagnostics(2);
|
|
129
|
+
const result: HealthDiagnosticEntry[] = [];
|
|
130
|
+
|
|
131
|
+
for (const { file, diagnostics } of outstanding) {
|
|
132
|
+
const filePath = resolve(cwd, file);
|
|
133
|
+
if (scopeFilter && !isWithinOrEqual(scopeFilter, filePath)) continue;
|
|
134
|
+
const entries = toFileDiagnosticEntries(filePath, diagnostics, true);
|
|
135
|
+
result.push(...entries);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// ── Message extraction ────────────────────────────────────────────────
|
|
142
|
+
|
|
143
|
+
const MAX_MESSAGES_PER_FILE = 3;
|
|
144
|
+
|
|
145
|
+
function extractMessages(
|
|
146
|
+
diagnostics: ReadonlyArray<Pick<Diagnostic, "severity" | "message" | "source" | "range">>,
|
|
147
|
+
): HealthDiagnosticMessage[] {
|
|
148
|
+
const errorsAndWarnings = diagnostics
|
|
149
|
+
.filter((d) => (d.severity ?? 1) <= 2)
|
|
150
|
+
.sort(
|
|
151
|
+
(a, b) => (a.severity ?? 1) - (b.severity ?? 1) || a.range.start.line - b.range.start.line,
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
return errorsAndWarnings.slice(0, MAX_MESSAGES_PER_FILE).map((d) => ({
|
|
155
|
+
line: d.range.start.line + 1,
|
|
156
|
+
severity: (d.severity ?? 1) === 1 ? ("error" as const) : ("warning" as const),
|
|
157
|
+
message: typeof d.message === "string" ? d.message : d.message.value,
|
|
158
|
+
...(d.source ? { source: d.source } : {}),
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function unavailableDiagnostics(
|
|
163
|
+
scope: HealthDiagnosticScope,
|
|
164
|
+
reason: string,
|
|
165
|
+
): HealthDiagnosticObservation {
|
|
166
|
+
return { kind: "unavailable", scope, entries: [], reason };
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function errorMessage(error: unknown, fallback: string): string {
|
|
170
|
+
return error instanceof Error && error.message ? error.message : fallback;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function hasIssueCounts(errors: number, warnings: number): boolean {
|
|
174
|
+
return errors > 0 || warnings > 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export function isDirectory(filePath: string): boolean {
|
|
178
|
+
try {
|
|
179
|
+
return statSync(filePath).isDirectory();
|
|
180
|
+
} catch {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Recovery and state description helpers for code_health.
|
|
2
|
+
// Extracted from orchestrate.ts.
|
|
3
|
+
|
|
4
|
+
import type { CapabilityState } from "@mrclrchtr/supi-code-runtime/api";
|
|
5
|
+
import type { RecoverDiagnosticsResult, WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
|
|
6
|
+
|
|
7
|
+
// ── Recovery ──────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
interface RecoverOptions {
|
|
10
|
+
service: WorkspaceLspRuntime;
|
|
11
|
+
progress?: () => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Run the runtime's best-effort recovery and preserve its established outcome. */
|
|
15
|
+
export async function recoverDiagnosticRuntime(
|
|
16
|
+
opts: RecoverOptions,
|
|
17
|
+
): Promise<RecoverDiagnosticsResult> {
|
|
18
|
+
opts.progress?.();
|
|
19
|
+
return opts.service.recoverDiagnostics({ restartIfStillStale: true });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ── State description helpers ─────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
export function describeStructuralState(state: CapabilityState): string {
|
|
25
|
+
switch (state.kind) {
|
|
26
|
+
case "ready":
|
|
27
|
+
return "ready";
|
|
28
|
+
case "pending":
|
|
29
|
+
return "starting…";
|
|
30
|
+
case "inactive":
|
|
31
|
+
return "inactive";
|
|
32
|
+
case "disabled":
|
|
33
|
+
return "disabled by configuration";
|
|
34
|
+
case "unavailable":
|
|
35
|
+
return `unavailable — ${state.reason}`;
|
|
36
|
+
default:
|
|
37
|
+
return "unknown state";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Live server collection for code_health.
|
|
2
|
+
|
|
3
|
+
import type { WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
|
|
4
|
+
import type { HealthData, HealthSection } from "../../session/health-types.ts";
|
|
5
|
+
|
|
6
|
+
/** Collect the current language-server inventory when requested. */
|
|
7
|
+
export function collectServers(
|
|
8
|
+
service: WorkspaceLspRuntime | null,
|
|
9
|
+
included: readonly HealthSection[],
|
|
10
|
+
): HealthData["servers"] {
|
|
11
|
+
if (!included.includes("servers") || !service) return [];
|
|
12
|
+
|
|
13
|
+
return service.getProjectServers().map((server) => ({
|
|
14
|
+
name: server.name,
|
|
15
|
+
root: server.root,
|
|
16
|
+
fileTypes: server.fileTypes,
|
|
17
|
+
status: server.status,
|
|
18
|
+
ready: server.ready,
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Directory-local instruction file discovery and rendering for code_orientation.
|
|
2
2
|
|
|
3
|
-
import { readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { readFileSync, realpathSync, statSync } from "node:fs";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import { isWithinOrEqual } from "@mrclrchtr/supi-core/project";
|
|
6
6
|
|
|
@@ -33,11 +33,30 @@ export interface InstructionFilesMetadata {
|
|
|
33
33
|
files: Array<Omit<RenderedInstructionFile, "content">>;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Validate that a configured instruction file name is a plain filename
|
|
38
|
+
* with no directory components. Rejects names that would allow path traversal.
|
|
39
|
+
*/
|
|
40
|
+
export function isValidInstructionFileName(name: unknown): name is string {
|
|
41
|
+
if (typeof name !== "string") return false;
|
|
42
|
+
const trimmed = name.trim();
|
|
43
|
+
if (trimmed.length === 0 || trimmed !== name) return false;
|
|
44
|
+
if (trimmed !== path.basename(trimmed)) return false;
|
|
45
|
+
if (trimmed === "." || trimmed === "..") return false;
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
|
|
36
49
|
/**
|
|
37
50
|
* Find configured instruction files for a directory focus.
|
|
38
51
|
*
|
|
39
52
|
* Walks from cwd to the focused directory (shallowest first, deepest last),
|
|
40
|
-
* selecting the first configured file name that exists in each directory.
|
|
53
|
+
* selecting the first valid configured file name that exists in each directory.
|
|
54
|
+
* Each configured name is validated as a plain filename; resolved candidates
|
|
55
|
+
* are verified via realpath to remain within the workspace root.
|
|
56
|
+
*
|
|
57
|
+
* When the project is not trusted, all project-configured instruction files
|
|
58
|
+
* are rejected so a repository-authored path cannot cause reads outside the
|
|
59
|
+
* workspace root.
|
|
41
60
|
*/
|
|
42
61
|
export function findInstructionFilesForDirectory(options: {
|
|
43
62
|
directory: string;
|
|
@@ -45,11 +64,17 @@ export function findInstructionFilesForDirectory(options: {
|
|
|
45
64
|
fileNames: string[];
|
|
46
65
|
nativeContextPaths: Set<string>;
|
|
47
66
|
surfacedDirectories: Set<string>;
|
|
67
|
+
/** Whether project-local configuration is trusted. */
|
|
68
|
+
projectTrusted: boolean;
|
|
48
69
|
}): InstructionFileMatch[] {
|
|
49
70
|
const cwd = path.resolve(options.cwd);
|
|
50
71
|
const directory = path.resolve(options.directory);
|
|
51
|
-
|
|
52
|
-
|
|
72
|
+
|
|
73
|
+
const validNames =
|
|
74
|
+
options.projectTrusted && Array.isArray(options.fileNames)
|
|
75
|
+
? options.fileNames.filter(isValidInstructionFileName)
|
|
76
|
+
: [];
|
|
77
|
+
if (validNames.length === 0) return [];
|
|
53
78
|
if (!isDirectoryWithinCwd(directory, cwd)) return [];
|
|
54
79
|
|
|
55
80
|
const dirs = collectDirsShallowestFirst(directory, cwd);
|
|
@@ -57,7 +82,7 @@ export function findInstructionFilesForDirectory(options: {
|
|
|
57
82
|
|
|
58
83
|
for (const dir of dirs) {
|
|
59
84
|
if (options.surfacedDirectories.has(dir)) continue;
|
|
60
|
-
const match = findFirstInstructionFile(dir, cwd,
|
|
85
|
+
const match = findFirstInstructionFile(dir, cwd, validNames);
|
|
61
86
|
if (!match) continue;
|
|
62
87
|
if (options.nativeContextPaths.has(match.absolutePath)) continue;
|
|
63
88
|
matches.push(match);
|
|
@@ -68,7 +93,9 @@ export function findInstructionFilesForDirectory(options: {
|
|
|
68
93
|
|
|
69
94
|
function isDirectoryWithinCwd(directory: string, cwd: string): boolean {
|
|
70
95
|
try {
|
|
71
|
-
|
|
96
|
+
const realCwd = path.resolve(realpathSync(cwd));
|
|
97
|
+
const realDirectory = path.resolve(realpathSync(directory));
|
|
98
|
+
return statSync(realDirectory).isDirectory() && isWithinOrEqual(realCwd, realDirectory);
|
|
72
99
|
} catch {
|
|
73
100
|
return false;
|
|
74
101
|
}
|
|
@@ -96,9 +123,30 @@ function findFirstInstructionFile(
|
|
|
96
123
|
): InstructionFileMatch | null {
|
|
97
124
|
for (const fileName of fileNames) {
|
|
98
125
|
const candidate = path.join(dir, fileName);
|
|
99
|
-
|
|
126
|
+
|
|
127
|
+
// Resolve the candidate to its real path to defuse symlinks that
|
|
128
|
+
// may point outside the workspace.
|
|
129
|
+
let realCandidate: string;
|
|
130
|
+
try {
|
|
131
|
+
realCandidate = path.resolve(realpathSync(candidate));
|
|
132
|
+
} catch {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (!isFile(realCandidate)) continue;
|
|
136
|
+
|
|
137
|
+
// Verify containment: both the workspace root and the candidate must
|
|
138
|
+
// be resolved consistently so symlinks in temp directories (e.g. macOS
|
|
139
|
+
// /var → /private/var) don't break containment.
|
|
140
|
+
let realCwd: string;
|
|
141
|
+
try {
|
|
142
|
+
realCwd = path.resolve(realpathSync(cwd));
|
|
143
|
+
} catch {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (!isWithinOrEqual(realCwd, realCandidate)) continue;
|
|
147
|
+
|
|
100
148
|
return {
|
|
101
|
-
absolutePath:
|
|
149
|
+
absolutePath: realCandidate,
|
|
102
150
|
relativePath: path.relative(cwd, candidate),
|
|
103
151
|
directory: dir,
|
|
104
152
|
relativeDirectory: path.relative(cwd, dir) || ".",
|
|
@@ -107,32 +155,15 @@ function findFirstInstructionFile(
|
|
|
107
155
|
return null;
|
|
108
156
|
}
|
|
109
157
|
|
|
110
|
-
/**
|
|
111
|
-
export function
|
|
158
|
+
/** Read bounded instruction-file facts for session-owned Orientation. */
|
|
159
|
+
export function collectInstructionFiles(
|
|
112
160
|
files: InstructionFileMatch[],
|
|
113
161
|
lineLimit = INSTRUCTION_FILE_LINE_LIMIT,
|
|
114
|
-
): {
|
|
162
|
+
): { files: RenderedInstructionFile[]; metadata: InstructionFilesMetadata } | null {
|
|
115
163
|
const rendered = files.map((file) => renderInstructionFile(file, lineLimit)).filter(isRendered);
|
|
116
164
|
if (rendered.length === 0) return null;
|
|
117
|
-
|
|
118
|
-
const lines: string[] = [];
|
|
119
|
-
lines.push("## Instructions");
|
|
120
|
-
lines.push("");
|
|
121
|
-
for (const file of rendered) {
|
|
122
|
-
lines.push(`### ${file.path}`);
|
|
123
|
-
lines.push("");
|
|
124
|
-
lines.push(file.content);
|
|
125
|
-
if (file.truncated) {
|
|
126
|
-
lines.push("");
|
|
127
|
-
lines.push(
|
|
128
|
-
`_Instruction file truncated to ${file.shownLines} of ${file.totalLines} lines. Use \`read\` on \`${file.path}\` for the full file._`,
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
lines.push("");
|
|
132
|
-
}
|
|
133
|
-
|
|
134
165
|
return {
|
|
135
|
-
|
|
166
|
+
files: rendered,
|
|
136
167
|
metadata: {
|
|
137
168
|
files: rendered.map(({ content: _content, ...metadata }) => metadata),
|
|
138
169
|
},
|
|
@@ -173,22 +204,3 @@ function renderInstructionFile(
|
|
|
173
204
|
function isRendered(value: RenderedInstructionFile | null): value is RenderedInstructionFile {
|
|
174
205
|
return value !== null;
|
|
175
206
|
}
|
|
176
|
-
|
|
177
|
-
/** Insert instruction markdown after the opening title/summary block of a brief. */
|
|
178
|
-
export function insertInstructionsNearTop(content: string, instructionsMarkdown: string): string {
|
|
179
|
-
const lines = content.split("\n");
|
|
180
|
-
const insertAt = findFirstSectionIndexAfterTitle(lines);
|
|
181
|
-
const before = lines.slice(0, insertAt).join("\n").trimEnd();
|
|
182
|
-
const after = lines.slice(insertAt).join("\n").trimStart();
|
|
183
|
-
|
|
184
|
-
if (!before) return `${instructionsMarkdown}\n\n${after}`.trimEnd();
|
|
185
|
-
if (!after) return `${before}\n\n${instructionsMarkdown}`.trimEnd();
|
|
186
|
-
return `${before}\n\n${instructionsMarkdown}\n\n${after}`.trimEnd();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function findFirstSectionIndexAfterTitle(lines: string[]): number {
|
|
190
|
-
for (let i = 1; i < lines.length; i++) {
|
|
191
|
-
if (lines[i].startsWith("## ")) return i;
|
|
192
|
-
}
|
|
193
|
-
return lines.length;
|
|
194
|
-
}
|
package/src/analysis/provider.ts
CHANGED
|
@@ -14,8 +14,9 @@ import {
|
|
|
14
14
|
getDefaultWorkspaceRuntime,
|
|
15
15
|
type SemanticProvider,
|
|
16
16
|
type StructuralProvider,
|
|
17
|
+
unavailableCodeQuery,
|
|
17
18
|
} from "@mrclrchtr/supi-code-runtime/api";
|
|
18
|
-
import {
|
|
19
|
+
import { getWorkspaceLspRuntime, type WorkspaceLspRuntimeState } from "@mrclrchtr/supi-lsp/api";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Unified code analysis provider combining semantic (LSP-backed) and
|
|
@@ -25,7 +26,7 @@ export interface CodeProvider extends SemanticProvider, StructuralProvider {}
|
|
|
25
26
|
|
|
26
27
|
/** Availability state for the code provider in a workspace. */
|
|
27
28
|
export type CodeProviderState =
|
|
28
|
-
| { kind: "ready"; provider: CodeProvider;
|
|
29
|
+
| { kind: "ready"; provider: CodeProvider; lspRuntime: WorkspaceLspRuntimeState }
|
|
29
30
|
| { kind: "unavailable"; reason: string };
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -77,7 +78,7 @@ export function getCodeProviderState(cwd: string): CodeProviderState {
|
|
|
77
78
|
(hasSemantic ? ws.semantic.provider : null) as SemanticProvider | null,
|
|
78
79
|
(hasStructural ? ws.structural.provider : null) as StructuralProvider | null,
|
|
79
80
|
),
|
|
80
|
-
|
|
81
|
+
lspRuntime: getWorkspaceLspRuntime(cwd),
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
84
|
|
|
@@ -93,6 +94,13 @@ export const getCodeProvider = getCodeProviderState;
|
|
|
93
94
|
* provider methods are forwarded automatically — no need to update
|
|
94
95
|
* the composite wrapper.
|
|
95
96
|
*/
|
|
97
|
+
/** Build a composite facade that deliberately exposes structural evidence only. */
|
|
98
|
+
export function createStructuralCodeProvider(
|
|
99
|
+
structural: StructuralProvider | null,
|
|
100
|
+
): CodeProvider | null {
|
|
101
|
+
return structural ? createCompositeProvider(null, structural) : null;
|
|
102
|
+
}
|
|
103
|
+
|
|
96
104
|
function createCompositeProvider(
|
|
97
105
|
semantic: SemanticProvider | null,
|
|
98
106
|
structural: StructuralProvider | null,
|
|
@@ -100,29 +108,40 @@ function createCompositeProvider(
|
|
|
100
108
|
return {
|
|
101
109
|
// ── Semantic methods ──────────────────────────────────────────────
|
|
102
110
|
async references(...args: Parameters<SemanticProvider["references"]>) {
|
|
103
|
-
return
|
|
111
|
+
return (
|
|
112
|
+
semantic?.references(...args) ?? unavailableCodeQuery("Semantic references unavailable")
|
|
113
|
+
);
|
|
104
114
|
},
|
|
105
115
|
async implementation(...args: Parameters<SemanticProvider["implementation"]>) {
|
|
106
|
-
return
|
|
116
|
+
return (
|
|
117
|
+
semantic?.implementation(...args) ??
|
|
118
|
+
unavailableCodeQuery("Semantic implementations unavailable")
|
|
119
|
+
);
|
|
107
120
|
},
|
|
108
121
|
async documentSymbols(...args: Parameters<SemanticProvider["documentSymbols"]>) {
|
|
109
|
-
return
|
|
122
|
+
return (
|
|
123
|
+
semantic?.documentSymbols(...args) ??
|
|
124
|
+
unavailableCodeQuery("Semantic document symbols unavailable")
|
|
125
|
+
);
|
|
110
126
|
},
|
|
111
127
|
async workspaceSymbols(...args: Parameters<SemanticProvider["workspaceSymbols"]>) {
|
|
112
|
-
return
|
|
128
|
+
return (
|
|
129
|
+
semantic?.workspaceSymbols(...args) ??
|
|
130
|
+
unavailableCodeQuery("Semantic workspace symbols unavailable")
|
|
131
|
+
);
|
|
113
132
|
},
|
|
114
133
|
async hover(...args: Parameters<NonNullable<SemanticProvider["hover"]>>) {
|
|
115
|
-
return semantic?.hover?.(...args) ??
|
|
134
|
+
return semantic?.hover?.(...args) ?? unavailableCodeQuery("Semantic hover unavailable");
|
|
116
135
|
},
|
|
117
136
|
async definition(...args: Parameters<NonNullable<SemanticProvider["definition"]>>) {
|
|
118
|
-
return
|
|
137
|
+
return (
|
|
138
|
+
semantic?.definition?.(...args) ?? unavailableCodeQuery("Semantic definition unavailable")
|
|
139
|
+
);
|
|
119
140
|
},
|
|
120
141
|
async codeActions(...args: Parameters<NonNullable<SemanticProvider["codeActions"]>>) {
|
|
121
142
|
return semantic?.codeActions?.(...args) ?? [];
|
|
122
143
|
},
|
|
123
|
-
|
|
124
|
-
return semantic?.codeActionTitles?.(...args) ?? null;
|
|
125
|
-
},
|
|
144
|
+
|
|
126
145
|
async rename(...args: Parameters<NonNullable<SemanticProvider["rename"]>>) {
|
|
127
146
|
const result = await semantic?.rename?.(...args);
|
|
128
147
|
return (
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getDefaultWorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
getWorkspaceLspRuntime,
|
|
4
4
|
type SemanticReadinessResult,
|
|
5
|
-
type
|
|
6
|
-
|
|
5
|
+
type WorkspaceLspRuntimeState,
|
|
6
|
+
waitForWorkspaceLspRuntime,
|
|
7
7
|
} from "@mrclrchtr/supi-lsp/api";
|
|
8
8
|
|
|
9
9
|
export const DEFAULT_SEMANTIC_STARTUP_TIMEOUT_MS = 15_000;
|
|
@@ -24,7 +24,7 @@ export async function ensureSemanticReadiness(
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
if (workspace.semantic.state.kind === "ready") {
|
|
27
|
-
return
|
|
27
|
+
return resolveReadySemanticState(cwd, scope, timeoutMs);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (workspace.semantic.state.kind !== "pending") {
|
|
@@ -59,15 +59,35 @@ export async function ensureSemanticReadiness(
|
|
|
59
59
|
return { kind: "timeout" };
|
|
60
60
|
}
|
|
61
61
|
return scope.kind === "workspace"
|
|
62
|
-
? lspState.
|
|
63
|
-
: lspState.
|
|
62
|
+
? lspState.runtime.waitUntilReadyForWorkspace({ timeoutMs: remainingAfterLsp })
|
|
63
|
+
: lspState.runtime.waitUntilReadyForFile(scope.file, { timeoutMs: remainingAfterLsp });
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function resolveReadySemanticState(
|
|
67
|
+
cwd: string,
|
|
68
|
+
scope: SemanticStartupScope,
|
|
69
|
+
timeoutMs: number,
|
|
70
|
+
): Promise<SemanticReadinessResult> | SemanticReadinessResult {
|
|
71
|
+
const lspState = getWorkspaceLspRuntime(cwd);
|
|
72
|
+
if (lspState.kind === "ready") {
|
|
73
|
+
return scope.kind === "workspace"
|
|
74
|
+
? lspState.runtime.waitUntilReadyForWorkspace({ timeoutMs })
|
|
75
|
+
: lspState.runtime.waitUntilReadyForFile(scope.file, { timeoutMs });
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
kind: "unavailable",
|
|
79
|
+
reason:
|
|
80
|
+
lspState.kind === "unavailable"
|
|
81
|
+
? lspState.reason
|
|
82
|
+
: `LSP service is ${lspState.kind} for this workspace.`,
|
|
83
|
+
};
|
|
64
84
|
}
|
|
65
85
|
|
|
66
86
|
async function resolveSemanticServiceState(
|
|
67
87
|
cwd: string,
|
|
68
88
|
timeoutMs: number,
|
|
69
|
-
): Promise<
|
|
70
|
-
const initialState =
|
|
89
|
+
): Promise<WorkspaceLspRuntimeState> {
|
|
90
|
+
const initialState = getWorkspaceLspRuntime(cwd);
|
|
71
91
|
if (initialState.kind !== "pending") return initialState;
|
|
72
|
-
return
|
|
92
|
+
return waitForWorkspaceLspRuntime(cwd, timeoutMs);
|
|
73
93
|
}
|