homegraph 1.4.1 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +305 -268
- package/dist/bin/command-supervision.d.ts.map +1 -1
- package/dist/bin/command-supervision.js +7 -4
- package/dist/bin/command-supervision.js.map +1 -1
- package/dist/bin/homegraph.js +304 -81
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +32 -11
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +143 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +305 -28
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.js +37 -37
- package/dist/db/queries.d.ts +43 -4
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +294 -170
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +203 -203
- 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 +15 -2
- package/dist/db/wal-valve.d.ts.map +1 -1
- package/dist/db/wal-valve.js +88 -6
- package/dist/db/wal-valve.js.map +1 -1
- package/dist/directory.js +5 -5
- package/dist/extraction/arkts-batch-worker.js +3 -2
- package/dist/extraction/arkts-batch-worker.js.map +1 -1
- 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/index.d.ts +9 -10
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +227 -323
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts-viewtree.d.ts +2 -4
- package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -1
- package/dist/extraction/languages/arkts-viewtree.js +6 -21
- package/dist/extraction/languages/arkts-viewtree.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +100 -6
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +1777 -173
- package/dist/extraction/languages/arkts.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.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +47 -0
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-c_sharp.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-pascal.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/index.d.ts +16 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +135 -97
- package/dist/index.js.map +1 -1
- package/dist/installer/instructions-template.js +9 -9
- package/dist/mcp/liveness-watchdog.d.ts +18 -0
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/dist/mcp/liveness-watchdog.js +185 -73
- package/dist/mcp/liveness-watchdog.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.js +47 -47
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +42 -26
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/reasoner.js +32 -32
- package/dist/resolution/callback-synthesizer.d.ts +52 -16
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +234 -180
- 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/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/import-resolver.d.ts +2 -3
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +166 -7
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +87 -2
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +739 -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 -1
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +439 -97
- 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/types.d.ts +3 -0
- package/dist/resolution/types.d.ts.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/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/commit-node.js +4 -4
- package/dist/spec/db/fragment-node.js +10 -10
- package/dist/spec/db/fts.d.ts.map +1 -1
- package/dist/spec/db/fts.js +27 -58
- 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 +218 -47
- 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 +10 -6
- package/dist/spec/db/schema.js.map +1 -1
- package/dist/spec/db/schema.sql +121 -117
- 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 +15 -9
- 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/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 +112 -62
- 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/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/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/sync/watcher.d.ts +25 -1
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +76 -3
- package/dist/sync/watcher.js.map +1 -1
- package/dist/telemetry/index.js +3 -3
- package/dist/telemetry/index.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +62 -58
- package/scripts/_tmp-cfwk-resolve.log +0 -0
- package/scripts/_tmp-cfwk-sig.log +0 -0
- package/scripts/_tmp-cfwk-vt.log +0 -0
- package/scripts/add-lang/bench.sh +60 -60
- package/scripts/add-lang/check-grammar.mjs +75 -75
- package/scripts/add-lang/dump-ast.mjs +103 -103
- package/scripts/add-lang/verify-extraction.mjs +70 -70
- package/scripts/agent-eval/ab-adoption.sh +91 -91
- package/scripts/agent-eval/ab-hook.sh +86 -86
- package/scripts/agent-eval/ab-impl.sh +78 -78
- package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -102
- package/scripts/agent-eval/ab-sufficiency.sh +78 -78
- package/scripts/agent-eval/arms-F.sh +21 -21
- package/scripts/agent-eval/arms-matrix.sh +37 -37
- package/scripts/agent-eval/audit.sh +68 -68
- package/scripts/agent-eval/bench-readme.sh +28 -28
- package/scripts/agent-eval/bench-why-repo.sh +22 -22
- package/scripts/agent-eval/block-read-hook.sh +19 -19
- package/scripts/agent-eval/hook-settings.json +15 -15
- package/scripts/agent-eval/itrun.sh +120 -120
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -72
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -133
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -108
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -25
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -47
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -18
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -84
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -103
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -20
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -94
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -50
- package/scripts/agent-eval/offload-eval-setup.sh +24 -24
- package/scripts/agent-eval/offload-eval-styles.sh +71 -71
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -68
- package/scripts/agent-eval/offload-eval.md +76 -76
- package/scripts/agent-eval/parse-arms.mjs +116 -116
- package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
- package/scripts/agent-eval/parse-run.mjs +45 -45
- package/scripts/agent-eval/parse-session.mjs +93 -93
- package/scripts/agent-eval/probe-context.mjs +21 -21
- package/scripts/agent-eval/probe-explore.mjs +40 -40
- package/scripts/agent-eval/probe-node.mjs +20 -20
- package/scripts/agent-eval/probe-sweep.mjs +119 -119
- package/scripts/agent-eval/probe-trace.mjs +20 -20
- package/scripts/agent-eval/redirect-read-hook.sh +38 -38
- package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -119
- package/scripts/agent-eval/repro-daemon-clients.mjs +125 -125
- package/scripts/agent-eval/run-agent.sh +34 -34
- package/scripts/agent-eval/run-all.sh +75 -75
- package/scripts/agent-eval/run-arms.sh +56 -56
- package/scripts/agent-eval/seq-matrix.mjs +137 -137
- package/scripts/bench-arkts-init-rss.log +0 -0
- package/scripts/build-bundle.sh +123 -123
- package/scripts/exp_boundary_eval/README.md +247 -247
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_all.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_all.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/win_mcp_launcher.cpython-38.pyc +0 -0
- package/scripts/exp_boundary_eval/_test_mcp_chain.py +78 -78
- package/scripts/exp_boundary_eval/_test_stdin.py +8 -8
- package/scripts/exp_boundary_eval/_utils.py +1116 -1116
- package/scripts/exp_boundary_eval/analyze.py +1313 -1313
- package/scripts/exp_boundary_eval/deveco_arm.py +519 -519
- package/scripts/exp_boundary_eval/run_all.py +378 -378
- package/scripts/exp_boundary_eval/run_one.py +165 -165
- package/scripts/exp_boundary_eval/run_session.py +158 -158
- package/scripts/exp_boundary_eval/setup.py +120 -120
- package/scripts/exp_boundary_eval/win_mcp_launcher.py +73 -73
- package/scripts/exp_boundary_eval/win_mcp_stdio_wrap.js +36 -36
- package/scripts/exp_boundary_eval/win_node_launcher.py +24 -24
- package/scripts/extract-release-notes.mjs +130 -130
- package/scripts/local-install.sh +41 -41
- package/scripts/npm-sdk.js +75 -75
- package/scripts/npm-shim.js +275 -275
- package/scripts/ohos-sdk-publish.mjs +133 -133
- package/scripts/pack-npm.sh +119 -119
- package/scripts/prepare-release.mjs +270 -270
- package/scripts/probe-arkts-mem-why-run.log +0 -0
- package/scripts/probe-banner-livecard-ir.log +0 -0
- package/scripts/probe-cfwk-ast.stderr.log +0 -0
- package/scripts/probe-cfwk-ast.stdout.log +0 -0
- package/scripts/probe-cfwk-attr-shape.log +0 -0
- package/scripts/probe-cfwk-cfgdump.stderr.log +0 -0
- package/scripts/probe-cfwk-cfgdump.stdout.log +0 -0
- package/scripts/probe-cfwk-cvc.stderr.log +0 -0
- package/scripts/probe-cfwk-cvc.stdout.log +0 -0
- package/scripts/probe-cfwk-diag2.log +0 -0
- package/scripts/probe-cfwk-diag3.log +0 -0
- package/scripts/probe-cfwk-fedbg.stderr.log +0 -0
- package/scripts/probe-cfwk-fedbg.stdout.log +0 -0
- package/scripts/probe-cfwk-fileresult.log +0 -0
- package/scripts/probe-cfwk-fix.stderr.log +0 -0
- package/scripts/probe-cfwk-fix.stdout.log +0 -0
- package/scripts/probe-cfwk-fix2.stderr.log +0 -0
- package/scripts/probe-cfwk-fix2.stdout.log +0 -0
- package/scripts/probe-cfwk-fix3.stderr.log +0 -0
- package/scripts/probe-cfwk-fix3.stdout.log +0 -0
- package/scripts/probe-cfwk-foreach.log +0 -0
- package/scripts/probe-cfwk-getmethod-throw.log +0 -0
- package/scripts/probe-cfwk-hg-extract.log +0 -0
- package/scripts/probe-cfwk-pr1003-noprior.stderr.log +0 -0
- package/scripts/probe-cfwk-pr1003-noprior.stdout.log +0 -0
- package/scripts/probe-cfwk-pr1003.stderr.log +0 -0
- package/scripts/probe-cfwk-pr1003.stdout.log +0 -0
- package/scripts/probe-cfwk-preroot-noprior.stderr.log +0 -0
- package/scripts/probe-cfwk-preroot-noprior.stdout.log +0 -0
- package/scripts/probe-cfwk-preroot-prior.stderr.log +0 -0
- package/scripts/probe-cfwk-preroot-prior.stdout.log +0 -0
- package/scripts/probe-cfwk-preroot-skipstate.stderr.log +0 -0
- package/scripts/probe-cfwk-preroot-skipstate.stdout.log +0 -0
- package/scripts/probe-cfwk-resolve-sim.log +0 -0
- package/scripts/probe-cfwk-tree-shape.log +0 -0
- package/scripts/probe-cfwk-walk-abort.log +0 -0
- package/scripts/probe-cfwk.log +0 -0
- package/scripts/probe-force-index.log +0 -0
- package/scripts/probe-no-force-index.log +0 -0
- package/scripts/probe-samefile-ir.stderr.log +0 -0
- package/scripts/probe-samefile-ir.stdout.log +224 -0
- package/scripts/probe-sdk-vs-project.log +0 -0
- package/scripts/probe-viewtree-downgrade.log +0 -0
- package/dist/arkts/ohos-api-index.d.ts +0 -15
- package/dist/arkts/ohos-api-index.d.ts.map +0 -1
- package/dist/arkts/ohos-api-index.js +0 -190
- package/dist/arkts/ohos-api-index.js.map +0 -1
- package/dist/arkts/ohos-sdk-input.d.ts +0 -36
- package/dist/arkts/ohos-sdk-input.d.ts.map +0 -1
- package/dist/arkts/ohos-sdk-input.js +0 -214
- package/dist/arkts/ohos-sdk-input.js.map +0 -1
- package/dist/extraction/languages/arkts-state-decorators.d.ts +0 -13
- package/dist/extraction/languages/arkts-state-decorators.d.ts.map +0 -1
- package/dist/extraction/languages/arkts-state-decorators.js +0 -26
- package/dist/extraction/languages/arkts-state-decorators.js.map +0 -1
- package/dist/extraction/languages/ohos-api-consumer.d.ts +0 -34
- package/dist/extraction/languages/ohos-api-consumer.d.ts.map +0 -1
- package/dist/extraction/languages/ohos-api-consumer.js +0 -283
- package/dist/extraction/languages/ohos-api-consumer.js.map +0 -1
|
@@ -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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO5D;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,GACb,KAAK,CAAC,kBAAkB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBpF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,cAAc,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CAMN;AAMD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,cAAc,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,IAAI,CAMN;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,GACzB,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMjF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,cAAc,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CA6BN;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAa5D;AAUD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAYV;AAED,wDAAwD;AACxD,MAAM,WAAW,yBAAyB;IACxC,oDAAoD;IACpD,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAAsC,GACjD,yBAAyB,CA4C3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACtF,aAAa,EAAE,CA4DjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,cAAc,EAClB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,EAAE,CAcV;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAYV;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,EAAE,CAWV"}
|
|
@@ -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
|
// ===========================================================================
|
|
@@ -23,10 +30,10 @@ exports.countAllRelations = countAllRelations;
|
|
|
23
30
|
* `INSERT OR IGNORE` — duplicates are silently skipped.
|
|
24
31
|
*/
|
|
25
32
|
function insertSpecCommitRelation(db, specId, commitHash, relationType) {
|
|
26
|
-
db.prepare(`
|
|
27
|
-
INSERT OR IGNORE INTO spec_commit_relations
|
|
28
|
-
(spec_id, commit_hash, relation_type)
|
|
29
|
-
VALUES (@specId, @commitHash, @relationType)
|
|
33
|
+
db.prepare(`
|
|
34
|
+
INSERT OR IGNORE INTO spec_commit_relations
|
|
35
|
+
(spec_id, commit_hash, relation_type)
|
|
36
|
+
VALUES (@specId, @commitHash, @relationType)
|
|
30
37
|
`).run({ specId, commitHash, relationType });
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
@@ -34,13 +41,13 @@ function insertSpecCommitRelation(db, specId, commitHash, relationType) {
|
|
|
34
41
|
* (oldest first — matches Commit4Spec's mining pipeline sort).
|
|
35
42
|
*/
|
|
36
43
|
function findCommitsBySpec(db, specId) {
|
|
37
|
-
const rows = db.prepare(`
|
|
38
|
-
SELECT r.commit_hash, r.relation_type,
|
|
39
|
-
c.message, c.author, c.timestamp
|
|
40
|
-
FROM spec_commit_relations r
|
|
41
|
-
JOIN commit_nodes c ON c.hash = r.commit_hash
|
|
42
|
-
WHERE r.spec_id = ?
|
|
43
|
-
ORDER BY c.timestamp ASC
|
|
44
|
+
const rows = db.prepare(`
|
|
45
|
+
SELECT r.commit_hash, r.relation_type,
|
|
46
|
+
c.message, c.author, c.timestamp
|
|
47
|
+
FROM spec_commit_relations r
|
|
48
|
+
JOIN commit_nodes c ON c.hash = r.commit_hash
|
|
49
|
+
WHERE r.spec_id = ?
|
|
50
|
+
ORDER BY c.timestamp ASC
|
|
44
51
|
`).all(specId);
|
|
45
52
|
return rows.map(r => ({
|
|
46
53
|
specId,
|
|
@@ -57,10 +64,10 @@ function findCommitsBySpec(db, specId) {
|
|
|
57
64
|
* old active spec's relations move to the deprecated record.
|
|
58
65
|
*/
|
|
59
66
|
function transferSpecCommitRelations(db, fromSpecId, toSpecId) {
|
|
60
|
-
db.prepare(`
|
|
61
|
-
UPDATE spec_commit_relations
|
|
62
|
-
SET spec_id = @toSpecId
|
|
63
|
-
WHERE spec_id = @fromSpecId
|
|
67
|
+
db.prepare(`
|
|
68
|
+
UPDATE spec_commit_relations
|
|
69
|
+
SET spec_id = @toSpecId
|
|
70
|
+
WHERE spec_id = @fromSpecId
|
|
64
71
|
`).run({ fromSpecId, toSpecId });
|
|
65
72
|
}
|
|
66
73
|
// ===========================================================================
|
|
@@ -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) {
|
|
74
|
-
db.prepare(`
|
|
75
|
-
INSERT OR IGNORE INTO commit_fragment_relations
|
|
76
|
-
(commit_hash, fragment_id)
|
|
77
|
-
VALUES (@commitHash, @fragmentId)
|
|
78
|
-
`).run({ commitHash, fragmentId });
|
|
80
|
+
function insertCommitFragmentRelation(db, commitHash, fragmentId, relationType) {
|
|
81
|
+
db.prepare(`
|
|
82
|
+
INSERT OR IGNORE INTO commit_fragment_relations
|
|
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
|
|
@@ -85,10 +92,10 @@ function insertCommitFragmentRelation(db, commitHash, fragmentId) {
|
|
|
85
92
|
* `INSERT OR IGNORE` — duplicates are silently skipped.
|
|
86
93
|
*/
|
|
87
94
|
function insertSpecSpecRelation(db, sourceId, targetId, relationType) {
|
|
88
|
-
db.prepare(`
|
|
89
|
-
INSERT OR IGNORE INTO spec_spec_relations
|
|
90
|
-
(source_id, target_id, relation_type)
|
|
91
|
-
VALUES (@sourceId, @targetId, @relationType)
|
|
95
|
+
db.prepare(`
|
|
96
|
+
INSERT OR IGNORE INTO spec_spec_relations
|
|
97
|
+
(source_id, target_id, relation_type)
|
|
98
|
+
VALUES (@sourceId, @targetId, @relationType)
|
|
92
99
|
`).run({ sourceId, targetId, relationType });
|
|
93
100
|
}
|
|
94
101
|
/**
|
|
@@ -96,10 +103,10 @@ function insertSpecSpecRelation(db, sourceId, targetId, relationType) {
|
|
|
96
103
|
* Called when a spec is deprecated (similarity links become stale).
|
|
97
104
|
*/
|
|
98
105
|
function deleteSimilarToRelations(db, specId) {
|
|
99
|
-
db.prepare(`
|
|
100
|
-
DELETE FROM spec_spec_relations
|
|
101
|
-
WHERE relation_type = 'SIMILAR_TO'
|
|
102
|
-
AND (source_id = ? OR target_id = ?)
|
|
106
|
+
db.prepare(`
|
|
107
|
+
DELETE FROM spec_spec_relations
|
|
108
|
+
WHERE relation_type = 'SIMILAR_TO'
|
|
109
|
+
AND (source_id = ? OR target_id = ?)
|
|
103
110
|
`).run(specId, specId);
|
|
104
111
|
}
|
|
105
112
|
/**
|
|
@@ -112,27 +119,27 @@ function transferSpecSpecRelations(db, fromSpecId, toSpecId) {
|
|
|
112
119
|
// their own explicit BEGIN/COMMIT boundaries.
|
|
113
120
|
// Delete rows at `toSpecId` that would collide with the rows being
|
|
114
121
|
// transferred, so the UPDATE below cannot trigger a PRIMARY KEY conflict.
|
|
115
|
-
db.prepare(`
|
|
116
|
-
DELETE FROM spec_spec_relations
|
|
117
|
-
WHERE source_id = @toSpecId
|
|
118
|
-
AND (target_id, relation_type) IN (
|
|
119
|
-
SELECT target_id, relation_type FROM spec_spec_relations
|
|
120
|
-
WHERE source_id = @fromSpecId
|
|
121
|
-
)
|
|
122
|
+
db.prepare(`
|
|
123
|
+
DELETE FROM spec_spec_relations
|
|
124
|
+
WHERE source_id = @toSpecId
|
|
125
|
+
AND (target_id, relation_type) IN (
|
|
126
|
+
SELECT target_id, relation_type FROM spec_spec_relations
|
|
127
|
+
WHERE source_id = @fromSpecId
|
|
128
|
+
)
|
|
122
129
|
`).run({ fromSpecId, toSpecId });
|
|
123
|
-
db.prepare(`
|
|
124
|
-
DELETE FROM spec_spec_relations
|
|
125
|
-
WHERE target_id = @toSpecId
|
|
126
|
-
AND (source_id, relation_type) IN (
|
|
127
|
-
SELECT source_id, relation_type FROM spec_spec_relations
|
|
128
|
-
WHERE target_id = @fromSpecId
|
|
129
|
-
)
|
|
130
|
+
db.prepare(`
|
|
131
|
+
DELETE FROM spec_spec_relations
|
|
132
|
+
WHERE target_id = @toSpecId
|
|
133
|
+
AND (source_id, relation_type) IN (
|
|
134
|
+
SELECT source_id, relation_type FROM spec_spec_relations
|
|
135
|
+
WHERE target_id = @fromSpecId
|
|
136
|
+
)
|
|
130
137
|
`).run({ fromSpecId, toSpecId });
|
|
131
|
-
db.prepare(`
|
|
132
|
-
UPDATE spec_spec_relations SET source_id = @toSpecId WHERE source_id = @fromSpecId
|
|
138
|
+
db.prepare(`
|
|
139
|
+
UPDATE spec_spec_relations SET source_id = @toSpecId WHERE source_id = @fromSpecId
|
|
133
140
|
`).run({ fromSpecId, toSpecId });
|
|
134
|
-
db.prepare(`
|
|
135
|
-
UPDATE spec_spec_relations SET target_id = @toSpecId WHERE target_id = @fromSpecId
|
|
141
|
+
db.prepare(`
|
|
142
|
+
UPDATE spec_spec_relations SET target_id = @toSpecId WHERE target_id = @fromSpecId
|
|
136
143
|
`).run({ fromSpecId, toSpecId });
|
|
137
144
|
}
|
|
138
145
|
// ===========================================================================
|
|
@@ -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
|
*/
|
|
@@ -89,12 +93,12 @@ function runSpecMigrations(db, fromVersion) {
|
|
|
89
93
|
// Create the FTS5 virtual table — the IF NOT EXISTS in schema.sql
|
|
90
94
|
// handles the case where DDL already ran, but we explicitly run it
|
|
91
95
|
// here for databases that existed before this migration was added.
|
|
92
|
-
db.exec(`
|
|
93
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS code_fragments_fts USING fts5(
|
|
94
|
-
id,
|
|
95
|
-
file_path,
|
|
96
|
-
code_diff
|
|
97
|
-
);
|
|
96
|
+
db.exec(`
|
|
97
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS code_fragments_fts USING fts5(
|
|
98
|
+
id,
|
|
99
|
+
file_path,
|
|
100
|
+
code_diff
|
|
101
|
+
);
|
|
98
102
|
`);
|
|
99
103
|
// Populate FTS from existing code_fragment_nodes data
|
|
100
104
|
const count = db.prepare('SELECT COUNT(*) as cnt FROM code_fragments_fts').get().cnt;
|
|
@@ -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"}
|