homegraph 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -11
- package/dist/bin/homegraph.js +298 -72
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +117 -11
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +207 -6
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +461 -20
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +19 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +157 -3
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +426 -9
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +32 -1
- package/dist/db/sqlite-adapter.d.ts +24 -17
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +292 -36
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/db/wal-valve.d.ts +119 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +290 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +9 -5
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +210 -19
- package/dist/directory.js.map +1 -1
- package/dist/extraction/arkts-batch-worker.js +3 -2
- package/dist/extraction/arkts-batch-worker.js.map +1 -1
- package/dist/extraction/cfml-extractor.d.ts +107 -0
- package/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/dist/extraction/cfml-extractor.js +494 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/default-ignore.d.ts +39 -0
- package/dist/extraction/default-ignore.d.ts.map +1 -0
- package/dist/extraction/default-ignore.js +221 -0
- package/dist/extraction/default-ignore.js.map +1 -0
- package/dist/extraction/grammars.d.ts +25 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +177 -24
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +52 -14
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +521 -314
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +90 -6
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +1579 -128
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +369 -4
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/cfquery.d.ts +12 -0
- package/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/dist/extraction/languages/cfquery.js +28 -0
- package/dist/extraction/languages/cfquery.js.map +1 -0
- package/dist/extraction/languages/cfscript.d.ts +3 -0
- package/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/dist/extraction/languages/cfscript.js +73 -0
- package/dist/extraction/languages/cfscript.js.map +1 -0
- package/dist/extraction/languages/cobol.d.ts +33 -0
- package/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/dist/extraction/languages/cobol.js +499 -0
- package/dist/extraction/languages/cobol.js.map +1 -0
- package/dist/extraction/languages/erlang.d.ts +3 -0
- package/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/dist/extraction/languages/erlang.js +350 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +16 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/nix.d.ts +3 -0
- package/dist/extraction/languages/nix.d.ts.map +1 -0
- package/dist/extraction/languages/nix.js +294 -0
- package/dist/extraction/languages/nix.js.map +1 -0
- package/dist/extraction/languages/solidity.d.ts +3 -0
- package/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/dist/extraction/languages/solidity.js +293 -0
- package/dist/extraction/languages/solidity.js.map +1 -0
- package/dist/extraction/languages/terraform.d.ts +3 -0
- package/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/dist/extraction/languages/terraform.js +641 -0
- package/dist/extraction/languages/terraform.js.map +1 -0
- package/dist/extraction/languages/vbnet.d.ts +11 -0
- package/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/dist/extraction/languages/vbnet.js +141 -0
- package/dist/extraction/languages/vbnet.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/dist/extraction/mybatis-extractor.js +140 -38
- package/dist/extraction/mybatis-extractor.js.map +1 -1
- package/dist/extraction/parse-pool.d.ts +27 -1
- package/dist/extraction/parse-pool.d.ts.map +1 -1
- package/dist/extraction/parse-pool.js +75 -7
- package/dist/extraction/parse-pool.js.map +1 -1
- package/dist/extraction/parse-worker.js +9 -2
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/store-worker.d.ts +20 -0
- package/dist/extraction/store-worker.d.ts.map +1 -0
- package/dist/extraction/store-worker.js +102 -0
- package/dist/extraction/store-worker.js.map +1 -0
- package/dist/extraction/store-writer.d.ts +48 -0
- package/dist/extraction/store-writer.d.ts.map +1 -0
- package/dist/extraction/store-writer.js +167 -0
- package/dist/extraction/store-writer.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/dist/extraction/tree-sitter-helpers.js +1 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +38 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +801 -10
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +14 -4
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
- package/dist/extraction/wasm-runtime-flags.js +55 -7
- package/dist/extraction/wasm-runtime-flags.js.map +1 -1
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +1 -1
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +74 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +436 -55
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +42 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +97 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/daemon.d.ts +25 -3
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +62 -8
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/dist/mcp/dynamic-boundaries.js +2 -1
- package/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/dist/mcp/early-ppid.d.ts +26 -0
- package/dist/mcp/early-ppid.d.ts.map +1 -0
- package/dist/mcp/early-ppid.js +29 -0
- package/dist/mcp/early-ppid.js.map +1 -0
- package/dist/mcp/engine.d.ts +4 -5
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +27 -1
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +41 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.d.ts +18 -1
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/dist/mcp/liveness-watchdog.js +73 -13
- package/dist/mcp/liveness-watchdog.js.map +1 -1
- package/dist/mcp/memory-budget.d.ts +30 -0
- package/dist/mcp/memory-budget.d.ts.map +1 -0
- package/dist/mcp/memory-budget.js +123 -0
- package/dist/mcp/memory-budget.js.map +1 -0
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +88 -4
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/query-cache.d.ts +35 -4
- package/dist/mcp/query-cache.d.ts.map +1 -1
- package/dist/mcp/query-cache.js +89 -19
- package/dist/mcp/query-cache.js.map +1 -1
- package/dist/mcp/query-pool.d.ts +46 -12
- package/dist/mcp/query-pool.d.ts.map +1 -1
- package/dist/mcp/query-pool.js +100 -23
- package/dist/mcp/query-pool.js.map +1 -1
- package/dist/mcp/query-worker.d.ts +2 -2
- package/dist/mcp/query-worker.js +2 -2
- package/dist/mcp/server-instructions.d.ts +4 -27
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +39 -84
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +14 -0
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +28 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/startup-handshake.d.ts +44 -0
- package/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/dist/mcp/startup-handshake.js +73 -0
- package/dist/mcp/startup-handshake.js.map +1 -0
- package/dist/mcp/tools.d.ts +104 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2432 -217
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +18 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/project-config.d.ts +38 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +101 -2
- package/dist/project-config.js.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.js +178 -146
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +54 -10
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +1299 -257
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/cooperative-yield.d.ts +10 -2
- package/dist/resolution/cooperative-yield.d.ts.map +1 -1
- package/dist/resolution/cooperative-yield.js +6 -4
- package/dist/resolution/cooperative-yield.js.map +1 -1
- package/dist/resolution/frameworks/cics.d.ts +20 -0
- package/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/dist/resolution/frameworks/cics.js +90 -0
- package/dist/resolution/frameworks/cics.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -1
- package/dist/resolution/frameworks/go.js +29 -6
- package/dist/resolution/frameworks/go.js.map +1 -1
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +3 -0
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/dist/resolution/frameworks/java.js +14 -6
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/dist/resolution/frameworks/terraform.js +277 -0
- package/dist/resolution/frameworks/terraform.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/dist/resolution/goframe-synthesizer.js +8 -3
- package/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/dist/resolution/import-resolver.d.ts +9 -3
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +295 -11
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +146 -8
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +1089 -131
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/memory-budget.d.ts +48 -0
- package/dist/resolution/memory-budget.d.ts.map +1 -0
- package/dist/resolution/memory-budget.js +162 -0
- package/dist/resolution/memory-budget.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +12 -4
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +793 -130
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/resolution/resolver-pool.d.ts +106 -0
- package/dist/resolution/resolver-pool.d.ts.map +1 -0
- package/dist/resolution/resolver-pool.js +344 -0
- package/dist/resolution/resolver-pool.js.map +1 -0
- package/dist/resolution/resolver-worker.d.ts +17 -0
- package/dist/resolution/resolver-worker.d.ts.map +1 -0
- package/dist/resolution/resolver-worker.js +141 -0
- package/dist/resolution/resolver-worker.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +1 -1
- package/dist/resolution/strip-comments.d.ts.map +1 -1
- package/dist/resolution/strip-comments.js +49 -0
- package/dist/resolution/strip-comments.js.map +1 -1
- package/dist/resolution/types.d.ts +32 -0
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.d.ts +10 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.js +142 -4
- package/dist/resolution/workspace-packages.js.map +1 -1
- package/dist/search/identifier-segments.d.ts +60 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +176 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-utils.d.ts +201 -0
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +919 -2
- package/dist/search/query-utils.js.map +1 -1
- package/dist/spec/build/diff-parser.d.ts +55 -0
- package/dist/spec/build/diff-parser.d.ts.map +1 -0
- package/dist/spec/build/diff-parser.js +205 -0
- package/dist/spec/build/diff-parser.js.map +1 -0
- package/dist/spec/build/git-scanner.d.ts +93 -0
- package/dist/spec/build/git-scanner.d.ts.map +1 -0
- package/dist/spec/build/git-scanner.js +254 -0
- package/dist/spec/build/git-scanner.js.map +1 -0
- package/dist/spec/build/pipeline.d.ts +54 -0
- package/dist/spec/build/pipeline.d.ts.map +1 -0
- package/dist/spec/build/pipeline.js +170 -0
- package/dist/spec/build/pipeline.js.map +1 -0
- package/dist/spec/build/scan.d.ts +48 -0
- package/dist/spec/build/scan.d.ts.map +1 -0
- package/dist/spec/build/scan.js +89 -0
- package/dist/spec/build/scan.js.map +1 -0
- package/dist/spec/build/scope-resolver.d.ts +50 -0
- package/dist/spec/build/scope-resolver.d.ts.map +1 -0
- package/dist/spec/build/scope-resolver.js +105 -0
- package/dist/spec/build/scope-resolver.js.map +1 -0
- package/dist/spec/build/spec-extractor.d.ts +74 -0
- package/dist/spec/build/spec-extractor.d.ts.map +1 -0
- package/dist/spec/build/spec-extractor.js +344 -0
- package/dist/spec/build/spec-extractor.js.map +1 -0
- package/dist/spec/config.d.ts +35 -1
- package/dist/spec/config.d.ts.map +1 -1
- package/dist/spec/config.js +30 -5
- package/dist/spec/config.js.map +1 -1
- package/dist/spec/db/fts.d.ts.map +1 -1
- package/dist/spec/db/fts.js +19 -50
- package/dist/spec/db/fts.js.map +1 -1
- package/dist/spec/db/index.d.ts +5 -3
- package/dist/spec/db/index.d.ts.map +1 -1
- package/dist/spec/db/index.js +16 -1
- package/dist/spec/db/index.js.map +1 -1
- package/dist/spec/db/persist.d.ts +45 -0
- package/dist/spec/db/persist.d.ts.map +1 -0
- package/dist/spec/db/persist.js +66 -0
- package/dist/spec/db/persist.js.map +1 -0
- package/dist/spec/db/relations.d.ts +80 -1
- package/dist/spec/db/relations.d.ts.map +1 -1
- package/dist/spec/db/relations.js +175 -4
- package/dist/spec/db/relations.js.map +1 -1
- package/dist/spec/db/schema.d.ts +4 -0
- package/dist/spec/db/schema.d.ts.map +1 -1
- package/dist/spec/db/schema.js +4 -0
- package/dist/spec/db/schema.js.map +1 -1
- package/dist/spec/db/schema.sql +5 -1
- package/dist/spec/db/spec-node.d.ts +5 -0
- package/dist/spec/db/spec-node.d.ts.map +1 -1
- package/dist/spec/db/spec-node.js +11 -5
- package/dist/spec/db/spec-node.js.map +1 -1
- package/dist/spec/db/sql-utils.d.ts +11 -0
- package/dist/spec/db/sql-utils.d.ts.map +1 -0
- package/dist/spec/db/sql-utils.js +19 -0
- package/dist/spec/db/sql-utils.js.map +1 -0
- package/dist/spec/evolve/cluster-context.d.ts +30 -0
- package/dist/spec/evolve/cluster-context.d.ts.map +1 -0
- package/dist/spec/evolve/cluster-context.js +78 -0
- package/dist/spec/evolve/cluster-context.js.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts +51 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.js +88 -0
- package/dist/spec/evolve/commit-spec-analyzer.js.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts +53 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.js +93 -0
- package/dist/spec/evolve/commit-spec-persister.js.map +1 -0
- package/dist/spec/evolve/impact-locator.d.ts +23 -7
- package/dist/spec/evolve/impact-locator.d.ts.map +1 -1
- package/dist/spec/evolve/impact-locator.js +58 -14
- package/dist/spec/evolve/impact-locator.js.map +1 -1
- package/dist/spec/evolve/pipeline.d.ts +62 -25
- package/dist/spec/evolve/pipeline.d.ts.map +1 -1
- package/dist/spec/evolve/pipeline.js +436 -457
- package/dist/spec/evolve/pipeline.js.map +1 -1
- package/dist/spec/evolve/spec-rewriter.d.ts +13 -13
- package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -1
- package/dist/spec/evolve/spec-rewriter.js +45 -45
- package/dist/spec/evolve/spec-rewriter.js.map +1 -1
- package/dist/spec/git/commits.d.ts +85 -0
- package/dist/spec/git/commits.d.ts.map +1 -0
- package/dist/spec/git/commits.js +218 -0
- package/dist/spec/git/commits.js.map +1 -0
- package/dist/spec/git/exec.d.ts +13 -0
- package/dist/spec/git/exec.d.ts.map +1 -0
- package/dist/spec/git/exec.js +19 -0
- package/dist/spec/git/exec.js.map +1 -0
- package/dist/spec/git/index.d.ts +9 -0
- package/dist/spec/git/index.d.ts.map +1 -0
- package/dist/spec/git/index.js +22 -0
- package/dist/spec/git/index.js.map +1 -0
- package/dist/spec/git-utils.d.ts +8 -0
- package/dist/spec/git-utils.d.ts.map +1 -0
- package/dist/spec/git-utils.js +14 -0
- package/dist/spec/git-utils.js.map +1 -0
- package/dist/spec/graph/index.d.ts +8 -0
- package/dist/spec/graph/index.d.ts.map +1 -0
- package/dist/spec/graph/index.js +17 -0
- package/dist/spec/graph/index.js.map +1 -0
- package/dist/spec/graph/queries.d.ts +6 -35
- package/dist/spec/graph/queries.d.ts.map +1 -1
- package/dist/spec/graph/queries.js +71 -248
- package/dist/spec/graph/queries.js.map +1 -1
- package/dist/spec/llm/agent-client.d.ts +59 -0
- package/dist/spec/llm/agent-client.d.ts.map +1 -0
- package/dist/spec/llm/agent-client.js +213 -0
- package/dist/spec/llm/agent-client.js.map +1 -0
- package/dist/spec/llm/agents/claude-code.d.ts +32 -0
- package/dist/spec/llm/agents/claude-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/claude-code.js +125 -0
- package/dist/spec/llm/agents/claude-code.js.map +1 -0
- package/dist/spec/llm/agents/codex.d.ts +32 -0
- package/dist/spec/llm/agents/codex.d.ts.map +1 -0
- package/dist/spec/llm/agents/codex.js +145 -0
- package/dist/spec/llm/agents/codex.js.map +1 -0
- package/dist/spec/llm/agents/detect-utils.d.ts +28 -0
- package/dist/spec/llm/agents/detect-utils.d.ts.map +1 -0
- package/dist/spec/llm/agents/detect-utils.js +91 -0
- package/dist/spec/llm/agents/detect-utils.js.map +1 -0
- package/dist/spec/llm/agents/deveco-code.d.ts +33 -0
- package/dist/spec/llm/agents/deveco-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/deveco-code.js +165 -0
- package/dist/spec/llm/agents/deveco-code.js.map +1 -0
- package/dist/spec/llm/agents/index.d.ts +31 -0
- package/dist/spec/llm/agents/index.d.ts.map +1 -0
- package/dist/spec/llm/agents/index.js +65 -0
- package/dist/spec/llm/agents/index.js.map +1 -0
- package/dist/spec/llm/agents/types.d.ts +76 -0
- package/dist/spec/llm/agents/types.d.ts.map +1 -0
- package/dist/spec/llm/agents/types.js +15 -0
- package/dist/spec/llm/agents/types.js.map +1 -0
- package/dist/spec/llm/client.d.ts +31 -11
- package/dist/spec/llm/client.d.ts.map +1 -1
- package/dist/spec/llm/client.js +143 -81
- package/dist/spec/llm/client.js.map +1 -1
- package/dist/spec/llm/factory.d.ts +41 -0
- package/dist/spec/llm/factory.d.ts.map +1 -0
- package/dist/spec/llm/factory.js +80 -0
- package/dist/spec/llm/factory.js.map +1 -0
- package/dist/spec/llm/prompts.d.ts +24 -8
- package/dist/spec/llm/prompts.d.ts.map +1 -1
- package/dist/spec/llm/prompts.js +100 -50
- package/dist/spec/llm/prompts.js.map +1 -1
- package/dist/spec/llm/retry.d.ts +53 -0
- package/dist/spec/llm/retry.d.ts.map +1 -0
- package/dist/spec/llm/retry.js +153 -0
- package/dist/spec/llm/retry.js.map +1 -0
- package/dist/spec/mine/clusterer.d.ts +63 -0
- package/dist/spec/mine/clusterer.d.ts.map +1 -0
- package/dist/spec/mine/clusterer.js +904 -0
- package/dist/spec/mine/clusterer.js.map +1 -0
- package/dist/spec/mine/clustering/features.d.ts +38 -0
- package/dist/spec/mine/clustering/features.d.ts.map +1 -0
- package/dist/spec/mine/clustering/features.js +108 -0
- package/dist/spec/mine/clustering/features.js.map +1 -0
- package/dist/spec/mine/clustering/index.d.ts +62 -0
- package/dist/spec/mine/clustering/index.d.ts.map +1 -0
- package/dist/spec/mine/clustering/index.js +259 -0
- package/dist/spec/mine/clustering/index.js.map +1 -0
- package/dist/spec/mine/clustering/leiden.d.ts +61 -0
- package/dist/spec/mine/clustering/leiden.d.ts.map +1 -0
- package/dist/spec/mine/clustering/leiden.js +489 -0
- package/dist/spec/mine/clustering/leiden.js.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts +22 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.js +98 -0
- package/dist/spec/mine/clustering/text-similarity.js.map +1 -0
- package/dist/spec/mine/generator.d.ts +54 -0
- package/dist/spec/mine/generator.d.ts.map +1 -0
- package/dist/spec/mine/generator.js +267 -0
- package/dist/spec/mine/generator.js.map +1 -0
- package/dist/spec/mine/persist.d.ts +37 -0
- package/dist/spec/mine/persist.d.ts.map +1 -0
- package/dist/spec/mine/persist.js +170 -0
- package/dist/spec/mine/persist.js.map +1 -0
- package/dist/spec/mine/pipeline.d.ts +41 -0
- package/dist/spec/mine/pipeline.d.ts.map +1 -0
- package/dist/spec/mine/pipeline.js +236 -0
- package/dist/spec/mine/pipeline.js.map +1 -0
- package/dist/spec/mine/progress-handler.d.ts +22 -0
- package/dist/spec/mine/progress-handler.d.ts.map +1 -0
- package/dist/spec/mine/progress-handler.js +108 -0
- package/dist/spec/mine/progress-handler.js.map +1 -0
- package/dist/spec/mine/progress.d.ts +23 -0
- package/dist/spec/mine/progress.d.ts.map +1 -0
- package/dist/spec/mine/progress.js +12 -0
- package/dist/spec/mine/progress.js.map +1 -0
- package/dist/spec/mine/scanner.d.ts +59 -0
- package/dist/spec/mine/scanner.d.ts.map +1 -0
- package/dist/spec/mine/scanner.js +383 -0
- package/dist/spec/mine/scanner.js.map +1 -0
- package/dist/spec/types.d.ts +32 -0
- package/dist/spec/types.d.ts.map +1 -1
- package/dist/spec/ui/index.d.ts +9 -0
- package/dist/spec/ui/index.d.ts.map +1 -0
- package/dist/spec/ui/index.js +16 -0
- package/dist/spec/ui/index.js.map +1 -0
- package/dist/spec/ui/progress-handler.d.ts +33 -0
- package/dist/spec/ui/progress-handler.d.ts.map +1 -0
- package/dist/spec/ui/progress-handler.js +132 -0
- package/dist/spec/ui/progress-handler.js.map +1 -0
- package/dist/spec/ui/progress.d.ts +24 -0
- package/dist/spec/ui/progress.d.ts.map +1 -0
- package/dist/spec/ui/progress.js +13 -0
- package/dist/spec/ui/progress.js.map +1 -0
- package/dist/spec/utils/fs.d.ts +45 -0
- package/dist/spec/utils/fs.d.ts.map +1 -0
- package/dist/spec/utils/fs.js +163 -0
- package/dist/spec/utils/fs.js.map +1 -0
- package/dist/spec/utils/index.d.ts +12 -0
- package/dist/spec/utils/index.d.ts.map +1 -0
- package/dist/spec/utils/index.js +26 -0
- package/dist/spec/utils/index.js.map +1 -0
- package/dist/spec/utils/meta.d.ts +32 -0
- package/dist/spec/utils/meta.d.ts.map +1 -0
- package/dist/spec/utils/meta.js +122 -0
- package/dist/spec/utils/meta.js.map +1 -0
- package/dist/spec/utils/truncate.d.ts +86 -0
- package/dist/spec/utils/truncate.d.ts.map +1 -0
- package/dist/spec/utils/truncate.js +172 -0
- package/dist/spec/utils/truncate.js.map +1 -0
- package/dist/spec/utils.d.ts +4 -16
- package/dist/spec/utils.d.ts.map +1 -1
- package/dist/spec/utils.js +6 -58
- package/dist/spec/utils.js.map +1 -1
- package/dist/sync/git-hooks.d.ts.map +1 -1
- package/dist/sync/git-hooks.js +2 -0
- package/dist/sync/git-hooks.js.map +1 -1
- package/dist/sync/watcher.d.ts +35 -6
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +127 -17
- package/dist/sync/watcher.js.map +1 -1
- package/dist/sync/worktree.d.ts.map +1 -1
- package/dist/sync/worktree.js +5 -0
- package/dist/sync/worktree.js.map +1 -1
- package/dist/telemetry/index.js +3 -3
- package/dist/telemetry/index.js.map +1 -1
- package/dist/types.d.ts +22 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/dist/upgrade/index.d.ts +32 -0
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +162 -14
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/remove-binary.d.ts +87 -0
- package/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/dist/upgrade/remove-binary.js +289 -0
- package/dist/upgrade/remove-binary.js.map +1 -0
- package/dist/upgrade/update-check.d.ts +92 -0
- package/dist/upgrade/update-check.d.ts.map +1 -0
- package/dist/upgrade/update-check.js +258 -0
- package/dist/upgrade/update-check.js.map +1 -0
- package/package.json +6 -2
- package/scripts/agent-eval/run-all.sh +6 -0
- package/scripts/build-bundle.sh +5 -0
- package/scripts/npm-shim.js +8 -1
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/data/agents.json +0 -109
- package/scripts/exp_boundary_eval/data/experiments.json +0 -140
- package/scripts/qa_eval/README.md +0 -407
- package/scripts/qa_eval/_test_deveco_probe.py +0 -41
- package/scripts/qa_eval/agent_runner.py +0 -526
- package/scripts/qa_eval/data/.gitignore +0 -4
- package/scripts/qa_eval/data/test-set.jsonl +0 -2
- package/scripts/qa_eval/eval_metrics.py +0 -274
- package/scripts/qa_eval/external_agent.py +0 -976
- package/scripts/qa_eval/llm_config.py +0 -92
- package/scripts/qa_eval/memory_monitor.py +0 -132
- package/scripts/qa_eval/my_answer_accuracy.py +0 -187
- package/scripts/qa_eval/requirements.txt +0 -2
- package/scripts/qa_eval/run_pipeline.py +0 -804
- package/scripts/qa_eval/stats_efficiency.py +0 -279
- package/scripts/qa_eval/stats_scores.py +0 -207
package/dist/spec/llm/prompts.js
CHANGED
|
@@ -1,75 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* LLM prompt templates for spec self-evolution
|
|
4
|
-
*
|
|
5
|
-
* Extracted from logic-checker.ts and spec-rewriter.ts so evolve modules
|
|
6
|
-
* don't contain prompt strings directly.
|
|
3
|
+
* LLM prompt templates for the spec pipelines — spec self-evolution
|
|
4
|
+
* (cluster evaluation) and spec mining (spec generation from clusters).
|
|
7
5
|
*
|
|
8
6
|
* @module spec/llm/prompts
|
|
9
7
|
*/
|
|
10
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
|
|
9
|
+
exports.SPEC_EVALUATION_CLUSTER_SYSTEM_PROMPT = exports.SPEC_GENERATION_SYSTEM_PROMPT = exports.DEFAULT_SPEC_TEMPLATE = void 0;
|
|
10
|
+
exports.buildClusterSpecEvaluationUserPrompt = buildClusterSpecEvaluationUserPrompt;
|
|
11
|
+
const utils_1 = require("../utils");
|
|
14
12
|
// =============================================================================
|
|
15
|
-
//
|
|
13
|
+
// Spec generation prompt + template (mine pipeline)
|
|
16
14
|
// =============================================================================
|
|
17
|
-
|
|
15
|
+
/** Default markdown template for generated spec documents. */
|
|
16
|
+
exports.DEFAULT_SPEC_TEMPLATE = `# Spec: {{title}}
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- Changes to business rules, validation logic, or domain behavior
|
|
22
|
-
- Adding or removing functionality
|
|
23
|
-
- Bug fixes that change behavior
|
|
18
|
+
## Summary
|
|
19
|
+
{{summary}}
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- Comment-only changes
|
|
28
|
-
- Test-only changes (adding tests without changing production code)
|
|
29
|
-
- Configuration changes that don't alter behavior
|
|
30
|
-
- Package/dependency version bumps
|
|
21
|
+
## Motivation
|
|
22
|
+
{{motivation}}
|
|
31
23
|
|
|
32
|
-
|
|
33
|
-
{
|
|
34
|
-
"is_logic_change": true/false,
|
|
35
|
-
"reason": "Brief explanation of why this is or is not a logic change"
|
|
36
|
-
}`;
|
|
37
|
-
function buildLogicCheckUserPrompt(commitMessage, truncatedDiff) {
|
|
38
|
-
return `Analyze this commit:
|
|
24
|
+
## Specification
|
|
39
25
|
|
|
40
|
-
|
|
26
|
+
### Functional Requirements
|
|
27
|
+
{{functional_requirements}}
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
### Acceptance Criteria (EARS format)
|
|
30
|
+
{{acceptance_criteria}}
|
|
31
|
+
|
|
32
|
+
## Implementation Notes
|
|
33
|
+
|
|
34
|
+
### Related Commits
|
|
35
|
+
{{commit_list}}
|
|
36
|
+
|
|
37
|
+
### Affected Files
|
|
38
|
+
{{file_list}}
|
|
39
|
+
|
|
40
|
+
### Key Symbols
|
|
41
|
+
{{symbol_list}}
|
|
42
|
+
`;
|
|
43
|
+
/** System prompt for LLM spec generation from a commit cluster. */
|
|
44
|
+
exports.SPEC_GENERATION_SYSTEM_PROMPT = `You are a technical documentation writer specializing in software design specifications. Given a cluster of related Git commits, generate a design specification in markdown format.
|
|
45
|
+
|
|
46
|
+
Guidelines:
|
|
47
|
+
- Focus on WHAT was built, not HOW it was implemented
|
|
48
|
+
- Use EARS (Easy Approach to Requirements Syntax) for acceptance criteria
|
|
49
|
+
- Be specific — reference real symbols, files, and commit messages
|
|
50
|
+
- Keep the spec concise but complete
|
|
51
|
+
- Output ONLY the spec document, no preamble or commentary
|
|
52
|
+
|
|
53
|
+
Output format — fill in the template exactly. Replace {{placeholders}} with real content. Do NOT include the placeholder braces in your output.`;
|
|
45
54
|
// =============================================================================
|
|
46
|
-
//
|
|
55
|
+
// Cluster spec evaluation prompt
|
|
47
56
|
// =============================================================================
|
|
48
|
-
|
|
57
|
+
/** Maximum characters for the current spec content in the user prompt
|
|
58
|
+
* (~16K tokens @ ~0.25 token/char). Exceedingly large spec documents are
|
|
59
|
+
* truncated to prevent context-window overflow. */
|
|
60
|
+
const MAX_SPEC_CONTENT_CHARS = 64000;
|
|
61
|
+
exports.SPEC_EVALUATION_CLUSTER_SYSTEM_PROMPT = `You are a technical documentation maintainer. Your task is to evaluate whether a GROUP of related git commits requires updating a software design specification.
|
|
49
62
|
|
|
50
|
-
Given the current
|
|
51
|
-
1. Whether the
|
|
52
|
-
2. If UPDATE: provide the new title, subtitles (as an array of heading-preview strings), and full rewritten
|
|
53
|
-
3. If DEPRECATE: provide a brief explanation in the
|
|
63
|
+
Given the current content and a summary of multiple commits that affect this spec, determine:
|
|
64
|
+
1. Whether the spec needs to be updated (UPDATE), deprecated (DEPRECATE), or left unchanged (UNCHANGED).
|
|
65
|
+
2. If UPDATE: provide the new title, subtitles (as an array of heading-preview strings), and full rewritten spec_content that incorporates the changes from all commits.
|
|
66
|
+
3. If DEPRECATE: provide a brief explanation in the spec_content field.
|
|
67
|
+
|
|
68
|
+
Key considerations for batch evaluation:
|
|
69
|
+
- Multiple commits may partially overlap in their changes — synthesize the combined impact.
|
|
70
|
+
- Some commits may be bug fixes that revert earlier changes — look for the net effect.
|
|
71
|
+
- If the combined changes fundamentally alter the spec's scope, prefer DEPRECATE over UPDATE.
|
|
54
72
|
|
|
55
73
|
Response format (JSON):
|
|
56
74
|
{
|
|
57
75
|
"action": "UPDATE" | "DEPRECATE" | "UNCHANGED",
|
|
58
76
|
"title": "New spec title (for UPDATE)",
|
|
59
77
|
"subtitles": ["heading1 → heading2 - preview", ...],
|
|
60
|
-
"
|
|
78
|
+
"spec_content": "Full rewritten markdown content (for UPDATE) or deprecation reason (for DEPRECATE)"
|
|
61
79
|
}`;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Build the user prompt for cluster-based spec evaluation.
|
|
82
|
+
*
|
|
83
|
+
* Presents:
|
|
84
|
+
* 1. The current spec content.
|
|
85
|
+
* 2. A cluster overview (commit count, primary files).
|
|
86
|
+
* 3. Per-commit summaries (short hash, message, changed files, truncated diff).
|
|
87
|
+
*
|
|
88
|
+
* The prompt is designed to fit within a reasonable token budget for a
|
|
89
|
+
* single LLM call even with 5-10 commits in the cluster.
|
|
90
|
+
*
|
|
91
|
+
* @param specContent - Full current spec.md content.
|
|
92
|
+
* @param clusterContext - Pre-built cluster context from buildClusterContext.
|
|
93
|
+
* @returns Formatted user prompt string.
|
|
94
|
+
*/
|
|
95
|
+
function buildClusterSpecEvaluationUserPrompt(specContent, clusterContext) {
|
|
96
|
+
const parts = [];
|
|
97
|
+
// 1. Current spec
|
|
98
|
+
const truncatedSpec = (0, utils_1.truncateText)(specContent, MAX_SPEC_CONTENT_CHARS);
|
|
99
|
+
parts.push('## Current Spec Content');
|
|
100
|
+
parts.push('');
|
|
101
|
+
parts.push(truncatedSpec);
|
|
102
|
+
parts.push('');
|
|
103
|
+
// 2. Cluster overview
|
|
104
|
+
parts.push('## Commit Cluster');
|
|
105
|
+
parts.push('');
|
|
106
|
+
parts.push(`- **Commits**: ${clusterContext.commitCount}`);
|
|
107
|
+
parts.push(`- **Primary files**: ${clusterContext.primaryFiles.join(', ') || '(none)'}`);
|
|
108
|
+
parts.push('');
|
|
109
|
+
// 3. Per-commit summaries
|
|
110
|
+
parts.push('## Commit Summaries');
|
|
111
|
+
parts.push('');
|
|
112
|
+
for (const cs of clusterContext.commitSummaries) {
|
|
113
|
+
parts.push(`### ${cs.shortHash} — ${cs.message}`);
|
|
114
|
+
parts.push(`Files: ${cs.changedFiles.join(', ')}`);
|
|
115
|
+
if (cs.truncatedDiff && cs.truncatedDiff.length > 0) {
|
|
116
|
+
parts.push('');
|
|
117
|
+
parts.push('```diff');
|
|
118
|
+
parts.push(cs.truncatedDiff);
|
|
119
|
+
parts.push('```');
|
|
120
|
+
}
|
|
121
|
+
parts.push('');
|
|
122
|
+
}
|
|
123
|
+
return parts.join('\n');
|
|
74
124
|
}
|
|
75
125
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/spec/llm/prompts.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/spec/llm/prompts.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA8FH,oFAsCC;AAjID,oCAAwC;AAExC,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAEhF,8DAA8D;AACjD,QAAA,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BpC,CAAC;AAEF,mEAAmE;AACtD,QAAA,6BAA6B,GAAG;;;;;;;;;gJASmG,CAAC;AAEjJ,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;oDAEoD;AACpD,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAExB,QAAA,qCAAqC,GAAG;;;;;;;;;;;;;;;;;;EAkBnD,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oCAAoC,CAClD,WAAmB,EACnB,cAA8B;IAE9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kBAAkB;IAClB,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CACR,wBAAwB,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC7E,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,0BAA0B;IAC1B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM retry helper — error classification and delay calculation.
|
|
3
|
+
*
|
|
4
|
+
* OpenAI SDK v4 throws typed `APIError` subclasses. This module classifies
|
|
5
|
+
* them as retryable (transient) or terminal (bad request, auth failure, etc.)
|
|
6
|
+
* and computes exponential-backoff delays with jitter and Retry-After support.
|
|
7
|
+
*
|
|
8
|
+
* @module spec/llm/retry
|
|
9
|
+
*/
|
|
10
|
+
export interface RetryDecision {
|
|
11
|
+
/** Whether the error is safe to retry. */
|
|
12
|
+
retryable: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Recommended delay in milliseconds (from Retry-After header, if present).
|
|
15
|
+
* `undefined` means the caller should calculate backoff.
|
|
16
|
+
*/
|
|
17
|
+
retryAfterMs?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Classify an error thrown by the OpenAI SDK as retryable or terminal.
|
|
21
|
+
*
|
|
22
|
+
* Classification rules (first match wins):
|
|
23
|
+
*
|
|
24
|
+
* 1. Non-`Error` throwables → NOT retryable (safety).
|
|
25
|
+
* 2. `RateLimitError` (429) → RETRYABLE; parse Retry-After if available.
|
|
26
|
+
* 3. `InternalServerError` (500) → RETRYABLE.
|
|
27
|
+
* 4. Other `APIError` subclasses with status in `RETRYABLE_STATUSES` →
|
|
28
|
+
* RETRYABLE.
|
|
29
|
+
* 5. `APIConnectionError` / `APIConnectionTimeoutError` → RETRYABLE.
|
|
30
|
+
* 6. Generic `Error` with `.code` in `RETRYABLE_CODES` → RETRYABLE.
|
|
31
|
+
* 7. Everything else → NOT retryable (conservative).
|
|
32
|
+
*/
|
|
33
|
+
export declare function classifyError(err: unknown): RetryDecision;
|
|
34
|
+
/**
|
|
35
|
+
* Compute the delay before the next retry attempt.
|
|
36
|
+
*
|
|
37
|
+
* Strategy:
|
|
38
|
+
* 1. If `retryAfterMs` is available from the server (429 Retry-After), use it
|
|
39
|
+
* as a minimum, then add jitter up to 25% of the computed backoff.
|
|
40
|
+
* 2. Otherwise: exponential backoff = `baseDelay * 2^attempt` with full-range
|
|
41
|
+
* random jitter (`random(0, backoff)`).
|
|
42
|
+
* 3. Cap at `maxDelay`.
|
|
43
|
+
*
|
|
44
|
+
* @param retryAfterMs - Server-suggested delay from Retry-After (optional).
|
|
45
|
+
* @param baseDelay - Base delay in ms for backoff calculation.
|
|
46
|
+
* @param maxDelay - Hard upper bound in ms.
|
|
47
|
+
* @param attempt - Zero-based retry attempt index.
|
|
48
|
+
* @returns Delay in milliseconds (integer).
|
|
49
|
+
*/
|
|
50
|
+
export declare function computeDelay(retryAfterMs: number | undefined, baseDelay: number, maxDelay: number, attempt: number): number;
|
|
51
|
+
/** Promise-based sleep. */
|
|
52
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
53
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/spec/llm/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAwCzD;AA0CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAiBR;AAMD,2BAA2B;AAC3B,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM retry helper — error classification and delay calculation.
|
|
4
|
+
*
|
|
5
|
+
* OpenAI SDK v4 throws typed `APIError` subclasses. This module classifies
|
|
6
|
+
* them as retryable (transient) or terminal (bad request, auth failure, etc.)
|
|
7
|
+
* and computes exponential-backoff delays with jitter and Retry-After support.
|
|
8
|
+
*
|
|
9
|
+
* @module spec/llm/retry
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.classifyError = classifyError;
|
|
16
|
+
exports.computeDelay = computeDelay;
|
|
17
|
+
exports.sleep = sleep;
|
|
18
|
+
const openai_1 = __importDefault(require("openai"));
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Error classification
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/** HTTP status codes that indicate a transient server error. */
|
|
23
|
+
const RETRYABLE_STATUSES = new Set([408, 429, 500, 502, 503, 504]);
|
|
24
|
+
/** Node.js error codes that indicate a transient network failure. */
|
|
25
|
+
const RETRYABLE_CODES = new Set([
|
|
26
|
+
'ECONNRESET',
|
|
27
|
+
'ETIMEDOUT',
|
|
28
|
+
'ECONNREFUSED',
|
|
29
|
+
'ENOTFOUND',
|
|
30
|
+
'EPIPE',
|
|
31
|
+
'EAI_AGAIN',
|
|
32
|
+
'ERR_SOCKET_CONNECTION_TIMEOUT',
|
|
33
|
+
]);
|
|
34
|
+
/**
|
|
35
|
+
* Classify an error thrown by the OpenAI SDK as retryable or terminal.
|
|
36
|
+
*
|
|
37
|
+
* Classification rules (first match wins):
|
|
38
|
+
*
|
|
39
|
+
* 1. Non-`Error` throwables → NOT retryable (safety).
|
|
40
|
+
* 2. `RateLimitError` (429) → RETRYABLE; parse Retry-After if available.
|
|
41
|
+
* 3. `InternalServerError` (500) → RETRYABLE.
|
|
42
|
+
* 4. Other `APIError` subclasses with status in `RETRYABLE_STATUSES` →
|
|
43
|
+
* RETRYABLE.
|
|
44
|
+
* 5. `APIConnectionError` / `APIConnectionTimeoutError` → RETRYABLE.
|
|
45
|
+
* 6. Generic `Error` with `.code` in `RETRYABLE_CODES` → RETRYABLE.
|
|
46
|
+
* 7. Everything else → NOT retryable (conservative).
|
|
47
|
+
*/
|
|
48
|
+
function classifyError(err) {
|
|
49
|
+
if (!(err instanceof Error)) {
|
|
50
|
+
return { retryable: false };
|
|
51
|
+
}
|
|
52
|
+
// 1. RateLimitError (429)
|
|
53
|
+
if (err instanceof openai_1.default.RateLimitError) {
|
|
54
|
+
const retryAfterMs = parseRetryAfter(err.headers);
|
|
55
|
+
return { retryable: true, retryAfterMs };
|
|
56
|
+
}
|
|
57
|
+
// 2. InternalServerError (500)
|
|
58
|
+
if (err instanceof openai_1.default.InternalServerError) {
|
|
59
|
+
return { retryable: true };
|
|
60
|
+
}
|
|
61
|
+
// 3. Other APIError with known transient status
|
|
62
|
+
if (err instanceof openai_1.default.APIError) {
|
|
63
|
+
if (err.status !== undefined && RETRYABLE_STATUSES.has(err.status)) {
|
|
64
|
+
return { retryable: true };
|
|
65
|
+
}
|
|
66
|
+
// Explicit client errors (400, 401, 403, 404, 409, 422, etc.) → terminal
|
|
67
|
+
return { retryable: false };
|
|
68
|
+
}
|
|
69
|
+
// 4. Connection-level errors
|
|
70
|
+
if (err instanceof openai_1.default.APIConnectionError ||
|
|
71
|
+
err instanceof openai_1.default.APIConnectionTimeoutError) {
|
|
72
|
+
return { retryable: true };
|
|
73
|
+
}
|
|
74
|
+
// 5. Generic Node.js network errors
|
|
75
|
+
if (RETRYABLE_CODES.has(err.code ?? '')) {
|
|
76
|
+
return { retryable: true };
|
|
77
|
+
}
|
|
78
|
+
// 6. Everything else — don't guess, just fail
|
|
79
|
+
return { retryable: false };
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Retry-After parsing
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
/**
|
|
85
|
+
* Parse a `Retry-After` header value to milliseconds.
|
|
86
|
+
*
|
|
87
|
+
* Supports both delta-seconds (`"5"`) and HTTP-date (`"Wed, 21 Oct 2015 ..."`).
|
|
88
|
+
* Returns `undefined` if the header is missing, unparseable, or unacceptably
|
|
89
|
+
* large (> 5 minutes to avoid hiding a systemic outage).
|
|
90
|
+
*/
|
|
91
|
+
function parseRetryAfter(headers) {
|
|
92
|
+
if (!headers)
|
|
93
|
+
return undefined;
|
|
94
|
+
const raw = headers['retry-after'];
|
|
95
|
+
if (!raw || typeof raw !== 'string')
|
|
96
|
+
return undefined;
|
|
97
|
+
// Delta-seconds: "5" or "5.5"
|
|
98
|
+
const delta = Number(raw);
|
|
99
|
+
if (!isNaN(delta) && delta > 0) {
|
|
100
|
+
const ms = Math.round(delta * 1000);
|
|
101
|
+
return ms > 300_000 ? undefined : ms; // cap at 5 min
|
|
102
|
+
}
|
|
103
|
+
// HTTP-date
|
|
104
|
+
const date = new Date(raw).getTime();
|
|
105
|
+
if (!isNaN(date)) {
|
|
106
|
+
const ms = Math.max(0, date - Date.now());
|
|
107
|
+
return ms > 300_000 ? undefined : ms;
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Delay computation
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
/**
|
|
115
|
+
* Compute the delay before the next retry attempt.
|
|
116
|
+
*
|
|
117
|
+
* Strategy:
|
|
118
|
+
* 1. If `retryAfterMs` is available from the server (429 Retry-After), use it
|
|
119
|
+
* as a minimum, then add jitter up to 25% of the computed backoff.
|
|
120
|
+
* 2. Otherwise: exponential backoff = `baseDelay * 2^attempt` with full-range
|
|
121
|
+
* random jitter (`random(0, backoff)`).
|
|
122
|
+
* 3. Cap at `maxDelay`.
|
|
123
|
+
*
|
|
124
|
+
* @param retryAfterMs - Server-suggested delay from Retry-After (optional).
|
|
125
|
+
* @param baseDelay - Base delay in ms for backoff calculation.
|
|
126
|
+
* @param maxDelay - Hard upper bound in ms.
|
|
127
|
+
* @param attempt - Zero-based retry attempt index.
|
|
128
|
+
* @returns Delay in milliseconds (integer).
|
|
129
|
+
*/
|
|
130
|
+
function computeDelay(retryAfterMs, baseDelay, maxDelay, attempt) {
|
|
131
|
+
const backoff = baseDelay * Math.pow(2, attempt);
|
|
132
|
+
let delay;
|
|
133
|
+
if (retryAfterMs !== undefined && retryAfterMs > 0) {
|
|
134
|
+
// Use Retry-After as floor, add up to 25% jitter
|
|
135
|
+
const jitter = Math.random() * Math.min(backoff * 0.25, 5000);
|
|
136
|
+
delay = retryAfterMs + jitter;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Full exponential backoff with jitter
|
|
140
|
+
delay = Math.random() * backoff;
|
|
141
|
+
}
|
|
142
|
+
// Clamp
|
|
143
|
+
delay = Math.max(0, Math.min(delay, maxDelay));
|
|
144
|
+
return Math.round(delay);
|
|
145
|
+
}
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Sleep
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
/** Promise-based sleep. */
|
|
150
|
+
function sleep(ms) {
|
|
151
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/spec/llm/retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
* Algorithm: Leiden community detection on a weighted similarity graph.
|
|
9
|
+
* Replaces Louvain and connected-components (single-linkage) to avoid chaining
|
|
10
|
+
* all commits into one giant cluster and to guarantee well-connected communities
|
|
11
|
+
* via the refinement phase. A resolution parameter γ is auto-tuned via
|
|
12
|
+
* multiplicative search so the output community count stays close to maxClusters.
|
|
13
|
+
*
|
|
14
|
+
* @module spec/mine/clusterer
|
|
15
|
+
*/
|
|
16
|
+
import { CommitChange } from './scanner';
|
|
17
|
+
/** A cluster of semantically-related commits. */
|
|
18
|
+
export interface CommitCluster {
|
|
19
|
+
id: number;
|
|
20
|
+
commits: CommitChange[];
|
|
21
|
+
primaryFiles: string[];
|
|
22
|
+
primarySymbols: string[];
|
|
23
|
+
summary: string;
|
|
24
|
+
timeRange: {
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Full clustering result including unclustered outliers and stats. */
|
|
30
|
+
export interface ClusterResult {
|
|
31
|
+
clusters: CommitCluster[];
|
|
32
|
+
unclustered: CommitChange[];
|
|
33
|
+
stats: {
|
|
34
|
+
totalCommits: number;
|
|
35
|
+
clusteredCommits: number;
|
|
36
|
+
clusterCount: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Cluster commits using Leiden community detection on a multi-signal
|
|
41
|
+
* similarity graph, with recursive sub-splitting for large clusters.
|
|
42
|
+
*
|
|
43
|
+
* The pipeline:
|
|
44
|
+
* 1. Build a weighted similarity graph from AST symbol, file-path,
|
|
45
|
+
* commit-message TF-IDF, ticket-reference, and temporal signals.
|
|
46
|
+
* 2. Run Leiden community detection with auto-tuned resolution γ.
|
|
47
|
+
* 3. Greedy-merge if still too many communities.
|
|
48
|
+
* 4. Recursively split large clusters (≥ 4 commits) by running
|
|
49
|
+
* Leiden on their sub-graphs.
|
|
50
|
+
*
|
|
51
|
+
* Replaces the previous Louvain (no refinement) and connected-components
|
|
52
|
+
* (single-linkage chaining) approaches.
|
|
53
|
+
*
|
|
54
|
+
* @param changes - AST change data for each commit.
|
|
55
|
+
* @param threshold - Minimum similarity (0-1) for considering an edge.
|
|
56
|
+
* @param maxClusters - Desired maximum number of top-level clusters.
|
|
57
|
+
* The resolution parameter γ is auto-tuned to approach
|
|
58
|
+
* this target. Recursive splitting may produce more
|
|
59
|
+
* clusters at finer granularities.
|
|
60
|
+
* @returns Clustered result with stats.
|
|
61
|
+
*/
|
|
62
|
+
export declare function clusterCommits(changes: CommitChange[], threshold: number, maxClusters: number): ClusterResult;
|
|
63
|
+
//# sourceMappingURL=clusterer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusterer.d.ts","sourceRoot":"","sources":["../../../src/spec/mine/clusterer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAQzC,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;AAs1BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,aAAa,CA0Mf"}
|