src-mcp 1.0.1
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/LICENSE +21 -0
- package/README.md +721 -0
- package/assets/languages.json +219 -0
- package/assets/queries/_javascript/highlights.scm +36 -0
- package/assets/queries/_javascript/locals.scm +14 -0
- package/assets/queries/_javascript/tags.scm +88 -0
- package/assets/queries/_jsx/highlights.scm +43 -0
- package/assets/queries/_jsx/indents.scm +6 -0
- package/assets/queries/_jsx/textobjects.scm +7 -0
- package/assets/queries/_typescript/highlights.scm +148 -0
- package/assets/queries/_typescript/indents.scm +5 -0
- package/assets/queries/_typescript/locals.scm +34 -0
- package/assets/queries/_typescript/tags.scm +23 -0
- package/assets/queries/_typescript/textobjects.scm +12 -0
- package/assets/queries/c/highlights.scm +167 -0
- package/assets/queries/c/indents.scm +51 -0
- package/assets/queries/c/injections.scm +2 -0
- package/assets/queries/c/locals.scm +38 -0
- package/assets/queries/c/rainbows.scm +29 -0
- package/assets/queries/c/tags.scm +9 -0
- package/assets/queries/c/textobjects.scm +27 -0
- package/assets/queries/c_sharp/highlights.scm +208 -0
- package/assets/queries/c_sharp/injections.scm +2 -0
- package/assets/queries/c_sharp/tags.scm +21 -0
- package/assets/queries/c_sharp/textobjects.scm +20 -0
- package/assets/queries/cpp/highlights.scm +177 -0
- package/assets/queries/cpp/indents.scm +3 -0
- package/assets/queries/cpp/injections.scm +4 -0
- package/assets/queries/cpp/rainbows.scm +49 -0
- package/assets/queries/cpp/tags.scm +12 -0
- package/assets/queries/cpp/textobjects.scm +7 -0
- package/assets/queries/ecma/highlights.scm +288 -0
- package/assets/queries/ecma/indents.scm +28 -0
- package/assets/queries/ecma/injections.scm +100 -0
- package/assets/queries/ecma/locals.scm +26 -0
- package/assets/queries/ecma/rainbows.scm +28 -0
- package/assets/queries/ecma/textobjects.scm +45 -0
- package/assets/queries/go/highlights.scm +236 -0
- package/assets/queries/go/indents.scm +40 -0
- package/assets/queries/go/injections.scm +92 -0
- package/assets/queries/go/locals.scm +25 -0
- package/assets/queries/go/rainbows.scm +33 -0
- package/assets/queries/go/tags.scm +30 -0
- package/assets/queries/go/textobjects.scm +33 -0
- package/assets/queries/html/highlights.scm +47 -0
- package/assets/queries/html/injections.scm +10 -0
- package/assets/queries/html/rainbows.scm +13 -0
- package/assets/queries/html/textobjects.scm +9 -0
- package/assets/queries/java/highlights.scm +227 -0
- package/assets/queries/java/indents.scm +35 -0
- package/assets/queries/java/injections.scm +2 -0
- package/assets/queries/java/rainbows.scm +35 -0
- package/assets/queries/java/tags.scm +27 -0
- package/assets/queries/java/textobjects.scm +44 -0
- package/assets/queries/javascript/highlights.scm +3 -0
- package/assets/queries/javascript/indents.scm +3 -0
- package/assets/queries/javascript/injections.scm +3 -0
- package/assets/queries/javascript/locals.scm +3 -0
- package/assets/queries/javascript/rainbows.scm +1 -0
- package/assets/queries/javascript/tags.scm +3 -0
- package/assets/queries/javascript/textobjects.scm +3 -0
- package/assets/queries/jsx/highlights.scm +3 -0
- package/assets/queries/jsx/indents.scm +3 -0
- package/assets/queries/jsx/injections.scm +3 -0
- package/assets/queries/jsx/locals.scm +3 -0
- package/assets/queries/jsx/rainbows.scm +9 -0
- package/assets/queries/jsx/tags.scm +3 -0
- package/assets/queries/jsx/textobjects.scm +3 -0
- package/assets/queries/kotlin/folds.scm +17 -0
- package/assets/queries/kotlin/highlights.scm +330 -0
- package/assets/queries/kotlin/indents.scm +44 -0
- package/assets/queries/kotlin/injections.scm +42 -0
- package/assets/queries/kotlin/locals.scm +23 -0
- package/assets/queries/kotlin/tags.scm +12 -0
- package/assets/queries/kotlin/textobjects.scm +45 -0
- package/assets/queries/ocaml/highlights.scm +151 -0
- package/assets/queries/ocaml/indents.scm +12 -0
- package/assets/queries/ocaml/injections.scm +2 -0
- package/assets/queries/ocaml/locals.scm +24 -0
- package/assets/queries/php/highlights.scm +319 -0
- package/assets/queries/php/indents.scm +18 -0
- package/assets/queries/php/injections.scm +25 -0
- package/assets/queries/php/rainbows.scm +15 -0
- package/assets/queries/php/tags.scm +26 -0
- package/assets/queries/php/textobjects.scm +52 -0
- package/assets/queries/python/highlights.scm +308 -0
- package/assets/queries/python/indents.scm +84 -0
- package/assets/queries/python/injections.scm +14 -0
- package/assets/queries/python/locals.scm +50 -0
- package/assets/queries/python/rainbows.scm +30 -0
- package/assets/queries/python/tags.scm +14 -0
- package/assets/queries/python/textobjects.scm +35 -0
- package/assets/queries/ruby/highlights.scm +191 -0
- package/assets/queries/ruby/indents.scm +24 -0
- package/assets/queries/ruby/injections.scm +35 -0
- package/assets/queries/ruby/locals.scm +20 -0
- package/assets/queries/ruby/rainbows.scm +28 -0
- package/assets/queries/ruby/tags.scm +64 -0
- package/assets/queries/ruby/textobjects.scm +56 -0
- package/assets/queries/rust/highlights.scm +514 -0
- package/assets/queries/rust/indents.scm +148 -0
- package/assets/queries/rust/injections.scm +170 -0
- package/assets/queries/rust/locals.scm +28 -0
- package/assets/queries/rust/rainbows.scm +60 -0
- package/assets/queries/rust/tags.scm +26 -0
- package/assets/queries/rust/textobjects.scm +85 -0
- package/assets/queries/scala/highlights.scm +267 -0
- package/assets/queries/scala/indents.scm +22 -0
- package/assets/queries/scala/injections.scm +16 -0
- package/assets/queries/scala/locals.scm +14 -0
- package/assets/queries/scala/textobjects.scm +65 -0
- package/assets/queries/svelte/folds.scm +13 -0
- package/assets/queries/svelte/highlights.scm +38 -0
- package/assets/queries/svelte/indents.scm +24 -0
- package/assets/queries/svelte/injections.scm +46 -0
- package/assets/queries/svelte/locals.scm +1 -0
- package/assets/queries/swift/highlights.scm +200 -0
- package/assets/queries/swift/indents.scm +100 -0
- package/assets/queries/swift/injections.scm +10 -0
- package/assets/queries/swift/locals.scm +19 -0
- package/assets/queries/swift/rainbows.scm +60 -0
- package/assets/queries/swift/textobjects.scm +23 -0
- package/assets/queries/tsx/highlights.scm +3 -0
- package/assets/queries/tsx/indents.scm +3 -0
- package/assets/queries/tsx/injections.scm +3 -0
- package/assets/queries/tsx/locals.scm +3 -0
- package/assets/queries/tsx/rainbows.scm +2 -0
- package/assets/queries/tsx/tags.scm +3 -0
- package/assets/queries/tsx/textobjects.scm +3 -0
- package/assets/queries/typescript/highlights.scm +3 -0
- package/assets/queries/typescript/indents.scm +3 -0
- package/assets/queries/typescript/injections.scm +3 -0
- package/assets/queries/typescript/locals.scm +3 -0
- package/assets/queries/typescript/rainbows.scm +19 -0
- package/assets/queries/typescript/tags.scm +3 -0
- package/assets/queries/typescript/textobjects.scm +3 -0
- package/assets/wasm/tree-sitter-c.wasm +0 -0
- package/assets/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/assets/wasm/tree-sitter-cpp.wasm +0 -0
- package/assets/wasm/tree-sitter-go.wasm +0 -0
- package/assets/wasm/tree-sitter-html.wasm +0 -0
- package/assets/wasm/tree-sitter-java.wasm +0 -0
- package/assets/wasm/tree-sitter-javascript.wasm +0 -0
- package/assets/wasm/tree-sitter-kotlin.wasm +0 -0
- package/assets/wasm/tree-sitter-ocaml.wasm +0 -0
- package/assets/wasm/tree-sitter-php.wasm +0 -0
- package/assets/wasm/tree-sitter-python.wasm +0 -0
- package/assets/wasm/tree-sitter-ruby.wasm +0 -0
- package/assets/wasm/tree-sitter-rust.wasm +0 -0
- package/assets/wasm/tree-sitter-scala.wasm +0 -0
- package/assets/wasm/tree-sitter-svelte.wasm +0 -0
- package/assets/wasm/tree-sitter-swift.wasm +0 -0
- package/assets/wasm/tree-sitter-tsx.wasm +0 -0
- package/assets/wasm/tree-sitter-typescript.wasm +0 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/adapter.d.ts +7 -0
- package/dist/cli/adapter.d.ts.map +1 -0
- package/dist/cli/adapter.js +39 -0
- package/dist/cli/adapter.js.map +1 -0
- package/dist/cli/commands/index.d.ts +24 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +13 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/serve.command.d.ts +21 -0
- package/dist/cli/commands/serve.command.d.ts.map +1 -0
- package/dist/cli/commands/serve.command.js +62 -0
- package/dist/cli/commands/serve.command.js.map +1 -0
- package/dist/cli/commands/version.command.d.ts +2 -0
- package/dist/cli/commands/version.command.d.ts.map +1 -0
- package/dist/cli/commands/version.command.js +12 -0
- package/dist/cli/commands/version.command.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +7 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +99 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/config/index.d.ts +24 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +38 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/ast/index.d.ts +82 -0
- package/dist/core/ast/index.d.ts.map +1 -0
- package/dist/core/ast/index.js +204 -0
- package/dist/core/ast/index.js.map +1 -0
- package/dist/core/ast/types.d.ts +152 -0
- package/dist/core/ast/types.d.ts.map +1 -0
- package/dist/core/ast/types.js +5 -0
- package/dist/core/ast/types.js.map +1 -0
- package/dist/core/constants.d.ts +17 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +49 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/embeddings/callgraph.d.ts +98 -0
- package/dist/core/embeddings/callgraph.d.ts.map +1 -0
- package/dist/core/embeddings/callgraph.js +415 -0
- package/dist/core/embeddings/callgraph.js.map +1 -0
- package/dist/core/embeddings/chunker.d.ts +37 -0
- package/dist/core/embeddings/chunker.d.ts.map +1 -0
- package/dist/core/embeddings/chunker.js +298 -0
- package/dist/core/embeddings/chunker.js.map +1 -0
- package/dist/core/embeddings/client.d.ts +30 -0
- package/dist/core/embeddings/client.d.ts.map +1 -0
- package/dist/core/embeddings/client.js +65 -0
- package/dist/core/embeddings/client.js.map +1 -0
- package/dist/core/embeddings/crossfile.d.ts +58 -0
- package/dist/core/embeddings/crossfile.d.ts.map +1 -0
- package/dist/core/embeddings/crossfile.js +202 -0
- package/dist/core/embeddings/crossfile.js.map +1 -0
- package/dist/core/embeddings/enricher.d.ts +53 -0
- package/dist/core/embeddings/enricher.d.ts.map +1 -0
- package/dist/core/embeddings/enricher.js +308 -0
- package/dist/core/embeddings/enricher.js.map +1 -0
- package/dist/core/embeddings/index.d.ts +13 -0
- package/dist/core/embeddings/index.d.ts.map +1 -0
- package/dist/core/embeddings/index.js +20 -0
- package/dist/core/embeddings/index.js.map +1 -0
- package/dist/core/embeddings/reranker.d.ts +41 -0
- package/dist/core/embeddings/reranker.d.ts.map +1 -0
- package/dist/core/embeddings/reranker.js +117 -0
- package/dist/core/embeddings/reranker.js.map +1 -0
- package/dist/core/embeddings/store.d.ts +93 -0
- package/dist/core/embeddings/store.d.ts.map +1 -0
- package/dist/core/embeddings/store.js +304 -0
- package/dist/core/embeddings/store.js.map +1 -0
- package/dist/core/embeddings/types.d.ts +77 -0
- package/dist/core/embeddings/types.d.ts.map +1 -0
- package/dist/core/embeddings/types.js +5 -0
- package/dist/core/embeddings/types.js.map +1 -0
- package/dist/core/embeddings/watcher.d.ts +130 -0
- package/dist/core/embeddings/watcher.d.ts.map +1 -0
- package/dist/core/embeddings/watcher.js +448 -0
- package/dist/core/embeddings/watcher.js.map +1 -0
- package/dist/core/fallback/index.d.ts +26 -0
- package/dist/core/fallback/index.d.ts.map +1 -0
- package/dist/core/fallback/index.js +76 -0
- package/dist/core/fallback/index.js.map +1 -0
- package/dist/core/parser/index.d.ts +64 -0
- package/dist/core/parser/index.d.ts.map +1 -0
- package/dist/core/parser/index.js +205 -0
- package/dist/core/parser/index.js.map +1 -0
- package/dist/core/parser/languages.d.ts +26 -0
- package/dist/core/parser/languages.d.ts.map +1 -0
- package/dist/core/parser/languages.js +101 -0
- package/dist/core/parser/languages.js.map +1 -0
- package/dist/core/queries/helpers.d.ts +72 -0
- package/dist/core/queries/helpers.d.ts.map +1 -0
- package/dist/core/queries/helpers.js +101 -0
- package/dist/core/queries/helpers.js.map +1 -0
- package/dist/core/queries/index.d.ts +144 -0
- package/dist/core/queries/index.d.ts.map +1 -0
- package/dist/core/queries/index.js +396 -0
- package/dist/core/queries/index.js.map +1 -0
- package/dist/core/queries/loader.d.ts +46 -0
- package/dist/core/queries/loader.d.ts.map +1 -0
- package/dist/core/queries/loader.js +216 -0
- package/dist/core/queries/loader.js.map +1 -0
- package/dist/core/queries/patterns.d.ts +10 -0
- package/dist/core/queries/patterns.d.ts.map +1 -0
- package/dist/core/queries/patterns.js +112 -0
- package/dist/core/queries/patterns.js.map +1 -0
- package/dist/core/symbols/index.d.ts +70 -0
- package/dist/core/symbols/index.d.ts.map +1 -0
- package/dist/core/symbols/index.js +359 -0
- package/dist/core/symbols/index.js.map +1 -0
- package/dist/core/unified/index.d.ts +118 -0
- package/dist/core/unified/index.d.ts.map +1 -0
- package/dist/core/unified/index.js +428 -0
- package/dist/core/unified/index.js.map +1 -0
- package/dist/core/utils/assets.d.ts +34 -0
- package/dist/core/utils/assets.d.ts.map +1 -0
- package/dist/core/utils/assets.js +85 -0
- package/dist/core/utils/assets.js.map +1 -0
- package/dist/core/utils/cache.d.ts +43 -0
- package/dist/core/utils/cache.d.ts.map +1 -0
- package/dist/core/utils/cache.js +60 -0
- package/dist/core/utils/cache.js.map +1 -0
- package/dist/core/utils/index.d.ts +7 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +10 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/tsconfig.d.ts +34 -0
- package/dist/core/utils/tsconfig.d.ts.map +1 -0
- package/dist/core/utils/tsconfig.js +173 -0
- package/dist/core/utils/tsconfig.js.map +1 -0
- package/dist/features/analyze-file/index.d.ts +15 -0
- package/dist/features/analyze-file/index.d.ts.map +1 -0
- package/dist/features/analyze-file/index.js +164 -0
- package/dist/features/analyze-file/index.js.map +1 -0
- package/dist/features/get-call-graph/index.d.ts +24 -0
- package/dist/features/get-call-graph/index.d.ts.map +1 -0
- package/dist/features/get-call-graph/index.js +246 -0
- package/dist/features/get-call-graph/index.js.map +1 -0
- package/dist/features/get-index-status/index.d.ts +20 -0
- package/dist/features/get-index-status/index.d.ts.map +1 -0
- package/dist/features/get-index-status/index.js +90 -0
- package/dist/features/get-index-status/index.js.map +1 -0
- package/dist/features/index-codebase/index.d.ts +24 -0
- package/dist/features/index-codebase/index.d.ts.map +1 -0
- package/dist/features/index-codebase/index.js +283 -0
- package/dist/features/index-codebase/index.js.map +1 -0
- package/dist/features/index.d.ts +15 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +28 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/info/index.d.ts +19 -0
- package/dist/features/info/index.d.ts.map +1 -0
- package/dist/features/info/index.js +41 -0
- package/dist/features/info/index.js.map +1 -0
- package/dist/features/list-symbols/index.d.ts +22 -0
- package/dist/features/list-symbols/index.d.ts.map +1 -0
- package/dist/features/list-symbols/index.js +74 -0
- package/dist/features/list-symbols/index.js.map +1 -0
- package/dist/features/parse-ast/index.d.ts +12 -0
- package/dist/features/parse-ast/index.d.ts.map +1 -0
- package/dist/features/parse-ast/index.js +71 -0
- package/dist/features/parse-ast/index.js.map +1 -0
- package/dist/features/query-code/index.d.ts +23 -0
- package/dist/features/query-code/index.d.ts.map +1 -0
- package/dist/features/query-code/index.js +96 -0
- package/dist/features/query-code/index.js.map +1 -0
- package/dist/features/search-code/index.d.ts +39 -0
- package/dist/features/search-code/index.d.ts.map +1 -0
- package/dist/features/search-code/index.js +258 -0
- package/dist/features/search-code/index.js.map +1 -0
- package/dist/features/types.d.ts +14 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/types.js +2 -0
- package/dist/features/types.js.map +1 -0
- package/dist/features/update-index/index.d.ts +24 -0
- package/dist/features/update-index/index.d.ts.map +1 -0
- package/dist/features/update-index/index.js +358 -0
- package/dist/features/update-index/index.js.map +1 -0
- package/dist/features/utils/content.d.ts +30 -0
- package/dist/features/utils/content.d.ts.map +1 -0
- package/dist/features/utils/content.js +49 -0
- package/dist/features/utils/content.js.map +1 -0
- package/dist/features/utils/index.d.ts +6 -0
- package/dist/features/utils/index.d.ts.map +1 -0
- package/dist/features/utils/index.js +8 -0
- package/dist/features/utils/index.js.map +1 -0
- package/dist/features/utils/result.d.ts +37 -0
- package/dist/features/utils/result.d.ts.map +1 -0
- package/dist/features/utils/result.js +53 -0
- package/dist/features/utils/result.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +9 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +188 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +3 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +17 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +24 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/adapter.d.ts +4 -0
- package/dist/tools/adapter.d.ts.map +1 -0
- package/dist/tools/adapter.js +28 -0
- package/dist/tools/adapter.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/colors.d.ts +24 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +30 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +57 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/spinner.d.ts +11 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +36 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update Index Feature
|
|
3
|
+
*
|
|
4
|
+
* Incrementally updates the codebase index by:
|
|
5
|
+
* 1. Detecting files that have changed since last indexing
|
|
6
|
+
* 2. Re-indexing only the changed files
|
|
7
|
+
* 3. Removing deleted files from the index
|
|
8
|
+
*
|
|
9
|
+
* Uses SHA-256 hash comparison to detect real content changes.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import * as fs from "node:fs";
|
|
13
|
+
import * as path from "node:path";
|
|
14
|
+
import * as crypto from "node:crypto";
|
|
15
|
+
import ignore from "ignore";
|
|
16
|
+
import { EMBEDDING_CONFIG } from "@config";
|
|
17
|
+
import { chunkFile, createOllamaClient, createVectorStore, enrichChunksFromFile, shouldIndexFile, } from "@core/embeddings";
|
|
18
|
+
import { readPathAliasesCached } from "@core/utils";
|
|
19
|
+
/** Cache file name for storing hashes */
|
|
20
|
+
const HASH_CACHE_FILE = ".src-index-hashes.json";
|
|
21
|
+
export const updateIndexSchema = z.object({
|
|
22
|
+
directory: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.default(".")
|
|
26
|
+
.describe("Path to the indexed directory"),
|
|
27
|
+
dryRun: z
|
|
28
|
+
.boolean()
|
|
29
|
+
.optional()
|
|
30
|
+
.default(false)
|
|
31
|
+
.describe("Only report changes without updating the index"),
|
|
32
|
+
force: z
|
|
33
|
+
.boolean()
|
|
34
|
+
.optional()
|
|
35
|
+
.default(false)
|
|
36
|
+
.describe("Force re-index of all files (ignore hash cache)"),
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Compute SHA-256 hash of content
|
|
40
|
+
*/
|
|
41
|
+
function computeHash(content) {
|
|
42
|
+
return crypto.createHash("sha256").update(content, "utf8").digest("hex");
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get hash cache file path
|
|
46
|
+
*/
|
|
47
|
+
function getHashCachePath(directory) {
|
|
48
|
+
return path.join(directory, ".src-index", HASH_CACHE_FILE);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Load hash cache from disk
|
|
52
|
+
*/
|
|
53
|
+
function loadHashCache(directory) {
|
|
54
|
+
const cachePath = getHashCachePath(directory);
|
|
55
|
+
if (fs.existsSync(cachePath)) {
|
|
56
|
+
try {
|
|
57
|
+
const content = fs.readFileSync(cachePath, "utf-8");
|
|
58
|
+
return JSON.parse(content);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Save hash cache to disk
|
|
68
|
+
*/
|
|
69
|
+
function saveHashCache(directory, cache) {
|
|
70
|
+
const cachePath = getHashCachePath(directory);
|
|
71
|
+
const cacheDir = path.dirname(cachePath);
|
|
72
|
+
if (!fs.existsSync(cacheDir)) {
|
|
73
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
74
|
+
}
|
|
75
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create gitignore filter
|
|
79
|
+
*/
|
|
80
|
+
function createIgnoreFilter(directory) {
|
|
81
|
+
const ig = ignore();
|
|
82
|
+
ig.add(["node_modules", ".git", "dist", "build", ".src-index"]);
|
|
83
|
+
const gitignorePath = path.join(directory, ".gitignore");
|
|
84
|
+
if (fs.existsSync(gitignorePath)) {
|
|
85
|
+
const content = fs.readFileSync(gitignorePath, "utf-8");
|
|
86
|
+
ig.add(content);
|
|
87
|
+
}
|
|
88
|
+
return ig;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a name starts with a dot (hidden)
|
|
92
|
+
*/
|
|
93
|
+
function isHidden(name) {
|
|
94
|
+
return name.startsWith(".");
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Recursively collect files
|
|
98
|
+
*/
|
|
99
|
+
function collectFiles(dir, ig, baseDir) {
|
|
100
|
+
const files = [];
|
|
101
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
if (isHidden(entry.name)) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const fullPath = path.join(dir, entry.name);
|
|
107
|
+
const relativePath = path.relative(baseDir, fullPath).replace(/\\/g, "/");
|
|
108
|
+
if (ig.ignores(relativePath)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (entry.isDirectory()) {
|
|
112
|
+
files.push(...collectFiles(fullPath, ig, baseDir));
|
|
113
|
+
}
|
|
114
|
+
else if (entry.isFile() && shouldIndexFile(entry.name)) {
|
|
115
|
+
files.push(fullPath);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return files;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Execute the update_index feature
|
|
122
|
+
*/
|
|
123
|
+
export async function execute(input) {
|
|
124
|
+
const { directory, dryRun, force } = input;
|
|
125
|
+
// Validate directory
|
|
126
|
+
if (!fs.existsSync(directory)) {
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
error: `Directory not found: ${directory}`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const absoluteDir = path.resolve(directory);
|
|
133
|
+
// Initialize components
|
|
134
|
+
const ollamaClient = createOllamaClient(EMBEDDING_CONFIG);
|
|
135
|
+
const vectorStore = createVectorStore(absoluteDir, EMBEDDING_CONFIG);
|
|
136
|
+
// Check if index exists
|
|
137
|
+
if (!vectorStore.exists()) {
|
|
138
|
+
return {
|
|
139
|
+
success: false,
|
|
140
|
+
error: `No index found for directory. Run index_codebase first: ${absoluteDir}`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const result = {
|
|
144
|
+
directory: absoluteDir,
|
|
145
|
+
dryRun,
|
|
146
|
+
added: [],
|
|
147
|
+
modified: [],
|
|
148
|
+
removed: [],
|
|
149
|
+
unchanged: 0,
|
|
150
|
+
errors: [],
|
|
151
|
+
};
|
|
152
|
+
try {
|
|
153
|
+
// Check Ollama health (only if not dry run)
|
|
154
|
+
if (!dryRun) {
|
|
155
|
+
const health = await ollamaClient.healthCheck();
|
|
156
|
+
if (!health.ok) {
|
|
157
|
+
return {
|
|
158
|
+
success: false,
|
|
159
|
+
error: health.error ?? "Ollama is not available",
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Connect to vector store
|
|
164
|
+
await vectorStore.connect();
|
|
165
|
+
// Load hash cache
|
|
166
|
+
const hashCache = force ? {} : loadHashCache(absoluteDir);
|
|
167
|
+
const newHashCache = {};
|
|
168
|
+
// Collect current files
|
|
169
|
+
const ig = createIgnoreFilter(absoluteDir);
|
|
170
|
+
const currentFiles = new Set(collectFiles(absoluteDir, ig, absoluteDir));
|
|
171
|
+
// Get indexed files from vector store
|
|
172
|
+
const indexedFiles = new Set(await vectorStore.getIndexedFiles());
|
|
173
|
+
// Find files to add/modify/remove
|
|
174
|
+
const filesToProcess = [];
|
|
175
|
+
for (const filePath of currentFiles) {
|
|
176
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
177
|
+
const hash = computeHash(content);
|
|
178
|
+
newHashCache[filePath] = hash;
|
|
179
|
+
if (!indexedFiles.has(filePath)) {
|
|
180
|
+
// New file
|
|
181
|
+
result.added.push(path.relative(absoluteDir, filePath));
|
|
182
|
+
filesToProcess.push({ path: filePath, type: "add" });
|
|
183
|
+
}
|
|
184
|
+
else if (hashCache[filePath] !== hash) {
|
|
185
|
+
// Modified file
|
|
186
|
+
result.modified.push(path.relative(absoluteDir, filePath));
|
|
187
|
+
filesToProcess.push({ path: filePath, type: "modify" });
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
result.unchanged++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Find removed files
|
|
194
|
+
for (const filePath of indexedFiles) {
|
|
195
|
+
if (!currentFiles.has(filePath)) {
|
|
196
|
+
result.removed.push(path.relative(absoluteDir, filePath));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// If dry run, just report what would be done
|
|
200
|
+
if (dryRun) {
|
|
201
|
+
vectorStore.close();
|
|
202
|
+
const message = buildDryRunMessage(result);
|
|
203
|
+
return {
|
|
204
|
+
success: true,
|
|
205
|
+
message,
|
|
206
|
+
data: result,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// Read path aliases from tsconfig.json if present
|
|
210
|
+
const pathAliases = readPathAliasesCached(absoluteDir);
|
|
211
|
+
// Enrichment options
|
|
212
|
+
const enrichmentOptions = {
|
|
213
|
+
projectRoot: absoluteDir,
|
|
214
|
+
pathAliases,
|
|
215
|
+
includeCrossFileContext: true,
|
|
216
|
+
};
|
|
217
|
+
// Process files
|
|
218
|
+
const embeddedChunks = [];
|
|
219
|
+
for (const { path: filePath, type } of filesToProcess) {
|
|
220
|
+
try {
|
|
221
|
+
// Delete existing chunks if modifying
|
|
222
|
+
if (type === "modify") {
|
|
223
|
+
await vectorStore.deleteByFilePath(filePath);
|
|
224
|
+
}
|
|
225
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
226
|
+
const chunks = await chunkFile(filePath, content, EMBEDDING_CONFIG);
|
|
227
|
+
if (chunks.length === 0) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
const enrichedChunks = await enrichChunksFromFile(chunks, content, enrichmentOptions);
|
|
231
|
+
const texts = enrichedChunks.map((c) => c.enrichedContent);
|
|
232
|
+
const embeddings = await ollamaClient.embedBatch(texts);
|
|
233
|
+
for (let i = 0; i < enrichedChunks.length; i++) {
|
|
234
|
+
const chunk = enrichedChunks[i];
|
|
235
|
+
const vector = embeddings[i];
|
|
236
|
+
if (chunk && vector) {
|
|
237
|
+
embeddedChunks.push({
|
|
238
|
+
id: chunk.id,
|
|
239
|
+
content: chunk.content,
|
|
240
|
+
filePath: chunk.filePath,
|
|
241
|
+
language: chunk.language,
|
|
242
|
+
startLine: chunk.startLine,
|
|
243
|
+
endLine: chunk.endLine,
|
|
244
|
+
symbolName: chunk.symbolName,
|
|
245
|
+
symbolType: chunk.symbolType,
|
|
246
|
+
vector,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
253
|
+
result.errors.push(`Error processing ${filePath}: ${errorMsg}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Add new chunks
|
|
257
|
+
if (embeddedChunks.length > 0) {
|
|
258
|
+
await vectorStore.addChunks(embeddedChunks);
|
|
259
|
+
}
|
|
260
|
+
// Remove deleted files
|
|
261
|
+
for (const relativePath of result.removed) {
|
|
262
|
+
const filePath = path.join(absoluteDir, relativePath);
|
|
263
|
+
await vectorStore.deleteByFilePath(filePath);
|
|
264
|
+
}
|
|
265
|
+
// Save new hash cache
|
|
266
|
+
saveHashCache(absoluteDir, newHashCache);
|
|
267
|
+
vectorStore.close();
|
|
268
|
+
const message = buildResultMessage(result);
|
|
269
|
+
return {
|
|
270
|
+
success: true,
|
|
271
|
+
message,
|
|
272
|
+
data: result,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
vectorStore.close();
|
|
277
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
278
|
+
return {
|
|
279
|
+
success: false,
|
|
280
|
+
error: `Update failed: ${errorMsg}`,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Build message for dry run
|
|
286
|
+
*/
|
|
287
|
+
function buildDryRunMessage(result) {
|
|
288
|
+
const lines = ["Dry run - changes detected:"];
|
|
289
|
+
if (result.added.length > 0) {
|
|
290
|
+
lines.push(`\nFiles to add (${String(result.added.length)}):`);
|
|
291
|
+
for (const f of result.added.slice(0, 10)) {
|
|
292
|
+
lines.push(` + ${f}`);
|
|
293
|
+
}
|
|
294
|
+
if (result.added.length > 10) {
|
|
295
|
+
lines.push(` ... and ${String(result.added.length - 10)} more`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (result.modified.length > 0) {
|
|
299
|
+
lines.push(`\nFiles to update (${String(result.modified.length)}):`);
|
|
300
|
+
for (const f of result.modified.slice(0, 10)) {
|
|
301
|
+
lines.push(` ~ ${f}`);
|
|
302
|
+
}
|
|
303
|
+
if (result.modified.length > 10) {
|
|
304
|
+
lines.push(` ... and ${String(result.modified.length - 10)} more`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
if (result.removed.length > 0) {
|
|
308
|
+
lines.push(`\nFiles to remove (${String(result.removed.length)}):`);
|
|
309
|
+
for (const f of result.removed.slice(0, 10)) {
|
|
310
|
+
lines.push(` - ${f}`);
|
|
311
|
+
}
|
|
312
|
+
if (result.removed.length > 10) {
|
|
313
|
+
lines.push(` ... and ${String(result.removed.length - 10)} more`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
lines.push(`\nUnchanged: ${String(result.unchanged)} files`);
|
|
317
|
+
if (result.added.length === 0 &&
|
|
318
|
+
result.modified.length === 0 &&
|
|
319
|
+
result.removed.length === 0) {
|
|
320
|
+
return "Index is up to date - no changes detected.";
|
|
321
|
+
}
|
|
322
|
+
lines.push("\nRun without --dryRun to apply changes.");
|
|
323
|
+
return lines.join("\n");
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Build message for actual update
|
|
327
|
+
*/
|
|
328
|
+
function buildResultMessage(result) {
|
|
329
|
+
const changes = result.added.length + result.modified.length + result.removed.length;
|
|
330
|
+
if (changes === 0) {
|
|
331
|
+
return "Index is up to date - no changes needed.";
|
|
332
|
+
}
|
|
333
|
+
const lines = ["Index updated successfully:"];
|
|
334
|
+
if (result.added.length > 0) {
|
|
335
|
+
lines.push(` Added: ${String(result.added.length)} files`);
|
|
336
|
+
}
|
|
337
|
+
if (result.modified.length > 0) {
|
|
338
|
+
lines.push(` Modified: ${String(result.modified.length)} files`);
|
|
339
|
+
}
|
|
340
|
+
if (result.removed.length > 0) {
|
|
341
|
+
lines.push(` Removed: ${String(result.removed.length)} files`);
|
|
342
|
+
}
|
|
343
|
+
lines.push(` Unchanged: ${String(result.unchanged)} files`);
|
|
344
|
+
if (result.errors.length > 0) {
|
|
345
|
+
lines.push(`\nErrors (${String(result.errors.length)}):`);
|
|
346
|
+
for (const err of result.errors.slice(0, 5)) {
|
|
347
|
+
lines.push(` - ${err}`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return lines.join("\n");
|
|
351
|
+
}
|
|
352
|
+
export const updateIndexFeature = {
|
|
353
|
+
name: "update_index",
|
|
354
|
+
description: "Refresh the search index after code changes. USE THIS instead of re-indexing - it's fast because it only processes changed files (SHA-256 hash detection). Use dryRun=true to preview changes first.",
|
|
355
|
+
schema: updateIndexSchema,
|
|
356
|
+
execute,
|
|
357
|
+
};
|
|
358
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/update-index/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of reading content
|
|
3
|
+
*/
|
|
4
|
+
export type ContentResult = {
|
|
5
|
+
success: true;
|
|
6
|
+
content: string;
|
|
7
|
+
} | {
|
|
8
|
+
success: false;
|
|
9
|
+
error: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Read content from either a file path or direct content string
|
|
13
|
+
*
|
|
14
|
+
* This is a common pattern used by multiple features that accept
|
|
15
|
+
* either a file_path or content parameter.
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Optional path to file to read
|
|
18
|
+
* @param content - Optional content string
|
|
19
|
+
* @returns ContentResult with either the content or an error message
|
|
20
|
+
*/
|
|
21
|
+
export declare function readContent(filePath?: string, content?: string): ContentResult;
|
|
22
|
+
/**
|
|
23
|
+
* Require that either filePath or content is provided
|
|
24
|
+
*
|
|
25
|
+
* @param filePath - Optional path to file
|
|
26
|
+
* @param content - Optional content string
|
|
27
|
+
* @returns True if at least one is provided
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasContentSource(filePath?: string, content?: string): boolean;
|
|
30
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/features/utils/content.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,CAsBf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content reading utilities for features
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent file/content handling across features
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from "fs";
|
|
7
|
+
/**
|
|
8
|
+
* Read content from either a file path or direct content string
|
|
9
|
+
*
|
|
10
|
+
* This is a common pattern used by multiple features that accept
|
|
11
|
+
* either a file_path or content parameter.
|
|
12
|
+
*
|
|
13
|
+
* @param filePath - Optional path to file to read
|
|
14
|
+
* @param content - Optional content string
|
|
15
|
+
* @returns ContentResult with either the content or an error message
|
|
16
|
+
*/
|
|
17
|
+
export function readContent(filePath, content) {
|
|
18
|
+
// If content is provided directly, use it
|
|
19
|
+
if (content !== undefined) {
|
|
20
|
+
return { success: true, content };
|
|
21
|
+
}
|
|
22
|
+
// If file path is provided, read it
|
|
23
|
+
if (filePath !== undefined) {
|
|
24
|
+
try {
|
|
25
|
+
const fileContent = readFileSync(filePath, "utf-8");
|
|
26
|
+
return { success: true, content: fileContent };
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
30
|
+
return { success: false, error: `Failed to read file: ${message}` };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Neither provided
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
error: "Either file_path or content must be provided",
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Require that either filePath or content is provided
|
|
41
|
+
*
|
|
42
|
+
* @param filePath - Optional path to file
|
|
43
|
+
* @param content - Optional content string
|
|
44
|
+
* @returns True if at least one is provided
|
|
45
|
+
*/
|
|
46
|
+
export function hasContentSource(filePath, content) {
|
|
47
|
+
return filePath !== undefined || content !== undefined;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/features/utils/content.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AASlC;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,QAAiB,EACjB,OAAgB;IAEhB,0CAA0C;IAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,oCAAoC;IACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,OAAO,EAAE,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,8CAA8C;KACtD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAiB,EAAE,OAAgB;IAClE,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAG9E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Features utilities barrel export
|
|
3
|
+
*/
|
|
4
|
+
// Content reading utilities
|
|
5
|
+
export { hasContentSource, readContent } from "./content";
|
|
6
|
+
// Result building utilities
|
|
7
|
+
export { errorMessage, errorResult, successMessage, successResult, } from "./result";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAsB,MAAM,WAAW,CAAC;AAE9E,4BAA4B;AAC5B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result building utilities for features
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent result construction patterns
|
|
5
|
+
*/
|
|
6
|
+
import type { FeatureResult } from "@features/types";
|
|
7
|
+
/**
|
|
8
|
+
* Create an error result with consistent formatting
|
|
9
|
+
*
|
|
10
|
+
* @param action - Description of what failed (e.g., "parse file", "execute query")
|
|
11
|
+
* @param error - The error that occurred
|
|
12
|
+
* @returns FeatureResult with success: false
|
|
13
|
+
*/
|
|
14
|
+
export declare function errorResult(action: string, error: unknown): FeatureResult;
|
|
15
|
+
/**
|
|
16
|
+
* Create a simple error result with a custom message
|
|
17
|
+
*
|
|
18
|
+
* @param error - The error message
|
|
19
|
+
* @returns FeatureResult with success: false
|
|
20
|
+
*/
|
|
21
|
+
export declare function errorMessage(error: string): FeatureResult;
|
|
22
|
+
/**
|
|
23
|
+
* Create a success result with data and optional message
|
|
24
|
+
*
|
|
25
|
+
* @param data - The data to return
|
|
26
|
+
* @param message - Optional success message
|
|
27
|
+
* @returns FeatureResult with success: true
|
|
28
|
+
*/
|
|
29
|
+
export declare function successResult(data: unknown, message?: string): FeatureResult;
|
|
30
|
+
/**
|
|
31
|
+
* Create a success result with just a message (no data)
|
|
32
|
+
*
|
|
33
|
+
* @param message - The success message
|
|
34
|
+
* @returns FeatureResult with success: true
|
|
35
|
+
*/
|
|
36
|
+
export declare function successMessage(message: string): FeatureResult;
|
|
37
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/features/utils/result.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAMzE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAKzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAM5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAK7D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an error result with consistent formatting
|
|
3
|
+
*
|
|
4
|
+
* @param action - Description of what failed (e.g., "parse file", "execute query")
|
|
5
|
+
* @param error - The error that occurred
|
|
6
|
+
* @returns FeatureResult with success: false
|
|
7
|
+
*/
|
|
8
|
+
export function errorResult(action, error) {
|
|
9
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
10
|
+
return {
|
|
11
|
+
success: false,
|
|
12
|
+
error: `Failed to ${action}: ${message}`,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a simple error result with a custom message
|
|
17
|
+
*
|
|
18
|
+
* @param error - The error message
|
|
19
|
+
* @returns FeatureResult with success: false
|
|
20
|
+
*/
|
|
21
|
+
export function errorMessage(error) {
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
error,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a success result with data and optional message
|
|
29
|
+
*
|
|
30
|
+
* @param data - The data to return
|
|
31
|
+
* @param message - Optional success message
|
|
32
|
+
* @returns FeatureResult with success: true
|
|
33
|
+
*/
|
|
34
|
+
export function successResult(data, message) {
|
|
35
|
+
return {
|
|
36
|
+
success: true,
|
|
37
|
+
data,
|
|
38
|
+
message,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a success result with just a message (no data)
|
|
43
|
+
*
|
|
44
|
+
* @param message - The success message
|
|
45
|
+
* @returns FeatureResult with success: true
|
|
46
|
+
*/
|
|
47
|
+
export function successMessage(message) {
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
message,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/features/utils/result.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAc;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,aAAa,MAAM,KAAK,OAAO,EAAE;KACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,OAAgB;IAC3D,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Register MCP prompts
|
|
4
|
+
*
|
|
5
|
+
* Prompts are reusable templates that help AI assistants understand
|
|
6
|
+
* how to use SRC effectively for code search and analysis.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerPrompts(server: McpServer): void;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmMvD"}
|