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
|
@@ -97,12 +97,10 @@ class CodexTarget {
|
|
|
97
97
|
}
|
|
98
98
|
const files = [];
|
|
99
99
|
files.push(writeMcpEntry());
|
|
100
|
-
// AGENTS.md
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
if (instrCleanup.action === 'removed')
|
|
105
|
-
files.push(instrCleanup);
|
|
100
|
+
// AGENTS.md gets the short marker-fenced HomeGraph block (#704):
|
|
101
|
+
// subagents and non-MCP harnesses read AGENTS.md but never the MCP
|
|
102
|
+
// initialize instructions. Upsert self-heals a stale pre-#529 block.
|
|
103
|
+
files.push((0, shared_1.upsertInstructionsEntry)(instructionsPath()));
|
|
106
104
|
return { files };
|
|
107
105
|
}
|
|
108
106
|
uninstall(loc) {
|
|
@@ -174,7 +172,7 @@ function writeMcpEntry() {
|
|
|
174
172
|
return { path: file, action: created ? 'created' : 'updated' };
|
|
175
173
|
}
|
|
176
174
|
/**
|
|
177
|
-
* Strip the marker-delimited
|
|
175
|
+
* Strip the marker-delimited HomeGraph block from `~/.codex/AGENTS.md`
|
|
178
176
|
* if a prior install wrote one. Used by both install (self-heal on
|
|
179
177
|
* upgrade) and uninstall — see issue #529.
|
|
180
178
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/installer/targets/codex.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAQzB,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/installer/targets/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Cursor launches MCP-server subprocesses with a working directory
|
|
15
15
|
* that ISN'T the workspace root AND doesn't pass `rootUri` /
|
|
16
|
-
* `workspaceFolders` in the MCP initialize call. The
|
|
16
|
+
* `workspaceFolders` in the MCP initialize call. The homegraph MCP
|
|
17
17
|
* server's `process.cwd()` fallback therefore misses the workspace's
|
|
18
18
|
* `.homegraph/` and reports "not initialized" on every tool call.
|
|
19
19
|
*
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Cursor launches MCP-server subprocesses with a working directory
|
|
16
16
|
* that ISN'T the workspace root AND doesn't pass `rootUri` /
|
|
17
|
-
* `workspaceFolders` in the MCP initialize call. The
|
|
17
|
+
* `workspaceFolders` in the MCP initialize call. The homegraph MCP
|
|
18
18
|
* server's `process.cwd()` fallback therefore misses the workspace's
|
|
19
19
|
* `.homegraph/` and reports "not initialized" on every tool call.
|
|
20
20
|
*
|
|
@@ -92,7 +92,7 @@ function rulesPath() {
|
|
|
92
92
|
*/
|
|
93
93
|
const MDC_FRONTMATTER = [
|
|
94
94
|
'---',
|
|
95
|
-
'description:
|
|
95
|
+
'description: HomeGraph MCP usage guide — when to use which tool',
|
|
96
96
|
'alwaysApply: true',
|
|
97
97
|
'---',
|
|
98
98
|
'',
|
|
@@ -121,7 +121,7 @@ class CursorTarget {
|
|
|
121
121
|
install(loc, _opts) {
|
|
122
122
|
const files = [];
|
|
123
123
|
files.push(writeMcpEntry(loc));
|
|
124
|
-
// We no longer write `.cursor/rules/homegraph.mdc` — the
|
|
124
|
+
// We no longer write `.cursor/rules/homegraph.mdc` — the homegraph
|
|
125
125
|
// usage guidance ships in the MCP server's `initialize` response,
|
|
126
126
|
// the single source of truth (issue #529). Strip a rules file a
|
|
127
127
|
// previous install created so an upgrade self-heals.
|
|
@@ -167,7 +167,7 @@ class CursorTarget {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
|
-
* Build the
|
|
170
|
+
* Build the homegraph MCP-server config for Cursor at the given
|
|
171
171
|
* location. Inherits the shared shape ({type, command, args}) and
|
|
172
172
|
* appends `--path` so the spawned MCP server resolves the workspace
|
|
173
173
|
* correctly regardless of Cursor's launch cwd. See file header for
|
|
@@ -197,12 +197,12 @@ function writeMcpEntry(loc) {
|
|
|
197
197
|
* Remove the Cursor rules file on uninstall (and as a self-heal on
|
|
198
198
|
* install — see issue #529).
|
|
199
199
|
*
|
|
200
|
-
* Unlike the shared CLAUDE.md / AGENTS.md files (where
|
|
200
|
+
* Unlike the shared CLAUDE.md / AGENTS.md files (where homegraph owns
|
|
201
201
|
* only a marker-delimited section), `.cursor/rules/homegraph.mdc` is a
|
|
202
202
|
* file we create OUTRIGHT — the frontmatter is ours too. So a plain
|
|
203
203
|
* `removeMarkedSection` is wrong here: it would strip our instruction
|
|
204
|
-
* block but leave the orphaned `description:
|
|
205
|
-
* behind, so the file lingers and still "mentions"
|
|
204
|
+
* block but leave the orphaned `description: HomeGraph ...` frontmatter
|
|
205
|
+
* behind, so the file lingers and still "mentions" homegraph.
|
|
206
206
|
*
|
|
207
207
|
* Instead: strip our block, and if nothing but our own frontmatter
|
|
208
208
|
* remains, delete the whole file. Only when the user has added their
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevEco Code target.
|
|
3
|
+
*
|
|
4
|
+
* DevEco Code is Huawei's HarmonyOS AI coding assistant, built on
|
|
5
|
+
* OpenCode. Config shape matches opencode's wrapper:
|
|
6
|
+
*
|
|
7
|
+
* {
|
|
8
|
+
* "$schema": "https://opencode.ai/config.json",
|
|
9
|
+
* "mcp": { "homegraph": { "type": "local", "command": [...], "enabled": true } }
|
|
10
|
+
* }
|
|
11
|
+
*
|
|
12
|
+
* Config file resolution (per DevEco Code docs):
|
|
13
|
+
* - local: `.deveco/deveco.jsonc` → `deveco.jsonc` (defaults to `.deveco/`)
|
|
14
|
+
* - global: `~/.config/deveco/deveco.jsonc` (XDG-style;
|
|
15
|
+
* `%APPDATA%/deveco/deveco.jsonc` on Windows)
|
|
16
|
+
*
|
|
17
|
+
* Like Cursor, DevEco Code may launch MCP servers with a cwd that
|
|
18
|
+
* isn't the workspace root, so we inject `--path` into the command
|
|
19
|
+
* array.
|
|
20
|
+
*/
|
|
21
|
+
import { AgentTarget } from './types';
|
|
22
|
+
export declare const devecoTarget: AgentTarget;
|
|
23
|
+
//# sourceMappingURL=deveco.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deveco.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/deveco.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AA2LjB,eAAO,MAAM,YAAY,EAAE,WAAgC,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DevEco Code target.
|
|
4
|
+
*
|
|
5
|
+
* DevEco Code is Huawei's HarmonyOS AI coding assistant, built on
|
|
6
|
+
* OpenCode. Config shape matches opencode's wrapper:
|
|
7
|
+
*
|
|
8
|
+
* {
|
|
9
|
+
* "$schema": "https://opencode.ai/config.json",
|
|
10
|
+
* "mcp": { "homegraph": { "type": "local", "command": [...], "enabled": true } }
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* Config file resolution (per DevEco Code docs):
|
|
14
|
+
* - local: `.deveco/deveco.jsonc` → `deveco.jsonc` (defaults to `.deveco/`)
|
|
15
|
+
* - global: `~/.config/deveco/deveco.jsonc` (XDG-style;
|
|
16
|
+
* `%APPDATA%/deveco/deveco.jsonc` on Windows)
|
|
17
|
+
*
|
|
18
|
+
* Like Cursor, DevEco Code may launch MCP servers with a cwd that
|
|
19
|
+
* isn't the workspace root, so we inject `--path` into the command
|
|
20
|
+
* array.
|
|
21
|
+
*/
|
|
22
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
+
}
|
|
28
|
+
Object.defineProperty(o, k2, desc);
|
|
29
|
+
}) : (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
o[k2] = m[k];
|
|
32
|
+
}));
|
|
33
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
+
}) : function(o, v) {
|
|
36
|
+
o["default"] = v;
|
|
37
|
+
});
|
|
38
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
39
|
+
var ownKeys = function(o) {
|
|
40
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
41
|
+
var ar = [];
|
|
42
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
43
|
+
return ar;
|
|
44
|
+
};
|
|
45
|
+
return ownKeys(o);
|
|
46
|
+
};
|
|
47
|
+
return function (mod) {
|
|
48
|
+
if (mod && mod.__esModule) return mod;
|
|
49
|
+
var result = {};
|
|
50
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
51
|
+
__setModuleDefault(result, mod);
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
})();
|
|
55
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
+
exports.devecoTarget = void 0;
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
const os = __importStar(require("os"));
|
|
60
|
+
const jsonc_parser_1 = require("jsonc-parser");
|
|
61
|
+
const shared_1 = require("./shared");
|
|
62
|
+
const instructions_template_1 = require("../instructions-template");
|
|
63
|
+
function globalConfigDir() {
|
|
64
|
+
if (process.platform === 'win32') {
|
|
65
|
+
const appData = process.env.APPDATA ?? path.join(os.homedir(), 'AppData', 'Roaming');
|
|
66
|
+
return path.join(appData, 'deveco');
|
|
67
|
+
}
|
|
68
|
+
const xdg = process.env.XDG_CONFIG_HOME && process.env.XDG_CONFIG_HOME.trim().length > 0
|
|
69
|
+
? process.env.XDG_CONFIG_HOME
|
|
70
|
+
: path.join(os.homedir(), '.config');
|
|
71
|
+
return path.join(xdg, 'deveco');
|
|
72
|
+
}
|
|
73
|
+
function configBaseDir(loc) {
|
|
74
|
+
return loc === 'global' ? globalConfigDir() : process.cwd();
|
|
75
|
+
}
|
|
76
|
+
function configPath(loc) {
|
|
77
|
+
if (loc === 'global') {
|
|
78
|
+
return path.join(globalConfigDir(), 'deveco.jsonc');
|
|
79
|
+
}
|
|
80
|
+
const dotDeveco = path.join(process.cwd(), '.deveco', 'deveco.jsonc');
|
|
81
|
+
const root = path.join(process.cwd(), 'deveco.jsonc');
|
|
82
|
+
if (fs.existsSync(dotDeveco))
|
|
83
|
+
return dotDeveco;
|
|
84
|
+
if (fs.existsSync(root))
|
|
85
|
+
return root;
|
|
86
|
+
return dotDeveco;
|
|
87
|
+
}
|
|
88
|
+
function instructionsPath(loc) {
|
|
89
|
+
return path.join(configBaseDir(loc), 'AGENTS.md');
|
|
90
|
+
}
|
|
91
|
+
function readConfigText(file) {
|
|
92
|
+
if (!fs.existsSync(file))
|
|
93
|
+
return '';
|
|
94
|
+
return fs.readFileSync(file, 'utf-8');
|
|
95
|
+
}
|
|
96
|
+
function parseConfig(text) {
|
|
97
|
+
if (!text.trim())
|
|
98
|
+
return {};
|
|
99
|
+
const errors = [];
|
|
100
|
+
const result = (0, jsonc_parser_1.parse)(text, errors, { allowTrailingComma: true });
|
|
101
|
+
if (result == null || typeof result !== 'object' || Array.isArray(result)) {
|
|
102
|
+
return {};
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
function getDevecoServerEntry(loc) {
|
|
107
|
+
const pathArg = loc === 'local' ? process.cwd() : '${workspaceFolder}';
|
|
108
|
+
return {
|
|
109
|
+
type: 'local',
|
|
110
|
+
command: ['homegraph', 'serve', '--mcp', '--path', pathArg],
|
|
111
|
+
enabled: true,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const FORMATTING = { tabSize: 2, insertSpaces: true, eol: '\n' };
|
|
115
|
+
class DevecoTarget {
|
|
116
|
+
id = 'deveco';
|
|
117
|
+
displayName = 'DevEco Code';
|
|
118
|
+
docsUrl = 'https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/deveco-code-overview';
|
|
119
|
+
supportsLocation(_loc) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
detect(loc) {
|
|
123
|
+
const file = configPath(loc);
|
|
124
|
+
const config = parseConfig(readConfigText(file));
|
|
125
|
+
const alreadyConfigured = !!config.mcp?.homegraph;
|
|
126
|
+
const installed = loc === 'global'
|
|
127
|
+
? fs.existsSync(globalConfigDir())
|
|
128
|
+
: fs.existsSync(path.join(process.cwd(), '.deveco'))
|
|
129
|
+
|| fs.existsSync(path.join(process.cwd(), 'deveco.jsonc'));
|
|
130
|
+
return { installed, alreadyConfigured, configPath: file };
|
|
131
|
+
}
|
|
132
|
+
install(loc, _opts) {
|
|
133
|
+
const files = [];
|
|
134
|
+
files.push(writeMcpEntry(loc));
|
|
135
|
+
const instrCleanup = removeInstructionsEntry(loc);
|
|
136
|
+
if (instrCleanup.action === 'removed')
|
|
137
|
+
files.push(instrCleanup);
|
|
138
|
+
return {
|
|
139
|
+
files,
|
|
140
|
+
notes: ['Restart DevEco Code for MCP changes to take effect.'],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
uninstall(loc) {
|
|
144
|
+
const files = [];
|
|
145
|
+
const file = configPath(loc);
|
|
146
|
+
if (!fs.existsSync(file)) {
|
|
147
|
+
files.push({ path: file, action: 'not-found' });
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const text = readConfigText(file);
|
|
151
|
+
const config = parseConfig(text);
|
|
152
|
+
if (!config.mcp?.homegraph) {
|
|
153
|
+
files.push({ path: file, action: 'not-found' });
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
let edits = (0, jsonc_parser_1.modify)(text, ['mcp', 'homegraph'], undefined, {
|
|
157
|
+
formattingOptions: FORMATTING,
|
|
158
|
+
});
|
|
159
|
+
let updated = (0, jsonc_parser_1.applyEdits)(text, edits);
|
|
160
|
+
const afterParsed = parseConfig(updated);
|
|
161
|
+
if (afterParsed.mcp && typeof afterParsed.mcp === 'object' &&
|
|
162
|
+
Object.keys(afterParsed.mcp).length === 0) {
|
|
163
|
+
edits = (0, jsonc_parser_1.modify)(updated, ['mcp'], undefined, { formattingOptions: FORMATTING });
|
|
164
|
+
updated = (0, jsonc_parser_1.applyEdits)(updated, edits);
|
|
165
|
+
}
|
|
166
|
+
(0, shared_1.atomicWriteFileSync)(file, updated);
|
|
167
|
+
files.push({ path: file, action: 'removed' });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
files.push(removeInstructionsEntry(loc));
|
|
171
|
+
return { files };
|
|
172
|
+
}
|
|
173
|
+
printConfig(loc) {
|
|
174
|
+
const target = configPath(loc);
|
|
175
|
+
const snippet = JSON.stringify({
|
|
176
|
+
$schema: 'https://opencode.ai/config.json',
|
|
177
|
+
mcp: { homegraph: getDevecoServerEntry(loc) },
|
|
178
|
+
}, null, 2);
|
|
179
|
+
return `# Add to ${target}\n\n${snippet}\n`;
|
|
180
|
+
}
|
|
181
|
+
describePaths(loc) {
|
|
182
|
+
return [configPath(loc), instructionsPath(loc)];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function writeMcpEntry(loc) {
|
|
186
|
+
const file = configPath(loc);
|
|
187
|
+
const existed = fs.existsSync(file);
|
|
188
|
+
let text = readConfigText(file);
|
|
189
|
+
if (!text.trim()) {
|
|
190
|
+
text = '{\n "$schema": "https://opencode.ai/config.json"\n}\n';
|
|
191
|
+
}
|
|
192
|
+
const config = parseConfig(text);
|
|
193
|
+
const before = config.mcp?.homegraph;
|
|
194
|
+
const after = getDevecoServerEntry(loc);
|
|
195
|
+
if ((0, shared_1.jsonDeepEqual)(before, after)) {
|
|
196
|
+
return { path: file, action: 'unchanged' };
|
|
197
|
+
}
|
|
198
|
+
if (!config.$schema) {
|
|
199
|
+
const schemaEdits = (0, jsonc_parser_1.modify)(text, ['$schema'], 'https://opencode.ai/config.json', {
|
|
200
|
+
formattingOptions: FORMATTING,
|
|
201
|
+
});
|
|
202
|
+
text = (0, jsonc_parser_1.applyEdits)(text, schemaEdits);
|
|
203
|
+
}
|
|
204
|
+
const edits = (0, jsonc_parser_1.modify)(text, ['mcp', 'homegraph'], after, {
|
|
205
|
+
formattingOptions: FORMATTING,
|
|
206
|
+
});
|
|
207
|
+
const updated = (0, jsonc_parser_1.applyEdits)(text, edits);
|
|
208
|
+
(0, shared_1.atomicWriteFileSync)(file, updated);
|
|
209
|
+
return { path: file, action: existed ? 'updated' : 'created' };
|
|
210
|
+
}
|
|
211
|
+
function removeInstructionsEntry(loc) {
|
|
212
|
+
const file = instructionsPath(loc);
|
|
213
|
+
const action = (0, shared_1.removeMarkedSection)(file, instructions_template_1.HOMEGRAPH_SECTION_START, instructions_template_1.HOMEGRAPH_SECTION_END);
|
|
214
|
+
return { path: file, action };
|
|
215
|
+
}
|
|
216
|
+
exports.devecoTarget = new DevecoTarget();
|
|
217
|
+
//# sourceMappingURL=deveco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deveco.js","sourceRoot":"","sources":["../../../src/installer/targets/deveco.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,12 +97,10 @@ class GeminiTarget {
|
|
|
97
97
|
install(loc, _opts) {
|
|
98
98
|
const files = [];
|
|
99
99
|
files.push(writeMcpEntry(loc));
|
|
100
|
-
// GEMINI.md
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
if (instrCleanup.action === 'removed')
|
|
105
|
-
files.push(instrCleanup);
|
|
100
|
+
// GEMINI.md gets the short marker-fenced HomeGraph block (#704):
|
|
101
|
+
// subagents and non-MCP harnesses read GEMINI.md but never the MCP
|
|
102
|
+
// initialize instructions. Upsert self-heals a stale pre-#529 block.
|
|
103
|
+
files.push((0, shared_1.upsertInstructionsEntry)(instructionsPath(loc)));
|
|
106
104
|
return { files };
|
|
107
105
|
}
|
|
108
106
|
uninstall(loc) {
|
|
@@ -154,7 +152,7 @@ function writeMcpEntry(loc) {
|
|
|
154
152
|
return { path: file, action };
|
|
155
153
|
}
|
|
156
154
|
/**
|
|
157
|
-
* Strip the marker-delimited
|
|
155
|
+
* Strip the marker-delimited HomeGraph block from GEMINI.md if a prior
|
|
158
156
|
* install wrote one. Used by both install (self-heal on upgrade) and
|
|
159
157
|
* uninstall — see issue #529.
|
|
160
158
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/installer/targets/gemini.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAQzB,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/installer/targets/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ class HermesTarget {
|
|
|
69
69
|
const installed = fs.existsSync(hermesHome()) || fs.existsSync(file);
|
|
70
70
|
return {
|
|
71
71
|
installed,
|
|
72
|
-
alreadyConfigured:
|
|
72
|
+
alreadyConfigured: hasHomeGraphMcpServer(content),
|
|
73
73
|
configPath: file,
|
|
74
74
|
};
|
|
75
75
|
}
|
|
@@ -93,7 +93,7 @@ class HermesTarget {
|
|
|
93
93
|
return { files: [{ path: file, action: 'not-found' }] };
|
|
94
94
|
}
|
|
95
95
|
const before = readText(file);
|
|
96
|
-
const after =
|
|
96
|
+
const after = removeHomeGraphToolset(removeHomeGraphMcpServer(before));
|
|
97
97
|
if (after === before) {
|
|
98
98
|
return { files: [{ path: file, action: 'not-found' }] };
|
|
99
99
|
}
|
|
@@ -107,7 +107,7 @@ class HermesTarget {
|
|
|
107
107
|
return [
|
|
108
108
|
`# Add to ${configPath()}`,
|
|
109
109
|
'',
|
|
110
|
-
|
|
110
|
+
renderHomeGraphMcpBlock().join('\n'),
|
|
111
111
|
'',
|
|
112
112
|
'platform_toolsets:',
|
|
113
113
|
' cli:',
|
|
@@ -140,8 +140,8 @@ function writeHermesConfig() {
|
|
|
140
140
|
const file = configPath();
|
|
141
141
|
const existed = fs.existsSync(file);
|
|
142
142
|
const before = readText(file);
|
|
143
|
-
const afterMcp =
|
|
144
|
-
const after =
|
|
143
|
+
const afterMcp = upsertHomeGraphMcpServer(before);
|
|
144
|
+
const after = upsertHomeGraphToolset(afterMcp);
|
|
145
145
|
if (after === before) {
|
|
146
146
|
return { path: file, action: 'unchanged' };
|
|
147
147
|
}
|
|
@@ -258,7 +258,7 @@ function listChildBlock(lines, parent, child) {
|
|
|
258
258
|
function escapeRegExp(value) {
|
|
259
259
|
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
260
260
|
}
|
|
261
|
-
function
|
|
261
|
+
function renderHomeGraphMcpChild() {
|
|
262
262
|
return [
|
|
263
263
|
' homegraph:',
|
|
264
264
|
' command: homegraph',
|
|
@@ -270,25 +270,25 @@ function renderCodeGraphMcpChild() {
|
|
|
270
270
|
' enabled: true',
|
|
271
271
|
];
|
|
272
272
|
}
|
|
273
|
-
function
|
|
274
|
-
return ['mcp_servers:', ...
|
|
273
|
+
function renderHomeGraphMcpBlock() {
|
|
274
|
+
return ['mcp_servers:', ...renderHomeGraphMcpChild()];
|
|
275
275
|
}
|
|
276
|
-
function
|
|
276
|
+
function hasHomeGraphMcpServer(content) {
|
|
277
277
|
const lines = splitLines(content);
|
|
278
278
|
const parent = topLevelRange(lines, 'mcp_servers');
|
|
279
279
|
return !!parent && !!childRange(lines, parent, 'homegraph');
|
|
280
280
|
}
|
|
281
|
-
function
|
|
281
|
+
function upsertHomeGraphMcpServer(content) {
|
|
282
282
|
const lines = splitLines(content);
|
|
283
283
|
const parent = topLevelRange(lines, 'mcp_servers');
|
|
284
284
|
const child = parent ? childRange(lines, parent, 'homegraph') : null;
|
|
285
|
-
const replacement =
|
|
285
|
+
const replacement = renderHomeGraphMcpChild();
|
|
286
286
|
if (!parent) {
|
|
287
287
|
if (lines.length > 0 && lines[lines.length - 1] === '')
|
|
288
288
|
lines.pop();
|
|
289
289
|
if (lines.length > 0)
|
|
290
290
|
lines.push('');
|
|
291
|
-
lines.push(...
|
|
291
|
+
lines.push(...renderHomeGraphMcpBlock());
|
|
292
292
|
return joinLines(lines);
|
|
293
293
|
}
|
|
294
294
|
if (child) {
|
|
@@ -301,7 +301,7 @@ function upsertCodeGraphMcpServer(content) {
|
|
|
301
301
|
lines.splice(parent.end, 0, ...replacement);
|
|
302
302
|
return joinLines(lines);
|
|
303
303
|
}
|
|
304
|
-
function
|
|
304
|
+
function removeHomeGraphMcpServer(content) {
|
|
305
305
|
const lines = splitLines(content);
|
|
306
306
|
const parent = topLevelRange(lines, 'mcp_servers');
|
|
307
307
|
const child = parent ? childRange(lines, parent, 'homegraph') : null;
|
|
@@ -310,7 +310,7 @@ function removeCodeGraphMcpServer(content) {
|
|
|
310
310
|
lines.splice(child.start, child.end - child.start);
|
|
311
311
|
return joinLines(lines);
|
|
312
312
|
}
|
|
313
|
-
function
|
|
313
|
+
function upsertHomeGraphToolset(content) {
|
|
314
314
|
const lines = splitLines(content);
|
|
315
315
|
const parent = topLevelRange(lines, 'platform_toolsets');
|
|
316
316
|
const cli = parent ? listChildBlock(lines, parent, 'cli') : null;
|
|
@@ -334,7 +334,7 @@ function upsertCodeGraphToolset(content) {
|
|
|
334
334
|
lines.splice(cli.end, 0, `${cli.itemIndent}- mcp-homegraph`);
|
|
335
335
|
return joinLines(lines);
|
|
336
336
|
}
|
|
337
|
-
function
|
|
337
|
+
function removeHomeGraphToolset(content) {
|
|
338
338
|
const lines = splitLines(content);
|
|
339
339
|
const parent = topLevelRange(lines, 'platform_toolsets');
|
|
340
340
|
const cli = parent ? listChildBlock(lines, parent, 'cli') : null;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Instructions to `~/.kiro/steering/homegraph.md` (global) or
|
|
8
8
|
* `./.kiro/steering/homegraph.md` (local). Kiro's "steering" system
|
|
9
9
|
* loads every `*.md` file in the steering dir as agent context, so
|
|
10
|
-
* a dedicated `
|
|
10
|
+
* a dedicated `homegraph.md` is the natural surface — we own the
|
|
11
11
|
* whole file outright (no marker-based merging needed) and delete
|
|
12
12
|
* it on uninstall.
|
|
13
13
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Instructions to `~/.kiro/steering/homegraph.md` (global) or
|
|
9
9
|
* `./.kiro/steering/homegraph.md` (local). Kiro's "steering" system
|
|
10
10
|
* loads every `*.md` file in the steering dir as agent context, so
|
|
11
|
-
* a dedicated `
|
|
11
|
+
* a dedicated `homegraph.md` is the natural surface — we own the
|
|
12
12
|
* whole file outright (no marker-based merging needed) and delete
|
|
13
13
|
* it on uninstall.
|
|
14
14
|
*
|
|
@@ -92,9 +92,9 @@ class KiroTarget {
|
|
|
92
92
|
install(loc, _opts) {
|
|
93
93
|
const files = [];
|
|
94
94
|
files.push(writeMcpEntry(loc));
|
|
95
|
-
// The steering doc is no longer written — the
|
|
95
|
+
// The steering doc is no longer written — the homegraph usage
|
|
96
96
|
// guidance ships in the MCP server's `initialize` response (issue
|
|
97
|
-
// #529). Delete a `
|
|
97
|
+
// #529). Delete a `homegraph.md` a previous install created so an
|
|
98
98
|
// upgrade self-heals.
|
|
99
99
|
const steeringCleanup = removeSteeringEntry(loc);
|
|
100
100
|
if (steeringCleanup.action === 'removed')
|
|
@@ -159,7 +159,7 @@ function writeMcpEntry(loc) {
|
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
161
161
|
* Delete the steering file we own. If a user has hand-edited the file
|
|
162
|
-
* out of recognition we still remove it —
|
|
162
|
+
* out of recognition we still remove it — homegraph.md is a name we
|
|
163
163
|
* claim, and a partial install leaving the file behind is worse than
|
|
164
164
|
* a clean delete. Used by both install (self-heal on upgrade — see
|
|
165
165
|
* issue #529) and uninstall.
|
|
@@ -2,10 +2,18 @@
|
|
|
2
2
|
* opencode target.
|
|
3
3
|
*
|
|
4
4
|
* - MCP server entry to `~/.config/opencode/opencode.jsonc` (global,
|
|
5
|
-
* XDG-style
|
|
5
|
+
* XDG-style on EVERY platform, Windows included — see below) or
|
|
6
6
|
* `./opencode.jsonc` (local). Falls back to `opencode.json` when a
|
|
7
7
|
* `.json` file already exists; defaults new installs to `.jsonc`
|
|
8
8
|
* because that's what opencode itself creates on first run.
|
|
9
|
+
*
|
|
10
|
+
* opencode resolves its config dir with the `xdg-basedir` package
|
|
11
|
+
* (sst/opencode `packages/core/src/global.ts`): `XDG_CONFIG_HOME`
|
|
12
|
+
* if set, else `~/.config` — unconditionally, on all platforms. It
|
|
13
|
+
* never reads `%APPDATA%`; that layout belonged to the discontinued
|
|
14
|
+
* Go fork. We previously wrote there on Windows, so opencode never
|
|
15
|
+
* saw the entry (#535) — install/uninstall now also sweep a stale
|
|
16
|
+
* homegraph entry out of the legacy `%APPDATA%/opencode` location.
|
|
9
17
|
* - Instructions to `~/.config/opencode/AGENTS.md` (global) or
|
|
10
18
|
* `./AGENTS.md` (local). opencode reads AGENTS.md for agent
|
|
11
19
|
* instructions — same convention Codex CLI uses.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/opencode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AAiPjB,eAAO,MAAM,cAAc,EAAE,WAAkC,CAAC"}
|