@nanonets/graft 0.23.0 → 0.23.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.
Files changed (41) hide show
  1. package/dist/claude/format.d.ts +21 -0
  2. package/dist/claude/format.d.ts.map +1 -1
  3. package/dist/claude/format.js +45 -0
  4. package/dist/claude/format.js.map +1 -1
  5. package/dist/claude/hooks.d.ts +17 -3
  6. package/dist/claude/hooks.d.ts.map +1 -1
  7. package/dist/claude/hooks.js +74 -8
  8. package/dist/claude/hooks.js.map +1 -1
  9. package/dist/claude/shim-template.d.ts.map +1 -1
  10. package/dist/claude/shim-template.js +7 -2
  11. package/dist/claude/shim-template.js.map +1 -1
  12. package/dist/cli.js +18 -5
  13. package/dist/cli.js.map +1 -1
  14. package/dist/init-guard.d.ts +11 -0
  15. package/dist/init-guard.d.ts.map +1 -0
  16. package/dist/init-guard.js +21 -0
  17. package/dist/init-guard.js.map +1 -0
  18. package/dist/mcp/tools.d.ts.map +1 -1
  19. package/dist/mcp/tools.js +2 -1
  20. package/dist/mcp/tools.js.map +1 -1
  21. package/dist/notes/git-facts.d.ts +5 -1
  22. package/dist/notes/git-facts.d.ts.map +1 -1
  23. package/dist/notes/git-facts.js +6 -2
  24. package/dist/notes/git-facts.js.map +1 -1
  25. package/dist/notes/notes.d.ts +9 -1
  26. package/dist/notes/notes.d.ts.map +1 -1
  27. package/dist/notes/notes.js +38 -12
  28. package/dist/notes/notes.js.map +1 -1
  29. package/dist/notes/session-cost.d.ts +2 -0
  30. package/dist/notes/session-cost.d.ts.map +1 -1
  31. package/dist/notes/session-cost.js +8 -3
  32. package/dist/notes/session-cost.js.map +1 -1
  33. package/dist/search/grep-cli.d.ts +5 -2
  34. package/dist/search/grep-cli.d.ts.map +1 -1
  35. package/dist/search/grep-cli.js +11 -4
  36. package/dist/search/grep-cli.js.map +1 -1
  37. package/dist/search/ignored-code.d.ts +9 -0
  38. package/dist/search/ignored-code.d.ts.map +1 -0
  39. package/dist/search/ignored-code.js +73 -0
  40. package/dist/search/ignored-code.js.map +1 -0
  41. package/package.json +1 -1
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Code the map leaves out because git ignores it, named when a search comes up
3
+ * empty. A migration repo kept the old app's code in git-ignored dumps (they
4
+ * held credentials); `trail grep` found nothing, said all indexed code was
5
+ * searched, and the agent's own grep then found the file. After that the agent
6
+ * stopped trusting trail for the session.
7
+ */
8
+ import { spawnSync } from "node:child_process";
9
+ import { readdirSync } from "node:fs";
10
+ import { extname, join } from "node:path";
11
+ import { supportedExtensions } from "../graph/source-files.js";
12
+ import { shouldSkipDir } from "../ingest/fs.js";
13
+ /** Most entries one ignored folder's walk looks at before giving up on it. */
14
+ const WALK_CAP = 2000;
15
+ function holdsCode(dir, exts) {
16
+ const stack = [dir];
17
+ let seen = 0;
18
+ while (stack.length && seen < WALK_CAP) {
19
+ const at = stack.pop();
20
+ let entries;
21
+ try {
22
+ entries = readdirSync(at, { withFileTypes: true });
23
+ }
24
+ catch {
25
+ continue;
26
+ }
27
+ for (const e of entries) {
28
+ if (++seen > WALK_CAP)
29
+ break;
30
+ if (e.isDirectory()) {
31
+ if (!shouldSkipDir(e.name))
32
+ stack.push(join(at, e.name));
33
+ }
34
+ else if (exts.has(extname(e.name).toLowerCase()))
35
+ return true;
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+ /**
41
+ * Git-ignored folders and files under `root` holding code the map would
42
+ * otherwise index, repo-relative, folders ending in `/`. Dependency, build and
43
+ * dot folders are left out. Empty outside git, or when git can't say.
44
+ */
45
+ export function ignoredCode(root, limit = 20) {
46
+ const r = spawnSync("git", ["ls-files", "--others", "--ignored", "--exclude-standard", "--directory", "--no-empty-directory"], {
47
+ cwd: root,
48
+ encoding: "utf8",
49
+ timeout: 3000,
50
+ });
51
+ if (r.status !== 0 || typeof r.stdout !== "string")
52
+ return [];
53
+ const exts = new Set(supportedExtensions());
54
+ const out = [];
55
+ for (const entry of r.stdout.split("\n")) {
56
+ if (!entry)
57
+ continue;
58
+ if (entry.replace(/\/$/, "").split("/").some((p) => shouldSkipDir(p)))
59
+ continue;
60
+ const code = entry.endsWith("/") ? holdsCode(join(root, entry), exts) : exts.has(extname(entry).toLowerCase());
61
+ if (code)
62
+ out.push(entry);
63
+ if (out.length >= limit)
64
+ break;
65
+ }
66
+ return out;
67
+ }
68
+ /** `a/, b/ and 3 more`. */
69
+ export function ignoredLabel(paths, shown = 3) {
70
+ const head = paths.slice(0, shown).join(", ");
71
+ return paths.length > shown ? `${head} and ${paths.length - shown} more` : head;
72
+ }
73
+ //# sourceMappingURL=ignored-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignored-code.js","sourceRoot":"","sources":["../../src/search/ignored-code.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanonets/graft",
3
- "version": "0.23.0",
3
+ "version": "0.23.1",
4
4
  "description": "Build a repo's context graph as a folder of linked markdown files: a local, regenerable cache that every query keeps in sync with your code.",
5
5
  "keywords": [
6
6
  "ai",