homegraph 0.9.10 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +243 -193
- package/dist/bin/fatal-handler.d.ts +20 -0
- package/dist/bin/fatal-handler.d.ts.map +1 -0
- package/dist/bin/fatal-handler.js +118 -0
- package/dist/bin/fatal-handler.js.map +1 -0
- package/dist/bin/homegraph.d.ts +6 -6
- package/dist/bin/homegraph.js +532 -109
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/bin/node-version-check.d.ts +4 -4
- package/dist/bin/node-version-check.js +12 -12
- package/dist/bin/uninstall.d.ts +1 -1
- package/dist/bin/uninstall.js +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +8 -1
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +22 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +48 -2
- 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 +26 -17
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +21 -1
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +180 -137
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +152 -151
- package/dist/db/sqlite-adapter.d.ts +1 -1
- package/dist/db/sqlite-adapter.js +3 -3
- package/dist/directory.d.ts +87 -6
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +319 -57
- package/dist/directory.js.map +1 -1
- package/dist/errors.d.ts +15 -15
- package/dist/errors.js +20 -20
- package/dist/extraction/astro-extractor.d.ts +79 -0
- package/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/dist/extraction/astro-extractor.js +320 -0
- package/dist/extraction/astro-extractor.js.map +1 -0
- package/dist/extraction/context.d.ts +1 -1
- package/dist/extraction/context.js +1 -1
- package/dist/extraction/extraction-version.d.ts +2 -2
- package/dist/extraction/extraction-version.d.ts.map +1 -1
- package/dist/extraction/extraction-version.js +2 -2
- package/dist/extraction/extraction-version.js.map +1 -1
- package/dist/extraction/function-ref.d.ts +118 -0
- package/dist/extraction/function-ref.d.ts.map +1 -0
- package/dist/extraction/function-ref.js +727 -0
- package/dist/extraction/function-ref.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -1
- package/dist/extraction/generated-detection.js +3 -0
- package/dist/extraction/generated-detection.js.map +1 -1
- package/dist/extraction/grammars.d.ts +15 -5
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +44 -10
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +37 -0
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +562 -70
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts-viewtree.d.ts +22 -0
- package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -0
- package/dist/extraction/languages/arkts-viewtree.js +133 -0
- package/dist/extraction/languages/arkts-viewtree.js.map +1 -0
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +211 -20
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +8 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +104 -2
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/csharp.d.ts.map +1 -1
- package/dist/extraction/languages/csharp.js +58 -3
- package/dist/extraction/languages/csharp.js.map +1 -1
- package/dist/extraction/languages/dart.d.ts.map +1 -1
- package/dist/extraction/languages/dart.js +183 -1
- package/dist/extraction/languages/dart.js.map +1 -1
- package/dist/extraction/languages/go.d.ts.map +1 -1
- package/dist/extraction/languages/go.js +37 -0
- package/dist/extraction/languages/go.js.map +1 -1
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +2 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/java.d.ts.map +1 -1
- package/dist/extraction/languages/java.js +241 -0
- package/dist/extraction/languages/java.js.map +1 -1
- package/dist/extraction/languages/javascript.d.ts.map +1 -1
- package/dist/extraction/languages/javascript.js +16 -0
- package/dist/extraction/languages/javascript.js.map +1 -1
- package/dist/extraction/languages/kotlin.d.ts.map +1 -1
- package/dist/extraction/languages/kotlin.js +94 -0
- package/dist/extraction/languages/kotlin.js.map +1 -1
- package/dist/extraction/languages/objc.d.ts.map +1 -1
- package/dist/extraction/languages/objc.js +42 -0
- package/dist/extraction/languages/objc.js.map +1 -1
- package/dist/extraction/languages/pascal.d.ts.map +1 -1
- package/dist/extraction/languages/pascal.js +11 -0
- package/dist/extraction/languages/pascal.js.map +1 -1
- package/dist/extraction/languages/php.d.ts.map +1 -1
- package/dist/extraction/languages/php.js +77 -1
- package/dist/extraction/languages/php.js.map +1 -1
- package/dist/extraction/languages/r.d.ts +3 -0
- package/dist/extraction/languages/r.d.ts.map +1 -0
- package/dist/extraction/languages/r.js +314 -0
- package/dist/extraction/languages/r.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -1
- package/dist/extraction/languages/rust.js +29 -0
- package/dist/extraction/languages/rust.js.map +1 -1
- package/dist/extraction/languages/scala.d.ts.map +1 -1
- package/dist/extraction/languages/scala.js +44 -9
- package/dist/extraction/languages/scala.js.map +1 -1
- package/dist/extraction/languages/swift.d.ts.map +1 -1
- package/dist/extraction/languages/swift.js +61 -0
- package/dist/extraction/languages/swift.js.map +1 -1
- package/dist/extraction/languages/typescript.d.ts +13 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -1
- package/dist/extraction/languages/typescript.js +38 -0
- package/dist/extraction/languages/typescript.js.map +1 -1
- package/dist/extraction/liquid-extractor.d.ts.map +1 -1
- package/dist/extraction/liquid-extractor.js +4 -1
- package/dist/extraction/liquid-extractor.js.map +1 -1
- package/dist/extraction/parse-worker.js +4 -1
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/svelte-extractor.d.ts.map +1 -1
- package/dist/extraction/svelte-extractor.js +6 -3
- package/dist/extraction/svelte-extractor.js.map +1 -1
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/dist/extraction/tree-sitter-helpers.js +59 -10
- package/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/dist/extraction/tree-sitter-types.d.ts +29 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +192 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +1553 -45
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/vue-extractor.d.ts.map +1 -1
- package/dist/extraction/vue-extractor.js +6 -3
- package/dist/extraction/vue-extractor.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +11 -2
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +64 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +137 -41
- package/dist/index.js.map +1 -1
- package/dist/installer/config-writer.d.ts +1 -1
- package/dist/installer/config-writer.js +1 -1
- package/dist/installer/index.d.ts +4 -4
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +100 -73
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/instructions-template.d.ts +34 -11
- package/dist/installer/instructions-template.d.ts.map +1 -1
- package/dist/installer/instructions-template.js +44 -12
- package/dist/installer/instructions-template.js.map +1 -1
- package/dist/installer/targets/antigravity.d.ts +6 -6
- package/dist/installer/targets/antigravity.js +14 -14
- package/dist/installer/targets/claude.d.ts +19 -13
- package/dist/installer/targets/claude.d.ts.map +1 -1
- package/dist/installer/targets/claude.js +97 -29
- package/dist/installer/targets/claude.js.map +1 -1
- package/dist/installer/targets/codebuddy.d.ts +17 -0
- package/dist/installer/targets/codebuddy.d.ts.map +1 -0
- package/dist/installer/targets/codebuddy.js +150 -0
- package/dist/installer/targets/codebuddy.js.map +1 -0
- package/dist/installer/targets/codex.js +5 -7
- package/dist/installer/targets/codex.js.map +1 -1
- package/dist/installer/targets/cursor.d.ts +1 -1
- package/dist/installer/targets/cursor.js +7 -7
- package/dist/installer/targets/deveco.d.ts +23 -0
- package/dist/installer/targets/deveco.d.ts.map +1 -0
- package/dist/installer/targets/deveco.js +217 -0
- package/dist/installer/targets/deveco.js.map +1 -0
- package/dist/installer/targets/gemini.js +5 -7
- package/dist/installer/targets/gemini.js.map +1 -1
- package/dist/installer/targets/hermes.js +15 -15
- package/dist/installer/targets/kiro.d.ts +1 -1
- package/dist/installer/targets/kiro.js +4 -4
- package/dist/installer/targets/opencode.d.ts +9 -1
- package/dist/installer/targets/opencode.d.ts.map +1 -1
- package/dist/installer/targets/opencode.js +92 -41
- package/dist/installer/targets/opencode.js.map +1 -1
- package/dist/installer/targets/registry.d.ts.map +1 -1
- package/dist/installer/targets/registry.js +4 -0
- package/dist/installer/targets/registry.js.map +1 -1
- package/dist/installer/targets/shared.d.ts +28 -4
- package/dist/installer/targets/shared.d.ts.map +1 -1
- package/dist/installer/targets/shared.js +32 -15
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/installer/targets/types.d.ts +9 -2
- package/dist/installer/targets/types.d.ts.map +1 -1
- package/dist/mcp/daemon-manager.d.ts +42 -0
- package/dist/mcp/daemon-manager.d.ts.map +1 -0
- package/dist/mcp/daemon-manager.js +129 -0
- package/dist/mcp/daemon-manager.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +1 -1
- package/dist/mcp/daemon-paths.js +3 -3
- package/dist/mcp/daemon-registry.d.ts +47 -0
- package/dist/mcp/daemon-registry.d.ts.map +1 -0
- package/dist/mcp/daemon-registry.js +229 -0
- package/dist/mcp/daemon-registry.js.map +1 -0
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +27 -6
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/dynamic-boundaries.d.ts +41 -0
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/dist/mcp/dynamic-boundaries.js +359 -0
- package/dist/mcp/dynamic-boundaries.js.map +1 -0
- package/dist/mcp/engine.d.ts +4 -4
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +32 -24
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts +8 -7
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +39 -18
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.d.ts +18 -0
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
- package/dist/mcp/liveness-watchdog.js +207 -0
- package/dist/mcp/liveness-watchdog.js.map +1 -0
- package/dist/mcp/proxy.d.ts +6 -0
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +75 -18
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +22 -7
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +91 -59
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +3 -1
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +43 -7
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/stdin-teardown.d.ts +27 -0
- package/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/dist/mcp/stdin-teardown.js +49 -0
- package/dist/mcp/stdin-teardown.js.map +1 -0
- package/dist/mcp/tools.d.ts +137 -16
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1271 -219
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/transport.d.ts +1 -1
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +20 -4
- package/dist/mcp/transport.js.map +1 -1
- package/dist/mcp/version.d.ts +1 -1
- package/dist/mcp/version.js +2 -2
- package/dist/project-config.d.ts +36 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +235 -0
- package/dist/project-config.js.map +1 -0
- package/dist/reasoning/config.d.ts +45 -0
- package/dist/reasoning/config.d.ts.map +1 -0
- package/dist/reasoning/config.js +171 -0
- package/dist/reasoning/config.js.map +1 -0
- package/dist/reasoning/credentials.d.ts +5 -0
- package/dist/reasoning/credentials.d.ts.map +1 -0
- package/dist/reasoning/credentials.js +83 -0
- package/dist/reasoning/credentials.js.map +1 -0
- package/dist/reasoning/login.d.ts +21 -0
- package/dist/reasoning/login.d.ts.map +1 -0
- package/dist/reasoning/login.js +85 -0
- package/dist/reasoning/login.js.map +1 -0
- package/dist/reasoning/reasoner.d.ts +43 -0
- package/dist/reasoning/reasoner.d.ts.map +1 -0
- package/dist/reasoning/reasoner.js +308 -0
- package/dist/reasoning/reasoner.js.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts +33 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.js +352 -0
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +6 -1
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +1197 -1
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/frameworks/arkts-entry.d.ts +12 -0
- package/dist/resolution/frameworks/arkts-entry.d.ts.map +1 -0
- package/dist/resolution/frameworks/arkts-entry.js +214 -0
- package/dist/resolution/frameworks/arkts-entry.js.map +1 -0
- package/dist/resolution/frameworks/arkts-napi.d.ts +3 -0
- package/dist/resolution/frameworks/arkts-napi.d.ts.map +1 -0
- package/dist/resolution/frameworks/arkts-napi.js +166 -0
- package/dist/resolution/frameworks/arkts-napi.js.map +1 -0
- package/dist/resolution/frameworks/astro.d.ts +9 -0
- package/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/dist/resolution/frameworks/astro.js +169 -0
- package/dist/resolution/frameworks/astro.js.map +1 -0
- package/dist/resolution/frameworks/goframe.d.ts +41 -0
- package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
- package/dist/resolution/frameworks/goframe.js +112 -0
- package/dist/resolution/frameworks/goframe.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +3 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +17 -1
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.js +6 -1
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/react.d.ts.map +1 -1
- package/dist/resolution/frameworks/react.js +32 -63
- package/dist/resolution/frameworks/react.js.map +1 -1
- package/dist/resolution/frameworks/svelte.js +6 -2
- package/dist/resolution/frameworks/svelte.js.map +1 -1
- package/dist/resolution/frameworks/vue.js +24 -27
- package/dist/resolution/frameworks/vue.js.map +1 -1
- package/dist/resolution/goframe-synthesizer.d.ts +28 -0
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
- package/dist/resolution/goframe-synthesizer.js +158 -0
- package/dist/resolution/goframe-synthesizer.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +10 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +125 -2
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +37 -0
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +306 -3
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/name-matcher.d.ts +41 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +519 -14
- package/dist/resolution/name-matcher.js.map +1 -1
- 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 +2 -0
- package/dist/resolution/strip-comments.js.map +1 -1
- package/dist/resolution/types.d.ts +20 -3
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/search/query-utils.d.ts +17 -1
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +79 -10
- package/dist/search/query-utils.js.map +1 -1
- package/dist/sync/git-hooks.d.ts +4 -4
- package/dist/sync/git-hooks.js +5 -5
- package/dist/sync/watcher.d.ts +69 -2
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +226 -21
- package/dist/sync/watcher.js.map +1 -1
- package/dist/sync/worktree.d.ts +3 -3
- package/dist/sync/worktree.js +5 -5
- package/dist/telemetry/index.d.ts +143 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +541 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/types.d.ts +18 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -1
- package/dist/types.js.map +1 -1
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +46 -10
- package/dist/upgrade/index.js.map +1 -1
- package/dist/utils.d.ts +46 -27
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +87 -53
- package/dist/utils.js.map +1 -1
- package/package.json +57 -57
- package/scripts/add-lang/bench.sh +60 -60
- package/scripts/add-lang/check-grammar.mjs +75 -75
- package/scripts/add-lang/dump-ast.mjs +103 -103
- package/scripts/add-lang/verify-extraction.mjs +70 -70
- package/scripts/agent-eval/ab-adoption.sh +91 -0
- package/scripts/agent-eval/ab-hook.sh +86 -0
- package/scripts/agent-eval/ab-impl.sh +78 -0
- package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
- package/scripts/agent-eval/ab-sufficiency.sh +78 -0
- package/scripts/agent-eval/arms-F.sh +21 -21
- package/scripts/agent-eval/arms-matrix.sh +37 -37
- package/scripts/agent-eval/audit.sh +68 -68
- package/scripts/agent-eval/bench-readme.sh +28 -28
- package/scripts/agent-eval/bench-why-repo.sh +22 -22
- package/scripts/agent-eval/block-read-hook.sh +19 -19
- package/scripts/agent-eval/hook-settings.json +15 -15
- package/scripts/agent-eval/itrun.sh +120 -120
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
- package/scripts/agent-eval/offload-eval-setup.sh +24 -0
- package/scripts/agent-eval/offload-eval-styles.sh +72 -0
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
- package/scripts/agent-eval/offload-eval.md +76 -0
- package/scripts/agent-eval/parse-arms.mjs +116 -116
- package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
- package/scripts/agent-eval/parse-run.mjs +45 -45
- package/scripts/agent-eval/parse-session.mjs +93 -93
- package/scripts/agent-eval/probe-context.mjs +21 -21
- package/scripts/agent-eval/probe-explore.mjs +40 -40
- package/scripts/agent-eval/probe-node.mjs +20 -20
- package/scripts/agent-eval/probe-sweep.mjs +119 -119
- package/scripts/agent-eval/probe-trace.mjs +20 -20
- package/scripts/agent-eval/redirect-read-hook.sh +38 -0
- package/scripts/agent-eval/run-agent.sh +34 -34
- package/scripts/agent-eval/run-all.sh +69 -67
- package/scripts/agent-eval/run-arms.sh +56 -56
- package/scripts/agent-eval/seq-matrix.mjs +137 -137
- package/scripts/build-bundle.sh +118 -118
- package/scripts/extract-release-notes.mjs +130 -130
- package/scripts/local-install.sh +41 -41
- package/scripts/npm-sdk.js +75 -75
- package/scripts/npm-shim.js +246 -246
- package/scripts/pack-npm.sh +119 -119
- package/scripts/prepare-release.mjs +270 -270
- package/scripts/qa_eval/README.md +400 -0
- package/scripts/qa_eval/agent_runner.py +526 -0
- package/scripts/qa_eval/data/.gitignore +4 -0
- package/scripts/qa_eval/data/test-set.jsonl +22 -0
- package/scripts/qa_eval/eval_metrics.py +233 -0
- package/scripts/qa_eval/external_agent.py +577 -0
- package/scripts/qa_eval/llm_config.py +92 -0
- package/scripts/qa_eval/memory_monitor.py +132 -0
- package/scripts/qa_eval/my_answer_accuracy.py +187 -0
- package/scripts/qa_eval/requirements.txt +2 -0
- package/scripts/qa_eval/run_pipeline.py +702 -0
- package/scripts/qa_eval/stats_efficiency.py +279 -0
- package/scripts/qa_eval/stats_scores.py +207 -0
- package/dist/bin/codegraph.d.ts +0 -26
- package/dist/bin/codegraph.d.ts.map +0 -1
- package/dist/bin/codegraph.js +0 -1572
- package/dist/bin/codegraph.js.map +0 -1
- package/dist/extraction/arkanalyzer-extractor.d.ts +0 -6
- package/dist/extraction/arkanalyzer-extractor.d.ts.map +0 -1
- package/dist/extraction/arkanalyzer-extractor.js +0 -11
- package/dist/extraction/arkanalyzer-extractor.js.map +0 -1
- package/dist/extraction/arkanalyzer-project.d.ts +0 -20
- package/dist/extraction/arkanalyzer-project.d.ts.map +0 -1
- package/dist/extraction/arkanalyzer-project.js +0 -596
- package/dist/extraction/arkanalyzer-project.js.map +0 -1
package/dist/sync/watcher.d.ts
CHANGED
|
@@ -24,12 +24,22 @@
|
|
|
24
24
|
* per-file watches are never needed.
|
|
25
25
|
*
|
|
26
26
|
* Excluded trees (node_modules/, dist/, .git/, …) are filtered via the
|
|
27
|
-
* indexer's `
|
|
27
|
+
* indexer's `buildScopeIgnore` (built-in default-ignore dirs + the project's
|
|
28
28
|
* .gitignore) — on Linux they're never descended into (so they cost no watch),
|
|
29
29
|
* and on macOS/Windows the single recursive stream still covers them but their
|
|
30
30
|
* events are dropped before any sync is scheduled. Either way the watcher's
|
|
31
31
|
* scope matches the indexer's (#276 / #407).
|
|
32
32
|
*/
|
|
33
|
+
import * as fs from 'fs';
|
|
34
|
+
/**
|
|
35
|
+
* Indirection over `fs.watch` so tests can inject a fake that throws or emits
|
|
36
|
+
* `EMFILE`/`ENFILE` deterministically (real watch-resource exhaustion can't be
|
|
37
|
+
* provoked reliably, and `fs.watch` is a non-configurable property so it can't
|
|
38
|
+
* be spied). Production always uses the real `fs.watch`.
|
|
39
|
+
*/
|
|
40
|
+
type WatchFn = typeof fs.watch;
|
|
41
|
+
/** @internal Test-only seam to inject a fake fs.watch implementation. */
|
|
42
|
+
export declare function __setFsWatchForTests(fn: WatchFn | null): void;
|
|
33
43
|
/**
|
|
34
44
|
* Options for the file watcher
|
|
35
45
|
*/
|
|
@@ -51,6 +61,14 @@ export interface WatchOptions {
|
|
|
51
61
|
* Callback when a sync errors (for logging/diagnostics).
|
|
52
62
|
*/
|
|
53
63
|
onSyncError?: (error: Error) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Callback fired ONCE when live watching degrades permanently and auto-sync
|
|
66
|
+
* is disabled — OS watch-resource exhaustion (EMFILE/ENFILE), or a write lock
|
|
67
|
+
* held past the retry budget. The string is an actionable, human-readable
|
|
68
|
+
* reason. Lets a host (MCP server, daemon, CLI) tell the user that the index
|
|
69
|
+
* will no longer auto-update instead of silently serving stale results.
|
|
70
|
+
*/
|
|
71
|
+
onDegraded?: (reason: string) => void;
|
|
54
72
|
/**
|
|
55
73
|
* Test-only. When true, `start()` installs NO OS-level fs.watch — the
|
|
56
74
|
* watcher is "inert" and only the {@link __emitWatchEventForTests} /
|
|
@@ -111,6 +129,22 @@ export declare class FileWatcher {
|
|
|
111
129
|
private dirWatchers;
|
|
112
130
|
/** Set once the per-directory watch cap is hit, so we log only once. */
|
|
113
131
|
private dirCapWarned;
|
|
132
|
+
/**
|
|
133
|
+
* Set once the Linux inotify watch limit (ENOSPC) is hit. Double duty: we
|
|
134
|
+
* warn only once, AND we stop attempting new directory watches for the rest
|
|
135
|
+
* of the session — once the kernel budget is exhausted every further
|
|
136
|
+
* `inotify_add_watch` fails too, so trying the rest of the tree is pure
|
|
137
|
+
* waste. NON-fatal (does not degrade): installed watches keep working.
|
|
138
|
+
*/
|
|
139
|
+
private inotifyLimitWarned;
|
|
140
|
+
/**
|
|
141
|
+
* One-way latch: the reason live watching was permanently disabled at runtime
|
|
142
|
+
* (watch-resource exhaustion, or lock contention past the retry budget), or
|
|
143
|
+
* null while healthy. Set by {@link degrade}; cleared only by a fresh start().
|
|
144
|
+
*/
|
|
145
|
+
private degradedReason;
|
|
146
|
+
/** Consecutive lock-contention retries for watcher-triggered syncs. */
|
|
147
|
+
private lockRetryCount;
|
|
114
148
|
/** Test-only inert mode: started, but with no OS watcher installed. */
|
|
115
149
|
private inert;
|
|
116
150
|
private debounceTimer;
|
|
@@ -152,6 +186,7 @@ export declare class FileWatcher {
|
|
|
152
186
|
private readonly syncFn;
|
|
153
187
|
private readonly onSyncComplete?;
|
|
154
188
|
private readonly onSyncError?;
|
|
189
|
+
private readonly onDegraded?;
|
|
155
190
|
private readonly inertForTests;
|
|
156
191
|
constructor(projectRoot: string, syncFn: () => Promise<{
|
|
157
192
|
filesChanged: number;
|
|
@@ -211,6 +246,31 @@ export declare class FileWatcher {
|
|
|
211
246
|
* dir-only ignore rule like `build/` matches.
|
|
212
247
|
*/
|
|
213
248
|
private shouldIgnoreDir;
|
|
249
|
+
/**
|
|
250
|
+
* Permanently disable live watching after a terminal runtime failure
|
|
251
|
+
* (watch-resource exhaustion, or lock contention past the retry budget).
|
|
252
|
+
* Idempotent: logs one actionable warning, fires {@link WatchOptions.onDegraded}
|
|
253
|
+
* once, and stops the watcher. A subsequent start() clears the latch.
|
|
254
|
+
*/
|
|
255
|
+
private degrade;
|
|
256
|
+
/**
|
|
257
|
+
* Warn ONCE that the Linux inotify watch budget is exhausted (ENOSPC), and
|
|
258
|
+
* stop adding new watches for the rest of this session — every further
|
|
259
|
+
* `inotify_add_watch` would fail too, so walking the rest of the tree is
|
|
260
|
+
* waste. Unlike {@link degrade} this is NON-fatal: the watches already
|
|
261
|
+
* installed keep firing, and `homegraph sync` covers the unwatched remainder.
|
|
262
|
+
* The message names the kernel knob to raise (`fs.inotify.max_user_watches`).
|
|
263
|
+
*/
|
|
264
|
+
private warnInotifyLimit;
|
|
265
|
+
/**
|
|
266
|
+
* Whether live watching has degraded permanently (until the next start()).
|
|
267
|
+
* Distinct from {@link isActive}: a degraded watcher is inactive, but an
|
|
268
|
+
* inactive watcher is not necessarily degraded (it may simply be stopped or
|
|
269
|
+
* never started). Hosts use this to tell the user auto-sync is off.
|
|
270
|
+
*/
|
|
271
|
+
isDegraded(): boolean;
|
|
272
|
+
/** The reason live watching degraded, or null if it is healthy. */
|
|
273
|
+
getDegradedReason(): string | null;
|
|
214
274
|
/**
|
|
215
275
|
* Stop watching for file changes.
|
|
216
276
|
*/
|
|
@@ -238,9 +298,15 @@ export declare class FileWatcher {
|
|
|
238
298
|
*/
|
|
239
299
|
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
240
300
|
/**
|
|
241
|
-
* Schedule a debounced sync.
|
|
301
|
+
* Schedule a normal debounced sync after a source edit.
|
|
242
302
|
*/
|
|
243
303
|
private scheduleSync;
|
|
304
|
+
/**
|
|
305
|
+
* Schedule a retry after a recoverable sync failure (lock contention). Kept
|
|
306
|
+
* separate from {@link scheduleSync} so prolonged contention backs off
|
|
307
|
+
* exponentially instead of hammering the lock every debounce cycle.
|
|
308
|
+
*/
|
|
309
|
+
private scheduleRetrySync;
|
|
244
310
|
/**
|
|
245
311
|
* Flush pending changes by running sync.
|
|
246
312
|
*
|
|
@@ -280,4 +346,5 @@ export declare class FileWatcher {
|
|
|
280
346
|
* test runtime, where the registry is intentionally not populated).
|
|
281
347
|
*/
|
|
282
348
|
export declare function __emitWatchEventForTests(projectRoot: string, relPath: string): boolean;
|
|
349
|
+
export {};
|
|
283
350
|
//# sourceMappingURL=watcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/watcher.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* per-file watches are never needed.
|
|
26
26
|
*
|
|
27
27
|
* Excluded trees (node_modules/, dist/, .git/, …) are filtered via the
|
|
28
|
-
* indexer's `
|
|
28
|
+
* indexer's `buildScopeIgnore` (built-in default-ignore dirs + the project's
|
|
29
29
|
* .gitignore) — on Linux they're never descended into (so they cost no watch),
|
|
30
30
|
* and on macOS/Windows the single recursive stream still covers them but their
|
|
31
31
|
* events are dropped before any sync is scheduled. Either way the watcher's
|
|
@@ -66,13 +66,62 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
66
66
|
})();
|
|
67
67
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
68
|
exports.FileWatcher = exports.LockUnavailableError = void 0;
|
|
69
|
+
exports.__setFsWatchForTests = __setFsWatchForTests;
|
|
69
70
|
exports.__emitWatchEventForTests = __emitWatchEventForTests;
|
|
70
71
|
const fs = __importStar(require("fs"));
|
|
71
72
|
const path = __importStar(require("path"));
|
|
72
73
|
const extraction_1 = require("../extraction");
|
|
74
|
+
const project_config_1 = require("../project-config");
|
|
73
75
|
const errors_1 = require("../errors");
|
|
74
76
|
const utils_1 = require("../utils");
|
|
77
|
+
const directory_1 = require("../directory");
|
|
75
78
|
const watch_policy_1 = require("./watch-policy");
|
|
79
|
+
/**
|
|
80
|
+
* Number of consecutive lock-contention retries the watcher tolerates before
|
|
81
|
+
* it gives up and degrades auto-sync. Brief contention (another writer for a
|
|
82
|
+
* few cycles) stays under this; a long-lived external writer crosses it.
|
|
83
|
+
*/
|
|
84
|
+
const MAX_LOCK_RETRIES = 5;
|
|
85
|
+
/** Cap on the exponential lock-retry backoff so it never sleeps absurdly long. */
|
|
86
|
+
const MAX_LOCK_RETRY_DELAY_MS = 30_000;
|
|
87
|
+
/** Actionable degrade message; both exhaustion paths share it verbatim. */
|
|
88
|
+
const EXHAUSTION_REASON = 'OS watch/file limit exhausted; auto-sync disabled. Run `homegraph sync` ' +
|
|
89
|
+
'(or install git sync hooks) to refresh the graph after changes.';
|
|
90
|
+
/**
|
|
91
|
+
* Actionable, NON-fatal warning for Linux inotify watch-count exhaustion.
|
|
92
|
+
* Unlike {@link EXHAUSTION_REASON} this does not disable the watcher — the
|
|
93
|
+
* watches already installed keep working — so it names the exact kernel knob to
|
|
94
|
+
* raise instead.
|
|
95
|
+
*/
|
|
96
|
+
const INOTIFY_LIMIT_REASON = 'Linux inotify watch limit reached (fs.inotify.max_user_watches); live ' +
|
|
97
|
+
'watching now covers only part of the project, so edits in unwatched ' +
|
|
98
|
+
'directories will not auto-sync. Raise the limit (e.g. `sudo sysctl ' +
|
|
99
|
+
'fs.inotify.max_user_watches=1048576`, persisted in /etc/sysctl.d) and ' +
|
|
100
|
+
'restart, or run `homegraph sync` (or install git sync hooks) to refresh.';
|
|
101
|
+
/**
|
|
102
|
+
* True when an error is OS watch/file-descriptor exhaustion (EMFILE/ENFILE).
|
|
103
|
+
* Prefers the structured `err.code`; falls back to message matching ONLY when
|
|
104
|
+
* no code is present (some platforms surface a bare Error from `fs.watch`).
|
|
105
|
+
*/
|
|
106
|
+
function isWatchResourceExhaustion(err) {
|
|
107
|
+
const e = err;
|
|
108
|
+
if (e?.code === 'EMFILE' || e?.code === 'ENFILE')
|
|
109
|
+
return true;
|
|
110
|
+
if (!e?.code && e?.message) {
|
|
111
|
+
return /EMFILE|ENFILE|too many open files/i.test(e.message);
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* True when an error is Linux inotify *watch-count* exhaustion. `fs.watch`
|
|
117
|
+
* surfaces a hit `fs.inotify.max_user_watches` as ENOSPC ("no space" = no watch
|
|
118
|
+
* descriptors left, NOT disk space). This only arises on the Linux
|
|
119
|
+
* per-directory path; it is non-fatal (raise the limit and partial watching
|
|
120
|
+
* keeps working), so it warns rather than degrading.
|
|
121
|
+
*/
|
|
122
|
+
function isInotifyWatchExhaustion(err) {
|
|
123
|
+
return err?.code === 'ENOSPC';
|
|
124
|
+
}
|
|
76
125
|
/**
|
|
77
126
|
* Native recursive `fs.watch` is only reliable on macOS and Windows; on Linux
|
|
78
127
|
* (and AIX) it throws `ERR_FEATURE_UNAVAILABLE_ON_PLATFORM`. We branch on this
|
|
@@ -81,6 +130,11 @@ const watch_policy_1 = require("./watch-policy");
|
|
|
81
130
|
function supportsRecursiveWatch() {
|
|
82
131
|
return process.platform === 'darwin' || process.platform === 'win32';
|
|
83
132
|
}
|
|
133
|
+
let watchImpl = fs.watch;
|
|
134
|
+
/** @internal Test-only seam to inject a fake fs.watch implementation. */
|
|
135
|
+
function __setFsWatchForTests(fn) {
|
|
136
|
+
watchImpl = fn ?? fs.watch;
|
|
137
|
+
}
|
|
84
138
|
/**
|
|
85
139
|
* Upper bound on simultaneously-watched directories on the Linux per-directory
|
|
86
140
|
* path. Each is one inotify watch; the kernel's `fs.inotify.max_user_watches`
|
|
@@ -116,7 +170,7 @@ const IS_TEST_RUNTIME = !!(process.env.VITEST || process.env.NODE_ENV === 'test'
|
|
|
116
170
|
* external indexer can hit this every debounce cycle.
|
|
117
171
|
*/
|
|
118
172
|
class LockUnavailableError extends Error {
|
|
119
|
-
constructor(message = '
|
|
173
|
+
constructor(message = 'HomeGraph file lock unavailable; another process is writing') {
|
|
120
174
|
super(message);
|
|
121
175
|
this.name = 'LockUnavailableError';
|
|
122
176
|
}
|
|
@@ -143,6 +197,22 @@ class FileWatcher {
|
|
|
143
197
|
dirWatchers = new Map();
|
|
144
198
|
/** Set once the per-directory watch cap is hit, so we log only once. */
|
|
145
199
|
dirCapWarned = false;
|
|
200
|
+
/**
|
|
201
|
+
* Set once the Linux inotify watch limit (ENOSPC) is hit. Double duty: we
|
|
202
|
+
* warn only once, AND we stop attempting new directory watches for the rest
|
|
203
|
+
* of the session — once the kernel budget is exhausted every further
|
|
204
|
+
* `inotify_add_watch` fails too, so trying the rest of the tree is pure
|
|
205
|
+
* waste. NON-fatal (does not degrade): installed watches keep working.
|
|
206
|
+
*/
|
|
207
|
+
inotifyLimitWarned = false;
|
|
208
|
+
/**
|
|
209
|
+
* One-way latch: the reason live watching was permanently disabled at runtime
|
|
210
|
+
* (watch-resource exhaustion, or lock contention past the retry budget), or
|
|
211
|
+
* null while healthy. Set by {@link degrade}; cleared only by a fresh start().
|
|
212
|
+
*/
|
|
213
|
+
degradedReason = null;
|
|
214
|
+
/** Consecutive lock-contention retries for watcher-triggered syncs. */
|
|
215
|
+
lockRetryCount = 0;
|
|
146
216
|
/** Test-only inert mode: started, but with no OS watcher installed. */
|
|
147
217
|
inert = false;
|
|
148
218
|
debounceTimer = null;
|
|
@@ -178,15 +248,18 @@ class FileWatcher {
|
|
|
178
248
|
* deterministically gate on watcher readiness.
|
|
179
249
|
*/
|
|
180
250
|
readyWaiters = [];
|
|
181
|
-
// The shared
|
|
182
|
-
//
|
|
183
|
-
//
|
|
251
|
+
// The shared scope matcher (built-in defaults + project .gitignore, with
|
|
252
|
+
// embedded child repos matched by their OWN rules — #514), built once at
|
|
253
|
+
// start(). Same source of truth the indexer uses, so watcher scope can
|
|
254
|
+
// never diverge from index scope. An embedded repo created after start()
|
|
255
|
+
// joins the scope on the next watcher restart / re-index.
|
|
184
256
|
ignoreMatcher = null;
|
|
185
257
|
projectRoot;
|
|
186
258
|
debounceMs;
|
|
187
259
|
syncFn;
|
|
188
260
|
onSyncComplete;
|
|
189
261
|
onSyncError;
|
|
262
|
+
onDegraded;
|
|
190
263
|
inertForTests;
|
|
191
264
|
constructor(projectRoot, syncFn, options = {}) {
|
|
192
265
|
this.projectRoot = projectRoot;
|
|
@@ -194,6 +267,7 @@ class FileWatcher {
|
|
|
194
267
|
this.debounceMs = options.debounceMs ?? 2000;
|
|
195
268
|
this.onSyncComplete = options.onSyncComplete;
|
|
196
269
|
this.onSyncError = options.onSyncError;
|
|
270
|
+
this.onDegraded = options.onDegraded;
|
|
197
271
|
this.inertForTests = options.inertForTests ?? false;
|
|
198
272
|
}
|
|
199
273
|
/**
|
|
@@ -204,6 +278,8 @@ class FileWatcher {
|
|
|
204
278
|
if (this.recursiveWatcher || this.dirWatchers.size > 0 || this.inert)
|
|
205
279
|
return true; // Already watching
|
|
206
280
|
this.stopped = false;
|
|
281
|
+
this.degradedReason = null;
|
|
282
|
+
this.lockRetryCount = 0;
|
|
207
283
|
// Some environments make filesystem watching unusable — most notably
|
|
208
284
|
// WSL2 /mnt/ drives, where the underlying fs.watch calls block long
|
|
209
285
|
// enough to break MCP startup handshakes (issue #199). Skip watching
|
|
@@ -214,7 +290,7 @@ class FileWatcher {
|
|
|
214
290
|
return false;
|
|
215
291
|
}
|
|
216
292
|
// Reuse the indexer's ignore set so the watcher and indexer agree on scope.
|
|
217
|
-
this.ignoreMatcher = (0, extraction_1.
|
|
293
|
+
this.ignoreMatcher = (0, extraction_1.buildScopeIgnore)(this.projectRoot);
|
|
218
294
|
try {
|
|
219
295
|
if (this.inertForTests) {
|
|
220
296
|
// Test-only: install no OS watcher; the seam drives events instead.
|
|
@@ -226,6 +302,12 @@ class FileWatcher {
|
|
|
226
302
|
else {
|
|
227
303
|
this.startPerDirectory();
|
|
228
304
|
}
|
|
305
|
+
// The per-directory (Linux) path catches watch-resource exhaustion inside
|
|
306
|
+
// watchTree and degrades synchronously rather than throwing, so it never
|
|
307
|
+
// reaches the catch below. Surface that as a failed start here so both
|
|
308
|
+
// strategies report exhaustion identically (start() === false).
|
|
309
|
+
if (this.degradedReason)
|
|
310
|
+
return false;
|
|
229
311
|
// No async crawl to wait on: as soon as the watch set is installed we
|
|
230
312
|
// have a clean baseline (pendingFiles is only populated by post-start
|
|
231
313
|
// events). Clear defensively and flip ready.
|
|
@@ -245,9 +327,17 @@ class FileWatcher {
|
|
|
245
327
|
return true;
|
|
246
328
|
}
|
|
247
329
|
catch (err) {
|
|
248
|
-
// Watcher setup failed
|
|
249
|
-
|
|
250
|
-
|
|
330
|
+
// Watcher setup failed. Watch-resource exhaustion (EMFILE/ENFILE on the
|
|
331
|
+
// recursive path) is terminal — degrade cleanly with one actionable
|
|
332
|
+
// warning instead of leaving a half-broken watcher. Everything else
|
|
333
|
+
// (permission denied, missing directory) keeps the prior quiet-stop.
|
|
334
|
+
if (isWatchResourceExhaustion(err)) {
|
|
335
|
+
this.degrade(EXHAUSTION_REASON, { error: String(err) });
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
(0, errors_1.logWarn)('Could not start file watcher', { error: String(err) });
|
|
339
|
+
this.stop();
|
|
340
|
+
}
|
|
251
341
|
return false;
|
|
252
342
|
}
|
|
253
343
|
}
|
|
@@ -257,12 +347,16 @@ class FileWatcher {
|
|
|
257
347
|
* it maps straight to a project-relative path.
|
|
258
348
|
*/
|
|
259
349
|
startRecursive() {
|
|
260
|
-
this.recursiveWatcher =
|
|
350
|
+
this.recursiveWatcher = watchImpl(this.projectRoot, { recursive: true, persistent: true }, (_event, filename) => {
|
|
261
351
|
if (this.stopped || filename == null)
|
|
262
352
|
return;
|
|
263
353
|
this.handleChange((0, utils_1.normalizePath)(String(filename)));
|
|
264
354
|
});
|
|
265
355
|
this.recursiveWatcher.on('error', (err) => {
|
|
356
|
+
if (isWatchResourceExhaustion(err)) {
|
|
357
|
+
this.degrade(EXHAUSTION_REASON, { error: String(err) });
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
266
360
|
(0, errors_1.logWarn)('File watcher error', { error: String(err) });
|
|
267
361
|
});
|
|
268
362
|
}
|
|
@@ -284,6 +378,13 @@ class FileWatcher {
|
|
|
284
378
|
* sync owns the baseline).
|
|
285
379
|
*/
|
|
286
380
|
watchTree(dir, markExisting) {
|
|
381
|
+
// A degrade() mid-walk (exhaustion on an earlier directory) calls stop(),
|
|
382
|
+
// which sets `stopped`; bail so the recursion unwinds without adding more
|
|
383
|
+
// watches to a watcher that is shutting down. `inotifyLimitWarned` does the
|
|
384
|
+
// same after ENOSPC — the kernel budget is gone, so stop trying the rest of
|
|
385
|
+
// the tree (every add would fail) while keeping the watches already set.
|
|
386
|
+
if (this.stopped || this.degradedReason || this.inotifyLimitWarned)
|
|
387
|
+
return;
|
|
287
388
|
if (this.dirWatchers.has(dir))
|
|
288
389
|
return;
|
|
289
390
|
if (this.dirWatchers.size >= maxDirWatches()) {
|
|
@@ -297,13 +398,33 @@ class FileWatcher {
|
|
|
297
398
|
}
|
|
298
399
|
let w;
|
|
299
400
|
try {
|
|
300
|
-
w =
|
|
401
|
+
w = watchImpl(dir, { persistent: true }, (_event, filename) => this.handleDirEvent(dir, filename));
|
|
301
402
|
}
|
|
302
|
-
catch {
|
|
303
|
-
//
|
|
403
|
+
catch (err) {
|
|
404
|
+
// EMFILE/ENFILE means the PROCESS is out of descriptors — every further
|
|
405
|
+
// directory would fail too, so degrade the whole watcher rather than
|
|
406
|
+
// limping along with a partial watch set.
|
|
407
|
+
if (isWatchResourceExhaustion(err)) {
|
|
408
|
+
this.degrade(EXHAUSTION_REASON, { error: String(err), dir });
|
|
409
|
+
}
|
|
410
|
+
else if (isInotifyWatchExhaustion(err)) {
|
|
411
|
+
// ENOSPC = inotify watch budget exhausted. NON-fatal: keep the watches
|
|
412
|
+
// we have and tell the user the knob to raise (warn once).
|
|
413
|
+
this.warnInotifyLimit({ error: String(err), dir });
|
|
414
|
+
}
|
|
415
|
+
// ENOENT / EACCES on a single directory stays non-fatal: skip it quietly.
|
|
304
416
|
return;
|
|
305
417
|
}
|
|
306
|
-
w.on('error', () =>
|
|
418
|
+
w.on('error', (err) => {
|
|
419
|
+
if (isWatchResourceExhaustion(err)) {
|
|
420
|
+
this.degrade(EXHAUSTION_REASON, { error: String(err), dir });
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
if (isInotifyWatchExhaustion(err)) {
|
|
424
|
+
this.warnInotifyLimit({ error: String(err), dir });
|
|
425
|
+
}
|
|
426
|
+
this.unwatchDir(dir);
|
|
427
|
+
});
|
|
307
428
|
this.dirWatchers.set(dir, w);
|
|
308
429
|
let entries;
|
|
309
430
|
try {
|
|
@@ -366,7 +487,7 @@ class FileWatcher {
|
|
|
366
487
|
return;
|
|
367
488
|
if (this.ignoreMatcher && this.ignoreMatcher.ignores(rel))
|
|
368
489
|
return;
|
|
369
|
-
if (!(0, extraction_1.isSourceFile)(rel))
|
|
490
|
+
if (!(0, extraction_1.isSourceFile)(rel, (0, project_config_1.loadExtensionOverrides)(this.projectRoot)))
|
|
370
491
|
return;
|
|
371
492
|
(0, errors_1.logDebug)('File change detected', { file: rel });
|
|
372
493
|
if (this.ready) {
|
|
@@ -394,7 +515,11 @@ class FileWatcher {
|
|
|
394
515
|
}
|
|
395
516
|
/** Our own dirs are always ignored, regardless of .gitignore. */
|
|
396
517
|
isAlwaysIgnored(rel) {
|
|
397
|
-
|
|
518
|
+
// First path segment. Ignore any HomeGraph data dir — the active one AND a
|
|
519
|
+
// sibling like `.homegraph-win` a second environment (Windows/WSL) created
|
|
520
|
+
// in the same tree, so neither side watches the other's index (#636).
|
|
521
|
+
const top = rel.split('/')[0] ?? rel;
|
|
522
|
+
return ((0, directory_1.isHomeGraphDataDir)(top) ||
|
|
398
523
|
rel === '.git' || rel.startsWith('.git/'));
|
|
399
524
|
}
|
|
400
525
|
/**
|
|
@@ -412,6 +537,47 @@ class FileWatcher {
|
|
|
412
537
|
return false;
|
|
413
538
|
return this.ignoreMatcher.ignores(rel + '/');
|
|
414
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* Permanently disable live watching after a terminal runtime failure
|
|
542
|
+
* (watch-resource exhaustion, or lock contention past the retry budget).
|
|
543
|
+
* Idempotent: logs one actionable warning, fires {@link WatchOptions.onDegraded}
|
|
544
|
+
* once, and stops the watcher. A subsequent start() clears the latch.
|
|
545
|
+
*/
|
|
546
|
+
degrade(reason, context = {}) {
|
|
547
|
+
if (this.degradedReason)
|
|
548
|
+
return;
|
|
549
|
+
this.degradedReason = reason;
|
|
550
|
+
(0, errors_1.logWarn)('File watcher disabled', { projectRoot: this.projectRoot, reason, ...context });
|
|
551
|
+
this.onDegraded?.(reason);
|
|
552
|
+
this.stop();
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Warn ONCE that the Linux inotify watch budget is exhausted (ENOSPC), and
|
|
556
|
+
* stop adding new watches for the rest of this session — every further
|
|
557
|
+
* `inotify_add_watch` would fail too, so walking the rest of the tree is
|
|
558
|
+
* waste. Unlike {@link degrade} this is NON-fatal: the watches already
|
|
559
|
+
* installed keep firing, and `homegraph sync` covers the unwatched remainder.
|
|
560
|
+
* The message names the kernel knob to raise (`fs.inotify.max_user_watches`).
|
|
561
|
+
*/
|
|
562
|
+
warnInotifyLimit(context = {}) {
|
|
563
|
+
if (this.inotifyLimitWarned)
|
|
564
|
+
return;
|
|
565
|
+
this.inotifyLimitWarned = true;
|
|
566
|
+
(0, errors_1.logWarn)(INOTIFY_LIMIT_REASON, { watchedDirs: this.dirWatchers.size, ...context });
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Whether live watching has degraded permanently (until the next start()).
|
|
570
|
+
* Distinct from {@link isActive}: a degraded watcher is inactive, but an
|
|
571
|
+
* inactive watcher is not necessarily degraded (it may simply be stopped or
|
|
572
|
+
* never started). Hosts use this to tell the user auto-sync is off.
|
|
573
|
+
*/
|
|
574
|
+
isDegraded() {
|
|
575
|
+
return this.degradedReason !== null;
|
|
576
|
+
}
|
|
577
|
+
/** The reason live watching degraded, or null if it is healthy. */
|
|
578
|
+
getDegradedReason() {
|
|
579
|
+
return this.degradedReason;
|
|
580
|
+
}
|
|
415
581
|
/**
|
|
416
582
|
* Stop watching for file changes.
|
|
417
583
|
*/
|
|
@@ -440,6 +606,10 @@ class FileWatcher {
|
|
|
440
606
|
}
|
|
441
607
|
this.dirWatchers.clear();
|
|
442
608
|
this.dirCapWarned = false;
|
|
609
|
+
this.inotifyLimitWarned = false;
|
|
610
|
+
this.lockRetryCount = 0;
|
|
611
|
+
// NB: degradedReason is intentionally NOT reset here — it must survive the
|
|
612
|
+
// stop() that degrade() triggers so isDegraded() stays true. start() clears it.
|
|
443
613
|
this.inert = false;
|
|
444
614
|
this.pendingFiles.clear();
|
|
445
615
|
this.ready = false;
|
|
@@ -488,7 +658,7 @@ class FileWatcher {
|
|
|
488
658
|
});
|
|
489
659
|
}
|
|
490
660
|
/**
|
|
491
|
-
* Schedule a debounced sync.
|
|
661
|
+
* Schedule a normal debounced sync after a source edit.
|
|
492
662
|
*/
|
|
493
663
|
scheduleSync() {
|
|
494
664
|
if (this.debounceTimer) {
|
|
@@ -499,6 +669,20 @@ class FileWatcher {
|
|
|
499
669
|
this.flush();
|
|
500
670
|
}, this.debounceMs);
|
|
501
671
|
}
|
|
672
|
+
/**
|
|
673
|
+
* Schedule a retry after a recoverable sync failure (lock contention). Kept
|
|
674
|
+
* separate from {@link scheduleSync} so prolonged contention backs off
|
|
675
|
+
* exponentially instead of hammering the lock every debounce cycle.
|
|
676
|
+
*/
|
|
677
|
+
scheduleRetrySync(delayMs) {
|
|
678
|
+
if (this.debounceTimer) {
|
|
679
|
+
clearTimeout(this.debounceTimer);
|
|
680
|
+
}
|
|
681
|
+
this.debounceTimer = setTimeout(() => {
|
|
682
|
+
this.debounceTimer = null;
|
|
683
|
+
this.flush();
|
|
684
|
+
}, delayMs);
|
|
685
|
+
}
|
|
502
686
|
/**
|
|
503
687
|
* Flush pending changes by running sync.
|
|
504
688
|
*
|
|
@@ -519,6 +703,7 @@ class FileWatcher {
|
|
|
519
703
|
this.syncing = true;
|
|
520
704
|
try {
|
|
521
705
|
const result = await this.syncFn();
|
|
706
|
+
this.lockRetryCount = 0; // a clean sync clears any contention backoff
|
|
522
707
|
// Remove entries whose most recent event predates this sync — those
|
|
523
708
|
// edits are now in the DB. Entries with lastSeenMs > syncStartedMs
|
|
524
709
|
// arrived mid-sync; whether the in-flight sync captured them depends
|
|
@@ -535,14 +720,24 @@ class FileWatcher {
|
|
|
535
720
|
}
|
|
536
721
|
catch (err) {
|
|
537
722
|
if (err instanceof LockUnavailableError) {
|
|
723
|
+
this.lockRetryCount += 1;
|
|
538
724
|
// Lock-failure no-op (another writer holds the lock). pendingFiles
|
|
539
|
-
// stays intact and the `finally` block reschedules.
|
|
540
|
-
// a long external index would
|
|
725
|
+
// stays intact and the `finally` block reschedules with backoff. Keep
|
|
726
|
+
// brief contention quiet (debug-only — a long external index would
|
|
727
|
+
// otherwise spam stderr every cycle), but stop retrying forever: once a
|
|
728
|
+
// writer holds the lock past the budget, degrade auto-sync explicitly.
|
|
541
729
|
(0, errors_1.logDebug)('Watch sync skipped: file lock unavailable', {
|
|
542
730
|
pendingFiles: this.pendingFiles.size,
|
|
731
|
+
retryCount: this.lockRetryCount,
|
|
543
732
|
});
|
|
733
|
+
if (this.lockRetryCount > MAX_LOCK_RETRIES) {
|
|
734
|
+
this.degrade('HomeGraph file lock held by another process past the retry budget; ' +
|
|
735
|
+
'auto-sync disabled. Run `homegraph sync` once the other writer finishes ' +
|
|
736
|
+
'(or install git sync hooks) to refresh the graph.', { pendingFiles: this.pendingFiles.size, retryCount: this.lockRetryCount });
|
|
737
|
+
}
|
|
544
738
|
}
|
|
545
739
|
else {
|
|
740
|
+
this.lockRetryCount = 0; // a non-lock failure isn't contention; reset backoff
|
|
546
741
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
547
742
|
(0, errors_1.logWarn)('Watch sync failed', { error: error.message });
|
|
548
743
|
this.onSyncError?.(error);
|
|
@@ -553,9 +748,19 @@ class FileWatcher {
|
|
|
553
748
|
finally {
|
|
554
749
|
this.syncing = false;
|
|
555
750
|
// If pending files remain (mid-sync events, or this sync failed),
|
|
556
|
-
// schedule another pass.
|
|
751
|
+
// schedule another pass. After lock contention, back off exponentially
|
|
752
|
+
// (debounceMs · 2^(n-1), capped) instead of retrying at the normal
|
|
753
|
+
// debounce cadence; a clean sync resets lockRetryCount so normal edits
|
|
754
|
+
// keep the fast debounce. A degrade() above already set `stopped`, so
|
|
755
|
+
// this won't reschedule a watcher that has given up.
|
|
557
756
|
if (this.pendingFiles.size > 0 && !this.stopped) {
|
|
558
|
-
this.
|
|
757
|
+
if (this.lockRetryCount > 0) {
|
|
758
|
+
const retryDelayMs = Math.min(this.debounceMs * 2 ** Math.max(0, this.lockRetryCount - 1), MAX_LOCK_RETRY_DELAY_MS);
|
|
759
|
+
this.scheduleRetrySync(retryDelayMs);
|
|
760
|
+
}
|
|
761
|
+
else {
|
|
762
|
+
this.scheduleSync();
|
|
763
|
+
}
|
|
559
764
|
}
|
|
560
765
|
}
|
|
561
766
|
}
|
package/dist/sync/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/worktree.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git Worktree Awareness
|
|
3
3
|
*
|
|
4
|
-
* A
|
|
4
|
+
* A HomeGraph index lives in a `.homegraph/` directory and is resolved by
|
|
5
5
|
* walking up parent directories to the nearest one (see
|
|
6
|
-
* `
|
|
6
|
+
* `findNearestHomeGraphRoot`). That walk is unaware of git worktrees: when a
|
|
7
7
|
* worktree is created *inside* the main checkout (e.g. some tools place them
|
|
8
8
|
* under `.gitignore`d paths like `.claude/worktrees/<name>/`), a command run
|
|
9
9
|
* from the worktree walks up and silently resolves the MAIN checkout's index.
|
|
@@ -33,7 +33,7 @@ export interface WorktreeIndexMismatch {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Detect when `startPath` lives in one git working tree but the resolved
|
|
36
|
-
*
|
|
36
|
+
* HomeGraph index (`indexRoot`) belongs to a *different* working tree.
|
|
37
37
|
*
|
|
38
38
|
* Returns null — meaning "nothing to warn about" — when:
|
|
39
39
|
* - `startPath` isn't in a git repo (or git is unavailable),
|