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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusterer.js","sourceRoot":"","sources":["../../../src/spec/mine/clusterer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-commit feature extraction for clustering — symbol names, file paths,
|
|
3
|
+
* directory prefixes, ticket references, change counts, and cohesion.
|
|
4
|
+
*
|
|
5
|
+
* @module spec/mine/clustering/features
|
|
6
|
+
*/
|
|
7
|
+
import { CommitChange } from '../scanner';
|
|
8
|
+
/** Minimum number of changed symbols (added + removed + modified) required
|
|
9
|
+
* for a solo commit to be promoted into its own cluster. Commits below
|
|
10
|
+
* this threshold go to `unclustered` — they are too small to warrant a
|
|
11
|
+
* standalone spec document. */
|
|
12
|
+
export declare const MIN_SYMBOLS_FOR_SOLO_CLUSTER = 2;
|
|
13
|
+
/** Collect all symbol names across all file changes in a commit. */
|
|
14
|
+
export declare function collectSymbolNames(change: CommitChange): string[];
|
|
15
|
+
/** Collect all file paths changed in a commit. */
|
|
16
|
+
export declare function collectFilePaths(change: CommitChange): string[];
|
|
17
|
+
/** Collect directory prefixes (first 2 path segments) for module proximity.
|
|
18
|
+
* For single-segment paths (root-level files) the filename itself is used as
|
|
19
|
+
* the key — this prevents unrelated root-level files from falsely sharing an
|
|
20
|
+
* empty "directory" and being grouped together. */
|
|
21
|
+
export declare function collectDirectoryPrefixes(change: CommitChange): string[];
|
|
22
|
+
/** Count total changed symbols across all file changes in a commit. */
|
|
23
|
+
export declare function countChangedSymbols(change: CommitChange): number;
|
|
24
|
+
/** Compute the cohesion ratio for a commit — symbols changed per file touched.
|
|
25
|
+
* Low cohesion (< 1.0) suggests a mechanical refactor across many files;
|
|
26
|
+
* high cohesion (≥ 2.0) suggests concentrated feature work. */
|
|
27
|
+
export declare function computeCohesion(change: CommitChange): number;
|
|
28
|
+
/** Extract ticket references (e.g., PROJ-123, #456) from a commit message. */
|
|
29
|
+
export declare function extractTicketRefs(message: string): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Fallback quality gate: true when a commit has at least one new file that
|
|
32
|
+
* is not a test file. Used when the symbol-level change count is below the
|
|
33
|
+
* solo-cluster threshold — a commit that adds non-test source files carries
|
|
34
|
+
* structural intent even when the extractor could not produce symbols
|
|
35
|
+
* (e.g. ArkTS files without an active extraction context).
|
|
36
|
+
*/
|
|
37
|
+
export declare function hasNewNonTestFiles(change: CommitChange): boolean;
|
|
38
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/features.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;gCAGgC;AAChC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAWjE;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAM/D;AAED;;;oDAGoD;AACpD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAWvE;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQhE;AAED;;gEAEgE;AAChE,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAI5D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ3D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAOhE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per-commit feature extraction for clustering — symbol names, file paths,
|
|
4
|
+
* directory prefixes, ticket references, change counts, and cohesion.
|
|
5
|
+
*
|
|
6
|
+
* @module spec/mine/clustering/features
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MIN_SYMBOLS_FOR_SOLO_CLUSTER = void 0;
|
|
10
|
+
exports.collectSymbolNames = collectSymbolNames;
|
|
11
|
+
exports.collectFilePaths = collectFilePaths;
|
|
12
|
+
exports.collectDirectoryPrefixes = collectDirectoryPrefixes;
|
|
13
|
+
exports.countChangedSymbols = countChangedSymbols;
|
|
14
|
+
exports.computeCohesion = computeCohesion;
|
|
15
|
+
exports.extractTicketRefs = extractTicketRefs;
|
|
16
|
+
exports.hasNewNonTestFiles = hasNewNonTestFiles;
|
|
17
|
+
const query_utils_1 = require("../../../search/query-utils");
|
|
18
|
+
/** Minimum number of changed symbols (added + removed + modified) required
|
|
19
|
+
* for a solo commit to be promoted into its own cluster. Commits below
|
|
20
|
+
* this threshold go to `unclustered` — they are too small to warrant a
|
|
21
|
+
* standalone spec document. */
|
|
22
|
+
exports.MIN_SYMBOLS_FOR_SOLO_CLUSTER = 2;
|
|
23
|
+
/** Collect all symbol names across all file changes in a commit. */
|
|
24
|
+
function collectSymbolNames(change) {
|
|
25
|
+
const names = new Set();
|
|
26
|
+
for (const fc of change.fileChanges) {
|
|
27
|
+
for (const s of fc.addedSymbols)
|
|
28
|
+
names.add(s.name);
|
|
29
|
+
for (const s of fc.removedSymbols)
|
|
30
|
+
names.add(s.name);
|
|
31
|
+
for (const m of fc.modifiedSymbols) {
|
|
32
|
+
names.add(m.old.name);
|
|
33
|
+
names.add(m.new.name);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return Array.from(names);
|
|
37
|
+
}
|
|
38
|
+
/** Collect all file paths changed in a commit. */
|
|
39
|
+
function collectFilePaths(change) {
|
|
40
|
+
const paths = new Set();
|
|
41
|
+
for (const fc of change.fileChanges) {
|
|
42
|
+
paths.add(fc.filePath);
|
|
43
|
+
}
|
|
44
|
+
return Array.from(paths);
|
|
45
|
+
}
|
|
46
|
+
/** Collect directory prefixes (first 2 path segments) for module proximity.
|
|
47
|
+
* For single-segment paths (root-level files) the filename itself is used as
|
|
48
|
+
* the key — this prevents unrelated root-level files from falsely sharing an
|
|
49
|
+
* empty "directory" and being grouped together. */
|
|
50
|
+
function collectDirectoryPrefixes(change) {
|
|
51
|
+
const dirs = new Set();
|
|
52
|
+
for (const fc of change.fileChanges) {
|
|
53
|
+
const parts = fc.filePath.split('/');
|
|
54
|
+
if (parts.length === 1) {
|
|
55
|
+
dirs.add(parts[0]);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
dirs.add(parts.slice(0, 2).join('/'));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Array.from(dirs);
|
|
62
|
+
}
|
|
63
|
+
/** Count total changed symbols across all file changes in a commit. */
|
|
64
|
+
function countChangedSymbols(change) {
|
|
65
|
+
let count = 0;
|
|
66
|
+
for (const fc of change.fileChanges) {
|
|
67
|
+
count += fc.addedSymbols.length;
|
|
68
|
+
count += fc.removedSymbols.length;
|
|
69
|
+
count += fc.modifiedSymbols.length;
|
|
70
|
+
}
|
|
71
|
+
return count;
|
|
72
|
+
}
|
|
73
|
+
/** Compute the cohesion ratio for a commit — symbols changed per file touched.
|
|
74
|
+
* Low cohesion (< 1.0) suggests a mechanical refactor across many files;
|
|
75
|
+
* high cohesion (≥ 2.0) suggests concentrated feature work. */
|
|
76
|
+
function computeCohesion(change) {
|
|
77
|
+
const totalSymbols = countChangedSymbols(change);
|
|
78
|
+
const filesTouched = change.fileChanges.length || 1;
|
|
79
|
+
return totalSymbols / filesTouched;
|
|
80
|
+
}
|
|
81
|
+
/** Extract ticket references (e.g., PROJ-123, #456) from a commit message. */
|
|
82
|
+
function extractTicketRefs(message) {
|
|
83
|
+
const refs = [];
|
|
84
|
+
const jiraRe = /[A-Z]+-\d+/g;
|
|
85
|
+
const ghRe = /#\d+/g;
|
|
86
|
+
let m;
|
|
87
|
+
while ((m = jiraRe.exec(message)) !== null)
|
|
88
|
+
refs.push(m[0]);
|
|
89
|
+
while ((m = ghRe.exec(message)) !== null)
|
|
90
|
+
refs.push(m[0]);
|
|
91
|
+
return Array.from(new Set(refs));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Fallback quality gate: true when a commit has at least one new file that
|
|
95
|
+
* is not a test file. Used when the symbol-level change count is below the
|
|
96
|
+
* solo-cluster threshold — a commit that adds non-test source files carries
|
|
97
|
+
* structural intent even when the extractor could not produce symbols
|
|
98
|
+
* (e.g. ArkTS files without an active extraction context).
|
|
99
|
+
*/
|
|
100
|
+
function hasNewNonTestFiles(change) {
|
|
101
|
+
for (const fc of change.fileChanges) {
|
|
102
|
+
if (fc.isNewFile && !(0, query_utils_1.isTestFile)(fc.filePath)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/features.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commit Clusterer — multi-signal graph clustering for the `spec mine` pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Groups commits by structural (AST symbol overlap), file-path, temporal,
|
|
5
|
+
* and commit-message similarity. Pure TypeScript implementation — no native
|
|
6
|
+
* dependencies required.
|
|
7
|
+
*
|
|
8
|
+
* Orchestrates the pieces in this directory:
|
|
9
|
+
* - `text-similarity` — tokenize / Jaccard / cosine / TF-IDF
|
|
10
|
+
* - `features` — per-commit feature extraction
|
|
11
|
+
* - `leiden` — generic Leiden community detection + tuning
|
|
12
|
+
*
|
|
13
|
+
* @module spec/mine/clustering
|
|
14
|
+
*/
|
|
15
|
+
import { CommitChange } from '../scanner';
|
|
16
|
+
/** A cluster of semantically-related commits. */
|
|
17
|
+
export interface CommitCluster {
|
|
18
|
+
id: number;
|
|
19
|
+
commits: CommitChange[];
|
|
20
|
+
primaryFiles: string[];
|
|
21
|
+
primarySymbols: string[];
|
|
22
|
+
summary: string;
|
|
23
|
+
timeRange: {
|
|
24
|
+
start: number;
|
|
25
|
+
end: number;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Full clustering result including unclustered outliers and stats. */
|
|
29
|
+
export interface ClusterResult {
|
|
30
|
+
clusters: CommitCluster[];
|
|
31
|
+
unclustered: CommitChange[];
|
|
32
|
+
stats: {
|
|
33
|
+
totalCommits: number;
|
|
34
|
+
clusteredCommits: number;
|
|
35
|
+
clusterCount: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cluster commits using Leiden community detection on a multi-signal
|
|
40
|
+
* similarity graph, with recursive sub-splitting for large clusters.
|
|
41
|
+
*
|
|
42
|
+
* The pipeline:
|
|
43
|
+
* 1. Build a weighted similarity graph from AST symbol, file-path,
|
|
44
|
+
* commit-message TF-IDF, ticket-reference, and temporal signals.
|
|
45
|
+
* 2. Run Leiden community detection with auto-tuned resolution γ.
|
|
46
|
+
* 3. Greedy-merge if still too many communities.
|
|
47
|
+
* 4. Recursively split large clusters (≥ 4 commits) by running
|
|
48
|
+
* Leiden on their sub-graphs.
|
|
49
|
+
*
|
|
50
|
+
* Replaces the previous Louvain (no refinement) and connected-components
|
|
51
|
+
* (single-linkage chaining) approaches.
|
|
52
|
+
*
|
|
53
|
+
* @param changes - AST change data for each commit.
|
|
54
|
+
* @param threshold - Minimum similarity (0-1) for considering an edge.
|
|
55
|
+
* @param maxClusters - Desired maximum number of top-level clusters.
|
|
56
|
+
* The resolution parameter γ is auto-tuned to approach
|
|
57
|
+
* this target. Recursive splitting may produce more
|
|
58
|
+
* clusters at finer granularities.
|
|
59
|
+
* @returns Clustered result with stats.
|
|
60
|
+
*/
|
|
61
|
+
export declare function clusterCommits(changes: CommitChange[], threshold: number, maxClusters: number): ClusterResult;
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAwB1C,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAoFD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,aAAa,CA0Mf"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Commit Clusterer — multi-signal graph clustering for the `spec mine` pipeline.
|
|
4
|
+
*
|
|
5
|
+
* Groups commits by structural (AST symbol overlap), file-path, temporal,
|
|
6
|
+
* and commit-message similarity. Pure TypeScript implementation — no native
|
|
7
|
+
* dependencies required.
|
|
8
|
+
*
|
|
9
|
+
* Orchestrates the pieces in this directory:
|
|
10
|
+
* - `text-similarity` — tokenize / Jaccard / cosine / TF-IDF
|
|
11
|
+
* - `features` — per-commit feature extraction
|
|
12
|
+
* - `leiden` — generic Leiden community detection + tuning
|
|
13
|
+
*
|
|
14
|
+
* @module spec/mine/clustering
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.clusterCommits = clusterCommits;
|
|
18
|
+
const errors_1 = require("../../../errors");
|
|
19
|
+
const text_similarity_1 = require("./text-similarity");
|
|
20
|
+
const features_1 = require("./features");
|
|
21
|
+
const leiden_1 = require("./leiden");
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Similarity Computation
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Compute multi-signal similarity between two commits.
|
|
27
|
+
*
|
|
28
|
+
* Weights:
|
|
29
|
+
* - Symbol overlap (Jaccard): 0.40
|
|
30
|
+
* - Spatial proximity (Jaccard): 0.15 (max of file-path and dir-prefix)
|
|
31
|
+
* - Message TF-IDF cosine: 0.25
|
|
32
|
+
* - Ticket reference overlap: 0.10
|
|
33
|
+
* - Temporal proximity: 0.10 (half-life 3 days)
|
|
34
|
+
*
|
|
35
|
+
* A cohesion penalty is applied as a multiplier when one commit has low
|
|
36
|
+
* symbol-per-file density (< 2.0), which is characteristic of mechanical
|
|
37
|
+
* refactors that should not bridge unrelated feature clusters.
|
|
38
|
+
*/
|
|
39
|
+
function computeSimilarity(a, b, aSymbols, bSymbols, aFiles, bFiles, aDirs, bDirs, aTickets, bTickets, msgTfidfMatrix, aIdx, bIdx) {
|
|
40
|
+
// Symbol overlap — highest weight because AST-level diff is precise
|
|
41
|
+
const symbolSim = (0, text_similarity_1.jaccard)(aSymbols, bSymbols);
|
|
42
|
+
// Spatial proximity — max of exact file-path and module-level dir-prefix
|
|
43
|
+
// overlap, so same-file edits get full credit and same-module edits also
|
|
44
|
+
// connect, without double-counting the same spatial dimension.
|
|
45
|
+
const spatialSim = Math.max((0, text_similarity_1.jaccard)(aFiles, bFiles), (0, text_similarity_1.jaccard)(aDirs, bDirs));
|
|
46
|
+
// Message TF-IDF cosine
|
|
47
|
+
const msgSim = (0, text_similarity_1.cosineSimilarity)(msgTfidfMatrix[aIdx], msgTfidfMatrix[bIdx]);
|
|
48
|
+
// Ticket reference overlap
|
|
49
|
+
const ticketSim = (0, text_similarity_1.jaccard)(aTickets, bTickets);
|
|
50
|
+
// Temporal proximity — half-life 3 days (259200 seconds)
|
|
51
|
+
const halfLife = 3 * 24 * 60 * 60 * 1000;
|
|
52
|
+
const maxTimeSpan = Math.abs(a.timestamp - b.timestamp);
|
|
53
|
+
const timeSim = Math.exp(-maxTimeSpan / halfLife);
|
|
54
|
+
// Cohesion penalty: low cohesion (many files, few symbols) = refactor-like.
|
|
55
|
+
// Penalty multiplier: 0.6 at cohesion 0 → 1.0 at cohesion ≥ 2.0
|
|
56
|
+
const minCohesion = Math.min((0, features_1.computeCohesion)(a), (0, features_1.computeCohesion)(b));
|
|
57
|
+
const cohesionPenalty = minCohesion >= 2.0
|
|
58
|
+
? 1.0
|
|
59
|
+
: 0.6 + 0.4 * (minCohesion / 2.0);
|
|
60
|
+
const rawScore = 0.40 * symbolSim +
|
|
61
|
+
0.15 * spatialSim +
|
|
62
|
+
0.25 * msgSim +
|
|
63
|
+
0.10 * ticketSim +
|
|
64
|
+
0.10 * timeSim;
|
|
65
|
+
return rawScore * cohesionPenalty;
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Public API
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
/**
|
|
71
|
+
* Cluster commits using Leiden community detection on a multi-signal
|
|
72
|
+
* similarity graph, with recursive sub-splitting for large clusters.
|
|
73
|
+
*
|
|
74
|
+
* The pipeline:
|
|
75
|
+
* 1. Build a weighted similarity graph from AST symbol, file-path,
|
|
76
|
+
* commit-message TF-IDF, ticket-reference, and temporal signals.
|
|
77
|
+
* 2. Run Leiden community detection with auto-tuned resolution γ.
|
|
78
|
+
* 3. Greedy-merge if still too many communities.
|
|
79
|
+
* 4. Recursively split large clusters (≥ 4 commits) by running
|
|
80
|
+
* Leiden on their sub-graphs.
|
|
81
|
+
*
|
|
82
|
+
* Replaces the previous Louvain (no refinement) and connected-components
|
|
83
|
+
* (single-linkage chaining) approaches.
|
|
84
|
+
*
|
|
85
|
+
* @param changes - AST change data for each commit.
|
|
86
|
+
* @param threshold - Minimum similarity (0-1) for considering an edge.
|
|
87
|
+
* @param maxClusters - Desired maximum number of top-level clusters.
|
|
88
|
+
* The resolution parameter γ is auto-tuned to approach
|
|
89
|
+
* this target. Recursive splitting may produce more
|
|
90
|
+
* clusters at finer granularities.
|
|
91
|
+
* @returns Clustered result with stats.
|
|
92
|
+
*/
|
|
93
|
+
function clusterCommits(changes, threshold, maxClusters) {
|
|
94
|
+
const n = changes.length;
|
|
95
|
+
// Edge cases: 0 or 1 commit — avoid Leiden overhead.
|
|
96
|
+
if (n === 0) {
|
|
97
|
+
return {
|
|
98
|
+
clusters: [],
|
|
99
|
+
unclustered: [],
|
|
100
|
+
stats: { totalCommits: 0, clusteredCommits: 0, clusterCount: 0 },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (n === 1) {
|
|
104
|
+
const c = changes[0];
|
|
105
|
+
const totalSymbols = (0, features_1.countChangedSymbols)(c);
|
|
106
|
+
if (totalSymbols < features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER && !(0, features_1.hasNewNonTestFiles)(c)) {
|
|
107
|
+
(0, errors_1.logDebug)('Clusterer: single commit below quality threshold', {
|
|
108
|
+
hash: c.commitHash.slice(0, 7),
|
|
109
|
+
changedSymbols: totalSymbols,
|
|
110
|
+
minRequired: features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER,
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
clusters: [],
|
|
114
|
+
unclustered: [c],
|
|
115
|
+
stats: { totalCommits: 1, clusteredCommits: 0, clusterCount: 0 },
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const syms = (0, features_1.collectSymbolNames)(c);
|
|
119
|
+
const files = (0, features_1.collectFilePaths)(c);
|
|
120
|
+
return {
|
|
121
|
+
clusters: [
|
|
122
|
+
{
|
|
123
|
+
id: 0,
|
|
124
|
+
commits: [c],
|
|
125
|
+
primaryFiles: files,
|
|
126
|
+
primarySymbols: syms,
|
|
127
|
+
summary: `1 commit: ${c.commitMessage}`,
|
|
128
|
+
timeRange: { start: c.timestamp, end: c.timestamp },
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
unclustered: [],
|
|
132
|
+
stats: { totalCommits: 1, clusteredCommits: 1, clusterCount: 1 },
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// n >= 2: full pipeline from here.
|
|
136
|
+
// --- Pre-compute per-commit feature vectors ---
|
|
137
|
+
const messages = [];
|
|
138
|
+
const allSymbols = [];
|
|
139
|
+
const allFiles = [];
|
|
140
|
+
const allDirs = [];
|
|
141
|
+
const allTickets = [];
|
|
142
|
+
for (const change of changes) {
|
|
143
|
+
messages.push((0, text_similarity_1.tokenize)(change.commitMessage));
|
|
144
|
+
allSymbols.push((0, features_1.collectSymbolNames)(change));
|
|
145
|
+
allFiles.push((0, features_1.collectFilePaths)(change));
|
|
146
|
+
allDirs.push((0, features_1.collectDirectoryPrefixes)(change));
|
|
147
|
+
allTickets.push((0, features_1.extractTicketRefs)(change.commitMessage));
|
|
148
|
+
}
|
|
149
|
+
// --- Build TF-IDF vectors for commit messages ---
|
|
150
|
+
const tfidf = new text_similarity_1.TfidfVectorizer();
|
|
151
|
+
tfidf.fit(messages);
|
|
152
|
+
const msgTfidfMatrix = messages.map((msg) => tfidf.transform(msg));
|
|
153
|
+
// --- Build weighted similarity graph ---
|
|
154
|
+
const graph = Array.from({ length: n }, () => new Array(n).fill(0));
|
|
155
|
+
for (let i = 0; i < n; i++) {
|
|
156
|
+
for (let j = i + 1; j < n; j++) {
|
|
157
|
+
const sim = computeSimilarity(changes[i], changes[j], allSymbols[i], allSymbols[j], allFiles[i], allFiles[j], allDirs[i], allDirs[j], allTickets[i], allTickets[j], msgTfidfMatrix, i, j);
|
|
158
|
+
if (sim >= threshold) {
|
|
159
|
+
graph[i][j] = sim;
|
|
160
|
+
graph[j][i] = sim;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// --- Leiden community detection with auto-tuned resolution ---
|
|
165
|
+
let components = (0, leiden_1.autoTuneResolution)(graph, maxClusters);
|
|
166
|
+
// --- Greedy merge if still too many communities ---
|
|
167
|
+
if (components.length > maxClusters) {
|
|
168
|
+
(0, errors_1.logDebug)('Clusterer: post-Leiden greedy merge', {
|
|
169
|
+
beforeMerge: components.length,
|
|
170
|
+
maxClusters,
|
|
171
|
+
});
|
|
172
|
+
components = (0, leiden_1.greedyMerge)(graph, components, maxClusters);
|
|
173
|
+
}
|
|
174
|
+
// --- Recursive sub-splitting for large clusters ---
|
|
175
|
+
components = (0, leiden_1.recursiveSubSplit)(graph, components);
|
|
176
|
+
// --- Sort by size descending for deterministic output ---
|
|
177
|
+
components.sort((a, b) => b.length - a.length);
|
|
178
|
+
// --- Filter: size-1 communities go to unclustered if < MIN_SYMBOLS ---
|
|
179
|
+
const validComponents = [];
|
|
180
|
+
const unclusteredIndices = [];
|
|
181
|
+
for (const comp of components) {
|
|
182
|
+
if (comp.length === 1) {
|
|
183
|
+
const idx = comp[0];
|
|
184
|
+
const c = changes[idx];
|
|
185
|
+
if ((0, features_1.countChangedSymbols)(c) < features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER && !(0, features_1.hasNewNonTestFiles)(c)) {
|
|
186
|
+
unclusteredIndices.push(idx);
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
validComponents.push(comp);
|
|
191
|
+
}
|
|
192
|
+
// --- Build cluster objects ---
|
|
193
|
+
const clustered = new Set();
|
|
194
|
+
const clusters = [];
|
|
195
|
+
for (let i = 0; i < validComponents.length; i++) {
|
|
196
|
+
const comp = validComponents[i];
|
|
197
|
+
const clusterCommits = comp.map((idx) => {
|
|
198
|
+
clustered.add(idx);
|
|
199
|
+
return changes[idx];
|
|
200
|
+
});
|
|
201
|
+
// Compute primary files (appear in >50% of cluster commits)
|
|
202
|
+
const fileCounts = new Map();
|
|
203
|
+
const symbolCounts = new Map();
|
|
204
|
+
const allTimes = clusterCommits
|
|
205
|
+
.map((c) => c.timestamp)
|
|
206
|
+
.filter((t) => t > 0);
|
|
207
|
+
for (const c of clusterCommits) {
|
|
208
|
+
for (const fp of (0, features_1.collectFilePaths)(c)) {
|
|
209
|
+
fileCounts.set(fp, (fileCounts.get(fp) || 0) + 1);
|
|
210
|
+
}
|
|
211
|
+
for (const s of (0, features_1.collectSymbolNames)(c)) {
|
|
212
|
+
symbolCounts.set(s, (symbolCounts.get(s) || 0) + 1);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const half = clusterCommits.length / 2;
|
|
216
|
+
const primaryFiles = Array.from(fileCounts.entries())
|
|
217
|
+
.filter(([, count]) => count >= half)
|
|
218
|
+
.sort((a, b) => b[1] - a[1])
|
|
219
|
+
.map(([fp]) => fp);
|
|
220
|
+
const primarySymbols = Array.from(symbolCounts.entries())
|
|
221
|
+
.sort((a, b) => b[1] - a[1])
|
|
222
|
+
.slice(0, 10)
|
|
223
|
+
.map(([s]) => s);
|
|
224
|
+
// Build summary
|
|
225
|
+
const fileSummary = primaryFiles.length > 0
|
|
226
|
+
? `changing ${primaryFiles.slice(0, 3).join(', ')}`
|
|
227
|
+
: '';
|
|
228
|
+
const summary = `${clusterCommits.length} commits ${fileSummary}`.trim();
|
|
229
|
+
clusters.push({
|
|
230
|
+
id: i,
|
|
231
|
+
commits: clusterCommits,
|
|
232
|
+
primaryFiles,
|
|
233
|
+
primarySymbols,
|
|
234
|
+
summary,
|
|
235
|
+
timeRange: {
|
|
236
|
+
start: allTimes.length > 0 ? Math.min(...allTimes) : 0,
|
|
237
|
+
end: allTimes.length > 0 ? Math.max(...allTimes) : 0,
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
// --- Unclustered commits ---
|
|
242
|
+
const unclustered = changes.filter((_, i) => !clustered.has(i));
|
|
243
|
+
(0, errors_1.logDebug)('Clusterer result', {
|
|
244
|
+
totalCommits: n,
|
|
245
|
+
clusterCount: clusters.length,
|
|
246
|
+
clusteredCommits: n - unclustered.length,
|
|
247
|
+
unclustered: unclustered.length,
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
clusters,
|
|
251
|
+
unclustered,
|
|
252
|
+
stats: {
|
|
253
|
+
totalCommits: n,
|
|
254
|
+
clusteredCommits: n - unclustered.length,
|
|
255
|
+
clusterCount: clusters.length,
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leiden community detection on a weighted similarity graph — a generic
|
|
3
|
+
* graph-clustering implementation with no dependency on the commit domain.
|
|
4
|
+
*
|
|
5
|
+
* Replaces Louvain and connected-components (single-linkage) to avoid chaining
|
|
6
|
+
* all nodes into one giant cluster and to guarantee well-connected communities
|
|
7
|
+
* via the refinement phase. A resolution parameter γ is auto-tuned via
|
|
8
|
+
* multiplicative search so the output community count stays close to a target.
|
|
9
|
+
*
|
|
10
|
+
* @module spec/mine/clustering/leiden
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Weighted adjacency matrix: graph[i][j] = similarity score (0 means no edge).
|
|
14
|
+
* Always symmetric: graph[i][j] === graph[j][i].
|
|
15
|
+
*/
|
|
16
|
+
export type WeightedGraph = number[][];
|
|
17
|
+
/**
|
|
18
|
+
* Core Leiden algorithm: iterative local-moving + refinement + aggregation.
|
|
19
|
+
*
|
|
20
|
+
* Unlike Louvain (which feeds the Phase-1 partition directly into aggregation),
|
|
21
|
+
* Leiden inserts a refinement step that splits each Phase-1 community into
|
|
22
|
+
* well-connected sub-communities. Only the refined partition is aggregated.
|
|
23
|
+
* This guarantees internally-connected communities and avoids the
|
|
24
|
+
* "disconnected community" defect of Louvain.
|
|
25
|
+
*
|
|
26
|
+
* @param graph - Weighted undirected similarity graph.
|
|
27
|
+
* @param gamma - Resolution parameter (default 1.0).
|
|
28
|
+
* @param depth - Aggregation depth guard (internal use).
|
|
29
|
+
*/
|
|
30
|
+
export declare function leiden(graph: WeightedGraph, gamma: number, depth?: number): number[][];
|
|
31
|
+
/**
|
|
32
|
+
* Recursively split large clusters by running Leiden on their sub-graphs.
|
|
33
|
+
*
|
|
34
|
+
* For each cluster with size > MIN_SUBSPLIT_SIZE, extracts its sub-graph,
|
|
35
|
+
* runs Leiden with auto-tuned γ (targeting up to min(5, floor(size/2))),
|
|
36
|
+
* and recursively splits further if sub-communities still have structure.
|
|
37
|
+
*
|
|
38
|
+
* Stop conditions:
|
|
39
|
+
* - Cluster size ≤ MIN_SUBSPLIT_SIZE
|
|
40
|
+
* - Sub-graph Leiden returns 1 community (no further structure)
|
|
41
|
+
* - Max recursion depth reached (MAX_SUBSPLIT_DEPTH)
|
|
42
|
+
*
|
|
43
|
+
* @param graph - Full original weighted graph.
|
|
44
|
+
* @param communities - Current partition (list of node-index arrays).
|
|
45
|
+
* @param depth - Current recursion depth (internal).
|
|
46
|
+
* @returns Flat list of leaf-community node-index arrays.
|
|
47
|
+
*/
|
|
48
|
+
export declare function recursiveSubSplit(graph: WeightedGraph, communities: number[][], depth?: number): number[][];
|
|
49
|
+
/**
|
|
50
|
+
* Adjust the resolution parameter γ so that Leiden produces approximately
|
|
51
|
+
* `targetClusters` communities.
|
|
52
|
+
*
|
|
53
|
+
* Uses multiplicative search: higher γ → more communities, lower γ → fewer.
|
|
54
|
+
*/
|
|
55
|
+
export declare function autoTuneResolution(graph: WeightedGraph, maxClusters: number): number[][];
|
|
56
|
+
/**
|
|
57
|
+
* Greedily merge communities until count ≤ maxClusters, by repeatedly
|
|
58
|
+
* merging the pair with the highest average inter-community similarity.
|
|
59
|
+
*/
|
|
60
|
+
export declare function greedyMerge(graph: WeightedGraph, communities: number[][], maxClusters: number): number[][];
|
|
61
|
+
//# sourceMappingURL=leiden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/leiden.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,EAAE,EAAE,CAAC;AAoKvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,GAChB,MAAM,EAAE,EAAE,CAsGZ;AAqGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,EAAE,EACvB,KAAK,GAAE,MAAU,GAChB,MAAM,EAAE,EAAE,CAiCZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,EAAE,CA2EZ;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,EAAE,CAmCZ"}
|