@nanonets/graft 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -32
- package/dist/ai/llm/openai.d.ts +11 -0
- package/dist/ai/llm/openai.d.ts.map +1 -1
- package/dist/ai/llm/openai.js +33 -1
- package/dist/ai/llm/openai.js.map +1 -1
- package/dist/ask/ask.d.ts.map +1 -1
- package/dist/ask/ask.js +22 -15
- package/dist/ask/ask.js.map +1 -1
- package/dist/ask/fuse.d.ts +4 -0
- package/dist/ask/fuse.d.ts.map +1 -1
- package/dist/ask/fuse.js +2 -1
- package/dist/ask/fuse.js.map +1 -1
- package/dist/ask/index-file.d.ts +1 -0
- package/dist/ask/index-file.d.ts.map +1 -1
- package/dist/ask/index-file.js +1 -1
- package/dist/ask/index-file.js.map +1 -1
- package/dist/cli-meta.d.ts +6 -1
- package/dist/cli-meta.d.ts.map +1 -1
- package/dist/cli-meta.js +8 -2
- package/dist/cli-meta.js.map +1 -1
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +3 -1
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.js +30 -2
- package/dist/cli.js.map +1 -1
- package/dist/context/build.d.ts.map +1 -1
- package/dist/context/build.js +13 -4
- package/dist/context/build.js.map +1 -1
- package/dist/context/check.d.ts.map +1 -1
- package/dist/context/check.js +14 -5
- package/dist/context/check.js.map +1 -1
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +4 -18
- package/dist/context/node-file.js.map +1 -1
- package/dist/graph/build.d.ts +3 -0
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +41 -12
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cards.d.ts.map +1 -1
- package/dist/graph/cards.js +3 -2
- package/dist/graph/cards.js.map +1 -1
- package/dist/graph/check.d.ts.map +1 -1
- package/dist/graph/check.js +7 -4
- package/dist/graph/check.js.map +1 -1
- package/dist/graph/extract-cache.d.ts +1 -0
- package/dist/graph/extract-cache.d.ts.map +1 -1
- package/dist/graph/extract-cache.js +1 -1
- package/dist/graph/extract-cache.js.map +1 -1
- package/dist/graph/extract.d.ts +17 -0
- package/dist/graph/extract.d.ts.map +1 -1
- package/dist/graph/extract.js +188 -17
- package/dist/graph/extract.js.map +1 -1
- package/dist/graph/fingerprint.d.ts +1 -0
- package/dist/graph/fingerprint.d.ts.map +1 -1
- package/dist/graph/fingerprint.js +15 -6
- package/dist/graph/fingerprint.js.map +1 -1
- package/dist/graph/map.d.ts.map +1 -1
- package/dist/graph/map.js +6 -4
- package/dist/graph/map.js.map +1 -1
- package/dist/graph/refresh.d.ts.map +1 -1
- package/dist/graph/refresh.js +61 -13
- package/dist/graph/refresh.js.map +1 -1
- package/dist/graph/resolve.d.ts.map +1 -1
- package/dist/graph/resolve.js +36 -43
- package/dist/graph/resolve.js.map +1 -1
- package/dist/graph/scopes.d.ts +14 -2
- package/dist/graph/scopes.d.ts.map +1 -1
- package/dist/graph/scopes.js +51 -81
- package/dist/graph/scopes.js.map +1 -1
- package/dist/graph/seed.d.ts +38 -0
- package/dist/graph/seed.d.ts.map +1 -0
- package/dist/graph/seed.js +226 -0
- package/dist/graph/seed.js.map +1 -0
- package/dist/graph/source-files.d.ts +13 -5
- package/dist/graph/source-files.d.ts.map +1 -1
- package/dist/graph/source-files.js +16 -7
- package/dist/graph/source-files.js.map +1 -1
- package/dist/graph/traverse-cli.d.ts +8 -2
- package/dist/graph/traverse-cli.d.ts.map +1 -1
- package/dist/graph/traverse-cli.js +26 -6
- package/dist/graph/traverse-cli.js.map +1 -1
- package/dist/graph/traverse.d.ts +3 -1
- package/dist/graph/traverse.d.ts.map +1 -1
- package/dist/graph/traverse.js +22 -3
- package/dist/graph/traverse.js.map +1 -1
- package/dist/graph/types.d.ts +1 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/workspace-cli.d.ts +5 -0
- package/dist/graph/workspace-cli.d.ts.map +1 -1
- package/dist/graph/workspace-cli.js +7 -0
- package/dist/graph/workspace-cli.js.map +1 -1
- package/dist/graph/workspace.js +1 -1
- package/dist/graph/workspace.js.map +1 -1
- package/dist/ingest/fs.d.ts +30 -2
- package/dist/ingest/fs.d.ts.map +1 -1
- package/dist/ingest/fs.js +84 -8
- package/dist/ingest/fs.js.map +1 -1
- package/dist/mcp/tools.js +3 -3
- package/dist/mcp/tools.js.map +1 -1
- package/dist/search/grep-cli.d.ts.map +1 -1
- package/dist/search/grep-cli.js +4 -1
- package/dist/search/grep-cli.js.map +1 -1
- package/dist/search/grep.d.ts +2 -1
- package/dist/search/grep.d.ts.map +1 -1
- package/dist/search/grep.js +16 -3
- package/dist/search/grep.js.map +1 -1
- package/dist/util/paths.d.ts +29 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +71 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/source.d.ts +4 -0
- package/dist/util/source.d.ts.map +1 -0
- package/dist/util/source.js +12 -0
- package/dist/util/source.js.map +1 -0
- package/dist/util/state.d.ts +25 -0
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js +41 -0
- package/dist/util/state.js.map +1 -1
- package/package.json +2 -2
- package/scripts/run-tests.mjs +43 -0
package/dist/graph/scopes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/graph/scopes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/graph/scopes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Env kill switch, mirroring `GRAFT_NO_REFRESH` in ./refresh.ts. */
|
|
2
|
+
export declare function seedDisabled(): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* The main checkout of the repo `root` is a linked worktree of, or null when `root`
|
|
5
|
+
* isn't one (which is the common case, and not an error).
|
|
6
|
+
*
|
|
7
|
+
* Filesystem-only on purpose: no `git` subprocess on a path that runs before every
|
|
8
|
+
* query. The shapes it has to tell apart:
|
|
9
|
+
*
|
|
10
|
+
* - `<root>/.git` is a **directory** → this *is* the main checkout. Nothing to seed.
|
|
11
|
+
* - `gitdir: <main>/.git/worktrees/<name>` → a linked worktree. `commondir` inside
|
|
12
|
+
* that dir points back at the shared `.git` (`../..`), whose parent is the main
|
|
13
|
+
* checkout.
|
|
14
|
+
* - `gitdir: <super>/.git/modules/<name>` → a **submodule**. Identical file shape,
|
|
15
|
+
* completely different thing: a submodule is its own repo and its parent's `graft/`
|
|
16
|
+
* describes different code entirely. The `worktrees` path segment is what rejects it.
|
|
17
|
+
* - A bare repo or `--separate-git-dir` layout, where the resolved common dir isn't
|
|
18
|
+
* named `.git` and there may be no working tree at all → null.
|
|
19
|
+
*/
|
|
20
|
+
export declare function mainWorktreeRoot(root: string): string | null;
|
|
21
|
+
export interface SeedResult {
|
|
22
|
+
seeded: boolean;
|
|
23
|
+
/** The main checkout the graph came from, when one was used. */
|
|
24
|
+
from?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Copy the parent checkout's graph into `root`'s own `graft/`, if all of this holds:
|
|
28
|
+
* `root` is a linked worktree, it has no graph yet, the parent has one, and no `--dir`
|
|
29
|
+
* override is in play (a custom output dir can't be mapped to a sibling checkout —
|
|
30
|
+
* the same conservatism `ensureGitignored` applies).
|
|
31
|
+
*
|
|
32
|
+
* Best-effort by contract: the caller's fallback is the behaviour that existed before
|
|
33
|
+
* this function did, so every failure returns `{ seeded: false }` rather than raising.
|
|
34
|
+
*/
|
|
35
|
+
export declare function seedGraph(root: string, opts?: {
|
|
36
|
+
contextDir?: string;
|
|
37
|
+
}): SeedResult;
|
|
38
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/graph/seed.ts"],"names":[],"mappings":"AAwDA,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B5D;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAwFD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CAiBtF"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `seedGraph` — give a linked git worktree the graph its parent checkout already has.
|
|
3
|
+
*
|
|
4
|
+
* `graft/` is a local cache, so it is gitignored, so `git worktree add` never checks
|
|
5
|
+
* it out: a worktree starts with `src/` and `.claude/` and no graph at all. Every
|
|
6
|
+
* MCP tool then answers "no graph found — run graft build first" for the whole
|
|
7
|
+
* session, and the passive surface (`INDEX.md`, the cards) is missing too. The agent
|
|
8
|
+
* that was supposed to be cheapest in a fresh worktree is instead blind in one.
|
|
9
|
+
*
|
|
10
|
+
* What travels is the graph and the sidecars a query reads — never the markdown; see
|
|
11
|
+
* `seedable` for why the cards are the parent's branch and not this one's.
|
|
12
|
+
*
|
|
13
|
+
* The parent checkout has not gone anywhere, though — a worktree's `.git` is a *file*
|
|
14
|
+
* naming it, and the harness that creates these worktrees already reaches back the
|
|
15
|
+
* same way (Claude Code symlinks `node_modules` to the parent's). So: copy the
|
|
16
|
+
* parent's `graft/` in, then let the ordinary refresh gate repair the difference.
|
|
17
|
+
*
|
|
18
|
+
* Copy, not symlink. `node_modules` is the same for every branch; a graph is a set of
|
|
19
|
+
* `file:line` spans for one specific tree, so a shared one would have the worktree
|
|
20
|
+
* rewriting the parent's graph with its own branch's line numbers. What makes the
|
|
21
|
+
* copy worth doing rather than just rebuilding cold:
|
|
22
|
+
*
|
|
23
|
+
* - **The Tier-2 meaning layer survives.** Summaries and cruxes cost real money;
|
|
24
|
+
* `buildGraph` folds a prior `wiring.json` in by `body_hash`, so an unchanged
|
|
25
|
+
* function keeps the summary someone already paid for. A cold build throws them all
|
|
26
|
+
* away and the worktree silently drops to structural-only answers.
|
|
27
|
+
* - **The repair is small.** `probeDrift` confirms a suspect file by content hash, so
|
|
28
|
+
* a fresh checkout's brand-new mtimes cost one hashing pass and nothing more; the
|
|
29
|
+
* drift that survives is exactly the diff between the two checkouts' commits.
|
|
30
|
+
* - **$0 and offline**, like everything else on the query path.
|
|
31
|
+
*
|
|
32
|
+
* Never writes to the parent, never throws, and no-ops unless there is genuinely a
|
|
33
|
+
* built parent checkout on disk — so a fresh clone, CI, or a cloud session whose repo
|
|
34
|
+
* was *cloned* rather than worktree'd behaves exactly as it did before: "run graft
|
|
35
|
+
* build first".
|
|
36
|
+
*/
|
|
37
|
+
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, } from "node:fs";
|
|
38
|
+
import { basename, dirname, isAbsolute, join, resolve } from "node:path";
|
|
39
|
+
import { ASK_INDEX_FILE } from "../ask/index-file.js";
|
|
40
|
+
import { CACHE_DIR, contextDirFor } from "../context/node-file.js";
|
|
41
|
+
import { EXTRACT_CACHE_PREFIX } from "./extract-cache.js";
|
|
42
|
+
import { FINGERPRINT_PREFIX } from "./fingerprint.js";
|
|
43
|
+
import { GRAPH_DIR, wiringPath } from "./write.js";
|
|
44
|
+
/** The one line a linked worktree's `.git` file carries. */
|
|
45
|
+
const GITDIR_KEY = "gitdir:";
|
|
46
|
+
/** Env kill switch, mirroring `GRAFT_NO_REFRESH` in ./refresh.ts. */
|
|
47
|
+
export function seedDisabled() {
|
|
48
|
+
const v = process.env.GRAFT_NO_SEED;
|
|
49
|
+
return v !== undefined && v !== "" && v !== "0" && v !== "false";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The main checkout of the repo `root` is a linked worktree of, or null when `root`
|
|
53
|
+
* isn't one (which is the common case, and not an error).
|
|
54
|
+
*
|
|
55
|
+
* Filesystem-only on purpose: no `git` subprocess on a path that runs before every
|
|
56
|
+
* query. The shapes it has to tell apart:
|
|
57
|
+
*
|
|
58
|
+
* - `<root>/.git` is a **directory** → this *is* the main checkout. Nothing to seed.
|
|
59
|
+
* - `gitdir: <main>/.git/worktrees/<name>` → a linked worktree. `commondir` inside
|
|
60
|
+
* that dir points back at the shared `.git` (`../..`), whose parent is the main
|
|
61
|
+
* checkout.
|
|
62
|
+
* - `gitdir: <super>/.git/modules/<name>` → a **submodule**. Identical file shape,
|
|
63
|
+
* completely different thing: a submodule is its own repo and its parent's `graft/`
|
|
64
|
+
* describes different code entirely. The `worktrees` path segment is what rejects it.
|
|
65
|
+
* - A bare repo or `--separate-git-dir` layout, where the resolved common dir isn't
|
|
66
|
+
* named `.git` and there may be no working tree at all → null.
|
|
67
|
+
*/
|
|
68
|
+
export function mainWorktreeRoot(root) {
|
|
69
|
+
try {
|
|
70
|
+
const dot = join(root, ".git");
|
|
71
|
+
if (statSync(dot).isDirectory())
|
|
72
|
+
return null;
|
|
73
|
+
// Read the pointer without a regex. `/^gitdir:[ \t]*(.+?)[ \t]*$/m` is the
|
|
74
|
+
// polynomial-ReDoS shape CodeQL flagged on `ensureSearchable` (`js/polynomial-redos`,
|
|
75
|
+
// fixed in 44a191e): `.` also matches space and tab, so the lazy group and the
|
|
76
|
+
// trailing `[ \t]*` overlap and a line of blanks costs O(n²). Same conclusion as
|
|
77
|
+
// that fix — the ambiguity buys nothing, and split/startsWith/trim is linear and
|
|
78
|
+
// plainer. `trim` also absorbs the `\r` of a CRLF checkout.
|
|
79
|
+
const line = readFileSync(dot, "utf8").split("\n").find((l) => l.startsWith(GITDIR_KEY));
|
|
80
|
+
if (line === undefined)
|
|
81
|
+
return null;
|
|
82
|
+
const target = line.slice(GITDIR_KEY.length).trim();
|
|
83
|
+
if (!target)
|
|
84
|
+
return null;
|
|
85
|
+
const gitdir = isAbsolute(target) ? target : resolve(root, target);
|
|
86
|
+
if (basename(dirname(gitdir)) !== "worktrees")
|
|
87
|
+
return null;
|
|
88
|
+
const rel = readFileSync(join(gitdir, "commondir"), "utf8").trim();
|
|
89
|
+
if (!rel)
|
|
90
|
+
return null;
|
|
91
|
+
const common = isAbsolute(rel) ? rel : resolve(gitdir, rel);
|
|
92
|
+
if (basename(common) !== ".git" || !statSync(common).isDirectory())
|
|
93
|
+
return null;
|
|
94
|
+
const main = dirname(common);
|
|
95
|
+
if (resolve(main) === resolve(root))
|
|
96
|
+
return null;
|
|
97
|
+
return main;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// No `.git` at all, an unreadable one, a `commondir` that doesn't exist: all of
|
|
101
|
+
// them mean "can't seed from here", which is the same answer as "not a worktree".
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const NOT_SEEDED = { seeded: false };
|
|
106
|
+
/**
|
|
107
|
+
* An allowlist, not a skip list: is this repo-relative path (posix) one of the few
|
|
108
|
+
* files a seed may bring across?
|
|
109
|
+
*
|
|
110
|
+
* The gate that calls this promises "writes only what a query reads — the graph, the
|
|
111
|
+
* `ask` sidecar, the freshness record" (see the header of ./refresh.ts). A copy that
|
|
112
|
+
* wrote anything else would turn a read into a write of the repo, so the copy honours
|
|
113
|
+
* the same list. The extraction memo is on it because the refresh immediately after
|
|
114
|
+
* rewrites that file anyway, and replaying it is what keeps the repair cheap.
|
|
115
|
+
*
|
|
116
|
+
* **Deliberately absent: the cards and `INDEX.md`.** They would land as this
|
|
117
|
+
* checkout's documentation while describing the *parent's* branch, and nothing on the
|
|
118
|
+
* query path rewrites them (`writeCards`/`writeIndex` sit behind `!graphOnly`), so they
|
|
119
|
+
* would stay wrong indefinitely. An explicit `graft build` regenerates them from this
|
|
120
|
+
* checkout's own graph — and prunes the ones that no longer apply — which is both
|
|
121
|
+
* correct and nearly free once the graph is here.
|
|
122
|
+
*
|
|
123
|
+
* Also absent, because it belongs to the checkout that produced it: `.cache/session/`
|
|
124
|
+
* (another session's transcripts), `.sync.lock` (another process's lock), and
|
|
125
|
+
* `stats.json` (this checkout earns its own savings and dirty flag).
|
|
126
|
+
*/
|
|
127
|
+
function seedable(rel) {
|
|
128
|
+
// The dirs themselves, or cpSync would never look inside them.
|
|
129
|
+
if (rel === "" || rel === GRAPH_DIR || rel === CACHE_DIR)
|
|
130
|
+
return true;
|
|
131
|
+
if (!rel.startsWith(`${CACHE_DIR}/`))
|
|
132
|
+
return false; // incl. the graph: `installGraph` places it
|
|
133
|
+
const name = rel.slice(CACHE_DIR.length + 1);
|
|
134
|
+
return (name === ASK_INDEX_FILE ||
|
|
135
|
+
name.startsWith(`${EXTRACT_CACHE_PREFIX}.`) ||
|
|
136
|
+
name.startsWith(`${FINGERPRINT_PREFIX}.`));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Copy `srcDir` into `outDir`, keeping only what {@link seedable} allows.
|
|
140
|
+
*
|
|
141
|
+
* Walked by hand rather than through `cpSync`'s `filter`, which did not hold on
|
|
142
|
+
* Windows: the graph arrived — it is placed directly, by {@link installGraph} — while
|
|
143
|
+
* every allowlisted sidecar next to it was dropped. A seeded worktree therefore had no
|
|
144
|
+
* fingerprint, `probeDrift` read that as "never built", and the query right behind the
|
|
145
|
+
* seed rebuilt the whole repo instead of the diff against the parent: precisely the
|
|
146
|
+
* cost seeding exists to avoid, and silent, because a full rebuild still answers
|
|
147
|
+
* correctly. It only surfaced as a `(? files changed)` note on the CI leg.
|
|
148
|
+
*
|
|
149
|
+
* Composing `rel` from the segments this walk joined itself is what fixes it — the
|
|
150
|
+
* allowlist no longer depends on the form `cpSync` chooses to hand its callback, and
|
|
151
|
+
* `rel` is posix by construction rather than by conversion. Also narrower than the old
|
|
152
|
+
* copy in one way worth keeping: only real files and directories travel, never a
|
|
153
|
+
* symlink, and nothing in the allowlist is one.
|
|
154
|
+
*/
|
|
155
|
+
function copyTree(srcDir, outDir) {
|
|
156
|
+
const walk = (rel) => {
|
|
157
|
+
const from = rel ? join(srcDir, rel) : srcDir;
|
|
158
|
+
mkdirSync(rel ? join(outDir, rel) : outDir, { recursive: true });
|
|
159
|
+
for (const entry of readdirSync(from, { withFileTypes: true })) {
|
|
160
|
+
const childRel = rel ? `${rel}/${entry.name}` : entry.name;
|
|
161
|
+
if (!seedable(childRel))
|
|
162
|
+
continue;
|
|
163
|
+
if (entry.isDirectory())
|
|
164
|
+
walk(childRel);
|
|
165
|
+
else if (entry.isFile())
|
|
166
|
+
copyFileSync(join(from, entry.name), join(outDir, childRel));
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
walk("");
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Put `wiring.json` in place last, via a temp file and a rename.
|
|
173
|
+
*
|
|
174
|
+
* Its presence is the flag every caller reads to mean "this repo has a graph"
|
|
175
|
+
* (`refresh.ts`, `workspace.ts`, every MCP tool). So it must appear only once the
|
|
176
|
+
* rest of the copy has landed and must never appear half-written: a seed killed
|
|
177
|
+
* midway then leaves no graph, and the next call simply seeds again.
|
|
178
|
+
*/
|
|
179
|
+
function installGraph(srcGraph, destGraph) {
|
|
180
|
+
mkdirSync(dirname(destGraph), { recursive: true });
|
|
181
|
+
const tmp = `${destGraph}.seed.${process.pid}`;
|
|
182
|
+
try {
|
|
183
|
+
copyFileSync(srcGraph, tmp);
|
|
184
|
+
renameSync(tmp, destGraph);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
try {
|
|
188
|
+
rmSync(tmp, { force: true });
|
|
189
|
+
}
|
|
190
|
+
catch { /* nothing to clean up */ }
|
|
191
|
+
throw err;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Copy the parent checkout's graph into `root`'s own `graft/`, if all of this holds:
|
|
196
|
+
* `root` is a linked worktree, it has no graph yet, the parent has one, and no `--dir`
|
|
197
|
+
* override is in play (a custom output dir can't be mapped to a sibling checkout —
|
|
198
|
+
* the same conservatism `ensureGitignored` applies).
|
|
199
|
+
*
|
|
200
|
+
* Best-effort by contract: the caller's fallback is the behaviour that existed before
|
|
201
|
+
* this function did, so every failure returns `{ seeded: false }` rather than raising.
|
|
202
|
+
*/
|
|
203
|
+
export function seedGraph(root, opts = {}) {
|
|
204
|
+
if (opts.contextDir || seedDisabled())
|
|
205
|
+
return NOT_SEEDED;
|
|
206
|
+
try {
|
|
207
|
+
const dir = resolve(root);
|
|
208
|
+
const outDir = contextDirFor(dir);
|
|
209
|
+
if (existsSync(wiringPath(outDir)))
|
|
210
|
+
return NOT_SEEDED; // already has its own
|
|
211
|
+
const main = mainWorktreeRoot(dir);
|
|
212
|
+
if (!main)
|
|
213
|
+
return NOT_SEEDED;
|
|
214
|
+
const srcDir = contextDirFor(main);
|
|
215
|
+
const srcGraph = wiringPath(srcDir);
|
|
216
|
+
if (!existsSync(srcGraph))
|
|
217
|
+
return NOT_SEEDED; // parent never built either
|
|
218
|
+
copyTree(srcDir, outDir);
|
|
219
|
+
installGraph(srcGraph, wiringPath(outDir));
|
|
220
|
+
return { seeded: true, from: main };
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
return NOT_SEEDED;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/graph/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The source files a graph build parses: supported languages, minus the
|
|
3
|
+
* output dir. When no pre-enumerated `repoFiles` is passed, the walk reads
|
|
4
|
+
* `root`'s persisted `--include-dir` override (if any) directly from state —
|
|
5
|
+
* so every caller that enumerates through here (the fingerprint probe, the
|
|
6
|
+
* hooks/refresh path, none of which ever see a CLI flag) behaves identically
|
|
7
|
+
* to the `graft build --include-dir` invocation that set it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function listSourceFiles(root: string, outDir: string, repoFiles?: string[]): string[];
|
|
3
10
|
export interface SourceStat {
|
|
4
11
|
/** Absolute path. */
|
|
5
12
|
abs: string;
|
|
6
|
-
/**
|
|
7
|
-
* `checkGraph` diffs against, so cache keys and ids can never
|
|
13
|
+
/** Repo-relative, posix (`relPosix`) — exactly the form `buildGraph` uses for
|
|
14
|
+
* node ids and `checkGraph` diffs against, so cache keys and ids can never
|
|
15
|
+
* disagree. Posix on every platform: see `../util/paths.ts`. */
|
|
8
16
|
rel: string;
|
|
9
17
|
size: number;
|
|
10
18
|
mtimeMs: number;
|
|
@@ -14,5 +22,5 @@ export interface SourceStat {
|
|
|
14
22
|
* both the freshness probe and the extraction cache. Files that vanish between
|
|
15
23
|
* the walk and the stat are dropped (same fail-soft posture as `walkDir`).
|
|
16
24
|
*/
|
|
17
|
-
export declare function listSourceStats(root: string, outDir: string): SourceStat[];
|
|
25
|
+
export declare function listSourceStats(root: string, outDir: string, repoFiles?: string[]): SourceStat[];
|
|
18
26
|
//# sourceMappingURL=source-files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-files.d.ts","sourceRoot":"","sources":["../../src/graph/source-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-files.d.ts","sourceRoot":"","sources":["../../src/graph/source-files.ts"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAM,EAAkD,GAClE,MAAM,EAAE,CAEV;AAED,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ;;oEAEgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAYhG"}
|
|
@@ -7,21 +7,30 @@
|
|
|
7
7
|
* {@link listSourceFiles} so its existing importers are unaffected.
|
|
8
8
|
*/
|
|
9
9
|
import { statSync } from "node:fs";
|
|
10
|
-
import {
|
|
10
|
+
import { resolve } from "node:path";
|
|
11
11
|
import { walkDir } from "../ingest/fs.js";
|
|
12
|
+
import { relPosix } from "../util/paths.js";
|
|
13
|
+
import { readIncludeDirs } from "../util/state.js";
|
|
12
14
|
import { languageOf } from "./extract.js";
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The source files a graph build parses: supported languages, minus the
|
|
17
|
+
* output dir. When no pre-enumerated `repoFiles` is passed, the walk reads
|
|
18
|
+
* `root`'s persisted `--include-dir` override (if any) directly from state —
|
|
19
|
+
* so every caller that enumerates through here (the fingerprint probe, the
|
|
20
|
+
* hooks/refresh path, none of which ever see a CLI flag) behaves identically
|
|
21
|
+
* to the `graft build --include-dir` invocation that set it.
|
|
22
|
+
*/
|
|
23
|
+
export function listSourceFiles(root, outDir, repoFiles = walkDir(root, readIncludeDirs(resolve(root)))) {
|
|
24
|
+
return repoFiles.filter((f) => !f.startsWith(outDir) && languageOf(f) !== null);
|
|
16
25
|
}
|
|
17
26
|
/**
|
|
18
27
|
* {@link listSourceFiles} plus each file's `(size, mtimeMs)` — the currency of
|
|
19
28
|
* both the freshness probe and the extraction cache. Files that vanish between
|
|
20
29
|
* the walk and the stat are dropped (same fail-soft posture as `walkDir`).
|
|
21
30
|
*/
|
|
22
|
-
export function listSourceStats(root, outDir) {
|
|
31
|
+
export function listSourceStats(root, outDir, repoFiles) {
|
|
23
32
|
const out = [];
|
|
24
|
-
for (const abs of listSourceFiles(root, outDir)) {
|
|
33
|
+
for (const abs of listSourceFiles(root, outDir, repoFiles)) {
|
|
25
34
|
let s;
|
|
26
35
|
try {
|
|
27
36
|
s = statSync(abs);
|
|
@@ -29,7 +38,7 @@ export function listSourceStats(root, outDir) {
|
|
|
29
38
|
catch {
|
|
30
39
|
continue;
|
|
31
40
|
}
|
|
32
|
-
out.push({ abs, rel:
|
|
41
|
+
out.push({ abs, rel: relPosix(root, abs), size: s.size, mtimeMs: s.mtimeMs });
|
|
33
42
|
}
|
|
34
43
|
return out;
|
|
35
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-files.js","sourceRoot":"","sources":["../../src/graph/source-files.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"source-files.js","sourceRoot":"","sources":["../../src/graph/source-files.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAc,EACd,YAAsB,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAClF,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,SAAoB;IAChF,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAoC,CAAC;QACzC,IAAI,CAAC;YACH,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -26,8 +26,14 @@ export declare function callersSavings(graph: GraphV1, results: {
|
|
|
26
26
|
symbol: NodeV1;
|
|
27
27
|
hits: EdgeHit[];
|
|
28
28
|
}[]): Savings | undefined;
|
|
29
|
-
/** Loud, actionable empty-result note — never a bare empty list.
|
|
30
|
-
|
|
29
|
+
/** Loud, actionable empty-result note — never a bare empty list. `candidateCount`
|
|
30
|
+
* is how many nodes {@link resolveSymbol} matched for this query (both call
|
|
31
|
+
* sites already hold it as `matches.length`) — when it's >1, the query name is
|
|
32
|
+
* itself ambiguous (several definitions share it), which is exactly the case
|
|
33
|
+
* `resolve.ts` drops a cross-file call/reference for rather than guessing which
|
|
34
|
+
* one it means. Without saying so, a zero-hit result here reads as "nothing
|
|
35
|
+
* calls this" when it may really be "something does, but the edge was dropped". */
|
|
36
|
+
export declare function looseNoteFor(direction: Direction, name: string, candidateCount: number): string;
|
|
31
37
|
/**
|
|
32
38
|
* Resolve `query` in the graph at `dir` (respecting `--dir`/`--in`), walk edges
|
|
33
39
|
* per `--direction`/`--depth`, and print either the human report or `--json`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse-cli.d.ts","sourceRoot":"","sources":["../../src/graph/traverse-cli.ts"],"names":[],"mappings":"AAeA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD;;kFAEkF;AAClF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;sEACsE;AACtE,wBAAgB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAKtF;AAED;;;sCAGsC;AACtC,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,EAAE,GAC7C,OAAO,GAAG,SAAS,CAOrB;AAED
|
|
1
|
+
{"version":3,"file":"traverse-cli.d.ts","sourceRoot":"","sources":["../../src/graph/traverse-cli.ts"],"names":[],"mappings":"AAeA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD;;kFAEkF;AAClF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;sEACsE;AACtE,wBAAgB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAKtF;AAED;;;sCAGsC;AACtC,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,EAAE,GAC7C,OAAO,GAAG,SAAS,CAOrB;AAED;;;;;;mFAMmF;AACnF,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAQ/F;AAiDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA0E3F"}
|
|
@@ -46,11 +46,20 @@ export function callersSavings(graph, results) {
|
|
|
46
46
|
}
|
|
47
47
|
return savingsFor(graph, paths);
|
|
48
48
|
}
|
|
49
|
-
/** Loud, actionable empty-result note — never a bare empty list.
|
|
50
|
-
|
|
49
|
+
/** Loud, actionable empty-result note — never a bare empty list. `candidateCount`
|
|
50
|
+
* is how many nodes {@link resolveSymbol} matched for this query (both call
|
|
51
|
+
* sites already hold it as `matches.length`) — when it's >1, the query name is
|
|
52
|
+
* itself ambiguous (several definitions share it), which is exactly the case
|
|
53
|
+
* `resolve.ts` drops a cross-file call/reference for rather than guessing which
|
|
54
|
+
* one it means. Without saying so, a zero-hit result here reads as "nothing
|
|
55
|
+
* calls this" when it may really be "something does, but the edge was dropped". */
|
|
56
|
+
export function looseNoteFor(direction, name, candidateCount) {
|
|
51
57
|
const label = direction === "out" ? "callees" : "callers";
|
|
52
58
|
const dir = direction === "out" ? "outgoing" : "incoming";
|
|
53
|
-
|
|
59
|
+
const ambiguity = candidateCount > 1
|
|
60
|
+
? ` ${candidateCount} definitions share the name "${name}"; a cross-file caller of an ambiguous name is dropped rather than guessed, so this may undercount.`
|
|
61
|
+
: "";
|
|
62
|
+
return ` no indexed ${label} — the graph has no ${dir} call/reference edges for this symbol as written.${ambiguity} Check the name (try the bare symbol, or "Type.method"), or find its uses with graft grep "${name}". Fall back to raw grep -rn only for unindexed files`;
|
|
54
63
|
}
|
|
55
64
|
function symbolJson(n) {
|
|
56
65
|
return { id: n.id, name: n.name, kind: n.kind, path: n.path, span: n.span };
|
|
@@ -88,7 +97,18 @@ export function runCallersCommand(query, dir, opts) {
|
|
|
88
97
|
console.error(`✗ no graph found at ${contextDir} — run \`graft build\` first`);
|
|
89
98
|
process.exit(1);
|
|
90
99
|
}
|
|
91
|
-
|
|
100
|
+
// `resolveSymbol` throws on an `--in` prefix that matches nothing indexed —
|
|
101
|
+
// a caller mistake, reported in the same shape as the ones around it rather
|
|
102
|
+
// than as a bare stack-trace message from the top-level handler.
|
|
103
|
+
let matches;
|
|
104
|
+
try {
|
|
105
|
+
matches = resolveSymbol(graph, query, opts.in ? { in: opts.in } : {});
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.error(`✗ ${err instanceof Error ? err.message : String(err)}`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
92
112
|
if (matches.length === 0) {
|
|
93
113
|
console.error(`✗ no symbol "${query}" in the graph — check spelling or run graft build`);
|
|
94
114
|
process.exit(1);
|
|
@@ -122,7 +142,7 @@ export function runCallersCommand(query, dir, opts) {
|
|
|
122
142
|
matches: results.map((r) => {
|
|
123
143
|
const m = { symbol: symbolJson(r.symbol), hits: r.hits.map(hitJson) };
|
|
124
144
|
if (r.hits.length === 0) {
|
|
125
|
-
m.note = looseNoteFor(direction, r.symbol.name);
|
|
145
|
+
m.note = looseNoteFor(direction, r.symbol.name, matches.length);
|
|
126
146
|
}
|
|
127
147
|
return m;
|
|
128
148
|
}),
|
|
@@ -135,7 +155,7 @@ export function runCallersCommand(query, dir, opts) {
|
|
|
135
155
|
for (const { symbol, hits } of results) {
|
|
136
156
|
lines.push(headerOf(symbol));
|
|
137
157
|
if (hits.length === 0)
|
|
138
|
-
lines.push(looseNoteFor(direction, symbol.name));
|
|
158
|
+
lines.push(looseNoteFor(direction, symbol.name, matches.length));
|
|
139
159
|
else
|
|
140
160
|
for (const h of hits)
|
|
141
161
|
lines.push(hitLine(direction, h, showDepth));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse-cli.js","sourceRoot":"","sources":["../../src/graph/traverse-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAgC,MAAM,eAAe,CAAC;AActF,MAAM,KAAK,GAAiC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClE,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB;;kFAEkF;AAClF,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED;sEACsE;AACtE,MAAM,UAAU,OAAO,CAAC,SAAoB,EAAE,GAAY,EAAE,SAAkB;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,sBAAsB,CAAC;IAClH,OAAO,KAAK,GAAG,CAAC,QAAQ,IAAI,KAAK,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED;;;sCAGsC;AACtC,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,OAA8C;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"traverse-cli.js","sourceRoot":"","sources":["../../src/graph/traverse-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/traverse.d.ts
CHANGED
|
@@ -23,7 +23,9 @@ export interface SymbolMatch {
|
|
|
23
23
|
node: NodeV1;
|
|
24
24
|
}
|
|
25
25
|
export interface ResolveSymbolOptions {
|
|
26
|
-
/** Narrow candidates to nodes
|
|
26
|
+
/** Narrow candidates to nodes at or under this repo-relative path prefix —
|
|
27
|
+
* the same segment-aware rule `ask --in` and `grep --in` use, so `--in` means
|
|
28
|
+
* one thing across every command. Normalized here, so either separator works. */
|
|
27
29
|
in?: string;
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/graph/traverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/graph/traverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKpE;;2BAE2B;AAC3B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAErC;8DAC8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC;;qFAEiF;IACjF,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,MAAM,EAAE,CA6BtG;AA4BD;;gEAEgE;AAChE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAQnE;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAQnE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,OAAO,EAAE,CAEhF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAI,EAAE,SAAS,GAAE,SAAgB,GAAG,OAAO,EAAE,CAmClH;AAQD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,SAAS,GAAE,SAAgB,GAAG,OAAO,EAAE,CAEnH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAIrG"}
|
package/dist/graph/traverse.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { WALK_RELATIONS } from "./relations.js";
|
|
2
|
+
import { assertPrefixIndexed, pathUnderPrefix } from "./scopes.js";
|
|
3
|
+
import { normalizePathPrefix } from "../util/paths.js";
|
|
2
4
|
/**
|
|
3
5
|
* Resolve a query string to every matching node in the graph.
|
|
4
6
|
*
|
|
@@ -34,10 +36,25 @@ export function resolveSymbol(graph, query, opts = {}) {
|
|
|
34
36
|
n.path.toLowerCase() === lowerQuery ||
|
|
35
37
|
n.path.toLowerCase().endsWith("/" + lowerQuery)));
|
|
36
38
|
}
|
|
37
|
-
if (opts.in)
|
|
38
|
-
|
|
39
|
+
if (opts.in) {
|
|
40
|
+
const prefix = normalizePathPrefix(opts.in);
|
|
41
|
+
assertPrefixIndexed(graph, prefix);
|
|
42
|
+
matches = matches.filter((n) => pathUnderPrefix(n.path, prefix));
|
|
43
|
+
}
|
|
39
44
|
return matches;
|
|
40
45
|
}
|
|
46
|
+
/** Strips extract.ts's mint-time disambiguation ordinals (`~2`, `~3`, ...)
|
|
47
|
+
* from segment ends in a dotted id-tail — the same shape extract.ts mints
|
|
48
|
+
* when a document-order duplicate definition would otherwise collide with an
|
|
49
|
+
* already-minted id (see extract.ts's mint-time uniqueness comment). Without
|
|
50
|
+
* this, a qualified query like `C.m` only ever matches the bare id (`#C.m`),
|
|
51
|
+
* silently hiding the `~2` duplicate from callers/ask/MCP lookups. The
|
|
52
|
+
* ordinal can land on any segment, not just the tail (a reopened class shows
|
|
53
|
+
* up as `C~2.m`), so this strips at every segment boundary (`.` or end of
|
|
54
|
+
* string), not just the very end of the string. */
|
|
55
|
+
function stripOrdinals(idTail) {
|
|
56
|
+
return idTail.replace(/~\d+(?=\.|$)/g, "");
|
|
57
|
+
}
|
|
41
58
|
function symbolMatches(nodes, lowerQuery) {
|
|
42
59
|
const suffixHash = "#" + lowerQuery;
|
|
43
60
|
const suffixDot = "." + lowerQuery;
|
|
@@ -47,7 +64,9 @@ function symbolMatches(nodes, lowerQuery) {
|
|
|
47
64
|
if (n.name.toLowerCase() === lowerQuery)
|
|
48
65
|
return true;
|
|
49
66
|
const lowerId = n.id.toLowerCase();
|
|
50
|
-
|
|
67
|
+
const hashIdx = lowerId.indexOf("#");
|
|
68
|
+
const candidateId = hashIdx === -1 ? lowerId : lowerId.slice(0, hashIdx + 1) + stripOrdinals(lowerId.slice(hashIdx + 1));
|
|
69
|
+
return candidateId.endsWith(suffixHash) || candidateId.endsWith(suffixDot);
|
|
51
70
|
});
|
|
52
71
|
}
|
|
53
72
|
/** Depth-1: nodes with a walk-relation edge whose target is `symbol`. */
|