@spikedpunch/mast 0.1.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 (257) hide show
  1. package/LICENSE +21 -0
  2. package/MAST_SPEC.md +2926 -0
  3. package/README.md +842 -0
  4. package/assets/skill.md +45 -0
  5. package/dist/ast/extract.d.ts +65 -0
  6. package/dist/ast/extract.d.ts.map +1 -0
  7. package/dist/ast/extract.js +147 -0
  8. package/dist/ast/extract.js.map +1 -0
  9. package/dist/ast/extractor.d.ts +85 -0
  10. package/dist/ast/extractor.d.ts.map +1 -0
  11. package/dist/ast/extractor.js +2 -0
  12. package/dist/ast/extractor.js.map +1 -0
  13. package/dist/ast/extractors/markdown.d.ts +40 -0
  14. package/dist/ast/extractors/markdown.d.ts.map +1 -0
  15. package/dist/ast/extractors/markdown.js +175 -0
  16. package/dist/ast/extractors/markdown.js.map +1 -0
  17. package/dist/ast/extractors/typescript.d.ts +179 -0
  18. package/dist/ast/extractors/typescript.d.ts.map +1 -0
  19. package/dist/ast/extractors/typescript.js +1439 -0
  20. package/dist/ast/extractors/typescript.js.map +1 -0
  21. package/dist/ast/parser.d.ts +5 -0
  22. package/dist/ast/parser.d.ts.map +1 -0
  23. package/dist/ast/parser.js +21 -0
  24. package/dist/ast/parser.js.map +1 -0
  25. package/dist/ast/types.d.ts +586 -0
  26. package/dist/ast/types.d.ts.map +1 -0
  27. package/dist/ast/types.js +3 -0
  28. package/dist/ast/types.js.map +1 -0
  29. package/dist/cli/docs-cmd.d.ts +22 -0
  30. package/dist/cli/docs-cmd.d.ts.map +1 -0
  31. package/dist/cli/docs-cmd.js +100 -0
  32. package/dist/cli/docs-cmd.js.map +1 -0
  33. package/dist/cli/index-cmd.d.ts +72 -0
  34. package/dist/cli/index-cmd.d.ts.map +1 -0
  35. package/dist/cli/index-cmd.js +263 -0
  36. package/dist/cli/index-cmd.js.map +1 -0
  37. package/dist/cli/index.d.ts +3 -0
  38. package/dist/cli/index.d.ts.map +1 -0
  39. package/dist/cli/index.js +4 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/init.d.ts +14 -0
  42. package/dist/cli/init.d.ts.map +1 -0
  43. package/dist/cli/init.js +64 -0
  44. package/dist/cli/init.js.map +1 -0
  45. package/dist/cli/install-hooks.d.ts +3 -0
  46. package/dist/cli/install-hooks.d.ts.map +1 -0
  47. package/dist/cli/install-hooks.js +34 -0
  48. package/dist/cli/install-hooks.js.map +1 -0
  49. package/dist/cli/metrics-cmd.d.ts +3 -0
  50. package/dist/cli/metrics-cmd.d.ts.map +1 -0
  51. package/dist/cli/metrics-cmd.js +164 -0
  52. package/dist/cli/metrics-cmd.js.map +1 -0
  53. package/dist/cli/program.d.ts +14 -0
  54. package/dist/cli/program.d.ts.map +1 -0
  55. package/dist/cli/program.js +44 -0
  56. package/dist/cli/program.js.map +1 -0
  57. package/dist/cli/query.d.ts +46 -0
  58. package/dist/cli/query.d.ts.map +1 -0
  59. package/dist/cli/query.js +153 -0
  60. package/dist/cli/query.js.map +1 -0
  61. package/dist/cli/search-cmd.d.ts +33 -0
  62. package/dist/cli/search-cmd.d.ts.map +1 -0
  63. package/dist/cli/search-cmd.js +114 -0
  64. package/dist/cli/search-cmd.js.map +1 -0
  65. package/dist/cli/serve.d.ts +3 -0
  66. package/dist/cli/serve.d.ts.map +1 -0
  67. package/dist/cli/serve.js +19 -0
  68. package/dist/cli/serve.js.map +1 -0
  69. package/dist/cli/skill-install.d.ts +39 -0
  70. package/dist/cli/skill-install.d.ts.map +1 -0
  71. package/dist/cli/skill-install.js +57 -0
  72. package/dist/cli/skill-install.js.map +1 -0
  73. package/dist/cli/status.d.ts +35 -0
  74. package/dist/cli/status.d.ts.map +1 -0
  75. package/dist/cli/status.js +117 -0
  76. package/dist/cli/status.js.map +1 -0
  77. package/dist/cli/upgrade-cmd.d.ts +48 -0
  78. package/dist/cli/upgrade-cmd.d.ts.map +1 -0
  79. package/dist/cli/upgrade-cmd.js +129 -0
  80. package/dist/cli/upgrade-cmd.js.map +1 -0
  81. package/dist/cli/version.d.ts +3 -0
  82. package/dist/cli/version.d.ts.map +1 -0
  83. package/dist/cli/version.js +19 -0
  84. package/dist/cli/version.js.map +1 -0
  85. package/dist/env.d.ts +17 -0
  86. package/dist/env.d.ts.map +1 -0
  87. package/dist/env.js +17 -0
  88. package/dist/env.js.map +1 -0
  89. package/dist/graph/checker-resolver.d.ts +156 -0
  90. package/dist/graph/checker-resolver.d.ts.map +1 -0
  91. package/dist/graph/checker-resolver.js +458 -0
  92. package/dist/graph/checker-resolver.js.map +1 -0
  93. package/dist/graph/db.d.ts +318 -0
  94. package/dist/graph/db.d.ts.map +1 -0
  95. package/dist/graph/db.js +266 -0
  96. package/dist/graph/db.js.map +1 -0
  97. package/dist/graph/index.d.ts +4 -0
  98. package/dist/graph/index.d.ts.map +1 -0
  99. package/dist/graph/index.js +5 -0
  100. package/dist/graph/index.js.map +1 -0
  101. package/dist/graph/local-type-env.d.ts +45 -0
  102. package/dist/graph/local-type-env.d.ts.map +1 -0
  103. package/dist/graph/local-type-env.js +59 -0
  104. package/dist/graph/local-type-env.js.map +1 -0
  105. package/dist/graph/path-range.d.ts +40 -0
  106. package/dist/graph/path-range.d.ts.map +1 -0
  107. package/dist/graph/path-range.js +42 -0
  108. package/dist/graph/path-range.js.map +1 -0
  109. package/dist/graph/populate.d.ts +263 -0
  110. package/dist/graph/populate.d.ts.map +1 -0
  111. package/dist/graph/populate.js +984 -0
  112. package/dist/graph/populate.js.map +1 -0
  113. package/dist/graph/queries.d.ts +114 -0
  114. package/dist/graph/queries.d.ts.map +1 -0
  115. package/dist/graph/queries.js +415 -0
  116. package/dist/graph/queries.js.map +1 -0
  117. package/dist/graph/sqliteBatch.d.ts +48 -0
  118. package/dist/graph/sqliteBatch.d.ts.map +1 -0
  119. package/dist/graph/sqliteBatch.js +93 -0
  120. package/dist/graph/sqliteBatch.js.map +1 -0
  121. package/dist/indexer/freshness.d.ts +48 -0
  122. package/dist/indexer/freshness.d.ts.map +1 -0
  123. package/dist/indexer/freshness.js +72 -0
  124. package/dist/indexer/freshness.js.map +1 -0
  125. package/dist/indexer/import-resolver.d.ts +50 -0
  126. package/dist/indexer/import-resolver.d.ts.map +1 -0
  127. package/dist/indexer/import-resolver.js +318 -0
  128. package/dist/indexer/import-resolver.js.map +1 -0
  129. package/dist/indexer/index.d.ts +249 -0
  130. package/dist/indexer/index.d.ts.map +1 -0
  131. package/dist/indexer/index.js +560 -0
  132. package/dist/indexer/index.js.map +1 -0
  133. package/dist/indexer/walker.d.ts +60 -0
  134. package/dist/indexer/walker.d.ts.map +1 -0
  135. package/dist/indexer/walker.js +128 -0
  136. package/dist/indexer/walker.js.map +1 -0
  137. package/dist/indexer/watcher.d.ts +80 -0
  138. package/dist/indexer/watcher.d.ts.map +1 -0
  139. package/dist/indexer/watcher.js +151 -0
  140. package/dist/indexer/watcher.js.map +1 -0
  141. package/dist/mcp/context.d.ts +23 -0
  142. package/dist/mcp/context.d.ts.map +1 -0
  143. package/dist/mcp/context.js +2 -0
  144. package/dist/mcp/context.js.map +1 -0
  145. package/dist/mcp/register-tools.d.ts +21 -0
  146. package/dist/mcp/register-tools.d.ts.map +1 -0
  147. package/dist/mcp/register-tools.js +42 -0
  148. package/dist/mcp/register-tools.js.map +1 -0
  149. package/dist/mcp/server.d.ts +58 -0
  150. package/dist/mcp/server.d.ts.map +1 -0
  151. package/dist/mcp/server.js +177 -0
  152. package/dist/mcp/server.js.map +1 -0
  153. package/dist/mcp/staleness.d.ts +72 -0
  154. package/dist/mcp/staleness.d.ts.map +1 -0
  155. package/dist/mcp/staleness.js +213 -0
  156. package/dist/mcp/staleness.js.map +1 -0
  157. package/dist/mcp/startup.d.ts +40 -0
  158. package/dist/mcp/startup.d.ts.map +1 -0
  159. package/dist/mcp/startup.js +114 -0
  160. package/dist/mcp/startup.js.map +1 -0
  161. package/dist/mcp/tools/_helpers.d.ts +26 -0
  162. package/dist/mcp/tools/_helpers.d.ts.map +1 -0
  163. package/dist/mcp/tools/_helpers.js +54 -0
  164. package/dist/mcp/tools/_helpers.js.map +1 -0
  165. package/dist/mcp/tools/callers.d.ts +4 -0
  166. package/dist/mcp/tools/callers.d.ts.map +1 -0
  167. package/dist/mcp/tools/callers.js +112 -0
  168. package/dist/mcp/tools/callers.js.map +1 -0
  169. package/dist/mcp/tools/dependencies.d.ts +4 -0
  170. package/dist/mcp/tools/dependencies.d.ts.map +1 -0
  171. package/dist/mcp/tools/dependencies.js +36 -0
  172. package/dist/mcp/tools/dependencies.js.map +1 -0
  173. package/dist/mcp/tools/efficiency.d.ts +4 -0
  174. package/dist/mcp/tools/efficiency.d.ts.map +1 -0
  175. package/dist/mcp/tools/efficiency.js +39 -0
  176. package/dist/mcp/tools/efficiency.js.map +1 -0
  177. package/dist/mcp/tools/exports.d.ts +4 -0
  178. package/dist/mcp/tools/exports.d.ts.map +1 -0
  179. package/dist/mcp/tools/exports.js +56 -0
  180. package/dist/mcp/tools/exports.js.map +1 -0
  181. package/dist/mcp/tools/implementors.d.ts +4 -0
  182. package/dist/mcp/tools/implementors.d.ts.map +1 -0
  183. package/dist/mcp/tools/implementors.js +47 -0
  184. package/dist/mcp/tools/implementors.js.map +1 -0
  185. package/dist/mcp/tools/project-skeleton.d.ts +4 -0
  186. package/dist/mcp/tools/project-skeleton.d.ts.map +1 -0
  187. package/dist/mcp/tools/project-skeleton.js +61 -0
  188. package/dist/mcp/tools/project-skeleton.js.map +1 -0
  189. package/dist/mcp/tools/reindex.d.ts +14 -0
  190. package/dist/mcp/tools/reindex.d.ts.map +1 -0
  191. package/dist/mcp/tools/reindex.js +32 -0
  192. package/dist/mcp/tools/reindex.js.map +1 -0
  193. package/dist/mcp/tools/rename-impact.d.ts +4 -0
  194. package/dist/mcp/tools/rename-impact.d.ts.map +1 -0
  195. package/dist/mcp/tools/rename-impact.js +124 -0
  196. package/dist/mcp/tools/rename-impact.js.map +1 -0
  197. package/dist/mcp/tools/search.d.ts +4 -0
  198. package/dist/mcp/tools/search.d.ts.map +1 -0
  199. package/dist/mcp/tools/search.js +69 -0
  200. package/dist/mcp/tools/search.js.map +1 -0
  201. package/dist/mcp/tools/signature.d.ts +4 -0
  202. package/dist/mcp/tools/signature.d.ts.map +1 -0
  203. package/dist/mcp/tools/signature.js +127 -0
  204. package/dist/mcp/tools/signature.js.map +1 -0
  205. package/dist/mcp/tools/status.d.ts +4 -0
  206. package/dist/mcp/tools/status.d.ts.map +1 -0
  207. package/dist/mcp/tools/status.js +30 -0
  208. package/dist/mcp/tools/status.js.map +1 -0
  209. package/dist/search/declex.d.ts +109 -0
  210. package/dist/search/declex.d.ts.map +1 -0
  211. package/dist/search/declex.js +242 -0
  212. package/dist/search/declex.js.map +1 -0
  213. package/dist/search/fts.d.ts +77 -0
  214. package/dist/search/fts.d.ts.map +1 -0
  215. package/dist/search/fts.js +223 -0
  216. package/dist/search/fts.js.map +1 -0
  217. package/dist/search/fused.d.ts +110 -0
  218. package/dist/search/fused.d.ts.map +1 -0
  219. package/dist/search/fused.js +323 -0
  220. package/dist/search/fused.js.map +1 -0
  221. package/dist/search/potential-matches.d.ts +88 -0
  222. package/dist/search/potential-matches.d.ts.map +1 -0
  223. package/dist/search/potential-matches.js +83 -0
  224. package/dist/search/potential-matches.js.map +1 -0
  225. package/dist/search/scope.d.ts +66 -0
  226. package/dist/search/scope.d.ts.map +1 -0
  227. package/dist/search/scope.js +71 -0
  228. package/dist/search/scope.js.map +1 -0
  229. package/dist/store/config.d.ts +57 -0
  230. package/dist/store/config.d.ts.map +1 -0
  231. package/dist/store/config.js +208 -0
  232. package/dist/store/config.js.map +1 -0
  233. package/dist/store/lock.d.ts +101 -0
  234. package/dist/store/lock.d.ts.map +1 -0
  235. package/dist/store/lock.js +182 -0
  236. package/dist/store/lock.js.map +1 -0
  237. package/dist/store/lockMetrics.d.ts +52 -0
  238. package/dist/store/lockMetrics.d.ts.map +1 -0
  239. package/dist/store/lockMetrics.js +29 -0
  240. package/dist/store/lockMetrics.js.map +1 -0
  241. package/dist/store/sqliteChunkStore.d.ts +44 -0
  242. package/dist/store/sqliteChunkStore.d.ts.map +1 -0
  243. package/dist/store/sqliteChunkStore.js +135 -0
  244. package/dist/store/sqliteChunkStore.js.map +1 -0
  245. package/dist/telemetry/lockMetricsSummary.d.ts +42 -0
  246. package/dist/telemetry/lockMetricsSummary.d.ts.map +1 -0
  247. package/dist/telemetry/lockMetricsSummary.js +139 -0
  248. package/dist/telemetry/lockMetricsSummary.js.map +1 -0
  249. package/dist/telemetry/metrics.d.ts +140 -0
  250. package/dist/telemetry/metrics.d.ts.map +1 -0
  251. package/dist/telemetry/metrics.js +312 -0
  252. package/dist/telemetry/metrics.js.map +1 -0
  253. package/dist/telemetry/tokenizer.d.ts +125 -0
  254. package/dist/telemetry/tokenizer.d.ts.map +1 -0
  255. package/dist/telemetry/tokenizer.js +174 -0
  256. package/dist/telemetry/tokenizer.js.map +1 -0
  257. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/indexer/import-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import type { ResolvedConfig } from '../store/config.js';
