@vpxa/kb 0.1.13 → 0.1.16
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 +65 -12
- package/package.json +14 -7
- package/packages/analyzers/dist/blast-radius-analyzer.d.ts +17 -21
- package/packages/analyzers/dist/blast-radius-analyzer.js +5 -12
- package/packages/analyzers/dist/dependency-analyzer.d.ts +31 -28
- package/packages/analyzers/dist/dependency-analyzer.js +6 -9
- package/packages/analyzers/dist/diagram-generator.d.ts +12 -9
- package/packages/analyzers/dist/diagram-generator.js +2 -4
- package/packages/analyzers/dist/entry-point-analyzer.d.ts +39 -36
- package/packages/analyzers/dist/entry-point-analyzer.js +4 -6
- package/packages/analyzers/dist/index.d.ts +12 -14
- package/packages/analyzers/dist/index.js +1 -1
- package/packages/analyzers/dist/knowledge-producer.d.ts +34 -26
- package/packages/analyzers/dist/knowledge-producer.js +17 -15
- package/packages/analyzers/dist/pattern-analyzer.d.ts +14 -11
- package/packages/analyzers/dist/pattern-analyzer.js +2 -5
- package/packages/analyzers/dist/regex-call-graph.d.ts +6 -13
- package/packages/analyzers/dist/regex-call-graph.js +1 -1
- package/packages/analyzers/dist/structure-analyzer.d.ts +13 -10
- package/packages/analyzers/dist/structure-analyzer.js +2 -4
- package/packages/analyzers/dist/symbol-analyzer.d.ts +13 -9
- package/packages/analyzers/dist/symbol-analyzer.js +9 -13
- package/packages/analyzers/dist/ts-call-graph.d.ts +16 -14
- package/packages/analyzers/dist/ts-call-graph.js +1 -1
- package/packages/analyzers/dist/types.d.ts +82 -80
- package/packages/analyzers/dist/types.js +1 -0
- package/packages/chunker/dist/call-graph-extractor.d.ts +15 -12
- package/packages/chunker/dist/call-graph-extractor.js +1 -1
- package/packages/chunker/dist/chunker-factory.d.ts +16 -4
- package/packages/chunker/dist/chunker-factory.js +1 -1
- package/packages/chunker/dist/chunker.interface.d.ts +8 -5
- package/packages/chunker/dist/chunker.interface.js +1 -0
- package/packages/chunker/dist/code-chunker.d.ts +16 -13
- package/packages/chunker/dist/code-chunker.js +11 -14
- package/packages/chunker/dist/extractors/call-extractor.d.ts +24 -0
- package/packages/chunker/dist/extractors/call-extractor.js +1 -0
- package/packages/chunker/dist/extractors/entry-point-detector.d.ts +14 -0
- package/packages/chunker/dist/extractors/entry-point-detector.js +1 -0
- package/packages/chunker/dist/extractors/import-extractor.d.ts +14 -0
- package/packages/chunker/dist/extractors/import-extractor.js +1 -0
- package/packages/chunker/dist/extractors/pattern-detector.d.ts +14 -0
- package/packages/chunker/dist/extractors/pattern-detector.js +1 -0
- package/packages/chunker/dist/extractors/scope-resolver.d.ts +26 -0
- package/packages/chunker/dist/extractors/scope-resolver.js +1 -0
- package/packages/chunker/dist/extractors/symbol-extractor.d.ts +14 -0
- package/packages/chunker/dist/extractors/symbol-extractor.js +1 -0
- package/packages/chunker/dist/extractors/types.d.ts +36 -0
- package/packages/chunker/dist/extractors/types.js +1 -0
- package/packages/chunker/dist/generic-chunker.d.ts +14 -11
- package/packages/chunker/dist/generic-chunker.js +5 -5
- package/packages/chunker/dist/index.d.ts +19 -8
- package/packages/chunker/dist/index.js +1 -1
- package/packages/chunker/dist/markdown-chunker.d.ts +16 -13
- package/packages/chunker/dist/markdown-chunker.js +3 -10
- package/packages/chunker/dist/wasm/languages.d.ts +18 -0
- package/packages/chunker/dist/wasm/languages.js +1 -0
- package/packages/chunker/dist/wasm/query-executor.d.ts +70 -0
- package/packages/chunker/dist/wasm/query-executor.js +1 -0
- package/packages/chunker/dist/wasm/runtime.d.ts +44 -0
- package/packages/chunker/dist/wasm/runtime.js +1 -0
- package/packages/chunker/dist/wasm/types.d.ts +84 -0
- package/packages/chunker/dist/wasm/types.js +1 -0
- package/packages/chunker/dist/wasm-chunker.d.ts +23 -0
- package/packages/chunker/dist/wasm-chunker.js +6 -0
- package/packages/chunker/src/queries/go/calls.scm +11 -0
- package/packages/chunker/src/queries/go/entry-points.scm +20 -0
- package/packages/chunker/src/queries/go/imports.scm +6 -0
- package/packages/chunker/src/queries/go/patterns.scm +25 -0
- package/packages/chunker/src/queries/go/symbols.scm +26 -0
- package/packages/chunker/src/queries/java/calls.scm +10 -0
- package/packages/chunker/src/queries/java/entry-points.scm +27 -0
- package/packages/chunker/src/queries/java/imports.scm +11 -0
- package/packages/chunker/src/queries/java/patterns.scm +27 -0
- package/packages/chunker/src/queries/java/symbols.scm +28 -0
- package/packages/chunker/src/queries/javascript/calls.scm +21 -0
- package/packages/chunker/src/queries/javascript/entry-points.scm +31 -0
- package/packages/chunker/src/queries/javascript/imports.scm +32 -0
- package/packages/chunker/src/queries/javascript/patterns.scm +28 -0
- package/packages/chunker/src/queries/javascript/symbols.scm +52 -0
- package/packages/chunker/src/queries/python/calls.scm +11 -0
- package/packages/chunker/src/queries/python/entry-points.scm +21 -0
- package/packages/chunker/src/queries/python/imports.scm +14 -0
- package/packages/chunker/src/queries/python/patterns.scm +25 -0
- package/packages/chunker/src/queries/python/symbols.scm +17 -0
- package/packages/chunker/src/queries/rust/calls.scm +20 -0
- package/packages/chunker/src/queries/rust/entry-points.scm +7 -0
- package/packages/chunker/src/queries/rust/imports.scm +26 -0
- package/packages/chunker/src/queries/rust/patterns.scm +18 -0
- package/packages/chunker/src/queries/rust/symbols.scm +73 -0
- package/packages/chunker/src/queries/typescript/calls.scm +21 -0
- package/packages/chunker/src/queries/typescript/entry-points.scm +48 -0
- package/packages/chunker/src/queries/typescript/imports.scm +35 -0
- package/packages/chunker/src/queries/typescript/patterns.scm +47 -0
- package/packages/chunker/src/queries/typescript/symbols.scm +79 -0
- package/packages/chunker/wasm/tree-sitter-go.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter-java.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter-javascript.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter-python.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter-rust.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter-typescript.wasm +0 -0
- package/packages/chunker/wasm/tree-sitter.wasm +0 -0
- package/packages/cli/dist/commands/analyze.d.ts +6 -3
- package/packages/cli/dist/commands/analyze.js +2 -3
- package/packages/cli/dist/commands/context-cmds.d.ts +6 -3
- package/packages/cli/dist/commands/context-cmds.js +1 -1
- package/packages/cli/dist/commands/environment.d.ts +6 -3
- package/packages/cli/dist/commands/environment.js +1 -2
- package/packages/cli/dist/commands/execution.d.ts +6 -3
- package/packages/cli/dist/commands/execution.js +1 -1
- package/packages/cli/dist/commands/graph.d.ts +6 -3
- package/packages/cli/dist/commands/graph.js +5 -6
- package/packages/cli/dist/commands/init/adapters.d.ts +28 -0
- package/packages/cli/dist/commands/init/adapters.js +1 -0
- package/packages/cli/dist/commands/init/config.d.ts +10 -0
- package/packages/cli/dist/commands/init/config.js +3 -0
- package/packages/cli/dist/commands/init/constants.d.ts +18 -0
- package/packages/cli/dist/commands/init/constants.js +1 -0
- package/packages/cli/dist/commands/init/curated.d.ts +7 -0
- package/packages/cli/dist/commands/init/curated.js +1 -0
- package/packages/cli/dist/commands/init/global.d.ts +34 -0
- package/packages/cli/dist/commands/init/global.js +5 -0
- package/packages/cli/dist/commands/init/index.d.ts +28 -0
- package/packages/cli/dist/commands/init/index.js +5 -0
- package/packages/cli/dist/commands/init/scaffold.d.ts +23 -0
- package/packages/cli/dist/commands/init/scaffold.js +1 -0
- package/packages/cli/dist/commands/init/templates.d.ts +9 -0
- package/packages/cli/dist/commands/init/templates.js +165 -0
- package/packages/cli/dist/commands/knowledge.d.ts +6 -3
- package/packages/cli/dist/commands/knowledge.js +1 -1
- package/packages/cli/dist/commands/search.d.ts +6 -3
- package/packages/cli/dist/commands/search.js +1 -8
- package/packages/cli/dist/commands/system.d.ts +6 -3
- package/packages/cli/dist/commands/system.js +4 -7
- package/packages/cli/dist/commands/workspace.d.ts +6 -3
- package/packages/cli/dist/commands/workspace.js +1 -2
- package/packages/cli/dist/context.d.ts +7 -5
- package/packages/cli/dist/context.js +1 -1
- package/packages/cli/dist/helpers.d.ts +51 -48
- package/packages/cli/dist/helpers.js +5 -5
- package/packages/cli/dist/index.d.ts +4 -2
- package/packages/cli/dist/index.js +2 -2
- package/packages/cli/dist/kb-init.d.ts +48 -51
- package/packages/cli/dist/kb-init.js +1 -1
- package/packages/cli/dist/types.d.ts +8 -6
- package/packages/cli/dist/types.js +1 -0
- package/packages/core/dist/constants.d.ts +58 -34
- package/packages/core/dist/constants.js +1 -1
- package/packages/core/dist/content-detector.d.ts +8 -8
- package/packages/core/dist/content-detector.js +1 -1
- package/packages/core/dist/errors.d.ts +15 -13
- package/packages/core/dist/errors.js +1 -1
- package/packages/core/dist/global-registry.d.ts +62 -0
- package/packages/core/dist/global-registry.js +1 -0
- package/packages/core/dist/index.d.ts +7 -6
- package/packages/core/dist/index.js +1 -1
- package/packages/core/dist/logger.d.ts +19 -8
- package/packages/core/dist/logger.js +1 -1
- package/packages/core/dist/types.d.ts +107 -92
- package/packages/core/dist/types.js +1 -0
- package/packages/embeddings/dist/embedder.interface.d.ts +22 -20
- package/packages/embeddings/dist/embedder.interface.js +1 -0
- package/packages/embeddings/dist/index.d.ts +3 -3
- package/packages/embeddings/dist/index.js +1 -1
- package/packages/embeddings/dist/onnx-embedder.d.ts +21 -23
- package/packages/embeddings/dist/onnx-embedder.js +1 -1
- package/packages/enterprise-bridge/dist/cache.d.ts +28 -0
- package/packages/enterprise-bridge/dist/cache.js +1 -0
- package/packages/enterprise-bridge/dist/er-client.d.ts +37 -0
- package/packages/enterprise-bridge/dist/er-client.js +1 -0
- package/packages/enterprise-bridge/dist/evolution-collector.d.ts +62 -0
- package/packages/enterprise-bridge/dist/evolution-collector.js +1 -0
- package/packages/enterprise-bridge/dist/index.d.ts +8 -0
- package/packages/enterprise-bridge/dist/index.js +1 -0
- package/packages/enterprise-bridge/dist/policy-store.d.ts +45 -0
- package/packages/enterprise-bridge/dist/policy-store.js +1 -0
- package/packages/enterprise-bridge/dist/push-adapter.d.ts +23 -0
- package/packages/enterprise-bridge/dist/push-adapter.js +1 -0
- package/packages/enterprise-bridge/dist/result-merger.d.ts +14 -0
- package/packages/enterprise-bridge/dist/result-merger.js +1 -0
- package/packages/enterprise-bridge/dist/types.d.ts +81 -0
- package/packages/enterprise-bridge/dist/types.js +1 -0
- package/packages/indexer/dist/file-hasher.d.ts +5 -3
- package/packages/indexer/dist/file-hasher.js +1 -1
- package/packages/indexer/dist/filesystem-crawler.d.ts +23 -21
- package/packages/indexer/dist/filesystem-crawler.js +1 -1
- package/packages/indexer/dist/graph-extractor.d.ts +9 -13
- package/packages/indexer/dist/graph-extractor.js +1 -1
- package/packages/indexer/dist/incremental-indexer.d.ts +49 -44
- package/packages/indexer/dist/incremental-indexer.js +1 -1
- package/packages/indexer/dist/index.d.ts +5 -5
- package/packages/indexer/dist/index.js +1 -1
- package/packages/server/dist/api.d.ts +3 -8
- package/packages/server/dist/api.js +1 -1
- package/packages/server/dist/config.d.ts +6 -3
- package/packages/server/dist/config.js +1 -1
- package/packages/server/dist/cross-workspace.d.ts +43 -0
- package/packages/server/dist/cross-workspace.js +1 -0
- package/packages/server/dist/curated-manager.d.ts +80 -78
- package/packages/server/dist/curated-manager.js +5 -10
- package/packages/server/dist/index.d.ts +1 -2
- package/packages/server/dist/index.js +1 -1
- package/packages/server/dist/replay-interceptor.d.ts +6 -7
- package/packages/server/dist/replay-interceptor.js +1 -1
- package/packages/server/dist/resources/resources.d.ts +7 -4
- package/packages/server/dist/resources/resources.js +2 -2
- package/packages/server/dist/server.d.ts +37 -25
- package/packages/server/dist/server.js +1 -1
- package/packages/server/dist/tools/analyze.tools.d.ts +14 -11
- package/packages/server/dist/tools/analyze.tools.js +1 -3
- package/packages/server/dist/tools/audit.tool.d.ts +8 -5
- package/packages/server/dist/tools/audit.tool.js +1 -4
- package/packages/server/dist/tools/bridge.tools.d.ts +34 -0
- package/packages/server/dist/tools/bridge.tools.js +15 -0
- package/packages/server/dist/tools/evolution.tools.d.ts +7 -0
- package/packages/server/dist/tools/evolution.tools.js +5 -0
- package/packages/server/dist/tools/forge.tools.d.ts +13 -12
- package/packages/server/dist/tools/forge.tools.js +10 -13
- package/packages/server/dist/tools/forget.tool.d.ts +7 -4
- package/packages/server/dist/tools/forget.tool.js +1 -7
- package/packages/server/dist/tools/graph.tool.d.ts +7 -4
- package/packages/server/dist/tools/graph.tool.js +4 -5
- package/packages/server/dist/tools/list.tool.d.ts +7 -4
- package/packages/server/dist/tools/list.tool.js +2 -8
- package/packages/server/dist/tools/lookup.tool.d.ts +7 -4
- package/packages/server/dist/tools/lookup.tool.js +2 -9
- package/packages/server/dist/tools/onboard.tool.d.ts +8 -5
- package/packages/server/dist/tools/onboard.tool.js +2 -2
- package/packages/server/dist/tools/policy.tools.d.ts +7 -0
- package/packages/server/dist/tools/policy.tools.js +2 -0
- package/packages/server/dist/tools/produce.tool.d.ts +6 -3
- package/packages/server/dist/tools/produce.tool.js +2 -2
- package/packages/server/dist/tools/read.tool.d.ts +7 -4
- package/packages/server/dist/tools/read.tool.js +2 -6
- package/packages/server/dist/tools/reindex.tool.d.ts +10 -7
- package/packages/server/dist/tools/reindex.tool.js +3 -2
- package/packages/server/dist/tools/remember.tool.d.ts +8 -4
- package/packages/server/dist/tools/remember.tool.js +3 -5
- package/packages/server/dist/tools/replay.tool.d.ts +6 -3
- package/packages/server/dist/tools/replay.tool.js +2 -6
- package/packages/server/dist/tools/search.tool.d.ts +10 -5
- package/packages/server/dist/tools/search.tool.js +6 -22
- package/packages/server/dist/tools/status.tool.d.ts +12 -4
- package/packages/server/dist/tools/status.tool.js +2 -3
- package/packages/server/dist/tools/toolkit.tools.d.ts +36 -35
- package/packages/server/dist/tools/toolkit.tools.js +20 -24
- package/packages/server/dist/tools/update.tool.d.ts +7 -4
- package/packages/server/dist/tools/update.tool.js +1 -6
- package/packages/server/dist/tools/utility.tools.d.ts +15 -15
- package/packages/server/dist/tools/utility.tools.js +10 -23
- package/packages/server/dist/version-check.d.ts +5 -2
- package/packages/server/dist/version-check.js +1 -1
- package/packages/store/dist/graph-store.interface.d.ts +89 -87
- package/packages/store/dist/graph-store.interface.js +1 -0
- package/packages/store/dist/index.d.ts +6 -6
- package/packages/store/dist/index.js +1 -1
- package/packages/store/dist/lance-store.d.ts +37 -31
- package/packages/store/dist/lance-store.js +1 -1
- package/packages/store/dist/sqlite-graph-store.d.ts +43 -47
- package/packages/store/dist/sqlite-graph-store.js +13 -13
- package/packages/store/dist/store-factory.d.ts +11 -8
- package/packages/store/dist/store-factory.js +1 -1
- package/packages/store/dist/store.interface.d.ts +47 -47
- package/packages/store/dist/store.interface.js +1 -0
- package/packages/tools/dist/audit.d.ts +61 -62
- package/packages/tools/dist/audit.js +4 -5
- package/packages/tools/dist/batch.d.ts +20 -18
- package/packages/tools/dist/batch.js +1 -1
- package/packages/tools/dist/changelog.d.ts +29 -27
- package/packages/tools/dist/changelog.js +2 -2
- package/packages/tools/dist/check.d.ts +42 -39
- package/packages/tools/dist/check.js +2 -2
- package/packages/tools/dist/checkpoint.d.ts +17 -15
- package/packages/tools/dist/checkpoint.js +1 -2
- package/packages/tools/dist/codemod.d.ts +35 -33
- package/packages/tools/dist/codemod.js +2 -2
- package/packages/tools/dist/compact.d.ts +34 -38
- package/packages/tools/dist/compact.js +2 -2
- package/packages/tools/dist/data-transform.d.ts +10 -8
- package/packages/tools/dist/data-transform.js +1 -1
- package/packages/tools/dist/dead-symbols.d.ts +29 -26
- package/packages/tools/dist/dead-symbols.js +2 -2
- package/packages/tools/dist/delegate.d.ts +26 -24
- package/packages/tools/dist/delegate.js +1 -5
- package/packages/tools/dist/diff-parse.d.ts +24 -22
- package/packages/tools/dist/diff-parse.js +3 -3
- package/packages/tools/dist/digest.d.ts +43 -46
- package/packages/tools/dist/digest.js +4 -5
- package/packages/tools/dist/dogfood-log.d.ts +49 -0
- package/packages/tools/dist/dogfood-log.js +2 -0
- package/packages/tools/dist/encode.d.ts +11 -9
- package/packages/tools/dist/encode.js +1 -1
- package/packages/tools/dist/env-info.d.ts +25 -23
- package/packages/tools/dist/env-info.js +1 -1
- package/packages/tools/dist/eval.d.ts +13 -11
- package/packages/tools/dist/eval.js +2 -3
- package/packages/tools/dist/evidence-map.d.ts +64 -62
- package/packages/tools/dist/evidence-map.js +2 -3
- package/packages/tools/dist/file-cache.d.ts +41 -0
- package/packages/tools/dist/file-cache.js +3 -0
- package/packages/tools/dist/file-summary.d.ts +50 -30
- package/packages/tools/dist/file-summary.js +2 -2
- package/packages/tools/dist/file-walk.d.ts +6 -4
- package/packages/tools/dist/file-walk.js +1 -1
- package/packages/tools/dist/find-examples.d.ts +26 -22
- package/packages/tools/dist/find-examples.js +3 -3
- package/packages/tools/dist/find.d.ts +39 -41
- package/packages/tools/dist/find.js +1 -1
- package/packages/tools/dist/forge-classify.d.ts +35 -39
- package/packages/tools/dist/forge-classify.js +2 -2
- package/packages/tools/dist/forge-ground.d.ts +58 -61
- package/packages/tools/dist/forge-ground.js +1 -1
- package/packages/tools/dist/git-context.d.ts +22 -20
- package/packages/tools/dist/git-context.js +3 -3
- package/packages/tools/dist/graph-query.d.ts +75 -79
- package/packages/tools/dist/graph-query.js +1 -1
- package/packages/tools/dist/guide.d.ts +14 -12
- package/packages/tools/dist/guide.js +1 -1
- package/packages/tools/dist/health.d.ts +13 -11
- package/packages/tools/dist/health.js +2 -2
- package/packages/tools/dist/http-request.d.ts +20 -18
- package/packages/tools/dist/http-request.js +1 -1
- package/packages/tools/dist/index.d.ts +55 -53
- package/packages/tools/dist/index.js +1 -1
- package/packages/tools/dist/lane.d.ts +28 -26
- package/packages/tools/dist/lane.js +6 -7
- package/packages/tools/dist/measure.d.ts +34 -30
- package/packages/tools/dist/measure.js +2 -2
- package/packages/tools/dist/onboard.d.ts +29 -27
- package/packages/tools/dist/onboard.js +17 -41
- package/packages/tools/dist/parse-output.d.ts +48 -46
- package/packages/tools/dist/parse-output.js +2 -2
- package/packages/tools/dist/path-resolver.d.ts +4 -2
- package/packages/tools/dist/path-resolver.js +1 -1
- package/packages/tools/dist/process-manager.d.ts +18 -16
- package/packages/tools/dist/process-manager.js +1 -1
- package/packages/tools/dist/queue.d.ts +28 -26
- package/packages/tools/dist/queue.js +1 -2
- package/packages/tools/dist/regex-test.d.ts +26 -24
- package/packages/tools/dist/regex-test.js +1 -1
- package/packages/tools/dist/rename.d.ts +28 -26
- package/packages/tools/dist/rename.js +2 -2
- package/packages/tools/dist/replay.d.ts +33 -31
- package/packages/tools/dist/replay.js +4 -6
- package/packages/tools/dist/response-envelope.d.ts +32 -30
- package/packages/tools/dist/response-envelope.js +1 -1
- package/packages/tools/dist/schema-validate.d.ts +15 -13
- package/packages/tools/dist/schema-validate.js +1 -1
- package/packages/tools/dist/scope-map.d.ts +45 -48
- package/packages/tools/dist/scope-map.js +1 -1
- package/packages/tools/dist/snippet.d.ts +26 -25
- package/packages/tools/dist/snippet.js +1 -1
- package/packages/tools/dist/stash.d.ts +13 -11
- package/packages/tools/dist/stash.js +1 -2
- package/packages/tools/dist/stratum-card.d.ts +27 -28
- package/packages/tools/dist/stratum-card.js +3 -5
- package/packages/tools/dist/symbol.d.ts +31 -26
- package/packages/tools/dist/symbol.js +3 -3
- package/packages/tools/dist/test-run.d.ts +19 -16
- package/packages/tools/dist/test-run.js +2 -2
- package/packages/tools/dist/text-utils.d.ts +6 -4
- package/packages/tools/dist/text-utils.js +2 -2
- package/packages/tools/dist/time-utils.d.ts +15 -13
- package/packages/tools/dist/time-utils.js +1 -1
- package/packages/tools/dist/trace.d.ts +26 -21
- package/packages/tools/dist/trace.js +2 -2
- package/packages/tools/dist/truncation.d.ts +6 -4
- package/packages/tools/dist/truncation.js +6 -13
- package/packages/tools/dist/watch.d.ts +28 -26
- package/packages/tools/dist/watch.js +1 -1
- package/packages/tools/dist/web-fetch.d.ts +35 -33
- package/packages/tools/dist/web-fetch.js +6 -12
- package/packages/tools/dist/web-search.d.ts +16 -14
- package/packages/tools/dist/web-search.js +1 -1
- package/packages/tools/dist/workset.d.ts +19 -17
- package/packages/tools/dist/workset.js +1 -2
- package/packages/tui/dist/App-CYLNJLr6.js +2 -0
- package/packages/tui/dist/App.d.ts +11 -6
- package/packages/tui/dist/App.js +1 -450
- package/packages/tui/dist/CuratedPanel-sYdZAICX.js +2 -0
- package/packages/tui/dist/LogPanel-DtMnoyXT.js +3 -0
- package/packages/tui/dist/SearchPanel-DREo6zgt.js +2 -0
- package/packages/tui/dist/StatusPanel-2ex8fLOO.js +2 -0
- package/packages/tui/dist/chunk-D6axbAb-.js +2 -0
- package/packages/tui/dist/devtools-DUyj952l.js +7 -0
- package/packages/tui/dist/embedder.interface-D4ew0HPW.d.ts +28 -0
- package/packages/tui/dist/index-B9VpfVPP.d.ts +13 -0
- package/packages/tui/dist/index.d.ts +3 -19
- package/packages/tui/dist/index.js +1 -476
- package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +316 -0
- package/packages/tui/dist/panels/CuratedPanel.d.ts +11 -6
- package/packages/tui/dist/panels/CuratedPanel.js +1 -371
- package/packages/tui/dist/panels/LogPanel.d.ts +7 -3
- package/packages/tui/dist/panels/LogPanel.js +1 -449
- package/packages/tui/dist/panels/SearchPanel.d.ts +14 -8
- package/packages/tui/dist/panels/SearchPanel.js +1 -372
- package/packages/tui/dist/panels/StatusPanel.d.ts +11 -6
- package/packages/tui/dist/panels/StatusPanel.js +1 -371
- package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +150 -0
- package/scaffold/adapters/claude-code.mjs +20 -0
- package/scaffold/adapters/copilot.mjs +320 -0
- package/scaffold/copilot/agents/Architect-Reviewer-Alpha.agent.md +21 -0
- package/scaffold/copilot/agents/Architect-Reviewer-Beta.agent.md +21 -0
- package/scaffold/copilot/agents/Documenter.agent.md +42 -0
- package/scaffold/copilot/agents/Orchestrator.agent.md +104 -0
- package/scaffold/copilot/agents/Planner.agent.md +54 -0
- package/scaffold/copilot/agents/Refactor.agent.md +36 -0
- package/scaffold/copilot/agents/Researcher-Alpha.agent.md +20 -0
- package/scaffold/copilot/agents/Researcher-Beta.agent.md +20 -0
- package/scaffold/copilot/agents/Researcher-Delta.agent.md +20 -0
- package/scaffold/copilot/agents/Researcher-Gamma.agent.md +20 -0
- package/scaffold/definitions/agents.mjs +165 -0
- package/scaffold/definitions/bodies.mjs +292 -0
- package/scaffold/definitions/hooks.mjs +43 -0
- package/scaffold/definitions/models.mjs +56 -0
- package/scaffold/definitions/plugins.mjs +24 -0
- package/scaffold/definitions/prompts.mjs +145 -0
- package/scaffold/definitions/protocols.mjs +322 -0
- package/scaffold/definitions/tools.mjs +176 -0
- package/scaffold/general/agents/Architect-Reviewer-Alpha.agent.md +21 -0
- package/scaffold/general/agents/Architect-Reviewer-Beta.agent.md +21 -0
- package/scaffold/general/agents/Code-Reviewer-Alpha.agent.md +12 -0
- package/scaffold/general/agents/Code-Reviewer-Beta.agent.md +12 -0
- package/scaffold/general/agents/Debugger.agent.md +31 -0
- package/scaffold/general/agents/Documenter.agent.md +42 -0
- package/scaffold/general/agents/Explorer.agent.md +50 -0
- package/scaffold/general/agents/Frontend.agent.md +29 -0
- package/scaffold/general/agents/Implementer.agent.md +31 -0
- package/scaffold/general/agents/Orchestrator.agent.md +104 -0
- package/scaffold/general/agents/Planner.agent.md +55 -0
- package/scaffold/general/agents/README.md +57 -0
- package/scaffold/general/agents/Refactor.agent.md +36 -0
- package/scaffold/general/agents/Researcher-Alpha.agent.md +20 -0
- package/scaffold/general/agents/Researcher-Beta.agent.md +20 -0
- package/scaffold/general/agents/Researcher-Delta.agent.md +20 -0
- package/scaffold/general/agents/Researcher-Gamma.agent.md +20 -0
- package/scaffold/general/agents/Security.agent.md +42 -0
- package/scaffold/general/agents/_shared/adr-protocol.md +91 -0
- package/scaffold/general/agents/_shared/architect-reviewer-base.md +50 -0
- package/scaffold/general/agents/_shared/code-agent-base.md +88 -0
- package/scaffold/general/agents/_shared/code-reviewer-base.md +54 -0
- package/scaffold/general/agents/_shared/decision-protocol.md +27 -0
- package/scaffold/general/agents/_shared/forge-protocol.md +46 -0
- package/scaffold/general/agents/_shared/researcher-base.md +61 -0
- package/scaffold/general/agents/templates/adr-template.md +27 -0
- package/scaffold/general/agents/templates/execution-state.md +25 -0
- package/scaffold/general/prompts/ask.prompt.md +20 -0
- package/scaffold/general/prompts/debug.prompt.md +25 -0
- package/scaffold/general/prompts/design.prompt.md +22 -0
- package/scaffold/general/prompts/implement.prompt.md +26 -0
- package/scaffold/general/prompts/plan.prompt.md +24 -0
- package/scaffold/general/prompts/review.prompt.md +31 -0
- package/scaffold/generate.mjs +74 -0
- package/skills/adr-skill/SKILL.md +329 -0
- package/skills/adr-skill/assets/templates/adr-madr.md +89 -0
- package/skills/adr-skill/assets/templates/adr-readme.md +20 -0
- package/skills/adr-skill/assets/templates/adr-simple.md +46 -0
- package/skills/adr-skill/references/adr-conventions.md +95 -0
- package/skills/adr-skill/references/examples.md +193 -0
- package/skills/adr-skill/references/review-checklist.md +77 -0
- package/skills/adr-skill/references/template-variants.md +52 -0
- package/skills/adr-skill/scripts/bootstrap_adr.js +259 -0
- package/skills/adr-skill/scripts/new_adr.js +391 -0
- package/skills/adr-skill/scripts/set_adr_status.js +169 -0
- package/skills/brainstorming/SKILL.md +259 -0
- package/skills/brainstorming/scripts/frame-template.html +365 -0
- package/skills/brainstorming/scripts/helper.js +216 -0
- package/skills/brainstorming/scripts/server.cjs +9 -0
- package/skills/brainstorming/scripts/server.src.cjs +249 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +430 -0
- package/skills/c4-architecture/SKILL.md +295 -0
- package/skills/c4-architecture/references/advanced-patterns.md +552 -0
- package/skills/c4-architecture/references/c4-syntax.md +492 -0
- package/skills/c4-architecture/references/common-mistakes.md +437 -0
- package/skills/knowledge-base/SKILL.md +100 -10
- package/skills/lesson-learned/SKILL.md +105 -0
- package/skills/lesson-learned/references/anti-patterns.md +55 -0
- package/skills/lesson-learned/references/se-principles.md +109 -0
- package/skills/requirements-clarity/SKILL.md +324 -0
- package/skills/session-handoff/SKILL.md +189 -0
- package/skills/session-handoff/references/handoff-template.md +139 -0
- package/skills/session-handoff/references/resume-checklist.md +80 -0
- package/skills/session-handoff/scripts/check_staleness.js +269 -0
- package/skills/session-handoff/scripts/create_handoff.js +299 -0
- package/skills/session-handoff/scripts/list_handoffs.js +113 -0
- package/skills/session-handoff/scripts/validate_handoff.js +241 -0
- package/packages/chunker/dist/treesitter-chunker.d.ts +0 -47
- package/packages/chunker/dist/treesitter-chunker.js +0 -8
- package/packages/cli/dist/commands/init.d.ts +0 -10
- package/packages/cli/dist/commands/init.js +0 -308
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region packages/analyzers/src/ts-call-graph.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* TypeScript Compiler API-based call graph extractor.
|
|
3
4
|
*
|
|
@@ -5,23 +6,24 @@
|
|
|
5
6
|
* the AST to find function call sites and resolve them to their declaration files.
|
|
6
7
|
* Produces module-level call edges: which modules call functions in which other modules.
|
|
7
8
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
interface ModuleCallEdge {
|
|
10
|
+
/** Caller module (relative path) */
|
|
11
|
+
from: string;
|
|
12
|
+
/** Callee module (relative path) */
|
|
13
|
+
to: string;
|
|
14
|
+
/** Function/symbol names called across this edge */
|
|
15
|
+
symbols: string[];
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
interface CallGraphResult {
|
|
18
|
+
edges: ModuleCallEdge[];
|
|
19
|
+
fileCount: number;
|
|
20
|
+
edgeCount: number;
|
|
21
|
+
durationMs: number;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Extract module-level call graph from a TypeScript/JavaScript project.
|
|
24
25
|
* Returns null if TypeScript compiler is unavailable or no TS files found.
|
|
25
26
|
*/
|
|
26
|
-
|
|
27
|
-
//#
|
|
27
|
+
declare function extractTsCallGraph(rootPath: string): Promise<CallGraphResult | null>;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { CallGraphResult, ModuleCallEdge, extractTsCallGraph };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{extname as e,join as t,relative as n}from"node:path";import{existsSync as r,readFileSync as i,readdirSync as a}from"node:fs";const o=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`]);async function s(e){let t=Date.now();if(!c(e))return null;let r;try{r=await import(`typescript`)}catch{return null}let i=u(e);if(i.length===0)return null;let a=i.slice(0,800),o=l(r,e),s=r.createProgram(a,{...o,noEmit:!0,skipLibCheck:!0,allowJs:!0,target:r.ScriptTarget.ESNext,module:r.ModuleKind.ESNext,moduleResolution:r.ModuleResolutionKind.Bundler}),f=s.getTypeChecker(),p=new Map;for(let t of s.getSourceFiles()){let i=t.fileName;if(t.isDeclarationFile||i.includes(`node_modules`))continue;let a=n(e,i).replace(/\\/g,`/`);a.startsWith(`..`)||d(r,t,t,f,e,a,p)}let m=[];for(let[e,t]of p){let[n,r]=e.split(`|`);m.push({from:n,to:r,symbols:[...t].sort().slice(0,10)})}return m.sort((e,t)=>t.symbols.length-e.symbols.length),{edges:m,fileCount:a.length,edgeCount:m.length,durationMs:Date.now()-t}}function c(e){if(r(t(e,`tsconfig.json`))||r(t(e,`tsconfig.build.json`)))return!0;try{for(let n of a(e,{withFileTypes:!0}))if(n.isDirectory()&&!o.has(n.name)&&!n.name.startsWith(`.`)&&r(t(e,n.name,`tsconfig.json`)))return!0}catch{}return!1}function l(e,n){let a=t(n,`tsconfig.json`);if(!r(a))return{};try{let t=e.readConfigFile(a,e=>i(e,`utf-8`));return t.error?{}:e.parseJsonConfigFileContent(t.config,e.sys,n).options}catch{return{}}}function u(r){let i=[],s=new Set([`.ts`,`.tsx`]),c=(l,u)=>{if(!(u>10))try{for(let d of a(l,{withFileTypes:!0})){if(o.has(d.name)||d.name.startsWith(`.`))continue;let a=t(l,d.name);if(d.isDirectory())c(a,u+1);else if(s.has(e(d.name))){if(d.name.endsWith(`.d.ts`)||/\.(test|spec)\.[jt]sx?$/.test(d.name)||n(r,l).replace(/\\/g,`/`).split(`/`).some(e=>e===`test`||e===`tests`||e===`__tests__`||e===`spec`))continue;i.push(a)}}}catch{}};return c(r,0),i}function d(e,t,n,r,i,a,o){if(e.isCallExpression(t)||e.isNewExpression(t)){let n=t.expression;p(e,n,r,i,a,o)}e.forEachChild(t,t=>{d(e,t,n,r,i,a,o)})}function f(e){let t=e.match(/^(.+?)\/dist\/(.+)$/);if(!t)return e;let[,n,r]=t;return`${n}/src/${r.replace(/\.d\.(m?ts|cts)$/,`.ts`)}`}function p(e,t,r,i,a,o){try{let s,c;if(e.isIdentifier(t)?(s=r.getSymbolAtLocation(t),c=t.text):e.isPropertyAccessExpression(t)&&(s=r.getSymbolAtLocation(t.name),c=t.name.text),!s||!c)return;s.flags&e.SymbolFlags.Alias&&(s=r.getAliasedSymbol(s));let l=s.getDeclarations();if(!l||l.length===0)return;let u=l[0].getSourceFile().fileName;if(u.includes(`node_modules`))return;let d=n(i,u).replace(/\\/g,`/`);if(d=f(d),d===a||d.startsWith(`..`))return;let p=`${a}|${d}`,m=o.get(p);m?m.add(c):o.set(p,new Set([c]))}catch{}}export{s as extractTsCallGraph};
|
|
@@ -1,98 +1,100 @@
|
|
|
1
|
+
//#region packages/analyzers/src/types.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Analyzer interfaces and result types.
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
interface AnalysisResult {
|
|
6
|
+
/** Formatted output (Markdown, JSON, or Mermaid) */
|
|
7
|
+
output: string;
|
|
8
|
+
/** Structured data for programmatic access */
|
|
9
|
+
data: Record<string, unknown>;
|
|
10
|
+
/** Analysis metadata */
|
|
11
|
+
meta: {
|
|
12
|
+
analyzedAt: string;
|
|
13
|
+
scope: string;
|
|
14
|
+
fileCount: number;
|
|
15
|
+
durationMs: number;
|
|
16
|
+
};
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
interface AnalyzerOptions {
|
|
19
|
+
format?: 'json' | 'markdown' | 'mermaid';
|
|
20
|
+
[key: string]: unknown;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
interface IAnalyzer<TOpts extends AnalyzerOptions = AnalyzerOptions> {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
analyze(rootPath: string, options?: TOpts): Promise<AnalysisResult>;
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
interface StructureAnalyzerOptions extends AnalyzerOptions {
|
|
27
|
+
format?: 'json' | 'markdown';
|
|
28
|
+
maxDepth?: number;
|
|
29
|
+
/** When true, only include source code and config files (no docs, images, fonts, etc.) */
|
|
30
|
+
sourceOnly?: boolean;
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
interface DependencyAnalyzerOptions extends AnalyzerOptions {
|
|
33
|
+
format?: 'json' | 'markdown' | 'mermaid';
|
|
34
|
+
maxNodes?: number;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
interface SymbolAnalyzerOptions extends AnalyzerOptions {
|
|
37
|
+
filter?: string;
|
|
38
|
+
format?: 'json' | 'markdown';
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
interface DiagramOptions extends AnalyzerOptions {
|
|
41
|
+
diagramType?: 'architecture' | 'dependencies';
|
|
42
|
+
scope?: string;
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
interface TreeNode {
|
|
45
|
+
name: string;
|
|
46
|
+
type: 'file' | 'directory';
|
|
47
|
+
purpose?: string;
|
|
48
|
+
language?: string;
|
|
49
|
+
size?: number;
|
|
50
|
+
children?: TreeNode[];
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
interface ProjectStats {
|
|
53
|
+
totalFiles: number;
|
|
54
|
+
totalSize: number;
|
|
55
|
+
languages: Record<string, number>;
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
interface ImportInfo {
|
|
58
|
+
source: string;
|
|
59
|
+
specifiers: string[];
|
|
60
|
+
filePath: string;
|
|
61
|
+
isExternal: boolean;
|
|
62
|
+
/** Confidence level based on import resolution method */
|
|
63
|
+
confidence: 'high' | 'medium' | 'low';
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
interface SymbolInfo {
|
|
66
|
+
name: string;
|
|
67
|
+
kind: 'function' | 'class' | 'interface' | 'type' | 'const' | 'enum' | 'variable' | 'method';
|
|
68
|
+
exported: boolean;
|
|
69
|
+
filePath: string;
|
|
70
|
+
line: number;
|
|
71
|
+
/** Full signature for functions/methods (parameter list + return type) */
|
|
72
|
+
signature?: string;
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
interface PatternMatch {
|
|
75
|
+
pattern: string;
|
|
76
|
+
description: string;
|
|
77
|
+
locations: string[];
|
|
78
|
+
confidence: 'high' | 'medium' | 'low';
|
|
78
79
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
interface EntryPoint {
|
|
81
|
+
name: string;
|
|
82
|
+
type: 'lambda-handler' | 'main' | 'bin' | 'server' | 'cli' | 'test' | 'cdk-construct';
|
|
83
|
+
filePath: string;
|
|
84
|
+
trigger?: string;
|
|
84
85
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
interface ExtractionBaselines {
|
|
87
|
+
structure?: AnalysisResult;
|
|
88
|
+
dependencies?: AnalysisResult;
|
|
89
|
+
symbols?: AnalysisResult;
|
|
90
|
+
patterns?: AnalysisResult;
|
|
91
|
+
entryPoints?: AnalysisResult;
|
|
92
|
+
diagrams?: AnalysisResult[];
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
interface ExistingKnowledge {
|
|
95
|
+
categories: string[];
|
|
96
|
+
lastProduced: Record<string, string>;
|
|
97
|
+
documentCount: number;
|
|
97
98
|
}
|
|
98
|
-
//#
|
|
99
|
+
//#endregion
|
|
100
|
+
export { AnalysisResult, AnalyzerOptions, DependencyAnalyzerOptions, DiagramOptions, EntryPoint, ExistingKnowledge, ExtractionBaselines, IAnalyzer, ImportInfo, PatternMatch, ProjectStats, StructureAnalyzerOptions, SymbolAnalyzerOptions, SymbolInfo, TreeNode };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
+
//#region packages/chunker/src/call-graph-extractor.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Call-graph extractor using tree-sitter AST.
|
|
3
4
|
*
|
|
4
5
|
* Extracts function-level call sites from parsed code, producing
|
|
5
6
|
* caller→callee edges for blast-radius and dependency analysis.
|
|
6
7
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
interface CallEdge {
|
|
9
|
+
/** File containing the call */
|
|
10
|
+
callerFile: string;
|
|
11
|
+
/** Function/method making the call (or '<module>' for top-level) */
|
|
12
|
+
callerName: string;
|
|
13
|
+
/** Name of the function/method being called */
|
|
14
|
+
calleeName: string;
|
|
15
|
+
/** 1-based line number of the call site */
|
|
16
|
+
line: number;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Extract call edges from a source file using tree-sitter AST.
|
|
19
|
-
*
|
|
20
|
+
* Prefers WASM runtime; falls back to native tree-sitter.
|
|
21
|
+
* Returns null if neither runtime is available or doesn't support the language.
|
|
20
22
|
*/
|
|
21
|
-
|
|
22
|
-
//#
|
|
23
|
+
declare function extractCallEdges(content: string, filePath: string): CallEdge[] | null;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { CallEdge, extractCallEdges };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{WasmRuntime as e}from"./wasm/runtime.js";import{extname as t}from"node:path";const n=new Set([`function_declaration`,`method_definition`,`arrow_function`,`function_definition`,`function_declaration`,`method_declaration`,`function_item`,`method_declaration`,`constructor_declaration`]),r=new Set([`call_expression`,`new_expression`,`call`]);function i(n,r){let i=t(r).toLowerCase(),o=e.get();if(o?.isLanguageLoaded(i)){let e=o.getParser(),t=o.getLanguage(i);if(e&&t){e.setLanguage(t);let i=e.parse(n);if(i){let e=[];return a(i.rootNode,r,`<module>`,e),e}}}return null}function a(e,t,i,c){if(!e)return;let l=i;if(n.has(e.type)&&(l=o(e)??i),r.has(e.type)){let n=s(e);n&&c.push({callerFile:t,callerName:l,calleeName:n,line:(e.startPosition?.row??0)+1})}for(let n=0;n<(e.childCount??0);n++){let r=e.child(n);r&&a(r,t,l,c)}}function o(e){for(let t=0;t<(e.childCount??0);t++){let n=e.child(t);if(n&&(n.type===`identifier`||n.type===`property_identifier`||n.type===`name`))return n.text??null}return null}function s(e){let t=e.childForFieldName?.(`function`)??e.child(0);return t?t.type===`identifier`||t.type===`name`?t.text??null:t.type===`member_expression`||t.type===`attribute`?(t.childForFieldName?.(`property`)??t.childForFieldName?.(`attribute`))?.text??null:e.type===`new_expression`?e.child(1)?.text??null:null:null}export{i as extractCallEdges};
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IChunker } from "./chunker.interface.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/chunker-factory.d.ts
|
|
2
4
|
/**
|
|
3
5
|
* Create the appropriate chunker for a file extension.
|
|
4
|
-
*
|
|
6
|
+
*
|
|
7
|
+
* Uses WASM tree-sitter AST-based chunking when available.
|
|
8
|
+
* Falls back to regex-based CodeChunker.
|
|
9
|
+
*
|
|
10
|
+
* **Breaking change**: Now returns `Promise<IChunker>` because WASM init is async.
|
|
5
11
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
declare function createChunker(fileExtension: string): Promise<IChunker>;
|
|
13
|
+
/**
|
|
14
|
+
* Create a chunker synchronously (legacy API).
|
|
15
|
+
* Uses whatever runtime is already initialized.
|
|
16
|
+
*/
|
|
17
|
+
declare function createChunkerSync(fileExtension: string): IChunker;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { createChunker, createChunkerSync };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CodeChunker as
|
|
1
|
+
import{SUPPORTED_EXTENSIONS as e}from"./wasm/languages.js";import{WasmRuntime as t}from"./wasm/runtime.js";import{CodeChunker as n}from"./code-chunker.js";import{GenericChunker as r}from"./generic-chunker.js";import{MarkdownChunker as i}from"./markdown-chunker.js";import{WasmChunker as a}from"./wasm-chunker.js";async function o(o){let s=o.toLowerCase();switch(s){case`.md`:case`.mdx`:return new i;case`.ts`:case`.tsx`:case`.mts`:case`.cts`:case`.js`:case`.jsx`:case`.mjs`:case`.cjs`:case`.py`:case`.go`:case`.rs`:case`.java`:if(e.has(s)){let e=await t.initialize();if(e)return await e.loadLanguage(s),new a}return new n;default:return new r}}function s(e){let o=e.toLowerCase();switch(o){case`.md`:case`.mdx`:return new i;case`.ts`:case`.tsx`:case`.mts`:case`.cts`:case`.js`:case`.jsx`:case`.mjs`:case`.cjs`:case`.py`:case`.go`:case`.rs`:case`.java`:return t.get()?.isLanguageLoaded(o)?new a:new n;default:return new r}}export{o as createChunker,s as createChunkerSync};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ChunkMetadata, RawChunk } from "@kb/core";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/chunker.interface.d.ts
|
|
2
4
|
/**
|
|
3
5
|
* Interface for content chunkers.
|
|
4
6
|
* Each chunker splits a specific content type into searchable chunks.
|
|
5
7
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
interface IChunker {
|
|
9
|
+
/** Split content into chunks */
|
|
10
|
+
chunk(content: string, metadata: ChunkMetadata): RawChunk[];
|
|
9
11
|
}
|
|
10
|
-
//#
|
|
12
|
+
//#endregion
|
|
13
|
+
export { IChunker };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { IChunker } from "./chunker.interface.js";
|
|
2
|
+
import { ChunkMetadata, RawChunk } from "@kb/core";
|
|
3
|
+
|
|
4
|
+
//#region packages/chunker/src/code-chunker.d.ts
|
|
5
|
+
declare class CodeChunker implements IChunker {
|
|
6
|
+
private readonly maxChunkSize;
|
|
7
|
+
constructor(options?: {
|
|
8
|
+
maxChunkSize?: number;
|
|
9
|
+
});
|
|
10
|
+
chunk(content: string, metadata: ChunkMetadata): RawChunk[];
|
|
11
|
+
private findDeclarationBoundaries;
|
|
12
|
+
private fallbackChunk;
|
|
13
|
+
private splitByLines;
|
|
14
|
+
private getLineNumber;
|
|
13
15
|
}
|
|
14
|
-
//#
|
|
16
|
+
//#endregion
|
|
17
|
+
export { CodeChunker };
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import{CHUNK_SIZES as
|
|
2
|
-
|
|
3
|
-
`).length;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`)
|
|
8
|
-
`)
|
|
9
|
-
|
|
10
|
-
`)
|
|
11
|
-
`)
|
|
12
|
-
`)),t=[l],i=l.length):(t.push(l),i+=l.length+1);return t.length>0&&s.push(t.join(`
|
|
13
|
-
`)),s}getLineNumber(e,n){return e.slice(0,n).split(`
|
|
14
|
-
`).length}}export{C as CodeChunker};
|
|
1
|
+
import{CHUNK_SIZES as e}from"../../core/dist/index.js";var t=class{maxChunkSize;constructor(t){this.maxChunkSize=t?.maxChunkSize??e.code.max}chunk(e,t){let n=this.findDeclarationBoundaries(e);if(n.length===0)return this.fallbackChunk(e,t);let r=[];for(let i=0;i<n.length;i++){let a=n[i].offset,o=i+1<n.length?n[i+1].offset:e.length,s=e.slice(a,o).trim();if(s=`// File: ${t.sourcePath}\n`+s,s.length>this.maxChunkSize){let n=this.splitByLines(s,this.maxChunkSize),i=this.getLineNumber(e,a);for(let e of n){let n=e.split(`
|
|
2
|
+
`).length;r.push({text:e,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:r.length,totalChunks:0,startLine:i,endLine:i+n-1}),i+=n}}else{let n=this.getLineNumber(e,a);r.push({text:s,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:r.length,totalChunks:0,startLine:n,endLine:n+s.split(`
|
|
3
|
+
`).length-1})}}if(n[0].offset>0){let i=e.slice(0,n[0].offset).trim();i.length>0&&r.unshift({text:`// File: ${t.sourcePath}\n${i}`,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:0,totalChunks:0,startLine:1,endLine:this.getLineNumber(e,n[0].offset)-1})}return r.map((e,t)=>({...e,chunkIndex:t,totalChunks:r.length}))}findDeclarationBoundaries(e){let t=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|interface|type|const|enum|abstract\s+class)\s+(\w+)/gm,n=[],r;for(;(r=t.exec(e))!==null;){let t=e.lastIndexOf(`
|
|
4
|
+
`,r.index-1)+1,i=t,a=e.slice(0,t).split(`
|
|
5
|
+
`),o=a.length-1;for(;o>=0;){let e=a[o].trim();if(e===``||e.startsWith(`//`)||e.startsWith(`*`)||e.startsWith(`/*`)||e.startsWith(`*/`)||e.startsWith(`@`))o--;else break}o<a.length-1&&(i=a.slice(0,o+1).join(`
|
|
6
|
+
`).length+1),n.push({offset:i,name:r[1]})}return n}fallbackChunk(e,t){return[{text:`// File: ${t.sourcePath}\n`+e,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:0,totalChunks:1,startLine:1,endLine:e.split(`
|
|
7
|
+
`).length}]}splitByLines(e,t){let n=e.split(`
|
|
8
|
+
`),r=[],i=[],a=0;for(let e of n)a+e.length+1>t&&i.length>0?(r.push(i.join(`
|
|
9
|
+
`)),i=[e],a=e.length):(i.push(e),a+=e.length+1);return i.length>0&&r.push(i.join(`
|
|
10
|
+
`)),r}getLineNumber(e,t){return e.slice(0,t).split(`
|
|
11
|
+
`).length}};export{t as CodeChunker};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region packages/chunker/src/extractors/call-extractor.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* AST-based call extractor.
|
|
4
|
+
*
|
|
5
|
+
* Replaces regex-based call graph analysis with tree-sitter AST queries.
|
|
6
|
+
* Returns `CallEdge[]` compatible with the existing call-graph-extractor.
|
|
7
|
+
*/
|
|
8
|
+
interface CallEdge {
|
|
9
|
+
callerFile: string;
|
|
10
|
+
callerName: string;
|
|
11
|
+
calleeName: string;
|
|
12
|
+
line: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract call edges from source code using AST queries.
|
|
16
|
+
*
|
|
17
|
+
* @param content - The source code to analyze.
|
|
18
|
+
* @param ext - The file extension (e.g., `.ts`, `.py`).
|
|
19
|
+
* @param filePath - The file path for the returned CallEdge records.
|
|
20
|
+
* @returns Array of extracted call edges, or empty array if language unsupported.
|
|
21
|
+
*/
|
|
22
|
+
declare function extractCalls(content: string, ext: string, filePath?: string): Promise<CallEdge[]>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { CallEdge, extractCalls };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r=new Set([`function_declaration`,`method_definition`,`arrow_function`,`function_definition`,`method_declaration`,`constructor_declaration`,`function_declaration`,`method_declaration`,`function_item`]);async function i(t,r,i=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);return c?n.execute(s.rootNode,c,r,`calls`).map(e=>a(e,s.rootNode,i)).filter(e=>e!==null):[]}function a(e,t,n){let r=e.captures.get(`callee`);if(!r)return null;let i=e.captures.get(`node`);return{callerFile:n,callerName:o(i?.node??r.node),calleeName:r.text,line:(i?.startLine??r.startLine)+1}}function o(e){let t=e.parent;for(;t;){if(r.has(t.type)){let e=s(t);if(e)return e}t=t.parent}return`<module>`}function s(e){let t=e.childForFieldName(`name`);if(t)return t.text;for(let t of e.children)if(t.type===`identifier`||t.type===`property_identifier`||t.type===`field_identifier`)return t.text;return null}export{i as extractCalls};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EntryPoint } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/extractors/entry-point-detector.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Detect entry points from source code using AST queries.
|
|
6
|
+
*
|
|
7
|
+
* @param content - The source code to analyze.
|
|
8
|
+
* @param ext - The file extension (e.g., `.ts`, `.py`).
|
|
9
|
+
* @param filePath - The file path for the returned EntryPoint records.
|
|
10
|
+
* @returns Array of detected entry points, or empty array if language unsupported.
|
|
11
|
+
*/
|
|
12
|
+
declare function detectEntryPoints(content: string, ext: string, filePath?: string): Promise<EntryPoint[]>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { detectEntryPoints };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r={handler:`lambda-handler`,lambdaHandler:`lambda-handler`,main:`main`,__name__:`main`,app:`server`,server:`server`,router:`server`,urlpatterns:`server`,init:`main`},i={SpringBootApplication:`server`,RestController:`server`,Controller:`server`};async function a(t,r,i=``){let a=await e.ensure(),s=await a.parse(t,r);if(!s)return[];let c=a.getLanguage(r);if(!c)return[];let l=n.execute(s.rootNode,c,r,`entry-points`),u=[],d=new Set;for(let e of l){let t=o(e,r,i);if(t){let e=`${t.name}:${t.type}`;d.has(e)||(d.add(e),u.push(t))}}return u}function o(e,t,n){let a=e.captures.get(`name`);if(!a)return null;let o=a.text,s=e.captures.get(`_parent`);if(s){let e=s.text;if([`Construct`,`Stack`,`NestedStack`,`Stage`].includes(e))return{name:o,type:`cdk-construct`,filePath:n}}let c=e.captures.get(`_ann`);if(c){let e=i[c.text];if(e)return{name:o,type:e,filePath:n}}let l=r[o];return l?{name:o,type:l,filePath:n}:t===`.go`&&o.toLowerCase().startsWith(`handle`)?{name:o,type:`server`,filePath:n,trigger:`HTTP handler`}:{name:o,type:`main`,filePath:n}}export{a as detectEntryPoints};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ImportInfo } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/extractors/import-extractor.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Extract imports from source code using AST queries.
|
|
6
|
+
*
|
|
7
|
+
* @param content - The source code to analyze.
|
|
8
|
+
* @param ext - The file extension (e.g., `.ts`, `.py`).
|
|
9
|
+
* @param filePath - The file path for the returned ImportInfo records.
|
|
10
|
+
* @returns Array of extracted imports, or empty array if language unsupported.
|
|
11
|
+
*/
|
|
12
|
+
declare function extractImports(content: string, ext: string, filePath?: string): Promise<ImportInfo[]>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { extractImports };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t;async function r(t,r,c=``){let l=await e.ensure(),u=await l.parse(t,r);if(!u)return[];let d=l.getLanguage(r);if(!d)return[];let f=n.execute(u.rootNode,d,r,`imports`),p=[];for(let e of f){let t=e.captures.get(`source`);if(!t){let t=e.captures.get(`node`);if(t){let e=s(t.text,r);e&&p.push({source:e.source,specifiers:e.specifiers,filePath:c,isExternal:a(e.source,r),confidence:`high`})}continue}let n=t.text,l=i(n,r),u=o(e.captures.get(`node`)?.text??``,r,l);p.push({source:l,specifiers:u,filePath:c,isExternal:a(l,r),confidence:`high`})}return p}function i(e,t){let n=e.replace(/^['"`]|['"`]$/g,``);return t===`.go`&&(n=n.replace(/^"|"$/g,``)),n}function a(e,t){return t===`.py`?!e.startsWith(`.`):t===`.go`?e.includes(`/`)||e.includes(`.`):t===`.java`?!0:t===`.rs`?!e.startsWith(`self`)&&!e.startsWith(`super`)&&!e.startsWith(`crate`):!e.startsWith(`.`)&&!e.startsWith(`/`)}function o(e,t,n){if(!e)return[n];if(t===`.py`){let t=e.match(/import\s+(.+)$/m);return t?t[1].split(`,`).map(e=>e.trim().split(/\s+as\s+/)[0].trim()).filter(Boolean):[n]}if(t===`.java`){let e=n.split(`.`);return[e[e.length-1]]}if(t===`.go`){let e=n.split(`/`);return[e[e.length-1]]}if(t===`.rs`){if(n.includes(`{`)){let e=n.match(/\{([^}]+)\}/);if(e)return e[1].split(`,`).map(e=>e.trim()).filter(Boolean)}let e=n.split(`::`);return[e[e.length-1]]}let r=e.match(/\{([^}]+)\}/);if(r)return r[1].split(`,`).map(e=>e.trim().split(/\s+as\s+/)[0].trim()).filter(Boolean);let i=e.match(/import\s+(\w+)/);return i?[i[1]]:[n]}function s(e,t){if(t===`.py`){let t=e.match(/^import\s+([\w.]+)/);if(t)return{source:t[1],specifiers:[t[1]]}}return null}export{r as extractImports};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PatternMatch } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/extractors/pattern-detector.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Detect design patterns from source code using AST queries.
|
|
6
|
+
*
|
|
7
|
+
* @param content - The source code to analyze.
|
|
8
|
+
* @param ext - The file extension (e.g., `.ts`, `.py`).
|
|
9
|
+
* @param filePath - The file path for location info.
|
|
10
|
+
* @returns Array of detected patterns, or empty array if language unsupported.
|
|
11
|
+
*/
|
|
12
|
+
declare function detectPatterns(content: string, ext: string, filePath?: string): Promise<PatternMatch[]>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { detectPatterns };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t;async function r(t,r,a=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);if(!c)return[];let l=n.execute(s.rootNode,c,r,`patterns`),u=new Map;for(let e of l){let t=i(e,r);if(!t)continue;let n=e.captures.get(`name`),o=`${a}:${(e.captures.get(`node`)?.startLine??n?.startLine??0)+1}`,s=u.get(t.pattern);s?s.locations.push(o):u.set(t.pattern,{description:t.description,locations:[o]})}let d=[];for(let[e,{description:t,locations:n}]of u)d.push({pattern:e,description:t,locations:n,confidence:`high`});return d}function i(e,t){let n=e.captures.get(`name`)?.text;if(!n)return null;let r=e.captures.get(`node`)?.nodeType??``;if(/^(create|build)[A-Z]/.test(n)||/^(of|from|new)[A-Z]/.test(n))return{pattern:`factory`,description:`Factory function/method`};if(/^(register|bind)$/.test(n))return{pattern:`dependency-injection`,description:`DI container registration`};if(/^(Injectable|Component|Service|Controller|Module|Singleton|Repository|Bean)$/.test(n))return{pattern:`dependency-injection`,description:`Framework DI annotation`};if(/^(Map|WeakMap|Set)$/.test(n))return{pattern:`cached-instance`,description:`Cached Map/Set instance`};if(t===`.py`){if(n===`__new__`)return{pattern:`singleton`,description:`Singleton pattern (__new__ override)`};if(n===`__enter__`)return{pattern:`context-manager`,description:`Context manager pattern`};if(r===`decorated_definition`)return{pattern:`decorator`,description:`Decorator usage`}}if(t===`.go`){if(r===`type_declaration`)return{pattern:`interface`,description:`Interface definition`};if(r===`go_statement`)return{pattern:`concurrency`,description:`Goroutine concurrency pattern`};if(n===`make`)return{pattern:`concurrency`,description:`Channel/make pattern`}}if(t===`.rs`){if(r===`impl_item`)return{pattern:`trait-impl`,description:`Trait implementation`};if(r===`attribute_item`){if(n===`derive`)return{pattern:`derive`,description:`Derive macro attribute`};if(n===`test`)return{pattern:`test`,description:`Test attribute`}}}if(t===`.java`){if(r===`class_declaration`)return{pattern:`singleton`,description:`Singleton pattern (private constructor)`};if(r===`marker_annotation`)return{pattern:`dependency-injection`,description:`Framework DI annotation`}}if(/\.(ts|tsx|mts|cts|js|jsx|mjs|cjs)$/.test(t)){if(r===`class_declaration`)return{pattern:`singleton`,description:`Singleton pattern (private constructor)`};if(r===`decorator`)return{pattern:`decorator`,description:`Framework decorator pattern`}}return{pattern:r||`unknown`,description:`Detected pattern: ${n}`}}export{r as detectPatterns};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region packages/chunker/src/extractors/scope-resolver.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* AST-based scope resolver.
|
|
4
|
+
*
|
|
5
|
+
* NEW capability: resolves the enclosing scope (function/class/module) for any
|
|
6
|
+
* AST node. Used by other extractors to determine caller context.
|
|
7
|
+
*/
|
|
8
|
+
interface ScopeInfo {
|
|
9
|
+
/** Name of the enclosing scope (or '<module>' for top-level). */
|
|
10
|
+
name: string;
|
|
11
|
+
/** The scope type (function, class, module). */
|
|
12
|
+
type: 'function' | 'class' | 'module';
|
|
13
|
+
/** 1-based start line of the scope. */
|
|
14
|
+
line: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the enclosing scope chain for a given line in source code.
|
|
18
|
+
*
|
|
19
|
+
* @param content - The source code to analyze.
|
|
20
|
+
* @param ext - The file extension.
|
|
21
|
+
* @param targetLine - 1-based line number to resolve scope for.
|
|
22
|
+
* @returns Array of scopes from innermost to outermost, ending with module.
|
|
23
|
+
*/
|
|
24
|
+
declare function resolveScopes(content: string, ext: string, targetLine: number): Promise<ScopeInfo[]>;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ScopeInfo, resolveScopes };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";const t=new Set([`function_declaration`,`method_definition`,`arrow_function`,`class_declaration`,`function_definition`,`class_definition`,`method_declaration`,`constructor_declaration`,`class_declaration`,`function_declaration`,`method_declaration`,`function_item`,`impl_item`]);async function n(t,n,a){let o=await(await e.ensure()).parse(t,n);if(!o)return[{name:`<module>`,type:`module`,line:1}];let s=r(o.rootNode,a-1);if(!s)return[{name:`<module>`,type:`module`,line:1}];let c=[];return i(s,c),c.push({name:`<module>`,type:`module`,line:1}),c}function r(e,t){let n=null;function r(e){if(e.startPosition.row<=t&&e.endPosition.row>=t){n=e;for(let t of e.children)r(t)}}return r(e),n}function i(e,n){let r=e.parent;for(;r;){if(t.has(r.type)){let e=a(r),t=o(r.type);n.push({name:e??`<anonymous>`,type:t,line:r.startPosition.row+1})}r=r.parent}}function a(e){let t=e.childForFieldName(`name`);if(t)return t.text;for(let t of e.children)if(t.type===`identifier`||t.type===`type_identifier`||t.type===`property_identifier`||t.type===`field_identifier`)return t.text;return null}function o(e){return e.includes(`class`)||e===`impl_item`?`class`:`function`}export{n as resolveScopes};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SymbolInfo } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/chunker/src/extractors/symbol-extractor.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Extract symbols from source code using AST queries.
|
|
6
|
+
*
|
|
7
|
+
* @param content - The source code to analyze.
|
|
8
|
+
* @param ext - The file extension (e.g., `.ts`, `.py`).
|
|
9
|
+
* @param filePath - The file path for the returned SymbolInfo records.
|
|
10
|
+
* @returns Array of extracted symbols, or empty array if language unsupported.
|
|
11
|
+
*/
|
|
12
|
+
declare function extractSymbols(content: string, ext: string, filePath?: string): Promise<SymbolInfo[]>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { extractSymbols };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r={function_declaration:`function`,class_declaration:`class`,interface_declaration:`interface`,type_alias_declaration:`type`,enum_declaration:`enum`,lexical_declaration:`const`,method_definition:`method`,public_field_definition:`variable`,field_definition:`variable`,function_definition:`function`,class_definition:`class`,expression_statement:`variable`,method_declaration:`method`,constructor_declaration:`method`,field_declaration:`variable`,type_spec:`type`,type_declaration:`type`,const_spec:`const`,var_spec:`variable`,function_item:`function`,struct_item:`class`,enum_item:`enum`,trait_item:`interface`,impl_item:`type`,const_item:`const`,static_item:`variable`,type_item:`type`};async function i(t,r,i=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);return c?a(n.execute(s.rootNode,c,r,`symbols`),r,i):[]}function a(e,t,n){let i=new Map;for(let n of e){let e=n.captures.get(`name`);if(!e)continue;let r=`${e.text}:${(n.captures.get(`node`)?.startLine??e.startLine)+1}`,a=o(n,t),s=i.get(r);(!s||!s.exported&&a)&&i.set(r,{match:n,exported:a})}let a=[];for(let{match:e,exported:o}of i.values()){let i=e.captures.get(`name`),l=e.captures.get(`node`);if(!i)continue;let u=r[l?.nodeType??i.nodeType]??`variable`,d=(l?.startLine??i.startLine)+1,f=s(u,l?.node,t);a.push({name:i.text,kind:f,exported:o,filePath:n,line:d,signature:c(l?.node,f)})}return a}function o(e,t){if(e.captures.has(`exported`))return!0;let n=e.captures.get(`name`)?.text;if(!n)return!1;if(t===`.py`)return!n.startsWith(`_`);if(t===`.go`)return/^[A-Z]/.test(n);if(t===`.java`){let t=e.captures.get(`node`)?.text??``;return/\bpublic\b/.test(t)}return!1}function s(e,t,n){if(n===`.go`&&e===`type`&&t?.children){let e=t.type===`type_declaration`?t.children.flatMap(e=>e.children??[]):t.children;for(let t of e){if(t.type===`interface_type`)return`interface`;if(t.type===`struct_type`)return`class`}}return e}function c(e,t){if(e){if(t===`function`||t===`method`)return l(e);if(t===`class`)return u(e);if(t===`interface`)return f(e)}}function l(e){let t=e.childForFieldName(`parameters`)??e.childForFieldName(`parameter_list`),n=e.childForFieldName(`return_type`)??e.childForFieldName(`type`),r=e.childForFieldName(`result`);if(!t){for(let t of e.children)if(t.type===`formal_parameters`||t.type===`parameter_list`||t.type===`parameters`){let e=t.text;return n&&(e+=n.text),r&&(e+=` ${r.text}`),e.length>120?`${e.slice(0,117)}...`:e}return}let i=t.text;return n&&(i+=n.text),r&&(i+=` ${r.text}`),i.length>120?`${i.slice(0,117)}...`:i}function u(e){let t=e.childForFieldName(`body`)??e.childForFieldName(`field_declaration_list`);if(!t){for(let t of e.children)if(t.type===`struct_type`||t.type===`class_body`)return d(t);return}return d(t)}function d(e){let t=[];for(let n of e.children){if(n.type===`method_definition`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`field_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`function_definition`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}}if(t.length===0)return;let n=t.join(`, `);return n.length>120?`${n.slice(0,117)}...`:n}function f(e){let t=e.childForFieldName(`body`);if(!t){for(let t of e.children)if(t.type===`interface_type`)return p(t);return}return p(t)}function p(e){let t=[];for(let n of e.children){if(n.type===`property_signature`||n.type===`method_signature`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_spec`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`function_signature_item`||n.type===`declaration_list`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}}if(t.length===0)return;let n=t.join(`, `);return n.length>120?`${n.slice(0,117)}...`:n}export{i as extractSymbols};
|