@colbymchenry/codegraph-darwin-x64 0.9.4 → 0.9.6

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 (199) hide show
  1. package/lib/dist/bin/codegraph.js +12 -0
  2. package/lib/dist/bin/codegraph.js.map +1 -1
  3. package/lib/dist/db/queries.d.ts +1 -0
  4. package/lib/dist/db/queries.d.ts.map +1 -1
  5. package/lib/dist/db/queries.js +31 -3
  6. package/lib/dist/db/queries.js.map +1 -1
  7. package/lib/dist/extraction/grammars.d.ts +1 -1
  8. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  9. package/lib/dist/extraction/grammars.js +29 -1
  10. package/lib/dist/extraction/grammars.js.map +1 -1
  11. package/lib/dist/extraction/index.d.ts +15 -2
  12. package/lib/dist/extraction/index.d.ts.map +1 -1
  13. package/lib/dist/extraction/index.js +170 -78
  14. package/lib/dist/extraction/index.js.map +1 -1
  15. package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  16. package/lib/dist/extraction/languages/c-cpp.js +45 -0
  17. package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
  18. package/lib/dist/extraction/languages/csharp.d.ts.map +1 -1
  19. package/lib/dist/extraction/languages/csharp.js +2 -1
  20. package/lib/dist/extraction/languages/csharp.js.map +1 -1
  21. package/lib/dist/extraction/languages/go.d.ts.map +1 -1
  22. package/lib/dist/extraction/languages/go.js +12 -0
  23. package/lib/dist/extraction/languages/go.js.map +1 -1
  24. package/lib/dist/extraction/languages/index.d.ts.map +1 -1
  25. package/lib/dist/extraction/languages/index.js +2 -0
  26. package/lib/dist/extraction/languages/index.js.map +1 -1
  27. package/lib/dist/extraction/languages/objc.d.ts +3 -0
  28. package/lib/dist/extraction/languages/objc.d.ts.map +1 -0
  29. package/lib/dist/extraction/languages/objc.js +133 -0
  30. package/lib/dist/extraction/languages/objc.js.map +1 -0
  31. package/lib/dist/extraction/mybatis-extractor.d.ts +48 -0
  32. package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  33. package/lib/dist/extraction/mybatis-extractor.js +198 -0
  34. package/lib/dist/extraction/mybatis-extractor.js.map +1 -0
  35. package/lib/dist/extraction/tree-sitter-types.d.ts +4 -0
  36. package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  37. package/lib/dist/extraction/tree-sitter.d.ts +33 -0
  38. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  39. package/lib/dist/extraction/tree-sitter.js +351 -14
  40. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  41. package/lib/dist/index.d.ts +21 -2
  42. package/lib/dist/index.d.ts.map +1 -1
  43. package/lib/dist/index.js +53 -1
  44. package/lib/dist/index.js.map +1 -1
  45. package/lib/dist/installer/index.d.ts +1 -1
  46. package/lib/dist/installer/index.js +3 -3
  47. package/lib/dist/installer/index.js.map +1 -1
  48. package/lib/dist/installer/instructions-template.d.ts +2 -2
  49. package/lib/dist/installer/instructions-template.d.ts.map +1 -1
  50. package/lib/dist/installer/instructions-template.js +1 -1
  51. package/lib/dist/installer/targets/antigravity.d.ts +57 -0
  52. package/lib/dist/installer/targets/antigravity.d.ts.map +1 -0
  53. package/lib/dist/installer/targets/antigravity.js +307 -0
  54. package/lib/dist/installer/targets/antigravity.js.map +1 -0
  55. package/lib/dist/installer/targets/gemini.d.ts +26 -0
  56. package/lib/dist/installer/targets/gemini.d.ts.map +1 -0
  57. package/lib/dist/installer/targets/gemini.js +165 -0
  58. package/lib/dist/installer/targets/gemini.js.map +1 -0
  59. package/lib/dist/installer/targets/hermes.d.ts.map +1 -1
  60. package/lib/dist/installer/targets/hermes.js +57 -3
  61. package/lib/dist/installer/targets/hermes.js.map +1 -1
  62. package/lib/dist/installer/targets/kiro.d.ts +27 -0
  63. package/lib/dist/installer/targets/kiro.d.ts.map +1 -0
  64. package/lib/dist/installer/targets/kiro.js +196 -0
  65. package/lib/dist/installer/targets/kiro.js.map +1 -0
  66. package/lib/dist/installer/targets/registry.d.ts.map +1 -1
  67. package/lib/dist/installer/targets/registry.js +6 -0
  68. package/lib/dist/installer/targets/registry.js.map +1 -1
  69. package/lib/dist/installer/targets/types.d.ts +1 -1
  70. package/lib/dist/installer/targets/types.d.ts.map +1 -1
  71. package/lib/dist/mcp/daemon-paths.d.ts +46 -0
  72. package/lib/dist/mcp/daemon-paths.d.ts.map +1 -0
  73. package/lib/dist/mcp/daemon-paths.js +125 -0
  74. package/lib/dist/mcp/daemon-paths.js.map +1 -0
  75. package/lib/dist/mcp/daemon.d.ts +161 -0
  76. package/lib/dist/mcp/daemon.d.ts.map +1 -0
  77. package/lib/dist/mcp/daemon.js +403 -0
  78. package/lib/dist/mcp/daemon.js.map +1 -0
  79. package/lib/dist/mcp/engine.d.ts +100 -0
  80. package/lib/dist/mcp/engine.d.ts.map +1 -0
  81. package/lib/dist/mcp/engine.js +291 -0
  82. package/lib/dist/mcp/engine.js.map +1 -0
  83. package/lib/dist/mcp/index.d.ts +64 -53
  84. package/lib/dist/mcp/index.d.ts.map +1 -1
  85. package/lib/dist/mcp/index.js +307 -387
  86. package/lib/dist/mcp/index.js.map +1 -1
  87. package/lib/dist/mcp/proxy.d.ts +46 -0
  88. package/lib/dist/mcp/proxy.d.ts.map +1 -0
  89. package/lib/dist/mcp/proxy.js +276 -0
  90. package/lib/dist/mcp/proxy.js.map +1 -0
  91. package/lib/dist/mcp/server-instructions.d.ts +1 -1
  92. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  93. package/lib/dist/mcp/server-instructions.js +1 -1
  94. package/lib/dist/mcp/session.d.ts +67 -0
  95. package/lib/dist/mcp/session.d.ts.map +1 -0
  96. package/lib/dist/mcp/session.js +276 -0
  97. package/lib/dist/mcp/session.js.map +1 -0
  98. package/lib/dist/mcp/tools.d.ts +49 -0
  99. package/lib/dist/mcp/tools.d.ts.map +1 -1
  100. package/lib/dist/mcp/tools.js +253 -17
  101. package/lib/dist/mcp/tools.js.map +1 -1
  102. package/lib/dist/mcp/transport.d.ts +111 -29
  103. package/lib/dist/mcp/transport.d.ts.map +1 -1
  104. package/lib/dist/mcp/transport.js +181 -71
  105. package/lib/dist/mcp/transport.js.map +1 -1
  106. package/lib/dist/mcp/version.d.ts +19 -0
  107. package/lib/dist/mcp/version.d.ts.map +1 -0
  108. package/lib/dist/mcp/version.js +71 -0
  109. package/lib/dist/mcp/version.js.map +1 -0
  110. package/lib/dist/resolution/callback-synthesizer.d.ts +3 -2
  111. package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  112. package/lib/dist/resolution/callback-synthesizer.js +351 -3
  113. package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
  114. package/lib/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  115. package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  116. package/lib/dist/resolution/frameworks/expo-modules.js +143 -0
  117. package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -0
  118. package/lib/dist/resolution/frameworks/fabric.d.ts +3 -0
  119. package/lib/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  120. package/lib/dist/resolution/frameworks/fabric.js +354 -0
  121. package/lib/dist/resolution/frameworks/fabric.js.map +1 -0
  122. package/lib/dist/resolution/frameworks/index.d.ts +4 -0
  123. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  124. package/lib/dist/resolution/frameworks/index.js +21 -1
  125. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  126. package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
  127. package/lib/dist/resolution/frameworks/java.js +270 -1
  128. package/lib/dist/resolution/frameworks/java.js.map +1 -1
  129. package/lib/dist/resolution/frameworks/nestjs.d.ts.map +1 -1
  130. package/lib/dist/resolution/frameworks/nestjs.js +324 -0
  131. package/lib/dist/resolution/frameworks/nestjs.js.map +1 -1
  132. package/lib/dist/resolution/frameworks/react-native.d.ts +3 -0
  133. package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  134. package/lib/dist/resolution/frameworks/react-native.js +360 -0
  135. package/lib/dist/resolution/frameworks/react-native.js.map +1 -0
  136. package/lib/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  137. package/lib/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  138. package/lib/dist/resolution/frameworks/swift-objc.js +252 -0
  139. package/lib/dist/resolution/frameworks/swift-objc.js.map +1 -0
  140. package/lib/dist/resolution/go-module.d.ts +26 -0
  141. package/lib/dist/resolution/go-module.d.ts.map +1 -0
  142. package/lib/dist/resolution/go-module.js +78 -0
  143. package/lib/dist/resolution/go-module.js.map +1 -0
  144. package/lib/dist/resolution/import-resolver.d.ts +18 -0
  145. package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
  146. package/lib/dist/resolution/import-resolver.js +538 -4
  147. package/lib/dist/resolution/import-resolver.js.map +1 -1
  148. package/lib/dist/resolution/index.d.ts +10 -0
  149. package/lib/dist/resolution/index.d.ts.map +1 -1
  150. package/lib/dist/resolution/index.js +102 -0
  151. package/lib/dist/resolution/index.js.map +1 -1
  152. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  153. package/lib/dist/resolution/name-matcher.js +212 -0
  154. package/lib/dist/resolution/name-matcher.js.map +1 -1
  155. package/lib/dist/resolution/swift-objc-bridge.d.ts +134 -0
  156. package/lib/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  157. package/lib/dist/resolution/swift-objc-bridge.js +256 -0
  158. package/lib/dist/resolution/swift-objc-bridge.js.map +1 -0
  159. package/lib/dist/resolution/types.d.ts +29 -0
  160. package/lib/dist/resolution/types.d.ts.map +1 -1
  161. package/lib/dist/sync/index.d.ts +3 -1
  162. package/lib/dist/sync/index.d.ts.map +1 -1
  163. package/lib/dist/sync/index.js +8 -1
  164. package/lib/dist/sync/index.js.map +1 -1
  165. package/lib/dist/sync/watcher.d.ts +119 -7
  166. package/lib/dist/sync/watcher.d.ts.map +1 -1
  167. package/lib/dist/sync/watcher.js +243 -37
  168. package/lib/dist/sync/watcher.js.map +1 -1
  169. package/lib/dist/sync/worktree.d.ts +54 -0
  170. package/lib/dist/sync/worktree.d.ts.map +1 -0
  171. package/lib/dist/sync/worktree.js +136 -0
  172. package/lib/dist/sync/worktree.js.map +1 -0
  173. package/lib/dist/types.d.ts +1 -1
  174. package/lib/dist/types.d.ts.map +1 -1
  175. package/lib/dist/types.js +3 -0
  176. package/lib/dist/types.js.map +1 -1
  177. package/lib/node_modules/.package-lock.json +29 -1
  178. package/lib/node_modules/chokidar/LICENSE +21 -0
  179. package/lib/node_modules/chokidar/README.md +305 -0
  180. package/lib/node_modules/chokidar/esm/handler.d.ts +90 -0
  181. package/lib/node_modules/chokidar/esm/handler.js +629 -0
  182. package/lib/node_modules/chokidar/esm/index.d.ts +215 -0
  183. package/lib/node_modules/chokidar/esm/index.js +798 -0
  184. package/lib/node_modules/chokidar/esm/package.json +1 -0
  185. package/lib/node_modules/chokidar/handler.d.ts +90 -0
  186. package/lib/node_modules/chokidar/handler.js +635 -0
  187. package/lib/node_modules/chokidar/index.d.ts +215 -0
  188. package/lib/node_modules/chokidar/index.js +804 -0
  189. package/lib/node_modules/chokidar/package.json +69 -0
  190. package/lib/node_modules/readdirp/LICENSE +21 -0
  191. package/lib/node_modules/readdirp/README.md +120 -0
  192. package/lib/node_modules/readdirp/esm/index.d.ts +108 -0
  193. package/lib/node_modules/readdirp/esm/index.js +257 -0
  194. package/lib/node_modules/readdirp/esm/package.json +1 -0
  195. package/lib/node_modules/readdirp/index.d.ts +108 -0
  196. package/lib/node_modules/readdirp/index.js +263 -0
  197. package/lib/node_modules/readdirp/package.json +70 -0
  198. package/lib/package.json +2 -1
  199. package/package.json +1 -1
