@jamesaphoenix/tx-core 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/db.d.ts +4 -9
  2. package/dist/db.d.ts.map +1 -1
  3. package/dist/db.js +6 -80
  4. package/dist/db.js.map +1 -1
  5. package/dist/errors.d.ts +67 -10
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +44 -10
  8. package/dist/errors.js.map +1 -1
  9. package/dist/index.d.ts +12 -7
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +22 -28
  12. package/dist/index.js.map +1 -1
  13. package/dist/layer.d.ts +22 -10
  14. package/dist/layer.d.ts.map +1 -1
  15. package/dist/layer.js +97 -39
  16. package/dist/layer.js.map +1 -1
  17. package/dist/mappers/anchor.d.ts +28 -0
  18. package/dist/mappers/anchor.d.ts.map +1 -0
  19. package/dist/mappers/anchor.js +105 -0
  20. package/dist/mappers/anchor.js.map +1 -0
  21. package/dist/mappers/candidate.d.ts +25 -0
  22. package/dist/mappers/candidate.d.ts.map +1 -0
  23. package/dist/mappers/candidate.js +83 -0
  24. package/dist/mappers/candidate.js.map +1 -0
  25. package/dist/mappers/doc.d.ts +2 -4
  26. package/dist/mappers/doc.d.ts.map +1 -1
  27. package/dist/mappers/doc.js +7 -4
  28. package/dist/mappers/doc.js.map +1 -1
  29. package/dist/mappers/edge.d.ts +19 -0
  30. package/dist/mappers/edge.d.ts.map +1 -0
  31. package/dist/mappers/edge.js +81 -0
  32. package/dist/mappers/edge.js.map +1 -0
  33. package/dist/mappers/index.d.ts +7 -3
  34. package/dist/mappers/index.d.ts.map +1 -1
  35. package/dist/mappers/index.js +14 -6
  36. package/dist/mappers/index.js.map +1 -1
  37. package/dist/mappers/message.d.ts +15 -0
  38. package/dist/mappers/message.d.ts.map +1 -0
  39. package/dist/mappers/message.js +58 -0
  40. package/dist/mappers/message.js.map +1 -0
  41. package/dist/repo/anchor-repo.d.ts +52 -0
  42. package/dist/repo/anchor-repo.d.ts.map +1 -0
  43. package/dist/repo/anchor-repo.js +245 -0
  44. package/dist/repo/anchor-repo.js.map +1 -0
  45. package/dist/repo/candidate-repo.d.ts +16 -0
  46. package/dist/repo/candidate-repo.d.ts.map +1 -0
  47. package/dist/repo/candidate-repo.js +164 -0
  48. package/dist/repo/candidate-repo.js.map +1 -0
  49. package/dist/repo/compaction-repo.d.ts +41 -0
  50. package/dist/repo/compaction-repo.d.ts.map +1 -0
  51. package/dist/repo/compaction-repo.js +84 -0
  52. package/dist/repo/compaction-repo.js.map +1 -0
  53. package/dist/repo/doc-repo.d.ts +68 -51
  54. package/dist/repo/doc-repo.d.ts.map +1 -1
  55. package/dist/repo/doc-repo.js +120 -54
  56. package/dist/repo/doc-repo.js.map +1 -1
  57. package/dist/repo/edge-repo.d.ts +26 -0
  58. package/dist/repo/edge-repo.d.ts.map +1 -0
  59. package/dist/repo/edge-repo.js +258 -0
  60. package/dist/repo/edge-repo.js.map +1 -0
  61. package/dist/repo/index.d.ts +8 -3
  62. package/dist/repo/index.d.ts.map +1 -1
  63. package/dist/repo/index.js +7 -2
  64. package/dist/repo/index.js.map +1 -1
  65. package/dist/repo/message-repo.d.ts +55 -0
  66. package/dist/repo/message-repo.d.ts.map +1 -0
  67. package/dist/repo/message-repo.js +132 -0
  68. package/dist/repo/message-repo.js.map +1 -0
  69. package/dist/services/agent-service.d.ts +18 -23
  70. package/dist/services/agent-service.d.ts.map +1 -1
  71. package/dist/services/agent-service.js +9 -0
  72. package/dist/services/agent-service.js.map +1 -1
  73. package/dist/services/anchor-service.d.ts +147 -0
  74. package/dist/services/anchor-service.d.ts.map +1 -0
  75. package/dist/services/anchor-service.js +540 -0
  76. package/dist/services/anchor-service.js.map +1 -0
  77. package/dist/services/anchor-verification.d.ts +102 -0
  78. package/dist/services/anchor-verification.d.ts.map +1 -0
  79. package/dist/services/anchor-verification.js +817 -0
  80. package/dist/services/anchor-verification.js.map +1 -0
  81. package/dist/services/ast-grep-service.d.ts +58 -0
  82. package/dist/services/ast-grep-service.d.ts.map +1 -0
  83. package/dist/services/ast-grep-service.js +427 -0
  84. package/dist/services/ast-grep-service.js.map +1 -0
  85. package/dist/services/attempt-service.d.ts.map +1 -1
  86. package/dist/services/attempt-service.js +4 -1
  87. package/dist/services/attempt-service.js.map +1 -1
  88. package/dist/services/auto-sync-service.d.ts.map +1 -1
  89. package/dist/services/auto-sync-service.js +7 -7
  90. package/dist/services/auto-sync-service.js.map +1 -1
  91. package/dist/services/candidate-extractor-service.d.ts +44 -0
  92. package/dist/services/candidate-extractor-service.d.ts.map +1 -0
  93. package/dist/services/candidate-extractor-service.js +175 -0
  94. package/dist/services/candidate-extractor-service.js.map +1 -0
  95. package/dist/services/claim-service.d.ts.map +1 -1
  96. package/dist/services/claim-service.js +0 -8
  97. package/dist/services/claim-service.js.map +1 -1
  98. package/dist/services/compaction-service.d.ts +105 -0
  99. package/dist/services/compaction-service.d.ts.map +1 -0
  100. package/dist/services/compaction-service.js +281 -0
  101. package/dist/services/compaction-service.js.map +1 -0
  102. package/dist/services/cycle-scan-service.d.ts +1 -5
  103. package/dist/services/cycle-scan-service.d.ts.map +1 -1
  104. package/dist/services/cycle-scan-service.js +49 -19
  105. package/dist/services/cycle-scan-service.js.map +1 -1
  106. package/dist/services/daemon-service.d.ts +2 -8
  107. package/dist/services/daemon-service.d.ts.map +1 -1
  108. package/dist/services/daemon-service.js +21 -35
  109. package/dist/services/daemon-service.js.map +1 -1
  110. package/dist/services/doc-service.d.ts +25 -32
  111. package/dist/services/doc-service.d.ts.map +1 -1
  112. package/dist/services/doc-service.js +206 -190
  113. package/dist/services/doc-service.js.map +1 -1
  114. package/dist/services/edge-service.d.ts +78 -0
  115. package/dist/services/edge-service.d.ts.map +1 -0
  116. package/dist/services/edge-service.js +158 -0
  117. package/dist/services/edge-service.js.map +1 -0
  118. package/dist/services/embedding-service.d.ts +2 -2
  119. package/dist/services/embedding-service.d.ts.map +1 -1
  120. package/dist/services/embedding-service.js +7 -13
  121. package/dist/services/embedding-service.js.map +1 -1
  122. package/dist/services/feedback-tracker.d.ts +64 -0
  123. package/dist/services/feedback-tracker.d.ts.map +1 -0
  124. package/dist/services/feedback-tracker.js +110 -0
  125. package/dist/services/feedback-tracker.js.map +1 -0
  126. package/dist/services/file-watcher-service.d.ts.map +1 -1
  127. package/dist/services/file-watcher-service.js +1 -3
  128. package/dist/services/file-watcher-service.js.map +1 -1
  129. package/dist/services/graph-expansion.d.ts +158 -0
  130. package/dist/services/graph-expansion.d.ts.map +1 -0
  131. package/dist/services/graph-expansion.js +487 -0
  132. package/dist/services/graph-expansion.js.map +1 -0
  133. package/dist/services/index.d.ts +19 -8
  134. package/dist/services/index.d.ts.map +1 -1
  135. package/dist/services/index.js +18 -7
  136. package/dist/services/index.js.map +1 -1
  137. package/dist/services/learning-service.d.ts.map +1 -1
  138. package/dist/services/learning-service.js +22 -14
  139. package/dist/services/learning-service.js.map +1 -1
  140. package/dist/services/llm-service.d.ts +61 -39
  141. package/dist/services/llm-service.d.ts.map +1 -1
  142. package/dist/services/llm-service.js +199 -113
  143. package/dist/services/llm-service.js.map +1 -1
  144. package/dist/services/message-service.d.ts +57 -0
  145. package/dist/services/message-service.d.ts.map +1 -0
  146. package/dist/services/message-service.js +78 -0
  147. package/dist/services/message-service.js.map +1 -0
  148. package/dist/services/orchestrator-service.d.ts.map +1 -1
  149. package/dist/services/orchestrator-service.js +19 -20
  150. package/dist/services/orchestrator-service.js.map +1 -1
  151. package/dist/services/promotion-service.d.ts +67 -0
  152. package/dist/services/promotion-service.d.ts.map +1 -0
  153. package/dist/services/promotion-service.js +151 -0
  154. package/dist/services/promotion-service.js.map +1 -0
  155. package/dist/services/query-expansion-service.d.ts +7 -22
  156. package/dist/services/query-expansion-service.d.ts.map +1 -1
  157. package/dist/services/query-expansion-service.js +41 -75
  158. package/dist/services/query-expansion-service.js.map +1 -1
  159. package/dist/services/retriever-service.d.ts +8 -5
  160. package/dist/services/retriever-service.d.ts.map +1 -1
  161. package/dist/services/retriever-service.js +150 -15
  162. package/dist/services/retriever-service.js.map +1 -1
  163. package/dist/services/swarm-verification.d.ts +104 -0
  164. package/dist/services/swarm-verification.d.ts.map +1 -0
  165. package/dist/services/swarm-verification.js +406 -0
  166. package/dist/services/swarm-verification.js.map +1 -0
  167. package/dist/services/sync-service.d.ts.map +1 -1
  168. package/dist/services/sync-service.js +8 -9
  169. package/dist/services/sync-service.js.map +1 -1
  170. package/dist/services/task-service.d.ts.map +1 -1
  171. package/dist/services/task-service.js +3 -8
  172. package/dist/services/task-service.js.map +1 -1
  173. package/dist/services/tracing-service.js +6 -6
  174. package/dist/services/tracing-service.js.map +1 -1
  175. package/dist/services/transcript-adapter.d.ts.map +1 -1
  176. package/dist/services/transcript-adapter.js +1 -1
  177. package/dist/services/transcript-adapter.js.map +1 -1
  178. package/dist/services/worker-process.d.ts.map +1 -1
  179. package/dist/services/worker-process.js +8 -30
  180. package/dist/services/worker-process.js.map +1 -1
  181. package/dist/utils/doc-hash.d.ts +0 -4
  182. package/dist/utils/doc-hash.d.ts.map +1 -1
  183. package/dist/utils/doc-hash.js.map +1 -1
  184. package/dist/utils/doc-renderer.d.ts +31 -26
  185. package/dist/utils/doc-renderer.d.ts.map +1 -1
  186. package/dist/utils/doc-renderer.js +0 -7
  187. package/dist/utils/doc-renderer.js.map +1 -1
  188. package/dist/utils/llm-json.d.ts +17 -0
  189. package/dist/utils/llm-json.d.ts.map +1 -0
  190. package/dist/utils/llm-json.js +51 -0
  191. package/dist/utils/llm-json.js.map +1 -0
  192. package/dist/utils/toml-config.d.ts +10 -16
  193. package/dist/utils/toml-config.d.ts.map +1 -1
  194. package/dist/utils/toml-config.js +3 -1
  195. package/dist/utils/toml-config.js.map +1 -1
  196. package/dist/worker/run-worker.d.ts.map +1 -1
  197. package/dist/worker/run-worker.js +2 -7
  198. package/dist/worker/run-worker.js.map +1 -1
  199. package/package.json +9 -8
