homegraph 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -11
- package/dist/bin/homegraph.js +298 -72
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +117 -11
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +207 -6
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +461 -20
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +19 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +157 -3
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +426 -9
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +32 -1
- package/dist/db/sqlite-adapter.d.ts +24 -17
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +292 -36
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/db/wal-valve.d.ts +119 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +290 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +9 -5
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +210 -19
- package/dist/directory.js.map +1 -1
- package/dist/extraction/arkts-batch-worker.js +3 -2
- package/dist/extraction/arkts-batch-worker.js.map +1 -1
- package/dist/extraction/cfml-extractor.d.ts +107 -0
- package/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/dist/extraction/cfml-extractor.js +494 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/default-ignore.d.ts +39 -0
- package/dist/extraction/default-ignore.d.ts.map +1 -0
- package/dist/extraction/default-ignore.js +221 -0
- package/dist/extraction/default-ignore.js.map +1 -0
- package/dist/extraction/grammars.d.ts +25 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +177 -24
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +52 -14
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +521 -314
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +90 -6
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +1579 -128
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +369 -4
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/cfquery.d.ts +12 -0
- package/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/dist/extraction/languages/cfquery.js +28 -0
- package/dist/extraction/languages/cfquery.js.map +1 -0
- package/dist/extraction/languages/cfscript.d.ts +3 -0
- package/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/dist/extraction/languages/cfscript.js +73 -0
- package/dist/extraction/languages/cfscript.js.map +1 -0
- package/dist/extraction/languages/cobol.d.ts +33 -0
- package/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/dist/extraction/languages/cobol.js +499 -0
- package/dist/extraction/languages/cobol.js.map +1 -0
- package/dist/extraction/languages/erlang.d.ts +3 -0
- package/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/dist/extraction/languages/erlang.js +350 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +16 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/nix.d.ts +3 -0
- package/dist/extraction/languages/nix.d.ts.map +1 -0
- package/dist/extraction/languages/nix.js +294 -0
- package/dist/extraction/languages/nix.js.map +1 -0
- package/dist/extraction/languages/solidity.d.ts +3 -0
- package/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/dist/extraction/languages/solidity.js +293 -0
- package/dist/extraction/languages/solidity.js.map +1 -0
- package/dist/extraction/languages/terraform.d.ts +3 -0
- package/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/dist/extraction/languages/terraform.js +641 -0
- package/dist/extraction/languages/terraform.js.map +1 -0
- package/dist/extraction/languages/vbnet.d.ts +11 -0
- package/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/dist/extraction/languages/vbnet.js +141 -0
- package/dist/extraction/languages/vbnet.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/dist/extraction/mybatis-extractor.js +140 -38
- package/dist/extraction/mybatis-extractor.js.map +1 -1
- package/dist/extraction/parse-pool.d.ts +27 -1
- package/dist/extraction/parse-pool.d.ts.map +1 -1
- package/dist/extraction/parse-pool.js +75 -7
- package/dist/extraction/parse-pool.js.map +1 -1
- package/dist/extraction/parse-worker.js +9 -2
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/store-worker.d.ts +20 -0
- package/dist/extraction/store-worker.d.ts.map +1 -0
- package/dist/extraction/store-worker.js +102 -0
- package/dist/extraction/store-worker.js.map +1 -0
- package/dist/extraction/store-writer.d.ts +48 -0
- package/dist/extraction/store-writer.d.ts.map +1 -0
- package/dist/extraction/store-writer.js +167 -0
- package/dist/extraction/store-writer.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/dist/extraction/tree-sitter-helpers.js +1 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +38 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +801 -10
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +14 -4
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
- package/dist/extraction/wasm-runtime-flags.js +55 -7
- package/dist/extraction/wasm-runtime-flags.js.map +1 -1
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +1 -1
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +74 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +436 -55
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +42 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +97 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/daemon.d.ts +25 -3
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +62 -8
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/dist/mcp/dynamic-boundaries.js +2 -1
- package/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/dist/mcp/early-ppid.d.ts +26 -0
- package/dist/mcp/early-ppid.d.ts.map +1 -0
- package/dist/mcp/early-ppid.js +29 -0
- package/dist/mcp/early-ppid.js.map +1 -0
- package/dist/mcp/engine.d.ts +4 -5
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +27 -1
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +41 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.d.ts +18 -1
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/dist/mcp/liveness-watchdog.js +73 -13
- package/dist/mcp/liveness-watchdog.js.map +1 -1
- package/dist/mcp/memory-budget.d.ts +30 -0
- package/dist/mcp/memory-budget.d.ts.map +1 -0
- package/dist/mcp/memory-budget.js +123 -0
- package/dist/mcp/memory-budget.js.map +1 -0
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +88 -4
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/query-cache.d.ts +35 -4
- package/dist/mcp/query-cache.d.ts.map +1 -1
- package/dist/mcp/query-cache.js +89 -19
- package/dist/mcp/query-cache.js.map +1 -1
- package/dist/mcp/query-pool.d.ts +46 -12
- package/dist/mcp/query-pool.d.ts.map +1 -1
- package/dist/mcp/query-pool.js +100 -23
- package/dist/mcp/query-pool.js.map +1 -1
- package/dist/mcp/query-worker.d.ts +2 -2
- package/dist/mcp/query-worker.js +2 -2
- package/dist/mcp/server-instructions.d.ts +4 -27
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +39 -84
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +14 -0
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +28 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/startup-handshake.d.ts +44 -0
- package/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/dist/mcp/startup-handshake.js +73 -0
- package/dist/mcp/startup-handshake.js.map +1 -0
- package/dist/mcp/tools.d.ts +104 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2432 -217
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +18 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/project-config.d.ts +38 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +101 -2
- package/dist/project-config.js.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.js +178 -146
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +54 -10
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +1299 -257
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/cooperative-yield.d.ts +10 -2
- package/dist/resolution/cooperative-yield.d.ts.map +1 -1
- package/dist/resolution/cooperative-yield.js +6 -4
- package/dist/resolution/cooperative-yield.js.map +1 -1
- package/dist/resolution/frameworks/cics.d.ts +20 -0
- package/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/dist/resolution/frameworks/cics.js +90 -0
- package/dist/resolution/frameworks/cics.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -1
- package/dist/resolution/frameworks/go.js +29 -6
- package/dist/resolution/frameworks/go.js.map +1 -1
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +3 -0
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/dist/resolution/frameworks/java.js +14 -6
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/dist/resolution/frameworks/terraform.js +277 -0
- package/dist/resolution/frameworks/terraform.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/dist/resolution/goframe-synthesizer.js +8 -3
- package/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/dist/resolution/import-resolver.d.ts +9 -3
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +295 -11
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +146 -8
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +1089 -131
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/memory-budget.d.ts +48 -0
- package/dist/resolution/memory-budget.d.ts.map +1 -0
- package/dist/resolution/memory-budget.js +162 -0
- package/dist/resolution/memory-budget.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +12 -4
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +793 -130
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/resolution/resolver-pool.d.ts +106 -0
- package/dist/resolution/resolver-pool.d.ts.map +1 -0
- package/dist/resolution/resolver-pool.js +344 -0
- package/dist/resolution/resolver-pool.js.map +1 -0
- package/dist/resolution/resolver-worker.d.ts +17 -0
- package/dist/resolution/resolver-worker.d.ts.map +1 -0
- package/dist/resolution/resolver-worker.js +141 -0
- package/dist/resolution/resolver-worker.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +1 -1
- package/dist/resolution/strip-comments.d.ts.map +1 -1
- package/dist/resolution/strip-comments.js +49 -0
- package/dist/resolution/strip-comments.js.map +1 -1
- package/dist/resolution/types.d.ts +32 -0
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.d.ts +10 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.js +142 -4
- package/dist/resolution/workspace-packages.js.map +1 -1
- package/dist/search/identifier-segments.d.ts +60 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +176 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-utils.d.ts +201 -0
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +919 -2
- package/dist/search/query-utils.js.map +1 -1
- package/dist/spec/build/diff-parser.d.ts +55 -0
- package/dist/spec/build/diff-parser.d.ts.map +1 -0
- package/dist/spec/build/diff-parser.js +205 -0
- package/dist/spec/build/diff-parser.js.map +1 -0
- package/dist/spec/build/git-scanner.d.ts +93 -0
- package/dist/spec/build/git-scanner.d.ts.map +1 -0
- package/dist/spec/build/git-scanner.js +254 -0
- package/dist/spec/build/git-scanner.js.map +1 -0
- package/dist/spec/build/pipeline.d.ts +54 -0
- package/dist/spec/build/pipeline.d.ts.map +1 -0
- package/dist/spec/build/pipeline.js +170 -0
- package/dist/spec/build/pipeline.js.map +1 -0
- package/dist/spec/build/scan.d.ts +48 -0
- package/dist/spec/build/scan.d.ts.map +1 -0
- package/dist/spec/build/scan.js +89 -0
- package/dist/spec/build/scan.js.map +1 -0
- package/dist/spec/build/scope-resolver.d.ts +50 -0
- package/dist/spec/build/scope-resolver.d.ts.map +1 -0
- package/dist/spec/build/scope-resolver.js +105 -0
- package/dist/spec/build/scope-resolver.js.map +1 -0
- package/dist/spec/build/spec-extractor.d.ts +74 -0
- package/dist/spec/build/spec-extractor.d.ts.map +1 -0
- package/dist/spec/build/spec-extractor.js +344 -0
- package/dist/spec/build/spec-extractor.js.map +1 -0
- package/dist/spec/config.d.ts +35 -1
- package/dist/spec/config.d.ts.map +1 -1
- package/dist/spec/config.js +30 -5
- package/dist/spec/config.js.map +1 -1
- package/dist/spec/db/fts.d.ts.map +1 -1
- package/dist/spec/db/fts.js +19 -50
- package/dist/spec/db/fts.js.map +1 -1
- package/dist/spec/db/index.d.ts +5 -3
- package/dist/spec/db/index.d.ts.map +1 -1
- package/dist/spec/db/index.js +16 -1
- package/dist/spec/db/index.js.map +1 -1
- package/dist/spec/db/persist.d.ts +45 -0
- package/dist/spec/db/persist.d.ts.map +1 -0
- package/dist/spec/db/persist.js +66 -0
- package/dist/spec/db/persist.js.map +1 -0
- package/dist/spec/db/relations.d.ts +80 -1
- package/dist/spec/db/relations.d.ts.map +1 -1
- package/dist/spec/db/relations.js +175 -4
- package/dist/spec/db/relations.js.map +1 -1
- package/dist/spec/db/schema.d.ts +4 -0
- package/dist/spec/db/schema.d.ts.map +1 -1
- package/dist/spec/db/schema.js +4 -0
- package/dist/spec/db/schema.js.map +1 -1
- package/dist/spec/db/schema.sql +5 -1
- package/dist/spec/db/spec-node.d.ts +5 -0
- package/dist/spec/db/spec-node.d.ts.map +1 -1
- package/dist/spec/db/spec-node.js +11 -5
- package/dist/spec/db/spec-node.js.map +1 -1
- package/dist/spec/db/sql-utils.d.ts +11 -0
- package/dist/spec/db/sql-utils.d.ts.map +1 -0
- package/dist/spec/db/sql-utils.js +19 -0
- package/dist/spec/db/sql-utils.js.map +1 -0
- package/dist/spec/evolve/cluster-context.d.ts +30 -0
- package/dist/spec/evolve/cluster-context.d.ts.map +1 -0
- package/dist/spec/evolve/cluster-context.js +78 -0
- package/dist/spec/evolve/cluster-context.js.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts +51 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.js +88 -0
- package/dist/spec/evolve/commit-spec-analyzer.js.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts +53 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.js +93 -0
- package/dist/spec/evolve/commit-spec-persister.js.map +1 -0
- package/dist/spec/evolve/impact-locator.d.ts +23 -7
- package/dist/spec/evolve/impact-locator.d.ts.map +1 -1
- package/dist/spec/evolve/impact-locator.js +58 -14
- package/dist/spec/evolve/impact-locator.js.map +1 -1
- package/dist/spec/evolve/pipeline.d.ts +62 -25
- package/dist/spec/evolve/pipeline.d.ts.map +1 -1
- package/dist/spec/evolve/pipeline.js +436 -457
- package/dist/spec/evolve/pipeline.js.map +1 -1
- package/dist/spec/evolve/spec-rewriter.d.ts +13 -13
- package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -1
- package/dist/spec/evolve/spec-rewriter.js +45 -45
- package/dist/spec/evolve/spec-rewriter.js.map +1 -1
- package/dist/spec/git/commits.d.ts +85 -0
- package/dist/spec/git/commits.d.ts.map +1 -0
- package/dist/spec/git/commits.js +218 -0
- package/dist/spec/git/commits.js.map +1 -0
- package/dist/spec/git/exec.d.ts +13 -0
- package/dist/spec/git/exec.d.ts.map +1 -0
- package/dist/spec/git/exec.js +19 -0
- package/dist/spec/git/exec.js.map +1 -0
- package/dist/spec/git/index.d.ts +9 -0
- package/dist/spec/git/index.d.ts.map +1 -0
- package/dist/spec/git/index.js +22 -0
- package/dist/spec/git/index.js.map +1 -0
- package/dist/spec/git-utils.d.ts +8 -0
- package/dist/spec/git-utils.d.ts.map +1 -0
- package/dist/spec/git-utils.js +14 -0
- package/dist/spec/git-utils.js.map +1 -0
- package/dist/spec/graph/index.d.ts +8 -0
- package/dist/spec/graph/index.d.ts.map +1 -0
- package/dist/spec/graph/index.js +17 -0
- package/dist/spec/graph/index.js.map +1 -0
- package/dist/spec/graph/queries.d.ts +6 -35
- package/dist/spec/graph/queries.d.ts.map +1 -1
- package/dist/spec/graph/queries.js +71 -248
- package/dist/spec/graph/queries.js.map +1 -1
- package/dist/spec/llm/agent-client.d.ts +59 -0
- package/dist/spec/llm/agent-client.d.ts.map +1 -0
- package/dist/spec/llm/agent-client.js +213 -0
- package/dist/spec/llm/agent-client.js.map +1 -0
- package/dist/spec/llm/agents/claude-code.d.ts +32 -0
- package/dist/spec/llm/agents/claude-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/claude-code.js +125 -0
- package/dist/spec/llm/agents/claude-code.js.map +1 -0
- package/dist/spec/llm/agents/codex.d.ts +32 -0
- package/dist/spec/llm/agents/codex.d.ts.map +1 -0
- package/dist/spec/llm/agents/codex.js +145 -0
- package/dist/spec/llm/agents/codex.js.map +1 -0
- package/dist/spec/llm/agents/detect-utils.d.ts +28 -0
- package/dist/spec/llm/agents/detect-utils.d.ts.map +1 -0
- package/dist/spec/llm/agents/detect-utils.js +91 -0
- package/dist/spec/llm/agents/detect-utils.js.map +1 -0
- package/dist/spec/llm/agents/deveco-code.d.ts +33 -0
- package/dist/spec/llm/agents/deveco-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/deveco-code.js +165 -0
- package/dist/spec/llm/agents/deveco-code.js.map +1 -0
- package/dist/spec/llm/agents/index.d.ts +31 -0
- package/dist/spec/llm/agents/index.d.ts.map +1 -0
- package/dist/spec/llm/agents/index.js +65 -0
- package/dist/spec/llm/agents/index.js.map +1 -0
- package/dist/spec/llm/agents/types.d.ts +76 -0
- package/dist/spec/llm/agents/types.d.ts.map +1 -0
- package/dist/spec/llm/agents/types.js +15 -0
- package/dist/spec/llm/agents/types.js.map +1 -0
- package/dist/spec/llm/client.d.ts +31 -11
- package/dist/spec/llm/client.d.ts.map +1 -1
- package/dist/spec/llm/client.js +143 -81
- package/dist/spec/llm/client.js.map +1 -1
- package/dist/spec/llm/factory.d.ts +41 -0
- package/dist/spec/llm/factory.d.ts.map +1 -0
- package/dist/spec/llm/factory.js +80 -0
- package/dist/spec/llm/factory.js.map +1 -0
- package/dist/spec/llm/prompts.d.ts +24 -8
- package/dist/spec/llm/prompts.d.ts.map +1 -1
- package/dist/spec/llm/prompts.js +100 -50
- package/dist/spec/llm/prompts.js.map +1 -1
- package/dist/spec/llm/retry.d.ts +53 -0
- package/dist/spec/llm/retry.d.ts.map +1 -0
- package/dist/spec/llm/retry.js +153 -0
- package/dist/spec/llm/retry.js.map +1 -0
- package/dist/spec/mine/clusterer.d.ts +63 -0
- package/dist/spec/mine/clusterer.d.ts.map +1 -0
- package/dist/spec/mine/clusterer.js +904 -0
- package/dist/spec/mine/clusterer.js.map +1 -0
- package/dist/spec/mine/clustering/features.d.ts +38 -0
- package/dist/spec/mine/clustering/features.d.ts.map +1 -0
- package/dist/spec/mine/clustering/features.js +108 -0
- package/dist/spec/mine/clustering/features.js.map +1 -0
- package/dist/spec/mine/clustering/index.d.ts +62 -0
- package/dist/spec/mine/clustering/index.d.ts.map +1 -0
- package/dist/spec/mine/clustering/index.js +259 -0
- package/dist/spec/mine/clustering/index.js.map +1 -0
- package/dist/spec/mine/clustering/leiden.d.ts +61 -0
- package/dist/spec/mine/clustering/leiden.d.ts.map +1 -0
- package/dist/spec/mine/clustering/leiden.js +489 -0
- package/dist/spec/mine/clustering/leiden.js.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts +22 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.js +98 -0
- package/dist/spec/mine/clustering/text-similarity.js.map +1 -0
- package/dist/spec/mine/generator.d.ts +54 -0
- package/dist/spec/mine/generator.d.ts.map +1 -0
- package/dist/spec/mine/generator.js +267 -0
- package/dist/spec/mine/generator.js.map +1 -0
- package/dist/spec/mine/persist.d.ts +37 -0
- package/dist/spec/mine/persist.d.ts.map +1 -0
- package/dist/spec/mine/persist.js +170 -0
- package/dist/spec/mine/persist.js.map +1 -0
- package/dist/spec/mine/pipeline.d.ts +41 -0
- package/dist/spec/mine/pipeline.d.ts.map +1 -0
- package/dist/spec/mine/pipeline.js +236 -0
- package/dist/spec/mine/pipeline.js.map +1 -0
- package/dist/spec/mine/progress-handler.d.ts +22 -0
- package/dist/spec/mine/progress-handler.d.ts.map +1 -0
- package/dist/spec/mine/progress-handler.js +108 -0
- package/dist/spec/mine/progress-handler.js.map +1 -0
- package/dist/spec/mine/progress.d.ts +23 -0
- package/dist/spec/mine/progress.d.ts.map +1 -0
- package/dist/spec/mine/progress.js +12 -0
- package/dist/spec/mine/progress.js.map +1 -0
- package/dist/spec/mine/scanner.d.ts +59 -0
- package/dist/spec/mine/scanner.d.ts.map +1 -0
- package/dist/spec/mine/scanner.js +383 -0
- package/dist/spec/mine/scanner.js.map +1 -0
- package/dist/spec/types.d.ts +32 -0
- package/dist/spec/types.d.ts.map +1 -1
- package/dist/spec/ui/index.d.ts +9 -0
- package/dist/spec/ui/index.d.ts.map +1 -0
- package/dist/spec/ui/index.js +16 -0
- package/dist/spec/ui/index.js.map +1 -0
- package/dist/spec/ui/progress-handler.d.ts +33 -0
- package/dist/spec/ui/progress-handler.d.ts.map +1 -0
- package/dist/spec/ui/progress-handler.js +132 -0
- package/dist/spec/ui/progress-handler.js.map +1 -0
- package/dist/spec/ui/progress.d.ts +24 -0
- package/dist/spec/ui/progress.d.ts.map +1 -0
- package/dist/spec/ui/progress.js +13 -0
- package/dist/spec/ui/progress.js.map +1 -0
- package/dist/spec/utils/fs.d.ts +45 -0
- package/dist/spec/utils/fs.d.ts.map +1 -0
- package/dist/spec/utils/fs.js +163 -0
- package/dist/spec/utils/fs.js.map +1 -0
- package/dist/spec/utils/index.d.ts +12 -0
- package/dist/spec/utils/index.d.ts.map +1 -0
- package/dist/spec/utils/index.js +26 -0
- package/dist/spec/utils/index.js.map +1 -0
- package/dist/spec/utils/meta.d.ts +32 -0
- package/dist/spec/utils/meta.d.ts.map +1 -0
- package/dist/spec/utils/meta.js +122 -0
- package/dist/spec/utils/meta.js.map +1 -0
- package/dist/spec/utils/truncate.d.ts +86 -0
- package/dist/spec/utils/truncate.d.ts.map +1 -0
- package/dist/spec/utils/truncate.js +172 -0
- package/dist/spec/utils/truncate.js.map +1 -0
- package/dist/spec/utils.d.ts +4 -16
- package/dist/spec/utils.d.ts.map +1 -1
- package/dist/spec/utils.js +6 -58
- package/dist/spec/utils.js.map +1 -1
- package/dist/sync/git-hooks.d.ts.map +1 -1
- package/dist/sync/git-hooks.js +2 -0
- package/dist/sync/git-hooks.js.map +1 -1
- package/dist/sync/watcher.d.ts +35 -6
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +127 -17
- package/dist/sync/watcher.js.map +1 -1
- package/dist/sync/worktree.d.ts.map +1 -1
- package/dist/sync/worktree.js +5 -0
- package/dist/sync/worktree.js.map +1 -1
- package/dist/telemetry/index.js +3 -3
- package/dist/telemetry/index.js.map +1 -1
- package/dist/types.d.ts +22 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/dist/upgrade/index.d.ts +32 -0
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +162 -14
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/remove-binary.d.ts +87 -0
- package/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/dist/upgrade/remove-binary.js +289 -0
- package/dist/upgrade/remove-binary.js.map +1 -0
- package/dist/upgrade/update-check.d.ts +92 -0
- package/dist/upgrade/update-check.d.ts.map +1 -0
- package/dist/upgrade/update-check.js +258 -0
- package/dist/upgrade/update-check.js.map +1 -0
- package/package.json +6 -2
- package/scripts/agent-eval/run-all.sh +6 -0
- package/scripts/build-bundle.sh +5 -0
- package/scripts/npm-shim.js +8 -1
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/data/agents.json +0 -109
- package/scripts/exp_boundary_eval/data/experiments.json +0 -140
- package/scripts/qa_eval/README.md +0 -407
- package/scripts/qa_eval/_test_deveco_probe.py +0 -41
- package/scripts/qa_eval/agent_runner.py +0 -526
- package/scripts/qa_eval/data/.gitignore +0 -4
- package/scripts/qa_eval/data/test-set.jsonl +0 -2
- package/scripts/qa_eval/eval_metrics.py +0 -274
- package/scripts/qa_eval/external_agent.py +0 -976
- package/scripts/qa_eval/llm_config.py +0 -92
- package/scripts/qa_eval/memory_monitor.py +0 -132
- package/scripts/qa_eval/my_answer_accuracy.py +0 -187
- package/scripts/qa_eval/requirements.txt +0 -2
- package/scripts/qa_eval/run_pipeline.py +0 -804
- package/scripts/qa_eval/stats_efficiency.py +0 -279
- package/scripts/qa_eval/stats_scores.py +0 -207
package/dist/spec/config.js
CHANGED
|
@@ -34,11 +34,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.DEFAULT_CONFIG = void 0;
|
|
37
|
+
exports.createMineConfig = createMineConfig;
|
|
37
38
|
exports.loadSpecConfig = loadSpecConfig;
|
|
38
39
|
/**
|
|
39
40
|
* Spec configuration module — replaces `commit4spec/utils/config.py`.
|
|
40
41
|
*
|
|
41
|
-
* Loads spec
|
|
42
|
+
* Loads spec build/evolve configuration from `${SPEC_DATA_DIR}/configs.json`
|
|
42
43
|
* within a repository. Discovery and commitScope sections fall back to code
|
|
43
44
|
* defaults; the `llm` section must be explicitly configured by the user —
|
|
44
45
|
* there are no hard-coded LLM defaults.
|
|
@@ -66,6 +67,23 @@ const fs = __importStar(require("fs"));
|
|
|
66
67
|
const path = __importStar(require("path"));
|
|
67
68
|
const errors_1 = require("../errors");
|
|
68
69
|
const utils_1 = require("./utils");
|
|
70
|
+
/**
|
|
71
|
+
* Build a MineConfig from raw option values (typically from CLI parsing).
|
|
72
|
+
*
|
|
73
|
+
* @param options - Raw option values from the CLI action handler.
|
|
74
|
+
* @param llmConfigured - Whether a valid LLM config was loaded. When false,
|
|
75
|
+
* skipLlm is forced to true regardless of the option value.
|
|
76
|
+
*/
|
|
77
|
+
function createMineConfig(options, llmConfigured) {
|
|
78
|
+
return {
|
|
79
|
+
limit: options.limit,
|
|
80
|
+
threshold: options.threshold,
|
|
81
|
+
maxCluster: options.maxCluster,
|
|
82
|
+
outputDir: options.outputDir,
|
|
83
|
+
template: options.template,
|
|
84
|
+
skipLlm: options.skipLlm || !llmConfigured,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
69
87
|
// ---------------------------------------------------------------------------
|
|
70
88
|
// Defaults (match commit4spec/utils/config.py exactly)
|
|
71
89
|
// ---------------------------------------------------------------------------
|
|
@@ -80,7 +98,6 @@ exports.DEFAULT_CONFIG = Object.freeze({
|
|
|
80
98
|
'spec-{spec_dir}.md',
|
|
81
99
|
]),
|
|
82
100
|
supplementaryGlobs: Object.freeze(['logic/**/*.md', 'design/**/*.md']),
|
|
83
|
-
commitInfoCandidates: Object.freeze(['commit-info.md']),
|
|
84
101
|
}),
|
|
85
102
|
commitScope: Object.freeze({
|
|
86
103
|
scopeRegex: '^(?:feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)\\((?:review\\/)?(spec\\d+)\\)',
|
|
@@ -183,7 +200,6 @@ function normalizeDiscovery(val, file) {
|
|
|
183
200
|
return {
|
|
184
201
|
primaryDocCandidates: normalizeStringArray(val.primaryDocCandidates, def.primaryDocCandidates, 'discovery.primaryDocCandidates', file),
|
|
185
202
|
supplementaryGlobs: normalizeStringArray(val.supplementaryGlobs, def.supplementaryGlobs, 'discovery.supplementaryGlobs', file),
|
|
186
|
-
commitInfoCandidates: normalizeStringArray(val.commitInfoCandidates, def.commitInfoCandidates, 'discovery.commitInfoCandidates', file),
|
|
187
203
|
};
|
|
188
204
|
}
|
|
189
205
|
function normalizeCommitScope(val, file) {
|
|
@@ -231,7 +247,7 @@ const LLM_CONFIG_EXAMPLE = [
|
|
|
231
247
|
*
|
|
232
248
|
* Optional fields with defaults:
|
|
233
249
|
* - `temperature`: defaults to 0.2
|
|
234
|
-
* - `maxTokens`: defaults to
|
|
250
|
+
* - `maxTokens`: defaults to 20000
|
|
235
251
|
*
|
|
236
252
|
* Returns a valid LLMConfig, or `null` if the user did not provide an `llm`
|
|
237
253
|
* section at all (no error in that case — callers decide how to handle it).
|
|
@@ -269,7 +285,16 @@ function validateLLM(val, file) {
|
|
|
269
285
|
: 0.2,
|
|
270
286
|
maxTokens: typeof val.maxTokens === 'number' && Number.isInteger(val.maxTokens) && val.maxTokens > 0
|
|
271
287
|
? val.maxTokens
|
|
272
|
-
:
|
|
288
|
+
: 20000,
|
|
289
|
+
maxRetries: typeof val.maxRetries === 'number' && Number.isInteger(val.maxRetries) && val.maxRetries >= 0
|
|
290
|
+
? val.maxRetries
|
|
291
|
+
: 3,
|
|
292
|
+
retryBaseDelayMs: typeof val.retryBaseDelayMs === 'number' && val.retryBaseDelayMs > 0
|
|
293
|
+
? val.retryBaseDelayMs
|
|
294
|
+
: 1000,
|
|
295
|
+
retryMaxDelayMs: typeof val.retryMaxDelayMs === 'number' && val.retryMaxDelayMs > 0
|
|
296
|
+
? val.retryMaxDelayMs
|
|
297
|
+
: 30000,
|
|
273
298
|
};
|
|
274
299
|
}
|
|
275
300
|
// ---------------------------------------------------------------------------
|
package/dist/spec/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/spec/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/spec/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FA,4CAmBC;AAwED,wCAkDC;AA3OD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,sCAAoC;AACpC,mCAAwC;AAyDxC;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,OAOC,EACD,aAAsB;IAEtB,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,aAAa;KAC3C,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAEjE,QAAA,cAAc,GAAe,MAAM,CAAC,MAAM,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC;YAClC,SAAS;YACT,WAAW;YACX,SAAS;YACT,WAAW;YACX,eAAe;YACf,oBAAoB;SACrB,CAAC;QACF,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;KACvE,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,UAAU,EACR,iGAAiG;QACnG,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;YACzC,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;SACpB,CAAC;KACH,CAAC;IACF,GAAG,EAAE,IAAI;CACV,CAAe,CAAC;AAEjB,kDAAkD;AAClD,MAAM,WAAW,GAAG,GAAG,qBAAa,eAAe,CAAC;AAEpD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,SAAS,CAAC,MAAW,EAAE,MAAW;IACzC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvE,MAAM,GAAG,GACP,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5D,CAAC,CAAC,EAAE,GAAI,MAA8B,EAAE;QACxC,CAAC,CAAC,EAAE,CAAC;IAET,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE9C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;QAC5E,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,gBAAO,EAAC,YAAY,WAAW,kBAAkB,EAAE;YACjD,IAAI;YACJ,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,IAAA,gBAAO,EACL,YAAY,WAAW,yCAAyC,EAChE,EAAE,IAAI,EAAE,CACT,CAAC;QACF,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,iFAAiF;IACjF,iEAAiE;IACjE,MAAM,MAAM,GAAG,SAAS,CAAC,sBAAc,EAAE,MAAM,CAAe,CAAC;IAE/D,iDAAiD;IACjD,MAAM,CAAC,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAEpE,iFAAiF;IACjF,MAAM,CAAC,GAAG,GAAG,WAAW,CAAE,MAAkC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExE,8CAA8C;IAC9C,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,SAAS,kBAAkB,CACzB,GAAQ,EACR,IAAY;IAEZ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAA,gBAAO,EACL,2BAA2B,WAAW,qBAAqB,EAC3D,EAAE,IAAI,EAAE,CACT,CAAC;QACF,OAAO,EAAE,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,sBAAc,CAAC,SAAS,CAAC;IACrC,OAAO;QACL,oBAAoB,EAAE,oBAAoB,CACxC,GAAG,CAAC,oBAAoB,EACxB,GAAG,CAAC,oBAAoB,EACxB,gCAAgC,EAChC,IAAI,CACL;QACD,kBAAkB,EAAE,oBAAoB,CACtC,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,kBAAkB,EACtB,8BAA8B,EAC9B,IAAI,CACL;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAQ,EACR,IAAY;IAEZ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAA,gBAAO,EACL,6BAA6B,WAAW,qBAAqB,EAC7D,EAAE,IAAI,EAAE,CACT,CAAC;QACF,OAAO,EAAE,GAAG,sBAAc,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,sBAAc,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;IACnG,CAAC;IAED,MAAM,GAAG,GAAG,sBAAc,CAAC,WAAW,CAAC;IACvC,MAAM,YAAY,GAChB,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACjF,CAAC,CAAC,GAAG,CAAC,SAAS;QACf,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,UAAU,EACR,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC7D,CAAC,CAAC,GAAG,CAAC,UAAU;YAChB,CAAC,CAAC,GAAG,CAAC,UAAU;QACpB,SAAS,EAAE;YACT,aAAa,EAAE,oBAAoB,CACjC,YAAY,CAAC,aAAa,EAC1B,GAAG,CAAC,SAAS,CAAC,aAAa,EAC3B,qCAAqC,EACrC,IAAI,CACL;YACD,SAAS,EACP,OAAO,YAAY,CAAC,SAAS,KAAK,SAAS;gBACzC,CAAC,CAAC,YAAY,CAAC,SAAS;gBACxB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS;YAC7B,aAAa,EACX,OAAO,YAAY,CAAC,aAAa,KAAK,SAAS;gBAC7C,CAAC,CAAC,YAAY,CAAC,aAAa;gBAC5B,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa;SAClC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,EAAE;IACF,6BAA6B;IAC7B,GAAG;IACH,YAAY;IACZ,2BAA2B;IAC3B,oCAAoC;IACpC,uBAAuB;IACvB,KAAK;IACL,GAAG;CACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;;;;;;GAcG;AACH,SAAS,WAAW,CAAC,GAAQ,EAAE,IAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,gDAAgD;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,qCAAqC;YACpE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,yCAAyC,kBAAkB,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,IAAI;YAClD,iFAAiF,kBAAkB,EAAE,CACtG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAiC;QAC3C,MAAM,EAAE,SAAS;QACjB,SAAS;QACT,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClE,WAAW,EACT,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YAC5D,CAAC,CAAC,GAAG,CAAC,WAAW;YACjB,CAAC,CAAC,GAAG;QACT,SAAS,EACP,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;YACvF,CAAC,CAAC,GAAG,CAAC,SAAS;YACf,CAAC,CAAC,KAAK;QACX,UAAU,EACR,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC;YAC3F,CAAC,CAAC,GAAG,CAAC,UAAU;YAChB,CAAC,CAAC,CAAC;QACP,gBAAgB,EACd,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ,IAAI,GAAG,CAAC,gBAAgB,GAAG,CAAC;YAClE,CAAC,CAAC,GAAG,CAAC,gBAAgB;YACtB,CAAC,CAAC,IAAI;QACV,eAAe,EACb,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC;YAChE,CAAC,CAAC,GAAG,CAAC,eAAe;YACrB,CAAC,CAAC,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,GAAY,EACZ,UAA6B,EAC7B,KAAa,EACb,IAAY;IAEZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAA,gBAAO,EACL,aAAa,KAAK,cAAc,WAAW,yCAAyC,EACpF,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAc,CAAC,CAAe,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fts.d.ts","sourceRoot":"","sources":["../../../src/spec/db/fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"fts.d.ts","sourceRoot":"","sources":["../../../src/spec/db/fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAW5C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQpD;AAuLD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,gBAAgB,EAAE,CAsCpB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,MAAM,EAAE,CAqBV"}
|
package/dist/spec/db/fts.js
CHANGED
|
@@ -35,6 +35,8 @@ exports.segmentCjk = segmentCjk;
|
|
|
35
35
|
exports.escapeFtsQuery = escapeFtsQuery;
|
|
36
36
|
exports.searchSpecs = searchSpecs;
|
|
37
37
|
exports.searchCodeFragments = searchCodeFragments;
|
|
38
|
+
const spec_node_1 = require("./spec-node");
|
|
39
|
+
const sql_utils_1 = require("./sql-utils");
|
|
38
40
|
// ===========================================================================
|
|
39
41
|
// CJK Segmentation
|
|
40
42
|
// ===========================================================================
|
|
@@ -129,20 +131,13 @@ function searchSpecsFts(db, query, limit, oversample = 3) {
|
|
|
129
131
|
}
|
|
130
132
|
const scored = [];
|
|
131
133
|
for (const row of rows) {
|
|
132
|
-
let subtitles;
|
|
133
|
-
try {
|
|
134
|
-
subtitles = JSON.parse(row.subtitles || '[]');
|
|
135
|
-
}
|
|
136
|
-
catch {
|
|
137
|
-
subtitles = [];
|
|
138
|
-
}
|
|
139
134
|
const boost = scoreTitleMatch(row.title, query);
|
|
140
135
|
scored.push({
|
|
141
136
|
score: boost,
|
|
142
137
|
result: {
|
|
143
138
|
id: row.id,
|
|
144
139
|
title: row.title,
|
|
145
|
-
subtitles,
|
|
140
|
+
subtitles: (0, spec_node_1.parseSubtitlesJson)(row.subtitles),
|
|
146
141
|
_score: boost,
|
|
147
142
|
_method: 'fts5',
|
|
148
143
|
},
|
|
@@ -162,8 +157,7 @@ function searchSpecsFts(db, query, limit, oversample = 3) {
|
|
|
162
157
|
*/
|
|
163
158
|
function searchSpecsLike(db, query, limit, excludeIds) {
|
|
164
159
|
// Escape LIKE metacharacters so '%' and '_' are treated as literals
|
|
165
|
-
const
|
|
166
|
-
const likePat = `%${escaped}%`;
|
|
160
|
+
const likePat = `%${(0, sql_utils_1.escapeLike)(query)}%`;
|
|
167
161
|
const rows = db
|
|
168
162
|
.prepare(`SELECT id, title, subtitles FROM spec_nodes
|
|
169
163
|
WHERE title LIKE ? ESCAPE '\\' OR subtitles LIKE ? ESCAPE '\\'
|
|
@@ -173,13 +167,6 @@ function searchSpecsLike(db, query, limit, excludeIds) {
|
|
|
173
167
|
for (const row of rows) {
|
|
174
168
|
if (excludeIds.has(row.id))
|
|
175
169
|
continue;
|
|
176
|
-
let subtitles;
|
|
177
|
-
try {
|
|
178
|
-
subtitles = JSON.parse(row.subtitles || '[]');
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
subtitles = [];
|
|
182
|
-
}
|
|
183
170
|
const [score, tier] = likeScore(row.title, query);
|
|
184
171
|
scored.push({
|
|
185
172
|
score,
|
|
@@ -187,7 +174,7 @@ function searchSpecsLike(db, query, limit, excludeIds) {
|
|
|
187
174
|
result: {
|
|
188
175
|
id: row.id,
|
|
189
176
|
title: row.title,
|
|
190
|
-
subtitles,
|
|
177
|
+
subtitles: (0, spec_node_1.parseSubtitlesJson)(row.subtitles),
|
|
191
178
|
_score: score,
|
|
192
179
|
_method: 'like',
|
|
193
180
|
_tier: tier,
|
|
@@ -212,22 +199,13 @@ function discoveryFallback(db, limit) {
|
|
|
212
199
|
const rows = db
|
|
213
200
|
.prepare('SELECT id, title, subtitles FROM spec_nodes ORDER BY timestamp DESC LIMIT ?')
|
|
214
201
|
.all(limit);
|
|
215
|
-
return rows.map((row) => {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
return {
|
|
224
|
-
id: row.id,
|
|
225
|
-
title: row.title,
|
|
226
|
-
subtitles,
|
|
227
|
-
_score: 0.0,
|
|
228
|
-
_method: 'discovery',
|
|
229
|
-
};
|
|
230
|
-
});
|
|
202
|
+
return rows.map((row) => ({
|
|
203
|
+
id: row.id,
|
|
204
|
+
title: row.title,
|
|
205
|
+
subtitles: (0, spec_node_1.parseSubtitlesJson)(row.subtitles),
|
|
206
|
+
_score: 0.0,
|
|
207
|
+
_method: 'discovery',
|
|
208
|
+
}));
|
|
231
209
|
}
|
|
232
210
|
// ===========================================================================
|
|
233
211
|
// Combined Search (public API)
|
|
@@ -251,22 +229,13 @@ function searchSpecs(db, query, limit = 10) {
|
|
|
251
229
|
const rows = db
|
|
252
230
|
.prepare('SELECT id, title, subtitles FROM spec_nodes ORDER BY id LIMIT ?')
|
|
253
231
|
.all(limit);
|
|
254
|
-
return rows.map((row) => {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
return {
|
|
263
|
-
id: row.id,
|
|
264
|
-
title: row.title,
|
|
265
|
-
subtitles,
|
|
266
|
-
_score: 0.0,
|
|
267
|
-
_method: 'all',
|
|
268
|
-
};
|
|
269
|
-
});
|
|
232
|
+
return rows.map((row) => ({
|
|
233
|
+
id: row.id,
|
|
234
|
+
title: row.title,
|
|
235
|
+
subtitles: (0, spec_node_1.parseSubtitlesJson)(row.subtitles),
|
|
236
|
+
_score: 0.0,
|
|
237
|
+
_method: 'all',
|
|
238
|
+
}));
|
|
270
239
|
}
|
|
271
240
|
// Stage 1: FTS5 weighted search
|
|
272
241
|
const ftsResults = searchSpecsFts(db, query, limit);
|
package/dist/spec/db/fts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fts.js","sourceRoot":"","sources":["../../../src/spec/db/fts.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;
|
|
1
|
+
{"version":3,"file":"fts.js","sourceRoot":"","sources":["../../../src/spec/db/fts.ts"],"names":[],"mappings":"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"}
|
package/dist/spec/db/index.d.ts
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
* search so consumers can `import { ... } from '../spec/db'`.
|
|
6
6
|
*/
|
|
7
7
|
export { initSpecSchema, getCurrentSpecVersion, runSpecMigrations, CURRENT_SPEC_SCHEMA_VERSION } from './schema';
|
|
8
|
-
export { insertSpecNode, findSpecById, updateSpecStatus, updateSpecVersion, deleteSpec, listAllSpecs, countSpecsByStatus, } from './spec-node';
|
|
8
|
+
export { insertSpecNode, findSpecById, updateSpecStatus, updateSpecVersion, deleteSpec, listAllSpecs, countSpecsByStatus, parseSubtitlesJson, } from './spec-node';
|
|
9
9
|
export { insertCommitNode, findCommitByHash, listAllCommits, countCommits, } from './commit-node';
|
|
10
10
|
export { insertCodeFragment, findFragmentById, findFragmentsByCommit, countFragments, } from './fragment-node';
|
|
11
|
-
export { insertSpecCommitRelation, findCommitsBySpec, transferSpecCommitRelations, insertCommitFragmentRelation, insertSpecSpecRelation, deleteSimilarToRelations, transferSpecSpecRelations, countAllRelations, } from './relations';
|
|
12
|
-
export { searchSpecs, escapeFtsQuery, segmentCjk, } from './fts';
|
|
11
|
+
export { insertSpecCommitRelation, findCommitsBySpec, transferSpecCommitRelations, insertCommitFragmentRelation, insertSpecSpecRelation, deleteSimilarToRelations, transferSpecSpecRelations, countAllRelations, findSpecIdsByFragmentPath, findSpecsByFilePath, FindSpecsByFilePathResult, findSpecCandidatesByFilePath, SpecCandidate, findSpecIdsByFragmentIds, findFragmentPathsBySpec, findActiveSpecIds, } from './relations';
|
|
12
|
+
export { searchSpecs, searchCodeFragments, escapeFtsQuery, segmentCjk, } from './fts';
|
|
13
|
+
export { escapeLike } from './sql-utils';
|
|
14
|
+
export { upsertSpecFromMetadata, persistCommitFragments, SpecMetadataInput, FragmentInput, } from './persist';
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spec/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGjH,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spec/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGjH,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,UAAU,GACX,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,WAAW,CAAC"}
|
package/dist/spec/db/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* search so consumers can `import { ... } from '../spec/db'`.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.segmentCjk = exports.escapeFtsQuery = exports.searchSpecs = exports.countAllRelations = exports.transferSpecSpecRelations = exports.deleteSimilarToRelations = exports.insertSpecSpecRelation = exports.insertCommitFragmentRelation = exports.transferSpecCommitRelations = exports.findCommitsBySpec = exports.insertSpecCommitRelation = exports.countFragments = exports.findFragmentsByCommit = exports.findFragmentById = exports.insertCodeFragment = exports.countCommits = exports.listAllCommits = exports.findCommitByHash = exports.insertCommitNode = exports.countSpecsByStatus = exports.listAllSpecs = exports.deleteSpec = exports.updateSpecVersion = exports.updateSpecStatus = exports.findSpecById = exports.insertSpecNode = exports.CURRENT_SPEC_SCHEMA_VERSION = exports.runSpecMigrations = exports.getCurrentSpecVersion = exports.initSpecSchema = void 0;
|
|
9
|
+
exports.persistCommitFragments = exports.upsertSpecFromMetadata = exports.escapeLike = exports.segmentCjk = exports.escapeFtsQuery = exports.searchCodeFragments = exports.searchSpecs = exports.findActiveSpecIds = exports.findFragmentPathsBySpec = exports.findSpecIdsByFragmentIds = exports.findSpecCandidatesByFilePath = exports.findSpecsByFilePath = exports.findSpecIdsByFragmentPath = exports.countAllRelations = exports.transferSpecSpecRelations = exports.deleteSimilarToRelations = exports.insertSpecSpecRelation = exports.insertCommitFragmentRelation = exports.transferSpecCommitRelations = exports.findCommitsBySpec = exports.insertSpecCommitRelation = exports.countFragments = exports.findFragmentsByCommit = exports.findFragmentById = exports.insertCodeFragment = exports.countCommits = exports.listAllCommits = exports.findCommitByHash = exports.insertCommitNode = exports.parseSubtitlesJson = exports.countSpecsByStatus = exports.listAllSpecs = exports.deleteSpec = exports.updateSpecVersion = exports.updateSpecStatus = exports.findSpecById = exports.insertSpecNode = exports.CURRENT_SPEC_SCHEMA_VERSION = exports.runSpecMigrations = exports.getCurrentSpecVersion = exports.initSpecSchema = void 0;
|
|
10
10
|
// Schema
|
|
11
11
|
var schema_1 = require("./schema");
|
|
12
12
|
Object.defineProperty(exports, "initSpecSchema", { enumerable: true, get: function () { return schema_1.initSpecSchema; } });
|
|
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "updateSpecVersion", { enumerable: true, get: fun
|
|
|
22
22
|
Object.defineProperty(exports, "deleteSpec", { enumerable: true, get: function () { return spec_node_1.deleteSpec; } });
|
|
23
23
|
Object.defineProperty(exports, "listAllSpecs", { enumerable: true, get: function () { return spec_node_1.listAllSpecs; } });
|
|
24
24
|
Object.defineProperty(exports, "countSpecsByStatus", { enumerable: true, get: function () { return spec_node_1.countSpecsByStatus; } });
|
|
25
|
+
Object.defineProperty(exports, "parseSubtitlesJson", { enumerable: true, get: function () { return spec_node_1.parseSubtitlesJson; } });
|
|
25
26
|
var commit_node_1 = require("./commit-node");
|
|
26
27
|
Object.defineProperty(exports, "insertCommitNode", { enumerable: true, get: function () { return commit_node_1.insertCommitNode; } });
|
|
27
28
|
Object.defineProperty(exports, "findCommitByHash", { enumerable: true, get: function () { return commit_node_1.findCommitByHash; } });
|
|
@@ -42,9 +43,23 @@ Object.defineProperty(exports, "insertSpecSpecRelation", { enumerable: true, get
|
|
|
42
43
|
Object.defineProperty(exports, "deleteSimilarToRelations", { enumerable: true, get: function () { return relations_1.deleteSimilarToRelations; } });
|
|
43
44
|
Object.defineProperty(exports, "transferSpecSpecRelations", { enumerable: true, get: function () { return relations_1.transferSpecSpecRelations; } });
|
|
44
45
|
Object.defineProperty(exports, "countAllRelations", { enumerable: true, get: function () { return relations_1.countAllRelations; } });
|
|
46
|
+
Object.defineProperty(exports, "findSpecIdsByFragmentPath", { enumerable: true, get: function () { return relations_1.findSpecIdsByFragmentPath; } });
|
|
47
|
+
Object.defineProperty(exports, "findSpecsByFilePath", { enumerable: true, get: function () { return relations_1.findSpecsByFilePath; } });
|
|
48
|
+
Object.defineProperty(exports, "findSpecCandidatesByFilePath", { enumerable: true, get: function () { return relations_1.findSpecCandidatesByFilePath; } });
|
|
49
|
+
Object.defineProperty(exports, "findSpecIdsByFragmentIds", { enumerable: true, get: function () { return relations_1.findSpecIdsByFragmentIds; } });
|
|
50
|
+
Object.defineProperty(exports, "findFragmentPathsBySpec", { enumerable: true, get: function () { return relations_1.findFragmentPathsBySpec; } });
|
|
51
|
+
Object.defineProperty(exports, "findActiveSpecIds", { enumerable: true, get: function () { return relations_1.findActiveSpecIds; } });
|
|
45
52
|
// FTS5 Search
|
|
46
53
|
var fts_1 = require("./fts");
|
|
47
54
|
Object.defineProperty(exports, "searchSpecs", { enumerable: true, get: function () { return fts_1.searchSpecs; } });
|
|
55
|
+
Object.defineProperty(exports, "searchCodeFragments", { enumerable: true, get: function () { return fts_1.searchCodeFragments; } });
|
|
48
56
|
Object.defineProperty(exports, "escapeFtsQuery", { enumerable: true, get: function () { return fts_1.escapeFtsQuery; } });
|
|
49
57
|
Object.defineProperty(exports, "segmentCjk", { enumerable: true, get: function () { return fts_1.segmentCjk; } });
|
|
58
|
+
// SQL helpers
|
|
59
|
+
var sql_utils_1 = require("./sql-utils");
|
|
60
|
+
Object.defineProperty(exports, "escapeLike", { enumerable: true, get: function () { return sql_utils_1.escapeLike; } });
|
|
61
|
+
// Composed writes
|
|
62
|
+
var persist_1 = require("./persist");
|
|
63
|
+
Object.defineProperty(exports, "upsertSpecFromMetadata", { enumerable: true, get: function () { return persist_1.upsertSpecFromMetadata; } });
|
|
64
|
+
Object.defineProperty(exports, "persistCommitFragments", { enumerable: true, get: function () { return persist_1.persistCommitFragments; } });
|
|
50
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/spec/db/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,SAAS;AACT,mCAAiH;AAAxG,wGAAA,cAAc,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,qHAAA,2BAA2B,OAAA;AAE9F,cAAc;AACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/spec/db/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,SAAS;AACT,mCAAiH;AAAxG,wGAAA,cAAc,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,qHAAA,2BAA2B,OAAA;AAE9F,cAAc;AACd,yCASqB;AARnB,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AACZ,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAGpB,6CAKuB;AAJrB,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AAGd,iDAKyB;AAJvB,mHAAA,kBAAkB,OAAA;AAClB,iHAAA,gBAAgB,OAAA;AAChB,sHAAA,qBAAqB,OAAA;AACrB,+GAAA,cAAc,OAAA;AAGhB,YAAY;AACZ,yCAiBqB;AAhBnB,qHAAA,wBAAwB,OAAA;AACxB,8GAAA,iBAAiB,OAAA;AACjB,wHAAA,2BAA2B,OAAA;AAC3B,yHAAA,4BAA4B,OAAA;AAC5B,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,sHAAA,yBAAyB,OAAA;AACzB,8GAAA,iBAAiB,OAAA;AACjB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AAEnB,yHAAA,4BAA4B,OAAA;AAE5B,qHAAA,wBAAwB,OAAA;AACxB,oHAAA,uBAAuB,OAAA;AACvB,8GAAA,iBAAiB,OAAA;AAGnB,cAAc;AACd,6BAKe;AAJb,kGAAA,WAAW,OAAA;AACX,0GAAA,mBAAmB,OAAA;AACnB,qGAAA,cAAc,OAAA;AACd,iGAAA,UAAU,OAAA;AAGZ,cAAc;AACd,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AAEnB,kBAAkB;AAClB,qCAKmB;AAJjB,iHAAA,sBAAsB,OAAA;AACtB,iHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composed write operations for the spec knowledge graph — shared by the
|
|
3
|
+
* build, mine, and evolve pipelines so the "spec node from metadata" and
|
|
4
|
+
* "commit fragments + CONTAINS relations" write sequences live in exactly
|
|
5
|
+
* one place.
|
|
6
|
+
*
|
|
7
|
+
* All inserts are idempotent (INSERT OR REPLACE / INSERT OR IGNORE), so
|
|
8
|
+
* re-running a pipeline against the same commits is safe.
|
|
9
|
+
*
|
|
10
|
+
* @module spec/db/persist
|
|
11
|
+
*/
|
|
12
|
+
import { SqliteDatabase } from '../../db/sqlite-adapter';
|
|
13
|
+
import { CodeFragmentNode } from '../types';
|
|
14
|
+
/** Minimal spec metadata needed to upsert a SpecNode. */
|
|
15
|
+
export interface SpecMetadataInput {
|
|
16
|
+
specId: string;
|
|
17
|
+
title: string;
|
|
18
|
+
subtitles: string[];
|
|
19
|
+
filePath: string;
|
|
20
|
+
}
|
|
21
|
+
/** A diff fragment to persist (id is auto-generated). */
|
|
22
|
+
export type FragmentInput = Omit<CodeFragmentNode, 'id'>;
|
|
23
|
+
/**
|
|
24
|
+
* Insert or replace an active, version-1 SpecNode from extracted metadata.
|
|
25
|
+
*
|
|
26
|
+
* With INSERT OR REPLACE semantics, when the same spec is written multiple
|
|
27
|
+
* times the last write (callers process commits oldest-first, so the most
|
|
28
|
+
* recent commit) wins the timestamp.
|
|
29
|
+
*/
|
|
30
|
+
export declare function upsertSpecFromMetadata(db: SqliteDatabase, metadata: SpecMetadataInput, timestamp: number): void;
|
|
31
|
+
/**
|
|
32
|
+
* Persist diff fragments for a commit and link them with CONTAINS relations.
|
|
33
|
+
*
|
|
34
|
+
* @param db - Open SQLite database handle.
|
|
35
|
+
* @param commitHash - The commit the fragments belong to.
|
|
36
|
+
* @param fragments - Diff fragments to insert (ids are auto-generated).
|
|
37
|
+
* @param filterFiles - Optional allow-list of file paths; fragments for
|
|
38
|
+
* other files are skipped.
|
|
39
|
+
* @returns Counts of inserted fragments and created relations.
|
|
40
|
+
*/
|
|
41
|
+
export declare function persistCommitFragments(db: SqliteDatabase, commitHash: string, fragments: FragmentInput[], filterFiles?: Set<string>): {
|
|
42
|
+
fragmentsInserted: number;
|
|
43
|
+
relationsCreated: number;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=persist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../../src/spec/db/persist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAS5C,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAMzD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,MAAM,GAChB,IAAI,CAUN;AAMD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAczD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Composed write operations for the spec knowledge graph — shared by the
|
|
4
|
+
* build, mine, and evolve pipelines so the "spec node from metadata" and
|
|
5
|
+
* "commit fragments + CONTAINS relations" write sequences live in exactly
|
|
6
|
+
* one place.
|
|
7
|
+
*
|
|
8
|
+
* All inserts are idempotent (INSERT OR REPLACE / INSERT OR IGNORE), so
|
|
9
|
+
* re-running a pipeline against the same commits is safe.
|
|
10
|
+
*
|
|
11
|
+
* @module spec/db/persist
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.upsertSpecFromMetadata = upsertSpecFromMetadata;
|
|
15
|
+
exports.persistCommitFragments = persistCommitFragments;
|
|
16
|
+
const spec_node_1 = require("./spec-node");
|
|
17
|
+
const fragment_node_1 = require("./fragment-node");
|
|
18
|
+
const relations_1 = require("./relations");
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// upsertSpecFromMetadata
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Insert or replace an active, version-1 SpecNode from extracted metadata.
|
|
24
|
+
*
|
|
25
|
+
* With INSERT OR REPLACE semantics, when the same spec is written multiple
|
|
26
|
+
* times the last write (callers process commits oldest-first, so the most
|
|
27
|
+
* recent commit) wins the timestamp.
|
|
28
|
+
*/
|
|
29
|
+
function upsertSpecFromMetadata(db, metadata, timestamp) {
|
|
30
|
+
(0, spec_node_1.insertSpecNode)(db, {
|
|
31
|
+
id: metadata.specId,
|
|
32
|
+
title: metadata.title,
|
|
33
|
+
subtitles: metadata.subtitles,
|
|
34
|
+
status: 'active',
|
|
35
|
+
version: 1,
|
|
36
|
+
filePath: metadata.filePath,
|
|
37
|
+
timestamp,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// persistCommitFragments
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
/**
|
|
44
|
+
* Persist diff fragments for a commit and link them with CONTAINS relations.
|
|
45
|
+
*
|
|
46
|
+
* @param db - Open SQLite database handle.
|
|
47
|
+
* @param commitHash - The commit the fragments belong to.
|
|
48
|
+
* @param fragments - Diff fragments to insert (ids are auto-generated).
|
|
49
|
+
* @param filterFiles - Optional allow-list of file paths; fragments for
|
|
50
|
+
* other files are skipped.
|
|
51
|
+
* @returns Counts of inserted fragments and created relations.
|
|
52
|
+
*/
|
|
53
|
+
function persistCommitFragments(db, commitHash, fragments, filterFiles) {
|
|
54
|
+
let fragmentsInserted = 0;
|
|
55
|
+
let relationsCreated = 0;
|
|
56
|
+
for (const frag of fragments) {
|
|
57
|
+
if (filterFiles && !filterFiles.has(frag.filePath))
|
|
58
|
+
continue;
|
|
59
|
+
const inserted = (0, fragment_node_1.insertCodeFragment)(db, { id: '', ...frag });
|
|
60
|
+
fragmentsInserted++;
|
|
61
|
+
(0, relations_1.insertCommitFragmentRelation)(db, commitHash, inserted.id, 'CONTAINS');
|
|
62
|
+
relationsCreated++;
|
|
63
|
+
}
|
|
64
|
+
return { fragmentsInserted, relationsCreated };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=persist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../src/spec/db/persist.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAkCH,wDAcC;AAgBD,wDAmBC;AA/ED,2CAA6C;AAC7C,mDAAqD;AACrD,2CAA2D;AAiB3D,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,EAAkB,EAClB,QAA2B,EAC3B,SAAiB;IAEjB,IAAA,0BAAc,EAAC,EAAE,EAAE;QACjB,EAAE,EAAE,QAAQ,CAAC,MAAM;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CACpC,EAAkB,EAClB,UAAkB,EAClB,SAA0B,EAC1B,WAAyB;IAEzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE7D,MAAM,QAAQ,GAAG,IAAA,kCAAkB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7D,iBAAiB,EAAE,CAAC;QACpB,IAAA,wCAA4B,EAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACtE,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -31,7 +31,7 @@ export declare function transferSpecCommitRelations(db: SqliteDatabase, fromSpec
|
|
|
31
31
|
* Link a commit to a code fragment.
|
|
32
32
|
* `INSERT OR IGNORE` — duplicates are silently skipped.
|
|
33
33
|
*/
|
|
34
|
-
export declare function insertCommitFragmentRelation(db: SqliteDatabase, commitHash: string, fragmentId: string): void;
|
|
34
|
+
export declare function insertCommitFragmentRelation(db: SqliteDatabase, commitHash: string, fragmentId: string, relationType: RelationType): void;
|
|
35
35
|
/**
|
|
36
36
|
* Insert a relation between two specs (SIMILAR_TO or EVOLVED_FROM).
|
|
37
37
|
* `INSERT OR IGNORE` — duplicates are silently skipped.
|
|
@@ -52,4 +52,83 @@ export declare function transferSpecSpecRelations(db: SqliteDatabase, fromSpecId
|
|
|
52
52
|
* Count total rows across all three relation tables.
|
|
53
53
|
*/
|
|
54
54
|
export declare function countAllRelations(db: SqliteDatabase): number;
|
|
55
|
+
/**
|
|
56
|
+
* Find all spec IDs related to code fragments whose file path matches
|
|
57
|
+
* the given substring (unescaped LIKE `%filePath%`).
|
|
58
|
+
*/
|
|
59
|
+
export declare function findSpecIdsByFragmentPath(db: SqliteDatabase, filePath: string): string[];
|
|
60
|
+
/** Result container returned by findSpecsByFilePath. */
|
|
61
|
+
export interface FindSpecsByFilePathResult {
|
|
62
|
+
/** Matching spec entries (capped at maxResults). */
|
|
63
|
+
results: Array<{
|
|
64
|
+
id: string;
|
|
65
|
+
title: string;
|
|
66
|
+
status: string;
|
|
67
|
+
version: number;
|
|
68
|
+
filePath: string;
|
|
69
|
+
}>;
|
|
70
|
+
/** Number of results actually returned (<= maxResults). */
|
|
71
|
+
matched_count: number;
|
|
72
|
+
/** True when more results exist beyond the cap. */
|
|
73
|
+
truncated: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Find specs whose code fragments reference the given file path.
|
|
77
|
+
*
|
|
78
|
+
* Traverses: filePath -> code_fragment_nodes -> commit_fragment_relations
|
|
79
|
+
* -> commit_nodes -> spec_commit_relations -> spec_nodes.
|
|
80
|
+
*
|
|
81
|
+
* Uses LIKE matching against code_fragment_nodes.file_path, so partial
|
|
82
|
+
* paths work (e.g. `src/auth.ts` matches `src/auth/login.ts` and
|
|
83
|
+
* `app/src/auth.ts`). LIKE metacharacters (`%`, `_`, `\`) in the
|
|
84
|
+
* filePath are automatically escaped.
|
|
85
|
+
*
|
|
86
|
+
* An empty or whitespace-only filePath is rejected with an error
|
|
87
|
+
* (it would match every spec in the graph).
|
|
88
|
+
*/
|
|
89
|
+
export declare function findSpecsByFilePath(db: SqliteDatabase, filePath: string, maxResults?: number): FindSpecsByFilePathResult;
|
|
90
|
+
/**
|
|
91
|
+
* A candidate spec for code-entity matching, with aggregate signals
|
|
92
|
+
* computed in SQL (line overlap, fragment/commit counts, path match level).
|
|
93
|
+
*/
|
|
94
|
+
export interface SpecCandidate {
|
|
95
|
+
id: string;
|
|
96
|
+
title: string;
|
|
97
|
+
status: string;
|
|
98
|
+
version: number;
|
|
99
|
+
filePath: string;
|
|
100
|
+
timestamp: number;
|
|
101
|
+
/** Overlapping line count between the entity range and the best fragment. */
|
|
102
|
+
overlapLines: number;
|
|
103
|
+
/** Number of distinct fragments linking this spec to the entity's file. */
|
|
104
|
+
fragmentCount: number;
|
|
105
|
+
/** Number of distinct commits linking this spec to the entity's file. */
|
|
106
|
+
commitCount: number;
|
|
107
|
+
/** 3 = exact path, 2 = suffix match, 1 = substring LIKE match. */
|
|
108
|
+
filePathMatchLevel: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Gather candidate specs whose fragments touch the given file path, with
|
|
112
|
+
* per-spec aggregate signals for downstream scoring. Only active specs are
|
|
113
|
+
* considered.
|
|
114
|
+
*/
|
|
115
|
+
export declare function findSpecCandidatesByFilePath(db: SqliteDatabase, params: {
|
|
116
|
+
filePath: string;
|
|
117
|
+
startLine: number;
|
|
118
|
+
endLine: number;
|
|
119
|
+
maxCandidates: number;
|
|
120
|
+
}): SpecCandidate[];
|
|
121
|
+
/**
|
|
122
|
+
* Find all spec IDs linked (via commits) to any of the given fragment IDs.
|
|
123
|
+
*/
|
|
124
|
+
export declare function findSpecIdsByFragmentIds(db: SqliteDatabase, fragmentIds: string[]): string[];
|
|
125
|
+
/**
|
|
126
|
+
* Return the distinct fragment file paths associated with a spec (via its
|
|
127
|
+
* commits' fragments).
|
|
128
|
+
*/
|
|
129
|
+
export declare function findFragmentPathsBySpec(db: SqliteDatabase, specId: string): string[];
|
|
130
|
+
/**
|
|
131
|
+
* Filter a list of spec IDs down to those with status = 'active'.
|
|
132
|
+
*/
|
|
133
|
+
export declare function findActiveSpecIds(db: SqliteDatabase, specIds: string[]): string[];
|
|
55
134
|
//# sourceMappingURL=relations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../../src/spec/db/relations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../../src/spec/db/relations.ts"],"names":[],"mappings":"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"}
|