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
|
@@ -15,6 +15,13 @@ exports.insertSpecSpecRelation = insertSpecSpecRelation;
|
|
|
15
15
|
exports.deleteSimilarToRelations = deleteSimilarToRelations;
|
|
16
16
|
exports.transferSpecSpecRelations = transferSpecSpecRelations;
|
|
17
17
|
exports.countAllRelations = countAllRelations;
|
|
18
|
+
exports.findSpecIdsByFragmentPath = findSpecIdsByFragmentPath;
|
|
19
|
+
exports.findSpecsByFilePath = findSpecsByFilePath;
|
|
20
|
+
exports.findSpecCandidatesByFilePath = findSpecCandidatesByFilePath;
|
|
21
|
+
exports.findSpecIdsByFragmentIds = findSpecIdsByFragmentIds;
|
|
22
|
+
exports.findFragmentPathsBySpec = findFragmentPathsBySpec;
|
|
23
|
+
exports.findActiveSpecIds = findActiveSpecIds;
|
|
24
|
+
const sql_utils_1 = require("./sql-utils");
|
|
18
25
|
// ===========================================================================
|
|
19
26
|
// Spec ↔ Commit Relations
|
|
20
27
|
// ===========================================================================
|
|
@@ -70,12 +77,12 @@ function transferSpecCommitRelations(db, fromSpecId, toSpecId) {
|
|
|
70
77
|
* Link a commit to a code fragment.
|
|
71
78
|
* `INSERT OR IGNORE` — duplicates are silently skipped.
|
|
72
79
|
*/
|
|
73
|
-
function insertCommitFragmentRelation(db, commitHash, fragmentId) {
|
|
80
|
+
function insertCommitFragmentRelation(db, commitHash, fragmentId, relationType) {
|
|
74
81
|
db.prepare(`
|
|
75
82
|
INSERT OR IGNORE INTO commit_fragment_relations
|
|
76
|
-
(commit_hash, fragment_id)
|
|
77
|
-
VALUES (@commitHash, @fragmentId)
|
|
78
|
-
`).run({ commitHash, fragmentId });
|
|
83
|
+
(commit_hash, fragment_id, relation_type)
|
|
84
|
+
VALUES (@commitHash, @fragmentId, @relationType)
|
|
85
|
+
`).run({ commitHash, fragmentId, relationType });
|
|
79
86
|
}
|
|
80
87
|
// ===========================================================================
|
|
81
88
|
// Spec ↔ Spec Relations
|
|
@@ -155,4 +162,168 @@ function countAllRelations(db) {
|
|
|
155
162
|
}
|
|
156
163
|
return total;
|
|
157
164
|
}
|
|
165
|
+
// ===========================================================================
|
|
166
|
+
// Cross-table traversal primitives
|
|
167
|
+
//
|
|
168
|
+
// Join queries that walk Spec → Commit → CodeFragment. These are the ONLY
|
|
169
|
+
// home for this SQL — higher layers (graph/queries, evolve/impact-locator)
|
|
170
|
+
// compose these primitives instead of writing their own joins.
|
|
171
|
+
// ===========================================================================
|
|
172
|
+
/**
|
|
173
|
+
* Find all spec IDs related to code fragments whose file path matches
|
|
174
|
+
* the given substring (unescaped LIKE `%filePath%`).
|
|
175
|
+
*/
|
|
176
|
+
function findSpecIdsByFragmentPath(db, filePath) {
|
|
177
|
+
const rows = db
|
|
178
|
+
.prepare(`SELECT DISTINCT r.spec_id
|
|
179
|
+
FROM spec_commit_relations r
|
|
180
|
+
JOIN commit_fragment_relations cfr ON cfr.commit_hash = r.commit_hash
|
|
181
|
+
JOIN code_fragment_nodes cf ON cf.id = cfr.fragment_id
|
|
182
|
+
WHERE cf.file_path LIKE ?`)
|
|
183
|
+
.all(`%${filePath}%`);
|
|
184
|
+
return rows.map((r) => r.spec_id);
|
|
185
|
+
}
|
|
186
|
+
/** Default max results returned by findSpecsByFilePath. */
|
|
187
|
+
const DEFAULT_MAX_SPEC_FIND_RESULTS = 100;
|
|
188
|
+
/**
|
|
189
|
+
* Find specs whose code fragments reference the given file path.
|
|
190
|
+
*
|
|
191
|
+
* Traverses: filePath -> code_fragment_nodes -> commit_fragment_relations
|
|
192
|
+
* -> commit_nodes -> spec_commit_relations -> spec_nodes.
|
|
193
|
+
*
|
|
194
|
+
* Uses LIKE matching against code_fragment_nodes.file_path, so partial
|
|
195
|
+
* paths work (e.g. `src/auth.ts` matches `src/auth/login.ts` and
|
|
196
|
+
* `app/src/auth.ts`). LIKE metacharacters (`%`, `_`, `\`) in the
|
|
197
|
+
* filePath are automatically escaped.
|
|
198
|
+
*
|
|
199
|
+
* An empty or whitespace-only filePath is rejected with an error
|
|
200
|
+
* (it would match every spec in the graph).
|
|
201
|
+
*/
|
|
202
|
+
function findSpecsByFilePath(db, filePath, maxResults = DEFAULT_MAX_SPEC_FIND_RESULTS) {
|
|
203
|
+
// Guard against empty input that would match every spec
|
|
204
|
+
if (!filePath || filePath.trim().length === 0) {
|
|
205
|
+
throw new Error('Empty file path is not allowed -- it would match every spec in the knowledge graph. ' +
|
|
206
|
+
'Provide a concrete file path (e.g. "src/auth.ts") or a partial path (e.g. "src/auth").');
|
|
207
|
+
}
|
|
208
|
+
const pattern = `%${(0, sql_utils_1.escapeLike)(filePath)}%`;
|
|
209
|
+
const rows = db
|
|
210
|
+
.prepare(`SELECT DISTINCT s.id, s.title, s.status, s.version, s.file_path
|
|
211
|
+
FROM spec_nodes s
|
|
212
|
+
JOIN spec_commit_relations scr ON scr.spec_id = s.id
|
|
213
|
+
JOIN commit_fragment_relations cfr ON cfr.commit_hash = scr.commit_hash
|
|
214
|
+
JOIN code_fragment_nodes cf ON cf.id = cfr.fragment_id
|
|
215
|
+
WHERE cf.file_path LIKE ? ESCAPE '\\'
|
|
216
|
+
ORDER BY s.id
|
|
217
|
+
LIMIT ?`)
|
|
218
|
+
.all(pattern, maxResults + 1);
|
|
219
|
+
const truncated = rows.length > maxResults;
|
|
220
|
+
const slice = truncated ? rows.slice(0, maxResults) : rows;
|
|
221
|
+
return {
|
|
222
|
+
results: slice.map((r) => ({
|
|
223
|
+
id: r.id,
|
|
224
|
+
title: r.title,
|
|
225
|
+
status: r.status,
|
|
226
|
+
version: r.version,
|
|
227
|
+
filePath: r.file_path,
|
|
228
|
+
})),
|
|
229
|
+
matched_count: slice.length,
|
|
230
|
+
truncated,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Gather candidate specs whose fragments touch the given file path, with
|
|
235
|
+
* per-spec aggregate signals for downstream scoring. Only active specs are
|
|
236
|
+
* considered.
|
|
237
|
+
*/
|
|
238
|
+
function findSpecCandidatesByFilePath(db, params) {
|
|
239
|
+
const pathEscaped = (0, sql_utils_1.escapeLike)(params.filePath);
|
|
240
|
+
const rows = db
|
|
241
|
+
.prepare(`
|
|
242
|
+
SELECT
|
|
243
|
+
s.id, s.title, s.status, s.version, s.file_path, s.timestamp,
|
|
244
|
+
MAX(
|
|
245
|
+
MIN(cf.end_line, @entityEnd) - MAX(cf.start_line, @entityStart) + 1,
|
|
246
|
+
0
|
|
247
|
+
) AS overlap_lines,
|
|
248
|
+
COUNT(DISTINCT cf.id) AS fragment_count,
|
|
249
|
+
COUNT(DISTINCT scr.commit_hash) AS commit_count,
|
|
250
|
+
MAX(CASE
|
|
251
|
+
WHEN cf.file_path = @exactFilePath THEN 3
|
|
252
|
+
WHEN cf.file_path LIKE @suffixLikePattern ESCAPE '\\' THEN 2
|
|
253
|
+
ELSE 1
|
|
254
|
+
END) AS file_path_match_level
|
|
255
|
+
FROM spec_nodes s
|
|
256
|
+
JOIN spec_commit_relations scr ON scr.spec_id = s.id
|
|
257
|
+
JOIN commit_fragment_relations cfr ON cfr.commit_hash = scr.commit_hash
|
|
258
|
+
JOIN code_fragment_nodes cf ON cf.id = cfr.fragment_id
|
|
259
|
+
WHERE s.status = 'active'
|
|
260
|
+
AND cf.file_path LIKE @likePattern ESCAPE '\\'
|
|
261
|
+
GROUP BY s.id
|
|
262
|
+
ORDER BY s.timestamp DESC
|
|
263
|
+
LIMIT @maxCandidates
|
|
264
|
+
`)
|
|
265
|
+
.all({
|
|
266
|
+
entityEnd: params.endLine,
|
|
267
|
+
entityStart: params.startLine,
|
|
268
|
+
exactFilePath: params.filePath,
|
|
269
|
+
suffixLikePattern: `%${pathEscaped}`,
|
|
270
|
+
likePattern: `%${pathEscaped}%`,
|
|
271
|
+
maxCandidates: params.maxCandidates,
|
|
272
|
+
});
|
|
273
|
+
return rows.map((r) => ({
|
|
274
|
+
id: r.id,
|
|
275
|
+
title: r.title,
|
|
276
|
+
status: r.status,
|
|
277
|
+
version: r.version,
|
|
278
|
+
filePath: r.file_path,
|
|
279
|
+
timestamp: r.timestamp,
|
|
280
|
+
overlapLines: r.overlap_lines,
|
|
281
|
+
fragmentCount: r.fragment_count,
|
|
282
|
+
commitCount: r.commit_count,
|
|
283
|
+
filePathMatchLevel: r.file_path_match_level,
|
|
284
|
+
}));
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Find all spec IDs linked (via commits) to any of the given fragment IDs.
|
|
288
|
+
*/
|
|
289
|
+
function findSpecIdsByFragmentIds(db, fragmentIds) {
|
|
290
|
+
if (fragmentIds.length === 0)
|
|
291
|
+
return [];
|
|
292
|
+
const placeholders = fragmentIds.map(() => '?').join(',');
|
|
293
|
+
const rows = db
|
|
294
|
+
.prepare(`
|
|
295
|
+
SELECT DISTINCT scr.spec_id
|
|
296
|
+
FROM commit_fragment_relations cfr
|
|
297
|
+
JOIN spec_commit_relations scr ON scr.commit_hash = cfr.commit_hash
|
|
298
|
+
WHERE cfr.fragment_id IN (${placeholders})
|
|
299
|
+
`)
|
|
300
|
+
.all(...fragmentIds);
|
|
301
|
+
return rows.map((r) => r.spec_id);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Return the distinct fragment file paths associated with a spec (via its
|
|
305
|
+
* commits' fragments).
|
|
306
|
+
*/
|
|
307
|
+
function findFragmentPathsBySpec(db, specId) {
|
|
308
|
+
const rows = db
|
|
309
|
+
.prepare(`SELECT DISTINCT cf.file_path
|
|
310
|
+
FROM spec_commit_relations scr
|
|
311
|
+
JOIN commit_fragment_relations cfr ON cfr.commit_hash = scr.commit_hash
|
|
312
|
+
JOIN code_fragment_nodes cf ON cf.id = cfr.fragment_id
|
|
313
|
+
WHERE scr.spec_id = ?`)
|
|
314
|
+
.all(specId);
|
|
315
|
+
return rows.map((r) => r.file_path);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Filter a list of spec IDs down to those with status = 'active'.
|
|
319
|
+
*/
|
|
320
|
+
function findActiveSpecIds(db, specIds) {
|
|
321
|
+
if (specIds.length === 0)
|
|
322
|
+
return [];
|
|
323
|
+
const placeholders = specIds.map(() => '?').join(',');
|
|
324
|
+
const rows = db
|
|
325
|
+
.prepare(`SELECT id FROM spec_nodes WHERE status = 'active' AND id IN (${placeholders})`)
|
|
326
|
+
.all(...specIds);
|
|
327
|
+
return rows.map((r) => r.id);
|
|
328
|
+
}
|
|
158
329
|
//# sourceMappingURL=relations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/spec/db/relations.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/spec/db/relations.ts"],"names":[],"mappings":"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"}
|
package/dist/spec/db/schema.d.ts
CHANGED
|
@@ -26,6 +26,10 @@ export declare function getCurrentSpecVersion(db: SqliteDatabase): number;
|
|
|
26
26
|
/**
|
|
27
27
|
* Run pending migrations.
|
|
28
28
|
*
|
|
29
|
+
* NOTE: migration DDL mirrors statements in `schema.sql` (fresh databases
|
|
30
|
+
* get everything from the .sql file; migrations only patch pre-existing
|
|
31
|
+
* databases). Keep the two in sync when adding future migrations.
|
|
32
|
+
*
|
|
29
33
|
* v1 → v2: Create code_fragments_fts virtual table and populate it
|
|
30
34
|
* from existing code_fragment_nodes data.
|
|
31
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/spec/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAMvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAShE;AAED
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/spec/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAMvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAShE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAwC/E"}
|
package/dist/spec/db/schema.js
CHANGED
|
@@ -81,6 +81,10 @@ function getCurrentSpecVersion(db) {
|
|
|
81
81
|
/**
|
|
82
82
|
* Run pending migrations.
|
|
83
83
|
*
|
|
84
|
+
* NOTE: migration DDL mirrors statements in `schema.sql` (fresh databases
|
|
85
|
+
* get everything from the .sql file; migrations only patch pre-existing
|
|
86
|
+
* databases). Keep the two in sync when adding future migrations.
|
|
87
|
+
*
|
|
84
88
|
* v1 → v2: Create code_fragments_fts virtual table and populate it
|
|
85
89
|
* from existing code_fragment_nodes data.
|
|
86
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/spec/db/schema.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBH,wCAMC;AAMD,sDASC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/spec/db/schema.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBH,wCAMC;AAMD,sDASC;AAYD,8CAwCC;AAxFD,uCAAyB;AACzB,2CAA6B;AAE7B;;;GAGG;AACU,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,EAAkB;IAC/C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,EAAkB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CAAC,0DAA0D,CAAC;aACnE,GAAG,EAA4C,CAAC;QACnD,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,EAAkB,EAAE,WAAmB;IACvE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,EAAE,CAAC,IAAI,CAAC;;;;;;KAMP,CAAC,CAAC;QAEH,sDAAsD;QACtD,MAAM,KAAK,GACT,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,EACjE,CAAC,GAAG,CAAC;QACN,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,EAAE;iBACZ,OAAO,CAAC,0DAA0D,CAAC;iBACnE,GAAG,EAAiE,CAAC;YAExE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,4EAA4E,CAC7E,CAAC;gBACF,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,SAAsE,EAAE,EAAE;oBAC3G,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,EAAE,CAAC,OAAO,CACR,oLAAoL,CACrL,CAAC,GAAG,EAAE,CAAC;IACV,CAAC;AACH,CAAC"}
|
package/dist/spec/db/schema.sql
CHANGED
|
@@ -54,7 +54,8 @@ CREATE TABLE IF NOT EXISTS spec_commit_relations (
|
|
|
54
54
|
CREATE TABLE IF NOT EXISTS commit_fragment_relations (
|
|
55
55
|
commit_hash TEXT NOT NULL,
|
|
56
56
|
fragment_id TEXT NOT NULL,
|
|
57
|
-
|
|
57
|
+
relation_type TEXT NOT NULL,
|
|
58
|
+
PRIMARY KEY (commit_hash, fragment_id, relation_type),
|
|
58
59
|
FOREIGN KEY (commit_hash) REFERENCES commit_nodes(hash) ON DELETE CASCADE,
|
|
59
60
|
FOREIGN KEY (fragment_id) REFERENCES code_fragment_nodes(id) ON DELETE CASCADE
|
|
60
61
|
);
|
|
@@ -78,6 +79,9 @@ CREATE VIRTUAL TABLE IF NOT EXISTS specs_fts USING fts5(
|
|
|
78
79
|
subtitles
|
|
79
80
|
);
|
|
80
81
|
|
|
82
|
+
-- NOTE: `runSpecMigrations` in schema.ts mirrors some of this DDL to patch
|
|
83
|
+
-- pre-existing databases. Keep the two in sync when adding migrations.
|
|
84
|
+
|
|
81
85
|
CREATE VIRTUAL TABLE IF NOT EXISTS code_fragments_fts USING fts5(
|
|
82
86
|
id,
|
|
83
87
|
file_path,
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { SqliteDatabase } from '../../db/sqlite-adapter';
|
|
8
8
|
import { SpecNode } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Parse a JSON-encoded subtitles array, returning [] on any failure.
|
|
11
|
+
* Shared by every query that reads `spec_nodes.subtitles`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseSubtitlesJson(raw: string): string[];
|
|
9
14
|
/**
|
|
10
15
|
* Insert or replace a SpecNode. Also updates the standalone FTS5 index
|
|
11
16
|
* with CJK-segmented text.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-node.d.ts","sourceRoot":"","sources":["../../../src/spec/db/spec-node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-node.d.ts","sourceRoot":"","sources":["../../../src/spec/db/spec-node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAqBpC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAMxD;AAkBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CA2B3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAMhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAErG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,QAAQ,EAAE,CAK3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAW7F"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* text (see `fts.ts` for the segmentation logic).
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseSubtitlesJson = parseSubtitlesJson;
|
|
9
10
|
exports.insertSpecNode = insertSpecNode;
|
|
10
11
|
exports.findSpecById = findSpecById;
|
|
11
12
|
exports.updateSpecStatus = updateSpecStatus;
|
|
@@ -17,18 +18,23 @@ const fts_1 = require("./fts");
|
|
|
17
18
|
// ---------------------------------------------------------------------------
|
|
18
19
|
// Helpers
|
|
19
20
|
// ---------------------------------------------------------------------------
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Parse a JSON-encoded subtitles array, returning [] on any failure.
|
|
23
|
+
* Shared by every query that reads `spec_nodes.subtitles`.
|
|
24
|
+
*/
|
|
25
|
+
function parseSubtitlesJson(raw) {
|
|
22
26
|
try {
|
|
23
|
-
|
|
27
|
+
return JSON.parse(raw || '[]');
|
|
24
28
|
}
|
|
25
29
|
catch {
|
|
26
|
-
|
|
30
|
+
return [];
|
|
27
31
|
}
|
|
32
|
+
}
|
|
33
|
+
function rowToSpec(row) {
|
|
28
34
|
return {
|
|
29
35
|
id: row.id,
|
|
30
36
|
title: row.title,
|
|
31
|
-
subtitles,
|
|
37
|
+
subtitles: parseSubtitlesJson(row.subtitles),
|
|
32
38
|
status: row.status,
|
|
33
39
|
version: row.version,
|
|
34
40
|
filePath: row.file_path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-node.js","sourceRoot":"","sources":["../../../src/spec/db/spec-node.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"spec-node.js","sourceRoot":"","sources":["../../../src/spec/db/spec-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared SQL helpers for the spec db layer.
|
|
3
|
+
*
|
|
4
|
+
* @module spec/db/sql-utils
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Escape LIKE metacharacters (`%`, `_`) and the escape character itself so
|
|
8
|
+
* the input is matched literally in `LIKE ... ESCAPE '\'` queries.
|
|
9
|
+
*/
|
|
10
|
+
export declare function escapeLike(str: string): string;
|
|
11
|
+
//# sourceMappingURL=sql-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-utils.d.ts","sourceRoot":"","sources":["../../../src/spec/db/sql-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared SQL helpers for the spec db layer.
|
|
4
|
+
*
|
|
5
|
+
* @module spec/db/sql-utils
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.escapeLike = escapeLike;
|
|
9
|
+
/**
|
|
10
|
+
* Escape LIKE metacharacters (`%`, `_`) and the escape character itself so
|
|
11
|
+
* the input is matched literally in `LIKE ... ESCAPE '\'` queries.
|
|
12
|
+
*/
|
|
13
|
+
function escapeLike(str) {
|
|
14
|
+
return str
|
|
15
|
+
.replace(/\\/g, '\\\\')
|
|
16
|
+
.replace(/%/g, '\\%')
|
|
17
|
+
.replace(/_/g, '\\_');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sql-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-utils.js","sourceRoot":"","sources":["../../../src/spec/db/sql-utils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAMH,gCAKC;AATD;;;GAGG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG;SACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cluster-context.ts — Build cluster-level context summary for LLM spec evaluation.
|
|
3
|
+
*
|
|
4
|
+
* References mine/generator.ts buildClusterPrompt for the multi-commit
|
|
5
|
+
* context aggregation pattern, but uses simpler data (diff-based instead of
|
|
6
|
+
* AST-based) since evolve works with unified diffs.
|
|
7
|
+
*
|
|
8
|
+
* The ClusterContext / CommitSummary / CommitContextInput types live in
|
|
9
|
+
* `../types` so the LLM layer can depend on them without importing from a
|
|
10
|
+
* pipeline module.
|
|
11
|
+
*
|
|
12
|
+
* @module spec/evolve/cluster-context
|
|
13
|
+
*/
|
|
14
|
+
import { ClusterContext, CommitSummary, CommitContextInput } from '../types';
|
|
15
|
+
export type { ClusterContext, CommitSummary, CommitContextInput };
|
|
16
|
+
/**
|
|
17
|
+
* Build a cluster context summary for a group of commits affecting the same spec.
|
|
18
|
+
*
|
|
19
|
+
* Steps:
|
|
20
|
+
* 1. For each affecting commit, build a CommitSummary with changed files.
|
|
21
|
+
* The `truncatedDiff` field is left as a placeholder — the caller is
|
|
22
|
+
* responsible for injecting actual diffs via `getCommitDiff()` + `truncateText()`.
|
|
23
|
+
* 2. Compute primaryFiles: files changed in the most commits (top TOP_PRIMARY_FILES).
|
|
24
|
+
*
|
|
25
|
+
* @param affectingCommits - Commit info for commits affecting this spec.
|
|
26
|
+
* @param maxChars - Maximum total characters for commit summaries (default 12000).
|
|
27
|
+
* @returns ClusterContext ready for LLM prompt construction.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildClusterContext(affectingCommits: CommitContextInput[], maxChars?: number): ClusterContext;
|
|
30
|
+
//# sourceMappingURL=cluster-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster-context.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/cluster-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE7E,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAgBlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,kBAAkB,EAAE,EACtC,QAAQ,GAAE,MAAkC,GAC3C,cAAc,CA2ChB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* cluster-context.ts — Build cluster-level context summary for LLM spec evaluation.
|
|
4
|
+
*
|
|
5
|
+
* References mine/generator.ts buildClusterPrompt for the multi-commit
|
|
6
|
+
* context aggregation pattern, but uses simpler data (diff-based instead of
|
|
7
|
+
* AST-based) since evolve works with unified diffs.
|
|
8
|
+
*
|
|
9
|
+
* The ClusterContext / CommitSummary / CommitContextInput types live in
|
|
10
|
+
* `../types` so the LLM layer can depend on them without importing from a
|
|
11
|
+
* pipeline module.
|
|
12
|
+
*
|
|
13
|
+
* @module spec/evolve/cluster-context
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.buildClusterContext = buildClusterContext;
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Constants
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/** Maximum total characters for the cluster context (~12K tokens @ ~0.25 token/char). */
|
|
21
|
+
const DEFAULT_MAX_CONTEXT_CHARS = 48000;
|
|
22
|
+
/** Number of top files reported in primaryFiles. */
|
|
23
|
+
const TOP_PRIMARY_FILES = 10;
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Public API
|
|
26
|
+
// =============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Build a cluster context summary for a group of commits affecting the same spec.
|
|
29
|
+
*
|
|
30
|
+
* Steps:
|
|
31
|
+
* 1. For each affecting commit, build a CommitSummary with changed files.
|
|
32
|
+
* The `truncatedDiff` field is left as a placeholder — the caller is
|
|
33
|
+
* responsible for injecting actual diffs via `getCommitDiff()` + `truncateText()`.
|
|
34
|
+
* 2. Compute primaryFiles: files changed in the most commits (top TOP_PRIMARY_FILES).
|
|
35
|
+
*
|
|
36
|
+
* @param affectingCommits - Commit info for commits affecting this spec.
|
|
37
|
+
* @param maxChars - Maximum total characters for commit summaries (default 12000).
|
|
38
|
+
* @returns ClusterContext ready for LLM prompt construction.
|
|
39
|
+
*/
|
|
40
|
+
function buildClusterContext(affectingCommits, maxChars = DEFAULT_MAX_CONTEXT_CHARS) {
|
|
41
|
+
// 1. Build commit summaries
|
|
42
|
+
const commitSummaries = [];
|
|
43
|
+
let usedBudget = 0;
|
|
44
|
+
// Track file frequency for primaryFiles
|
|
45
|
+
const fileFrequency = new Map();
|
|
46
|
+
for (const input of affectingCommits) {
|
|
47
|
+
const files = input.filePaths;
|
|
48
|
+
for (const f of files) {
|
|
49
|
+
fileFrequency.set(f, (fileFrequency.get(f) ?? 0) + 1);
|
|
50
|
+
}
|
|
51
|
+
// Per-commit overhead estimate: header + file list area
|
|
52
|
+
const overhead = 150; // "### abc1234 — message\n\nFiles: ...\n\n```diff\n...```\n\n"
|
|
53
|
+
const remainingForThis = maxChars - usedBudget - overhead;
|
|
54
|
+
if (remainingForThis <= 0)
|
|
55
|
+
break; // Budget exhausted
|
|
56
|
+
const summary = {
|
|
57
|
+
fullHash: input.commitHash,
|
|
58
|
+
shortHash: input.commitHash.slice(0, 7),
|
|
59
|
+
message: input.message ?? input.commitHash.slice(0, 7),
|
|
60
|
+
changedFiles: files,
|
|
61
|
+
// Placeholder — caller populates with actual diff
|
|
62
|
+
truncatedDiff: '',
|
|
63
|
+
};
|
|
64
|
+
commitSummaries.push(summary);
|
|
65
|
+
usedBudget += overhead;
|
|
66
|
+
}
|
|
67
|
+
// 2. Compute primaryFiles (top-N by frequency)
|
|
68
|
+
const primaryFiles = [...fileFrequency.entries()]
|
|
69
|
+
.sort((a, b) => b[1] - a[1])
|
|
70
|
+
.slice(0, TOP_PRIMARY_FILES)
|
|
71
|
+
.map(([file]) => file);
|
|
72
|
+
return {
|
|
73
|
+
commitCount: affectingCommits.length,
|
|
74
|
+
commitSummaries,
|
|
75
|
+
primaryFiles,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=cluster-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster-context.js","sourceRoot":"","sources":["../../../src/spec/evolve/cluster-context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAiCH,kDA8CC;AAzED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,yFAAyF;AACzF,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CACjC,gBAAsC,EACtC,WAAmB,yBAAyB;IAE5C,4BAA4B;IAC5B,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,wDAAwD;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,+DAA+D;QACrF,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC1D,IAAI,gBAAgB,IAAI,CAAC;YAAE,MAAM,CAAC,mBAAmB;QAErD,MAAM,OAAO,GAAkB;YAC7B,QAAQ,EAAE,KAAK,CAAC,UAAU;YAC1B,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,YAAY,EAAE,KAAK;YACnB,kDAAkD;YAClD,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,UAAU,IAAI,QAAQ,CAAC;IACzB,CAAC;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;SAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,MAAM;QACpC,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* commit-spec-analyzer.ts — Batch analysis of incremental commits.
|
|
3
|
+
*
|
|
4
|
+
* References build pipeline's scan() Strategy A pattern: iterate commits,
|
|
5
|
+
* resolve scopes, extract metadata, parse diffs — all before any DB writes.
|
|
6
|
+
*
|
|
7
|
+
* @module spec/evolve/commit-spec-analyzer
|
|
8
|
+
*/
|
|
9
|
+
import { SpecConfig } from '../config';
|
|
10
|
+
import { CommitInfo } from '../git';
|
|
11
|
+
import { SpecMetadata } from '../build/spec-extractor';
|
|
12
|
+
import { DiffFragment } from '../build/diff-parser';
|
|
13
|
+
/** Result of analyzing a single commit for spec match. */
|
|
14
|
+
export interface CommitSpecAnalysis {
|
|
15
|
+
/** The commit being analyzed. */
|
|
16
|
+
commit: CommitInfo;
|
|
17
|
+
/** Whether the commit's scope matched a local spec. */
|
|
18
|
+
matched: boolean;
|
|
19
|
+
/** Resolved spec ID (only when matched). */
|
|
20
|
+
specId?: string;
|
|
21
|
+
/** Extracted spec metadata (only when matched). */
|
|
22
|
+
metadata?: SpecMetadata;
|
|
23
|
+
/** Parsed diff fragments (only when matched). */
|
|
24
|
+
fragments?: DiffFragment[];
|
|
25
|
+
/** Human-readable reason for non-match. */
|
|
26
|
+
skipReason?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Batch-analyze a list of incremental commits for spec matching.
|
|
30
|
+
*
|
|
31
|
+
* For each commit:
|
|
32
|
+
* 1. Resolve scope from commit message.
|
|
33
|
+
* 2. If scope matches a local spec file, extract metadata and parse the diff.
|
|
34
|
+
* 3. Return a CommitSpecAnalysis for every commit (matched or not).
|
|
35
|
+
*
|
|
36
|
+
* This function performs NO database writes. All side effects are read-only:
|
|
37
|
+
* `getCommitDiff()` and `analyzeCommitDiff()` read from the git repo's
|
|
38
|
+
* object store but do not modify anything.
|
|
39
|
+
*
|
|
40
|
+
* The most expensive operations (`getCommitDiff` + `analyzeCommitDiff`) are
|
|
41
|
+
* only performed for scope-matched commits so that unmatched commits are
|
|
42
|
+
* nearly zero-cost during scan.
|
|
43
|
+
*
|
|
44
|
+
* @param repoPath - Absolute path to the git repository.
|
|
45
|
+
* @param specStoragePath - Path to spec storage directory.
|
|
46
|
+
* @param commits - Incremental commits to analyze (chronological order).
|
|
47
|
+
* @param config - Resolved SpecConfig.
|
|
48
|
+
* @returns Array of CommitSpecAnalysis, one per input commit.
|
|
49
|
+
*/
|
|
50
|
+
export declare function analyzeIncrementalCommits(repoPath: string, specStoragePath: string, commits: CommitInfo[], config: SpecConfig): CommitSpecAnalysis[];
|
|
51
|
+
//# sourceMappingURL=commit-spec-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-spec-analyzer.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/commit-spec-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAiB,MAAM,QAAQ,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAqB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOvE,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,iDAAiD;IACjD,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,UAAU,GACjB,kBAAkB,EAAE,CAqDtB"}
|