codevault 1.7.5 → 1.8.1

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 (130) hide show
  1. package/dist/chunking/semantic-chunker.d.ts.map +1 -1
  2. package/dist/chunking/semantic-chunker.js +16 -13
  3. package/dist/chunking/semantic-chunker.js.map +1 -1
  4. package/dist/chunking/token-counter.d.ts.map +1 -1
  5. package/dist/chunking/token-counter.js +12 -11
  6. package/dist/chunking/token-counter.js.map +1 -1
  7. package/dist/cli/commands/index-cmd.d.ts.map +1 -1
  8. package/dist/cli/commands/index-cmd.js +9 -3
  9. package/dist/cli/commands/index-cmd.js.map +1 -1
  10. package/dist/cli/commands/update-cmd.d.ts.map +1 -1
  11. package/dist/cli/commands/update-cmd.js +7 -1
  12. package/dist/cli/commands/update-cmd.js.map +1 -1
  13. package/dist/cli/commands/watch-cmd.d.ts.map +1 -1
  14. package/dist/cli/commands/watch-cmd.js +2 -0
  15. package/dist/cli/commands/watch-cmd.js.map +1 -1
  16. package/dist/cli.js +0 -0
  17. package/dist/codemap/io.d.ts +1 -0
  18. package/dist/codemap/io.d.ts.map +1 -1
  19. package/dist/codemap/io.js +8 -0
  20. package/dist/codemap/io.js.map +1 -1
  21. package/dist/config/constants.d.ts +8 -6
  22. package/dist/config/constants.d.ts.map +1 -1
  23. package/dist/config/constants.js +6 -4
  24. package/dist/config/constants.js.map +1 -1
  25. package/dist/config/loader.js +6 -6
  26. package/dist/config/loader.js.map +1 -1
  27. package/dist/config/resolver.d.ts +3 -0
  28. package/dist/config/resolver.d.ts.map +1 -1
  29. package/dist/config/resolver.js +4 -2
  30. package/dist/config/resolver.js.map +1 -1
  31. package/dist/config/types.d.ts +20 -0
  32. package/dist/config/types.d.ts.map +1 -1
  33. package/dist/core/IndexerEngine.d.ts +1 -0
  34. package/dist/core/IndexerEngine.d.ts.map +1 -1
  35. package/dist/core/IndexerEngine.js +33 -7
  36. package/dist/core/IndexerEngine.js.map +1 -1
  37. package/dist/core/SearchService.js +3 -3
  38. package/dist/core/SearchService.js.map +1 -1
  39. package/dist/core/batch-indexer.d.ts +5 -4
  40. package/dist/core/batch-indexer.d.ts.map +1 -1
  41. package/dist/core/batch-indexer.js +185 -40
  42. package/dist/core/batch-indexer.js.map +1 -1
  43. package/dist/core/indexing/FileProcessor.d.ts +5 -1
  44. package/dist/core/indexing/FileProcessor.d.ts.map +1 -1
  45. package/dist/core/indexing/FileProcessor.js +37 -4
  46. package/dist/core/indexing/FileProcessor.js.map +1 -1
  47. package/dist/core/indexing/IndexFinalizationStage.d.ts +7 -1
  48. package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
  49. package/dist/core/indexing/IndexFinalizationStage.js +55 -8
  50. package/dist/core/indexing/IndexFinalizationStage.js.map +1 -1
  51. package/dist/core/indexing/PersistManager.d.ts +18 -0
  52. package/dist/core/indexing/PersistManager.d.ts.map +1 -0
  53. package/dist/core/indexing/PersistManager.js +67 -0
  54. package/dist/core/indexing/PersistManager.js.map +1 -0
  55. package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
  56. package/dist/core/indexing/chunk-pipeline.js +12 -8
  57. package/dist/core/indexing/chunk-pipeline.js.map +1 -1
  58. package/dist/core/metadata.d.ts +3 -2
  59. package/dist/core/metadata.d.ts.map +1 -1
  60. package/dist/core/metadata.js +2 -2
  61. package/dist/core/metadata.js.map +1 -1
  62. package/dist/core/search/HybridFusion.d.ts +4 -4
  63. package/dist/core/search/HybridFusion.d.ts.map +1 -1
  64. package/dist/core/search/HybridFusion.js +8 -8
  65. package/dist/core/search/HybridFusion.js.map +1 -1
  66. package/dist/core/search/ResultMapper.d.ts.map +1 -1
  67. package/dist/core/search/ResultMapper.js +4 -4
  68. package/dist/core/search/ResultMapper.js.map +1 -1
  69. package/dist/core/types.d.ts +2 -0
  70. package/dist/core/types.d.ts.map +1 -1
  71. package/dist/core/unified-metadata.d.ts +23 -0
  72. package/dist/core/unified-metadata.d.ts.map +1 -0
  73. package/dist/core/unified-metadata.js +58 -0
  74. package/dist/core/unified-metadata.js.map +1 -0
  75. package/dist/database/db.d.ts +4 -0
  76. package/dist/database/db.d.ts.map +1 -1
  77. package/dist/database/db.js +22 -0
  78. package/dist/database/db.js.map +1 -1
  79. package/dist/indexer/ChangeQueue.d.ts +1 -0
  80. package/dist/indexer/ChangeQueue.d.ts.map +1 -1
  81. package/dist/indexer/ChangeQueue.js +2 -1
  82. package/dist/indexer/ChangeQueue.js.map +1 -1
  83. package/dist/indexer/WatchService.d.ts +1 -0
  84. package/dist/indexer/WatchService.d.ts.map +1 -1
  85. package/dist/indexer/WatchService.js +1 -0
  86. package/dist/indexer/WatchService.js.map +1 -1
  87. package/dist/indexer/merkle.d.ts +1 -0
  88. package/dist/indexer/merkle.d.ts.map +1 -1
  89. package/dist/indexer/merkle.js +8 -0
  90. package/dist/indexer/merkle.js.map +1 -1
  91. package/dist/indexer/update.d.ts +2 -1
  92. package/dist/indexer/update.d.ts.map +1 -1
  93. package/dist/indexer/update.js +3 -2
  94. package/dist/indexer/update.js.map +1 -1
  95. package/dist/mcp-server.js +0 -0
  96. package/dist/providers/base.d.ts +1 -1
  97. package/dist/providers/base.d.ts.map +1 -1
  98. package/dist/providers/base.js +9 -4
  99. package/dist/providers/base.js.map +1 -1
  100. package/dist/providers/chat-llm.d.ts +2 -0
  101. package/dist/providers/chat-llm.d.ts.map +1 -1
  102. package/dist/providers/chat-llm.js +21 -6
  103. package/dist/providers/chat-llm.js.map +1 -1
  104. package/dist/providers/openai.d.ts +2 -0
  105. package/dist/providers/openai.d.ts.map +1 -1
  106. package/dist/providers/openai.js +71 -10
  107. package/dist/providers/openai.js.map +1 -1
  108. package/dist/storage/encrypted-chunks.d.ts +3 -3
  109. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  110. package/dist/storage/encrypted-chunks.js +28 -22
  111. package/dist/storage/encrypted-chunks.js.map +1 -1
  112. package/dist/symbols/extract.d.ts +7 -0
  113. package/dist/symbols/extract.d.ts.map +1 -1
  114. package/dist/symbols/extract.js +3 -3
  115. package/dist/symbols/extract.js.map +1 -1
  116. package/dist/synthesis/conversational-synthesizer.js +1 -1
  117. package/dist/synthesis/conversational-synthesizer.js.map +1 -1
  118. package/dist/synthesis/synthesizer.js +1 -1
  119. package/dist/synthesis/synthesizer.js.map +1 -1
  120. package/dist/tests/semantic-chunker.test.js +18 -0
  121. package/dist/tests/semantic-chunker.test.js.map +1 -1
  122. package/dist/utils/cli-ui.d.ts +1 -1
  123. package/dist/utils/cli-ui.d.ts.map +1 -1
  124. package/dist/utils/cli-ui.js +32 -5
  125. package/dist/utils/cli-ui.js.map +1 -1
  126. package/dist/utils/indexer-with-progress.d.ts +2 -1
  127. package/dist/utils/indexer-with-progress.d.ts.map +1 -1
  128. package/dist/utils/indexer-with-progress.js +56 -23
  129. package/dist/utils/indexer-with-progress.js.map +1 -1
  130. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import type { ProviderRoutingConfig } from './types.js';
