@jamesaphoenix/tx-core 0.4.5 → 0.5.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.
- package/README.md +154 -299
- package/dist/db.d.ts +4 -9
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +6 -80
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +67 -10
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +44 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -29
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +32 -10
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +126 -47
- package/dist/layer.js.map +1 -1
- package/dist/mappers/anchor.d.ts +28 -0
- package/dist/mappers/anchor.d.ts.map +1 -0
- package/dist/mappers/anchor.js +105 -0
- package/dist/mappers/anchor.js.map +1 -0
- package/dist/mappers/candidate.d.ts +25 -0
- package/dist/mappers/candidate.d.ts.map +1 -0
- package/dist/mappers/candidate.js +83 -0
- package/dist/mappers/candidate.js.map +1 -0
- package/dist/mappers/doc.d.ts +2 -4
- package/dist/mappers/doc.d.ts.map +1 -1
- package/dist/mappers/doc.js +7 -4
- package/dist/mappers/doc.js.map +1 -1
- package/dist/mappers/edge.d.ts +19 -0
- package/dist/mappers/edge.d.ts.map +1 -0
- package/dist/mappers/edge.js +81 -0
- package/dist/mappers/edge.js.map +1 -0
- package/dist/mappers/index.d.ts +7 -3
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +14 -6
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/message.d.ts +15 -0
- package/dist/mappers/message.d.ts.map +1 -0
- package/dist/mappers/message.js +58 -0
- package/dist/mappers/message.js.map +1 -0
- package/dist/repo/anchor-repo.d.ts +52 -0
- package/dist/repo/anchor-repo.d.ts.map +1 -0
- package/dist/repo/anchor-repo.js +245 -0
- package/dist/repo/anchor-repo.js.map +1 -0
- package/dist/repo/candidate-repo.d.ts +16 -0
- package/dist/repo/candidate-repo.d.ts.map +1 -0
- package/dist/repo/candidate-repo.js +164 -0
- package/dist/repo/candidate-repo.js.map +1 -0
- package/dist/repo/compaction-repo.d.ts +41 -0
- package/dist/repo/compaction-repo.d.ts.map +1 -0
- package/dist/repo/compaction-repo.js +84 -0
- package/dist/repo/compaction-repo.js.map +1 -0
- package/dist/repo/doc-repo.d.ts +68 -51
- package/dist/repo/doc-repo.d.ts.map +1 -1
- package/dist/repo/doc-repo.js +120 -54
- package/dist/repo/doc-repo.js.map +1 -1
- package/dist/repo/edge-repo.d.ts +26 -0
- package/dist/repo/edge-repo.d.ts.map +1 -0
- package/dist/repo/edge-repo.js +258 -0
- package/dist/repo/edge-repo.js.map +1 -0
- package/dist/repo/index.d.ts +8 -3
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +7 -2
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/message-repo.d.ts +55 -0
- package/dist/repo/message-repo.d.ts.map +1 -0
- package/dist/repo/message-repo.js +132 -0
- package/dist/repo/message-repo.js.map +1 -0
- package/dist/services/agent-service.d.ts +18 -23
- package/dist/services/agent-service.d.ts.map +1 -1
- package/dist/services/agent-service.js +9 -0
- package/dist/services/agent-service.js.map +1 -1
- package/dist/services/anchor-service.d.ts +147 -0
- package/dist/services/anchor-service.d.ts.map +1 -0
- package/dist/services/anchor-service.js +540 -0
- package/dist/services/anchor-service.js.map +1 -0
- package/dist/services/anchor-verification.d.ts +102 -0
- package/dist/services/anchor-verification.d.ts.map +1 -0
- package/dist/services/anchor-verification.js +817 -0
- package/dist/services/anchor-verification.js.map +1 -0
- package/dist/services/ast-grep-service.d.ts +58 -0
- package/dist/services/ast-grep-service.d.ts.map +1 -0
- package/dist/services/ast-grep-service.js +427 -0
- package/dist/services/ast-grep-service.js.map +1 -0
- package/dist/services/attempt-service.d.ts.map +1 -1
- package/dist/services/attempt-service.js +4 -1
- package/dist/services/attempt-service.js.map +1 -1
- package/dist/services/auto-sync-service.d.ts.map +1 -1
- package/dist/services/auto-sync-service.js +7 -7
- package/dist/services/auto-sync-service.js.map +1 -1
- package/dist/services/candidate-extractor-service.d.ts +44 -0
- package/dist/services/candidate-extractor-service.d.ts.map +1 -0
- package/dist/services/candidate-extractor-service.js +175 -0
- package/dist/services/candidate-extractor-service.js.map +1 -0
- package/dist/services/claim-service.d.ts.map +1 -1
- package/dist/services/claim-service.js +0 -8
- package/dist/services/claim-service.js.map +1 -1
- package/dist/services/compaction-service.d.ts +105 -0
- package/dist/services/compaction-service.d.ts.map +1 -0
- package/dist/services/compaction-service.js +281 -0
- package/dist/services/compaction-service.js.map +1 -0
- package/dist/services/cycle-scan-service.d.ts +1 -5
- package/dist/services/cycle-scan-service.d.ts.map +1 -1
- package/dist/services/cycle-scan-service.js +49 -19
- package/dist/services/cycle-scan-service.js.map +1 -1
- package/dist/services/daemon-service.d.ts +2 -8
- package/dist/services/daemon-service.d.ts.map +1 -1
- package/dist/services/daemon-service.js +21 -35
- package/dist/services/daemon-service.js.map +1 -1
- package/dist/services/doc-service.d.ts +25 -32
- package/dist/services/doc-service.d.ts.map +1 -1
- package/dist/services/doc-service.js +206 -190
- package/dist/services/doc-service.js.map +1 -1
- package/dist/services/edge-service.d.ts +78 -0
- package/dist/services/edge-service.d.ts.map +1 -0
- package/dist/services/edge-service.js +158 -0
- package/dist/services/edge-service.js.map +1 -0
- package/dist/services/embedding-service.d.ts +3 -3
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +8 -14
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/feedback-tracker.d.ts +64 -0
- package/dist/services/feedback-tracker.d.ts.map +1 -0
- package/dist/services/feedback-tracker.js +110 -0
- package/dist/services/feedback-tracker.js.map +1 -0
- package/dist/services/file-watcher-service.d.ts.map +1 -1
- package/dist/services/file-watcher-service.js +1 -3
- package/dist/services/file-watcher-service.js.map +1 -1
- package/dist/services/graph-expansion.d.ts +158 -0
- package/dist/services/graph-expansion.d.ts.map +1 -0
- package/dist/services/graph-expansion.js +487 -0
- package/dist/services/graph-expansion.js.map +1 -0
- package/dist/services/index.d.ts +19 -8
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +18 -7
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts.map +1 -1
- package/dist/services/learning-service.js +22 -14
- package/dist/services/learning-service.js.map +1 -1
- package/dist/services/llm-service.d.ts +60 -38
- package/dist/services/llm-service.d.ts.map +1 -1
- package/dist/services/llm-service.js +201 -113
- package/dist/services/llm-service.js.map +1 -1
- package/dist/services/message-service.d.ts +57 -0
- package/dist/services/message-service.d.ts.map +1 -0
- package/dist/services/message-service.js +78 -0
- package/dist/services/message-service.js.map +1 -0
- package/dist/services/orchestrator-service.d.ts.map +1 -1
- package/dist/services/orchestrator-service.js +19 -20
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +67 -0
- package/dist/services/promotion-service.d.ts.map +1 -0
- package/dist/services/promotion-service.js +151 -0
- package/dist/services/promotion-service.js.map +1 -0
- package/dist/services/query-expansion-service.d.ts +7 -22
- package/dist/services/query-expansion-service.d.ts.map +1 -1
- package/dist/services/query-expansion-service.js +41 -75
- package/dist/services/query-expansion-service.js.map +1 -1
- package/dist/services/reranker-service.d.ts +1 -1
- package/dist/services/reranker-service.d.ts.map +1 -1
- package/dist/services/reranker-service.js +8 -10
- package/dist/services/reranker-service.js.map +1 -1
- package/dist/services/retriever-service.d.ts +8 -5
- package/dist/services/retriever-service.d.ts.map +1 -1
- package/dist/services/retriever-service.js +150 -15
- package/dist/services/retriever-service.js.map +1 -1
- package/dist/services/swarm-verification.d.ts +104 -0
- package/dist/services/swarm-verification.d.ts.map +1 -0
- package/dist/services/swarm-verification.js +406 -0
- package/dist/services/swarm-verification.js.map +1 -0
- package/dist/services/sync-service.d.ts.map +1 -1
- package/dist/services/sync-service.js +8 -9
- package/dist/services/sync-service.js.map +1 -1
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +3 -8
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/tracing-service.js +6 -6
- package/dist/services/tracing-service.js.map +1 -1
- package/dist/services/transcript-adapter.d.ts.map +1 -1
- package/dist/services/transcript-adapter.js +1 -1
- package/dist/services/transcript-adapter.js.map +1 -1
- package/dist/services/worker-process.d.ts.map +1 -1
- package/dist/services/worker-process.js +8 -30
- package/dist/services/worker-process.js.map +1 -1
- package/dist/utils/doc-hash.d.ts +0 -4
- package/dist/utils/doc-hash.d.ts.map +1 -1
- package/dist/utils/doc-hash.js.map +1 -1
- package/dist/utils/doc-renderer.d.ts +31 -26
- package/dist/utils/doc-renderer.d.ts.map +1 -1
- package/dist/utils/doc-renderer.js +0 -7
- package/dist/utils/doc-renderer.js.map +1 -1
- package/dist/utils/llm-json.d.ts +17 -0
- package/dist/utils/llm-json.d.ts.map +1 -0
- package/dist/utils/llm-json.js +51 -0
- package/dist/utils/llm-json.js.map +1 -0
- package/dist/utils/toml-config.d.ts +10 -16
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +3 -1
- package/dist/utils/toml-config.js.map +1 -1
- package/dist/worker/run-worker.d.ts.map +1 -1
- package/dist/worker/run-worker.js +2 -7
- package/dist/worker/run-worker.js.map +1 -1
- package/package.json +9 -8
|
@@ -46,6 +46,6 @@ export declare const RerankerServiceLive: Layer.Layer<RerankerService, never, ne
|
|
|
46
46
|
* Auto-detecting layer that uses Live if node-llama-cpp is available, Noop otherwise.
|
|
47
47
|
* This allows graceful degradation when the re-ranking library is not installed.
|
|
48
48
|
*/
|
|
49
|
-
export declare const RerankerServiceAuto: Layer.Layer<RerankerService,
|
|
49
|
+
export declare const RerankerServiceAuto: Layer.Layer<RerankerService, never, never>;
|
|
50
50
|
export {};
|
|
51
51
|
//# sourceMappingURL=reranker-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker-service.d.ts","sourceRoot":"","sources":["../../src/services/reranker-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAqBvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;;IAeG;;;OAGG;qBACc,CACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,MAAM,EAAE,KACzB,MAAM,CAAC,MAAM,CAAC,SAAS,cAAc,EAAE,EAAE,wBAAwB,CAAC;IACvE,qDAAqD;0BAC/B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAtBtD;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,oBAclC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAa/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"reranker-service.d.ts","sourceRoot":"","sources":["../../src/services/reranker-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAqBvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;;IAeG;;;OAGG;qBACc,CACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,MAAM,EAAE,KACzB,MAAM,CAAC,MAAM,CAAC,SAAS,cAAc,EAAE,EAAE,wBAAwB,CAAC;IACvE,qDAAqD;0BAC/B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAtBtD;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,oBAclC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAa/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAgG/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAgB/B,CAAA"}
|
|
@@ -44,18 +44,16 @@ export const RerankerServiceLive = Layer.scoped(RerankerService, Effect.gen(func
|
|
|
44
44
|
yield* Ref.update(stateRef, s => ({ ...s, lastActivity: Date.now() }));
|
|
45
45
|
return state.context;
|
|
46
46
|
}
|
|
47
|
-
// Lazy load node-llama-cpp
|
|
48
|
-
const
|
|
47
|
+
// Lazy load node-llama-cpp and get llama instance
|
|
48
|
+
const llama = yield* Effect.tryPromise({
|
|
49
49
|
try: async () => {
|
|
50
50
|
const mod = await import("node-llama-cpp");
|
|
51
|
-
|
|
51
|
+
const instance = await mod.getLlama();
|
|
52
|
+
return instance;
|
|
52
53
|
},
|
|
53
|
-
catch: () => new RerankerUnavailableError({
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const llama = yield* Effect.tryPromise({
|
|
57
|
-
try: () => nodeLlamaCpp.getLlama(),
|
|
58
|
-
catch: (e) => new RerankerUnavailableError({ reason: `Failed to initialize llama: ${String(e)}` })
|
|
54
|
+
catch: (e) => new RerankerUnavailableError({
|
|
55
|
+
reason: e instanceof Error ? e.message : "node-llama-cpp not available"
|
|
56
|
+
})
|
|
59
57
|
});
|
|
60
58
|
// Load Qwen3-Reranker model - uses HuggingFace model spec format
|
|
61
59
|
// Using the 0.6B model for a good balance of quality and speed
|
|
@@ -119,7 +117,7 @@ export const RerankerServiceAuto = Layer.unwrapEffect(Effect.gen(function* () {
|
|
|
119
117
|
return true;
|
|
120
118
|
},
|
|
121
119
|
catch: () => false
|
|
122
|
-
});
|
|
120
|
+
}).pipe(Effect.catchAll(() => Effect.succeed(false)));
|
|
123
121
|
if (available) {
|
|
124
122
|
return RerankerServiceLive;
|
|
125
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker-service.js","sourceRoot":"","sources":["../../src/services/reranker-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAiCvD;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAchE;CAAG;AAEN;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAC9C,eAAe,EACf;IACE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAC5B,MAAM,CAAC,OAAO,CACZ,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,QAAQ;QACR,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,iDAAiD;QAC1E,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC,CACJ;IACH,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,gCAAgC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAG7B;QACD,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KACzB,CAAC,CAAA;IAEF;;;OAGG;IACH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;YACtE,OAAO,KAAK,CAAC,OAAO,CAAA;QACtB,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"reranker-service.js","sourceRoot":"","sources":["../../src/services/reranker-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
*
|
|
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
|
|
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;
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
//
|
|
272
|
-
const
|
|
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
|
-
|
|
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
|
-
//
|
|
284
|
-
|
|
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
|
-
|
|
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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"}
|