@@ -83,6 +83,7 @@ const WASM_GRAMMAR_FILES = {
83
83
  scala: 'tree-sitter-scala.wasm',
84
84
  lua: 'tree-sitter-lua.wasm',
85
85
  luau: 'tree-sitter-luau.wasm',
86
+ objc: 'tree-sitter-objc.wasm',
86
87
  };
87
88
  /**
88
89
  * File extension to Language mapping
@@ -137,6 +138,15 @@ exports.EXTENSION_MAP = {
137
138
  '.sc': 'scala',
138
139
  '.lua': 'lua',
139
140
  '.luau': 'luau',
141
+ '.m': 'objc',
142
+ '.mm': 'objc',
143
+ // XML: file-level tracking; the MyBatis extractor matches `<mapper namespace="...">`
144
+ // shape and emits SQL-statement nodes (other XML returns empty).
145
+ '.xml': 'xml',
146
+ // Spring config: `application.properties` / `application-*.properties`. Same
147
+ // shape as the `.yml` variants — the YAML/properties extractor emits one node
148
+ // per leaf key, and the Spring resolver links `@Value("${k}")` references.
149
+ '.properties': 'properties',
140
150
  };
141
151
  /**
142
152
  * Whether a file is one CodeGraph can parse, based purely on its extension.
@@ -256,10 +266,12 @@ function detectLanguage(filePath, source) {
256
266
  return 'yaml';
257
267
  const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
258
268
  const lang = exports.EXTENSION_MAP[ext] || 'unknown';
259
- // .h files could be C or C++ — check source content for C++ features
269
+ // .h files could be C, C++, or Objective-C — check source content
260
270
  if (lang === 'c' && ext === '.h' && source) {
261
271
  if (looksLikeCpp(source))
262
272
  return 'cpp';
273
+ if (looksLikeObjc(source))
274
+ return 'objc';
263
275
  }
264
276
  return lang;
265
277
  }
@@ -271,6 +283,13 @@ function looksLikeCpp(source) {
271
283
  const sample = source.substring(0, 8192);
272
284
  return /\bnamespace\b|\bclass\s+\w+\s*[:{]|\btemplate\s*<|\b(?:public|private|protected)\s*:|\bvirtual\b|\busing\s+(?:namespace\b|\w+\s*=)/.test(sample);
273
285
  }
286
+ /**
287
+ * Heuristic: does a .h file contain Objective-C constructs?
288
+ */
289
+ function looksLikeObjc(source) {
290
+ const sample = source.substring(0, 8192);
291
+ return /@(?:interface|implementation|protocol|synthesize)\b/.test(sample);
292
+ }
274
293
  /**
275
294
  * Check if a language is supported (has a grammar defined).
276
295
  * Returns true if the grammar exists, even if not yet loaded.
@@ -286,6 +305,10 @@ function isLanguageSupported(language) {
286
305
  return true; // file-level tracking only; Drupal routing extraction via framework resolver
287
306
  if (language === 'twig')
288
307
  return true; // file-level tracking only
308
+ if (language === 'xml')
309
+ return true; // MyBatis mapper extractor
310
+ if (language === 'properties')
311
+ return true; // Spring config keys
289
312
  if (language === 'unknown')
290
313
  return false;
291
314
  return language in WASM_GRAMMAR_FILES;
@@ -298,6 +321,8 @@ function isGrammarLoaded(language) {
298
321
  return true;
299
322
  if (language === 'yaml' || language === 'twig')
300
323
  return true; // no WASM grammar needed
324
+ if (language === 'xml' || language === 'properties')
325
+ return true; // no WASM grammar needed
301
326
  return languageCache.has(language);
302
327
  }
303
328
  /**
@@ -370,8 +395,11 @@ function getLanguageDisplayName(language) {
370
395
  scala: 'Scala',
371
396
  lua: 'Lua',
372
397
  luau: 'Luau',
398
+ objc: 'Objective-C',
373
399
  yaml: 'YAML',
374
400
  twig: 'Twig',
401
+ xml: 'XML',
402
+ properties: 'Java properties',
375
403
  unknown: 'Unknown',
376
404
  };
377
405
  return names[language] || language;
@@ -1 +1 @@
1
- {"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  import * as fs from 'fs';
7
7
  import { ExtractionResult, ExtractionError } from '../types';
8
8
  import { QueryBuilder } from '../db/queries';
9
+ import { Ignore } from 'ignore';
9
10
  /**
10
11
  * Progress callback for indexing operations
11
12
  */