1
2
  export interface EmbeddingOptions {
2
3
  apiKey?: string;
3
4
  baseUrl?: string;
@@ -6,6 +7,7 @@ export interface EmbeddingOptions {
6
7
  maxTokens?: number;
7
8
  rpm?: number | null;
8
9
  tpm?: number | null;
10
+ routing?: ProviderRoutingConfig;
9
11
  }
10
12
  export interface ChatOptions {
11
13
  apiKey?: string;
@@ -13,6 +15,7 @@ export interface ChatOptions {
13
15
  model?: string;
14
16
  maxTokens?: number;
15
17
  temperature?: number;
18
+ routing?: ProviderRoutingConfig;
16
19
  }
17
20
  export interface RerankerOptions {
18
21
  apiUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,SAAM,GAAG,eAAe,CA8BtE"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,SAAM,GAAG,eAAe,CAgCtE"}
@@ -8,14 +8,16 @@ export function resolveProviderContext(basePath = '.') {
8
8
  dimensions: config.providers?.openai?.dimensions,
9
9
  maxTokens: config.maxTokens,
10
10
  rpm: config.rateLimit?.rpm ?? null,
11
- tpm: config.rateLimit?.tpm ?? null
11
+ tpm: config.rateLimit?.tpm ?? null,
12
+ routing: config.providers?.openai?.routing
12
13
  };
13
14
  const chat = {
14
15
  apiKey: config.chatLLM?.openai?.apiKey,
15
16
  baseUrl: config.chatLLM?.openai?.baseUrl,
16
17
  model: config.chatLLM?.openai?.model,
17
18
  maxTokens: config.chatLLM?.openai?.maxTokens,
18
- temperature: config.chatLLM?.openai?.temperature
19
+ temperature: config.chatLLM?.openai?.temperature,
20
+ routing: config.chatLLM?.openai?.routing
19
21
  };
20
22
  const reranker = {
21
23
  apiUrl: config.reranker?.apiUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkCzC,MAAM,UAAU,sBAAsB,CAAC,QAAQ,GAAG,GAAG;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAqB;QAClC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM;QACxC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;QAC1C,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK;QACtC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI;QAClC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI;KACnC,CAAC;IAEF,MAAM,IAAI,GAAgB;QACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO;QACxC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;QACpC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS;QAC5C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW;KACjD,CAAC;IAEF,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM;QAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM;QAC/B,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK;QAC7B,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa;QAC7C,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS;KACtC,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/config/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqCzC,MAAM,UAAU,sBAAsB,CAAC,QAAQ,GAAG,GAAG;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAqB;QAClC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM;QACxC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;QAC1C,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK;QACtC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI;QAClC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI;QAClC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;KAC3C,CAAC;IAEF,MAAM,IAAI,GAAgB;QACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO;QACxC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;QACpC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS;QAC5C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW;QAChD,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO;KACzC,CAAC;IAEF,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM;QAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM;QAC/B,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK;QAC7B,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa;QAC7C,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS;KACtC,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC"}
@@ -1,8 +1,27 @@
1
+ export interface ProviderRoutingConfig {
2
+ order?: string[];
3
+ allow_fallbacks?: boolean;
4
+ require_parameters?: boolean;
5
+ data_collection?: 'allow' | 'deny';
6
+ zdr?: boolean;
7
+ enforce_distillable_text?: boolean;
8
+ only?: string[];
9
+ ignore?: string[];
10
+ quantizations?: string[];
11
+ sort?: 'price' | 'throughput' | 'latency';
12
+ max_price?: {
13
+ prompt?: number;
14
+ completion?: number;
15
+ request?: number;
16
+ image?: number;
17
+ };
18
+ }
1
19
  export interface ProviderConfig {
2
20
  apiKey?: string;
3
21
  model?: string;
4
22
  baseUrl?: string;
5
23
  dimensions?: number;
24
+ routing?: ProviderRoutingConfig;
6
25
  }
7
26
  export interface RateLimitConfig {
8
27
  rpm?: number;
@@ -18,6 +37,7 @@ export interface ChatLLMConfig {
18
37
  model?: string;
19
38
  maxTokens?: number;
20
39
  temperature?: number;
40
+ routing?: ProviderRoutingConfig;
21
41
  }
22
42
  export interface CodevaultConfig {
23
43
  defaultProvider?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,cAAc,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,eAAe,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1C,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,cAAc,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,eAAe,CAAC;CACtB"}
@@ -11,6 +11,7 @@ export declare class IndexerEngine {
11
11
  constructor(options?: IndexProjectOptions);
12
12
  index(): Promise<IndexProjectResult>;
13
13
  private resolveConcurrency;
14
+ private computeDynamicDefault;
14
15
  private runWithConcurrency;
15
16
  }
16
17
  //# sourceMappingURL=IndexerEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IndexerEngine.d.ts","sourceRoot":"","sources":["../../src/core/IndexerEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQ1E;;;;;;GAMG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,mBAAwB;IAExC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAqEjD,OAAO,CAAC,kBAAkB;YAUZ,kBAAkB;CAuBjC"}
1
+ {"version":3,"file":"IndexerEngine.d.ts","sourceRoot":"","sources":["../../src/core/IndexerEngine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAS1E;;;;;;GAMG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,mBAAwB;IAExC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAmFjD,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,qBAAqB;YAMf,kBAAkB;CAuBjC"}
@@ -1,4 +1,5 @@
1
1
  import path from 'path';
2
+ import os from 'node:os';
2
3
  import { normalizeToProjectPath } from '../indexer/merkle.js';
3
4
  import { FileScanner } from './indexing/file-scanner.js';
4
5
  import { IndexContext } from './indexing/IndexContext.js';
@@ -6,6 +7,7 @@ import { IndexState } from './indexing/IndexState.js';
6
7
  import { FileProcessor } from './indexing/FileProcessor.js';
7
8
  import { IndexFinalizationStage } from './indexing/IndexFinalizationStage.js';
8
9
  import { INDEXING_CONSTANTS } from '../config/constants.js';
10
+ import { PersistManager } from './indexing/PersistManager.js';
9
11
  /**
10
12
  * IndexerEngine orchestrates the code indexing process using a stage-based architecture:
11
13
  * - IndexContext: Setup and initialization
@@ -34,14 +36,27 @@ export class IndexerEngine {
34
36
  // Scan for files to process
35
37
  const scanner = new FileScanner();
36
38
  const { files, toDelete } = await scanner.scan(repo, normalizedChanged);
39
+ if (onProgress) {
40
+ onProgress({
41
+ type: 'scan_complete',
42
+ fileCount: files.length,
43
+ totalFiles: files.length
44
+ });
45
+ }
37
46
  for (const file of toDelete) {
38
47
  deletedSet.add(file);
39
48
  }
40
49
  const isPartialUpdate = normalizedChanged !== null;
41
50
  // Stage 1: Setup and initialization
42
51
  const context = await IndexContext.prepare(this.options);
52
+ if (onProgress && context.batchProcessor.setOnChunkEmbedded) {
53
+ context.batchProcessor.setOnChunkEmbedded(({ file, chunkId }) => {
54
+ onProgress({ type: 'chunk_embedded', file, chunkId });
55
+ });
56
+ }
43
57
  const state = new IndexState(context.codemap, context.updatedMerkle);
44
- const fileProcessor = new FileProcessor(context, state, onProgress);
58
+ const persistManager = new PersistManager(context, state, 1500);
59
+ const fileProcessor = new FileProcessor(context, state, onProgress, persistManager);
45
60
  // Stage 2: Process files
46
61
  const concurrency = this.resolveConcurrency();
47
62
  await this.runWithConcurrency(files, concurrency, async (rel) => {
@@ -62,17 +77,28 @@ export class IndexerEngine {
62
77
  }
63
78
  }
64
79
  // Stage 4: Finalization
65
- const finalizer = new IndexFinalizationStage(context, state, onProgress);
80
+ const finalizer = new IndexFinalizationStage(context, state, onProgress, persistManager);
66
81
  return await finalizer.finalize();
67
82
  }
68
83
  resolveConcurrency() {
84
+ const { DEFAULT_CONCURRENCY, MAX_CONCURRENCY } = INDEXING_CONSTANTS;
69
85
  const requested = this.options.concurrency;
70
- const parsedEnv = INDEXING_CONSTANTS.DEFAULT_CONCURRENCY;
71
- const value = typeof requested === 'number' && !Number.isNaN(requested)
86
+ const envValue = process.env.CODEVAULT_INDEXING_CONCURRENCY;
87
+ const parsedEnv = envValue ? Number.parseInt(envValue, 10) : null;
88
+ const optionValue = typeof requested === 'number' && Number.isFinite(requested)
72
89
  ? requested
73
- : parsedEnv;
74
- const safeValue = Number.isFinite(value) ? value : 1;
75
- return Math.max(1, Math.floor(safeValue));
90
+ : null;
91
+ const dynamicDefault = this.computeDynamicDefault(MAX_CONCURRENCY);
92
+ const fallbackDefault = Number.isFinite(DEFAULT_CONCURRENCY) ? DEFAULT_CONCURRENCY : dynamicDefault;
93
+ const rawValue = optionValue ?? parsedEnv ?? dynamicDefault ?? fallbackDefault;
94
+ const safeValue = Number.isFinite(rawValue) ? rawValue : 1;
95
+ const bounded = Math.min(MAX_CONCURRENCY, Math.max(1, Math.floor(safeValue)));
96
+ return bounded;
97
+ }
98
+ computeDynamicDefault(maxConcurrency) {
99
+ const cpuCount = typeof os.cpus === 'function' ? os.cpus().length : 1;
100
+ const calculated = Math.max(1, cpuCount * 2);
101
+ return Math.min(calculated, maxConcurrency);
76
102
  }
77
103
  async runWithConcurrency(items, concurrency, worker) {
78
104
  if (!items.length)
@@ -1 +1 @@
1
- {"version":3,"file":"IndexerEngine.js","sourceRoot":"","sources":["../../src/core/IndexerEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndexerEngine.js","sourceRoot":"","sources":["../../src/core/IndexerEngine.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ export class SearchService {
88
88
  let bm25PrefilterResults;
89
89
  let vectorCandidates = scopedChunks;
90
90
  if (hybridEnabled && bm25Enabled) {
91
- const prefilter = this.fusion.prefilterCandidates({
91
+ const prefilter = await this.fusion.prefilterCandidates({
92
92
  hybridEnabled,
93
93
  bm25Enabled,
94
94
  query: normalizedQuery,
@@ -124,7 +124,7 @@ export class SearchService {
124
124
  }
125
125
  }
126
126
  // Hybrid fusion
127
- const { fusedResults, bm25Fused, bm25CandidateCount: fusedBm25CandidateCount } = this.fusion.fuseResults({
127
+ const { fusedResults, bm25Fused, bm25CandidateCount: fusedBm25CandidateCount } = await this.fusion.fuseResults({
128
128
  hybridEnabled,
129
129
  bm25Enabled,
130
130
  selectionBudget,
@@ -228,7 +228,7 @@ export class SearchService {
228
228
  const basePath = path.resolve(workingPath);
229
229
  const chunkDir = path.join(basePath, '.codevault/chunks');
230
230
  try {
231
- const result = readChunkFromDisk({ chunkDir, sha });
231
+ const result = await readChunkFromDisk({ chunkDir, sha });
232
232
  if (!result) {
233
233
  return { success: false, error: 'Chunk not found' };
234
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../src/core/SearchService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../src/core/SearchService.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,12 @@ export declare class BatchEmbeddingProcessor {
27
27
  private batch;
28
28
  private batchSize;
29
29
  private mutex;
30
+ private onChunkEmbedded?;
30
31
  constructor(embeddingProvider: EmbeddingProvider, db: Database, batchSize?: number);
32
+ setOnChunkEmbedded(cb: (info: {
33
+ file: string;
34
+ chunkId: string;
35
+ }) => void): void;
31
36
  /**
32
37
  * Add a chunk to the batch queue
33
38
  */
@@ -36,10 +41,6 @@ export declare class BatchEmbeddingProcessor {
36
41
  * Process any remaining chunks in the batch
37
42
  */
38
43
  flush(): Promise<void>;
39
- /**
40
- * Process the current batch (with mutex protection)
41
- */
42
- private processBatch;
43
44
  /**
44
45
  * Process a batch with smart error handling and retry logic
45
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"batch-indexer.d.ts","sourceRoot":"","sources":["../../src/core/batch-indexer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA8BlD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,GAAG,CAAC;QACvB,kBAAkB,EAAE,GAAG,EAAE,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IAMhC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,EAAE;IANZ,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAe;gBAGlB,iBAAiB,EAAE,iBAAiB,EACpC,EAAE,EAAE,QAAQ,EACpB,SAAS,GAAE,MAAmB;IAKhC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;YACW,YAAY;IAS1B;;OAEG;YACW,qBAAqB;IAkCnC;;OAEG;YACW,oBAAoB;IAsClC;;OAEG;YACW,8BAA8B;IA4C5C;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"batch-indexer.d.ts","sourceRoot":"","sources":["../../src/core/batch-indexer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA8FlD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,GAAG,CAAC;QACvB,kBAAkB,EAAE,GAAG,EAAE,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IAOhC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,EAAE;IAPZ,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAoD;gBAGlE,iBAAiB,EAAE,iBAAiB,EACpC,EAAE,EAAE,QAAQ,EACpB,SAAS,GAAE,MAAmB;IAKhC,kBAAkB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAI/E;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;OAEG;YACW,qBAAqB;IAoHnC;;OAEG;YACW,oBAAoB;IA6DlC;;OAEG;YACW,8BAA8B;IA4C5C;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
@@ -2,7 +2,18 @@ import { BATCH_SIZE } from '../providers/base.js';
2
2
  import { Mutex } from '../utils/mutex.js';
3
3
  import { log } from '../utils/logger.js';
4
4
  const MAX_BATCH_RETRIES = 3;
5
+ const MAX_TRANSIENT_RETRIES = 3;
5
6
  const INITIAL_RETRY_DELAY_MS = 1000;
7
+ const JITTER_FACTOR = 0.2; // ±20% jitter to avoid thundering herd
8
+ const MAX_SUBDIVISION_DEPTH = 2; // Stop splitting after this depth and fallback to per-chunk
9
+ const MIN_BATCH_BEFORE_FALLBACK = 8; // If below this size, go straight to per-chunk instead of more splits
10
+ const MAX_FATAL_SUBDIVISION_DEPTH = 1; // After a fatal API response, only split once before fallback
11
+ const MAX_FATAL_RETRIES = 1; // Try fatal batch once more, then per-chunk
12
+ const MAX_ANY_RETRIES = 6; // Upper cap for repeated full-batch retries on transient/provider errors
13
+ const backoffWithCap = (attempt) => {
14
+ const base = INITIAL_RETRY_DELAY_MS * Math.pow(2, attempt);
15
+ return Math.min(base, 30000); // cap at 30s
16
+ };
6
17
  function isRateLimitError(error) {
7
18
  const message = error?.message || String(error);
8
19
  return (error?.status === 429 ||
@@ -20,6 +31,51 @@ function isBatchSizeError(error) {
20
31
  message.includes('request size') ||
21
32
  message.includes('token limit'));
22
33
  }
34
+ function isTransientApiError(error) {
35
+ const status = error?.status || error?.statusCode;
36
+ const message = error?.message || String(error);
37
+ // Upstream 5xx/gateway and common flaky transport signals
38
+ return ((typeof status === 'number' && status >= 500 && status < 600) ||
39
+ message.includes('Invalid API response') ||
40
+ message.includes('Bad Gateway') ||
41
+ message.includes('Service Unavailable') ||
42
+ message.includes('Gateway Timeout') ||
43
+ message.includes('socket hang up') ||
44
+ message.includes('ECONNRESET') ||
45
+ message.includes('ETIMEDOUT') ||
46
+ message.includes('EAI_AGAIN'));
47
+ }
48
+ const withJitter = (base) => {
49
+ const factor = 1 + (Math.random() * 2 - 1) * JITTER_FACTOR; // 0.8–1.2
50
+ return Math.max(0, Math.floor(base * factor));
51
+ };
52
+ // Backoff helper (unique name to avoid duplicate definitions on reload)
53
+ const backoffWithCapEmbed = (attempt) => {
54
+ const base = INITIAL_RETRY_DELAY_MS * Math.pow(2, attempt);
55
+ return Math.min(base, 20000); // cap at 20s
56
+ };
57
+ function serializeErrorForLog(error) {
58
+ const info = {};
59
+ if (!error)
60
+ return { message: 'unknown error' };
61
+ const candidates = ['message', 'name', 'code', 'status', 'statusCode', 'type'];
62
+ for (const key of candidates) {
63
+ if (error[key] !== undefined)
64
+ info[key] = String(error[key]);
65
+ }
66
+ // OpenAI SDK sometimes nests response data on error.response or error.error
67
+ const responseData = error?.response?.data ?? error?.error?.data;
68
+ if (responseData !== undefined) {
69
+ try {
70
+ const json = typeof responseData === 'string' ? responseData : JSON.stringify(responseData);
71
+ info.responseData = json.slice(0, 500); // cap to avoid huge logs
72
+ }
73
+ catch {
74
+ info.responseData = '[unserializable responseData]';
75
+ }
76
+ }
77
+ return info;
78
+ }
23
79
  /**
24
80
  * Batches chunk embeddings for efficiency and handles retry/backoff with a SQLite sink.
25
81
  *
@@ -31,69 +87,121 @@ export class BatchEmbeddingProcessor {
31
87
  batch = [];
32
88
  batchSize;
33
89
  mutex = new Mutex();
90
+ onChunkEmbedded;
34
91
  constructor(embeddingProvider, db, batchSize = BATCH_SIZE) {
35
92
  this.embeddingProvider = embeddingProvider;
36
93
  this.db = db;
37
94
  this.batchSize = batchSize;
38
95
  }
96
+ setOnChunkEmbedded(cb) {
97
+ this.onChunkEmbedded = cb;
98
+ }
39
99
  /**
40
100
  * Add a chunk to the batch queue
41
101
  */
42
102
  async addChunk(chunk) {
43
- this.batch.push(chunk);
44
- // Process batch when it reaches the threshold
45
- if (this.batch.length >= this.batchSize) {
46
- await this.processBatch();
47
- }
48
- }
49
- /**
50
- * Process any remaining chunks in the batch
51
- */
52
- async flush() {
103
+ let batchToProcess = null;
53
104
  await this.mutex.runExclusive(async () => {
54
- if (this.batch.length > 0) {
55
- await this.processBatchWithRetry(this.batch, 0);
105
+ this.batch.push(chunk);
106
+ // Snapshot the batch when it reaches the threshold; process it outside the lock
107
+ if (this.batch.length >= this.batchSize) {
108
+ batchToProcess = this.batch;
56
109
  this.batch = [];
57
110
  }
58
111
  });
112
+ if (batchToProcess) {
113
+ await this.processBatchWithRetry(batchToProcess);
114
+ }
59
115
  }
60
116
  /**
61
- * Process the current batch (with mutex protection)
117
+ * Process any remaining chunks in the batch
62
118
  */
63
- async processBatch() {
119
+ async flush() {
120
+ let batchToProcess = null;
64
121
  await this.mutex.runExclusive(async () => {
65
122
  if (this.batch.length > 0) {
66
- await this.processBatchWithRetry(this.batch, 0);
123
+ batchToProcess = this.batch;
67
124
  this.batch = [];
68
125
  }
69
126
  });
127
+ if (batchToProcess) {
128
+ await this.processBatchWithRetry(batchToProcess);
129
+ }
70
130
  }
71
131
  /**
72
132
  * Process a batch with smart error handling and retry logic
73
133
  */
74
- async processBatchWithRetry(currentBatch, retryCount) {
134
+ async processBatchWithRetry(currentBatch, retryState = { rate: 0, transient: 0 }, depth = 0, fatalSeen = false) {
75
135
  try {
76
136
  await this.processBatchInternal(currentBatch);
77
137
  }
78
138
  catch (error) {
139
+ log.debug('Batch processing error', {
140
+ batchSize: currentBatch.length,
141
+ depth,
142
+ retryRate: retryState.rate,
143
+ retryTransient: retryState.transient,
144
+ retryFatal: retryState.fatal ?? 0,
145
+ fatalSeen,
146
+ provider: this.embeddingProvider.getName?.() ?? 'unknown',
147
+ error: serializeErrorForLog(error),
148
+ sampleChunks: currentBatch.slice(0, 3).map(c => c.chunkId)
149
+ });
150
+ const fatalApi = isFatalApiResponse(error);
79
151
  // Smart error handling based on error type
80
- if (isBatchSizeError(error) && currentBatch.length > 1) {
152
+ if (!fatalApi && isBatchSizeError(error) && currentBatch.length > 1) {
81
153
  // Batch too large - split in half and retry
82
154
  log.warn(`Batch size too large (${currentBatch.length} chunks), splitting and retrying`);
83
155
  const mid = Math.floor(currentBatch.length / 2);
84
156
  const firstHalf = currentBatch.slice(0, mid);
85
157
  const secondHalf = currentBatch.slice(mid);
86
158
  // Process both halves recursively
87
- await this.processBatchWithRetry(firstHalf, 0);
88
- await this.processBatchWithRetry(secondHalf, 0);
159
+ await this.processBatchWithRetry(firstHalf, retryState, depth + 1, fatalSeen);
160
+ await this.processBatchWithRetry(secondHalf, retryState, depth + 1, fatalSeen);
89
161
  return;
90
162
  }
91
- else if (isRateLimitError(error) && retryCount < MAX_BATCH_RETRIES) {
163
+ else if (!fatalApi && isRateLimitError(error) && retryState.rate < MAX_BATCH_RETRIES) {
92
164
  // Rate limit error - exponential backoff
93
- const delay = INITIAL_RETRY_DELAY_MS * Math.pow(2, retryCount);
94
- log.warn(`Rate limit hit, retrying batch in ${delay}ms (attempt ${retryCount + 1}/${MAX_BATCH_RETRIES})`);
165
+ const delay = INITIAL_RETRY_DELAY_MS * Math.pow(2, retryState.rate);
166
+ log.warn(`Rate limit hit, retrying batch in ${delay}ms (attempt ${retryState.rate + 1}/${MAX_BATCH_RETRIES})`);
167
+ await new Promise(resolve => setTimeout(resolve, delay));
168
+ await this.processBatchWithRetry(currentBatch, { ...retryState, rate: retryState.rate + 1 }, depth, fatalSeen);
169
+ return;
170
+ }
171
+ else if (!fatalApi && isTransientApiError(error) && retryState.transient < MAX_TRANSIENT_RETRIES) {
172
+ const baseDelay = INITIAL_RETRY_DELAY_MS * Math.pow(2, retryState.transient);
173
+ const delay = withJitter(baseDelay);
174
+ log.warn(`Transient API error, retrying batch in ${delay}ms (attempt ${retryState.transient + 1}/${MAX_TRANSIENT_RETRIES})`);
175
+ await new Promise(resolve => setTimeout(resolve, delay));
176
+ await this.processBatchWithRetry(currentBatch, { ...retryState, transient: retryState.transient + 1 }, depth, fatalSeen);
177
+ return;
178
+ }
179
+ else if (fatalApi) {
180
+ const fatalAttempt = retryState.fatal ?? 0;
181
+ if (fatalAttempt < MAX_FATAL_RETRIES) {
182
+ const delay = backoffWithCapEmbed(fatalAttempt);
183
+ log.debug(`Fatal API response. Retrying full batch after ${delay}ms (fatal attempt ${fatalAttempt + 1}/${MAX_FATAL_RETRIES})`);
184
+ await new Promise(resolve => setTimeout(resolve, delay));
185
+ await this.processBatchWithRetry(currentBatch, { ...retryState, fatal: fatalAttempt + 1 }, depth, true);
186
+ return;
187
+ }
188
+ log.debug(`Fatal API response persisted after ${MAX_FATAL_RETRIES} retry. Falling back to per-chunk.`);
189
+ await this.fallbackToIndividualProcessing(currentBatch);
190
+ return;
191
+ }
192
+ else {
193
+ // Transient but non-fatal provider errors: retry whole batch with capped backoff
194
+ const attempt = retryState.any ?? 0;
195
+ const delay = backoffWithCapEmbed(attempt);
196
+ const nextAttempt = attempt + 1;
197
+ if (nextAttempt > MAX_ANY_RETRIES) {
198
+ log.debug(`Batch retry cap reached (${nextAttempt - 1}). Continuing to retry with capped backoff; investigate provider errors.`, { batchSize: currentBatch.length });
199
+ }
200
+ else {
201
+ log.debug(`Batch will be retried after backoff (${delay}ms) (attempt ${nextAttempt}/${MAX_ANY_RETRIES})`);
202
+ }
95
203
  await new Promise(resolve => setTimeout(resolve, delay));
96
- await this.processBatchWithRetry(currentBatch, retryCount + 1);
204
+ await this.processBatchWithRetry(currentBatch, { ...retryState, any: nextAttempt }, depth, fatalApi || fatalSeen);
97
205
  return;
98
206
  }
99
207
  // Other errors or max retries reached - fall back to individual processing
@@ -118,23 +226,44 @@ export class BatchEmbeddingProcessor {
118
226
  const embeddings = await this.embeddingProvider.generateEmbeddings(texts);
119
227
  log.debug(`Batch complete (${texts.length} embeddings generated)`);
120
228
  // Store all embeddings in database within a transaction
121
- this.db.insertChunks(batch.map((chunk, i) => ({
122
- id: chunk.chunkId,
123
- file_path: chunk.params.rel,
124
- symbol: chunk.params.symbol,
125
- sha: chunk.params.sha,
126
- lang: chunk.params.lang,
127
- chunk_type: chunk.params.chunkType,
128
- embedding: embeddings[i],
129
- embedding_provider: this.embeddingProvider.getName(),
130
- embedding_dimensions: this.embeddingProvider.getDimensions(),
131
- codevault_tags: chunk.params.codevaultMetadata.tags,
132
- codevault_intent: chunk.params.codevaultMetadata.intent,
133
- codevault_description: chunk.params.codevaultMetadata.description,
134
- doc_comments: chunk.params.docComments,
135
- variables_used: chunk.params.importantVariables,
136
- context_info: chunk.params.contextInfo
137
- })));
229
+ const dbParams = batch.map((chunk, i) => {
230
+ const embedding = embeddings[i];
231
+ // Validate each embedding before insertion
232
+ if (!embedding || !Array.isArray(embedding) || embedding.length === 0) {
233
+ log.error(`Invalid embedding at index ${i} for chunk ${chunk.chunkId}`, {
234
+ embeddingType: typeof embedding,
235
+ isArray: Array.isArray(embedding),
236
+ length: embedding?.length,
237
+ embeddingsArrayLength: embeddings.length,
238
+ batchLength: batch.length
239
+ });
240
+ throw new Error(`Invalid embedding at index ${i}: type=${typeof embedding}, isArray=${Array.isArray(embedding)}, length=${embedding?.length}`);
241
+ }
242
+ return {
243
+ id: chunk.chunkId,
244
+ file_path: chunk.params.rel,
245
+ symbol: chunk.params.symbol,
246
+ sha: chunk.params.sha,
247
+ lang: chunk.params.lang,
248
+ chunk_type: chunk.params.chunkType,
249
+ embedding: embedding,
250
+ embedding_provider: this.embeddingProvider.getName(),
251
+ embedding_dimensions: this.embeddingProvider.getDimensions(),
252
+ codevault_tags: chunk.params.codevaultMetadata.tags,
253
+ codevault_intent: chunk.params.codevaultMetadata.intent,
254
+ codevault_description: chunk.params.codevaultMetadata.description,
255
+ doc_comments: chunk.params.docComments,
256
+ variables_used: chunk.params.importantVariables,
257
+ context_info: chunk.params.contextInfo
258
+ };
259
+ });
260
+ this.db.insertChunks(dbParams);
261
+ // Notify listeners that chunks are fully embedded and stored
262
+ if (this.onChunkEmbedded) {
263
+ for (const chunk of batch) {
264
+ this.onChunkEmbedded({ file: chunk.params.rel, chunkId: chunk.chunkId });
265
+ }
266
+ }
138
267
  }
139
268
  /**
140
269
  * Fall back to processing chunks individually
@@ -187,4 +316,20 @@ export class BatchEmbeddingProcessor {
187
316
  return this.batch.length;
188
317
  }
189
318
  }
319
+ /**
320
+ * Treat responses that return an error without data as fatal (deterministic) so we don't waste
321
+ * transient retries on them.
322
+ */
323
+ function isFatalApiResponse(error) {
324
+ if (!error)
325
+ return false;
326
+ const msg = error?.message || '';
327
+ const status = error?.status || error?.statusCode;
328
+ const hasErrorKey = Array.isArray(error?.topLevelKeys) && error.topLevelKeys.includes('error');
329
+ const responseData = error?.response?.data ?? error?.error?.data;
330
+ const invalidApi = msg.includes('Invalid API response');
331
+ const clientError = status === 400 || status === 422;
332
+ const noProvider = msg.includes('No successful provider responses') || status === 404;
333
+ return invalidApi || hasErrorKey || clientError || noProvider || !!responseData;
334
+ }
190
335
  //# sourceMappingURL=batch-indexer.js.map