gitnexus 1.6.11-rc.47 → 1.6.11-rc.48

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 (37) hide show
  1. package/README.md +2 -1
  2. package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
  3. package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
  4. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  5. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  6. package/dist/_shared/language-detection.d.ts.map +1 -1
  7. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  8. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  9. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
  10. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  11. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  12. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  13. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  14. package/dist/cli/analyze-options.d.ts +2 -0
  15. package/dist/cli/analyze-watch.js +1 -0
  16. package/dist/cli/analyze.js +8 -7
  17. package/dist/cli/help-i18n.js +1 -0
  18. package/dist/cli/i18n/en.d.ts +2 -1
  19. package/dist/cli/i18n/en.js +2 -1
  20. package/dist/cli/i18n/resources.d.ts +3 -1
  21. package/dist/cli/i18n/zh-CN.d.ts +1 -0
  22. package/dist/cli/i18n/zh-CN.js +2 -1
  23. package/dist/cli/index.js +2 -1
  24. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +2 -0
  25. package/dist/core/ingestion/pipeline-phases/parse-impl.js +3 -0
  26. package/dist/core/ingestion/pipeline.js +2 -1
  27. package/dist/core/run-analyze.d.ts +11 -4
  28. package/dist/core/run-analyze.js +137 -96
  29. package/dist/storage/parse-cache.d.ts +23 -3
  30. package/dist/storage/parse-cache.js +38 -6
  31. package/dist/storage/parsedfile-store.d.ts +7 -0
  32. package/dist/storage/parsedfile-store.js +70 -0
  33. package/dist/types/pipeline.d.ts +2 -0
  34. package/package.json +3 -2
  35. package/scripts/assert-web-assets.mjs +35 -0
  36. package/scripts/build-web.js +72 -0
  37. package/scripts/build.js +31 -28
package/README.md CHANGED
@@ -236,7 +236,8 @@ gitnexus uninstall # Preview removal of GitNexus MCP/skills/hooks
236
236
  gitnexus analyze [path] # Index a repository (or update stale index)
237
237
  gitnexus analyze [path] --watch # Watch local files and serialize incremental refreshes
238
238
  gitnexus analyze --repair-fts # Fast path: rebuild/verify only FTS indexes on existing index data
239
- gitnexus analyze --force # Full rebuild: re-parse + graph rebuild + FTS rebuild
239
+ gitnexus analyze --force # Rebuild graph + FTS; may reuse unchanged parser output
240
+ gitnexus analyze --no-parse-cache # Re-parse every source file, then rebuild graph + FTS
240
241
  gitnexus analyze --embeddings # Enable embedding generation (slower, better search)
241
242
  gitnexus embeddings install # Fetch the optional local embedding stack on demand (--cuda, --force)
