agentmap 0.5.0 → 0.7.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.
Files changed (64) hide show
  1. package/dist/cli.js +12 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/extract/definitions.d.ts.map +1 -1
  4. package/dist/extract/definitions.js +195 -316
  5. package/dist/extract/definitions.js.map +1 -1
  6. package/dist/extract/definitions.test.js +749 -20
  7. package/dist/extract/definitions.test.js.map +1 -1
  8. package/dist/extract/markdown.d.ts.map +1 -1
  9. package/dist/extract/markdown.js +13 -1
  10. package/dist/extract/markdown.js.map +1 -1
  11. package/dist/extract/marker.d.ts.map +1 -1
  12. package/dist/extract/marker.js +87 -6
  13. package/dist/extract/marker.js.map +1 -1
  14. package/dist/extract/marker.test.js +142 -4
  15. package/dist/extract/marker.test.js.map +1 -1
  16. package/dist/index.d.ts +10 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +33 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/languages/cpp.d.ts +30 -0
  21. package/dist/languages/cpp.d.ts.map +1 -0
  22. package/dist/languages/cpp.js +116 -0
  23. package/dist/languages/cpp.js.map +1 -0
  24. package/dist/languages/go.d.ts +26 -0
  25. package/dist/languages/go.d.ts.map +1 -0
  26. package/dist/languages/go.js +65 -0
  27. package/dist/languages/go.js.map +1 -0
  28. package/dist/languages/index.d.ts +90 -0
  29. package/dist/languages/index.d.ts.map +1 -0
  30. package/dist/languages/index.js +209 -0
  31. package/dist/languages/index.js.map +1 -0
  32. package/dist/languages/javascript.d.ts +18 -0
  33. package/dist/languages/javascript.d.ts.map +1 -0
  34. package/dist/languages/javascript.js +23 -0
  35. package/dist/languages/javascript.js.map +1 -0
  36. package/dist/languages/python.d.ts +23 -0
  37. package/dist/languages/python.d.ts.map +1 -0
  38. package/dist/languages/python.js +35 -0
  39. package/dist/languages/python.js.map +1 -0
  40. package/dist/languages/rust.d.ts +26 -0
  41. package/dist/languages/rust.d.ts.map +1 -0
  42. package/dist/languages/rust.js +65 -0
  43. package/dist/languages/rust.js.map +1 -0
  44. package/dist/languages/typescript.d.ts +30 -0
  45. package/dist/languages/typescript.d.ts.map +1 -0
  46. package/dist/languages/typescript.js +68 -0
  47. package/dist/languages/typescript.js.map +1 -0
  48. package/dist/languages/zig.d.ts +38 -0
  49. package/dist/languages/zig.d.ts.map +1 -0
  50. package/dist/languages/zig.js +104 -0
  51. package/dist/languages/zig.js.map +1 -0
  52. package/dist/map/builder.d.ts.map +1 -1
  53. package/dist/map/builder.js +4 -1
  54. package/dist/map/builder.js.map +1 -1
  55. package/dist/parser/languages.d.ts +2 -4
  56. package/dist/parser/languages.d.ts.map +1 -1
  57. package/dist/parser/languages.js +4 -29
  58. package/dist/parser/languages.js.map +1 -1
  59. package/dist/scanner.d.ts.map +1 -1
  60. package/dist/scanner.js +27 -49
  61. package/dist/scanner.js.map +1 -1
  62. package/dist/types.d.ts +6 -2
  63. package/dist/types.d.ts.map +1 -1
  64. package/package.json +3 -2
package/dist/scanner.js CHANGED
@@ -1,6 +1,5 @@
1
1
  // Scan directory for files with header comments/docstrings.
2
2
  import { execSync } from 'child_process';
3
- import fg from 'fast-glob';
4
3
  import picomatch from 'picomatch';
5
4
  import { readFile } from 'fs/promises';
6
5
  import { join, normalize } from 'path';
@@ -8,6 +7,11 @@ import { extractMarker, extractMarkdownDescription } from './extract/marker.js';
8
7
  import { extractDefinitions } from './extract/definitions.js';