@@ -1,6 +1,7 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  import { LearningRepository } from "../repo/learning-repo.js";
3
3
  import { EmbeddingService } from "./embedding-service.js";
4
+ import { QueryExpansionService } from "./query-expansion-service.js";
4
5
  import { RerankerService } from "./reranker-service.js";
5
6
  import { RetrievalError, DatabaseError, EmbeddingDimensionMismatchError } from "../errors.js";
6
7
  import type { LearningWithScore, RetrievalOptions } from "@jamesaphoenix/tx-types";
@@ -29,21 +30,23 @@ export declare class RetrieverService extends RetrieverService_base {
29
30
  export declare const RetrieverServiceNoop: Layer.Layer<RetrieverService, never, never>;
30
31
  /**
31
32
  * Live implementation with BM25 + vector + RRF pipeline.
32
- * Simplified pipeline:
33
+ * Uses the default hybrid search with:
34
+ * - Query expansion via LLM
33
35
  * - BM25 full-text search
34
36
  * - Vector similarity (when embeddings available)
35
37
  * - RRF fusion
36
- * - Optional LLM re-ranking (local model)
37
- * - Optional MMR diversification
38
+ * - Optional LLM re-ranking
38
39
  * - Recency/outcome/frequency boosts
39
40
  */
40
- export declare const RetrieverServiceLive: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | RerankerService>;
41
+ export declare const RetrieverServiceLive: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | QueryExpansionService | RerankerService>;
41
42
  /**
42
43
  * Auto-detecting layer that always uses Live since BM25 is always available.
43
44
  * The Live implementation gracefully degrades:
44
45
  * - Vector search skips when EmbeddingService unavailable
46
+ * - Query expansion skips when QueryExpansionService unavailable
45
47
  * - Reranking skips when RerankerService unavailable
48
+ * - Graph expansion skips when GraphExpansionService unavailable
46
49
  */
47
- export declare const RetrieverServiceAuto: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | RerankerService>;
50
+ export declare const RetrieverServiceAuto: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | QueryExpansionService | RerankerService>;
48
51
  export {};
49
52
  //# sourceMappingURL=retriever-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retriever-service.d.ts","sourceRoot":"","sources":["../../src/services/retriever-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAmB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC7F,OAAO,KAAK,EAAY,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;;IAiCxF;;;OAGG;qBACc,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,KACvB,MAAM,CAAC,MAAM,CAAC,SAAS,iBAAiB,EAAE,EAAE,cAAc,GAAG,aAAa,GAAG,+BAA+B,CAAC;IAClH,oDAAoD;0BAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAnBtD;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,qBAcnC;CAAG;AA0NN;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAMhC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,uGA4HhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,uGAKhC,CAAA"}
1
+ {"version":3,"file":"retriever-service.d.ts","sourceRoot":"","sources":["../../src/services/retriever-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAmB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAIvD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC7F,OAAO,KAAK,EAAY,iBAAiB,EAAc,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;;IAoCpG;;;OAGG;qBACc,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,KACvB,MAAM,CAAC,MAAM,CAAC,SAAS,iBAAiB,EAAE,EAAE,cAAc,GAAG,aAAa,GAAG,+BAA+B,CAAC;IAClH,oDAAoD;0BAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAnBtD;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,qBAcnC;CAAG;AAkON;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAMhC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,+HAkRhC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,+HAQhC,CAAA"}
@@ -1,7 +1,10 @@
1
1
  import { Context, Effect, Layer, Option } from "effect";
2
2
  import { LearningRepository } from "../repo/learning-repo.js";
3
3
  import { EmbeddingService } from "./embedding-service.js";
4
+ import { QueryExpansionService } from "./query-expansion-service.js";
4
5
  import { RerankerService } from "./reranker-service.js";
6
+ import { GraphExpansionService } from "./graph-expansion.js";
7
+ import { FeedbackTrackerService } from "./feedback-tracker.js";
5
8
  import { DiversifierService } from "./diversifier-service.js";
6
9
  import { cosineSimilarity } from "../utils/math.js";
7
10
  /** RRF constant - standard value from the original paper */
@@ -19,6 +22,8 @@ const FREQUENCY_BOOST = 0.02;
19
22
  /** Position-aware bonuses for items ranking highly in any retrieval system */
20
23
  const TOP_1_BONUS = 0.05; // Bonus for #1 rank in any system
21
24
  const TOP_3_BONUS = 0.02; // Bonus for top 3 in any system
25
+ /** Feedback boost weight - scales the 0-1 feedback score */
26
+ const FEEDBACK_BOOST = 0.05;
22
27
  /**
23
28
  * RetrieverService provides pluggable retrieval for learnings.
24
29
  *
@@ -156,12 +161,13 @@ const calculatePositionBonus = (...ranks) => {
156
161
  };
157
162
  /**
158
163
  * Convert RRF candidates to final LearningWithScore results.
159
- * Applies additional boosts for recency, outcome, frequency, and position.
164
+ * Applies additional boosts for recency, outcome, frequency, position, and feedback.
160
165
  *
161
166
  * @param candidates - RRF-scored candidates
162
167
  * @param recencyWeight - Weight for recency boost
168
+ * @param feedbackScores - Optional map of learning ID to feedback score (0-1)
163
169
  */
164
- const applyFinalScoring = (candidates, recencyWeight) => {
170
+ const applyFinalScoring = (candidates, recencyWeight, feedbackScores) => {
165
171
  return candidates.map(candidate => {
166
172
  const { learning, bm25Score, bm25Rank, vectorScore, vectorRank, rrfScore: rrf, recencyScore } = candidate;
167
173
  // Outcome boost: if learning has been marked helpful, boost it
@@ -172,6 +178,10 @@ const applyFinalScoring = (candidates, recencyWeight) => {
172
178
  const frequencyBoost = FREQUENCY_BOOST * Math.log(1 + learning.usageCount);
173
179
  // Position-aware bonus: reward items that rank highly in any retrieval system
174
180
  const positionBonus = calculatePositionBonus(bm25Rank, vectorRank);
181
+ // Feedback boost: learnings that were helpful in past runs get boosted
182
+ // feedbackScore is 0-1 with 0.5 being neutral (no feedback)
183
+ const feedbackScore = feedbackScores?.get(learning.id) ?? 0.5;
184
+ const feedbackBoost = FEEDBACK_BOOST * feedbackScore;
175
185
  // Final relevance score: RRF as base + boosts
176
186
  // RRF score range is [0, 2/k] for two lists, normalize to [0, 1] range
177
187
  // Max possible RRF = 2 * 1/(k+1) ≈ 0.0328 for k=60
@@ -181,7 +191,8 @@ const applyFinalScoring = (candidates, recencyWeight) => {
181
191
  recencyWeight * recencyScore +
182
192
  outcomeBoost +
183
193
  frequencyBoost +
184
- positionBonus;
194
+ positionBonus +
195
+ feedbackBoost;
185
196
  return {
186
197
  ...learning,
187
198
  relevanceScore,
@@ -191,7 +202,7 @@ const applyFinalScoring = (candidates, recencyWeight) => {
191
202
  rrfScore: rrf,
192
203
  bm25Rank,
193
204
  vectorRank,
194
- feedbackScore: 0.5
205
+ feedbackScore
195
206
  };
196
207
  }).sort((a, b) => b.relevanceScore - a.relevanceScore);
197
208
  };
@@ -205,18 +216,25 @@ export const RetrieverServiceNoop = Layer.succeed(RetrieverService, {
205
216
  });
206
217
  /**
207
218
  * Live implementation with BM25 + vector + RRF pipeline.
208
- * Simplified pipeline:
219
+ * Uses the default hybrid search with:
220
+ * - Query expansion via LLM
209
221
  * - BM25 full-text search
210
222
  * - Vector similarity (when embeddings available)
211
223
  * - RRF fusion
212
- * - Optional LLM re-ranking (local model)
213
- * - Optional MMR diversification
224
+ * - Optional LLM re-ranking
214
225
  * - Recency/outcome/frequency boosts
215
226
  */
216
227
  export const RetrieverServiceLive = Layer.effect(RetrieverService, Effect.gen(function* () {
217
228
  const learningRepo = yield* LearningRepository;
218
229
  const embeddingService = yield* EmbeddingService;
230
+ const queryExpansionService = yield* QueryExpansionService;
219
231
  const rerankerService = yield* RerankerService;
232
+ // GraphExpansionService is optional - graceful degradation when not available
233
+ const graphExpansionServiceOption = yield* Effect.serviceOption(GraphExpansionService);
234
+ const graphExpansionService = Option.getOrNull(graphExpansionServiceOption);
235
+ // FeedbackTrackerService is optional - graceful degradation when not available
236
+ const feedbackTrackerServiceOption = yield* Effect.serviceOption(FeedbackTrackerService);
237
+ const feedbackTrackerService = Option.getOrNull(feedbackTrackerServiceOption);
220
238
  // DiversifierService is optional - graceful degradation when not available
221
239
  const diversifierServiceOption = yield* Effect.serviceOption(DiversifierService);
222
240
  const diversifierService = Option.getOrNull(diversifierServiceOption);
@@ -225,7 +243,9 @@ export const RetrieverServiceLive = Layer.effect(RetrieverService, Effect.gen(fu
225
243
  const recencyWeight = recencyWeightStr ? parseFloat(recencyWeightStr) : DEFAULT_RECENCY_WEIGHT;
226
244
  /**
227
245
  * Apply LLM re-ranking to scored learnings with position-aware blending.
228
- * Re-ranking uses a specialized local model to improve precision.
246
+ * Re-ranking uses a specialized model to improve precision.
247
+ * Position-aware blending gives bonuses to items that rank highly
248
+ * across multiple retrieval systems (BM25, vector, AND reranker).
229
249
  * Gracefully degrades if reranker is unavailable.
230
250
  */
231
251
  const applyReranking = (query, learnings, rerankerWeight = 0.3) => Effect.gen(function* () {
@@ -249,6 +269,7 @@ export const RetrieverServiceLive = Layer.effect(RetrieverService, Effect.gen(fu
249
269
  rerankerRanks.set(result.document, idx + 1); // 1-indexed rank
250
270
  });
251
271
  // Blend reranker scores with existing relevance scores using position-aware bonuses
272
+ // Formula: final = (1 - weight) * existing + weight * reranker + positionBonus
252
273
  return learnings.map(learning => {
253
274
  const rerankerScore = rerankerScores.get(learning.content) ?? 0;
254
275
  const rerankerRank = rerankerRanks.get(learning.content) ?? 0;
@@ -261,31 +282,140 @@ export const RetrieverServiceLive = Layer.effect(RetrieverService, Effect.gen(fu
261
282
  return {
262
283
  ...learning,
263
284
  relevanceScore: blendedScore,
264
- rerankerScore
285
+ rerankerScore // Add reranker score to output
265
286
  };
266
287
  }).sort((a, b) => b.relevanceScore - a.relevanceScore);
267
288
  });
289
+ /**
290
+ * Perform BM25 search across multiple queries and merge results.
291
+ * Uses RRF to combine rankings from each query.
292
+ */
293
+ const multiQueryBM25Search = (queries, limit) => Effect.gen(function* () {
294
+ // Search for each query
295
+ const allResults = [];
296
+ for (const query of queries) {
297
+ const results = yield* learningRepo.bm25Search(query, limit);
298
+ allResults.push([...results]);
299
+ }
300
+ // Merge results using best rank across all queries
301
+ const learningRanks = new Map();
302
+ for (const results of allResults) {
303
+ results.forEach((result, idx) => {
304
+ const rank = idx + 1;
305
+ const existing = learningRanks.get(result.learning.id);
306
+ if (!existing || rank < existing.bestRank) {
307
+ learningRanks.set(result.learning.id, {
308
+ learning: result.learning,
309
+ bestRank: rank,
310
+ bestScore: result.score
311
+ });
312
+ }
313
+ });
314
+ }
315
+ // Convert to BM25Result format, sorted by best rank
316
+ const merged = [...learningRanks.values()]
317
+ .sort((a, b) => a.bestRank - b.bestRank)
318
+ .map(item => ({ learning: item.learning, score: item.bestScore }));
319
+ return merged;
320
+ });
321
+ /**
322
+ * Apply graph expansion to seed learnings and merge with existing results.
323
+ * Gracefully degrades if expansion fails or GraphExpansionService is unavailable.
324
+ */
325
+ const applyGraphExpansion = (seeds, options) => Effect.gen(function* () {
326
+ const graphOpts = options.graphExpansion;
327
+ // Skip if not enabled, no seeds, or GraphExpansionService unavailable
328
+ if (!graphOpts?.enabled || seeds.length === 0 || !graphExpansionService) {
329
+ return seeds;
330
+ }
331
+ // Convert top-k seeds to SeedLearning format for expansion
332
+ const seedCount = Math.min(seeds.length, 10); // Default top-k seeds
333
+ const seedLearnings = seeds.slice(0, seedCount).map(s => ({
334
+ learning: s,
335
+ score: s.relevanceScore
336
+ }));
337
+ // Perform graph expansion (graceful degradation on error)
338
+ const expansionResult = yield* Effect.catchAll(graphExpansionService.expand(seedLearnings, {
339
+ depth: graphOpts.depth ?? 2,
340
+ decayFactor: graphOpts.decayFactor ?? 0.7,
341
+ maxNodes: graphOpts.maxNodes ?? 100,
342
+ edgeTypes: graphOpts.edgeTypes
343
+ }), () => Effect.succeed(null));
344
+ if (!expansionResult) {
345
+ // Graph expansion failed, return original seeds with hops=0
346
+ return seeds.map(s => ({
347
+ ...s,
348
+ expansionHops: 0,
349
+ expansionPath: [s.id],
350
+ sourceEdge: null
351
+ }));
352
+ }
353
+ // Create a set of seed IDs to track which learnings are direct matches
354
+ const seedIds = new Set(seeds.map(s => s.id));
355
+ // Mark seed learnings with expansion metadata (hops=0)
356
+ const seedsWithMeta = seeds.map(s => ({
357
+ ...s,
358
+ expansionHops: 0,
359
+ expansionPath: [s.id],
360
+ sourceEdge: null
361
+ }));
362
+ // Convert expanded learnings to LearningWithScore format
363
+ // Only include learnings that aren't already in the seed set (avoid duplicates)
364
+ const expandedWithScores = expansionResult.expanded
365
+ .filter(e => !seedIds.has(e.learning.id))
366
+ .map(e => ({
367
+ ...e.learning,
368
+ relevanceScore: e.decayedScore,
369
+ bm25Score: 0,
370
+ vectorScore: 0,
371
+ recencyScore: calculateRecencyScore(e.learning.createdAt),
372
+ rrfScore: 0,
373
+ bm25Rank: 0,
374
+ vectorRank: 0,
375
+ expansionHops: e.hops,
376
+ expansionPath: e.path,
377
+ sourceEdge: e.sourceEdge
378
+ }));
379
+ // Merge seeds and expanded, sort by relevance score
380
+ const merged = [...seedsWithMeta, ...expandedWithScores]
381
+ .sort((a, b) => b.relevanceScore - a.relevanceScore);
382
+ return merged;
383
+ });
268
384
  return {
269
385
  search: (query, options) => Effect.gen(function* () {
270
386
  const { limit = 10, minScore = 0.1 } = options ?? {};
271
- // Get BM25 search results (ranked list 1)
272
- const bm25Results = yield* learningRepo.bm25Search(query, limit * 3);
387
+ // Expand query using LLM (graceful degradation - returns original if unavailable)
388
+ const expansionResult = yield* Effect.catchAll(queryExpansionService.expand(query), () => Effect.succeed({ original: query, expanded: [query], wasExpanded: false }));
389
+ // Get BM25 search results across all expanded queries (ranked list 1)
390
+ const bm25Results = yield* multiQueryBM25Search(expansionResult.expanded, limit * 3);
273
391
  // Try to get query embedding for vector search (graceful degradation)
274
- const queryEmbedding = yield* Effect.option(embeddingService.embed(query, "query"));
392
+ // Use original query for embedding since expanded queries may be noisier
393
+ const queryEmbedding = yield* Effect.option(embeddingService.embed(query));
275
394
  const queryEmbeddingValue = Option.getOrNull(queryEmbedding);
276
395
  // Get learnings with embeddings for vector ranking, capped to prevent linear scan
277
396
  const vectorCandidateLimit = Math.min(limit * 3, MAX_VECTOR_CANDIDATES);
278
397
  const learningsWithEmbeddings = yield* learningRepo.findWithEmbeddings(vectorCandidateLimit);
279
398
  // Compute vector ranking (ranked list 2)
399
+ // Dimension mismatches fail fast - indicates misconfigured embedding provider
280
400
  const vectorRanking = yield* computeVectorRanking(learningsWithEmbeddings, queryEmbeddingValue);
281
401
  // Combine using RRF
282
402
  const candidates = computeRRFScoring(bm25Results, vectorRanking);
283
- // Apply final scoring with boosts
284
- const scored = applyFinalScoring(candidates, recencyWeight);
403
+ // Fetch feedback scores for all candidates in a single batch (graceful degradation)
404
+ let feedbackScores;
405
+ if (feedbackTrackerService && candidates.length > 0) {
406
+ const learningIds = candidates.map(c => c.learning.id);
407
+ feedbackScores = yield* Effect.catchAll(feedbackTrackerService.getFeedbackScores(learningIds), () => Effect.succeed(new Map(learningIds.map(id => [id, 0.5]))));
408
+ }
409
+ // Apply final scoring with boosts (including feedback)
410
+ const scored = applyFinalScoring(candidates, recencyWeight, feedbackScores);
411
+ // Apply graph expansion if enabled (after initial RRF scoring)
412
+ const withGraphExpansion = yield* applyGraphExpansion(scored, options ?? {});
285
413
  // Apply LLM re-ranking to top candidates for improved precision
286
- const topCandidates = scored.slice(0, Math.min(limit * 2, 20));
414
+ // Only re-rank a reasonable number of candidates to balance quality vs latency
415
+ const topCandidates = withGraphExpansion.slice(0, Math.min(limit * 2, 20));
287
416
  const reranked = yield* applyReranking(query, topCandidates);
288
417
  // Apply MMR diversification if enabled (after reranking, before final filtering)
418
+ // Pipeline: query expansion → BM25 → vector → RRF → graph expansion → reranking → DIVERSIFICATION → filter+limit
289
419
  const diversifyOpts = options?.diversification;
290
420
  const diversified = (diversifyOpts?.enabled && diversifierService)
291
421
  ? yield* Effect.catchAll(diversifierService.mmrDiversify(reranked, limit * 2, diversifyOpts.lambda ?? 0.7), () => Effect.succeed(reranked))
@@ -302,9 +432,14 @@ export const RetrieverServiceLive = Layer.effect(RetrieverService, Effect.gen(fu
302
432
  * Auto-detecting layer that always uses Live since BM25 is always available.
303
433
  * The Live implementation gracefully degrades:
304
434
  * - Vector search skips when EmbeddingService unavailable
435
+ * - Query expansion skips when QueryExpansionService unavailable
305
436
  * - Reranking skips when RerankerService unavailable
437
+ * - Graph expansion skips when GraphExpansionService unavailable
306
438
  */
307
439
  export const RetrieverServiceAuto = Layer.unwrapEffect(Effect.gen(function* () {
440
+ // Always use Live since BM25 is always available.
441
+ // The Live implementation gracefully degrades when optional services
442
+ // (embeddings, query expansion, reranking, graph expansion) are unavailable.
308
443
  yield* Effect.logDebug("RetrieverService: Using Live (BM25 always available, other features gracefully degrade)");
309
444
  return RetrieverServiceLive;
310
445
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"retriever-service.js","sourceRoot":"","sources":["../../src/services/retriever-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retriever-service.js","sourceRoot":"","sources":["../../src/services/retriever-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SwarmVerificationService - Bulk invalidation with concurrent verification agents
3
+ *
4
+ * For large batches of anchors, spawns up to 4 concurrent verification agents.
5
+ * Coordinates via job queue pattern using Effect's concurrency primitives.
6
+ * Aggregates results with majority vote for edge cases.
7
+ * Tracks swarm metrics for observability.
8
+ *
9
+ * @see docs/prd/PRD-017-invalidation-maintenance.md - IM-004: Bulk invalidation via agent swarm
10
+ */
11
+ import { Context, Effect, Layer } from "effect";
12
+ import { AnchorVerificationService, type VerificationResult, type VerifyOptions } from "./anchor-verification.js";
13
+ import { AnchorRepository } from "../repo/anchor-repo.js";
14
+ import { DatabaseError, ValidationError } from "../errors.js";
15
+ import type { AnchorStatus } from "@jamesaphoenix/tx-types";
16
+ /** A batch of anchor IDs to verify */
17
+ export interface VerificationBatch {
18
+ readonly batchId: number;
19
+ readonly anchorIds: readonly number[];
20
+ }
21
+ /** Result of a single agent's verification of a batch */
22
+ export interface BatchResult {
23
+ readonly batchId: number;
24
+ readonly results: readonly VerificationResult[];
25
+ readonly duration: number;
26
+ readonly errors: number;
27
+ }
28
+ /** Swarm verification metrics */
29
+ export interface SwarmMetrics {
30
+ readonly totalAnchors: number;
31
+ readonly totalBatches: number;
32
+ readonly agentsUsed: number;
33
+ readonly duration: number;
34
+ /** Time spent per agent (for load balancing analysis) */
35
+ readonly agentDurations: readonly number[];
36
+ /** Counts by action type */
37
+ readonly unchanged: number;
38
+ readonly selfHealed: number;
39
+ readonly drifted: number;
40
+ readonly invalid: number;
41
+ readonly errors: number;
42
+ /** Edge cases requiring human review (tie votes) */
43
+ readonly needsReview: number;
44
+ }
45
+ /** Complete swarm verification result */
46
+ export interface SwarmVerificationResult {
47
+ readonly metrics: SwarmMetrics;
48
+ readonly results: readonly VerificationResult[];
49
+ /** Anchor IDs that require human review due to tie votes */
50
+ readonly reviewRequired: readonly number[];
51
+ }
52
+ /** Options for swarm verification */
53
+ export interface SwarmVerifyOptions extends VerifyOptions {
54
+ /** Batch size per agent (default: 10) */
55
+ readonly batchSize?: number;
56
+ /** Max concurrent agents (default: 4) */
57
+ readonly maxConcurrent?: number;
58
+ /** Force swarm even for small batches */
59
+ readonly forceSwarm?: boolean;
60
+ }
61
+ /** Majority vote result for an anchor */
62
+ export interface VoteResult {
63
+ readonly anchorId: number;
64
+ readonly votes: Map<AnchorStatus | "error", number>;
65
+ readonly consensus: AnchorStatus | null;
66
+ readonly needsReview: boolean;
67
+ }
68
+ declare const SwarmVerificationService_base: Context.TagClass<SwarmVerificationService, "SwarmVerificationService", {
69
+ /**
70
+ * Verify anchors using concurrent agents.
71
+ * Automatically partitions into batches and spawns agents.
72
+ */
73
+ readonly verifyAnchors: (anchorIds: readonly number[], options?: SwarmVerifyOptions) => Effect.Effect<SwarmVerificationResult, DatabaseError>;
74
+ /**
75
+ * Verify all valid anchors using swarm.
76
+ */
77
+ readonly verifyAll: (options?: SwarmVerifyOptions) => Effect.Effect<SwarmVerificationResult, DatabaseError>;
78
+ /**
79
+ * Verify anchors for files matching glob pattern using swarm.
80
+ */
81
+ readonly verifyGlob: (globPattern: string, options?: SwarmVerifyOptions) => Effect.Effect<SwarmVerificationResult, DatabaseError>;
82
+ /**
83
+ * Verify anchors affected by a list of changed files.
84
+ * Typically called from git hooks after large commits.
85
+ */
86
+ readonly verifyChangedFiles: (filePaths: readonly string[], options?: SwarmVerifyOptions) => Effect.Effect<SwarmVerificationResult, DatabaseError>;
87
+ }>;
88
+ export declare class SwarmVerificationService extends SwarmVerificationService_base {
89
+ }
90
+ /**
91
+ * Calculate majority vote for conflicting results on the same anchor.
92
+ * Used when multiple agents verify the same anchor (edge cases).
93
+ *
94
+ * Rules (per PRD-017):
95
+ * - If 3/4 agents say valid, it's valid
96
+ * - Tie = mark for human review
97
+ *
98
+ * Exported for use in LLM-assisted verification scenarios where multiple
99
+ * agents may verify the same anchor for edge cases.
100
+ */
101
+ export declare const calculateMajorityVote: (results: readonly VerificationResult[]) => Effect.Effect<VoteResult, ValidationError>;
102
+ export declare const SwarmVerificationServiceLive: Layer.Layer<SwarmVerificationService, never, AnchorRepository | AnchorVerificationService>;
103
+ export {};
104
+ //# sourceMappingURL=swarm-verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm-verification.d.ts","sourceRoot":"","sources":["../../src/services/swarm-verification.ts"],"names":[],"mappings":"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"}