2
+ import type { LockMetricsSink } from '../store/lockMetrics.js';
3
+ import { type ChunkStore } from '../store/sqliteChunkStore.js';
4
+ import { type OpenDatabaseOptions } from '../graph/db.js';
5
+ import type { WriteSpansMs } from '../graph/populate.js';
6
+ import { extractFile } from '../ast/extract.js';
7
+ import { type MiscasedImportReport } from './import-resolver.js';
8
+ import type { IndexMeta, FreshnessCause } from '../ast/types.js';
9
+ export interface IndexResult {
10
+ readonly filesIndexed: number;
11
+ readonly filesSkipped: number;
12
+ readonly chunksAdded: number;
13
+ readonly chunksRemoved: number;
14
+ readonly parseErrors: number;
15
+ /**
16
+ * Files whose chunk-store write failed. Distinct from `parseErrors` — the
17
+ * file parsed fine but its chunks/symbols/edges/imports/FTS rows were never
18
+ * written (GITNEXUS_COMPARISON.md §15.3 item 3: a storage failure must
19
+ * never be counted as a parse failure).
20
+ */
21
+ readonly writeErrors: number;
22
+ /**
23
+ * Files whose write was refused by `populateFile`'s monotonic write-guard
24
+ * (F12) because the stored row already carried a NEWER mtime than this
25
+ * run's parse — an older-stamped write losing a race against a fresher one
26
+ * (typically a concurrent JIT refresh, `mcp/staleness.ts`). The DB is
27
+ * correct in this case; this counter exists only so the rejection is
28
+ * visible instead of silently indistinguishable from an ordinary write
29
+ * (mirrors `writeErrors`'s precedent).
30
+ */
31
+ readonly staleWriteRejections: number;
32
+ /**
33
+ * Imports that resolved only because the filesystem ignored their casing.
34
+ *
35
+ * A defect in the INDEXED repository rather than in MAST: the specifier is
36
+ * spelled differently from the file on disk, which compiles on APFS/NTFS and
37
+ * fails on a case-sensitive filesystem. MAST resolves such an import to the
38
+ * on-disk path, so the edge is correct either way; this exists so the
39
+ * anomaly is visible rather than silent, on the same reasoning as
40
+ * `staleWriteRejections`.
41
+ */
42
+ readonly miscasedImports: MiscasedImportReport;
43
+ readonly durationMs: number;
44
+ /**
45
+ * The `cache_size` / `mmap_size` actually in force on this run's connection,
46
+ * read back from SQLite itself immediately before the handle is closed.
47
+ *
48
+ * Keyed by the pragma's own names rather than the codebase's camelCase
49
+ * because these are SQLite's values echoed verbatim, not a MAST-side model of
50
+ * them — the whole point is that nothing between the pragma and this field
51
+ * reinterprets anything. `cache_size` is negative when denominated in KiB.
52
+ *
53
+ * Exists so the E1-PHASE mechanism A/B can prove its arms differed. Both
54
+ * pragmas are connection-scoped, so they vanish when the process exits and
55
+ * cannot be recovered from the database file afterwards; if the run does not
56
+ * report them, no later inspection can. Same evidentiary role as Gate 0's
57
+ * `dist` content hash: it establishes WHICH configuration produced a timing,
58
+ * rather than leaving it to be assumed from the command line that was meant
59
+ * to be issued.
60
+ */
61
+ readonly appliedPragmas: {
62
+ readonly cache_size: number;
63
+ readonly mmap_size: number;
64
+ };
65
+ /**
66
+ * Cumulative wall-clock per phase, in ms. The phases tile the run: their sum is
67
+ * `durationMs` less a small unattributed remainder.
68
+ *
69
+ * The remainder is `db.destroy()` and the return — NOT `openDatabase`, which runs before
70
+ * the `walk` stamp and is therefore inside `walk` (and inside the calibration constant
71
+ * `c`, per A4-C1). This matters because `db.destroy()` closes the last connection, which
72
+ * triggers WAL's close-time checkpoint: the one size-coupled cost outside every phase.
73
+ * E1-PHASE reports the remainder as its own series rather than treating it as slack.
74
+ *
75
+ * Exists because E1 measured a growth exponent of ~1.75 on the nested ladder — ~1.90
76
+ * over its upper half — from `durationMs` alone, which localises the cost to the run and
77
+ * no further. The candidate mechanisms are distinguishable only by phase: a page-cache
78
+ * cliff loads `write` while `parse` stays linear; call/symbol resolution loads `edges`;
79
+ * FTS5 segment-merge cost loads `write` but scales with chunks rather than with database
80
+ * size. Reported so a scaling run can discriminate them instead of guessing.
81
+ *
82
+ * `write` and `edges` include the time spent waiting for `structure.lock`, which is
83
+ * correct for a scaling measurement (a cold build contends with nothing) but must not be
84
+ * read as pure I/O under concurrency.
85
+ */
86
+ readonly phaseMs: {
87
+ /** Project walk and manifest diff — everything before the first parse batch. */
88
+ readonly walk: number;
89
+ /** Pass 1, unlocked: tree-sitter extraction. Expected to be linear in bytes. */
90
+ readonly parse: number;
91
+ /** Pass 1, locked: `populateFile` — chunks + symbols + imports + FTS, per file. */
92
+ readonly write: number;
93
+ /** Pass 2, locked: edge and star-re-export insertion once every symbol row exists. */
94
+ readonly edges: number;
95
+ /** Final phase: re-stat, manifest write, `index.json`. */
96
+ readonly finalise: number;
97
+ };
98
+ }
99
+ export interface IndexOptions {
100
+ /** When true, only reindex files whose mtime changed since the last run. */
101
+ readonly incremental: boolean;
102
+ /** Called after each file is processed (parse phase) with running and total counts. */
103
+ readonly onProgress?: (processed: number, total: number) => void;
104
+ /**
105
+ * Test-only injection point (§4.4 DI): a fake `ChunkStore` used for chunk
106
+ * reads (`isFileUnchanged`, the final `chunkCount()`) and, via
107
+ * `populateFile`'s `chunkWriter` param, for the per-file chunk WRITE too —
108
+ * see `graph/populate.ts`'s `ChunkWriter` docstring for why a rejection
109
+ * from the override still rolls back the whole per-file transaction.
110
+ * Lets write-failure tests (`indexer/__tests__/write-failures.test.ts`)
111
+ * exercise write-failure handling without a real SQLite backend. `runIndex`
112
+ * never destroys an injected override — the caller owns its lifecycle.
113
+ */
114
+ readonly chunkStoreOverride?: ChunkStore;
115
+ /**
116
+ * Test-only injection point (§4.4 DI): overrides the per-file extraction
117
+ * step used in the parse phase. Lets tests simulate a slow parse (e.g. to
118
+ * create a deterministic multi-batch window for exercising the per-batch
119
+ * `structure.lock` scope — F1, GITNEXUS_COMPARISON.md §13.2) without
120
+ * sleeping the whole test suite. Defaults to the real `extractFile`.
121
+ */
122
+ readonly extractFileFn?: typeof extractFile;
123
+ /**
124
+ * Test-only injection point (§4.4 DI): routes this run's `structure.lock`
125
+ * acquire/release events to a fake sink instead of the default
126
+ * `<stateDir>/lock-metrics.jsonl` file (store/lockMetrics.ts), so tests can
127
+ * assert on lock-hold count/duration structurally without touching the
128
+ * filesystem. Production call sites omit this and get the default sink.
129
+ */
130
+ readonly lockMetricsSink?: LockMetricsSink;
131
+ /**
132
+ * Per-connection SQLite tuning for this run's `graph.db` handle
133
+ * (`OpenDatabaseOptions`, `graph/db.ts`). Omitted everywhere in product code;
134
+ * it exists so the E1-PHASE mechanism A/B can vary `cache_size` / `mmap_size`
135
+ * between arms without config or environment acting as a hidden lever.
136
+ */
137
+ readonly dbOptions?: OpenDatabaseOptions;
138
+ /**
139
+ * When supplied, every `populateFile` call in this run accumulates its four
140
+ * write regions into this record (`graph/populate.ts`'s {@link WriteSpansMs}).
141
+ *
142
+ * Omitted everywhere in product code. It exists so E1-FTS can decompose the
143
+ * `write` phase that E1-PHASE showed carries the growth exponent; passing
144
+ * nothing means no clock is read at all, so the production path is unchanged.
145
+ */
146
+ readonly writeSpans?: WriteSpansMs;
147
+ /**
148
+ * **Eval-only, and unsafe outside a cold build** — see
149
+ * {@link PopulateFileOptions.skipFtsDeletes} for what it does and why it
150
+ * corrupts an incremental index. E1-FTS's arm G.
151
+ */
152
+ readonly unsafeSkipFtsDeletes?: boolean;
153
+ }
154
+ /**
155
+ * Walk the project, parse changed files into chunks, populate the graph
156
+ * database and FTS indexes.
157
+ *
158
+ * F1 (GITNEXUS_COMPARISON.md §13.2, MAST_SPEC.md:822-826): `structure.lock`
159
+ * is acquired and released separately for each write phase — deleted-file
160
+ * cleanup, each `LANCE_BATCH`-sized write batch, each edge-insertion batch,
161
+ * and the final manifest/index.json write — instead of once for the whole
162
+ * run. The read-only walk and the CPU-bound parse phase never hold the lock
163
+ * at all. Before this change the lock was held for the run's full duration
164
+ * (measured max: 280,782 ms on a 1,335-file corpus — eval/baseline-locks.json),
165
+ * which starved the JIT re-parse path (mcp/staleness.ts:56, 3 retries x
166
+ * 100 ms) for minutes at a time — directly contradicting MAST_SPEC.md:822-826
167
+ * ("lock holding is per-file-parse (10-50ms), not per-tool-call").
168
+ *
169
+ * Narrowing the lock's scope means a JIT re-parse can now interleave BETWEEN
170
+ * phases of an in-flight run. Two invariants keep that safe:
171
+ *
172
+ * 1. **[F12, `GITNEXUS_COMPARISON.md` Stage 1]** The row's stamped mtime must
173
+ * never be NEWER than the content it is stamped against — i.e.
174
+ * `stamp <= mtime-at-content-read`. This is an ORDERING property, not a
175
+ * mutual-exclusion one: no lock can enforce it, because a file's editor
176
+ * never takes `structure.lock`. An earlier version of this invariant
177
+ * re-stat'd each file AFTER `doExtract` (inside the locked write phase) to
178
+ * stop `files.mtime` *regressing* below `entry.mtime` — but that opened
179
+ * the real hazard: an edit landing in the (unlocked, seconds-wide under
180
+ * §15.2's FTS growth) parse-to-write window would be stamped with a mtime
181
+ * NEWER than the content that was actually parsed, permanently disarming
182
+ * staleness detection for that file (`diskMtime <= storedMtime` reads
183
+ * "fresh" forever — the exact P0 class this stage exists to eliminate).
184
+ * The fix stats each file IMMEDIATELY BEFORE `doExtract`, in the parse
185
+ * loop below (unlocked, same as `mcp/staleness.ts`'s JIT path, which has
186
+ * always done this correctly), and carries that pre-parse stamp through to
187
+ * the write untouched — no re-stat at write time. A post-stat edit then
188
+ * leaves stamp < content, so staleness re-fires on the next check and the
189
+ * system self-heals, the same property the JIT path already had.
190
+ * 2. **Monotonic write-guard, `graph/populate.ts`'s `populateFile`**: even
191
+ * with (1), two writers (e.g. this run's batch write and a concurrent JIT
192
+ * refresh of the same file) can still race to write the SAME row with
193
+ * DIFFERENT stamps, and `structure.lock` only serializes the two writes —
194
+ * it does not guarantee the one with the fresher stamp wins. `populateFile`
195
+ * refuses to replace a row whose stored mtime already exceeds the incoming
196
+ * stamp, so whichever write carries the NEWER stamp wins regardless of
197
+ * which one reaches the lock first — fixing the reindex-vs-JIT race
198
+ * *better* than the lock alone does (the lock only serializes; the guard
199
+ * orders).
200
+ *
201
+ * Known limitation (not solved here): mtime-granularity blindness. An edit
202
+ * landing in the SAME mtime tick as the stamp compares equal, not greater,
203
+ * and reads as fresh (the git racy-lstat problem). Near-moot on APFS's
204
+ * nanosecond-resolution mtimes; real on coarse-mtime volumes (e.g. some
205
+ * shared/network filesystems), which is exactly the container-deployment
206
+ * case MAST_SPEC.md §7.6 targets. Solving it properly means content hashing,
207
+ * not mtime comparison, and is out of scope for F12.
208
+ *
209
+ * `file_manifest.json` (which drives the NEXT run's incremental diff, see
210
+ * `diffManifest`) is rebuilt from a fresh re-stat of every file under the
211
+ * FINAL lock acquisition (below), not from the run-start walk snapshot or
212
+ * from the parse-phase stamps above. This one does NOT need invariant 1's
213
+ * fix: it is a stat with no accompanying content read in this final phase, so
214
+ * there is no stamp/content pair to invert. If it ever disagrees with
215
+ * `files.mtime` for a file JIT touched concurrently, that disagreement
216
+ * self-heals on the next JIT check (`checkAndRefreshIfStale` compares disk
217
+ * mtime, not the manifest, against `files.mtime`) — the manifest only feeds
218
+ * the NEXT run's `diffManifest`, and a stale manifest entry there causes an
219
+ * extra, harmless re-parse, never a missed one.
220
+ *
221
+ * The two-pass edge-insertion structure (`insertEdges` needs every file's
222
+ * symbols already present) is preserved: ALL pass-1 batches — across the
223
+ * whole run, not just the current batch — complete before pass 2 starts, so
224
+ * cross-file edge targets are always resolvable regardless of how finely
225
+ * pass 1's own lock acquisitions are chunked.
226
+ */
227
+ export declare function runIndex(config: ResolvedConfig, options: IndexOptions): Promise<IndexResult>;
228
+ /**
229
+ * Derive the `freshness_cause` discriminator (§9 mast_status) from the stale
230
+ * file count. Stage 7.2 (IMPLEMENTATION_PLAN.md "Stage 7: Vector-store
231
+ * deletion") dropped the second parameter this used to take
232
+ * (`pendingEmbeddings`) along with the `'embedding_backlog'`/`'both'` cases —
233
+ * the Phase 2 embedder that could produce a backlog distinct from Phase 1
234
+ * staleness was excised in Stage 7.1, so a two-cause signature asserted a
235
+ * distinction the code could no longer draw.
236
+ */
237
+ export declare function freshnessCause(staleFiles: number): FreshnessCause;
238
+ /**
239
+ * Load `index.json` from the state directory, or return null if absent.
240
+ *
241
+ * Unvalidated cast, not a zod parse — an `index.json` written before Stage
242
+ * 7.2 (IMPLEMENTATION_PLAN.md "Stage 7: Vector-store deletion") may still
243
+ * carry the removed `model` field; it rides along as an untyped extra key
244
+ * and is simply never read, so old files load without error.
245
+ */
246
+ export declare function loadIndexMeta(stateDir: string): IndexMeta | null;
247
+ /** Write `index.json` to the state directory. */
248
+ export declare function writeIndexMeta(stateDir: string, meta: IndexMeta): void;
249
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"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"}