9
8
  import { getAllDiffData, applyDiffToDefinitions } from './extract/git-status.js';
10
9
  import { parseCode, detectLanguage, LANGUAGE_EXTENSIONS } from './parser/index.js';
10
+ /**
11
+ * Maximum number of files to process (safety limit)
12
+ * If exceeded, returns empty results to avoid scanning huge directories
13
+ */
14
+ const MAX_FILES = 5_000_000;
11
15
  /**
12
16
  * Supported file extensions (from LANGUAGE_EXTENSIONS)
13
17
  */
@@ -27,59 +31,28 @@ function isReadmeFile(filepath) {
27
31
  return filename === 'readme.md' || filename === 'readme';
28
32
  }
29
33
  /**
30
- * Check if running inside a git repository
31
- */
32
- function isGitRepo(dir) {
33
- try {
34
- execSync('git rev-parse --git-dir', { cwd: dir, stdio: 'ignore' });
35
- return true;
36
- }
37
- catch {
38
- return false;
39
- }
40
- }
41
- /**
42
- * Get files using git ls-files
43
- * Uses --cached --others to get tracked + untracked files
44
- * Uses --exclude-standard to respect .gitignore
34
+ * Get tracked files using git ls-files
35
+ * Only returns files that are tracked by git (committed or staged)
45
36
  */
