homegraph 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +268 -243
- package/dist/arkts/ohos-api-index.d.ts +15 -0
- package/dist/arkts/ohos-api-index.d.ts.map +1 -0
- package/dist/arkts/ohos-api-index.js +190 -0
- package/dist/arkts/ohos-api-index.js.map +1 -0
- package/dist/arkts/ohos-sdk-input.d.ts +36 -0
- package/dist/arkts/ohos-sdk-input.d.ts.map +1 -0
- package/dist/arkts/ohos-sdk-input.js +214 -0
- package/dist/arkts/ohos-sdk-input.js.map +1 -0
- package/dist/bin/command-supervision.d.ts +12 -0
- package/dist/bin/command-supervision.d.ts.map +1 -0
- package/dist/bin/command-supervision.js +86 -0
- package/dist/bin/command-supervision.js.map +1 -0
- package/dist/bin/homegraph.d.ts +1 -1
- package/dist/bin/homegraph.js +971 -71
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/db/index.d.ts +20 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +39 -0
- 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 +58 -19
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +14 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +314 -143
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +172 -152
- package/dist/directory.d.ts +32 -0
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +88 -5
- package/dist/directory.js.map +1 -1
- package/dist/extraction/arkts-batch-worker.d.ts +2 -0
- package/dist/extraction/arkts-batch-worker.d.ts.map +1 -0
- package/dist/extraction/arkts-batch-worker.js +28 -0
- package/dist/extraction/arkts-batch-worker.js.map +1 -0
- package/dist/extraction/context.d.ts +11 -0
- package/dist/extraction/context.d.ts.map +1 -1
- package/dist/extraction/context.js +20 -0
- package/dist/extraction/context.js.map +1 -1
- package/dist/extraction/index.d.ts +16 -2
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +619 -380
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts-state-decorators.d.ts +13 -0
- package/dist/extraction/languages/arkts-state-decorators.d.ts.map +1 -0
- package/dist/extraction/languages/arkts-state-decorators.js +26 -0
- package/dist/extraction/languages/arkts-state-decorators.js.map +1 -0
- package/dist/extraction/languages/arkts-viewtree.d.ts +4 -2
- package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -1
- package/dist/extraction/languages/arkts-viewtree.js +21 -6
- package/dist/extraction/languages/arkts-viewtree.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +98 -2
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +1290 -61
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +56 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +198 -1
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/ohos-api-consumer.d.ts +34 -0
- package/dist/extraction/languages/ohos-api-consumer.d.ts.map +1 -0
- package/dist/extraction/languages/ohos-api-consumer.js +283 -0
- package/dist/extraction/languages/ohos-api-consumer.js.map +1 -0
- package/dist/extraction/parse-pool.d.ts +126 -0
- package/dist/extraction/parse-pool.d.ts.map +1 -0
- package/dist/extraction/parse-pool.js +319 -0
- package/dist/extraction/parse-pool.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +17 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +21 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +198 -27
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +76 -17
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -4
- package/dist/index.js.map +1 -1
- package/dist/installer/instructions-template.js +9 -9
- package/dist/installer/targets/shared.d.ts +5 -6
- package/dist/installer/targets/shared.d.ts.map +1 -1
- package/dist/installer/targets/shared.js +5 -6
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/mcp/daemon-paths.d.ts +30 -3
- package/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/dist/mcp/daemon-paths.js +50 -10
- package/dist/mcp/daemon-paths.js.map +1 -1
- package/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/dist/mcp/daemon-registry.js +7 -3
- package/dist/mcp/daemon-registry.js.map +1 -1
- package/dist/mcp/daemon.d.ts +48 -0
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +196 -32
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/engine.d.ts +17 -0
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +73 -1
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +25 -43
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.js +16 -16
- package/dist/mcp/ppid-watchdog.d.ts +18 -0
- package/dist/mcp/ppid-watchdog.d.ts.map +1 -1
- package/dist/mcp/ppid-watchdog.js +37 -0
- package/dist/mcp/ppid-watchdog.js.map +1 -1
- package/dist/mcp/query-cache.d.ts +25 -0
- package/dist/mcp/query-cache.d.ts.map +1 -0
- package/dist/mcp/query-cache.js +191 -0
- package/dist/mcp/query-cache.js.map +1 -0
- package/dist/mcp/query-pool.d.ts +94 -0
- package/dist/mcp/query-pool.d.ts.map +1 -0
- package/dist/mcp/query-pool.js +297 -0
- package/dist/mcp/query-pool.js.map +1 -0
- package/dist/mcp/query-worker.d.ts +24 -0
- package/dist/mcp/query-worker.d.ts.map +1 -0
- package/dist/mcp/query-worker.js +87 -0
- package/dist/mcp/query-worker.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +5 -7
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +72 -74
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/tools.d.ts +94 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +877 -71
- package/dist/mcp/tools.js.map +1 -1
- package/dist/project-config.d.ts +20 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +42 -2
- package/dist/project-config.js.map +1 -1
- package/dist/reasoning/login.js +1 -1
- package/dist/reasoning/login.js.map +1 -1
- package/dist/reasoning/reasoner.js +32 -32
- package/dist/resolution/c-fnptr-synthesizer.d.ts +0 -28
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.js +765 -79
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +1 -1
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +72 -11
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/cooperative-yield.d.ts +32 -0
- package/dist/resolution/cooperative-yield.d.ts.map +1 -0
- package/dist/resolution/cooperative-yield.js +42 -0
- package/dist/resolution/cooperative-yield.js.map +1 -0
- package/dist/resolution/index.d.ts +11 -2
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +72 -4
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/name-matcher.d.ts +22 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +317 -20
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/spec/config.d.ts +39 -0
- package/dist/spec/config.d.ts.map +1 -0
- package/dist/spec/config.js +304 -0
- package/dist/spec/config.js.map +1 -0
- package/dist/spec/db/commit-node.d.ts +23 -0
- package/dist/spec/db/commit-node.d.ts.map +1 -0
- package/dist/spec/db/commit-node.js +62 -0
- package/dist/spec/db/commit-node.js.map +1 -0
- package/dist/spec/db/fragment-node.d.ts +24 -0
- package/dist/spec/db/fragment-node.d.ts.map +1 -0
- package/dist/spec/db/fragment-node.js +128 -0
- package/dist/spec/db/fragment-node.js.map +1 -0
- package/dist/spec/db/fts.d.ts +74 -0
- package/dist/spec/db/fts.d.ts.map +1 -0
- package/dist/spec/db/fts.js +324 -0
- package/dist/spec/db/fts.js.map +1 -0
- package/dist/spec/db/index.d.ts +13 -0
- package/dist/spec/db/index.d.ts.map +1 -0
- package/dist/spec/db/index.js +50 -0
- package/dist/spec/db/index.js.map +1 -0
- package/dist/spec/db/relations.d.ts +55 -0
- package/dist/spec/db/relations.d.ts.map +1 -0
- package/dist/spec/db/relations.js +158 -0
- package/dist/spec/db/relations.js.map +1 -0
- package/dist/spec/db/schema.d.ts +33 -0
- package/dist/spec/db/schema.d.ts.map +1 -0
- package/dist/spec/db/schema.js +119 -0
- package/dist/spec/db/schema.js.map +1 -0
- package/dist/spec/db/schema.sql +117 -0
- package/dist/spec/db/spec-node.d.ts +41 -0
- package/dist/spec/db/spec-node.d.ts.map +1 -0
- package/dist/spec/db/spec-node.js +114 -0
- package/dist/spec/db/spec-node.js.map +1 -0
- package/dist/spec/evolve/impact-locator.d.ts +13 -0
- package/dist/spec/evolve/impact-locator.d.ts.map +1 -0
- package/dist/spec/evolve/impact-locator.js +25 -0
- package/dist/spec/evolve/impact-locator.js.map +1 -0
- package/dist/spec/evolve/llm-client.d.ts +50 -0
- package/dist/spec/evolve/llm-client.d.ts.map +1 -0
- package/dist/spec/evolve/llm-client.js +176 -0
- package/dist/spec/evolve/llm-client.js.map +1 -0
- package/dist/spec/evolve/logic-checker.d.ts +12 -0
- package/dist/spec/evolve/logic-checker.d.ts.map +1 -0
- package/dist/spec/evolve/logic-checker.js +24 -0
- package/dist/spec/evolve/logic-checker.js.map +1 -0
- package/dist/spec/evolve/pipeline.d.ts +42 -0
- package/dist/spec/evolve/pipeline.d.ts.map +1 -0
- package/dist/spec/evolve/pipeline.js +567 -0
- package/dist/spec/evolve/pipeline.js.map +1 -0
- package/dist/spec/evolve/spec-rewriter.d.ts +42 -0
- package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -0
- package/dist/spec/evolve/spec-rewriter.js +230 -0
- package/dist/spec/evolve/spec-rewriter.js.map +1 -0
- package/dist/spec/graph/queries.d.ts +155 -0
- package/dist/spec/graph/queries.d.ts.map +1 -0
- package/dist/spec/graph/queries.js +440 -0
- package/dist/spec/graph/queries.js.map +1 -0
- package/dist/spec/llm/client.d.ts +29 -0
- package/dist/spec/llm/client.d.ts.map +1 -0
- package/dist/spec/llm/client.js +123 -0
- package/dist/spec/llm/client.js.map +1 -0
- package/dist/spec/llm/index.d.ts +3 -0
- package/dist/spec/llm/index.d.ts.map +1 -0
- package/dist/spec/llm/index.js +11 -0
- package/dist/spec/llm/index.js.map +1 -0
- package/dist/spec/llm/prompts.d.ts +13 -0
- package/dist/spec/llm/prompts.d.ts.map +1 -0
- package/dist/spec/llm/prompts.js +75 -0
- package/dist/spec/llm/prompts.js.map +1 -0
- package/dist/spec/mining/diff-parser.d.ts +33 -0
- package/dist/spec/mining/diff-parser.d.ts.map +1 -0
- package/dist/spec/mining/diff-parser.js +166 -0
- package/dist/spec/mining/diff-parser.js.map +1 -0
- package/dist/spec/mining/git-scanner.d.ts +103 -0
- package/dist/spec/mining/git-scanner.d.ts.map +1 -0
- package/dist/spec/mining/git-scanner.js +307 -0
- package/dist/spec/mining/git-scanner.js.map +1 -0
- package/dist/spec/mining/pipeline.d.ts +53 -0
- package/dist/spec/mining/pipeline.d.ts.map +1 -0
- package/dist/spec/mining/pipeline.js +178 -0
- package/dist/spec/mining/pipeline.js.map +1 -0
- package/dist/spec/mining/scope-resolver.d.ts +45 -0
- package/dist/spec/mining/scope-resolver.d.ts.map +1 -0
- package/dist/spec/mining/scope-resolver.js +103 -0
- package/dist/spec/mining/scope-resolver.js.map +1 -0
- package/dist/spec/mining/spec-extractor.d.ts +69 -0
- package/dist/spec/mining/spec-extractor.d.ts.map +1 -0
- package/dist/spec/mining/spec-extractor.js +369 -0
- package/dist/spec/mining/spec-extractor.js.map +1 -0
- package/dist/spec/types.d.ts +149 -0
- package/dist/spec/types.d.ts.map +1 -0
- package/dist/spec/types.js +15 -0
- package/dist/spec/types.js.map +1 -0
- package/dist/spec/utils.d.ts +167 -0
- package/dist/spec/utils.d.ts.map +1 -0
- package/dist/spec/utils.js +463 -0
- package/dist/spec/utils.js.map +1 -0
- package/dist/sync/worktree.d.ts +9 -0
- package/dist/sync/worktree.d.ts.map +1 -1
- package/dist/sync/worktree.js +40 -0
- package/dist/sync/worktree.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/shimmer-progress.d.ts +2 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -1
- package/dist/ui/shimmer-progress.js +19 -2
- package/dist/ui/shimmer-progress.js.map +1 -1
- package/dist/upgrade/index.js +1 -1
- package/dist/upgrade/index.js.map +1 -1
- package/package.json +58 -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 -91
- package/scripts/agent-eval/ab-hook.sh +86 -86
- package/scripts/agent-eval/ab-impl.sh +78 -78
- package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -102
- package/scripts/agent-eval/ab-sufficiency.sh +78 -78
- package/scripts/agent-eval/arms-F.sh +21 -21
- package/scripts/agent-eval/arms-matrix.sh +37 -37
- package/scripts/agent-eval/audit.sh +68 -68
- package/scripts/agent-eval/bench-readme.sh +28 -28
- package/scripts/agent-eval/bench-why-repo.sh +22 -22
- package/scripts/agent-eval/block-read-hook.sh +19 -19
- package/scripts/agent-eval/hook-settings.json +15 -15
- package/scripts/agent-eval/itrun.sh +120 -120
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -72
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -133
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -108
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -25
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -47
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -18
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -84
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -103
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -20
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -94
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -50
- package/scripts/agent-eval/offload-eval-setup.sh +24 -24
- package/scripts/agent-eval/offload-eval-styles.sh +71 -71
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -68
- package/scripts/agent-eval/offload-eval.md +76 -76
- package/scripts/agent-eval/parse-arms.mjs +116 -116
- package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
- package/scripts/agent-eval/parse-run.mjs +45 -45
- package/scripts/agent-eval/parse-session.mjs +93 -93
- package/scripts/agent-eval/probe-context.mjs +21 -21
- package/scripts/agent-eval/probe-explore.mjs +40 -40
- package/scripts/agent-eval/probe-node.mjs +20 -20
- package/scripts/agent-eval/probe-sweep.mjs +119 -119
- package/scripts/agent-eval/probe-trace.mjs +20 -20
- package/scripts/agent-eval/redirect-read-hook.sh +38 -38
- package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
- package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
- package/scripts/agent-eval/run-agent.sh +34 -34
- package/scripts/agent-eval/run-all.sh +69 -69
- 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/exp_boundary_eval/README.md +247 -0
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/_test_mcp_chain.py +78 -0
- package/scripts/exp_boundary_eval/_test_stdin.py +8 -0
- package/scripts/exp_boundary_eval/_utils.py +1116 -0
- package/scripts/exp_boundary_eval/analyze.py +1313 -0
- package/scripts/exp_boundary_eval/data/agents.json +109 -0
- package/scripts/exp_boundary_eval/data/experiments.json +140 -0
- package/scripts/exp_boundary_eval/deveco_arm.py +519 -0
- package/scripts/exp_boundary_eval/run_all.py +378 -0
- package/scripts/exp_boundary_eval/run_one.py +165 -0
- package/scripts/exp_boundary_eval/run_session.py +158 -0
- package/scripts/exp_boundary_eval/setup.py +120 -0
- package/scripts/exp_boundary_eval/win_mcp_launcher.py +73 -0
- package/scripts/exp_boundary_eval/win_mcp_stdio_wrap.js +36 -0
- package/scripts/exp_boundary_eval/win_node_launcher.py +24 -0
- 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 +268 -246
- package/scripts/ohos-sdk-publish.mjs +133 -0
- package/scripts/pack-npm.sh +119 -119
- package/scripts/prepare-release.mjs +270 -270
- package/scripts/qa_eval/README.md +407 -404
- package/scripts/qa_eval/_test_deveco_probe.py +41 -41
- package/scripts/qa_eval/agent_runner.py +526 -526
- package/scripts/qa_eval/data/.gitignore +4 -4
- package/scripts/qa_eval/data/test-set.jsonl +2 -22
- package/scripts/qa_eval/eval_metrics.py +274 -233
- package/scripts/qa_eval/external_agent.py +976 -671
- package/scripts/qa_eval/llm_config.py +92 -92
- package/scripts/qa_eval/memory_monitor.py +132 -132
- package/scripts/qa_eval/my_answer_accuracy.py +187 -187
- package/scripts/qa_eval/requirements.txt +2 -2
- package/scripts/qa_eval/run_pipeline.py +804 -711
- package/scripts/qa_eval/stats_efficiency.py +279 -279
- package/scripts/qa_eval/stats_scores.py +207 -207
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Build a standalone OHOS API symbol database from an SDK `ets` tree.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.indexOhosApiDb = indexOhosApiDb;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const db_1 = require("../db");
|
|
43
|
+
const queries_1 = require("../db/queries");
|
|
44
|
+
const context_1 = require("../extraction/context");
|
|
45
|
+
const arkts_1 = require("../extraction/languages/arkts");
|
|
46
|
+
const extraction_version_1 = require("../extraction/extraction-version");
|
|
47
|
+
const version_1 = require("../mcp/version");
|
|
48
|
+
const ohos_sdk_input_1 = require("./ohos-sdk-input");
|
|
49
|
+
function scanFirstArkTsTriggerFile(etsRoot) {
|
|
50
|
+
let found = null;
|
|
51
|
+
function walk(dir) {
|
|
52
|
+
if (found)
|
|
53
|
+
return;
|
|
54
|
+
let entries;
|
|
55
|
+
try {
|
|
56
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
const full = path.join(dir, entry.name);
|
|
63
|
+
if (entry.isDirectory()) {
|
|
64
|
+
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
65
|
+
continue;
|
|
66
|
+
walk(full);
|
|
67
|
+
}
|
|
68
|
+
else if (entry.isFile()) {
|
|
69
|
+
const lower = entry.name.toLowerCase();
|
|
70
|
+
if (lower.endsWith('.ets') ||
|
|
71
|
+
lower.endsWith('.d.ts') ||
|
|
72
|
+
lower.endsWith('.d.ets') ||
|
|
73
|
+
(lower.endsWith('.ts') && !lower.endsWith('.d.ts'))) {
|
|
74
|
+
found = path.relative(etsRoot, full).replace(/\\/g, '/');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
walk(etsRoot);
|
|
81
|
+
return found;
|
|
82
|
+
}
|
|
83
|
+
function countArkTsSources(etsRoot) {
|
|
84
|
+
let count = 0;
|
|
85
|
+
function walk(dir) {
|
|
86
|
+
let entries;
|
|
87
|
+
try {
|
|
88
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
const full = path.join(dir, entry.name);
|
|
95
|
+
if (entry.isDirectory()) {
|
|
96
|
+
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
97
|
+
continue;
|
|
98
|
+
walk(full);
|
|
99
|
+
}
|
|
100
|
+
else if (entry.isFile()) {
|
|
101
|
+
const lower = entry.name.toLowerCase();
|
|
102
|
+
if (lower.endsWith('.ets') ||
|
|
103
|
+
lower.endsWith('.d.ts') ||
|
|
104
|
+
lower.endsWith('.d.ets') ||
|
|
105
|
+
(lower.endsWith('.ts') && !lower.endsWith('.d.ts'))) {
|
|
106
|
+
count++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
walk(etsRoot);
|
|
112
|
+
return count;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Index OpenHarmony (and optional HMS) SDK API declarations into a SQLite db.
|
|
116
|
+
*/
|
|
117
|
+
async function indexOhosApiDb(options) {
|
|
118
|
+
const sdkHome = path.resolve(options.sdkHome);
|
|
119
|
+
if (!(0, ohos_sdk_input_1.hasOpenHarmonyEts)(sdkHome)) {
|
|
120
|
+
throw new Error(`SDK home is missing openharmony/ets: ${sdkHome}`);
|
|
121
|
+
}
|
|
122
|
+
const etsRoots = (0, ohos_sdk_input_1.listOhosApiEtsRoots)(sdkHome);
|
|
123
|
+
if (etsRoots.length === 0) {
|
|
124
|
+
throw new Error(`No API ets roots found under ${sdkHome}`);
|
|
125
|
+
}
|
|
126
|
+
const outputPath = path.resolve(options.outputPath ?? path.join(process.cwd(), (0, ohos_sdk_input_1.ohosApiDbFilename)(options.version)));
|
|
127
|
+
if (fs.existsSync(outputPath)) {
|
|
128
|
+
fs.unlinkSync(outputPath);
|
|
129
|
+
}
|
|
130
|
+
const startTime = Date.now();
|
|
131
|
+
const errors = [];
|
|
132
|
+
let filesIndexed = 0;
|
|
133
|
+
const db = db_1.DatabaseConnection.initialize(outputPath);
|
|
134
|
+
const queries = new queries_1.QueryBuilder(db.getDb());
|
|
135
|
+
try {
|
|
136
|
+
for (const etsRoot of etsRoots) {
|
|
137
|
+
const trigger = scanFirstArkTsTriggerFile(etsRoot);
|
|
138
|
+
if (!trigger) {
|
|
139
|
+
errors.push({
|
|
140
|
+
message: `No ArkTS sources under ${etsRoot}`,
|
|
141
|
+
severity: 'warning',
|
|
142
|
+
});
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const total = countArkTsSources(etsRoot);
|
|
146
|
+
options.onProgress?.({
|
|
147
|
+
phase: 'arkts-batch',
|
|
148
|
+
current: 0,
|
|
149
|
+
total,
|
|
150
|
+
currentFile: etsRoot,
|
|
151
|
+
subphase: 'scene',
|
|
152
|
+
});
|
|
153
|
+
(0, arkts_1.resetArkTSBatch)();
|
|
154
|
+
(0, context_1.resetExtractionContext)();
|
|
155
|
+
(0, context_1.bindExtractionContext)(etsRoot, queries);
|
|
156
|
+
await (0, arkts_1.primeArkTSBatch)(etsRoot, queries, trigger);
|
|
157
|
+
filesIndexed += total;
|
|
158
|
+
options.onProgress?.({
|
|
159
|
+
phase: 'arkts-batch',
|
|
160
|
+
current: total,
|
|
161
|
+
total,
|
|
162
|
+
currentFile: etsRoot,
|
|
163
|
+
subphase: 'persist',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
const counts = queries.getNodeAndEdgeCount();
|
|
167
|
+
queries.setMetadata('ohos_api_version', options.version);
|
|
168
|
+
queries.setMetadata('ohos_api_sdk_home', sdkHome);
|
|
169
|
+
queries.setMetadata('ohos_api_db_kind', 'homegraph-ohos-api-db');
|
|
170
|
+
queries.setMetadata('indexed_with_version', version_1.HomeGraphPackageVersion);
|
|
171
|
+
queries.setMetadata('indexed_with_extraction_version', String(extraction_version_1.EXTRACTION_VERSION));
|
|
172
|
+
db.runMaintenance();
|
|
173
|
+
return {
|
|
174
|
+
success: errors.every((e) => e.severity !== 'error'),
|
|
175
|
+
filesIndexed,
|
|
176
|
+
filesSkipped: 0,
|
|
177
|
+
filesErrored: errors.filter((e) => e.severity === 'error').length,
|
|
178
|
+
nodesCreated: counts.nodes,
|
|
179
|
+
edgesCreated: counts.edges,
|
|
180
|
+
errors,
|
|
181
|
+
durationMs: Date.now() - startTime,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
(0, arkts_1.resetArkTSBatch)();
|
|
186
|
+
(0, context_1.resetExtractionContext)();
|
|
187
|
+
db.close();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=ohos-api-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohos-api-index.js","sourceRoot":"","sources":["../../src/arkts/ohos-api-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve HarmonyOS command-line-tools archives/directories and API db versions.
|
|
3
|
+
*/
|
|
4
|
+
export declare class OhosSdkInputError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
/** Parse `6.1.1.290` or `commandline-tools-linux-x64-6.1.1.290.zip` → `6.1.1`. */
|
|
8
|
+
export declare function parseOhosToolsVersionFromName(name: string): string | null;
|
|
9
|
+
export declare function isArchivePath(inputPath: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Locate `sdk/default` that contains `openharmony/ets` under an extracted tree.
|
|
12
|
+
*/
|
|
13
|
+
export declare function findOhosSdkHome(searchRoot: string): string | null;
|
|
14
|
+
export declare function hasOpenHarmonyEts(sdkHome: string): boolean;
|
|
15
|
+
export declare function listOhosApiEtsRoots(sdkHome: string): string[];
|
|
16
|
+
export interface ResolvedOhosSdkInput {
|
|
17
|
+
sdkHome: string;
|
|
18
|
+
version: string;
|
|
19
|
+
sourcePath: string;
|
|
20
|
+
/** Present when the input archive was extracted to a temp directory. */
|
|
21
|
+
cleanup?: () => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ResolveOhosSdkInputOptions {
|
|
24
|
+
inputPath: string;
|
|
25
|
+
/** When set, overrides any version parsed from the path name. */
|
|
26
|
+
versionOverride?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve a command-line-tools archive or directory to an SDK home + API db version.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveOhosSdkInput(options: ResolveOhosSdkInputOptions): ResolvedOhosSdkInput;
|
|
32
|
+
/** Default filename for a versioned OHOS API db. */
|
|
33
|
+
export declare function ohosApiDbFilename(version: string): string;
|
|
34
|
+
/** Target path under ~/.homegraph/api/ for a versioned db. */
|
|
35
|
+
export declare function ohosApiDbInstallPath(version: string): string;
|
|
36
|
+
//# sourceMappingURL=ohos-sdk-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohos-sdk-input.d.ts","sourceRoot":"","sources":["../../src/arkts/ohos-sdk-input.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,kFAAkF;AAClF,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKzE;AAWD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuCjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW7D;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,oBAAoB,CAgD7F;AA8BD,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve HarmonyOS command-line-tools archives/directories and API db versions.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.OhosSdkInputError = void 0;
|
|
40
|
+
exports.parseOhosToolsVersionFromName = parseOhosToolsVersionFromName;
|
|
41
|
+
exports.isArchivePath = isArchivePath;
|
|
42
|
+
exports.findOhosSdkHome = findOhosSdkHome;
|
|
43
|
+
exports.hasOpenHarmonyEts = hasOpenHarmonyEts;
|
|
44
|
+
exports.listOhosApiEtsRoots = listOhosApiEtsRoots;
|
|
45
|
+
exports.resolveOhosSdkInput = resolveOhosSdkInput;
|
|
46
|
+
exports.ohosApiDbFilename = ohosApiDbFilename;
|
|
47
|
+
exports.ohosApiDbInstallPath = ohosApiDbInstallPath;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
const ARCHIVE_EXTENSIONS = ['.tar.gz', '.tgz', '.zip', '.tar'];
|
|
53
|
+
class OhosSdkInputError extends Error {
|
|
54
|
+
constructor(message) {
|
|
55
|
+
super(message);
|
|
56
|
+
this.name = 'OhosSdkInputError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.OhosSdkInputError = OhosSdkInputError;
|
|
60
|
+
/** Parse `6.1.1.290` or `commandline-tools-linux-x64-6.1.1.290.zip` → `6.1.1`. */
|
|
61
|
+
function parseOhosToolsVersionFromName(name) {
|
|
62
|
+
const base = path.basename(name);
|
|
63
|
+
const withoutExt = stripArchiveExtension(base);
|
|
64
|
+
const match = withoutExt.match(/(\d+\.\d+\.\d+)(?:\.\d+)?$/);
|
|
65
|
+
return match?.[1] ?? null;
|
|
66
|
+
}
|
|
67
|
+
function stripArchiveExtension(filename) {
|
|
68
|
+
for (const ext of ARCHIVE_EXTENSIONS) {
|
|
69
|
+
if (filename.toLowerCase().endsWith(ext)) {
|
|
70
|
+
return filename.slice(0, -ext.length);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return filename;
|
|
74
|
+
}
|
|
75
|
+
function isArchivePath(inputPath) {
|
|
76
|
+
const lower = inputPath.toLowerCase();
|
|
77
|
+
return ARCHIVE_EXTENSIONS.some((ext) => lower.endsWith(ext));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Locate `sdk/default` that contains `openharmony/ets` under an extracted tree.
|
|
81
|
+
*/
|
|
82
|
+
function findOhosSdkHome(searchRoot) {
|
|
83
|
+
const resolved = path.resolve(searchRoot);
|
|
84
|
+
const direct = [
|
|
85
|
+
path.join(resolved, 'sdk', 'default'),
|
|
86
|
+
path.join(resolved, 'command-line-tools', 'sdk', 'default'),
|
|
87
|
+
];
|
|
88
|
+
for (const candidate of direct) {
|
|
89
|
+
if (hasOpenHarmonyEts(candidate)) {
|
|
90
|
+
return candidate;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const queue = [{ dir: resolved, depth: 0 }];
|
|
94
|
+
const seen = new Set();
|
|
95
|
+
while (queue.length > 0) {
|
|
96
|
+
const { dir, depth } = queue.shift();
|
|
97
|
+
if (seen.has(dir) || depth > 5)
|
|
98
|
+
continue;
|
|
99
|
+
seen.add(dir);
|
|
100
|
+
const sdkDefault = path.join(dir, 'sdk', 'default');
|
|
101
|
+
if (hasOpenHarmonyEts(sdkDefault)) {
|
|
102
|
+
return sdkDefault;
|
|
103
|
+
}
|
|
104
|
+
if (depth >= 5)
|
|
105
|
+
continue;
|
|
106
|
+
let entries;
|
|
107
|
+
try {
|
|
108
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
if (!entry.isDirectory())
|
|
115
|
+
continue;
|
|
116
|
+
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
117
|
+
continue;
|
|
118
|
+
queue.push({ dir: path.join(dir, entry.name), depth: depth + 1 });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function hasOpenHarmonyEts(sdkHome) {
|
|
124
|
+
return fs.existsSync(path.join(sdkHome, 'openharmony', 'ets'));
|
|
125
|
+
}
|
|
126
|
+
function listOhosApiEtsRoots(sdkHome) {
|
|
127
|
+
const roots = [];
|
|
128
|
+
const openharmony = path.join(sdkHome, 'openharmony', 'ets');
|
|
129
|
+
if (fs.existsSync(openharmony)) {
|
|
130
|
+
roots.push(openharmony);
|
|
131
|
+
}
|
|
132
|
+
const hms = path.join(sdkHome, 'hms', 'ets');
|
|
133
|
+
if (fs.existsSync(hms)) {
|
|
134
|
+
roots.push(hms);
|
|
135
|
+
}
|
|
136
|
+
return roots;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Resolve a command-line-tools archive or directory to an SDK home + API db version.
|
|
140
|
+
*/
|
|
141
|
+
function resolveOhosSdkInput(options) {
|
|
142
|
+
const inputPath = path.resolve(options.inputPath);
|
|
143
|
+
if (!fs.existsSync(inputPath)) {
|
|
144
|
+
throw new OhosSdkInputError(`Path does not exist: ${inputPath}`);
|
|
145
|
+
}
|
|
146
|
+
let searchRoot = inputPath;
|
|
147
|
+
let cleanup;
|
|
148
|
+
if (fs.statSync(inputPath).isFile()) {
|
|
149
|
+
if (!isArchivePath(inputPath)) {
|
|
150
|
+
throw new OhosSdkInputError(`Unsupported file type: ${path.basename(inputPath)} (expected .zip, .tar.gz, .tgz, or .tar)`);
|
|
151
|
+
}
|
|
152
|
+
const extracted = extractArchive(inputPath);
|
|
153
|
+
searchRoot = extracted.dir;
|
|
154
|
+
cleanup = extracted.cleanup;
|
|
155
|
+
}
|
|
156
|
+
const sdkHome = findOhosSdkHome(searchRoot);
|
|
157
|
+
if (!sdkHome) {
|
|
158
|
+
cleanup?.();
|
|
159
|
+
throw new OhosSdkInputError(`Could not find sdk/default/openharmony/ets under ${inputPath}. ` +
|
|
160
|
+
'Expected HarmonyOS command-line-tools layout.');
|
|
161
|
+
}
|
|
162
|
+
const version = options.versionOverride?.trim() ||
|
|
163
|
+
parseOhosToolsVersionFromName(inputPath) ||
|
|
164
|
+
parseOhosToolsVersionFromName(searchRoot);
|
|
165
|
+
if (!version) {
|
|
166
|
+
cleanup?.();
|
|
167
|
+
throw new OhosSdkInputError('Could not determine API db version. Use a path like commandline-tools-linux-x64-6.1.1.290.zip ' +
|
|
168
|
+
'or pass the version as the second argument.');
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
sdkHome,
|
|
172
|
+
version,
|
|
173
|
+
sourcePath: inputPath,
|
|
174
|
+
cleanup,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function extractArchive(archivePath) {
|
|
178
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'homegraph-ohos-sdk-'));
|
|
179
|
+
const lower = archivePath.toLowerCase();
|
|
180
|
+
try {
|
|
181
|
+
if (lower.endsWith('.zip')) {
|
|
182
|
+
(0, child_process_1.execFileSync)('unzip', ['-q', archivePath, '-d', tempDir], { stdio: 'pipe' });
|
|
183
|
+
}
|
|
184
|
+
else if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) {
|
|
185
|
+
(0, child_process_1.execFileSync)('tar', ['-xzf', archivePath, '-C', tempDir], { stdio: 'pipe' });
|
|
186
|
+
}
|
|
187
|
+
else if (lower.endsWith('.tar')) {
|
|
188
|
+
(0, child_process_1.execFileSync)('tar', ['-xf', archivePath, '-C', tempDir], { stdio: 'pipe' });
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw new OhosSdkInputError(`Unsupported archive: ${path.basename(archivePath)}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
196
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
197
|
+
throw new OhosSdkInputError(`Failed to extract ${archivePath}: ${msg}`);
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
dir: tempDir,
|
|
201
|
+
cleanup: () => {
|
|
202
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/** Default filename for a versioned OHOS API db. */
|
|
207
|
+
function ohosApiDbFilename(version) {
|
|
208
|
+
return `ohos-api-${version}.db`;
|
|
209
|
+
}
|
|
210
|
+
/** Target path under ~/.homegraph/api/ for a versioned db. */
|
|
211
|
+
function ohosApiDbInstallPath(version) {
|
|
212
|
+
return path.join(os.homedir(), '.homegraph', 'api', ohosApiDbFilename(version));
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=ohos-sdk-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohos-sdk-input.js","sourceRoot":"","sources":["../../src/arkts/ohos-sdk-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CommandSupervision {
|
|
2
|
+
/** Tear down both watchdogs. Idempotent; call when the command finishes. */
|
|
3
|
+
stop(): void;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Install the liveness + PPID watchdogs for the duration of a CLI command.
|
|
7
|
+
* `label` is used in the shutdown notice (e.g. `"index"`). Returns a handle
|
|
8
|
+
* whose `stop()` must be called when the command completes so neither watchdog
|
|
9
|
+
* outlives it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function installCommandSupervision(label: string): CommandSupervision;
|
|
12
|
+
//# sourceMappingURL=command-supervision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-supervision.d.ts","sourceRoot":"","sources":["../../src/bin/command-supervision.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAwC3E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installCommandSupervision = installCommandSupervision;
|
|
4
|
+
/**
|
|
5
|
+
* Process supervision for long-running CLI commands (`index` / `init --index`).
|
|
6
|
+
*
|
|
7
|
+
* Indexing a large repo can run for a while on the main thread, and #999
|
|
8
|
+
* surfaced two ways that goes wrong when nothing is watching it:
|
|
9
|
+
*
|
|
10
|
+
* 1. **Orphaned worker.** `index` runs in a child re-exec'd with
|
|
11
|
+
* `--liftoff-only` (the WASM-flag relaunch). Its parent blocks in
|
|
12
|
+
* `spawnSync`, so when the parent shim is killed it cannot forward the
|
|
13
|
+
* signal — the child keeps running, now orphaned, pinning a core. The PPID
|
|
14
|
+
* watchdog (#277) notices the parent/host went away and exits the child.
|
|
15
|
+
* 2. **Wedged indexer.** The `#850` main-thread liveness watchdog — which
|
|
16
|
+
* SIGKILLs a process whose event loop stops turning — was wired only into
|
|
17
|
+
* the MCP `serve` path, so a wedged `index`/`init` was never auto-killed.
|
|
18
|
+
*
|
|
19
|
+
* Both reuse the exact mechanisms `serve` already uses; this just makes them
|
|
20
|
+
* available to a one-shot command. Best-effort and self-disabling: a missing
|
|
21
|
+
* watchdog never blocks the command from running. Both honour the same env
|
|
22
|
+
* switches as `serve` (`CODEGRAPH_NO_WATCHDOG`, `CODEGRAPH_PPID_POLL_MS=0`).
|
|
23
|
+
*
|
|
24
|
+
* Unlike the daemon — whose main thread only does fast, bounded work — the
|
|
25
|
+
* `index`/`init` path runs reference resolution and dynamic-edge synthesis
|
|
26
|
+
* SYNCHRONOUSLY on this thread, and on a large repo that is legitimately many
|
|
27
|
+
* seconds of work. So those spans yield cooperatively to the event loop
|
|
28
|
+
* (`src/resolution/cooperative-yield.ts`) to keep the heartbeat alive; without
|
|
29
|
+
* that the watchdog would SIGKILL a valid, in-progress index (#1091). The
|
|
30
|
+
* distinction it must preserve — kill a TRUE wedge, spare slow-but-progressing
|
|
31
|
+
* work — is exactly what cooperative yielding buys: a genuinely stuck span never
|
|
32
|
+
* reaches its next yield, so it still trips the timeout.
|
|
33
|
+
*/
|
|
34
|
+
const liveness_watchdog_1 = require("../mcp/liveness-watchdog");
|
|
35
|
+
const ppid_watchdog_1 = require("../mcp/ppid-watchdog");
|
|
36
|
+
const daemon_registry_1 = require("../mcp/daemon-registry");
|
|
37
|
+
const wasm_runtime_flags_1 = require("../extraction/wasm-runtime-flags");
|
|
38
|
+
/**
|
|
39
|
+
* Install the liveness + PPID watchdogs for the duration of a CLI command.
|
|
40
|
+
* `label` is used in the shutdown notice (e.g. `"index"`). Returns a handle
|
|
41
|
+
* whose `stop()` must be called when the command completes so neither watchdog
|
|
42
|
+
* outlives it.
|
|
43
|
+
*/
|
|
44
|
+
function installCommandSupervision(label) {
|
|
45
|
+
// Liveness watchdog: a separate process that SIGKILLs us if our event loop
|
|
46
|
+
// stops turning for too long (a wedged synchronous loop). Self-disables on
|
|
47
|
+
// CODEGRAPH_NO_WATCHDOG.
|
|
48
|
+
const liveness = (0, liveness_watchdog_1.installMainThreadWatchdog)();
|
|
49
|
+
// PPID watchdog: detect that the parent (or the host threaded past the
|
|
50
|
+
// relaunch shim) died and we've been orphaned, then exit instead of leaking.
|
|
51
|
+
const originalPpid = process.ppid;
|
|
52
|
+
const hostPpid = (0, ppid_watchdog_1.parseHostPpid)(process.env[wasm_runtime_flags_1.HOST_PPID_ENV]);
|
|
53
|
+
const pollMs = (0, ppid_watchdog_1.parsePpidPollMs)(process.env.CODEGRAPH_PPID_POLL_MS);
|
|
54
|
+
let ppidTimer = null;
|
|
55
|
+
if (pollMs > 0) {
|
|
56
|
+
ppidTimer = setInterval(() => {
|
|
57
|
+
const reason = (0, ppid_watchdog_1.supervisionLostReason)({
|
|
58
|
+
originalPpid,
|
|
59
|
+
currentPpid: process.ppid,
|
|
60
|
+
hostPpid,
|
|
61
|
+
isAlive: daemon_registry_1.isProcessAlive,
|
|
62
|
+
});
|
|
63
|
+
if (reason) {
|
|
64
|
+
try {
|
|
65
|
+
process.stderr.write(`[CodeGraph ${label}] Parent process exited (${reason}); aborting.\n`);
|
|
66
|
+
}
|
|
67
|
+
catch { /* stderr gone with the parent — exit anyway */ }
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}, pollMs);
|
|
71
|
+
// Never let the watchdog itself keep the process alive past its real work.
|
|
72
|
+
ppidTimer.unref();
|
|
73
|
+
}
|
|
74
|
+
let stopped = false;
|
|
75
|
+
return {
|
|
76
|
+
stop() {
|
|
77
|
+
if (stopped)
|
|
78
|
+
return;
|
|
79
|
+
stopped = true;
|
|
80
|
+
if (ppidTimer)
|
|
81
|
+
clearInterval(ppidTimer);
|
|
82
|
+
liveness?.stop();
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=command-supervision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-supervision.js","sourceRoot":"","sources":["../../src/bin/command-supervision.ts"],"names":[],"mappings":";;AA8CA,8DAwCC;AAtFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,gEAAqE;AACrE,wDAA6F;AAC7F,4DAAwD;AACxD,yEAAiE;AAOjE;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,KAAa;IACrD,2EAA2E;IAC3E,2EAA2E;IAC3E,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAA,6CAAyB,GAAE,CAAC;IAE7C,uEAAuE;IACvE,6EAA6E;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAA,6BAAa,EAAC,OAAO,CAAC,GAAG,CAAC,kCAAa,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAA,+BAAe,EAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACnE,IAAI,SAAS,GAA0C,IAAI,CAAC;IAC5D,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAA,qCAAqB,EAAC;gBACnC,YAAY;gBACZ,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,QAAQ;gBACR,OAAO,EAAE,gCAAc;aACxB,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,4BAA4B,MAAM,gBAAgB,CAAC,CAAC;gBAC9F,CAAC;gBAAC,MAAM,CAAC,CAAC,+CAA+C,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,2EAA2E;QAC3E,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,IAAI;YACF,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,SAAS;gBAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YACxC,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/bin/homegraph.d.ts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* homegraph callers <symbol> Find what calls a function/method
|
|
20
20
|
* homegraph callees <symbol> Find what a function/method calls
|
|
21
21
|
* homegraph impact <symbol> Analyze what code is affected by changing a symbol
|
|
22
|
-
* homegraph
|
|
22
|
+
* homegraph index-api <tools> Build OHOS API db from command-line-tools
|
|
23
23
|
* homegraph upgrade [version] Update HomeGraph to the latest release
|
|
24
24
|
*/
|
|
25
25
|
export {};
|