@jamesaphoenix/tx-core 0.4.2 → 0.4.4
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 +480 -0
- package/dist/db.d.ts +28 -14
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +108 -14
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +178 -34
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +119 -26
- package/dist/errors.js.map +1 -1
- package/dist/id.d.ts +10 -0
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +17 -1
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -8
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +23 -14
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +75 -76
- package/dist/layer.js.map +1 -1
- package/dist/mappers/attempt.d.ts +3 -1
- package/dist/mappers/attempt.d.ts.map +1 -1
- package/dist/mappers/attempt.js +23 -9
- package/dist/mappers/attempt.js.map +1 -1
- package/dist/mappers/claim.d.ts +1 -1
- package/dist/mappers/claim.d.ts.map +1 -1
- package/dist/mappers/claim.js +11 -4
- package/dist/mappers/claim.js.map +1 -1
- package/dist/mappers/deduplication.d.ts +13 -1
- package/dist/mappers/deduplication.d.ts.map +1 -1
- package/dist/mappers/deduplication.js +22 -3
- package/dist/mappers/deduplication.js.map +1 -1
- package/dist/mappers/doc.d.ts +24 -0
- package/dist/mappers/doc.d.ts.map +1 -0
- package/dist/mappers/doc.js +161 -0
- package/dist/mappers/doc.js.map +1 -0
- package/dist/mappers/file-learning.d.ts.map +1 -1
- package/dist/mappers/file-learning.js +2 -1
- package/dist/mappers/file-learning.js.map +1 -1
- package/dist/mappers/index.d.ts +6 -7
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +10 -12
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/learning.d.ts +9 -1
- package/dist/mappers/learning.d.ts.map +1 -1
- package/dist/mappers/learning.js +94 -14
- package/dist/mappers/learning.js.map +1 -1
- package/dist/mappers/orchestrator-state.d.ts +1 -1
- package/dist/mappers/orchestrator-state.d.ts.map +1 -1
- package/dist/mappers/orchestrator-state.js +31 -5
- package/dist/mappers/orchestrator-state.js.map +1 -1
- package/dist/mappers/parse-date.d.ts +11 -0
- package/dist/mappers/parse-date.d.ts.map +1 -0
- package/dist/mappers/parse-date.js +18 -0
- package/dist/mappers/parse-date.js.map +1 -0
- package/dist/mappers/run.d.ts +14 -4
- package/dist/mappers/run.d.ts.map +1 -1
- package/dist/mappers/run.js +49 -18
- package/dist/mappers/run.js.map +1 -1
- package/dist/mappers/task.d.ts +5 -1
- package/dist/mappers/task.d.ts.map +1 -1
- package/dist/mappers/task.js +66 -16
- package/dist/mappers/task.js.map +1 -1
- package/dist/mappers/tracked-project.d.ts +3 -1
- package/dist/mappers/tracked-project.d.ts.map +1 -1
- package/dist/mappers/tracked-project.js +23 -9
- package/dist/mappers/tracked-project.js.map +1 -1
- package/dist/mappers/worker.d.ts +1 -1
- package/dist/mappers/worker.d.ts.map +1 -1
- package/dist/mappers/worker.js +44 -6
- package/dist/mappers/worker.js.map +1 -1
- package/dist/repo/attempt-repo.d.ts +2 -2
- package/dist/repo/attempt-repo.d.ts.map +1 -1
- package/dist/repo/attempt-repo.js +16 -6
- package/dist/repo/attempt-repo.js.map +1 -1
- package/dist/repo/claim-repo.d.ts +46 -2
- package/dist/repo/claim-repo.d.ts.map +1 -1
- package/dist/repo/claim-repo.js +113 -6
- package/dist/repo/claim-repo.js.map +1 -1
- package/dist/repo/deduplication-repo.d.ts +9 -1
- package/dist/repo/deduplication-repo.d.ts.map +1 -1
- package/dist/repo/deduplication-repo.js +46 -9
- package/dist/repo/deduplication-repo.js.map +1 -1
- package/dist/repo/dep-repo.d.ts +27 -3
- package/dist/repo/dep-repo.d.ts.map +1 -1
- package/dist/repo/dep-repo.js +166 -39
- package/dist/repo/dep-repo.js.map +1 -1
- package/dist/repo/doc-repo.d.ts +59 -0
- package/dist/repo/doc-repo.d.ts.map +1 -0
- package/dist/repo/doc-repo.js +276 -0
- package/dist/repo/doc-repo.js.map +1 -0
- package/dist/repo/file-learning-repo.d.ts +3 -3
- package/dist/repo/file-learning-repo.d.ts.map +1 -1
- package/dist/repo/file-learning-repo.js +19 -8
- package/dist/repo/file-learning-repo.js.map +1 -1
- package/dist/repo/index.d.ts +4 -6
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +3 -5
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/learning-repo.d.ts +10 -3
- package/dist/repo/learning-repo.d.ts.map +1 -1
- package/dist/repo/learning-repo.js +68 -11
- package/dist/repo/learning-repo.js.map +1 -1
- package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
- package/dist/repo/orchestrator-state-repo.js +8 -1
- package/dist/repo/orchestrator-state-repo.js.map +1 -1
- package/dist/repo/run-repo.d.ts +3 -3
- package/dist/repo/run-repo.d.ts.map +1 -1
- package/dist/repo/run-repo.js +40 -19
- package/dist/repo/run-repo.js.map +1 -1
- package/dist/repo/task-repo.d.ts +14 -3
- package/dist/repo/task-repo.d.ts.map +1 -1
- package/dist/repo/task-repo.js +194 -20
- package/dist/repo/task-repo.js.map +1 -1
- package/dist/repo/tracked-project-repo.d.ts.map +1 -1
- package/dist/repo/tracked-project-repo.js +15 -1
- package/dist/repo/tracked-project-repo.js.map +1 -1
- package/dist/repo/worker-repo.d.ts +3 -2
- package/dist/repo/worker-repo.d.ts.map +1 -1
- package/dist/repo/worker-repo.js +54 -8
- package/dist/repo/worker-repo.js.map +1 -1
- package/dist/schemas/sync.js +2 -2
- package/dist/schemas/sync.js.map +1 -1
- package/dist/schemas/worker.d.ts +1 -0
- package/dist/schemas/worker.d.ts.map +1 -1
- package/dist/schemas/worker.js +1 -0
- package/dist/schemas/worker.js.map +1 -1
- package/dist/services/agent-service.d.ts +57 -0
- package/dist/services/agent-service.d.ts.map +1 -0
- package/dist/services/agent-service.js +81 -0
- package/dist/services/agent-service.js.map +1 -0
- package/dist/services/attempt-service.d.ts.map +1 -1
- package/dist/services/attempt-service.js +1 -4
- 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 +18 -10
- package/dist/services/auto-sync-service.js.map +1 -1
- package/dist/services/claim-service.d.ts +8 -2
- package/dist/services/claim-service.d.ts.map +1 -1
- package/dist/services/claim-service.js +37 -23
- package/dist/services/claim-service.js.map +1 -1
- package/dist/services/cycle-scan-service.d.ts +32 -0
- package/dist/services/cycle-scan-service.d.ts.map +1 -0
- package/dist/services/cycle-scan-service.js +546 -0
- package/dist/services/cycle-scan-service.js.map +1 -0
- package/dist/services/daemon-service.d.ts +40 -2
- package/dist/services/daemon-service.d.ts.map +1 -1
- package/dist/services/daemon-service.js +199 -52
- package/dist/services/daemon-service.js.map +1 -1
- package/dist/services/deduplication-service.d.ts +8 -4
- package/dist/services/deduplication-service.d.ts.map +1 -1
- package/dist/services/deduplication-service.js +79 -25
- package/dist/services/deduplication-service.js.map +1 -1
- package/dist/services/dep-service.d.ts +2 -2
- package/dist/services/dep-service.d.ts.map +1 -1
- package/dist/services/dep-service.js +9 -5
- package/dist/services/dep-service.js.map +1 -1
- package/dist/services/diversifier-service.d.ts +2 -1
- package/dist/services/diversifier-service.d.ts.map +1 -1
- package/dist/services/diversifier-service.js +37 -43
- package/dist/services/diversifier-service.js.map +1 -1
- package/dist/services/doc-service.d.ts +49 -0
- package/dist/services/doc-service.d.ts.map +1 -0
- package/dist/services/doc-service.js +605 -0
- package/dist/services/doc-service.js.map +1 -0
- package/dist/services/embedding-service.d.ts +66 -2
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +138 -24
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/file-learning-service.d.ts.map +1 -1
- package/dist/services/file-learning-service.js +8 -7
- package/dist/services/file-learning-service.js.map +1 -1
- package/dist/services/file-watcher-service.d.ts.map +1 -1
- package/dist/services/file-watcher-service.js +58 -11
- package/dist/services/file-watcher-service.js.map +1 -1
- package/dist/services/hierarchy-service.d.ts +1 -1
- package/dist/services/hierarchy-service.d.ts.map +1 -1
- package/dist/services/hierarchy-service.js +50 -32
- package/dist/services/hierarchy-service.js.map +1 -1
- package/dist/services/index.d.ts +13 -15
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +13 -15
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts +3 -3
- package/dist/services/learning-service.d.ts.map +1 -1
- package/dist/services/learning-service.js +75 -42
- package/dist/services/learning-service.js.map +1 -1
- package/dist/services/llm-service.d.ts +62 -0
- package/dist/services/llm-service.d.ts.map +1 -0
- package/dist/services/llm-service.js +172 -0
- package/dist/services/llm-service.js.map +1 -0
- package/dist/services/migration-service.d.ts +1 -1
- package/dist/services/migration-service.d.ts.map +1 -1
- package/dist/services/migration-service.js +18 -7
- package/dist/services/migration-service.js.map +1 -1
- package/dist/services/orchestrator-service.d.ts +4 -3
- package/dist/services/orchestrator-service.d.ts.map +1 -1
- package/dist/services/orchestrator-service.js +66 -27
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/query-expansion-service.d.ts +30 -9
- package/dist/services/query-expansion-service.d.ts.map +1 -1
- package/dist/services/query-expansion-service.js +54 -63
- package/dist/services/query-expansion-service.js.map +1 -1
- package/dist/services/ready-service.d.ts +21 -1
- package/dist/services/ready-service.d.ts.map +1 -1
- package/dist/services/ready-service.js +44 -21
- package/dist/services/ready-service.js.map +1 -1
- package/dist/services/retriever-service.d.ts +10 -10
- package/dist/services/retriever-service.d.ts.map +1 -1
- package/dist/services/retriever-service.js +53 -161
- package/dist/services/retriever-service.js.map +1 -1
- package/dist/services/sync-service.d.ts +17 -4
- package/dist/services/sync-service.d.ts.map +1 -1
- package/dist/services/sync-service.js +381 -116
- package/dist/services/sync-service.js.map +1 -1
- package/dist/services/task-service.d.ts +6 -4
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +165 -35
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/tracing-service.d.ts +55 -0
- package/dist/services/tracing-service.d.ts.map +1 -0
- package/dist/services/tracing-service.js +99 -0
- package/dist/services/tracing-service.js.map +1 -0
- package/dist/services/transcript-adapter.d.ts +99 -0
- package/dist/services/transcript-adapter.d.ts.map +1 -0
- package/dist/services/transcript-adapter.js +283 -0
- package/dist/services/transcript-adapter.js.map +1 -0
- package/dist/services/validation-service.d.ts +85 -0
- package/dist/services/validation-service.d.ts.map +1 -0
- package/dist/services/validation-service.js +289 -0
- package/dist/services/validation-service.js.map +1 -0
- package/dist/services/worker-process.d.ts +23 -4
- package/dist/services/worker-process.d.ts.map +1 -1
- package/dist/services/worker-process.js +168 -72
- package/dist/services/worker-process.js.map +1 -1
- package/dist/services/worker-service.d.ts.map +1 -1
- package/dist/services/worker-service.js +7 -12
- package/dist/services/worker-service.js.map +1 -1
- package/dist/sync/claude-task-writer.d.ts +49 -0
- package/dist/sync/claude-task-writer.d.ts.map +1 -0
- package/dist/sync/claude-task-writer.js +135 -0
- package/dist/sync/claude-task-writer.js.map +1 -0
- package/dist/utils/doc-hash.d.ts +10 -0
- package/dist/utils/doc-hash.d.ts.map +1 -0
- package/dist/utils/doc-hash.js +14 -0
- package/dist/utils/doc-hash.js.map +1 -0
- package/dist/utils/doc-renderer.d.ts +44 -0
- package/dist/utils/doc-renderer.d.ts.map +1 -0
- package/dist/utils/doc-renderer.js +202 -0
- package/dist/utils/doc-renderer.js.map +1 -0
- package/dist/utils/math.d.ts +5 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +12 -4
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/sql.d.ts +9 -0
- package/dist/utils/sql.d.ts.map +1 -0
- package/dist/utils/sql.js +9 -0
- package/dist/utils/sql.js.map +1 -0
- package/dist/utils/toml-config.d.ts +22 -0
- package/dist/utils/toml-config.d.ts.map +1 -0
- package/dist/utils/toml-config.js +75 -0
- package/dist/utils/toml-config.js.map +1 -0
- package/dist/worker/hooks.d.ts +102 -0
- package/dist/worker/hooks.d.ts.map +1 -0
- package/dist/worker/hooks.js +11 -0
- package/dist/worker/hooks.js.map +1 -0
- package/dist/worker/index.d.ts +9 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +8 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/run-worker.d.ts +33 -0
- package/dist/worker/run-worker.d.ts.map +1 -0
- package/dist/worker/run-worker.js +265 -0
- package/dist/worker/run-worker.js.map +1 -0
- package/package.json +14 -12
- package/dist/mappers/anchor.d.ts +0 -14
- package/dist/mappers/anchor.d.ts.map +0 -1
- package/dist/mappers/anchor.js +0 -38
- package/dist/mappers/anchor.js.map +0 -1
- package/dist/mappers/candidate.d.ts +0 -23
- package/dist/mappers/candidate.d.ts.map +0 -1
- package/dist/mappers/candidate.js +0 -53
- package/dist/mappers/candidate.js.map +0 -1
- package/dist/mappers/edge.d.ts +0 -10
- package/dist/mappers/edge.d.ts.map +0 -1
- package/dist/mappers/edge.js +0 -19
- package/dist/mappers/edge.js.map +0 -1
- package/dist/repo/anchor-repo.d.ts +0 -52
- package/dist/repo/anchor-repo.d.ts.map +0 -1
- package/dist/repo/anchor-repo.js +0 -204
- package/dist/repo/anchor-repo.js.map +0 -1
- package/dist/repo/candidate-repo.d.ts +0 -16
- package/dist/repo/candidate-repo.d.ts.map +0 -1
- package/dist/repo/candidate-repo.js +0 -143
- package/dist/repo/candidate-repo.js.map +0 -1
- package/dist/repo/edge-repo.d.ts +0 -26
- package/dist/repo/edge-repo.d.ts.map +0 -1
- package/dist/repo/edge-repo.js +0 -227
- package/dist/repo/edge-repo.js.map +0 -1
- package/dist/services/anchor-service.d.ts +0 -147
- package/dist/services/anchor-service.d.ts.map +0 -1
- package/dist/services/anchor-service.js +0 -540
- package/dist/services/anchor-service.js.map +0 -1
- package/dist/services/anchor-verification.d.ts +0 -94
- package/dist/services/anchor-verification.d.ts.map +0 -1
- package/dist/services/anchor-verification.js +0 -617
- package/dist/services/anchor-verification.js.map +0 -1
- package/dist/services/ast-grep-service.d.ts +0 -58
- package/dist/services/ast-grep-service.d.ts.map +0 -1
- package/dist/services/ast-grep-service.js +0 -356
- package/dist/services/ast-grep-service.js.map +0 -1
- package/dist/services/candidate-extractor-service.d.ts +0 -56
- package/dist/services/candidate-extractor-service.d.ts.map +0 -1
- package/dist/services/candidate-extractor-service.js +0 -365
- package/dist/services/candidate-extractor-service.js.map +0 -1
- package/dist/services/edge-service.d.ts +0 -78
- package/dist/services/edge-service.d.ts.map +0 -1
- package/dist/services/edge-service.js +0 -158
- package/dist/services/edge-service.js.map +0 -1
- package/dist/services/feedback-tracker.d.ts +0 -64
- package/dist/services/feedback-tracker.d.ts.map +0 -1
- package/dist/services/feedback-tracker.js +0 -110
- package/dist/services/feedback-tracker.js.map +0 -1
- package/dist/services/graph-expansion.d.ts +0 -155
- package/dist/services/graph-expansion.d.ts.map +0 -1
- package/dist/services/graph-expansion.js +0 -466
- package/dist/services/graph-expansion.js.map +0 -1
- package/dist/services/promotion-service.d.ts +0 -67
- package/dist/services/promotion-service.d.ts.map +0 -1
- package/dist/services/promotion-service.js +0 -151
- package/dist/services/promotion-service.js.map +0 -1
- package/dist/services/swarm-verification.d.ts +0 -104
- package/dist/services/swarm-verification.d.ts.map +0 -1
- package/dist/services/swarm-verification.js +0 -400
- package/dist/services/swarm-verification.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { LlmService } from "./llm-service.js";
|
|
2
3
|
declare const QueryExpansionUnavailableError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
3
4
|
readonly _tag: "QueryExpansionUnavailableError";
|
|
4
5
|
} & Readonly<A>;
|
|
@@ -13,6 +14,14 @@ export declare class QueryExpansionUnavailableError extends QueryExpansionUnavai
|
|
|
13
14
|
/**
|
|
14
15
|
* Result of query expansion.
|
|
15
16
|
*/
|
|
17
|
+
export declare const QueryExpansionResultSchema: {
|
|
18
|
+
/** Original query */
|
|
19
|
+
original: string;
|
|
20
|
+
/** Expanded queries (includes original plus alternatives) */
|
|
21
|
+
expanded: readonly string[];
|
|
22
|
+
/** Whether expansion was performed (false if using noop) */
|
|
23
|
+
wasExpanded: boolean;
|
|
24
|
+
};
|
|
16
25
|
export interface QueryExpansionResult {
|
|
17
26
|
/** Original query */
|
|
18
27
|
readonly original: string;
|
|
@@ -21,6 +30,10 @@ export interface QueryExpansionResult {
|
|
|
21
30
|
/** Whether expansion was performed (false if using noop) */
|
|
22
31
|
readonly wasExpanded: boolean;
|
|
23
32
|
}
|
|
33
|
+
/** Maximum number of expanded queries (excluding original) to prevent unbounded generation */
|
|
34
|
+
export declare const MAX_EXPANSION_QUERIES = 5;
|
|
35
|
+
/** Maximum character length for any single expanded query */
|
|
36
|
+
export declare const MAX_QUERY_LENGTH = 200;
|
|
24
37
|
declare const QueryExpansionService_base: Context.TagClass<QueryExpansionService, "QueryExpansionService", {
|
|
25
38
|
/** Expand a search query into multiple alternative phrasings */
|
|
26
39
|
readonly expand: (query: string) => Effect.Effect<QueryExpansionResult, QueryExpansionUnavailableError>;
|
|
@@ -31,25 +44,33 @@ declare const QueryExpansionService_base: Context.TagClass<QueryExpansionService
|
|
|
31
44
|
* QueryExpansionService uses an LLM to generate alternative phrasings of search queries.
|
|
32
45
|
* This improves recall by searching for semantically equivalent but differently worded queries.
|
|
33
46
|
*
|
|
34
|
-
* Design: Following DD-006 patterns for LLM integration.
|
|
35
|
-
* The service gracefully degrades when
|
|
47
|
+
* Design: Following DD-006 patterns for LLM integration, DD-022 for centralized LLM service.
|
|
48
|
+
* The service gracefully degrades when no LLM backend is available.
|
|
36
49
|
*/
|
|
37
50
|
export declare class QueryExpansionService extends QueryExpansionService_base {
|
|
38
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Validate and limit expanded query alternatives.
|
|
54
|
+
* Filters out empty, overly long, duplicate, and non-string entries,
|
|
55
|
+
* then caps the total number of expansions.
|
|
56
|
+
*
|
|
57
|
+
* @returns Array with original query first, followed by up to MAX_EXPANSION_QUERIES alternatives
|
|
58
|
+
*/
|
|
59
|
+
export declare const validateExpansions: (query: string, alternatives: unknown[]) => string[];
|
|
39
60
|
/**
|
|
40
61
|
* Noop implementation - returns original query only.
|
|
41
|
-
* Used when
|
|
62
|
+
* Used when no LLM backend is available or LLM features are disabled.
|
|
42
63
|
*/
|
|
43
64
|
export declare const QueryExpansionServiceNoop: Layer.Layer<QueryExpansionService, never, never>;
|
|
44
65
|
/**
|
|
45
|
-
* Live implementation using
|
|
46
|
-
*
|
|
66
|
+
* Live implementation using centralized LlmService (DD-022).
|
|
67
|
+
* Delegates all LLM calls to LlmService instead of calling Anthropic SDK directly.
|
|
47
68
|
*/
|
|
48
|
-
export declare const QueryExpansionServiceLive: Layer.Layer<QueryExpansionService,
|
|
69
|
+
export declare const QueryExpansionServiceLive: Layer.Layer<QueryExpansionService, never, LlmService>;
|
|
49
70
|
/**
|
|
50
|
-
* Auto-detecting layer that uses Live if
|
|
51
|
-
* This allows graceful degradation when
|
|
71
|
+
* Auto-detecting layer that uses Live if LlmService is available, Noop otherwise.
|
|
72
|
+
* This allows graceful degradation when no LLM backend is configured.
|
|
52
73
|
*/
|
|
53
|
-
export declare const QueryExpansionServiceAuto: Layer.Layer<QueryExpansionService,
|
|
74
|
+
export declare const QueryExpansionServiceAuto: Layer.Layer<QueryExpansionService, never, LlmService>;
|
|
54
75
|
export {};
|
|
55
76
|
//# sourceMappingURL=query-expansion-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-expansion-service.d.ts","sourceRoot":"","sources":["../../src/services/query-expansion-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"query-expansion-service.d.ts","sourceRoot":"","sources":["../../src/services/query-expansion-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;;;;AAE7C;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,oCAAmD;IACrG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAC;IACA,IAAI,OAAO,WAEV;CACF;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B;IACrC,qBAAqB;cACL,MAAM;IACtB,6DAA6D;cAC7C,SAAS,MAAM,EAAE;IACjC,4DAA4D;iBACtC,OAAO;CAC9B,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,MAAM,CAAA;;IAY/B,gEAAgE;qBAC/C,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;IACvG,4CAA4C;0BACtB,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAbtD;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,0BAQxC;CAAG;AAyDN;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,cAAc,OAAO,EAAE,KACtB,MAAM,EAYR,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,kDAUrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uDAwCrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uDAMrC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Context, Effect, Layer
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { Data } from "effect";
|
|
3
|
+
import { LlmService } from "./llm-service.js";
|
|
3
4
|
/**
|
|
4
5
|
* Error indicating query expansion is unavailable.
|
|
5
6
|
*/
|
|
@@ -8,12 +9,27 @@ export class QueryExpansionUnavailableError extends Data.TaggedError("QueryExpan
|
|
|
8
9
|
return `Query expansion unavailable: ${this.reason}`;
|
|
9
10
|
}
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Result of query expansion.
|
|
14
|
+
*/
|
|
15
|
+
export const QueryExpansionResultSchema = {
|
|
16
|
+
/** Original query */
|
|
17
|
+
original: "",
|
|
18
|
+
/** Expanded queries (includes original plus alternatives) */
|
|
19
|
+
expanded: [],
|
|
20
|
+
/** Whether expansion was performed (false if using noop) */
|
|
21
|
+
wasExpanded: false
|
|
22
|
+
};
|
|
23
|
+
/** Maximum number of expanded queries (excluding original) to prevent unbounded generation */
|
|
24
|
+
export const MAX_EXPANSION_QUERIES = 5;
|
|
25
|
+
/** Maximum character length for any single expanded query */
|
|
26
|
+
export const MAX_QUERY_LENGTH = 200;
|
|
11
27
|
/**
|
|
12
28
|
* QueryExpansionService uses an LLM to generate alternative phrasings of search queries.
|
|
13
29
|
* This improves recall by searching for semantically equivalent but differently worded queries.
|
|
14
30
|
*
|
|
15
|
-
* Design: Following DD-006 patterns for LLM integration.
|
|
16
|
-
* The service gracefully degrades when
|
|
31
|
+
* Design: Following DD-006 patterns for LLM integration, DD-022 for centralized LLM service.
|
|
32
|
+
* The service gracefully degrades when no LLM backend is available.
|
|
17
33
|
*/
|
|
18
34
|
export class QueryExpansionService extends Context.Tag("QueryExpansionService")() {
|
|
19
35
|
}
|
|
@@ -78,9 +94,26 @@ const parseLlmJson = (raw) => {
|
|
|
78
94
|
}
|
|
79
95
|
return null;
|
|
80
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Validate and limit expanded query alternatives.
|
|
99
|
+
* Filters out empty, overly long, duplicate, and non-string entries,
|
|
100
|
+
* then caps the total number of expansions.
|
|
101
|
+
*
|
|
102
|
+
* @returns Array with original query first, followed by up to MAX_EXPANSION_QUERIES alternatives
|
|
103
|
+
*/
|
|
104
|
+
export const validateExpansions = (query, alternatives) => {
|
|
105
|
+
const uniqueAlternatives = [...new Set(alternatives
|
|
106
|
+
.filter((alt) => typeof alt === "string" && alt.trim().length > 0)
|
|
107
|
+
.map(alt => alt.trim())
|
|
108
|
+
.filter(alt => alt.length <= MAX_QUERY_LENGTH))];
|
|
109
|
+
return [query, ...uniqueAlternatives
|
|
110
|
+
.filter(alt => alt.toLowerCase() !== query.toLowerCase())
|
|
111
|
+
.slice(0, MAX_EXPANSION_QUERIES)
|
|
112
|
+
];
|
|
113
|
+
};
|
|
81
114
|
/**
|
|
82
115
|
* Noop implementation - returns original query only.
|
|
83
|
-
* Used when
|
|
116
|
+
* Used when no LLM backend is available or LLM features are disabled.
|
|
84
117
|
*/
|
|
85
118
|
export const QueryExpansionServiceNoop = Layer.succeed(QueryExpansionService, {
|
|
86
119
|
expand: (query) => Effect.succeed({
|
|
@@ -91,84 +124,42 @@ export const QueryExpansionServiceNoop = Layer.succeed(QueryExpansionService, {
|
|
|
91
124
|
isAvailable: () => Effect.succeed(false)
|
|
92
125
|
});
|
|
93
126
|
/**
|
|
94
|
-
* Live implementation using
|
|
95
|
-
*
|
|
127
|
+
* Live implementation using centralized LlmService (DD-022).
|
|
128
|
+
* Delegates all LLM calls to LlmService instead of calling Anthropic SDK directly.
|
|
96
129
|
*/
|
|
97
130
|
export const QueryExpansionServiceLive = Layer.effect(QueryExpansionService, Effect.gen(function* () {
|
|
98
|
-
|
|
99
|
-
const apiKey = yield* Config.string("ANTHROPIC_API_KEY").pipe(Effect.mapError(() => new QueryExpansionUnavailableError({
|
|
100
|
-
reason: "ANTHROPIC_API_KEY environment variable is not set"
|
|
101
|
-
})));
|
|
102
|
-
// Lazy-load client
|
|
103
|
-
let client = null;
|
|
104
|
-
const ensureClient = Effect.gen(function* () {
|
|
105
|
-
if (client)
|
|
106
|
-
return client;
|
|
107
|
-
// Dynamic import of Anthropic SDK (optional peer dependency)
|
|
108
|
-
const Anthropic = yield* Effect.tryPromise({
|
|
109
|
-
try: async () => {
|
|
110
|
-
// @ts-expect-error - @anthropic-ai/sdk is an optional peer dependency
|
|
111
|
-
const mod = await import("@anthropic-ai/sdk");
|
|
112
|
-
return mod.default;
|
|
113
|
-
},
|
|
114
|
-
catch: () => new QueryExpansionUnavailableError({
|
|
115
|
-
reason: "@anthropic-ai/sdk is not installed"
|
|
116
|
-
})
|
|
117
|
-
});
|
|
118
|
-
client = new Anthropic({ apiKey });
|
|
119
|
-
return client;
|
|
120
|
-
});
|
|
131
|
+
const llm = yield* LlmService;
|
|
121
132
|
return {
|
|
122
133
|
expand: (query) => Effect.gen(function* () {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
max_tokens: 256,
|
|
128
|
-
messages: [{
|
|
129
|
-
role: "user",
|
|
130
|
-
content: EXPANSION_PROMPT + JSON.stringify(query)
|
|
131
|
-
}]
|
|
132
|
-
}),
|
|
133
|
-
catch: (e) => new QueryExpansionUnavailableError({
|
|
134
|
-
reason: `API call failed: ${String(e)}`
|
|
135
|
-
})
|
|
136
|
-
});
|
|
137
|
-
// Extract text from response
|
|
138
|
-
const textContent = response.content.find(c => c.type === "text");
|
|
139
|
-
if (!textContent || !textContent.text) {
|
|
134
|
+
const text = yield* llm.complete(EXPANSION_PROMPT + JSON.stringify(query), { model: "claude-haiku-4-5-20251001", maxTokens: 256 }).pipe(Effect.mapError((e) => new QueryExpansionUnavailableError({
|
|
135
|
+
reason: e.reason
|
|
136
|
+
})));
|
|
137
|
+
if (!text) {
|
|
140
138
|
return { original: query, expanded: [query], wasExpanded: false };
|
|
141
139
|
}
|
|
142
140
|
// Parse the JSON array of expanded queries
|
|
143
|
-
const alternatives = parseLlmJson(
|
|
141
|
+
const alternatives = parseLlmJson(text);
|
|
144
142
|
if (!alternatives || !Array.isArray(alternatives)) {
|
|
145
143
|
return { original: query, expanded: [query], wasExpanded: false };
|
|
146
144
|
}
|
|
147
|
-
//
|
|
148
|
-
const
|
|
149
|
-
.filter((alt) => typeof alt === "string" && alt.trim().length > 0)
|
|
150
|
-
.map(alt => alt.trim()))];
|
|
151
|
-
// Always include original query first
|
|
152
|
-
const expanded = [query, ...uniqueAlternatives.filter(alt => alt.toLowerCase() !== query.toLowerCase())];
|
|
145
|
+
// Validate and limit expansion results
|
|
146
|
+
const expanded = validateExpansions(query, alternatives);
|
|
153
147
|
return {
|
|
154
148
|
original: query,
|
|
155
149
|
expanded,
|
|
156
|
-
wasExpanded:
|
|
150
|
+
wasExpanded: expanded.length > 1
|
|
157
151
|
};
|
|
158
152
|
}),
|
|
159
|
-
isAvailable: () =>
|
|
153
|
+
isAvailable: () => llm.isAvailable()
|
|
160
154
|
};
|
|
161
155
|
}));
|
|
162
156
|
/**
|
|
163
|
-
* Auto-detecting layer that uses Live if
|
|
164
|
-
* This allows graceful degradation when
|
|
157
|
+
* Auto-detecting layer that uses Live if LlmService is available, Noop otherwise.
|
|
158
|
+
* This allows graceful degradation when no LLM backend is configured.
|
|
165
159
|
*/
|
|
166
160
|
export const QueryExpansionServiceAuto = Layer.unwrapEffect(Effect.gen(function* () {
|
|
167
|
-
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
return QueryExpansionServiceLive;
|
|
171
|
-
}
|
|
172
|
-
return QueryExpansionServiceNoop;
|
|
161
|
+
const llm = yield* LlmService;
|
|
162
|
+
const available = yield* llm.isAvailable();
|
|
163
|
+
return available ? QueryExpansionServiceLive : QueryExpansionServiceNoop;
|
|
173
164
|
}));
|
|
174
165
|
//# sourceMappingURL=query-expansion-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-expansion-service.js","sourceRoot":"","sources":["../../src/services/query-expansion-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"query-expansion-service.js","sourceRoot":"","sources":["../../src/services/query-expansion-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAEnG;IACA,IAAI,OAAO;QACT,OAAO,gCAAgC,IAAI,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,qBAAqB;IACrB,QAAQ,EAAE,EAAY;IACtB,6DAA6D;IAC7D,QAAQ,EAAE,EAAuB;IACjC,4DAA4D;IAC5D,WAAW,EAAE,KAAgB;CAC9B,CAAA;AAYD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAEtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAEnC;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAQ5E;CAAG;AAEN;;;GAGG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;CAiBxB,CAAA;AAED;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAI,GAAW,EAAY,EAAE;IAChD,2BAA2B;IAC3B,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAEvD,qCAAqC;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC/D,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,iDAAiD;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAE7D,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,YAAuB,EACb,EAAE;IACZ,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CACpC,YAAY;aACT,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aAChF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,CACjD,CAAC,CAAA;IAEF,OAAO,CAAC,KAAK,EAAE,GAAG,kBAAkB;aACjC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;aACxD,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC;KACjC,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CACpD,qBAAqB,EACrB;IACE,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,WAAW,EAAE,KAAK;KACnB,CAAC;IACF,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,CACnD,qBAAqB,EACrB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,UAAU,CAAA;IAE7B,OAAO;QACL,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAC9B,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EACxC,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,GAAG,EAAE,CACvD,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,8BAA8B,CAAC;gBACxD,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC,CACJ,CAAA;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YACnE,CAAC;YAED,2CAA2C;YAC3C,MAAM,YAAY,GAAG,YAAY,CAAW,IAAI,CAAC,CAAA;YACjD,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YACnE,CAAC;YAED,uCAAuC;YACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;YAExD,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,QAAQ;gBACR,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;aACjC,CAAA;QACH,CAAC,CAAC;QAEJ,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE;KACrC,CAAA;AACH,CAAC,CAAC,CACH,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,YAAY,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,UAAU,CAAA;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;IAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAA;AAC1E,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -3,9 +3,29 @@ import { TaskRepository } from "../repo/task-repo.js";
|
|
|
3
3
|
import { DependencyRepository } from "../repo/dep-repo.js";
|
|
4
4
|
import { DatabaseError } from "../errors.js";
|
|
5
5
|
import type { Task, TaskId, TaskWithDeps } from "@jamesaphoenix/tx-types";
|
|
6
|
+
/**
|
|
7
|
+
* Result of checking whether a task is ready to be worked on.
|
|
8
|
+
* Replaces silent `false` with an explicit reason for not-ready states.
|
|
9
|
+
*/
|
|
10
|
+
export type ReadyCheckResult = {
|
|
11
|
+
readonly _tag: "Ready";
|
|
12
|
+
} | {
|
|
13
|
+
readonly _tag: "TaskNotFound";
|
|
14
|
+
readonly id: TaskId;
|
|
15
|
+
} | {
|
|
16
|
+
readonly _tag: "WrongStatus";
|
|
17
|
+
readonly id: TaskId;
|
|
18
|
+
readonly status: string;
|
|
19
|
+
} | {
|
|
20
|
+
readonly _tag: "Blocked";
|
|
21
|
+
readonly id: TaskId;
|
|
22
|
+
readonly pendingBlockerIds: readonly string[];
|
|
23
|
+
};
|
|
24
|
+
/** Helper to check if a ReadyCheckResult indicates the task is ready. */
|
|
25
|
+
export declare const isReadyResult: (result: ReadyCheckResult) => boolean;
|
|
6
26
|
declare const ReadyService_base: Context.TagClass<ReadyService, "ReadyService", {
|
|
7
27
|
readonly getReady: (limit?: number) => Effect.Effect<readonly TaskWithDeps[], DatabaseError>;
|
|
8
|
-
readonly isReady: (id: TaskId) => Effect.Effect<
|
|
28
|
+
readonly isReady: (id: TaskId) => Effect.Effect<ReadyCheckResult, DatabaseError>;
|
|
9
29
|
readonly getBlockers: (id: TaskId) => Effect.Effect<readonly Task[], DatabaseError>;
|
|
10
30
|
readonly getBlocking: (id: TaskId) => Effect.Effect<readonly Task[], DatabaseError>;
|
|
11
31
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-service.d.ts","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;;
|
|
1
|
+
{"version":3,"file":"ready-service.d.ts","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEzE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEpG,yEAAyE;AACzE,eAAO,MAAM,aAAa,GAAI,QAAQ,gBAAgB,KAAG,OAAkC,CAAA;;uBAKpE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;sBAC1E,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;0BAC1D,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC;0BAC7D,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC;;AANvF,qBAAa,YAAa,SAAQ,iBAQ/B;CAAG;AAEN,eAAO,MAAM,gBAAgB,yEAqG5B,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { TaskRepository } from "../repo/task-repo.js";
|
|
3
3
|
import { DependencyRepository } from "../repo/dep-repo.js";
|
|
4
|
+
/** Helper to check if a ReadyCheckResult indicates the task is ready. */
|
|
5
|
+
export const isReadyResult = (result) => result._tag === "Ready";
|
|
4
6
|
export class ReadyService extends Context.Tag("ReadyService")() {
|
|
5
7
|
}
|
|
6
8
|
export const ReadyServiceLive = Layer.effect(ReadyService, Effect.gen(function* () {
|
|
@@ -8,26 +10,41 @@ export const ReadyServiceLive = Layer.effect(ReadyService, Effect.gen(function*
|
|
|
8
10
|
const depRepo = yield* DependencyRepository;
|
|
9
11
|
return {
|
|
10
12
|
getReady: (limit = 100) => Effect.gen(function* () {
|
|
13
|
+
// 1. Single query: get all candidate tasks (excluding actively claimed)
|
|
14
|
+
// The excludeClaimed filter prevents the thundering herd problem where
|
|
15
|
+
// multiple workers all see the same tasks and race to claim them.
|
|
11
16
|
const candidates = yield* taskRepo.findAll({
|
|
12
|
-
status: ["backlog", "ready", "planning"]
|
|
17
|
+
status: ["backlog", "ready", "planning"],
|
|
18
|
+
excludeClaimed: true
|
|
13
19
|
});
|
|
20
|
+
if (candidates.length === 0) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
const candidateIds = candidates.map(t => t.id);
|
|
24
|
+
// 2-4. Batch queries: get all dependency info in 3 queries instead of 3*N
|
|
25
|
+
const blockerIdsMap = yield* depRepo.getBlockerIdsForMany(candidateIds);
|
|
26
|
+
const blockingIdsMap = yield* depRepo.getBlockingIdsForMany(candidateIds);
|
|
27
|
+
const childIdsMap = yield* taskRepo.getChildIdsForMany(candidateIds);
|
|
28
|
+
// 5. Single query: get all unique blocker tasks to check their status
|
|
29
|
+
const allBlockerIds = new Set();
|
|
30
|
+
for (const blockerIds of blockerIdsMap.values()) {
|
|
31
|
+
for (const id of blockerIds) {
|
|
32
|
+
allBlockerIds.add(id);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const blockerTasks = allBlockerIds.size > 0
|
|
36
|
+
? yield* taskRepo.findByIds([...allBlockerIds])
|
|
37
|
+
: [];
|
|
38
|
+
const blockerStatusMap = new Map(blockerTasks.map(t => [t.id, t.status]));
|
|
39
|
+
// Process in memory (no more queries)
|
|
14
40
|
const ready = [];
|
|
15
41
|
for (const task of candidates) {
|
|
16
|
-
const blockerIds =
|
|
17
|
-
const blockingIds =
|
|
18
|
-
const childIds =
|
|
19
|
-
if
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
blockedBy: [],
|
|
23
|
-
blocks: blockingIds,
|
|
24
|
-
children: childIds,
|
|
25
|
-
isReady: true
|
|
26
|
-
});
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
const blockers = yield* taskRepo.findByIds(blockerIds);
|
|
30
|
-
const allDone = blockers.every(b => b.status === "done");
|
|
42
|
+
const blockerIds = blockerIdsMap.get(task.id) ?? [];
|
|
43
|
+
const blockingIds = blockingIdsMap.get(task.id) ?? [];
|
|
44
|
+
const childIds = childIdsMap.get(task.id) ?? [];
|
|
45
|
+
// Check if all blockers are done
|
|
46
|
+
const allDone = blockerIds.length === 0 ||
|
|
47
|
+
blockerIds.every(id => blockerStatusMap.get(id) === "done");
|
|
31
48
|
if (allDone) {
|
|
32
49
|
ready.push({
|
|
33
50
|
...task,
|
|
@@ -44,14 +61,20 @@ export const ReadyServiceLive = Layer.effect(ReadyService, Effect.gen(function*
|
|
|
44
61
|
isReady: (id) => Effect.gen(function* () {
|
|
45
62
|
const task = yield* taskRepo.findById(id);
|
|
46
63
|
if (!task)
|
|
47
|
-
return
|
|
48
|
-
if (!["backlog", "ready", "planning"].includes(task.status))
|
|
49
|
-
return
|
|
64
|
+
return { _tag: "TaskNotFound", id };
|
|
65
|
+
if (!["backlog", "ready", "planning"].includes(task.status)) {
|
|
66
|
+
return { _tag: "WrongStatus", id, status: task.status };
|
|
67
|
+
}
|
|
50
68
|
const blockerIds = yield* depRepo.getBlockerIds(id);
|
|
51
69
|
if (blockerIds.length === 0)
|
|
52
|
-
return
|
|
70
|
+
return { _tag: "Ready" };
|
|
53
71
|
const blockers = yield* taskRepo.findByIds(blockerIds);
|
|
54
|
-
|
|
72
|
+
const pendingBlockerIds = blockers
|
|
73
|
+
.filter(b => b.status !== "done")
|
|
74
|
+
.map(b => b.id);
|
|
75
|
+
if (pendingBlockerIds.length === 0)
|
|
76
|
+
return { _tag: "Ready" };
|
|
77
|
+
return { _tag: "Blocked", id, pendingBlockerIds };
|
|
55
78
|
}),
|
|
56
79
|
getBlockers: (id) => Effect.gen(function* () {
|
|
57
80
|
const blockerIds = yield* depRepo.getBlockerIds(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-service.js","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ready-service.js","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
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";
|
|
5
4
|
import { RerankerService } from "./reranker-service.js";
|
|
6
|
-
import { RetrievalError, DatabaseError } from "../errors.js";
|
|
5
|
+
import { RetrievalError, DatabaseError, EmbeddingDimensionMismatchError } from "../errors.js";
|
|
7
6
|
import type { LearningWithScore, RetrievalOptions } from "@jamesaphoenix/tx-types";
|
|
8
7
|
declare const RetrieverService_base: Context.TagClass<RetrieverService, "RetrieverService", {
|
|
9
8
|
/**
|
|
10
9
|
* Search for learnings matching a query.
|
|
11
10
|
* Returns scored results sorted by relevance (highest first).
|
|
12
11
|
*/
|
|
13
|
-
readonly search: (query: string, options?: RetrievalOptions) => Effect.Effect<readonly LearningWithScore[], RetrievalError | DatabaseError>;
|
|
12
|
+
readonly search: (query: string, options?: RetrievalOptions) => Effect.Effect<readonly LearningWithScore[], RetrievalError | DatabaseError | EmbeddingDimensionMismatchError>;
|
|
14
13
|
/** Check if retrieval functionality is available */
|
|
15
14
|
readonly isAvailable: () => Effect.Effect<boolean>;
|
|
16
15
|
}>;
|
|
@@ -30,20 +29,21 @@ export declare class RetrieverService extends RetrieverService_base {
|
|
|
30
29
|
export declare const RetrieverServiceNoop: Layer.Layer<RetrieverService, never, never>;
|
|
31
30
|
/**
|
|
32
31
|
* Live implementation with BM25 + vector + RRF pipeline.
|
|
33
|
-
*
|
|
34
|
-
* - Query expansion via LLM
|
|
32
|
+
* Simplified pipeline:
|
|
35
33
|
* - BM25 full-text search
|
|
36
34
|
* - Vector similarity (when embeddings available)
|
|
37
35
|
* - RRF fusion
|
|
38
|
-
* - Optional LLM re-ranking
|
|
36
|
+
* - Optional LLM re-ranking (local model)
|
|
37
|
+
* - Optional MMR diversification
|
|
39
38
|
* - Recency/outcome/frequency boosts
|
|
40
39
|
*/
|
|
41
|
-
export declare const RetrieverServiceLive: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService |
|
|
40
|
+
export declare const RetrieverServiceLive: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | RerankerService>;
|
|
42
41
|
/**
|
|
43
42
|
* Auto-detecting layer that always uses Live since BM25 is always available.
|
|
44
|
-
* The Live implementation gracefully degrades
|
|
45
|
-
*
|
|
43
|
+
* The Live implementation gracefully degrades:
|
|
44
|
+
* - Vector search skips when EmbeddingService unavailable
|
|
45
|
+
* - Reranking skips when RerankerService unavailable
|
|
46
46
|
*/
|
|
47
|
-
export declare const RetrieverServiceAuto: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService |
|
|
47
|
+
export declare const RetrieverServiceAuto: Layer.Layer<RetrieverService, DatabaseError, LearningRepository | EmbeddingService | RerankerService>;
|
|
48
48
|
export {};
|
|
49
49
|
//# 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,
|
|
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"}
|