@jamesaphoenix/tx-core 0.4.2 → 0.4.3
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 +102 -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/anchor.d.ts +15 -1
- package/dist/mappers/anchor.d.ts.map +1 -1
- package/dist/mappers/anchor.js +95 -28
- package/dist/mappers/anchor.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/candidate.d.ts +3 -1
- package/dist/mappers/candidate.d.ts.map +1 -1
- package/dist/mappers/candidate.js +46 -16
- package/dist/mappers/candidate.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/edge.d.ts +10 -1
- package/dist/mappers/edge.d.ts.map +1 -1
- package/dist/mappers/edge.js +74 -12
- package/dist/mappers/edge.js.map +1 -1
- 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/anchor-repo.d.ts +2 -2
- package/dist/repo/anchor-repo.d.ts.map +1 -1
- package/dist/repo/anchor-repo.js +46 -5
- package/dist/repo/anchor-repo.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/candidate-repo.d.ts.map +1 -1
- package/dist/repo/candidate-repo.js +22 -1
- package/dist/repo/candidate-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/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/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/edge-repo.d.ts +1 -1
- package/dist/repo/edge-repo.d.ts.map +1 -1
- package/dist/repo/edge-repo.js +65 -34
- package/dist/repo/edge-repo.js.map +1 -1
- 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/anchor-service.js +1 -1
- package/dist/services/anchor-service.js.map +1 -1
- package/dist/services/anchor-verification.d.ts +8 -0
- package/dist/services/anchor-verification.d.ts.map +1 -1
- package/dist/services/anchor-verification.js +237 -37
- package/dist/services/anchor-verification.js.map +1 -1
- package/dist/services/ast-grep-service.d.ts.map +1 -1
- package/dist/services/ast-grep-service.js +93 -22
- package/dist/services/ast-grep-service.js.map +1 -1
- 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 +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/compaction-service.d.ts +105 -0
- package/dist/services/compaction-service.d.ts.map +1 -0
- package/dist/services/compaction-service.js +369 -0
- package/dist/services/compaction-service.js.map +1 -0
- 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 +542 -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/edge-service.js +2 -2
- package/dist/services/edge-service.js.map +1 -1
- 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/graph-expansion.d.ts +3 -0
- package/dist/services/graph-expansion.d.ts.map +1 -1
- package/dist/services/graph-expansion.js +28 -7
- package/dist/services/graph-expansion.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 +4 -4
- 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 +67 -29
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +1 -1
- package/dist/services/promotion-service.js +1 -1
- package/dist/services/promotion-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/swarm-verification.d.ts +2 -2
- package/dist/services/swarm-verification.d.ts.map +1 -1
- package/dist/services/swarm-verification.js +12 -6
- package/dist/services/swarm-verification.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 +378 -114
- 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 +162 -33
- 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 +159 -70
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-service.js","sourceRoot":"","sources":["../../src/services/edge-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,EAAiB,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAUhF,4DAA4D;AAC5D,MAAM,gBAAgB,GAAwB;IAC5C,aAAa;IACb,cAAc;IACd,SAAS;IACT,iBAAiB;IACjB,YAAY;IACZ,UAAU;IACV,aAAa;IACb,gBAAgB;CACjB,CAAA;AAED,4DAA4D;AAC5D,MAAM,gBAAgB,GAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAwBjF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EA2ExD;CAAG;AAEN;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAA4C,EAAE,CACxF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;YAC5C,MAAM,EAAE,sBAAsB,QAAQ,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACtF,CAAC,CAAC,CAAA;IACL,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAAE,KAAa,EAA4C,EAAE,CACvG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;YAC5C,MAAM,EAAE,WAAW,KAAK,KAAK,QAAQ,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACrF,CAAC,CAAC,CAAA;IACL,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,MAA0B,EAA0C,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,CAAA;IACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-service.js","sourceRoot":"","sources":["../../src/services/edge-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,72 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { EmbeddingUnavailableError } from "../errors.js";
|
|
3
|
+
interface LlamaEmbeddingResult {
|
|
4
|
+
readonly vector: readonly number[];
|
|
5
|
+
}
|
|
6
|
+
interface LlamaEmbeddingContext {
|
|
7
|
+
getEmbeddingFor(text: string): Promise<LlamaEmbeddingResult>;
|
|
8
|
+
}
|
|
9
|
+
interface LlamaModel {
|
|
10
|
+
createEmbeddingContext(options?: {
|
|
11
|
+
threads?: number;
|
|
12
|
+
}): Promise<LlamaEmbeddingContext>;
|
|
13
|
+
}
|
|
14
|
+
interface Llama {
|
|
15
|
+
loadModel(options: {
|
|
16
|
+
modelPath: string;
|
|
17
|
+
}): Promise<LlamaModel>;
|
|
18
|
+
}
|
|
19
|
+
interface OpenAIEmbeddingResponse {
|
|
20
|
+
data: Array<{
|
|
21
|
+
embedding: number[];
|
|
22
|
+
index: number;
|
|
23
|
+
}>;
|
|
24
|
+
usage?: {
|
|
25
|
+
prompt_tokens?: number;
|
|
26
|
+
total_tokens?: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
interface OpenAIClient {
|
|
30
|
+
embeddings: {
|
|
31
|
+
create(params: {
|
|
32
|
+
model: string;
|
|
33
|
+
input: string | string[];
|
|
34
|
+
}): Promise<OpenAIEmbeddingResponse>;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validates that an embedding vector has the expected number of dimensions.
|
|
39
|
+
* This prevents silent data corruption when switching embedding providers
|
|
40
|
+
* (e.g., 256-dim local to 1536-dim OpenAI) without re-embedding existing data.
|
|
41
|
+
*
|
|
42
|
+
* @internal Exported for testing purposes
|
|
43
|
+
*/
|
|
44
|
+
export declare const validateEmbeddingDimensions: (vector: Float32Array, expectedDimensions: number) => Effect.Effect<Float32Array, EmbeddingUnavailableError>;
|
|
45
|
+
/**
|
|
46
|
+
* Validates that an object conforms to the Llama interface we depend on.
|
|
47
|
+
* This guards against API changes in node-llama-cpp breaking at runtime.
|
|
48
|
+
* @internal Exported for testing purposes
|
|
49
|
+
*/
|
|
50
|
+
export declare function isValidLlama(obj: unknown): obj is Llama;
|
|
51
|
+
/**
|
|
52
|
+
* Validates that an object conforms to the LlamaModel interface we depend on.
|
|
53
|
+
* @internal Exported for testing purposes
|
|
54
|
+
*/
|
|
55
|
+
export declare function isValidLlamaModel(obj: unknown): obj is LlamaModel;
|
|
56
|
+
/**
|
|
57
|
+
* Validates that an object conforms to the LlamaEmbeddingContext interface we depend on.
|
|
58
|
+
* @internal Exported for testing purposes
|
|
59
|
+
*/
|
|
60
|
+
export declare function isValidLlamaEmbeddingContext(obj: unknown): obj is LlamaEmbeddingContext;
|
|
61
|
+
/**
|
|
62
|
+
* Validates that an object conforms to the OpenAIClient interface we depend on.
|
|
63
|
+
* This guards against API changes in the openai package breaking at runtime.
|
|
64
|
+
* @internal Exported for testing purposes
|
|
65
|
+
*/
|
|
66
|
+
export declare function isValidOpenAIClient(obj: unknown): obj is OpenAIClient;
|
|
3
67
|
declare const EmbeddingService_base: Context.TagClass<EmbeddingService, "EmbeddingService", {
|
|
4
|
-
/** Embed a single text string */
|
|
5
|
-
readonly embed: (text: string) => Effect.Effect<Float32Array, EmbeddingUnavailableError>;
|
|
68
|
+
/** Embed a single text string. Mode "doc" (default) for stored documents, "query" for search queries. */
|
|
69
|
+
readonly embed: (text: string, mode?: "doc" | "query") => Effect.Effect<Float32Array, EmbeddingUnavailableError>;
|
|
6
70
|
/** Embed multiple texts in batch */
|
|
7
71
|
readonly embedBatch: (texts: readonly string[]) => Effect.Effect<readonly Float32Array[], EmbeddingUnavailableError>;
|
|
8
72
|
/** Check if embedding functionality is available */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-service.d.ts","sourceRoot":"","sources":["../../src/services/embedding-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAuB,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;;
|
|
1
|
+
{"version":3,"file":"embedding-service.d.ts","sourceRoot":"","sources":["../../src/services/embedding-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAuB,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAKxD,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED,UAAU,qBAAqB;IAC7B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAC7D;AAED,UAAU,UAAU;IAClB,sBAAsB,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;CACvF;AAED,UAAU,KAAK;IACb,SAAS,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC/D;AAGD,UAAU,uBAAuB;IAC/B,IAAI,EAAE,KAAK,CAAC;QACV,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;IACF,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,UAAU,YAAY;IACpB,UAAU,EAAE;QACV,MAAM,CAAC,MAAM,EAAE;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;SACzB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;KACrC,CAAA;CACF;AAsBD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,YAAY,EACpB,oBAAoB,MAAM,KACzB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CASvD,CAAA;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,KAAK,CAOvD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAOjE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAOvF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAUrE;;IAWG,yGAAyG;oBACzF,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;IAChH,oCAAoC;yBACf,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,yBAAyB,CAAC;IACpH,oDAAoD;0BAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAClD,4DAA4D;yBACvC,MAAM;;AAhB/B;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,qBAYnC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAQhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAyHhC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,iEA4GlC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,2EAgDhC,CAAA;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAEvD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;IAEpF;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,cAAc,KAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CA0DxF,CAAA"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { Context, Effect, Layer, Ref, Config, Option } from "effect";
|
|
2
2
|
import { EmbeddingUnavailableError } from "../errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Dimensions for embeddinggemma-300M GGUF model used by EmbeddingServiceLive.
|
|
5
|
+
* @see https://huggingface.co/ggml-org/embeddinggemma-300M-GGUF
|
|
6
|
+
*/
|
|
7
|
+
const LLAMA_EMBEDDING_DIMENSIONS = 768;
|
|
3
8
|
/**
|
|
4
9
|
* Model dimensions for OpenAI text-embedding-3 models.
|
|
5
10
|
* @see https://platform.openai.com/docs/models/embeddings
|
|
@@ -9,6 +14,72 @@ const OPENAI_MODEL_DIMENSIONS = {
|
|
|
9
14
|
"text-embedding-3-large": 3072,
|
|
10
15
|
"text-embedding-ada-002": 1536 // Legacy model
|
|
11
16
|
};
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Dimension Validation
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Validates that an embedding vector has the expected number of dimensions.
|
|
22
|
+
* This prevents silent data corruption when switching embedding providers
|
|
23
|
+
* (e.g., 256-dim local to 1536-dim OpenAI) without re-embedding existing data.
|
|
24
|
+
*
|
|
25
|
+
* @internal Exported for testing purposes
|
|
26
|
+
*/
|
|
27
|
+
export const validateEmbeddingDimensions = (vector, expectedDimensions) => {
|
|
28
|
+
if (vector.length !== expectedDimensions) {
|
|
29
|
+
return Effect.fail(new EmbeddingUnavailableError({
|
|
30
|
+
reason: `Embedding dimension mismatch: expected ${expectedDimensions}, got ${vector.length}. This may indicate a provider change without re-embedding.`
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
return Effect.succeed(vector);
|
|
34
|
+
};
|
|
35
|
+
// =============================================================================
|
|
36
|
+
// Runtime Interface Validators
|
|
37
|
+
// =============================================================================
|
|
38
|
+
/**
|
|
39
|
+
* Validates that an object conforms to the Llama interface we depend on.
|
|
40
|
+
* This guards against API changes in node-llama-cpp breaking at runtime.
|
|
41
|
+
* @internal Exported for testing purposes
|
|
42
|
+
*/
|
|
43
|
+
export function isValidLlama(obj) {
|
|
44
|
+
return (obj !== null &&
|
|
45
|
+
typeof obj === "object" &&
|
|
46
|
+
"loadModel" in obj &&
|
|
47
|
+
typeof obj.loadModel === "function");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Validates that an object conforms to the LlamaModel interface we depend on.
|
|
51
|
+
* @internal Exported for testing purposes
|
|
52
|
+
*/
|
|
53
|
+
export function isValidLlamaModel(obj) {
|
|
54
|
+
return (obj !== null &&
|
|
55
|
+
typeof obj === "object" &&
|
|
56
|
+
"createEmbeddingContext" in obj &&
|
|
57
|
+
typeof obj.createEmbeddingContext === "function");
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Validates that an object conforms to the LlamaEmbeddingContext interface we depend on.
|
|
61
|
+
* @internal Exported for testing purposes
|
|
62
|
+
*/
|
|
63
|
+
export function isValidLlamaEmbeddingContext(obj) {
|
|
64
|
+
return (obj !== null &&
|
|
65
|
+
typeof obj === "object" &&
|
|
66
|
+
"getEmbeddingFor" in obj &&
|
|
67
|
+
typeof obj.getEmbeddingFor === "function");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validates that an object conforms to the OpenAIClient interface we depend on.
|
|
71
|
+
* This guards against API changes in the openai package breaking at runtime.
|
|
72
|
+
* @internal Exported for testing purposes
|
|
73
|
+
*/
|
|
74
|
+
export function isValidOpenAIClient(obj) {
|
|
75
|
+
return (obj !== null &&
|
|
76
|
+
typeof obj === "object" &&
|
|
77
|
+
"embeddings" in obj &&
|
|
78
|
+
typeof obj.embeddings === "object" &&
|
|
79
|
+
obj.embeddings !== null &&
|
|
80
|
+
"create" in obj.embeddings &&
|
|
81
|
+
typeof obj.embeddings.create === "function");
|
|
82
|
+
}
|
|
12
83
|
/**
|
|
13
84
|
* EmbeddingService provides vector embeddings for text using local models.
|
|
14
85
|
*
|
|
@@ -55,23 +126,41 @@ export const EmbeddingServiceLive = Layer.scoped(EmbeddingService, Effect.gen(fu
|
|
|
55
126
|
},
|
|
56
127
|
catch: () => new EmbeddingUnavailableError({ reason: "node-llama-cpp not installed" })
|
|
57
128
|
});
|
|
58
|
-
// Get llama instance
|
|
59
|
-
const
|
|
129
|
+
// Get llama instance with runtime validation
|
|
130
|
+
const llamaRaw = yield* Effect.tryPromise({
|
|
60
131
|
try: () => nodeLlamaCpp.getLlama(),
|
|
61
132
|
catch: (e) => new EmbeddingUnavailableError({ reason: `Failed to initialize llama: ${String(e)}` })
|
|
62
133
|
});
|
|
134
|
+
if (!isValidLlama(llamaRaw)) {
|
|
135
|
+
return yield* Effect.fail(new EmbeddingUnavailableError({
|
|
136
|
+
reason: "node-llama-cpp getLlama() returned incompatible interface - missing loadModel method"
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
const llama = llamaRaw;
|
|
63
140
|
// Load model - uses HuggingFace model spec format
|
|
64
|
-
const
|
|
141
|
+
const modelRaw = yield* Effect.tryPromise({
|
|
65
142
|
try: () => llama.loadModel({
|
|
66
143
|
modelPath: "hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf"
|
|
67
144
|
}),
|
|
68
145
|
catch: (e) => new EmbeddingUnavailableError({ reason: `Failed to load model: ${String(e)}` })
|
|
69
146
|
});
|
|
147
|
+
if (!isValidLlamaModel(modelRaw)) {
|
|
148
|
+
return yield* Effect.fail(new EmbeddingUnavailableError({
|
|
149
|
+
reason: "node-llama-cpp loadModel() returned incompatible interface - missing createEmbeddingContext method"
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
const model = modelRaw;
|
|
70
153
|
// Create embedding context
|
|
71
|
-
const
|
|
154
|
+
const contextRaw = yield* Effect.tryPromise({
|
|
72
155
|
try: () => model.createEmbeddingContext({ threads: 4 }),
|
|
73
156
|
catch: (e) => new EmbeddingUnavailableError({ reason: `Failed to create embedding context: ${String(e)}` })
|
|
74
157
|
});
|
|
158
|
+
if (!isValidLlamaEmbeddingContext(contextRaw)) {
|
|
159
|
+
return yield* Effect.fail(new EmbeddingUnavailableError({
|
|
160
|
+
reason: "node-llama-cpp createEmbeddingContext() returned incompatible interface - missing getEmbeddingFor method"
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
const context = contextRaw;
|
|
75
164
|
yield* Ref.set(stateRef, { context, lastActivity: Date.now() });
|
|
76
165
|
return context;
|
|
77
166
|
});
|
|
@@ -85,13 +174,14 @@ export const EmbeddingServiceLive = Layer.scoped(EmbeddingService, Effect.gen(fu
|
|
|
85
174
|
*/
|
|
86
175
|
const formatDoc = (text) => `text: ${text}`;
|
|
87
176
|
return {
|
|
88
|
-
embed: (text) => Effect.gen(function* () {
|
|
177
|
+
embed: (text, mode = "doc") => Effect.gen(function* () {
|
|
89
178
|
const ctx = yield* ensureContext;
|
|
179
|
+
const formatted = mode === "query" ? formatQuery(text) : formatDoc(text);
|
|
90
180
|
const result = yield* Effect.tryPromise({
|
|
91
|
-
try: () => ctx.getEmbeddingFor(
|
|
181
|
+
try: () => ctx.getEmbeddingFor(formatted),
|
|
92
182
|
catch: (e) => new EmbeddingUnavailableError({ reason: `Embedding failed: ${String(e)}` })
|
|
93
183
|
});
|
|
94
|
-
return new Float32Array(result.vector);
|
|
184
|
+
return yield* validateEmbeddingDimensions(new Float32Array(result.vector), LLAMA_EMBEDDING_DIMENSIONS);
|
|
95
185
|
}),
|
|
96
186
|
embedBatch: (texts) => Effect.gen(function* () {
|
|
97
187
|
const ctx = yield* ensureContext;
|
|
@@ -102,12 +192,13 @@ export const EmbeddingServiceLive = Layer.scoped(EmbeddingService, Effect.gen(fu
|
|
|
102
192
|
catch: (e) => new EmbeddingUnavailableError({ reason: `Batch embedding failed: ${String(e)}` })
|
|
103
193
|
});
|
|
104
194
|
yield* Ref.update(stateRef, s => ({ ...s, lastActivity: Date.now() }));
|
|
105
|
-
|
|
195
|
+
const validated = yield* validateEmbeddingDimensions(new Float32Array(result.vector), LLAMA_EMBEDDING_DIMENSIONS);
|
|
196
|
+
results.push(validated);
|
|
106
197
|
}
|
|
107
198
|
return results;
|
|
108
199
|
}),
|
|
109
200
|
isAvailable: () => Effect.succeed(true),
|
|
110
|
-
dimensions:
|
|
201
|
+
dimensions: LLAMA_EMBEDDING_DIMENSIONS
|
|
111
202
|
};
|
|
112
203
|
}));
|
|
113
204
|
/**
|
|
@@ -146,11 +237,17 @@ export const EmbeddingServiceOpenAI = Layer.effect(EmbeddingService, Effect.gen(
|
|
|
146
237
|
reason: "openai package is not installed"
|
|
147
238
|
})
|
|
148
239
|
});
|
|
149
|
-
|
|
240
|
+
const clientRaw = new OpenAI({ apiKey });
|
|
241
|
+
if (!isValidOpenAIClient(clientRaw)) {
|
|
242
|
+
return yield* Effect.fail(new EmbeddingUnavailableError({
|
|
243
|
+
reason: "OpenAI SDK returned incompatible interface - missing embeddings.create method"
|
|
244
|
+
}));
|
|
245
|
+
}
|
|
246
|
+
client = clientRaw;
|
|
150
247
|
return client;
|
|
151
248
|
});
|
|
152
249
|
return {
|
|
153
|
-
embed: (text) => Effect.gen(function* () {
|
|
250
|
+
embed: (text, _mode = "doc") => Effect.gen(function* () {
|
|
154
251
|
const openai = yield* ensureClient;
|
|
155
252
|
const response = yield* Effect.tryPromise({
|
|
156
253
|
try: () => openai.embeddings.create({
|
|
@@ -166,7 +263,7 @@ export const EmbeddingServiceOpenAI = Layer.effect(EmbeddingService, Effect.gen(
|
|
|
166
263
|
reason: "OpenAI returned empty embedding"
|
|
167
264
|
}));
|
|
168
265
|
}
|
|
169
|
-
return new Float32Array(response.data[0].embedding);
|
|
266
|
+
return yield* validateEmbeddingDimensions(new Float32Array(response.data[0].embedding), dimensions);
|
|
170
267
|
}),
|
|
171
268
|
embedBatch: (texts) => Effect.gen(function* () {
|
|
172
269
|
if (texts.length === 0) {
|
|
@@ -185,7 +282,12 @@ export const EmbeddingServiceOpenAI = Layer.effect(EmbeddingService, Effect.gen(
|
|
|
185
282
|
});
|
|
186
283
|
// Sort by index to ensure correct order
|
|
187
284
|
const sorted = [...response.data].sort((a, b) => a.index - b.index);
|
|
188
|
-
|
|
285
|
+
const results = [];
|
|
286
|
+
for (const item of sorted) {
|
|
287
|
+
const validated = yield* validateEmbeddingDimensions(new Float32Array(item.embedding), dimensions);
|
|
288
|
+
results.push(validated);
|
|
289
|
+
}
|
|
290
|
+
return results;
|
|
189
291
|
}),
|
|
190
292
|
isAvailable: () => Effect.succeed(true),
|
|
191
293
|
dimensions
|
|
@@ -280,20 +382,31 @@ export const EmbeddingServiceAuto = Layer.unwrapEffect(Effect.gen(function* () {
|
|
|
280
382
|
export const createEmbedderLayer = (config) => {
|
|
281
383
|
const embedderName = config.name ?? "custom-embedder";
|
|
282
384
|
return Layer.succeed(EmbeddingService, {
|
|
283
|
-
embed: (text) => Effect.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
385
|
+
embed: (text, _mode = "doc") => Effect.gen(function* () {
|
|
386
|
+
const vector = yield* Effect.tryPromise({
|
|
387
|
+
try: () => config.embed(text),
|
|
388
|
+
catch: (error) => new EmbeddingUnavailableError({
|
|
389
|
+
reason: `${embedderName} embed failed: ${String(error)}`
|
|
390
|
+
})
|
|
391
|
+
});
|
|
392
|
+
return yield* validateEmbeddingDimensions(vector, config.dimensions);
|
|
288
393
|
}),
|
|
289
394
|
embedBatch: (texts) => {
|
|
290
395
|
// Use custom batch implementation if provided
|
|
291
396
|
if (config.embedBatch) {
|
|
292
|
-
return Effect.
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
397
|
+
return Effect.gen(function* () {
|
|
398
|
+
const vectors = yield* Effect.tryPromise({
|
|
399
|
+
try: () => config.embedBatch(texts),
|
|
400
|
+
catch: (error) => new EmbeddingUnavailableError({
|
|
401
|
+
reason: `${embedderName} embedBatch failed: ${String(error)}`
|
|
402
|
+
})
|
|
403
|
+
});
|
|
404
|
+
const results = [];
|
|
405
|
+
for (const vector of vectors) {
|
|
406
|
+
const validated = yield* validateEmbeddingDimensions(vector, config.dimensions);
|
|
407
|
+
results.push(validated);
|
|
408
|
+
}
|
|
409
|
+
return results;
|
|
297
410
|
});
|
|
298
411
|
}
|
|
299
412
|
// Fall back to sequential embed calls
|
|
@@ -306,7 +419,8 @@ export const createEmbedderLayer = (config) => {
|
|
|
306
419
|
reason: `${embedderName} embed failed: ${String(error)}`
|
|
307
420
|
})
|
|
308
421
|
});
|
|
309
|
-
|
|
422
|
+
const validated = yield* validateEmbeddingDimensions(embedding, config.dimensions);
|
|
423
|
+
results.push(validated);
|
|
310
424
|
}
|
|
311
425
|
return results;
|
|
312
426
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-service.js","sourceRoot":"","sources":["../../src/services/embedding-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"embedding-service.js","sourceRoot":"","sources":["../../src/services/embedding-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-learning-service.d.ts","sourceRoot":"","sources":["../../src/services/file-learning-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;;
|
|
1
|
+
{"version":3,"file":"file-learning-service.d.ts","sourceRoot":"","sources":["../../src/services/file-learning-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;;qBAQ/D,CAAC,KAAK,EAAE,uBAAuB,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,GAAG,aAAa,CAAC;kBACnG,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa,CAAC;qBACnF,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,GAAG,aAAa,CAAC;qBAC9E,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;qBAC3D,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;oBACxE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;;AAR9D,qBAAa,mBAAoB,SAAQ,wBAUtC;CAAG;AAEN,eAAO,MAAM,uBAAuB,iEA+CnC,CAAA"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { FileLearningRepository } from "../repo/file-learning-repo.js";
|
|
3
3
|
import { FileLearningNotFoundError, ValidationError } from "../errors.js";
|
|
4
|
+
/** Strips null bytes (\0) which cause C API truncation, JSON issues, and terminal corruption. */
|
|
5
|
+
const stripNullBytes = (s) => s.replace(/\0/g, "");
|
|
4
6
|
export class FileLearningService extends Context.Tag("FileLearningService")() {
|
|
5
7
|
}
|
|
6
8
|
export const FileLearningServiceLive = Layer.effect(FileLearningService, Effect.gen(function* () {
|
|
7
9
|
const repo = yield* FileLearningRepository;
|
|
8
10
|
return {
|
|
9
11
|
create: (input) => Effect.gen(function* () {
|
|
10
|
-
|
|
12
|
+
const filePattern = stripNullBytes(input.filePattern).trim();
|
|
13
|
+
const note = stripNullBytes(input.note).trim();
|
|
14
|
+
if (filePattern.length === 0) {
|
|
11
15
|
return yield* Effect.fail(new ValidationError({ reason: "File pattern is required" }));
|
|
12
16
|
}
|
|
13
|
-
if (
|
|
17
|
+
if (note.length === 0) {
|
|
14
18
|
return yield* Effect.fail(new ValidationError({ reason: "Note is required" }));
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
filePattern: input.filePattern.trim(),
|
|
19
|
-
note: input.note.trim()
|
|
20
|
-
});
|
|
20
|
+
const taskId = input.taskId != null ? stripNullBytes(input.taskId).trim() || null : null;
|
|
21
|
+
return yield* repo.insert({ filePattern, note, taskId });
|
|
21
22
|
}),
|
|
22
23
|
get: (id) => Effect.gen(function* () {
|
|
23
24
|
const learning = yield* repo.findById(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-learning-service.js","sourceRoot":"","sources":["../../src/services/file-learning-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAiB,MAAM,cAAc,CAAA;AAGxF,MAAM,OAAO,mBAAoB,SAAQ,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAUxE;CAAG;AAEN,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM,CACjD,mBAAmB,EACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAA;IAE1C,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,
|
|
1
|
+
{"version":3,"file":"file-learning-service.js","sourceRoot":"","sources":["../../src/services/file-learning-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher-service.d.ts","sourceRoot":"","sources":["../../src/services/file-watcher-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,cAAc,CAAA;AAErB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;;IAmCG;;;;;;;;OAQG;oBACa,CACd,MAAM,EAAE,iBAAiB,KACtB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,0BAA0B,GAAG,gBAAgB,CAAC;IAEvE;;;;;;OAMG;mBACY,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,CAAC;IAEnF;;;;OAIG;wBACiB,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAEhD;;;;;OAKG;8BACuB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC;IAEhE;;;;;;OAMG;4BACqB,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnE;;;;OAIG;qBACc,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;;AApF3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,kBAAmB,SAAQ,uBAwDrC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,sBAAsB,+CAqBlC,CAAA;
|
|
1
|
+
{"version":3,"file":"file-watcher-service.d.ts","sourceRoot":"","sources":["../../src/services/file-watcher-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,cAAc,CAAA;AAErB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;;IAmCG;;;;;;;;OAQG;oBACa,CACd,MAAM,EAAE,iBAAiB,KACtB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,0BAA0B,GAAG,gBAAgB,CAAC;IAEvE;;;;;;OAMG;mBACY,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,CAAC;IAEnF;;;;OAIG;wBACiB,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAEhD;;;;;OAKG;8BACuB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC;IAEhE;;;;;;OAMG;4BACqB,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnE;;;;OAIG;qBACc,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;;AApF3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,kBAAmB,SAAQ,uBAwDrC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,sBAAsB,+CAqBlC,CAAA;AAwED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,0DA0RlC,CAAA"}
|
|
@@ -120,23 +120,34 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
120
120
|
});
|
|
121
121
|
// Create the event queue for delivering file events
|
|
122
122
|
const eventQueue = yield* Queue.unbounded();
|
|
123
|
-
// Mutable state
|
|
123
|
+
// Mutable state — plain object (NOT an Effect Ref) because chokidar callbacks
|
|
124
|
+
// are synchronous and cannot use Effect primitives. Access is confined to the
|
|
125
|
+
// Node.js event loop (single-threaded), so concurrent fiber access is not expected.
|
|
124
126
|
const stateRef = yield* Effect.sync(() => ({
|
|
125
127
|
current: {
|
|
126
128
|
running: false,
|
|
127
129
|
watcher: null,
|
|
128
130
|
watchedPaths: [],
|
|
129
131
|
startedAt: null,
|
|
130
|
-
eventsProcessed: 0
|
|
132
|
+
eventsProcessed: 0,
|
|
133
|
+
debounceTimers: new Map()
|
|
131
134
|
}
|
|
132
135
|
}));
|
|
133
136
|
const getState = () => stateRef.current;
|
|
134
137
|
const setState = (updater) => {
|
|
135
138
|
stateRef.current = updater(stateRef.current);
|
|
136
139
|
};
|
|
140
|
+
// Flag to prevent creating new debounce timers after stop/finalize.
|
|
141
|
+
// Prevents race condition where chokidar fires events during shutdown.
|
|
142
|
+
let stopped = false;
|
|
137
143
|
// Cleanup on scope finalization
|
|
138
144
|
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
145
|
+
stopped = true;
|
|
139
146
|
const state = getState();
|
|
147
|
+
// Clear all pending debounce timers
|
|
148
|
+
for (const timer of state.debounceTimers.values()) {
|
|
149
|
+
clearTimeout(timer);
|
|
150
|
+
}
|
|
140
151
|
if (state.watcher) {
|
|
141
152
|
yield* Effect.tryPromise({
|
|
142
153
|
try: () => state.watcher.close(),
|
|
@@ -151,6 +162,8 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
151
162
|
path: state.watchedPaths.join(", ")
|
|
152
163
|
}));
|
|
153
164
|
}
|
|
165
|
+
// Reset shutdown flag for new watcher instance
|
|
166
|
+
stopped = false;
|
|
154
167
|
// Extract base directories from glob patterns
|
|
155
168
|
const expandedPaths = config.patterns.map((p) => expandTilde(p));
|
|
156
169
|
const baseDirs = [...new Set(config.patterns.map(extractBaseDir))];
|
|
@@ -179,15 +192,15 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
179
192
|
cause: error
|
|
180
193
|
})
|
|
181
194
|
});
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
// Per-path debounce timers to coalesce rapid events for the same file.
|
|
196
|
+
// When multiple events fire for the same path within debounceMs, only
|
|
197
|
+
// the last event is emitted. This prevents duplicate processing when
|
|
198
|
+
// files are written incrementally (e.g., JSONL appends).
|
|
199
|
+
const debounceTimers = new Map();
|
|
200
|
+
const emitEvent = (type, filePath) => {
|
|
188
201
|
const event = {
|
|
189
202
|
type,
|
|
190
|
-
path,
|
|
203
|
+
path: filePath,
|
|
191
204
|
timestamp: new Date()
|
|
192
205
|
};
|
|
193
206
|
// Offer event to queue (non-blocking)
|
|
@@ -195,6 +208,32 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
195
208
|
setState((s) => ({ ...s, eventsProcessed: s.eventsProcessed + 1 }));
|
|
196
209
|
}))));
|
|
197
210
|
};
|
|
211
|
+
// Set up event handlers with per-path debouncing
|
|
212
|
+
const handleEvent = (type, filePath) => {
|
|
213
|
+
// Don't create new timers if watcher is being shut down
|
|
214
|
+
if (stopped)
|
|
215
|
+
return;
|
|
216
|
+
// Check if the path matches any of our patterns
|
|
217
|
+
const matches = originalPatterns.some((pattern) => matchesPattern(filePath, pattern));
|
|
218
|
+
if (!matches)
|
|
219
|
+
return;
|
|
220
|
+
// Clear existing debounce timer for this path
|
|
221
|
+
const existingTimer = debounceTimers.get(filePath);
|
|
222
|
+
if (existingTimer) {
|
|
223
|
+
clearTimeout(existingTimer);
|
|
224
|
+
}
|
|
225
|
+
// Set a new debounce timer — only the last event within the
|
|
226
|
+
// window will be emitted. unref() prevents the timer from
|
|
227
|
+
// keeping the Node.js event loop alive after watcher.close()
|
|
228
|
+
const timer = setTimeout(() => {
|
|
229
|
+
debounceTimers.delete(filePath);
|
|
230
|
+
emitEvent(type, filePath);
|
|
231
|
+
}, debounceMs);
|
|
232
|
+
if (typeof timer === "object" && "unref" in timer) {
|
|
233
|
+
timer.unref();
|
|
234
|
+
}
|
|
235
|
+
debounceTimers.set(filePath, timer);
|
|
236
|
+
};
|
|
198
237
|
watcher.on("add", (path) => handleEvent("add", path));
|
|
199
238
|
watcher.on("change", (path) => handleEvent("change", path));
|
|
200
239
|
watcher.on("unlink", (path) => handleEvent("delete", path));
|
|
@@ -227,7 +266,8 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
227
266
|
watcher,
|
|
228
267
|
watchedPaths: expandedPaths,
|
|
229
268
|
startedAt: new Date(),
|
|
230
|
-
eventsProcessed: 0
|
|
269
|
+
eventsProcessed: 0,
|
|
270
|
+
debounceTimers
|
|
231
271
|
}));
|
|
232
272
|
});
|
|
233
273
|
const stop = () => Effect.gen(function* () {
|
|
@@ -237,6 +277,12 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
237
277
|
path: "no active watcher"
|
|
238
278
|
}));
|
|
239
279
|
}
|
|
280
|
+
// Prevent new debounce timers from being created during shutdown
|
|
281
|
+
stopped = true;
|
|
282
|
+
// Clear all pending debounce timers to prevent events firing after stop
|
|
283
|
+
for (const timer of state.debounceTimers.values()) {
|
|
284
|
+
clearTimeout(timer);
|
|
285
|
+
}
|
|
240
286
|
// Close the watcher
|
|
241
287
|
yield* Effect.tryPromise({
|
|
242
288
|
try: () => state.watcher.close(),
|
|
@@ -251,7 +297,8 @@ export const FileWatcherServiceLive = Layer.scoped(FileWatcherService, Effect.ge
|
|
|
251
297
|
watcher: null,
|
|
252
298
|
watchedPaths: [],
|
|
253
299
|
startedAt: null,
|
|
254
|
-
eventsProcessed: 0
|
|
300
|
+
eventsProcessed: 0,
|
|
301
|
+
debounceTimers: new Map()
|
|
255
302
|
}));
|
|
256
303
|
});
|
|
257
304
|
const isRunning = () => Effect.sync(() => getState().running);
|