@@ -44,6 +45,14 @@ export interface SyncResult {
44
45
  * Calculate SHA256 hash of file contents
45
46
  */
46
47
  export declare function hashContent(content: string): string;
48
+ /**
49
+ * An `ignore` matcher seeded with the built-in defaults, merged with the project's
50
+ * root .gitignore so a negation there (e.g. `!vendor/`) overrides a default. Shared
51
+ * by both enumeration paths so behavior is identical with or without git — and so
52
+ * the defaults apply to tracked files too (committing a dependency dir doesn't make
53
+ * it project code; the explicit `.gitignore` negation is the only opt-in).
54
+ */
55
+ export declare function buildDefaultIgnore(rootDir: string): Ignore;
47
56
  /**
48
57
  * Recursively scan a directory for source files.
49
58
  *
@@ -106,8 +115,12 @@ export declare class ExtractionOrchestrator {
106
115
  */
107
116
  private storeExtractionResult;
108
117
  /**
109
- * Sync with current file state.
110
- * Uses git status as a fast path when available, falling back to full scan.
118
+ * Sync the index with the current file state.
119
+ *
120
+ * Change detection is filesystem-based, never git: a (size, mtime) stat
121
+ * pre-filter skips unchanged files, then a content-hash compare confirms real
122
+ * changes. This works in non-git projects and catches committed changes from
123
+ * `git pull`/`checkout`/`merge`/`rebase` that `git status` cannot see.
111
124
  */
112
125
  sync(onProgress?: (progress: IndexProgress) => void): Promise<SyncResult>;
113
126
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extraction/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extraction/index.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
44
  exports.loadAllGrammars = exports.loadGrammarsForLanguages = exports.initGrammars = exports.getSupportedLanguages = exports.isGrammarLoaded = exports.isLanguageSupported = exports.isSourceFile = exports.detectLanguage = exports.extractFromSource = exports.ExtractionOrchestrator = void 0;
45
45
  exports.hashContent = hashContent;
46
+ exports.buildDefaultIgnore = buildDefaultIgnore;
46
47
  exports.scanDirectory = scanDirectory;
47
48
  exports.scanDirectoryAsync = scanDirectoryAsync;
48
49
  const fs = __importStar(require("fs"));
@@ -88,6 +89,83 @@ function hashContent(content) {
88
89
  * symbols. 1 MB covers essentially all hand-written source.
89
90
  */
90
91
  const MAX_FILE_SIZE = 1024 * 1024;
92
+ /**
93
+ * Directory names that are dependency, build, cache, or tooling output across the
94
+ * languages/frameworks CodeGraph supports — curated from the canonical
95
+ * github/gitignore templates. Excluded by default so the graph reflects your code,
96
+ * not third-party noise, without requiring a `.gitignore` (issue #407). The
97
+ * exclusion applies uniformly (git or not, tracked or not); the only opt-in is an
98
+ * explicit `.gitignore` negation (e.g. `!vendor/`). First-party-prone or generic
99
+ * names (`packages`, `lib`, `app`, `bin`, `src`, `deps`, `env`, `tmp`, `storage`,
100
+ * `Library`) are deliberately NOT listed, to avoid ever hiding real source.
101
+ *
102
+ * Only dirs that actually contain *indexable source* (or are enormous) earn a slot
103
+ * — IDE/state dirs like `.idea`/`.vs` are omitted because CodeGraph indexes only
104
+ * recognized source extensions, so they produce no symbols regardless.
105
+ */
106
+ const DEFAULT_IGNORE_DIRS = new Set([
107
+ // JS / TS — dependency directories
108
+ 'node_modules', 'bower_components', 'jspm_packages', 'web_modules',
109
+ '.yarn', '.pnpm-store',
110
+ // JS / TS — framework & bundler build / cache / deploy output
111
+ '.next', '.nuxt', '.svelte-kit', '.turbo', '.vite', '.parcel-cache', '.angular',
112
+ '.docusaurus', 'storybook-static', '.vinxi', '.nitro', 'out-tsc',
113
+ '.vercel', '.netlify', '.wrangler',
114
+ // Build output (common across ecosystems)
115
+ 'dist', 'build', 'out', '.output',
116
+ // Test / coverage
117
+ 'coverage', '.nyc_output',
118
+ // Python
119
+ '__pycache__', '__pypackages__', '.venv', 'venv', '.pixi', '.pdm-build',
120
+ '.mypy_cache', '.pytest_cache', '.ruff_cache', '.tox', '.nox', '.hypothesis',
121
+ '.ipynb_checkpoints', '.eggs',
122
+ // Rust / JVM (Maven, Gradle, Scala)
123
+ 'target', '.gradle',
124
+ // .NET
125
+ 'obj',
126
+ // Vendored deps (Go, PHP/Composer, Ruby/Bundler)
127
+ 'vendor',
128
+ // Swift / iOS
129
+ '.build', 'Pods', 'Carthage', 'DerivedData', '.swiftpm',
130
+ // Dart / Flutter
131
+ '.dart_tool', '.pub-cache',
132
+ // Native (Android NDK, C/C++ deps)
133
+ '.cxx', '.externalNativeBuild', 'vcpkg_installed',
134
+ // Scala tooling
135
+ '.bloop', '.metals',
136
+ // Lua / Luau (LuaRocks)
137
+ 'lua_modules', '.luarocks',
138
+ // Delphi / RAD Studio IDE backups (duplicate .pas source — would double-count)
139
+ '__history', '__recovery',
140
+ // Generic cache
141
+ '.cache',
142
+ ]);
143
+ /** Gitignore-style patterns for the `ignore` matcher: the dirs above plus a few globs. */
144
+ const DEFAULT_IGNORE_PATTERNS = [
145
+ ...Array.from(DEFAULT_IGNORE_DIRS, (d) => `${d}/`),
146
+ '*.egg-info/', // Python packaging metadata
147
+ 'cmake-build-*/', // CLion / CMake build trees
148
+ 'bazel-*/', // Bazel output symlink trees
149
+ ];
150
+ /**
151
+ * An `ignore` matcher seeded with the built-in defaults, merged with the project's
152
+ * root .gitignore so a negation there (e.g. `!vendor/`) overrides a default. Shared
153
+ * by both enumeration paths so behavior is identical with or without git — and so
154
+ * the defaults apply to tracked files too (committing a dependency dir doesn't make
155
+ * it project code; the explicit `.gitignore` negation is the only opt-in).
156
+ */
157
+ function buildDefaultIgnore(rootDir) {
158
+ const ig = (0, ignore_1.default)().add(DEFAULT_IGNORE_PATTERNS);
159
+ try {
160
+ const rootGitignore = path.join(rootDir, '.gitignore');
161
+ if (fs.existsSync(rootGitignore))
162
+ ig.add(fs.readFileSync(rootGitignore, 'utf-8'));
163
+ }
164
+ catch {
165
+ // Unreadable root .gitignore — the built-in defaults still apply.
166
+ }
167
+ return ig;
168
+ }
91
169
  /**
92
170
  * Collect git-visible files (tracked + untracked, .gitignore-respected) from the
93
171
  * git repository rooted at `repoDir`, adding each to `files` with `prefix`
@@ -161,7 +239,11 @@ function getGitVisibleFiles(rootDir) {
161
239
  }
162
240
  const files = new Set();
163
241
  collectGitFiles(rootDir, '', files);
164
- return files;
242
+ // Apply built-in default ignores uniformly — to tracked files too, since
243
+ // committing a dependency/build dir doesn't make it project code. A
244
+ // `.gitignore` negation (e.g. `!vendor/`) is the explicit opt-in. (issue #407)
245
+ const ig = buildDefaultIgnore(rootDir);
246
+ return new Set([...files].filter((f) => !ig.ignores(f)));
165
247
  }
166
248
  catch {
167
249
  return null;
@@ -297,7 +379,9 @@ function scanDirectoryWalk(rootDir, onProgress) {
297
379
  }
298
380
  visitedDirs.add(realDir);
299
381
  // This directory's own .gitignore (if present) applies to everything below it.
300
- const own = loadIgnore(dir);
382
+ // The root's .gitignore is already merged into the seeded base matcher (so a
383
+ // negation there can override a built-in default), so skip it here.
384
+ const own = dir === rootDir ? null : loadIgnore(dir);
301
385
  const active = own ? [...matchers, own] : matchers;
302
386
  let entries;
303
387
  try {
@@ -349,7 +433,9 @@ function scanDirectoryWalk(rootDir, onProgress) {
349
433
  }
350
434
  }
351
435
  }
352
- walk(rootDir, []);
436
+ // Seed a base matcher with the built-in default ignores (merged with the root
437
+ // .gitignore so a negation can override). Nested .gitignores still layer per-dir.
438
+ walk(rootDir, [{ dir: rootDir, ig: buildDefaultIgnore(rootDir) }]);
353
439
  return files;
354
440
  }
355
441
  /**
@@ -408,6 +494,24 @@ class ExtractionOrchestrator {
408
494
  return null;
409
495
  }
410
496
  },
497
+ // Monorepo support — needed by framework detect()s that probe
498
+ // subpackage manifests (e.g. fabric-view looking at
499
+ // packages/<sub>/package.json when the root manifest is just a
500
+ // workspace declaration). Matches the resolver-context shape.
501
+ listDirectories: (relativePath) => {
502
+ const target = relativePath === '.' || relativePath === ''
503
+ ? rootDir
504
+ : path.join(rootDir, relativePath);
505
+ try {
506
+ return fs
507
+ .readdirSync(target, { withFileTypes: true })
508
+ .filter((entry) => entry.isDirectory())
509
+ .map((entry) => entry.name);
510
+ }
511
+ catch {
512
+ return [];
513
+ }
514
+ },
411
515
  };
412
516
  }
413
517
  /**
@@ -1053,8 +1157,12 @@ class ExtractionOrchestrator {
1053
1157
  this.queries.upsertFile(fileRecord);
1054
1158
  }
1055
1159
  /**
1056
- * Sync with current file state.
1057
- * Uses git status as a fast path when available, falling back to full scan.
1160
+ * Sync the index with the current file state.
1161
+ *
1162
+ * Change detection is filesystem-based, never git: a (size, mtime) stat
1163
+ * pre-filter skips unchanged files, then a content-hash compare confirms real
1164
+ * changes. This works in non-git projects and catches committed changes from
1165
+ * `git pull`/`checkout`/`merge`/`rebase` that `git status` cannot see.
1058
1166
  */
1059
1167
  async sync(onProgress) {
1060
1168
  await (0, grammars_1.initGrammars)(); // Initialize WASM runtime (grammars loaded lazily below)
@@ -1071,88 +1179,72 @@ class ExtractionOrchestrator {
1071
1179
  total: 0,
1072
1180
  });
1073
1181
  const filesToIndex = [];
1074
- const gitChanges = getGitChangedFiles(this.rootDir);
1075
- if (gitChanges) {
1076
- // === Git fast path ===
1077
- // Only inspect the files git reports as changed instead of scanning everything.
1078
- filesChecked = gitChanges.modified.length + gitChanges.added.length + gitChanges.deleted.length;
1079
- // Handle deleted files
1080
- for (const filePath of gitChanges.deleted) {
1081
- const tracked = this.queries.getFileByPath(filePath);
1082
- if (tracked) {
1083
- this.queries.deleteFile(filePath);
1084
- filesRemoved++;
1085
- }
1182
+ // === Filesystem reconcile (git-independent) ===
1183
+ // The source of truth for "what changed" is the filesystem vs the indexed
1184
+ // state never git. We enumerate the current source files and reconcile
1185
+ // each against the DB. A cheap (size, mtime) stat pre-filter skips unchanged
1186
+ // files without reading or hashing them, so the expensive read+hash+parse
1187
+ // only runs for files that actually changed. This catches edits/adds/deletes
1188
+ // whether or not the project uses git, and crucially also catches committed
1189
+ // changes from `git pull`/`checkout`/`merge`/`rebase` — which `git status`
1190
+ // cannot see, because the working tree is clean afterward.
1191
+ const currentFiles = scanDirectory(this.rootDir);
1192
+ filesChecked = currentFiles.length;
1193
+ const currentSet = new Set(currentFiles);
1194
+ const trackedFiles = this.queries.getAllFiles();
1195
+ const trackedMap = new Map();
1196
+ for (const f of trackedFiles) {
1197
+ trackedMap.set(f.path, f);
1198
+ }
1199
+ // Removals: tracked in the DB but no longer a present source file. Check the
1200
+ // filesystem directly — `scanDirectory` (via `git ls-files`) still lists a
1201
+ // file deleted from disk but not yet staged, so set membership alone misses it.
1202
+ for (const tracked of trackedFiles) {
1203
+ if (!currentSet.has(tracked.path) || !fs.existsSync(path.join(this.rootDir, tracked.path))) {
1204
+ this.queries.deleteFile(tracked.path);
1205
+ filesRemoved++;
1086
1206
  }
1087
- // Handle modified + added files — read + hash only these. Untracked
1088
- // (`??`) files stay untracked in git even after we index them, so they
1089
- // can't be trusted as "new": re-hash and compare against the DB exactly
1090
- // like modified files. Otherwise every sync re-indexes them and status
1091
- // reports them as pending forever. (See issue #206.)
1092
- for (const filePath of [...gitChanges.modified, ...gitChanges.added]) {
1093
- const fullPath = path.join(this.rootDir, filePath);
1094
- let content;
1207
+ }
1208
+ // Adds / modifications.
1209
+ for (const filePath of currentFiles) {
1210
+ const fullPath = path.join(this.rootDir, filePath);
1211
+ const tracked = trackedMap.get(filePath);
1212
+ // Cheap pre-filter: an already-indexed file whose size AND mtime both match
1213
+ // the DB is unchanged — skip it without reading or hashing. (A content
1214
+ // change that preserves both exactly is the blind spot every mtime-based
1215
+ // incremental tool accepts; `index --force` is the escape hatch. Git bumps
1216
+ // mtime on every file it writes during checkout/merge, so pulls are caught.)
1217
+ if (tracked) {
1095
1218
  try {
1096
- content = fs.readFileSync(fullPath, 'utf-8');
1219
+ const stat = fs.statSync(fullPath);
1220
+ if (stat.size === tracked.size && Math.floor(stat.mtimeMs) === Math.floor(tracked.modifiedAt)) {
1221
+ continue;
1222
+ }
1097
1223
  }
1098
1224
  catch (error) {
1099
- (0, errors_1.logDebug)('Skipping unreadable file during sync', { filePath, error: String(error) });
1225
+ (0, errors_1.logDebug)('Skipping unstattable file during sync', { filePath, error: String(error) });
1100
1226
  continue;
1101
1227
  }
1102
- const contentHash = hashContent(content);
1103
- const tracked = this.queries.getFileByPath(filePath);
1104
- if (!tracked) {
1105
- filesToIndex.push(filePath);
1106
- changedFilePaths.push(filePath);
1107
- filesAdded++;
1108
- }
1109
- else if (tracked.contentHash !== contentHash) {
1110
- filesToIndex.push(filePath);
1111
- changedFilePaths.push(filePath);
1112
- filesModified++;
1113
- }
1114
1228
  }
1115
- }
1116
- else {
1117
- // === Fallback: full scan (non-git project or git failure) ===
1118
- const currentFiles = new Set(scanDirectory(this.rootDir));
1119
- filesChecked = currentFiles.size;
1120
- // Build Map for O(1) lookups instead of .find() per file
1121
- const trackedFiles = this.queries.getAllFiles();
1122
- const trackedMap = new Map();
1123
- for (const f of trackedFiles) {
1124
- trackedMap.set(f.path, f);
1229
+ // New, or size/mtime changed — read + hash to confirm a real content change.
1230
+ let content;
1231
+ try {
1232
+ content = fs.readFileSync(fullPath, 'utf-8');
1125
1233
  }
1126
- // Find files to remove (in DB but not on disk)
1127
- for (const tracked of trackedFiles) {
1128
- if (!currentFiles.has(tracked.path)) {
1129
- this.queries.deleteFile(tracked.path);
1130
- filesRemoved++;
1131
- }
1234
+ catch (error) {
1235
+ (0, errors_1.logDebug)('Skipping unreadable file during sync', { filePath, error: String(error) });
1236
+ continue;
1132
1237
  }
1133
- // Find files to add or update
1134
- for (const filePath of currentFiles) {
1135
- const fullPath = path.join(this.rootDir, filePath);
1136
- let content;
1137
- try {
1138
- content = fs.readFileSync(fullPath, 'utf-8');
1139
- }
1140
- catch (error) {
1141
- (0, errors_1.logDebug)('Skipping unreadable file during sync', { filePath, error: String(error) });
1142
- continue;
1143
- }
1144
- const contentHash = hashContent(content);
1145
- const tracked = trackedMap.get(filePath);
1146
- if (!tracked) {
1147
- filesToIndex.push(filePath);
1148
- changedFilePaths.push(filePath);
1149
- filesAdded++;
1150
- }
1151
- else if (tracked.contentHash !== contentHash) {
1152
- filesToIndex.push(filePath);
1153
- changedFilePaths.push(filePath);
1154
- filesModified++;
1155
- }
1238
+ const contentHash = hashContent(content);
1239
+ if (!tracked) {
1240
+ filesToIndex.push(filePath);
1241
+ changedFilePaths.push(filePath);
1242
+ filesAdded++;
1243
+ }
1244
+ else if (tracked.contentHash !== contentHash) {
1245
+ filesToIndex.push(filePath);
1246
+ changedFilePaths.push(filePath);
1247
+ filesModified++;
1156
1248
  }
1157
1249
  }
1158
1250
  // Load only grammars needed for changed files