@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.
- package/LICENSE +21 -0
- package/MAST_SPEC.md +2926 -0
- package/README.md +842 -0
- package/assets/skill.md +45 -0
- package/dist/ast/extract.d.ts +65 -0
- package/dist/ast/extract.d.ts.map +1 -0
- package/dist/ast/extract.js +147 -0
- package/dist/ast/extract.js.map +1 -0
- package/dist/ast/extractor.d.ts +85 -0
- package/dist/ast/extractor.d.ts.map +1 -0
- package/dist/ast/extractor.js +2 -0
- package/dist/ast/extractor.js.map +1 -0
- package/dist/ast/extractors/markdown.d.ts +40 -0
- package/dist/ast/extractors/markdown.d.ts.map +1 -0
- package/dist/ast/extractors/markdown.js +175 -0
- package/dist/ast/extractors/markdown.js.map +1 -0
- package/dist/ast/extractors/typescript.d.ts +179 -0
- package/dist/ast/extractors/typescript.d.ts.map +1 -0
- package/dist/ast/extractors/typescript.js +1439 -0
- package/dist/ast/extractors/typescript.js.map +1 -0
- package/dist/ast/parser.d.ts +5 -0
- package/dist/ast/parser.d.ts.map +1 -0
- package/dist/ast/parser.js +21 -0
- package/dist/ast/parser.js.map +1 -0
- package/dist/ast/types.d.ts +586 -0
- package/dist/ast/types.d.ts.map +1 -0
- package/dist/ast/types.js +3 -0
- package/dist/ast/types.js.map +1 -0
- package/dist/cli/docs-cmd.d.ts +22 -0
- package/dist/cli/docs-cmd.d.ts.map +1 -0
- package/dist/cli/docs-cmd.js +100 -0
- package/dist/cli/docs-cmd.js.map +1 -0
- package/dist/cli/index-cmd.d.ts +72 -0
- package/dist/cli/index-cmd.d.ts.map +1 -0
- package/dist/cli/index-cmd.js +263 -0
- package/dist/cli/index-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +14 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +64 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/install-hooks.d.ts +3 -0
- package/dist/cli/install-hooks.d.ts.map +1 -0
- package/dist/cli/install-hooks.js +34 -0
- package/dist/cli/install-hooks.js.map +1 -0
- package/dist/cli/metrics-cmd.d.ts +3 -0
- package/dist/cli/metrics-cmd.d.ts.map +1 -0
- package/dist/cli/metrics-cmd.js +164 -0
- package/dist/cli/metrics-cmd.js.map +1 -0
- package/dist/cli/program.d.ts +14 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +44 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/query.d.ts +46 -0
- package/dist/cli/query.d.ts.map +1 -0
- package/dist/cli/query.js +153 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/search-cmd.d.ts +33 -0
- package/dist/cli/search-cmd.d.ts.map +1 -0
- package/dist/cli/search-cmd.js +114 -0
- package/dist/cli/search-cmd.js.map +1 -0
- package/dist/cli/serve.d.ts +3 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +19 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/skill-install.d.ts +39 -0
- package/dist/cli/skill-install.d.ts.map +1 -0
- package/dist/cli/skill-install.js +57 -0
- package/dist/cli/skill-install.js.map +1 -0
- package/dist/cli/status.d.ts +35 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +117 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/upgrade-cmd.d.ts +48 -0
- package/dist/cli/upgrade-cmd.d.ts.map +1 -0
- package/dist/cli/upgrade-cmd.js +129 -0
- package/dist/cli/upgrade-cmd.js.map +1 -0
- package/dist/cli/version.d.ts +3 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +19 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/env.d.ts +17 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +17 -0
- package/dist/env.js.map +1 -0
- package/dist/graph/checker-resolver.d.ts +156 -0
- package/dist/graph/checker-resolver.d.ts.map +1 -0
- package/dist/graph/checker-resolver.js +458 -0
- package/dist/graph/checker-resolver.js.map +1 -0
- package/dist/graph/db.d.ts +318 -0
- package/dist/graph/db.d.ts.map +1 -0
- package/dist/graph/db.js +266 -0
- package/dist/graph/db.js.map +1 -0
- package/dist/graph/index.d.ts +4 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +5 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/local-type-env.d.ts +45 -0
- package/dist/graph/local-type-env.d.ts.map +1 -0
- package/dist/graph/local-type-env.js +59 -0
- package/dist/graph/local-type-env.js.map +1 -0
- package/dist/graph/path-range.d.ts +40 -0
- package/dist/graph/path-range.d.ts.map +1 -0
- package/dist/graph/path-range.js +42 -0
- package/dist/graph/path-range.js.map +1 -0
- package/dist/graph/populate.d.ts +263 -0
- package/dist/graph/populate.d.ts.map +1 -0
- package/dist/graph/populate.js +984 -0
- package/dist/graph/populate.js.map +1 -0
- package/dist/graph/queries.d.ts +114 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +415 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/sqliteBatch.d.ts +48 -0
- package/dist/graph/sqliteBatch.d.ts.map +1 -0
- package/dist/graph/sqliteBatch.js +93 -0
- package/dist/graph/sqliteBatch.js.map +1 -0
- package/dist/indexer/freshness.d.ts +48 -0
- package/dist/indexer/freshness.d.ts.map +1 -0
- package/dist/indexer/freshness.js +72 -0
- package/dist/indexer/freshness.js.map +1 -0
- package/dist/indexer/import-resolver.d.ts +50 -0
- package/dist/indexer/import-resolver.d.ts.map +1 -0
- package/dist/indexer/import-resolver.js +318 -0
- package/dist/indexer/import-resolver.js.map +1 -0
- package/dist/indexer/index.d.ts +249 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +560 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/walker.d.ts +60 -0
- package/dist/indexer/walker.d.ts.map +1 -0
- package/dist/indexer/walker.js +128 -0
- package/dist/indexer/walker.js.map +1 -0
- package/dist/indexer/watcher.d.ts +80 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +151 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/mcp/context.d.ts +23 -0
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/context.js +2 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/register-tools.d.ts +21 -0
- package/dist/mcp/register-tools.d.ts.map +1 -0
- package/dist/mcp/register-tools.js +42 -0
- package/dist/mcp/register-tools.js.map +1 -0
- package/dist/mcp/server.d.ts +58 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +177 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/staleness.d.ts +72 -0
- package/dist/mcp/staleness.d.ts.map +1 -0
- package/dist/mcp/staleness.js +213 -0
- package/dist/mcp/staleness.js.map +1 -0
- package/dist/mcp/startup.d.ts +40 -0
- package/dist/mcp/startup.d.ts.map +1 -0
- package/dist/mcp/startup.js +114 -0
- package/dist/mcp/startup.js.map +1 -0
- package/dist/mcp/tools/_helpers.d.ts +26 -0
- package/dist/mcp/tools/_helpers.d.ts.map +1 -0
- package/dist/mcp/tools/_helpers.js +54 -0
- package/dist/mcp/tools/_helpers.js.map +1 -0
- package/dist/mcp/tools/callers.d.ts +4 -0
- package/dist/mcp/tools/callers.d.ts.map +1 -0
- package/dist/mcp/tools/callers.js +112 -0
- package/dist/mcp/tools/callers.js.map +1 -0
- package/dist/mcp/tools/dependencies.d.ts +4 -0
- package/dist/mcp/tools/dependencies.d.ts.map +1 -0
- package/dist/mcp/tools/dependencies.js +36 -0
- package/dist/mcp/tools/dependencies.js.map +1 -0
- package/dist/mcp/tools/efficiency.d.ts +4 -0
- package/dist/mcp/tools/efficiency.d.ts.map +1 -0
- package/dist/mcp/tools/efficiency.js +39 -0
- package/dist/mcp/tools/efficiency.js.map +1 -0
- package/dist/mcp/tools/exports.d.ts +4 -0
- package/dist/mcp/tools/exports.d.ts.map +1 -0
- package/dist/mcp/tools/exports.js +56 -0
- package/dist/mcp/tools/exports.js.map +1 -0
- package/dist/mcp/tools/implementors.d.ts +4 -0
- package/dist/mcp/tools/implementors.d.ts.map +1 -0
- package/dist/mcp/tools/implementors.js +47 -0
- package/dist/mcp/tools/implementors.js.map +1 -0
- package/dist/mcp/tools/project-skeleton.d.ts +4 -0
- package/dist/mcp/tools/project-skeleton.d.ts.map +1 -0
- package/dist/mcp/tools/project-skeleton.js +61 -0
- package/dist/mcp/tools/project-skeleton.js.map +1 -0
- package/dist/mcp/tools/reindex.d.ts +14 -0
- package/dist/mcp/tools/reindex.d.ts.map +1 -0
- package/dist/mcp/tools/reindex.js +32 -0
- package/dist/mcp/tools/reindex.js.map +1 -0
- package/dist/mcp/tools/rename-impact.d.ts +4 -0
- package/dist/mcp/tools/rename-impact.d.ts.map +1 -0
- package/dist/mcp/tools/rename-impact.js +124 -0
- package/dist/mcp/tools/rename-impact.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +4 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +69 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/tools/signature.d.ts +4 -0
- package/dist/mcp/tools/signature.d.ts.map +1 -0
- package/dist/mcp/tools/signature.js +127 -0
- package/dist/mcp/tools/signature.js.map +1 -0
- package/dist/mcp/tools/status.d.ts +4 -0
- package/dist/mcp/tools/status.d.ts.map +1 -0
- package/dist/mcp/tools/status.js +30 -0
- package/dist/mcp/tools/status.js.map +1 -0
- package/dist/search/declex.d.ts +109 -0
- package/dist/search/declex.d.ts.map +1 -0
- package/dist/search/declex.js +242 -0
- package/dist/search/declex.js.map +1 -0
- package/dist/search/fts.d.ts +77 -0
- package/dist/search/fts.d.ts.map +1 -0
- package/dist/search/fts.js +223 -0
- package/dist/search/fts.js.map +1 -0
- package/dist/search/fused.d.ts +110 -0
- package/dist/search/fused.d.ts.map +1 -0
- package/dist/search/fused.js +323 -0
- package/dist/search/fused.js.map +1 -0
- package/dist/search/potential-matches.d.ts +88 -0
- package/dist/search/potential-matches.d.ts.map +1 -0
- package/dist/search/potential-matches.js +83 -0
- package/dist/search/potential-matches.js.map +1 -0
- package/dist/search/scope.d.ts +66 -0
- package/dist/search/scope.d.ts.map +1 -0
- package/dist/search/scope.js +71 -0
- package/dist/search/scope.js.map +1 -0
- package/dist/store/config.d.ts +57 -0
- package/dist/store/config.d.ts.map +1 -0
- package/dist/store/config.js +208 -0
- package/dist/store/config.js.map +1 -0
- package/dist/store/lock.d.ts +101 -0
- package/dist/store/lock.d.ts.map +1 -0
- package/dist/store/lock.js +182 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/lockMetrics.d.ts +52 -0
- package/dist/store/lockMetrics.d.ts.map +1 -0
- package/dist/store/lockMetrics.js +29 -0
- package/dist/store/lockMetrics.js.map +1 -0
- package/dist/store/sqliteChunkStore.d.ts +44 -0
- package/dist/store/sqliteChunkStore.d.ts.map +1 -0
- package/dist/store/sqliteChunkStore.js +135 -0
- package/dist/store/sqliteChunkStore.js.map +1 -0
- package/dist/telemetry/lockMetricsSummary.d.ts +42 -0
- package/dist/telemetry/lockMetricsSummary.d.ts.map +1 -0
- package/dist/telemetry/lockMetricsSummary.js +139 -0
- package/dist/telemetry/lockMetricsSummary.js.map +1 -0
- package/dist/telemetry/metrics.d.ts +140 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +312 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/tokenizer.d.ts +125 -0
- package/dist/telemetry/tokenizer.d.ts.map +1 -0
- package/dist/telemetry/tokenizer.js +174 -0
- package/dist/telemetry/tokenizer.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/indexer/import-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAE7E,yCAAyC;AACzC,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,qEAAqE;AACrE,iFAAiF;AACjF,8DAA8D;AAC9D,gFAAgF;AAChF,4DAA4D;AAE5D,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAE/D,+EAA+E;AAC/E,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,kFAAkF;AAClF,oFAAoF;AACpF,4CAA4C;AAC5C,sEAAsE;AACtE,MAAM,aAAa,GAAwD;IACzE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;CACnB,CAAC;AA0BF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAqBxC,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEhD,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB;IACtC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAQD,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEjD,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE3C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,eAAe,GAAqB,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5D;;;;;;;;;OASG;IACH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,GAAmB,EAAU,EAAE;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,kEAAkE;QAClE,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7E,aAAa,EAAE,CAAC;YAChB,IAAI,eAAe,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;gBACnD,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ,EAAE,GAAG,CAAC,WAAW;oBACzB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,UAAU,EAAE,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,+EAA+E;IAC/E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,GAAmB,EAAiB,EAAE;QACjE,0EAA0E;QAC1E,4EAA4E;QAC5E,oEAAoE;QACpE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC5D,CAAC;gBACD,MAAM,CAAC,iDAAiD;YAC1D,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO;QACL,OAAO,CAAC,IAAI,EAAE,WAAW;YACvB,MAAM,GAAG,GAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAE7D,kCAAkC;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;gBACxD,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YACjF,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAC/D,CAAC;YAED,0BAA0B;YAC1B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;gBAC7E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,KAAK,IAAI;wBAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAEhE,eAAe;YACf,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,aAAa;YACX,MAAM,MAAM,GAAyB;gBACnC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC;aAC9B,CAAC;YACF,aAAa,GAAG,CAAC,CAAC;YAClB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,SAAS,gBAAgB,CACvB,IAAY,EACZ,SAAsC,EACtC,KAAsC;IAEtC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,yCAAyC;YACzC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG;gBACjB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;gBACzB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;aACnB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,GAAG,KAAK,IAAI;oBAAE,OAAO,GAAG,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,eAAe,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAEvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAEnC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1B,GAAG,EAAE,aAAa;QAClB,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,IAAI;QACd,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,SAAS,CAAC;QACR,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACnE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACtE,kEAAkE;QAClE,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAuC,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -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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"}
|