46
37
  function getGitFiles(dir) {
47
38
  const maxBuffer = 1024 * 10000000;
48
39
  try {
49
- // Get tracked and untracked files (respecting .gitignore)
50
- const stdout = execSync('git ls-files --cached --others --exclude-standard', {
40
+ // Get only tracked files
41
+ const stdout = execSync('git ls-files', {
51
42
  cwd: dir,
52
43
  maxBuffer,
53
44
  encoding: 'utf8',
54
45
  });
55
- // Get deleted files to exclude
56
- const deleted = execSync('git ls-files --deleted', {
57
- cwd: dir,
58
- maxBuffer,
59
- encoding: 'utf8',
60
- });
61
- const paths = stdout.split(/\r?\n/).map(x => x.trim()).filter(Boolean);
62
- const deletedPaths = new Set(deleted.split(/\r?\n/).map(x => x.trim()).filter(Boolean));
63
- return paths
64
- .filter(p => !deletedPaths.has(p))
46
+ return stdout
47
+ .split(/\r?\n/)
48
+ .map(x => x.trim())
49
+ .filter(Boolean)
65
50
  .map(normalize);
66
51
  }
67
52
  catch {
68
53
  return [];
69
54
  }
70
55
  }
71
- /**
72
- * Get files using fast-glob (fallback when not in git repo)
73
- */
74
- async function getGlobFiles(dir) {
75
- const patterns = Object.keys(LANGUAGE_EXTENSIONS).map(ext => `**/*${ext}`);
76
- return fg(patterns, {
77
- cwd: dir,
78
- ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**'],
79
- absolute: false,
80
- dot: false,
81
- });
82
- }
83
56
  /**
84
57
  * Scan directory and process files with header comments
85
58
  */
@@ -87,26 +60,31 @@ export async function scanDirectory(options = {}) {
87
60
  const dir = options.dir ?? process.cwd();
88
61
  // Filter out null/undefined/empty patterns (cac can pass [null] when option not used)
89
62
  const ignorePatterns = (options.ignore ?? []).filter((p) => !!p);
63
+ const filterPatterns = (options.filter ?? []).filter((p) => !!p);
90
64
  const includeDiff = options.diff ?? false;
91
- // Get file list - prefer git, fallback to glob
92
- let files;
93
- if (isGitRepo(dir)) {
94
- files = getGitFiles(dir);
95
- }
96
- else {
97
- files = await getGlobFiles(dir);
98
- }
65
+ // Get file list from git (caller should ensure we're in a git repo)
66
+ let files = getGitFiles(dir);
99
67
  // Filter by supported extensions or README files
100
68
  files = files.filter(f => isSupportedFile(f) || isReadmeFile(f));
69
+ // Filter by filter patterns (only include matching files)
70
+ if (filterPatterns.length > 0) {
71
+ const isIncluded = picomatch(filterPatterns);
72
+ files = files.filter(f => isIncluded(f));
73
+ }
101
74
  // Filter by ignore patterns
102
75
  if (ignorePatterns.length > 0) {
103
76
  const isIgnored = picomatch(ignorePatterns);
104
77
  files = files.filter(f => !isIgnored(f));
105
78
  }
79
+ // Safety check: bail if too many files to avoid scanning huge directories
80
+ if (files.length > MAX_FILES) {
81
+ console.error(`Warning: Too many files (${files.length} > ${MAX_FILES}), skipping scan`);
82
+ return [];
83
+ }
106
84
  // Get git diff data if needed (isolated from main processing)
107
85
  let fileStats = null;
108
86
  let fileDiffs = null;
109
- if (includeDiff && isGitRepo(dir)) {
87
+ if (includeDiff) {
110
88
  try {
111
89
  const diffData = getAllDiffData(dir);
112
90
  fileStats = diffData.fileStats;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -2,7 +2,7 @@ import type Parser from 'web-tree-sitter';
2
2
  /**
3
3
  * Supported programming languages
4
4
  */
5
- export type Language = 'typescript' | 'javascript' | 'python' | 'rust' | 'go';
5
+ export type Language = 'typescript' | 'javascript' | 'python' | 'rust' | 'go' | 'zig' | 'cpp';
6
6
  /**
7
7
  * Symbol definitions mapping: name -> description string
8
8
  */
@@ -23,6 +23,7 @@ export interface FileEntry {
23
23
  description?: string;
24
24
  diff?: string;
25
25
  defs?: DefEntry;
26
+ exports?: DefEntry;
26
27
  }
27
28
  /**
28
29
  * Recursive map node - either a directory (with children) or a file entry
@@ -40,7 +41,7 @@ export interface MarkerResult {
40
41
  /**
41
42
  * Types of definitions we extract
42
43
  */
43
- export type DefinitionType = 'function' | 'class' | 'type' | 'interface' | 'const' | 'enum';
44
+ export type DefinitionType = 'function' | 'class' | 'struct' | 'union' | 'trait' | 'type' | 'interface' | 'const' | 'enum';
44
45
  /**
45
46
  * Git status for a definition
46
47
  */
@@ -62,6 +63,7 @@ export interface Definition {
62
63
  endLine: number;
63
64
  type: DefinitionType;
64
65
  exported: boolean;
66
+ extern?: boolean;
65
67
  diff?: DefinitionDiff;
66
68
  }
67
69
  /**
@@ -81,6 +83,8 @@ export interface GenerateOptions {
81
83
  dir?: string;
82
84
  /** Glob patterns to ignore */
83
85
  ignore?: string[];
86
+ /** Glob patterns to filter - only include matching files */
87
+ filter?: string[];
84
88
  /** Include git diff status for definitions */
85
89
  diff?: boolean;
86
90
  /** Git ref to diff against (default: HEAD for unstaged, --cached for staged) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,IAAI,CAAA;AAER;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,MAAM,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,cAAc,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;AAC1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,IAAI,GACJ,KAAK,GACL,KAAK,CAAA;AAET;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,MAAM,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,cAAc,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;AAC1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentmap",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Generate a YAML map of your codebase for AI agent context",
5
5
  "type": "module",
6
6
  "repository": {
@@ -34,11 +34,12 @@
34
34
  "prepublishOnly": "bun run build"
35
35
  },
36
36
  "dependencies": {
37
+ "@tree-sitter-grammars/tree-sitter-zig": "^1.1.2",
37
38
  "cac": "^6.7.14",
38
- "fast-glob": "^3.3.2",
39
39
  "js-yaml": "^4.1.0",
40
40
  "marked": "^17.0.1",
41
41
  "picomatch": "^4.0.2",
42
+ "tree-sitter-cpp": "^0.23.4",
42
43
  "tree-sitter-go": "^0.23.4",
43
44
  "tree-sitter-javascript": "^0.23.1",
44
45
  "tree-sitter-python": "^0.23.6",