242
243
  gitnexus analyze --skills # Generate repo-specific skill files from detected communities
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/integrations/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;IAC5C;kEAC8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,YAAY,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAO7C;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,KAAK,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAuB;IACvC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,IAAI,GAAE,qBAA0B,EAM3C;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,IAAI,IAAI,CAmBZ;IAED,aAAa,IAAI,IAAI,CAKpB;IAED,aAAa,IAAI,IAAI,CAOpB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,IAAI,IAAI,CAGpB;IAED;;;;;;;;;OASG;IACH,QAAQ,IAAI,KAAK,CAMhB;IACD,sBAAsB,IAAI,MAAM,CAE/B;IACD,oEAAoE;IACpE,eAAe,IAAI,OAAO,CAEzB;IACD;;mEAE+D;IAC/D,WAAW,IAAI,MAAM,GAAG,IAAI,CAE3B;IACD,oDAAoD;IACpD,aAAa,IAAI,MAAM,CAEtB;CACF;AAUD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAOpF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/integrations/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;IAC5C;kEAC8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;CAQ/C;AAED,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,KAAK,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAuB;IACvC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,GAAE,qBAA0B;IAQ5C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,IAAI,IAAI;IAqBb,aAAa,IAAI,IAAI;IAOrB,aAAa,IAAI,IAAI;IASrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;;;;;OASG;IACH,QAAQ,IAAI,KAAK;IAOjB,sBAAsB,IAAI,MAAM;IAGhC,oEAAoE;IACpE,eAAe,IAAI,OAAO;IAG1B;;mEAE+D;IAC/D,WAAW,IAAI,MAAM,GAAG,IAAI;IAG5B,oDAAoD;IACpD,aAAa,IAAI,MAAM;CAGxB;AAUD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAOpF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/integrations/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/integrations/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resilient-fetch.d.ts","sourceRoot":"","sources":["../../src/integrations/resilient-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAEhB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kEAAkE;IAClE,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG;QAClF,gFAAgF;QAChF,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;KACjC,CAAC;IACF,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAQzC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,MAAM,GAAG,IAAI,CAejG;AAED,wEAAwE;AACxE,KAAK,OAAO,GACR;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAExE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAC9E,GAAG,EAAE,MAAM,MAAM,EACjB,eAAe,SAAqB,GACnC,OAAO,CAyBT;AAcD,oEAAoE;AACpE,qBAAa,4BAA6B,SAAQ,KAAK;aAEzB,QAAQ,EAAE,QAAQ;IAD9C,SAAkB,IAAI,kCAAkC;IACxD,YAA4B,QAAQ,EAAE,QAAQ,EAE7C;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,GAAG,GAAG,EACnB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,QAAQ,CAAC,CA+GnB"}
1
+ {"version":3,"file":"resilient-fetch.d.ts","sourceRoot":"","sources":["../../src/integrations/resilient-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAEhB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kEAAkE;IAClE,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG;QAClF,gFAAgF;QAChF,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;KACjC,CAAC;IACF,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAQzC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,MAAM,GAAG,IAAI,CAejG;AAED,wEAAwE;AACxE,KAAK,OAAO,GACR;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAExE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAC9E,GAAG,EAAE,MAAM,MAAM,EACjB,eAAe,SAAqB,GACnC,OAAO,CAyBT;AAcD,oEAAoE;AACpE,qBAAa,4BAA6B,SAAQ,KAAK;aAEzB,QAAQ,EAAE,QAAQ;IAD9C,SAAkB,IAAI,kCAAkC;gBAC5B,QAAQ,EAAE,QAAQ;CAG/C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,GAAG,GAAG,EACnB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,QAAQ,CAAC,CA+GnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"resilient-fetch.js","sourceRoot":"","sources":["../../src/integrations/resilient-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resilient-fetch.js","sourceRoot":"","sources":["../../src/integrations/resilient-fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"language-detection.d.ts","sourceRoot":"","sources":["../src/language-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA0DpD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,aAAc,MAAM,KAAG,OACQ,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,aAAc,MAAM,KAAG,kBAAkB,GAAG,IAkB/E,CAAC;AAyDF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,aAAc,MAAM,KAAG,MAUhE,CAAC"}
1
+ {"version":3,"file":"language-detection.d.ts","sourceRoot":"","sources":["../src/language-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA0DpD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,OACQ,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,kBAAkB,GAAG,IAkB/E,CAAC;AAyDF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,MAAM,KAAG,MAUhE,CAAC"}
@@ -7,10 +7,10 @@
7
7
  * Full DDL schemas remain in each package's own schema.ts because
8
8
  * the CLI uses native LadybugDB and the web uses WASM.
9
9
  */
10
- export declare const NODE_TABLES: readonly ['File', 'Folder', 'Function', 'Class', 'Interface', 'Method', 'CodeElement', 'Community', 'Process', 'Section', 'Struct', 'Enum', 'Macro', 'Typedef', 'Union', 'Namespace', 'Trait', 'Impl', 'TypeAlias', 'Const', 'Static', 'Variable', 'Property', 'Record', 'Delegate', 'Annotation', 'Constructor', 'Template', 'Module', 'Route', 'Tool', 'Destination', 'BasicBlock'];
10
+ export declare const NODE_TABLES: readonly ["File", "Folder", "Function", "Class", "Interface", "Method", "CodeElement", "Community", "Process", "Section", "Struct", "Enum", "Macro", "Typedef", "Union", "Namespace", "Trait", "Impl", "TypeAlias", "Const", "Static", "Variable", "Property", "Record", "Delegate", "Annotation", "Constructor", "Template", "Module", "Route", "Tool", "Destination", "BasicBlock"];
11
11
  export type NodeTableName = (typeof NODE_TABLES)[number];
12
12
  export declare const REL_TABLE_NAME = "CodeRelation";
13
- export declare const REL_TYPES: readonly ['CONTAINS', 'DEFINES', 'IMPORTS', 'CALLS', 'EXTENDS', 'IMPLEMENTS', 'HAS_METHOD', 'HAS_PROPERTY', 'ACCESSES', 'METHOD_OVERRIDES', 'OVERRIDES', 'METHOD_IMPLEMENTS', 'MEMBER_OF', 'STEP_IN_PROCESS', 'HANDLES_ROUTE', 'PUBLISHES_TO', 'CONSUMES_FROM', 'FETCHES', 'HANDLES_TOOL', 'ENTRY_POINT_OF', 'WRAPS', 'QUERIES', 'INJECTS', 'CONDITIONAL_ON', 'DECLARES', 'ADVISED_BY', 'CFG', 'REACHING_DEF', 'TAINTED', 'SANITIZES', 'TAINT_PATH', 'CDG', 'POST_DOMINATE'];
13
+ export declare const REL_TYPES: readonly ["CONTAINS", "DEFINES", "IMPORTS", "CALLS", "EXTENDS", "IMPLEMENTS", "HAS_METHOD", "HAS_PROPERTY", "ACCESSES", "METHOD_OVERRIDES", "OVERRIDES", "METHOD_IMPLEMENTS", "MEMBER_OF", "STEP_IN_PROCESS", "HANDLES_ROUTE", "PUBLISHES_TO", "CONSUMES_FROM", "FETCHES", "HANDLES_TOOL", "ENTRY_POINT_OF", "WRAPS", "QUERIES", "INJECTS", "CONDITIONAL_ON", "DECLARES", "ADVISED_BY", "CFG", "REACHING_DEF", "TAINTED", "SANITIZES", "TAINT_PATH", "CDG", "POST_DOMINATE"];
14
14
  export type RelType = (typeof REL_TYPES)[number];
15
15
  export declare const EMBEDDING_TABLE_NAME = "CodeEmbedding";
16
16
  //# sourceMappingURL=schema-constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EAEN,aAAa,EAEb,YAAY,CACJ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,YACpB,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EAIZ,KAAK,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EAKZ,KAAK,EACL,eAAe,CACP,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,uXAoCd,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,8cAyCZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"evidence-weights.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/evidence-weights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe;IAE1B,sCAAsC;aACtC,KAAK,EAAE,IAAI;IACX,uCAAuC;aACvC,MAAM,EAAE,IAAI;IACZ,yCAAyC;aACzC,QAAQ,EAAE,GAAG;IACb,0CAA0C;aAC1C,SAAS,EAAE,GAAG;IACd,yCAAyC;aACzC,QAAQ,EAAE,GAAG;IAGb,uEAAuE;aACvE,kBAAkB,EAAE,CAAC,IAAI;IAGzB;;;;;OAKG;aACH,qBAAqB,YAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAGlD,qEAAqE;aACrE,UAAU,EAAE,GAAG;IACf;uEACmE;aACnE,SAAS,EAAE,CAAG;IAGd,0DAA0D;aAC1D,oBAAoB,EAAE,GAAG;IACzB,uDAAuD;aACvD,iBAAiB,EAAE,CAAG;IACtB;uEACmE;aACnE,sBAAsB,EAAE,CAAC,IAAI;IAG7B,oDAAoD;aACpD,eAAe,EAAE,IAAI;IACrB,4EAA4E;aAC5E,UAAU,EAAE,GAAG;IAGf,kEAAkE;aAClE,uBAAuB,EAAE,IAAI;IAG7B;;;;;;OAMG;aACH,wBAAwB,EAAE,GAAG;CACrB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKjE"}
1
+ {"version":3,"file":"evidence-weights.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/evidence-weights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe;IAE1B,sCAAsC;;IAEtC,uCAAuC;;IAEvC,yCAAyC;;IAEzC,0CAA0C;;IAE1C,yCAAyC;;IAIzC,uEAAuE;;IAIvE;;;;;OAKG;;IAIH,qEAAqE;;IAErE;uEACmE;;IAInE,0DAA0D;;IAE1D,uDAAuD;;IAEvD;uEACmE;;IAInE,oDAAoD;;IAEpD,4EAA4E;;IAI5E,kEAAkE;;IAIlE;;;;;;OAMG;;CAEK,CAAC;AAEX;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-registry.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/field-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAW3C,MAAM,UAAU,kBAAkB,CAAC,GAAoB;IACrD,OAAO;QACL,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,OAAO,GAAuB,EAAE;YACnE,MAAM,MAAM,GAAqB;gBAC/B,aAAa,EAAE,WAAW;gBAC1B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;gBAC9D,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"field-registry.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/field-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAW3C,MAAM,UAAU,kBAAkB,CAAC,GAAoB;IACrD,OAAO;QACL,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,UAA8B,EAAE;YACnE,MAAM,MAAM,GAAqB;gBAC/B,aAAa,EAAE,WAAW;gBAC1B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;gBAC9D,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"method-registry.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/method-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAqB5C,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,OAAO;QACL,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,OAAO,GAAwB,EAAE;YACpE,MAAM,MAAM,GAAqB;gBAC/B,aAAa,EAAE,YAAY;gBAC3B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;gBAC9D,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"method-registry.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/method-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAqB5C,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,OAAO;QACL,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,UAA+B,EAAE;YACpE,MAAM,MAAM,GAAqB;gBAC/B,aAAa,EAAE,YAAY;gBAC3B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;gBAC9D,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope-tree.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/scope-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIrE,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE3C,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC1C,4EAA4E;IAC5E,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAC9C,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC;CAC3B;AAID;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAE9C,QAAQ,CAAC,SAAS,EACd,4BAA4B,GAC5B,kBAAkB,GAClB,2BAA2B,GAC3B,wBAAwB,GACxB,4BAA4B,GAC5B,oBAAoB;IAP1B,YACW,SAAS,EACd,4BAA4B,GAC5B,kBAAkB,GAClB,2BAA2B,GAC3B,wBAAwB,GACxB,4BAA4B,GAC5B,oBAAoB,EACxB,OAAO,EAAE,MAAM,EAIhB;CACF;AAID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAiFlE;AA+ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GACvB,OAAO,CAIT"}
1
+ {"version":3,"file":"scope-tree.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/scope-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIrE,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE3C,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC1C,4EAA4E;IAC5E,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAC9C,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC;CAC3B;AAID;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAE9C,QAAQ,CAAC,SAAS,EACd,4BAA4B,GAC5B,kBAAkB,GAClB,2BAA2B,GAC3B,wBAAwB,GACxB,4BAA4B,GAC5B,oBAAoB;gBANf,SAAS,EACd,4BAA4B,GAC5B,kBAAkB,GAClB,2BAA2B,GAC3B,wBAAwB,GACxB,4BAA4B,GAC5B,oBAAoB,EACxB,OAAO,EAAE,MAAM;CAKlB;AAID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAiFlE;AA+ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GACvB,OAAO,CAIT"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope-tree.js","sourceRoot":"","sources":["../../src/scope-resolution/scope-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope-tree.js","sourceRoot":"","sources":["../../src/scope-resolution/scope-tree.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export interface AnalyzeOptions {
20
20
  /** Watch quiet period in milliseconds. */
21
21
  debounce?: string;
22
22
  force?: boolean;
23
+ /** Commander negated flag: false only when --no-parse-cache is passed. */
24
+ parseCache?: boolean;
23
25
  repairFts?: boolean;
24
26
  /**
25
27
  * Embedding generation toggle. Commander parses `--embeddings [limit]` as:
@@ -64,6 +64,7 @@ export async function resolveWatchOptions(repoPath, cli, baseline, reportIgnored
64
64
  const merged = mergeAnalyzeOptions(cli, config);
65
65
  const unsupported = [
66
66
  ['--force', cli.force],
67
+ ['--no-parse-cache', cli.parseCache === false],
67
68
  ['--repair-fts', cli.repairFts],
68
69
  ['--embeddings', cli.embeddings],
69
70
  ['--drop-embeddings', cli.dropEmbeddings],
@@ -940,9 +940,9 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
940
940
  }
941
941
  }
942
942
  }
943
- if (options.repairFts && options.force) {
944
- cliError(' Cannot combine `--repair-fts` with `--force`. ' +
945
- 'Use `--repair-fts` for fast FTS-only repair, or `--force` for a full rebuild.\n');
943
+ if (options.repairFts && (options.force || options.parseCache === false)) {
944
+ cliError(' Cannot combine `--repair-fts` with a full rebuild. ' +
945
+ 'Use `--repair-fts` alone for fast FTS-only repair.\n');
946
946
  process.exitCode = 1;
947
947
  return;
948
948
  }
@@ -1084,10 +1084,11 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
1084
1084
  const skipAgentsMd = skipAll || options.skipAgentsMd;
1085
1085
  const skipSkills = skipAll || options.skipSkills;
1086
1086
  const runOptions = {
1087
- // Pipeline re-index — OR'd with --skills because skill generation
1088
- // needs a fresh pipelineResult. Has no bearing on the registry
1089
- // collision guard (see allowDuplicateName below).
1090
- force: options.force || options.skills,
1087
+ // Pipeline re-index — OR'd with --skills because skill generation needs
1088
+ // a fresh pipelineResult, and with --no-parse-cache because bypassing
1089
+ // parser output is meaningful only when the pipeline runs.
1090
+ force: options.force || options.skills || options.parseCache === false,
1091
+ useParseCache: options.parseCache !== false,
1091
1092
  repairFts: options.repairFts,
1092
1093
  embeddings: embeddingsEnabled,
1093
1094
  embeddingsNodeLimit,
@@ -49,6 +49,7 @@ const OPTION_DESCRIPTION_KEYS = {
49
49
  '|-V, --version': 'help.option.version',
50
50
  'setup|-c, --coding-agent <agents>': 'help.option.setup.codingAgent',
51
51
  'analyze|-f, --force': 'help.option.analyze.force',
52
+ 'analyze|--no-parse-cache': 'help.option.analyze.noParseCache',
52
53
  'analyze|--repair-fts': 'help.option.analyze.repairFts',
53
54
  'analyze|--embeddings [limit]': 'help.option.analyze.embeddings',
54
55
  'analyze|--drop-embeddings': 'help.option.analyze.dropEmbeddings',
@@ -163,7 +163,8 @@ export declare const en: {
163
163
  readonly 'help.command.group.query.description': "Search execution flows across all repos in a group";
164
164
  readonly 'help.command.group.contracts.description': "Inspect Contract Registry";
165
165
  readonly 'help.option.setup.codingAgent': "Configure only these coding agents (comma-separated or repeatable)";
166
- readonly 'help.option.analyze.force': "Force full re-index even if up to date";
166
+ readonly 'help.option.analyze.force': "Force graph and FTS rebuild; unchanged parser output may be reused";
167
+ readonly 'help.option.analyze.noParseCache': "Re-parse every source file instead of replaying cached parser output";
167
168
  readonly 'help.option.analyze.repairFts': "Repair/rebuild search FTS indexes without full re-analysis";
168
169
  readonly 'help.option.analyze.embeddings': "Enable embedding generation for semantic search (off by default). Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.";
169
170
  readonly 'help.option.analyze.dropEmbeddings': "Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves any embeddings already present in the index.";
@@ -165,7 +165,8 @@ export const en = {
165
165
  'help.command.group.query.description': 'Search execution flows across all repos in a group',
166
166
  'help.command.group.contracts.description': 'Inspect Contract Registry',
167
167
  'help.option.setup.codingAgent': 'Configure only these coding agents (comma-separated or repeatable)',
168
- 'help.option.analyze.force': 'Force full re-index even if up to date',
168
+ 'help.option.analyze.force': 'Force graph and FTS rebuild; unchanged parser output may be reused',
169
+ 'help.option.analyze.noParseCache': 'Re-parse every source file instead of replaying cached parser output',
169
170
  'help.option.analyze.repairFts': 'Repair/rebuild search FTS indexes without full re-analysis',
170
171
  'help.option.analyze.embeddings': 'Enable embedding generation for semantic search (off by default). Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.',
171
172
  'help.option.analyze.dropEmbeddings': 'Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves any embeddings already present in the index.',
@@ -164,7 +164,8 @@ export declare const cliResources: {
164
164
  readonly 'help.command.group.query.description': "Search execution flows across all repos in a group";
165
165
  readonly 'help.command.group.contracts.description': "Inspect Contract Registry";
166
166
  readonly 'help.option.setup.codingAgent': "Configure only these coding agents (comma-separated or repeatable)";
167
- readonly 'help.option.analyze.force': "Force full re-index even if up to date";
167
+ readonly 'help.option.analyze.force': "Force graph and FTS rebuild; unchanged parser output may be reused";
168
+ readonly 'help.option.analyze.noParseCache': "Re-parse every source file instead of replaying cached parser output";
168
169
  readonly 'help.option.analyze.repairFts': "Repair/rebuild search FTS indexes without full re-analysis";
169
170
  readonly 'help.option.analyze.embeddings': "Enable embedding generation for semantic search (off by default). Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.";
170
171
  readonly 'help.option.analyze.dropEmbeddings': "Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves any embeddings already present in the index.";
@@ -435,6 +436,7 @@ export declare const cliResources: {
435
436
  'help.command.group.contracts.description': string;
436
437
  'help.option.setup.codingAgent': string;
437
438
  'help.option.analyze.force': string;
439
+ 'help.option.analyze.noParseCache': string;
438
440
  'help.option.analyze.repairFts': string;
439
441
  'help.option.analyze.embeddings': string;
440
442
  'help.option.analyze.dropEmbeddings': string;
@@ -164,6 +164,7 @@ export declare const zhCN: {
164
164
  'help.command.group.contracts.description': string;
165
165
  'help.option.setup.codingAgent': string;
166
166
  'help.option.analyze.force': string;
167
+ 'help.option.analyze.noParseCache': string;
167
168
  'help.option.analyze.repairFts': string;
168
169
  'help.option.analyze.embeddings': string;
169
170
  'help.option.analyze.dropEmbeddings': string;
@@ -163,7 +163,8 @@ export const zhCN = {
163
163
  'help.command.group.query.description': '跨仓库组所有仓库搜索执行流程',
164
164
  'help.command.group.contracts.description': '查看 Contract Registry',
165
165
  'help.option.setup.codingAgent': '仅配置这些编码代理(逗号分隔或重复传入)',
166
- 'help.option.analyze.force': '即使已是最新也强制完整重建索引',
166
+ 'help.option.analyze.force': '强制重建图和 FTS;未更改的解析器输出可能被复用',
167
+ 'help.option.analyze.noParseCache': '重新解析每个源文件,不重放缓存的解析器输出',
167
168
  'help.option.analyze.repairFts': '修复/重建搜索 FTS 索引,不执行完整重新分析',
168
169
  'help.option.analyze.embeddings': '启用语义搜索的嵌入生成(默认关闭)。可选 [limit] 覆盖 50,000 节点安全上限;传 0 可完全禁用上限。',
169
170
  'help.option.analyze.dropEmbeddings': '重建时删除现有嵌入。默认情况下,未传 `--embeddings` 的 `analyze` 会保留索引中已有嵌入。',
package/dist/cli/index.js CHANGED
@@ -48,7 +48,8 @@ program
48
48
  .description('Index a repository (full analysis)')
49
49
  .option('--watch', 'Keep the index current with serialized incremental refreshes')
50
50
  .option('--debounce <ms>', 'Watch quiet period before refreshing (default: 300 milliseconds)')
51
- .option('-f, --force', 'Force full re-index even if up to date')
51
+ .option('-f, --force', 'Force graph and FTS rebuild; unchanged parser output may be reused')
52
+ .option('--no-parse-cache', 'Re-parse every source file instead of replaying cached parser output')
52
53
  .option('--repair-fts', 'Repair/rebuild search FTS indexes without full re-analysis')
53
54
  .option('--embeddings [limit]', 'Enable embedding generation for semantic search (off by default). ' +
54
55
  'Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.')
@@ -97,6 +97,8 @@ export declare function runChunkedParseAndResolve(graph: KnowledgeGraph, scanned
97
97
  usedWorkerPool: boolean;
98
98
  /** Files dispatched to parser workers after parse-cache lookup. */
99
99
  reparsedFileCount: number;
100
+ /** Files restored from parse-cache chunks without parser-worker dispatch. */
101
+ parseCacheHitFileCount: number;
100
102
  /** Worker-produced ParsedFile artifacts aggregated across chunks.
101
103
  * Threaded into scope-resolution as a re-extract cache so the warm-
102
104
  * cache analyze run can skip the dominant `extractParsedFile` cost
@@ -557,6 +557,7 @@ export async function runChunkedParseAndResolve(graph, scannedFiles, allPaths, t
557
557
  : new Map();
558
558
  let chunkCacheHits = 0;
559
559
  let chunkCacheMisses = 0;
560
+ let parseCacheHitFileCount = 0;
560
561
  let reparsedFileCount = 0;
561
562
  try {
562
563
  // U1 — bounded chunk concurrency (B1 from PR #1693 review): pre-fetch
@@ -816,6 +817,7 @@ export async function runChunkedParseAndResolve(graph, scannedFiles, allPaths, t
816
817
  pendingWorkerChunk = null;
817
818
  }
818
819
  chunkCacheHits++;
820
+ parseCacheHitFileCount += chunkFiles.length;
819
821
  const chunkWorkerData = mergeChunkResults(graph, symbolTable, cachedRaw, exportedTypeMap);
820
822
  if (isDev) {
821
823
  logger.info(`📦 parse-cache HIT: chunk ${chunkIdx + 1}/${numChunks} (${chunkFiles.length} files, ${chunkHash?.slice(0, 8) ?? 'unknown'})`);
@@ -1324,6 +1326,7 @@ export async function runChunkedParseAndResolve(graph, scannedFiles, allPaths, t
1324
1326
  // is intentionally measured at dispatch time rather than inferred from
1325
1327
  // the git/hash diff.
1326
1328
  reparsedFileCount,
1329
+ parseCacheHitFileCount,
1327
1330
  // Per-file ParsedFile artifacts produced by workers' calls to
1328
1331
  // `extractParsedFile`. Consumed by scope-resolution as a re-extraction
1329
1332
  // cache: when the file's ParsedFile is here, scope-resolution skips its own
@@ -120,7 +120,7 @@ export const runPipelineFromRepo = async (repoPath, onProgress, options) => {
120
120
  graphEmitSink?.close();
121
121
  }
122
122
  // Extract final results for the PipelineResult contract
123
- const { totalFiles, usedWorkerPool, reparsedFileCount, unavailableScopeLanguageFiles } = getPhaseOutput(results, 'parse');
123
+ const { totalFiles, usedWorkerPool, reparsedFileCount, parseCacheHitFileCount, unavailableScopeLanguageFiles, } = getPhaseOutput(results, 'parse');
124
124
  let communityResult;
125
125
  let processResult;
126
126
  const scopeResolutionOutput = getPhaseOutput(results, 'scopeResolution');
@@ -168,6 +168,7 @@ export const runPipelineFromRepo = async (repoPath, onProgress, options) => {
168
168
  undecidedSatisfaction,
169
169
  usedWorkerPool,
170
170
  reparsedFileCount,
171
+ parseCacheHitFileCount,
171
172
  scopeExtractionFailures,
172
173
  unavailableScopeLanguageFiles,
173
174
  pdgEmitManifest,
@@ -17,12 +17,19 @@ export interface AnalyzeCallbacks {
17
17
  }
18
18
  export interface AnalyzeOptions {
19
19
  /**
20
- * Force a full re-index of the pipeline. Callers may OR this with
21
- * other flags that imply re-analysis (e.g. `--skills`), so the value
22
- * here is the PIPELINE-force signal, NOT the registry-collision
23
- * bypass. See `allowDuplicateName` below.
20
+ * Rebuild the graph and FTS. Parser output is still reused from the
21
+ * content-addressed parse cache unless `useParseCache` is false.
22
+ * Callers may OR this with other flags that imply re-analysis
23
+ * (e.g. `--skills`), so the value here is the PIPELINE-force signal,
24
+ * NOT the registry-collision bypass. See `allowDuplicateName` below.
24
25
  */
25
26
  force?: boolean;
27
+ /**
28
+ * Reuse content-addressed parser output. Defaults to true. When false,
29
+ * analysis reparses every file and publishes a new parse-cache generation
30
+ * only after a successful run (live shards stay untouched if the run fails).
31
+ */
32
+ useParseCache?: boolean;
26
33
  /** Repair only search indexes without re-running full parsing/indexing. */
27
34
  repairFts?: boolean;
28
35
  /** Emit per-index FTS create logs. */
@@ -46,8 +46,8 @@ import { shadowCandidatesFor } from './incremental/shadow-candidates.js';
46
46
  import { shouldEscalateIncrementalWrite } from './incremental/escalation-gate.js';
47
47
  import { ftsTablesAmong, incrementalFtsTablesFromGraph, nodeTablesForIncrementalDelete, shouldPreservePersistedDerivedGraph, } from './incremental/derived-writeback.js';
48
48
  import { NODE_TABLES } from './lbug/schema.js';
49
- import { loadParseCache, saveParseCache, pruneCache, PARSE_CACHE_VERSION, } from '../storage/parse-cache.js';
50
- import { getDurableParsedFileDir, pruneAndSaveDurableParsedFileStore, } from '../storage/parsedfile-store.js';
49
+ import { loadParseCache, saveParseCache, pruneCache, PARSE_CACHE_VERSION, createColdParseRebuildDir, emptyParseCache, forgetCreatedParseCacheDir, } from '../storage/parse-cache.js';
50
+ import { mergeStagedDurableParsedFileStore } from '../storage/parsedfile-store.js';
51
51
  import { getCurrentCommit, getCurrentBranch, getRemoteUrl, hasGitDir, getInferredRepoName, isWorkingTreeDirty, listWorkingTreeDirtyPaths, resolveRepoIdentityRoot, } from '../storage/git.js';
52
52
  import { isGitNexusManagedPath } from '../storage/gitnexus-managed-paths.js';
53
53
  import { getMaxFileSizeBytes } from './ingestion/utils/max-file-size.js';
@@ -553,6 +553,17 @@ async function resolveWriteTarget(repoPath, options) {
553
553
  metaDir: path.dirname(metaPath),
554
554
  };
555
555
  }
556
+ async function removeColdParseRebuildDir(dir, ignoreErrors) {
557
+ if (!dir)
558
+ return;
559
+ try {
560
+ await fs.rm(dir, { recursive: true, force: true });
561
+ }
562
+ catch (err) {
563
+ if (!ignoreErrors)
564
+ throw err;
565
+ }
566
+ }
556
567
  /**
557
568
  * Run the full analysis under an exclusive, index-directory-scoped write lock
558
569
  * (#2658). A second concurrent `analyze` on the same slot waits here for the
@@ -630,6 +641,7 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
630
641
  // selects a `branches/<slug>/` sub-slot only for an explicit `--branch` that
631
642
  // does not own the flat slot. See resolveWriteTarget for the full contract.
632
643
  const { storagePath, repoHasGit, currentCommit, branchLabel, placement, lbugPath, metaDir } = writeTarget;
644
+ let coldParseRebuildDir;
633
645
  // Start each analyze with a clean buffer-pool hint: any pre-pipeline DB open
634
646
  // (e.g. the embeddings-cache open) falls back to the default until the hint is
635
647
  // set from the built graph below, so a prior run's size can't leak in.
@@ -1165,6 +1177,12 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
1165
1177
  log('AsyncAPI document reading disabled; rebuilding to remove document-derived evidence.');
1166
1178
  options = { ...options, force: true };
1167
1179
  }
1180
+ // Programmatic `useParseCache: false` must set force or the up-to-date
1181
+ // guard returns before the empty-cache construction below.
1182
+ if (options.useParseCache === false && !options.force) {
1183
+ log('Parser cache bypass requested; forcing a full rebuild so unchanged files are re-parsed.');
1184
+ options = { ...options, force: true };
1185
+ }
1168
1186
  // ── Early-return: already up to date ──────────────────────────────
1169
1187
  if (existingMeta &&
1170
1188
  !existingMeta.embeddingCheckpoint &&
@@ -1362,11 +1380,17 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
1362
1380
  }
1363
1381
  }
1364
1382
  // ── Load incremental parse cache ──────────────────────────────────
1365
- // Content-addressed: safe to reuse across `--force` runs (chunks whose
1366
- // file contents haven't changed produce identical worker output).
1367
- // Loaded into a single ParseCache object that the pipeline mutates
1368
- // in-place (cache hits leave entries unchanged; misses add new ones).
1369
- const parseCache = await loadParseCache(storagePath);
1383
+ // Content-addressed: `--force` reuses parser shards; `useParseCache: false`
1384
+ // stages a new generation under a run-unique parse-rebuild.* dir and publishes
1385
+ // after success. Unique because index locks are per branch slot while this
1386
+ // cache root is shared across branches.
1387
+ if (options.useParseCache === false) {
1388
+ coldParseRebuildDir = await createColdParseRebuildDir(storagePath);
1389
+ forgetCreatedParseCacheDir(coldParseRebuildDir);
1390
+ }
1391
+ const parseCache = options.useParseCache === false
1392
+ ? emptyParseCache(coldParseRebuildDir)
1393
+ : await loadParseCache(storagePath);
1370
1394
  // Streamed structural emit (#2680). Resolved ONCE, so the pipeline flag and
1371
1395
  // the CSV-dir resolution below cannot disagree — and resolved HERE, not at
1372
1396
  // function entry, because the POSITION is load-bearing: the gate is
@@ -1400,49 +1424,63 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
1400
1424
  repoHasGit &&
1401
1425
  !schemaFingerprintMismatch(existingMeta.schemaFingerprint);
1402
1426
  // ── Phase 1: Full Pipeline (0–60%) ────────────────────────────────
1403
- const pipelineResult = await runPipelineFromRepo(repoPath, (p) => {
1404
- const phaseLabel = PHASE_LABELS[p.phase] || p.phase;
1405
- const scaled = Math.round(p.percent * 0.6);
1406
- const message = p.detail
1407
- ? `${p.message || phaseLabel} (${p.detail})`
1408
- : p.message || phaseLabel;
1409
- progress(p.phase, scaled, message);
1410
- }, {
1411
- parseCache,
1412
- workerPoolSize: options.workerPoolSize,
1413
- // CFG/PDG opt-in (#2081 M1). PipelineOptions.pdg fans out to the worker
1414
- // build gate (workerData.pdg) and the scope-resolution emit gate.
1415
- pdg: options.pdg === true,
1416
- pdgMaxFunctionLines: options.pdgMaxFunctionLines,
1417
- pdgMaxEdgesPerFunction: options.pdgMaxEdgesPerFunction,
1418
- pdgMaxReachingDefEdgesPerFunction: options.pdgMaxReachingDefEdgesPerFunction,
1419
- pdgMaxCdgEdgesPerFunction: options.pdgMaxCdgEdgesPerFunction,
1420
- pdgMaxTaintFindingsPerFunction: options.pdgMaxTaintFindingsPerFunction,
1421
- pdgMaxTaintHops: options.pdgMaxTaintHops,
1422
- pdgMaxInterprocFindings: options.pdgMaxInterprocFindings,
1423
- pdgMaxInterprocHops: options.pdgMaxInterprocHops,
1424
- pdgMaxInterprocEdges: options.pdgMaxInterprocEdges,
1425
- // Streaming/chunked PDG emit (#2202) — gated to full-rebuild runs
1426
- // (force === true) so the incremental writeback never reads back an
1427
- // offloaded BasicBlock layer. Memory-only; byte-identical output.
1428
- streamPdgEmit: resolveStreamPdgEmit(options),
1429
- pdgEmitChunkSize: resolvePdgEmitChunkSize(options),
1430
- // Streamed structural emit (#2680) — same full-rebuild gate as the PDG
1431
- // toggle above, for the same incremental-writeback reason.
1432
- streamGraphEmit: streamGraphEmitActive,
1433
- // Resolved ONLY when streaming is active: on a Windows non-ASCII storage
1434
- // path this helper mkdtempSyncs a real directory, so evaluating it
1435
- // unconditionally would leak one temp dir per analyze even with the flag
1436
- // off. The PDG sibling resolves inside its guard for the same reason.
1437
- graphEmitCsvDir: streamGraphEmitActive
1438
- ? resolveNativeSafeStorageDir(storagePath, 'graph-csv')
1439
- : undefined,
1440
- fetchWrappers: options.fetchWrappers,
1441
- skipDerivedGraphPhases,
1442
- springActuatorPath: options.springActuatorPath,
1443
- asyncApiSpecPath: options.asyncApiSpecPath,
1444
- springActuatorScanExclusions,
1445
- });
1427
+ let pipelineResult;
1428
+ try {
1429
+ pipelineResult = await runPipelineFromRepo(repoPath, (p) => {
1430
+ const phaseLabel = PHASE_LABELS[p.phase] || p.phase;
1431
+ const scaled = Math.round(p.percent * 0.6);
1432
+ const message = p.detail
1433
+ ? `${p.message || phaseLabel} (${p.detail})`
1434
+ : p.message || phaseLabel;
1435
+ progress(p.phase, scaled, message);
1436
+ }, {
1437
+ parseCache,
1438
+ workerPoolSize: options.workerPoolSize,
1439
+ // CFG/PDG opt-in (#2081 M1). PipelineOptions.pdg fans out to the worker
1440
+ // build gate (workerData.pdg) and the scope-resolution emit gate.
1441
+ pdg: options.pdg === true,
1442
+ pdgMaxFunctionLines: options.pdgMaxFunctionLines,
1443
+ pdgMaxEdgesPerFunction: options.pdgMaxEdgesPerFunction,
1444
+ pdgMaxReachingDefEdgesPerFunction: options.pdgMaxReachingDefEdgesPerFunction,
1445
+ pdgMaxCdgEdgesPerFunction: options.pdgMaxCdgEdgesPerFunction,
1446
+ pdgMaxTaintFindingsPerFunction: options.pdgMaxTaintFindingsPerFunction,
1447
+ pdgMaxTaintHops: options.pdgMaxTaintHops,
1448
+ pdgMaxInterprocFindings: options.pdgMaxInterprocFindings,
1449
+ pdgMaxInterprocHops: options.pdgMaxInterprocHops,
1450
+ pdgMaxInterprocEdges: options.pdgMaxInterprocEdges,
1451
+ // Streaming/chunked PDG emit (#2202) — gated to full-rebuild runs
1452
+ // (force === true) so the incremental writeback never reads back an
1453
+ // offloaded BasicBlock layer. Memory-only; byte-identical output.
1454
+ streamPdgEmit: resolveStreamPdgEmit(options),
1455
+ pdgEmitChunkSize: resolvePdgEmitChunkSize(options),
1456
+ // Streamed structural emit (#2680) — same full-rebuild gate as the PDG
1457
+ // toggle above, for the same incremental-writeback reason.
1458
+ streamGraphEmit: streamGraphEmitActive,
1459
+ // Resolved ONLY when streaming is active: on a Windows non-ASCII storage
1460
+ // path this helper mkdtempSyncs a real directory, so evaluating it
1461
+ // unconditionally would leak one temp dir per analyze even with the flag
1462
+ // off. The PDG sibling resolves inside its guard for the same reason.
1463
+ graphEmitCsvDir: streamGraphEmitActive
1464
+ ? resolveNativeSafeStorageDir(storagePath, 'graph-csv')
1465
+ : undefined,
1466
+ fetchWrappers: options.fetchWrappers,
1467
+ skipDerivedGraphPhases,
1468
+ springActuatorPath: options.springActuatorPath,
1469
+ asyncApiSpecPath: options.asyncApiSpecPath,
1470
+ springActuatorScanExclusions,
1471
+ });
1472
+ }
1473
+ catch (err) {
1474
+ await removeColdParseRebuildDir(coldParseRebuildDir, true);
1475
+ throw err;
1476
+ }
1477
+ if (options.force && (pipelineResult.parseCacheHitFileCount ?? 0) > 0) {
1478
+ log(`Rebuilt the graph and FTS while reusing cached parser output for ` +
1479
+ `${pipelineResult.parseCacheHitFileCount} file(s) ` +
1480
+ `(parse cache ${PARSE_CACHE_VERSION}). ` +
1481
+ `For same-version capture/query development changes, increment SCHEMA_BUMP in ` +
1482
+ `src/storage/parse-cache.ts to invalidate parser output.`);
1483
+ }
1446
1484
  // ── Phase 2: LadybugDB (60–85%) ──────────────────────────────────
1447
1485
  progress('lbug', 60, 'Loading into LadybugDB...');
1448
1486
  // Compute current per-file content hashes from the pipeline's File nodes.
@@ -3180,50 +3218,8 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
3180
3218
  // meta.indexedAt = T_new while lbugPath still resolves to the pre-swap
3181
3219
  // inode (which latched the reader on the stale index permanently). The meta
3182
3220
  // object is fully computed at this point; only its write is deferred.
3183
- // Persist the incremental parse cache for the next run. Wraps in
3184
- // try/catch so a cache-write failure never breaks an otherwise
3185
- // successful indexing run. Prune stale chunk-hash entries first so
3186
- // the cache file size stays bounded across runs (chunks whose
3187
- // composition no longer matches anything in the current scan are
3188
- // dead weight; the parse phase populates `usedKeys` as it processes
3189
- // chunks).
3190
- try {
3191
- // #2106 R6: the parse cache + durable store are shared across branches.
3192
- // Before pruning to this run's keys, fold in the OTHER branches' recorded
3193
- // chunk keys so a branch switch doesn't evict their still-live shards.
3194
- // Adding to usedKeys makes them survive pruneCache AND land in the saved
3195
- // index (saveParseCache builds the index from usedKeys). Excludes this
3196
- // run's own meta dir, so a single-branch repo folds in nothing → prune
3197
- // set byte-identical to today.
3198
- const { keys: siblingKeys, complete } = await collectBranchCacheKeys(storagePath, metaDir);
3199
- if (complete) {
3200
- for (const k of siblingKeys)
3201
- parseCache.usedKeys.add(k);
3202
- }
3203
- else {
3204
- // Fail-safe toward retention: a sibling meta was unreadable, so keep
3205
- // everything currently loaded rather than evict on incomplete info.
3206
- log('Parse cache: a branch meta was unreadable — retaining all cached chunks (#2106).');
3207
- for (const k of parseCache.entries.keys())
3208
- parseCache.usedKeys.add(k);
3209
- }
3210
- const pruned = pruneCache(parseCache, parseCache.usedKeys);
3211
- if (pruned > 0) {
3212
- log(`Parse cache: pruned ${pruned} stale chunk entries`);
3213
- }
3214
- const savedKeys = await saveParseCache(storagePath, parseCache);
3215
- // Prune the durable ParsedFile store to EXACTLY the parse cache's
3216
- // surviving keys (#2038 warm-cache coverage), so the two content-addressed
3217
- // stores stay coherent: a chunk is "cached" iff both its parse-cache shard
3218
- // and its durable shards exist. A quarantined chunk (in usedKeys but with
3219
- // no parse-cache shard) drops its durable subdir here and re-dispatches
3220
- // next run. Same try/catch — a durable-store write failure must never
3221
- // break an otherwise successful run (next run treats it as a miss).
3222
- await pruneAndSaveDurableParsedFileStore(getDurableParsedFileDir(storagePath), PARSE_CACHE_VERSION, new Set(savedKeys));
3223
- }
3224
- catch (e) {
3225
- log(`Warning: could not save parse cache (${e.message}); continuing.`);
3226
- }
3221
+ // Parse-cache publish waits until after that swap + saveMeta so a failed
3222
+ // registerRepo / close / swap cannot replace live shards (#3153).
3227
3223
  // Forward the --name alias and the registry-collision bypass bit.
3228
3224
  // `allowDuplicateName` is its own concern — independent from the
3229
3225
  // pipeline `force` above. The CLI maps it from
@@ -3244,8 +3240,8 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
3244
3240
  // ── #2354: the flat workspace slot has adopted this run's branch ──────
3245
3241
  // Drop a now-shadowed `branches/<slug>/` sub-index for the same label
3246
3242
  // (unreachable once the flat slot serves it) and align the registry's
3247
- // top-level branch label. Best-effort like the parse-cache save above
3248
- // (#2364 review F5): the index is complete and registered, and a failure
3243
+ // top-level branch label. Best-effort (#2364 review F5): the index is
3244
+ // complete and registered, and a failure
3249
3245
  // here leaves only a stale registry label / undeleted shadowed dir —
3250
3246
  // never wrong routing, because the flat meta this run already stamped is
3251
3247
  // what applyBranchScope trusts. Retried by the next content-changing run
@@ -3354,7 +3350,51 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
3354
3350
  // is a crash-safety improvement: a failed swap leaves the previous index
3355
3351
  // live and the next run recovers via the full-rebuild path.
3356
3352
  await saveMeta(metaDir, meta);
3353
+ // Persist the incremental parse cache only after a successful graph
3354
+ // publish (#3153). try/catch so a cache-write failure never breaks an
3355
+ // otherwise successful indexing run. Prune stale chunk-hash entries first
3356
+ // so the cache file size stays bounded across runs (chunks whose
3357
+ // composition no longer matches anything in the current scan are dead
3358
+ // weight; the parse phase populates `usedKeys` as it processes chunks).
3359
+ try {
3360
+ // #2106 R6: the parse cache + durable store are shared across branches.
3361
+ // Before pruning to this run's keys, fold in the OTHER branches' recorded
3362
+ // chunk keys so a branch switch doesn't evict their still-live shards.
3363
+ // Adding to usedKeys makes them survive pruneCache AND land in the saved
3364
+ // index (saveParseCache builds the index from usedKeys). Excludes this
3365
+ // run's own meta dir, so a single-branch repo folds in nothing → prune
3366
+ // set byte-identical to today.
3367
+ const { keys: siblingKeys, complete } = await collectBranchCacheKeys(storagePath, metaDir);
3368
+ if (complete) {
3369
+ for (const k of siblingKeys)
3370
+ parseCache.usedKeys.add(k);
3371
+ }
3372
+ else {
3373
+ // Fail-safe toward retention: a sibling meta was unreadable, so keep
3374
+ // everything currently loaded rather than evict on incomplete info.
3375
+ log('Parse cache: a branch meta was unreadable — retaining all cached chunks (#2106).');
3376
+ for (const k of parseCache.entries.keys())
3377
+ parseCache.usedKeys.add(k);
3378
+ }
3379
+ const pruned = pruneCache(parseCache, parseCache.usedKeys);
3380
+ if (pruned > 0) {
3381
+ log(`Parse cache: pruned ${pruned} stale chunk entries`);
3382
+ }
3383
+ const savedKeys = await saveParseCache(storagePath, parseCache);
3384
+ // Prune the durable ParsedFile store to EXACTLY the parse cache's
3385
+ // surviving keys (#2038 warm-cache coverage), so the two content-addressed
3386
+ // stores stay coherent: a chunk is "cached" iff both its parse-cache shard
3387
+ // and its durable shards exist. A quarantined chunk (in usedKeys but with
3388
+ // no parse-cache shard) drops its durable subdir here and re-dispatches
3389
+ // next run. Same try/catch — a durable-store write failure must never
3390
+ // break an otherwise successful run (next run treats it as a miss).
3391
+ await mergeStagedDurableParsedFileStore(storagePath, parseCache.storagePath ?? storagePath, PARSE_CACHE_VERSION, new Set(savedKeys));
3392
+ }
3393
+ catch (e) {
3394
+ log(`Warning: could not save parse cache (${e.message}); continuing.`);
3395
+ }
3357
3396
  progress('done', 100, 'Done');
3397
+ await removeColdParseRebuildDir(coldParseRebuildDir, true);
3358
3398
  return {
3359
3399
  repoName: projectName,
3360
3400
  repoPath,
@@ -3412,6 +3452,7 @@ async function runFullAnalysisInner(repoPath, options, callbacks, writeTarget, r
3412
3452
  /* swallow — orphan reclamation must never mask the real failure */
3413
3453
  }
3414
3454
  }
3455
+ await removeColdParseRebuildDir(coldParseRebuildDir, true);
3415
3456
  if (liveIndexMutationStarted) {
3416
3457
  // Preserve the original error identity/prototype: callers distinguish
3417
3458
  // IndexLockTimeoutError and other domain failures with `instanceof`.
@@ -19,9 +19,9 @@
19
19
  * - Chunk-level invalidation gives a useful speedup floor (98% on a single
20
20
  * 1-of-50 invalidated chunk) without touching the worker.
21
21
  *
22
- * Survives `--force` because it's content-addressed: the same bytes always
23
- * produce the same key. `--force` only matters for the LadybugDB writeback;
24
- * the cache itself is always safe to reuse.
22
+ * `--force` still reuses content-addressed shards (it only rebuilds graph/FTS).
23
+ * `useParseCache: false` reparses every file, writes a staging generation, and
24
+ * publishes onto this cache only after a successful analysis.
25
25
  */
26
26
  import type { ParseWorkerResult } from '../core/ingestion/workers/parse-worker.js';
27
27
  export declare const PARSE_CACHE_VERSION: string;
@@ -41,6 +41,21 @@ export type ParseCachePackFile = {
41
41
  * independent of scan order and worker count).
42
42
  */
43
43
  export declare const packParseCacheChunks: (files: readonly ParseCachePackFile[], byteBudget: number) => string[][];
44
+ /**
45
+ * Per-run staging root for `useParseCache: false`. Parse-cache shards and the
46
+ * ParsedFile stores write here so a crash cannot mix a new generation into the
47
+ * live `.gitnexus/parse-cache` / `parsedfile-cache` trees. `saveParseCache`
48
+ * publishes onto the live `storagePath` only after a successful analysis.
49
+ */
50
+ export declare const COLD_PARSE_REBUILD_DIRNAME = "parse-rebuild";
51
+ /** Deterministic staging path — tests only. Production uses {@link createColdParseRebuildDir}. */
52
+ export declare const getColdParseRebuildDir: (storagePath: string) => string;
53
+ /**
54
+ * Unique per analyze process so concurrent `--no-parse-cache` runs on
55
+ * different branch slots (shared `.gitnexus`, separate index locks) do not
56
+ * delete each other's staging tree.
57
+ */
58
+ export declare const createColdParseRebuildDir: (storagePath: string) => Promise<string>;
44
59
  /** Runtime view: keyed Map for fast lookup; mutated in place during a run. */
45
60
  export interface ParseCache {
46
61
  version: string;
@@ -57,6 +72,8 @@ export interface ParseCache {
57
72
  * When set, chunk payloads are loaded from / flushed to sharded files on
58
73
  * demand instead of retaining every chunk in `entries` for the whole run
59
74
  * (#1983 — Linux kernel OOM from duplicate in-memory cache + graph).
75
+ * May be a per-run staging directory (`getColdParseRebuildDir`) while the
76
+ * live index root is passed separately to `saveParseCache`.
60
77
  */
61
78
  storagePath?: string;
62
79
  /** Index of chunk hashes known to exist under `storagePath/parse-cache/`. */
@@ -105,6 +122,8 @@ export declare const mapReviver: (_key: string, value: unknown) => unknown;
105
122
  export declare const slimParseWorkerResultsForCache: (chunkResults: readonly ParseWorkerResult[]) => ParseWorkerResult[];
106
123
  /** Load one chunk shard. Does not retain it in `cache.entries`. */
107
124
  export declare const loadParseCacheChunk: (cache: ParseCache, chunkHash: string) => Promise<ParseWorkerResult[] | undefined>;
125
+ /** Drop the mkdir memo after the staging tree is wiped so the next persist recreates it. */
126
+ export declare const forgetCreatedParseCacheDir: (storagePath: string) => void;
108
127
  /**
109
128
  * Persist one chunk shard and avoid retaining it in RAM for the rest of the
110
129
  * run. Falls back to `cache.entries` when `storagePath` is unset (unit tests).
@@ -132,3 +151,4 @@ export declare const saveParseCache: (storagePath: string, cache: ParseCache) =>
132
151
  * don't keep their stale entries forever.
133
152
  */
134
153
  export declare const pruneCache: (cache: ParseCache, usedHashes: ReadonlySet<string>) => number;
154
+ export declare const emptyParseCache: (storagePath?: string) => ParseCache;
@@ -19,9 +19,9 @@
19
19
  * - Chunk-level invalidation gives a useful speedup floor (98% on a single
20
20
  * 1-of-50 invalidated chunk) without touching the worker.
21
21
  *
22
- * Survives `--force` because it's content-addressed: the same bytes always
23
- * produce the same key. `--force` only matters for the LadybugDB writeback;
24
- * the cache itself is always safe to reuse.
22
+ * `--force` still reuses content-addressed shards (it only rebuilds graph/FTS).
23
+ * `useParseCache: false` reparses every file, writes a staging generation, and
24
+ * publishes onto this cache only after a successful analysis.
25
25
  */
26
26
  import { createHash } from 'crypto';
27
27
  import { createRequire } from 'module';
@@ -804,6 +804,24 @@ export const packParseCacheChunks = (files, byteBudget) => {
804
804
  };
805
805
  const LEGACY_CACHE_FILENAME = 'parse-cache.json';
806
806
  const CACHE_DIRNAME = 'parse-cache';
807
+ /**
808
+ * Per-run staging root for `useParseCache: false`. Parse-cache shards and the
809
+ * ParsedFile stores write here so a crash cannot mix a new generation into the
810
+ * live `.gitnexus/parse-cache` / `parsedfile-cache` trees. `saveParseCache`
811
+ * publishes onto the live `storagePath` only after a successful analysis.
812
+ */
813
+ export const COLD_PARSE_REBUILD_DIRNAME = 'parse-rebuild';
814
+ /** Deterministic staging path — tests only. Production uses {@link createColdParseRebuildDir}. */
815
+ export const getColdParseRebuildDir = (storagePath) => path.join(storagePath, COLD_PARSE_REBUILD_DIRNAME);
816
+ /**
817
+ * Unique per analyze process so concurrent `--no-parse-cache` runs on
818
+ * different branch slots (shared `.gitnexus`, separate index locks) do not
819
+ * delete each other's staging tree.
820
+ */
821
+ export const createColdParseRebuildDir = async (storagePath) => {
822
+ await fs.mkdir(storagePath, { recursive: true });
823
+ return fs.mkdtemp(path.join(storagePath, `${COLD_PARSE_REBUILD_DIRNAME}.`));
824
+ };
807
825
  const CACHE_INDEX_FILENAME = 'index.json';
808
826
  /** Keys on disk always come from `computeChunkHash` — 64-char lowercase hex. */
809
827
  const CHUNK_CACHE_KEY_HEX_RE = /^[a-f0-9]{64}$/;
@@ -937,6 +955,10 @@ export const loadParseCacheChunk = async (cache, chunkHash) => {
937
955
  * process-scoped, so the Set stays bounded.
938
956
  */
939
957
  const createdCacheDirs = new Set();
958
+ /** Drop the mkdir memo after the staging tree is wiped so the next persist recreates it. */
959
+ export const forgetCreatedParseCacheDir = (storagePath) => {
960
+ createdCacheDirs.delete(getCacheDirPath(storagePath));
961
+ };
940
962
  /**
941
963
  * Persist one chunk shard and avoid retaining it in RAM for the rest of the
942
964
  * run. Falls back to `cache.entries` when `storagePath` is unset (unit tests).
@@ -1063,8 +1085,17 @@ export const saveParseCache = async (storagePath, cache) => {
1063
1085
  }
1064
1086
  continue;
1065
1087
  }
1066
- const existingPath = getCacheChunkPath(storagePath, chunkHash);
1067
- if (await copyV8CacheIfPresent(existingPath, chunkPath)) {
1088
+ // Cold rebuilds persist mid-run under `cache.storagePath` (staging). Prefer
1089
+ // that generation over a same-hash shard still sitting in the live dir so
1090
+ // we never publish a mixed old/new pair. Sibling-branch keys (#2106) that
1091
+ // this run did not rewrite still copy from the live path.
1092
+ const stagedPath = cache.storagePath !== undefined && cache.storagePath !== storagePath
1093
+ ? getCacheChunkPath(cache.storagePath, chunkHash)
1094
+ : undefined;
1095
+ const livePath = getCacheChunkPath(storagePath, chunkHash);
1096
+ const fromStaged = Boolean(stagedPath && cache.onDiskKeys?.has(chunkHash));
1097
+ const sourcePath = fromStaged && stagedPath ? stagedPath : livePath;
1098
+ if (await copyV8CacheIfPresent(sourcePath, chunkPath)) {
1068
1099
  writtenKeys.push(chunkHash);
1069
1100
  }
1070
1101
  }
@@ -1104,10 +1135,11 @@ export const pruneCache = (cache, usedHashes) => {
1104
1135
  }
1105
1136
  return removed;
1106
1137
  };
1107
- const emptyCache = (storagePath) => ({
1138
+ export const emptyParseCache = (storagePath) => ({
1108
1139
  version: PARSE_CACHE_VERSION,
1109
1140
  entries: new Map(),
1110
1141
  usedKeys: new Set(),
1111
1142
  storagePath,
1112
1143
  onDiskKeys: storagePath ? new Set() : undefined,
1113
1144
  });
1145
+ const emptyCache = emptyParseCache;
@@ -122,3 +122,10 @@ export declare const loadDurableParsedFileIndex: (durableDir: string, expectedVe
122
122
  * for a missing/corrupt shard). The index write is tmp+rename atomic.
123
123
  */
124
124
  export declare const pruneAndSaveDurableParsedFileStore: (durableDir: string, version: string, keepKeys: ReadonlySet<string>) => Promise<void>;
125
+ /**
126
+ * Overlay this run's staged durable ParsedFile chunks onto the live store,
127
+ * then prune the live tree to `keepKeys`. Live chunks this run did not rewrite
128
+ * (other branches, unused hashes) stay until prune. No-op overlay when the
129
+ * staged dir is missing.
130
+ */
131
+ export declare const mergeStagedDurableParsedFileStore: (liveStoragePath: string, stagedStoragePath: string, version: string, keepKeys: ReadonlySet<string>) => Promise<void>;
@@ -605,3 +605,73 @@ export const pruneAndSaveDurableParsedFileStore = async (durableDir, version, ke
605
605
  await fs.writeFile(tmp, JSON.stringify(idx), 'utf-8');
606
606
  await fs.rename(tmp, path.join(durableDir, DURABLE_INDEX_FILENAME));
607
607
  };
608
+ /**
609
+ * Overlay this run's staged durable ParsedFile chunks onto the live store,
610
+ * then prune the live tree to `keepKeys`. Live chunks this run did not rewrite
611
+ * (other branches, unused hashes) stay until prune. No-op overlay when the
612
+ * staged dir is missing.
613
+ */
614
+ export const mergeStagedDurableParsedFileStore = async (liveStoragePath, stagedStoragePath, version, keepKeys) => {
615
+ const liveDir = getDurableParsedFileDir(liveStoragePath);
616
+ if (stagedStoragePath === liveStoragePath) {
617
+ await pruneAndSaveDurableParsedFileStore(liveDir, version, keepKeys);
618
+ return;
619
+ }
620
+ const stagedDir = getDurableParsedFileDir(stagedStoragePath);
621
+ await fs.mkdir(liveDir, { recursive: true });
622
+ let stagedEntries = [];
623
+ try {
624
+ stagedEntries = await fs.readdir(stagedDir);
625
+ }
626
+ catch {
627
+ await pruneAndSaveDurableParsedFileStore(liveDir, version, keepKeys);
628
+ return;
629
+ }
630
+ for (const name of stagedEntries) {
631
+ if (name === DURABLE_INDEX_FILENAME)
632
+ continue;
633
+ const from = path.join(stagedDir, name);
634
+ const to = path.join(liveDir, name);
635
+ await replaceDurableChunkDir(from, to);
636
+ }
637
+ await pruneAndSaveDurableParsedFileStore(liveDir, version, keepKeys);
638
+ };
639
+ /** Move `from` onto `to` without deleting `to` until the new tree is in place. */
640
+ const replaceDurableChunkDir = async (from, to) => {
641
+ try {
642
+ await fs.rename(from, to);
643
+ return;
644
+ }
645
+ catch {
646
+ /* dest exists, or the rename is cross-device */
647
+ }
648
+ const backup = `${to}.replacing`;
649
+ await fs.rm(backup, { recursive: true, force: true });
650
+ let backedUp = false;
651
+ try {
652
+ await fs.rename(to, backup);
653
+ backedUp = true;
654
+ }
655
+ catch {
656
+ /* dest was missing */
657
+ }
658
+ try {
659
+ try {
660
+ await fs.rename(from, to);
661
+ }
662
+ catch {
663
+ await fs.cp(from, to, { recursive: true });
664
+ await fs.rm(from, { recursive: true, force: true });
665
+ }
666
+ }
667
+ catch (err) {
668
+ if (backedUp) {
669
+ await fs.rm(to, { recursive: true, force: true }).catch(() => { });
670
+ await fs.rename(backup, to).catch(() => { });
671
+ }
672
+ throw err;
673
+ }
674
+ if (backedUp) {
675
+ await fs.rm(backup, { recursive: true, force: true });
676
+ }
677
+ };
@@ -52,6 +52,8 @@ export interface PipelineResult {
52
52
  usedWorkerPool: boolean;
53
53
  /** Files actually dispatched to parser workers after parse-cache lookup. */
54
54
  reparsedFileCount: number;
55
+ /** Files restored from parse-cache chunks without parser-worker dispatch. */
56
+ parseCacheHitFileCount?: number;
55
57
  /** Files omitted from scope-resolution while the rest of analysis continued. */
56
58
  scopeExtractionFailures: readonly string[];
57
59
  /** Files scope resolution could not inspect because their parser was unavailable. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitnexus",
3
- "version": "1.6.11-rc.47",
3
+ "version": "1.6.11-rc.48",
4
4
  "description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
5
5
  "author": "Abhigyan Patwari",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -40,6 +40,7 @@
40
40
  ],
41
41
  "scripts": {
42
42
  "build": "node scripts/build.js",
43
+ "build:web": "node scripts/build.js --web",
43
44
  "serve": "tsx src/cli/index.ts serve",
44
45
  "dev": "tsx watch src/cli/index.ts",
45
46
  "test": "vitest run",
@@ -52,7 +53,7 @@
52
53
  "postinstall": "node scripts/build-tree-sitter-grammars.cjs",
53
54
  "assert-publish-coverage": "node scripts/assert-publish-grammar-coverage.cjs",
54
55
  "prepare": "node scripts/build.js",
55
- "prepack": "node scripts/assert-publish-grammar-coverage.cjs && node scripts/build.js",
56
+ "prepack": "node scripts/assert-publish-grammar-coverage.cjs && node scripts/build.js --web && node scripts/assert-web-assets.mjs web",
56
57
  "version": "node scripts/sync-plugin-manifests.mjs"
57
58
  },
58
59
  "dependencies": {
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+
5
+ const webDir = path.resolve(process.argv[2] ?? 'web');
6
+ const indexPath = path.join(webDir, 'index.html');
7
+
8
+ let html;
9
+ try {
10
+ html = fs.readFileSync(indexPath, 'utf8');
11
+ } catch (err) {
12
+ if (err?.code === 'ENOENT') {
13
+ console.error(`[web-assets] missing ${indexPath}`);
14
+ process.exit(1);
15
+ }
16
+ throw err;
17
+ }
18
+ const localRefs = [...html.matchAll(/(?:src|href)=["']([^"'#]+)["']/g)]
19
+ .map((match) => match[1])
20
+ .filter((ref) => !/^(?:[a-z]+:|\/\/|data:)/i.test(ref))
21
+ .map((ref) => ref.split(/[?#]/, 1)[0].replace(/^\/+/, ''));
22
+ const assetRefs = localRefs.filter((ref) => ref.startsWith('assets/'));
23
+
24
+ if (assetRefs.length === 0) {
25
+ console.error(`[web-assets] ${indexPath} references no assets`);
26
+ process.exit(1);
27
+ }
28
+
29
+ const missing = assetRefs.filter((ref) => !fs.existsSync(path.join(webDir, ref)));
30
+ if (missing.length > 0) {
31
+ console.error(`[web-assets] ${indexPath} references missing assets:\n${missing.join('\n')}`);
32
+ process.exit(1);
33
+ }
34
+
35
+ console.log(`[web-assets] verified index.html and ${assetRefs.length} referenced asset(s)`);
@@ -0,0 +1,72 @@
1
+ import { execSync } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+
5
+ export function shouldBuildWeb(argv = process.argv, env = process.env) {
6
+ return argv.includes('--web') || env.GITNEXUS_BUILD_WEB === '1';
7
+ }
8
+
9
+ export function shouldPreserveWebOutput(env = process.env) {
10
+ return (
11
+ env.npm_lifecycle_event === 'prepare' &&
12
+ (env.npm_command === 'pack' || env.npm_command === 'publish')
13
+ );
14
+ }
15
+
16
+ /** Build and copy the web UI when `--web` / GITNEXUS_BUILD_WEB=1 is set. */
17
+ export function runWebBuild({
18
+ root,
19
+ dist,
20
+ timeoutMs,
21
+ argv = process.argv,
22
+ env = process.env,
23
+ fsImpl = fs,
24
+ exec = execSync,
25
+ }) {
26
+ const webRoot = path.resolve(root, '..', 'gitnexus-web');
27
+ const webDest = path.join(dist, '..', 'web');
28
+
29
+ if (!shouldBuildWeb(argv, env)) {
30
+ if (shouldPreserveWebOutput(env)) {
31
+ console.log('[build] preserving prepack web UI during npm prepare');
32
+ } else {
33
+ fsImpl.rmSync(webDest, { recursive: true, force: true });
34
+ console.log(
35
+ '[build] skipping web UI and removed stale output ' +
36
+ '(pass --web or set GITNEXUS_BUILD_WEB=1 to include it)',
37
+ );
38
+ }
39
+ return { status: 'skipped', webDest };
40
+ }
41
+
42
+ if (!fsImpl.existsSync(path.join(webRoot, 'package.json'))) {
43
+ throw new Error(
44
+ `[build] web UI requested, but gitnexus-web was not found at ${webRoot}. ` +
45
+ 'Run this command from the complete monorepo checkout.',
46
+ );
47
+ }
48
+
49
+ console.log('[build] building gitnexus-web…');
50
+ if (!fsImpl.existsSync(path.join(webRoot, 'node_modules'))) {
51
+ // Deliberately untimed: this is a full second install, and killing it
52
+ // partway through leaves a broken tree and a misleading ETIMEDOUT.
53
+ // CI should install gitnexus-web itself (cached, its own step) so this
54
+ // fallback only fires for a local `npm pack` / `npm publish`.
55
+ console.log('[build] installing gitnexus-web dependencies (no local node_modules)…');
56
+ // String form uses the platform shell (cmd.exe / sh) so `npm` resolves to
57
+ // npm.cmd on Windows. execFileSync('npm') / execFileSync('npm.cmd')
58
+ // without a shell fails on Windows.
59
+ exec('npm ci', { cwd: webRoot, stdio: 'inherit' });
60
+ }
61
+ exec('npm run build', { cwd: webRoot, stdio: 'inherit', timeout: timeoutMs });
62
+
63
+ const builtIndex = path.join(webRoot, 'dist', 'index.html');
64
+ if (!fsImpl.existsSync(builtIndex)) {
65
+ throw new Error(`[build] gitnexus-web build completed without ${builtIndex}`);
66
+ }
67
+
68
+ fsImpl.rmSync(webDest, { recursive: true, force: true });
69
+ fsImpl.cpSync(path.join(webRoot, 'dist'), webDest, { recursive: true });
70
+ console.log('[build] copied web UI → gitnexus/web/');
71
+ return { status: 'built', webDest };
72
+ }
package/scripts/build.js CHANGED
@@ -8,17 +8,18 @@
8
8
  * 3. Copy gitnexus-shared/dist → dist/_shared
9
9
  * 4. Rewrite bare 'gitnexus-shared' specifiers → relative paths
10
10
  */
11
- import { execSync } from 'node:child_process';
11
+ import { execFileSync } from 'node:child_process';
12
12
  import fs from 'node:fs';
13
13
  import path from 'node:path';
14
14
  import { fileURLToPath } from 'node:url';
15
+ import { runWebBuild } from './build-web.js';
15
16
 
16
17
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
18
  const ROOT = path.resolve(__dirname, '..');
18
19
  const SHARED_ROOT = path.resolve(ROOT, '..', 'gitnexus-shared');
19
20
  const DIST = path.join(ROOT, 'dist');
20
21
  const SHARED_DEST = path.join(DIST, '_shared');
21
- const DEFAULT_BUILD_TIMEOUT_MS = 300_000;
22
+ const DEFAULT_BUILD_TIMEOUT_MS = 600_000;
22
23
 
23
24
  function getBuildTimeoutMs() {
24
25
  const raw = process.env.GITNEXUS_BUILD_TIMEOUT_MS;
@@ -51,17 +52,29 @@ if (!fs.existsSync(SHARED_ROOT)) {
51
52
  process.exit(1);
52
53
  }
53
54
 
55
+ // Launch tsc as `node typescript/lib/tsc.js` on every OS. The `.bin/tsc` /
56
+ // `tsc.cmd` shims are Windows-only wrappers; `execFileSync` cannot spawn a
57
+ // `.cmd` without a shell, and a separate `npm ci` in gitnexus-shared pulls
58
+ // TypeScript 7 optional platform packages (7+ minutes in CI).
59
+ const tscJs = path.join(ROOT, 'node_modules', 'typescript', 'lib', 'tsc.js');
60
+ if (!fs.existsSync(tscJs)) {
61
+ console.error(
62
+ `[build] missing ${tscJs}. Install gitnexus dependencies first (npm ci in gitnexus/).`,
63
+ );
64
+ process.exit(1);
65
+ }
66
+
67
+ function runTsc(cwd) {
68
+ execFileSync(process.execPath, [tscJs], { cwd, stdio: 'inherit', timeout: BUILD_TIMEOUT_MS });
69
+ }
70
+
54
71
  // ── 1. Build gitnexus-shared ───────────────────────────────────────
55
72
  console.log('[build] compiling gitnexus-shared…');
56
- const tscCmd =
57
- process.platform === 'win32'
58
- ? path.join('node_modules', '.bin', 'tsc.cmd')
59
- : path.join('node_modules', '.bin', 'tsc');
60
- execSync(tscCmd, { cwd: SHARED_ROOT, stdio: 'inherit', timeout: BUILD_TIMEOUT_MS });
73
+ runTsc(SHARED_ROOT);
61
74
 
62
75
  // ── 2. Build gitnexus ──────────────────────────────────────────────
63
76
  console.log('[build] compiling gitnexus…');
64
- execSync(tscCmd, { cwd: ROOT, stdio: 'inherit', timeout: BUILD_TIMEOUT_MS });
77
+ runTsc(ROOT);
65
78
 
66
79
  // ── 3. Copy shared dist ────────────────────────────────────────────
67
80
  console.log('[build] copying shared module into dist/_shared…');
@@ -104,26 +117,16 @@ walk(DIST, ['.js', '.d.ts'], rewriteFile);
104
117
 
105
118
  // ── 5. Make CLI entry executable ────────────────────────────────────
106
119
  const cliEntry = path.join(DIST, 'cli', 'index.js');
107
- if (fs.existsSync(cliEntry)) fs.chmodSync(cliEntry, 0o755);
108
-
109
- // ── 6. Build & copy web UI ──────────────────────────────────────────
110
- const WEB_ROOT = path.resolve(ROOT, '..', 'gitnexus-web');
111
- const WEB_DEST = path.join(DIST, '..', 'web');
112
-
113
- if (fs.existsSync(path.join(WEB_ROOT, 'package.json'))) {
114
- console.log('[build] building gitnexus-web…');
115
- if (!fs.existsSync(path.join(WEB_ROOT, 'node_modules'))) {
116
- console.log('[build] installing gitnexus-web dependencies…');
117
- execSync('npm ci', { cwd: WEB_ROOT, stdio: 'inherit', timeout: BUILD_TIMEOUT_MS });
118
- }
119
- execSync('npm run build', { cwd: WEB_ROOT, stdio: 'inherit', timeout: BUILD_TIMEOUT_MS });
120
-
121
- // Copy dist → gitnexus/web/ (shipped in the npm package)
122
- fs.rmSync(WEB_DEST, { recursive: true, force: true });
123
- fs.cpSync(path.join(WEB_ROOT, 'dist'), WEB_DEST, { recursive: true });
124
- console.log('[build] copied web UI → gitnexus/web/');
125
- } else {
126
- console.log('[build] skipping web UI (gitnexus-web not found)');
120
+ if (process.platform !== 'win32' && fs.existsSync(cliEntry)) {
121
+ fs.chmodSync(cliEntry, 0o755);
127
122
  }
128
123
 
124
+ // ── 6. Build & copy web UI (opt-in) ─────────────────────────────────
125
+ // Web UI is a separate package and is only required in the published
126
+ // tarball, so it is built by `prepack --web`, not by `prepare`. Serve
127
+ // falls back to the landing page when web/ is absent. CLI-only builds
128
+ // delete stale web/ except during npm pack/publish prepare, which must
129
+ // keep the prepack output.
130
+ runWebBuild({ root: ROOT, dist: DIST, timeoutMs: BUILD_TIMEOUT_MS });
131
+
129
132
  console.log(`[build] done — rewrote ${rewritten} files.`);