homegraph 1.2.0 → 1.4.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/dist/bin/homegraph.js +3 -0
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +85 -0
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +64 -5
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +178 -14
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +19 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +117 -2
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +299 -6
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +32 -1
- package/dist/db/wal-valve.d.ts +106 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +208 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +9 -5
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +210 -19
- package/dist/directory.js.map +1 -1
- package/dist/extraction/cfml-extractor.d.ts +107 -0
- package/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/dist/extraction/cfml-extractor.js +494 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/grammars.d.ts +25 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +177 -24
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +43 -4
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +308 -5
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +369 -4
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/cfquery.d.ts +12 -0
- package/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/dist/extraction/languages/cfquery.js +28 -0
- package/dist/extraction/languages/cfquery.js.map +1 -0
- package/dist/extraction/languages/cfscript.d.ts +3 -0
- package/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/dist/extraction/languages/cfscript.js +73 -0
- package/dist/extraction/languages/cfscript.js.map +1 -0
- package/dist/extraction/languages/cobol.d.ts +33 -0
- package/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/dist/extraction/languages/cobol.js +499 -0
- package/dist/extraction/languages/cobol.js.map +1 -0
- package/dist/extraction/languages/erlang.d.ts +3 -0
- package/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/dist/extraction/languages/erlang.js +350 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +16 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/nix.d.ts +3 -0
- package/dist/extraction/languages/nix.d.ts.map +1 -0
- package/dist/extraction/languages/nix.js +294 -0
- package/dist/extraction/languages/nix.js.map +1 -0
- package/dist/extraction/languages/solidity.d.ts +3 -0
- package/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/dist/extraction/languages/solidity.js +293 -0
- package/dist/extraction/languages/solidity.js.map +1 -0
- package/dist/extraction/languages/terraform.d.ts +3 -0
- package/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/dist/extraction/languages/terraform.js +641 -0
- package/dist/extraction/languages/terraform.js.map +1 -0
- package/dist/extraction/languages/vbnet.d.ts +11 -0
- package/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/dist/extraction/languages/vbnet.js +141 -0
- package/dist/extraction/languages/vbnet.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/dist/extraction/mybatis-extractor.js +140 -38
- package/dist/extraction/mybatis-extractor.js.map +1 -1
- package/dist/extraction/parse-pool.d.ts +27 -1
- package/dist/extraction/parse-pool.d.ts.map +1 -1
- package/dist/extraction/parse-pool.js +75 -7
- package/dist/extraction/parse-pool.js.map +1 -1
- package/dist/extraction/parse-worker.js +9 -2
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/dist/extraction/tree-sitter-helpers.js +1 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +38 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +754 -10
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +1 -1
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +60 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +348 -5
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +42 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +97 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/daemon.d.ts +25 -3
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +62 -8
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/dist/mcp/dynamic-boundaries.js +2 -1
- package/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/dist/mcp/early-ppid.d.ts +26 -0
- package/dist/mcp/early-ppid.d.ts.map +1 -0
- package/dist/mcp/early-ppid.js +29 -0
- package/dist/mcp/early-ppid.js.map +1 -0
- package/dist/mcp/engine.d.ts +4 -5
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +27 -1
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +41 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.d.ts +18 -1
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/dist/mcp/liveness-watchdog.js +73 -13
- package/dist/mcp/liveness-watchdog.js.map +1 -1
- package/dist/mcp/memory-budget.d.ts +30 -0
- package/dist/mcp/memory-budget.d.ts.map +1 -0
- package/dist/mcp/memory-budget.js +123 -0
- package/dist/mcp/memory-budget.js.map +1 -0
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +88 -4
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/query-cache.d.ts +35 -4
- package/dist/mcp/query-cache.d.ts.map +1 -1
- package/dist/mcp/query-cache.js +89 -19
- package/dist/mcp/query-cache.js.map +1 -1
- package/dist/mcp/query-pool.d.ts +46 -12
- package/dist/mcp/query-pool.d.ts.map +1 -1
- package/dist/mcp/query-pool.js +100 -23
- package/dist/mcp/query-pool.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +4 -27
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +39 -84
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +14 -0
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +28 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/startup-handshake.d.ts +44 -0
- package/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/dist/mcp/startup-handshake.js +73 -0
- package/dist/mcp/startup-handshake.js.map +1 -0
- package/dist/mcp/tools.d.ts +104 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2390 -191
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +18 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/project-config.d.ts +38 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +101 -2
- package/dist/project-config.js.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.js +178 -146
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +9 -1
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +1164 -176
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/frameworks/cics.d.ts +20 -0
- package/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/dist/resolution/frameworks/cics.js +90 -0
- package/dist/resolution/frameworks/cics.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +3 -0
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/dist/resolution/frameworks/java.js +14 -6
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/dist/resolution/frameworks/terraform.js +277 -0
- package/dist/resolution/frameworks/terraform.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/dist/resolution/goframe-synthesizer.js +8 -3
- package/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/dist/resolution/import-resolver.d.ts +7 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +129 -4
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +60 -7
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +430 -80
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/name-matcher.d.ts +0 -3
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +354 -33
- 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 +49 -0
- package/dist/resolution/strip-comments.js.map +1 -1
- package/dist/resolution/types.d.ts +29 -0
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.d.ts +10 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.js +142 -4
- package/dist/resolution/workspace-packages.js.map +1 -1
- package/dist/search/identifier-segments.d.ts +60 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +176 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-utils.d.ts +201 -0
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +919 -2
- package/dist/search/query-utils.js.map +1 -1
- package/dist/sync/git-hooks.d.ts.map +1 -1
- package/dist/sync/git-hooks.js +2 -0
- package/dist/sync/git-hooks.js.map +1 -1
- package/dist/sync/watcher.d.ts +10 -5
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +51 -14
- package/dist/sync/watcher.js.map +1 -1
- package/dist/sync/worktree.d.ts.map +1 -1
- package/dist/sync/worktree.js +5 -0
- package/dist/sync/worktree.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/dist/upgrade/index.d.ts +32 -0
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +162 -14
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/remove-binary.d.ts +87 -0
- package/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/dist/upgrade/remove-binary.js +289 -0
- package/dist/upgrade/remove-binary.js.map +1 -0
- package/dist/upgrade/update-check.d.ts +92 -0
- package/dist/upgrade/update-check.d.ts.map +1 -0
- package/dist/upgrade/update-check.js +258 -0
- package/dist/upgrade/update-check.js.map +1 -0
- package/package.json +2 -2
- package/scripts/agent-eval/run-all.sh +6 -0
- package/scripts/build-bundle.sh +5 -0
- package/scripts/npm-shim.js +8 -1
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/data/agents.json +0 -109
- package/scripts/exp_boundary_eval/data/experiments.json +0 -140
- package/scripts/qa_eval/README.md +0 -407
- package/scripts/qa_eval/_test_deveco_probe.py +0 -41
- package/scripts/qa_eval/agent_runner.py +0 -526
- package/scripts/qa_eval/data/.gitignore +0 -4
- package/scripts/qa_eval/data/test-set.jsonl +0 -2
- package/scripts/qa_eval/eval_metrics.py +0 -274
- package/scripts/qa_eval/external_agent.py +0 -976
- package/scripts/qa_eval/llm_config.py +0 -92
- package/scripts/qa_eval/memory_monitor.py +0 -132
- package/scripts/qa_eval/my_answer_accuracy.py +0 -187
- package/scripts/qa_eval/requirements.txt +0 -2
- package/scripts/qa_eval/run_pipeline.py +0 -804
- package/scripts/qa_eval/stats_efficiency.py +0 -279
- package/scripts/qa_eval/stats_scores.py +0 -207
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-packages.js","sourceRoot":"","sources":["../../src/resolution/workspace-packages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"workspace-packages.js","sourceRoot":"","sources":["../../src/resolution/workspace-packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifier-segment utilities for the prompt hook's graph-derived gate
|
|
3
|
+
* (name_segment_vocab): symbol names split into the words a human would use
|
|
4
|
+
* for them in prose, and prompt prose normalized into candidate words to look
|
|
5
|
+
* those segments up with.
|
|
6
|
+
*
|
|
7
|
+
* "OrderStateMachine" → order / state / machine — so the French prompt
|
|
8
|
+
* "comment marche la state machine des commandes ?" (or any language's prose
|
|
9
|
+
* naming the concept in Latin script) can be verified against the graph
|
|
10
|
+
* without a keyword list ever knowing the words. The FTS index can't serve
|
|
11
|
+
* this — its tokenizer keeps camelCase names as single tokens — which is why
|
|
12
|
+
* segments are materialized at index time instead (see schema.sql,
|
|
13
|
+
* name_segment_vocab).
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Split a symbol or file name into lowercase word segments.
|
|
17
|
+
*
|
|
18
|
+
* Handles camelCase / PascalCase (inner lower→Upper), acronym runs
|
|
19
|
+
* ("HTMLParser" → html/parser), snake_case / kebab-case / dotted file names
|
|
20
|
+
* (non-alphanumerics separate), and keeps digits glued to their word
|
|
21
|
+
* ("base64Encode" → base64/encode). Digit-only fragments are dropped.
|
|
22
|
+
*/
|
|
23
|
+
export declare function splitIdentifierSegments(name: string): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Normalize a prose word for segment lookup: lowercase + strip diacritics
|
|
26
|
+
* (NFD, drop combining marks), so "références" matches the segment
|
|
27
|
+
* "references" and "résolution" matches "resolution". Identifier segments are
|
|
28
|
+
* overwhelmingly ASCII, so this is what buys Latin-script languages their
|
|
29
|
+
* cross-lingual reach on loanwords.
|
|
30
|
+
*/
|
|
31
|
+
export declare function normalizeProseWord(word: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Candidate words from a prompt for segment-vocabulary lookup, in order of
|
|
34
|
+
* appearance: Unicode letter/digit runs, normalized via
|
|
35
|
+
* {@link normalizeProseWord}, length-bounded, digit-only dropped,
|
|
36
|
+
* {@link ENGLISH_PROSE_STOPWORDS} dropped, deduped, capped. Everything that
|
|
37
|
+
* survives is judged per-repo by the rarity and co-occurrence rules in
|
|
38
|
+
* HomeGraph.getSegmentMatches — there is no domain-word list.
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractProseCandidates(prompt: string): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Lookup variants for a prose word: the word itself plus light plural folding
|
|
43
|
+
* ("services" → service, "dependencies" → dependencie/dependency is NOT
|
|
44
|
+
* attempted — only a trailing s/es strip), so common plurals still hit their
|
|
45
|
+
* singular segment. Returned variants map back to the same original word.
|
|
46
|
+
*
|
|
47
|
+
* The strips are keyed on English plural spelling (#1145), in three classes:
|
|
48
|
+
* - UNAMBIGUOUS `-es` (after x/sh/ss/zz: boxes, hashes, classes, quizzes) —
|
|
49
|
+
* strip 2 only. Stripping 1 minted a bogus sibling ("classes" → classe).
|
|
50
|
+
* - AMBIGUOUS endings (`-ches`/`-ses`/`-zes`/`-oes`): spelling alone can't
|
|
51
|
+
* split patches(+es) from caches(+s), lenses from databases, heroes from
|
|
52
|
+
* shoes — emit BOTH candidate keys and let the vocab lookup decide; a miss
|
|
53
|
+
* is an ignored key, a wrong exclusive guess would LOSE the real match.
|
|
54
|
+
* - Everything else ending in `-s` — a bare `-s` plural (services, machines,
|
|
55
|
+
* cookies): strip 1 only. Stripping 2 minted "services" → servic.
|
|
56
|
+
* A trailing `-ss` is a singular (class, process), not a plural: no strip —
|
|
57
|
+
* that used to mint "class" → clas.
|
|
58
|
+
*/
|
|
59
|
+
export declare function segmentLookupVariants(word: string): string[];
|
|
60
|
+
//# sourceMappingURL=identifier-segments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-segments.d.ts","sourceRoot":"","sources":["../../src/search/identifier-segments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB9D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAgDD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAa/D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAa5D"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Identifier-segment utilities for the prompt hook's graph-derived gate
|
|
4
|
+
* (name_segment_vocab): symbol names split into the words a human would use
|
|
5
|
+
* for them in prose, and prompt prose normalized into candidate words to look
|
|
6
|
+
* those segments up with.
|
|
7
|
+
*
|
|
8
|
+
* "OrderStateMachine" → order / state / machine — so the French prompt
|
|
9
|
+
* "comment marche la state machine des commandes ?" (or any language's prose
|
|
10
|
+
* naming the concept in Latin script) can be verified against the graph
|
|
11
|
+
* without a keyword list ever knowing the words. The FTS index can't serve
|
|
12
|
+
* this — its tokenizer keeps camelCase names as single tokens — which is why
|
|
13
|
+
* segments are materialized at index time instead (see schema.sql,
|
|
14
|
+
* name_segment_vocab).
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.splitIdentifierSegments = splitIdentifierSegments;
|
|
18
|
+
exports.normalizeProseWord = normalizeProseWord;
|
|
19
|
+
exports.extractProseCandidates = extractProseCandidates;
|
|
20
|
+
exports.segmentLookupVariants = segmentLookupVariants;
|
|
21
|
+
/** Bounds keep degenerate identifiers (minified names, hashes) from bloating
|
|
22
|
+
* the vocab: segments outside them carry no prose signal anyway. */
|
|
23
|
+
const MIN_SEGMENT_CHARS = 2;
|
|
24
|
+
const MAX_SEGMENT_CHARS = 32;
|
|
25
|
+
const MAX_SEGMENTS_PER_NAME = 12;
|
|
26
|
+
/**
|
|
27
|
+
* Split a symbol or file name into lowercase word segments.
|
|
28
|
+
*
|
|
29
|
+
* Handles camelCase / PascalCase (inner lower→Upper), acronym runs
|
|
30
|
+
* ("HTMLParser" → html/parser), snake_case / kebab-case / dotted file names
|
|
31
|
+
* (non-alphanumerics separate), and keeps digits glued to their word
|
|
32
|
+
* ("base64Encode" → base64/encode). Digit-only fragments are dropped.
|
|
33
|
+
*/
|
|
34
|
+
function splitIdentifierSegments(name) {
|
|
35
|
+
if (!name)
|
|
36
|
+
return [];
|
|
37
|
+
const out = new Set();
|
|
38
|
+
for (const run of name.match(/[\p{L}\p{N}]+/gu) ?? []) {
|
|
39
|
+
// Split before an Upper that follows lower/digit (camelCase hump), and
|
|
40
|
+
// before the last Upper of an acronym run when a lowercase follows
|
|
41
|
+
// ("HTMLParser" → HTML | Parser).
|
|
42
|
+
const parts = run.split(/(?<=[\p{Ll}\p{N}])(?=\p{Lu})|(?<=\p{Lu})(?=\p{Lu}\p{Ll})/u);
|
|
43
|
+
for (const part of parts) {
|
|
44
|
+
if (out.size >= MAX_SEGMENTS_PER_NAME)
|
|
45
|
+
return [...out];
|
|
46
|
+
const seg = part.toLowerCase();
|
|
47
|
+
if (seg.length < MIN_SEGMENT_CHARS || seg.length > MAX_SEGMENT_CHARS)
|
|
48
|
+
continue;
|
|
49
|
+
if (/^\p{N}+$/u.test(seg))
|
|
50
|
+
continue;
|
|
51
|
+
out.add(seg);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [...out];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Normalize a prose word for segment lookup: lowercase + strip diacritics
|
|
58
|
+
* (NFD, drop combining marks), so "références" matches the segment
|
|
59
|
+
* "references" and "résolution" matches "resolution". Identifier segments are
|
|
60
|
+
* overwhelmingly ASCII, so this is what buys Latin-script languages their
|
|
61
|
+
* cross-lingual reach on loanwords.
|
|
62
|
+
*/
|
|
63
|
+
function normalizeProseWord(word) {
|
|
64
|
+
return word.normalize('NFD').replace(/\p{M}+/gu, '').toLowerCase();
|
|
65
|
+
}
|
|
66
|
+
/** Candidate cap: a prompt's first words carry its subject; scanning an essay
|
|
67
|
+
* buys nothing and the vocab lookup cost scales with this. */
|
|
68
|
+
const MAX_PROSE_CANDIDATES = 16;
|
|
69
|
+
const MIN_PROSE_CHARS = 4; // "the"/"des"/"une"/"fix" out; "auth"/"flow"/"path" in
|
|
70
|
+
const MAX_PROSE_CHARS = 24; // an unsegmented-script sentence is one giant run — skip it
|
|
71
|
+
/**
|
|
72
|
+
* English prompt words that are never evidence a symbol was NAMED, however
|
|
73
|
+
* rare their segment happens to be in a given repo: function words, filler,
|
|
74
|
+
* hyper-common dev verbs, and words ABOUT code rather than OF it ("rename
|
|
75
|
+
* this file", "there's an issue"). Measured FPs that motivated this: "fix
|
|
76
|
+
* THIS typo" matched `resolveDeferredThisMemberRefs` (repo-rare segment!),
|
|
77
|
+
* "WRITE a haiku" matched `writeConfig`.
|
|
78
|
+
*
|
|
79
|
+
* English-only ON PURPOSE — this is not the #1126 keyword treadmill:
|
|
80
|
+
* identifiers are written in English, so only English prose words can
|
|
81
|
+
* accidentally collide with segments. Other languages' function words
|
|
82
|
+
* ("avec", "pendant", "dieser") don't match anything and need no list.
|
|
83
|
+
* Domain nouns ("state", "checkout", "order") stay OUT — they are exactly
|
|
84
|
+
* the signal; the rarity/co-occurrence rules judge them per-repo.
|
|
85
|
+
*/
|
|
86
|
+
const ENGLISH_PROSE_STOPWORDS = new Set([
|
|
87
|
+
'about', 'above', 'actually', 'after', 'again', 'against', 'almost', 'along', 'also', 'always',
|
|
88
|
+
'another', 'anything', 'around', 'away', 'back', 'because', 'been', 'before', 'behind', 'being',
|
|
89
|
+
'below', 'best', 'better', 'between', 'both', 'cannot', 'come', 'could', 'does', 'doing', 'done',
|
|
90
|
+
'down', 'each', 'either', 'else', 'even', 'ever', 'every', 'everything', 'fine', 'first', 'from',
|
|
91
|
+
'getting', 'give', 'goes', 'going', 'gone', 'good', 'great', 'have', 'having', 'help', 'here',
|
|
92
|
+
'inside', 'instead', 'into', 'just', 'keep', 'know', 'last', 'least', 'less', 'like', 'likely',
|
|
93
|
+
'little', 'look', 'looking', 'made', 'make', 'making', 'many', 'maybe', 'mind', 'more', 'most',
|
|
94
|
+
'much', 'must', 'need', 'needs', 'never', 'next', 'nice', 'none', 'nothing', 'okay', 'only',
|
|
95
|
+
'onto', 'other', 'otherwise', 'over', 'please', 'pretty', 'probably', 'quite', 'rather', 'really',
|
|
96
|
+
'right', 'same', 'seem', 'seems', 'should', 'show', 'since', 'some', 'someone', 'something',
|
|
97
|
+
'somewhere', 'soon', 'still', 'such', 'sure', 'take', 'than', 'thank', 'thanks', 'that', 'their',
|
|
98
|
+
'them', 'then', 'there', 'these', 'they', 'thing', 'things', 'think', 'this', 'those', 'though',
|
|
99
|
+
'tried', 'tries', 'trying', 'under', 'until', 'upon', 'very', 'want', 'wants', 'well', 'went',
|
|
100
|
+
'were', 'what', 'when', 'which', 'while', 'will', 'wish', 'with', 'within', 'without', 'would',
|
|
101
|
+
'wrong', 'your', 'yours',
|
|
102
|
+
// words ABOUT code, not OF it — present in a huge share of prompts while
|
|
103
|
+
// almost never naming the symbol the user means
|
|
104
|
+
'again', 'change', 'changes', 'check', 'class', 'classes', 'code', 'detail', 'details',
|
|
105
|
+
'directory', 'error', 'errors', 'example', 'examples', 'file', 'files', 'folder', 'function',
|
|
106
|
+
'functions', 'issue', 'issues', 'line', 'lines', 'method', 'methods', 'name', 'names', 'problem',
|
|
107
|
+
'problems', 'project', 'question', 'questions', 'rename', 'test', 'tests', 'type', 'types',
|
|
108
|
+
'update', 'value', 'values', 'warning', 'warnings', 'work', 'working', 'write', 'writing',
|
|
109
|
+
]);
|
|
110
|
+
/**
|
|
111
|
+
* Candidate words from a prompt for segment-vocabulary lookup, in order of
|
|
112
|
+
* appearance: Unicode letter/digit runs, normalized via
|
|
113
|
+
* {@link normalizeProseWord}, length-bounded, digit-only dropped,
|
|
114
|
+
* {@link ENGLISH_PROSE_STOPWORDS} dropped, deduped, capped. Everything that
|
|
115
|
+
* survives is judged per-repo by the rarity and co-occurrence rules in
|
|
116
|
+
* HomeGraph.getSegmentMatches — there is no domain-word list.
|
|
117
|
+
*/
|
|
118
|
+
function extractProseCandidates(prompt) {
|
|
119
|
+
if (!prompt)
|
|
120
|
+
return [];
|
|
121
|
+
const seen = new Set();
|
|
122
|
+
for (const run of prompt.match(/[\p{L}\p{N}]+/gu) ?? []) {
|
|
123
|
+
if (seen.size >= MAX_PROSE_CANDIDATES)
|
|
124
|
+
break;
|
|
125
|
+
if (run.length > MAX_PROSE_CHARS)
|
|
126
|
+
continue;
|
|
127
|
+
const w = normalizeProseWord(run);
|
|
128
|
+
if (w.length < MIN_PROSE_CHARS || w.length > MAX_PROSE_CHARS)
|
|
129
|
+
continue;
|
|
130
|
+
if (/^\p{N}+$/u.test(w))
|
|
131
|
+
continue;
|
|
132
|
+
if (ENGLISH_PROSE_STOPWORDS.has(w))
|
|
133
|
+
continue;
|
|
134
|
+
seen.add(w);
|
|
135
|
+
}
|
|
136
|
+
return [...seen];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Lookup variants for a prose word: the word itself plus light plural folding
|
|
140
|
+
* ("services" → service, "dependencies" → dependencie/dependency is NOT
|
|
141
|
+
* attempted — only a trailing s/es strip), so common plurals still hit their
|
|
142
|
+
* singular segment. Returned variants map back to the same original word.
|
|
143
|
+
*
|
|
144
|
+
* The strips are keyed on English plural spelling (#1145), in three classes:
|
|
145
|
+
* - UNAMBIGUOUS `-es` (after x/sh/ss/zz: boxes, hashes, classes, quizzes) —
|
|
146
|
+
* strip 2 only. Stripping 1 minted a bogus sibling ("classes" → classe).
|
|
147
|
+
* - AMBIGUOUS endings (`-ches`/`-ses`/`-zes`/`-oes`): spelling alone can't
|
|
148
|
+
* split patches(+es) from caches(+s), lenses from databases, heroes from
|
|
149
|
+
* shoes — emit BOTH candidate keys and let the vocab lookup decide; a miss
|
|
150
|
+
* is an ignored key, a wrong exclusive guess would LOSE the real match.
|
|
151
|
+
* - Everything else ending in `-s` — a bare `-s` plural (services, machines,
|
|
152
|
+
* cookies): strip 1 only. Stripping 2 minted "services" → servic.
|
|
153
|
+
* A trailing `-ss` is a singular (class, process), not a plural: no strip —
|
|
154
|
+
* that used to mint "class" → clas.
|
|
155
|
+
*/
|
|
156
|
+
function segmentLookupVariants(word) {
|
|
157
|
+
const variants = [word];
|
|
158
|
+
const canStrip2 = word.length >= MIN_PROSE_CHARS + 2;
|
|
159
|
+
const canStrip1 = word.length >= MIN_PROSE_CHARS + 1;
|
|
160
|
+
if (/(?:x|sh|ss|zz)es$/.test(word)) {
|
|
161
|
+
if (canStrip2)
|
|
162
|
+
variants.push(word.slice(0, -2));
|
|
163
|
+
}
|
|
164
|
+
else if (/(?:ch|s|z|o)es$/.test(word)) {
|
|
165
|
+
if (canStrip2)
|
|
166
|
+
variants.push(word.slice(0, -2));
|
|
167
|
+
if (canStrip1)
|
|
168
|
+
variants.push(word.slice(0, -1));
|
|
169
|
+
}
|
|
170
|
+
else if (word.endsWith('s') && !word.endsWith('ss')) {
|
|
171
|
+
if (canStrip1)
|
|
172
|
+
variants.push(word.slice(0, -1));
|
|
173
|
+
}
|
|
174
|
+
return variants;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=identifier-segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-segments.js","sourceRoot":"","sources":["../../src/search/identifier-segments.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,84 @@
|
|
|
6
6
|
import { Node } from '../types';
|
|
7
7
|
/** Normalize a name to a comparable token: lowercase, alphanumerics only. */
|
|
8
8
|
export declare function normalizeNameToken(raw: string): string;
|
|
9
|
+
/** Source/config extensions recognized in natural-language queries. */
|
|
10
|
+
export declare const QUERY_SOURCE_FILE_EXT = "ets|ts|tsx|js|jsx|mjs|cjs|json5?|ya?ml|toml|hpp|h|cpp|c|cmake";
|
|
11
|
+
/** Member-access anchor extracted from a query (e.g. locationManager.on, .drawModifier). */
|
|
12
|
+
export interface QueryMemberAccess {
|
|
13
|
+
receiver?: string;
|
|
14
|
+
member: string;
|
|
15
|
+
/** Dotted form as written in the query. */
|
|
16
|
+
dotted: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* File basenames from queries — supports `Foo.ets` and path-style `common\\constants.ets`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractFileBasenamesFromQuery(query: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Path-shaped anchors from a query — `feature/foo`, `staticcommon/launchercommon`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractPathSegmentsFromQuery(query: string): string[];
|
|
26
|
+
/** Query names code/API context (kit paths, extensions, member access) — not NL keywords. */
|
|
27
|
+
export declare function queryMentionsCodeContext(query: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* HarmonyOS @kit module names — from `@kit.ArkTS` literals or PascalCase `*Kit` tokens
|
|
30
|
+
* (e.g. ServiceCollaborationKit in "调用 ServiceCollaborationKit 需要…").
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractKitModuleNamesFromQuery(query: string): string[];
|
|
33
|
+
/** Submodule tokens from queries like `util模块` / `util 模块`. */
|
|
34
|
+
export declare function extractKitSubmoduleNamesFromQuery(query: string): string[];
|
|
35
|
+
/**
|
|
36
|
+
* "@kit.X 的 Y 模块有哪些功能" — SDK API docs are outside the repo; answer from
|
|
37
|
+
* indexed import/usage only.
|
|
38
|
+
*/
|
|
39
|
+
export declare function queryAsKitModuleCapabilitySurvey(query: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Out-of-repo SDK / kit **capability or API catalog** questions — wrong shape
|
|
42
|
+
* for HomeGraph (graph has imports/usages, not official feature lists).
|
|
43
|
+
* Shape-driven: kit token + catalog phrasing; never matches a specific product name.
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* Member-like / event-handler identifiers — useful as graph seeds (isExpired,
|
|
47
|
+
* onClick) but NOT as "which files import X" inventory filters. Treating them
|
|
48
|
+
* as import inventory makes explore return a dependency list and forces agents
|
|
49
|
+
* back to Grep.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isMemberLikeIdentifier(token: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Named Type + member (dot form, or co-named Type + member-like token).
|
|
54
|
+
* Structural — no product/question nouns.
|
|
55
|
+
*/
|
|
56
|
+
export declare function queryHasNamedMemberFocus(query: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Named UI/component symbol + event token (onClick / click) — "what happens when
|
|
59
|
+
* this control fires" is a one-symbol / callees question, not an import survey.
|
|
60
|
+
*/
|
|
61
|
+
export declare function queryAsNamedComponentAction(query: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Out-of-repo SDK catalog (kept for survey omit logic — not as a refuse list).
|
|
64
|
+
*/
|
|
65
|
+
export declare function queryAsOutOfRepoSdkCatalog(query: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Question already names files/symbols/@kit — prefer explore over FTS search.
|
|
68
|
+
*/
|
|
69
|
+
export declare function queryShouldPreferExploreOverSearch(query: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* In-repo kit/import **usage** inventory (call sites / which files import).
|
|
72
|
+
*/
|
|
73
|
+
export declare function shouldBuildKitModuleUsageSurvey(query: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Member-access patterns from a query — `obj.method`, `Type.method`, or `.member`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function extractMemberAccessFromQuery(query: string): QueryMemberAccess[];
|
|
78
|
+
/** Terms for targeted import-node FTS (kit modules and their @kit.* paths). */
|
|
79
|
+
export declare function extractImportSearchTerms(query: string): string[];
|
|
80
|
+
/** True when the file's basename matches a basename named in the query (Foo.ets, bar.ts, …). */
|
|
81
|
+
export declare function fileMatchesQueryBasename(filePath: string, basenames: string[]): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Full `import … from '…'` line for an import node — reads from disk when the
|
|
84
|
+
* stored signature is module-only (common for @kit.* extraction).
|
|
85
|
+
*/
|
|
86
|
+
export declare function resolveImportLineFromNode(node: Node, projectRoot: string): string;
|
|
9
87
|
/**
|
|
10
88
|
* Tokens that name the PROJECT as a whole — its `go.mod` module, `package.json`
|
|
11
89
|
* name, or repo root directory — rather than any specific symbol. A user
|
|
@@ -25,6 +103,129 @@ export declare function deriveProjectNameTokens(projectRoot: string): Set<string
|
|
|
25
103
|
* Includes generic English + code-specific noise words.
|
|
26
104
|
*/
|
|
27
105
|
export declare const STOP_WORDS: Set<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Lowercase API / import symbol names in a dependency question (taskpool, formInfo).
|
|
108
|
+
* Used to filter import sites to the symbol actually asked about, not every @kit.ArkTS import.
|
|
109
|
+
*/
|
|
110
|
+
export declare function extractDependencySymbolsFromQuery(query: string): string[];
|
|
111
|
+
/**
|
|
112
|
+
* Query text names a config/manifest file by basename + extension (structural, not a hardcoded whitelist).
|
|
113
|
+
*/
|
|
114
|
+
export declare function queryNamesConfigFile(query: string): boolean;
|
|
115
|
+
/** Query names concrete import/kit/symbol tokens usable to filter dependency sites. */
|
|
116
|
+
export declare function hasSymbolFilterInQuery(query: string): boolean;
|
|
117
|
+
/** Import-inventory omit/compact — @kit.* or distinctive symbol; not generic terms like "item". */
|
|
118
|
+
export declare function hasImportInventoryFilter(query: string): boolean;
|
|
119
|
+
/** Where-is-API-used / call-site intent (statfs, snake_case APIs, "哪里使用了 X"). */
|
|
120
|
+
export declare function queryAsApiUsageSurvey(query: string): boolean;
|
|
121
|
+
/** API / SDK tokens named in the query — lowercase deps + PascalCase modules (Telephony). */
|
|
122
|
+
export declare function extractApiUsageTokens(query: string): string[];
|
|
123
|
+
export declare function shouldBuildApiUsageSurvey(query: string): boolean;
|
|
124
|
+
/** Caller / method survey intent — not every PascalCase token. */
|
|
125
|
+
export declare function queryAsCallerOrMethodSurvey(query: string): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Query is essentially just type name(s) (plus filler). Used for *inheritance*
|
|
128
|
+
* surveys when agents pass bare `Rectangle` — NOT for every PascalCase token
|
|
129
|
+
* (that wrongly classified callbacks like `OnSurfaceChangedCB` as types and
|
|
130
|
+
* blocked the compact callable path).
|
|
131
|
+
*/
|
|
132
|
+
export declare function queryIsTypeNameFocus(query: string): boolean;
|
|
133
|
+
/** Subtype / extends-base intent (Chinese 子类 or English subclass/extends Type). */
|
|
134
|
+
export declare function queryAsInheritanceSurvey(query: string): boolean;
|
|
135
|
+
export declare function shouldBuildCallerInventory(query: string): boolean;
|
|
136
|
+
/** Symbols to list callers for — types, free functions (SortWidgets), snake_case APIs. */
|
|
137
|
+
export declare function extractCallerSurveySymbols(query: string): string[];
|
|
138
|
+
/** Cross-module call-chain intent (A → B → engine). */
|
|
139
|
+
export declare function queryAsCrossModuleFlowSurvey(query: string): boolean;
|
|
140
|
+
/** Data-source / upstream-service intent (来源于哪个服务 / which service). */
|
|
141
|
+
export declare function queryAsDataSourceSurvey(query: string): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Local one/few-symbol behavior or contract — NOT multi-file mechanism / inventory.
|
|
144
|
+
* These questions need a small body (or callers list), not a 24K related-file dump.
|
|
145
|
+
*/
|
|
146
|
+
export declare function extractLocalDetailAnchors(query: string): string[];
|
|
147
|
+
/**
|
|
148
|
+
* Caller survey that also asks how a co-named type becomes visible / used.
|
|
149
|
+
* Inventory-only (paths) is incomplete — need compact body + callers together.
|
|
150
|
+
*/
|
|
151
|
+
export declare function queryNeedsCoNamedUseBridge(query: string): boolean;
|
|
152
|
+
export declare function queryAsLocalSymbolDetail(query: string): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Agent already named 1–3 concrete symbols. Those must take compact explore —
|
|
155
|
+
* never fall through to findRelevantContext (10k+ Dynamic-dispatch dumps + Read).
|
|
156
|
+
*/
|
|
157
|
+
export declare function queryHasFocusedNamedAnchors(query: string): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Prefer a tight explore budget: local-detail questions, or named-symbol
|
|
160
|
+
* questions that are not mechanism / cross-module flows.
|
|
161
|
+
*/
|
|
162
|
+
export declare function shouldUseCompactExploreBudget(query: string): boolean;
|
|
163
|
+
/** Keep rendering to files that define symbols named in the query. */
|
|
164
|
+
export declare function shouldFocusOnQueryNamedDefs(query: string, hasFlowPath: boolean, multiAnchorQuery: boolean): boolean;
|
|
165
|
+
/** Single named file + role/interpretation intent (test.ets method purpose). */
|
|
166
|
+
export declare function queryAsInterpretationSurvey(query: string): boolean;
|
|
167
|
+
/** Interpretation scoped to a `.test.ets` / `.test.ts` file — production code is out of scope. */
|
|
168
|
+
export declare function queryAsTestOnlyInterpretation(query: string): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Mechanism-query entry symbol seeds from query shape — symbols the user actually named,
|
|
171
|
+
* not a corpus-specific synonym table.
|
|
172
|
+
*/
|
|
173
|
+
export declare function extractMechanismEntrySeeds(query: string): string[];
|
|
174
|
+
/**
|
|
175
|
+
* Lightweight mechanism explore — seed symbols + flow spine only, no full
|
|
176
|
+
* findRelevantContext (keeps MCP calls fast and avoids agent grep fallback).
|
|
177
|
+
*/
|
|
178
|
+
export declare function shouldTryLightMechanismExplore(query: string): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Skip expensive subgraph gathering — inventory sections alone answer the query.
|
|
181
|
+
*/
|
|
182
|
+
export declare function shouldTryFastInventoryExplore(query: string): boolean;
|
|
183
|
+
export declare function shouldBuildInheritanceSurvey(query: string): boolean;
|
|
184
|
+
export declare function shouldBuildMemberSurvey(query: string): boolean;
|
|
185
|
+
export declare function shouldBuildConfigSection(query: string): boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Domain terms for broad file/usage surveys — Chinese noun phrases, type names,
|
|
188
|
+
* path segments, and distinctive API tokens. Strips only generic survey
|
|
189
|
+
* boilerplate (有哪些 / 如何 / …) — never a product-noun whitelist.
|
|
190
|
+
*/
|
|
191
|
+
export declare function extractDomainSearchTerms(query: string): string[];
|
|
192
|
+
/** How/implementation/mechanism intent — needs entry symbols + flow, not flat file list. */
|
|
193
|
+
export declare function queryAsMechanismSurvey(query: string): boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Broad domain survey — related files, usage existence, or concept comparison.
|
|
196
|
+
* Omits source when the file inventory is the complete answer.
|
|
197
|
+
*/
|
|
198
|
+
export declare function queryAsDomainFileSurvey(query: string): boolean;
|
|
199
|
+
export declare function shouldBuildDomainFileSurvey(query: string): boolean;
|
|
200
|
+
/** Callable/class names that commonly anchor implementation flows. */
|
|
201
|
+
export declare const IMPLEMENTATION_ENTRY_NAME_RE: RegExp;
|
|
202
|
+
export declare function isImplementationEntrySymbol(name: string, domainTerms: string[]): boolean;
|
|
203
|
+
/** Compact import list when query filters symbols and at least one site matches. */
|
|
204
|
+
export declare function shouldCompactImportListing(siteCount: number, hasSymbolFilter: boolean): boolean;
|
|
205
|
+
export interface ExploreInventorySignals {
|
|
206
|
+
importSiteCount: number;
|
|
207
|
+
hasFilteredImports: boolean;
|
|
208
|
+
callerBulletCount: number;
|
|
209
|
+
memberFileCount: number;
|
|
210
|
+
apiUsageFileCount: number;
|
|
211
|
+
configRendered: boolean;
|
|
212
|
+
kitModuleSurveyRendered: boolean;
|
|
213
|
+
inheritanceListed: boolean;
|
|
214
|
+
domainFileCount: number;
|
|
215
|
+
dataSourceEdgeCount: number;
|
|
216
|
+
}
|
|
217
|
+
/** Single file basename anchor with no flow — render that file only. */
|
|
218
|
+
export declare function shouldLimitToQueryNamedFile(query: string, hasFlowPath: boolean, multiAnchorQuery: boolean): boolean;
|
|
219
|
+
/** Multiple named anchors in one query → trace/connect intent, not flat inventory. */
|
|
220
|
+
export declare function queryNamesMultipleExploreAnchors(query: string): boolean;
|
|
221
|
+
/** Omit source bodies when inventory sections suffice and the graph found no flow path. */
|
|
222
|
+
export declare function shouldOmitSourceBodies(inv: ExploreInventorySignals, hasFlowPath: boolean, multiAnchorQuery: boolean): boolean;
|
|
223
|
+
/** Single named type + member/callback intent — render that type's file only. */
|
|
224
|
+
export declare function shouldFocusOnNamedTypeFile(query: string, hasFlowPath: boolean, multiAnchorQuery: boolean): boolean;
|
|
225
|
+
/** PascalCase type / class names mentioned in the query (Configuration, BadgeManager). */
|
|
226
|
+
export declare function extractTypeNamesFromQuery(query: string): string[];
|
|
227
|
+
/** True when the query names concrete indexed-code anchors (for explore-first guidance). */
|
|
228
|
+
export declare function hasConcreteExploreAnchors(query: string): boolean;
|
|
28
229
|
/**
|
|
29
230
|
* Generate stem variants of a search term by removing common English suffixes.
|
|
30
231
|
* Used for FTS query expansion so "caching" also finds "cache", "eviction" finds "evict", etc.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-utils.d.ts","sourceRoot":"","sources":["../../src/search/query-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"query-utils.d.ts","sourceRoot":"","sources":["../../src/search/query-utils.ts"],"names":[],"mappings":"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"}
|