claude-memory-layer 1.0.31 → 1.0.33
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 +9 -2
- package/dist/cli/index.js +1110 -72
- package/dist/cli/index.js.map +4 -4
- package/dist/core/index.js +414 -25
- package/dist/core/index.js.map +2 -2
- package/dist/hooks/post-tool-use.js +416 -27
- package/dist/hooks/post-tool-use.js.map +2 -2
- package/dist/hooks/semantic-daemon.js +416 -27
- package/dist/hooks/semantic-daemon.js.map +2 -2
- package/dist/hooks/session-end.js +416 -27
- package/dist/hooks/session-end.js.map +2 -2
- package/dist/hooks/session-start.js +416 -27
- package/dist/hooks/session-start.js.map +2 -2
- package/dist/hooks/stop.js +416 -27
- package/dist/hooks/stop.js.map +2 -2
- package/dist/hooks/user-prompt-submit.js +504 -34
- package/dist/hooks/user-prompt-submit.js.map +2 -2
- package/dist/index.js +416 -27
- package/dist/index.js.map +2 -2
- package/dist/mcp/index.js +407 -32
- package/dist/mcp/index.js.map +2 -2
- package/dist/server/api/index.js +850 -44
- package/dist/server/api/index.js.map +3 -3
- package/dist/server/index.js +1073 -64
- package/dist/server/index.js.map +3 -3
- package/dist/services/memory-service.js +416 -27
- package/dist/services/memory-service.js.map +2 -2
- package/dist/ui/assets/js/bootstrap.js +2 -0
- package/dist/ui/assets/js/overview.js +166 -3
- package/dist/ui/assets/js/state.js +3 -0
- package/dist/ui/index.html +20 -0
- package/dist/ui/style.css +193 -0
- package/package.json +15 -2
- package/scripts/postinstall-embedding-backend.cjs +16 -12
- package/AGENTS.md +0 -71
- package/CLAUDE.md +0 -30
- package/HANDOFF.md +0 -92
- package/Memo.txt +0 -558
- package/benchmarks/replay/anonymized-real-sessions.json +0 -48
- package/config/kpi-thresholds.json +0 -7
- package/context.md +0 -636
- package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +0 -627
- package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +0 -440
- package/docs/MCP_MEMORY_SERVICE_COMPARATIVE_REVIEW.md +0 -271
- package/docs/MEMORY_USEFULNESS_AUDIT.md +0 -371
- package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +0 -80
- package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +0 -333
- package/docs/MEMU_ADOPTION.md +0 -40
- package/docs/OPERATIONS.md +0 -18
- package/docs/PRODUCT_VALIDATION_MATRIX.md +0 -82
- package/docs/PROJECT_STRUCTURE_ANALYSIS.md +0 -421
- package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +0 -501
- package/docs/REFACTORING_PLAN_THIN_CORE.md +0 -414
- package/docs/REFERENCE_PROJECT_ANALYSES.md +0 -25
- package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +0 -452
- package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +0 -446
- package/docs/architecture/comparison-index.md +0 -47
- package/docs/reports/codex-real-data-validation-20260505T040447Z.md +0 -46
- package/plan.md +0 -1642
- package/scripts/build.ts +0 -159
- package/scripts/bump-patch-version.sh +0 -18
- package/scripts/delete-unknown-projects.js +0 -154
- package/scripts/fix-sync-gap.js +0 -32
- package/scripts/generate-session-qrels.ts +0 -126
- package/scripts/heartbeat-memory-orchestrator.sh +0 -28
- package/scripts/replay-retrieval-benchmark.ts +0 -69
- package/scripts/report-sync-gap.js +0 -26
- package/scripts/review-queue-auto-resolve.js +0 -21
- package/scripts/sync-gap-auto-heal.sh +0 -17
- package/spec.md +0 -624
- package/specs/20260207-dashboard-upgrade/context.md +0 -38
- package/specs/20260207-dashboard-upgrade/spec.md +0 -96
- package/specs/citations-system/context.md +0 -243
- package/specs/citations-system/plan.md +0 -495
- package/specs/citations-system/spec.md +0 -371
- package/specs/endless-mode/context.md +0 -305
- package/specs/endless-mode/plan.md +0 -620
- package/specs/endless-mode/spec.md +0 -455
- package/specs/entity-edge-model/context.md +0 -401
- package/specs/entity-edge-model/plan.md +0 -459
- package/specs/entity-edge-model/spec.md +0 -391
- package/specs/evidence-aligner-v2/context.md +0 -401
- package/specs/evidence-aligner-v2/plan.md +0 -303
- package/specs/evidence-aligner-v2/spec.md +0 -312
- package/specs/mcp-desktop-integration/context.md +0 -278
- package/specs/mcp-desktop-integration/plan.md +0 -550
- package/specs/mcp-desktop-integration/spec.md +0 -494
- package/specs/memory-utilization-improvements/context.md +0 -145
- package/specs/memory-utilization-improvements/plan.md +0 -361
- package/specs/memory-utilization-improvements/spec.md +0 -361
- package/specs/post-tool-use-hook/context.md +0 -319
- package/specs/post-tool-use-hook/plan.md +0 -469
- package/specs/post-tool-use-hook/spec.md +0 -364
- package/specs/private-tags/context.md +0 -288
- package/specs/private-tags/plan.md +0 -412
- package/specs/private-tags/spec.md +0 -345
- package/specs/progressive-disclosure/context.md +0 -346
- package/specs/progressive-disclosure/plan.md +0 -663
- package/specs/progressive-disclosure/spec.md +0 -415
- package/specs/selective-tool-observation/context.md +0 -100
- package/specs/selective-tool-observation/plan.md +0 -158
- package/specs/selective-tool-observation/spec.md +0 -127
- package/specs/task-entity-system/context.md +0 -297
- package/specs/task-entity-system/plan.md +0 -301
- package/specs/task-entity-system/spec.md +0 -314
- package/specs/thin-core-refactor/context.md +0 -275
- package/specs/thin-core-refactor/plan.md +0 -536
- package/specs/thin-core-refactor/spec.md +0 -465
- package/specs/vector-outbox-v2/context.md +0 -470
- package/specs/vector-outbox-v2/plan.md +0 -562
- package/specs/vector-outbox-v2/spec.md +0 -466
- package/specs/web-viewer-ui/context.md +0 -384
- package/specs/web-viewer-ui/plan.md +0 -797
- package/specs/web-viewer-ui/spec.md +0 -516
- package/src/adapters/claude/capture/index.ts +0 -3
- package/src/adapters/claude/context/index.ts +0 -3
- package/src/adapters/claude/hooks/index.ts +0 -21
- package/src/adapters/claude/hooks/post-tool-use.ts +0 -239
- package/src/adapters/claude/hooks/prompt-injection-policy.ts +0 -104
- package/src/adapters/claude/hooks/semantic-daemon-client.ts +0 -209
- package/src/adapters/claude/hooks/semantic-daemon.ts +0 -283
- package/src/adapters/claude/hooks/session-end.ts +0 -59
- package/src/adapters/claude/hooks/session-start.ts +0 -73
- package/src/adapters/claude/hooks/stop.ts +0 -128
- package/src/adapters/claude/hooks/user-prompt-submit.ts +0 -361
- package/src/adapters/claude/index.ts +0 -4
- package/src/adapters/claude/transcript/index.ts +0 -4
- package/src/adapters/claude/transcript/transcript-reader.ts +0 -57
- package/src/adapters/claude/transcript/turn-reconstructor.ts +0 -65
- package/src/apps/cli/claude-settings-hooks.ts +0 -138
- package/src/apps/cli/codex-import-runner.ts +0 -125
- package/src/apps/cli/codex-validation-output.ts +0 -95
- package/src/apps/cli/hermes-import-runner.ts +0 -130
- package/src/apps/cli/hermes-validation-output.ts +0 -91
- package/src/apps/cli/index.ts +0 -1735
- package/src/apps/cli/mcp-install.ts +0 -106
- package/src/apps/cli/retrieval-disclosure-output.ts +0 -196
- package/src/apps/dashboard/assets/js/bootstrap.js +0 -244
- package/src/apps/dashboard/assets/js/chat.js +0 -373
- package/src/apps/dashboard/assets/js/disclosure.js +0 -232
- package/src/apps/dashboard/assets/js/modals.js +0 -298
- package/src/apps/dashboard/assets/js/overview.js +0 -655
- package/src/apps/dashboard/assets/js/state.js +0 -72
- package/src/apps/dashboard/assets/js/views.js +0 -468
- package/src/apps/dashboard/index.html +0 -543
- package/src/apps/dashboard/index.ts +0 -3
- package/src/apps/dashboard/style.css +0 -1750
- package/src/apps/index.ts +0 -5
- package/src/apps/server/api/chat.ts +0 -244
- package/src/apps/server/api/citations.ts +0 -105
- package/src/apps/server/api/events.ts +0 -137
- package/src/apps/server/api/health.ts +0 -53
- package/src/apps/server/api/index.ts +0 -26
- package/src/apps/server/api/projects.ts +0 -74
- package/src/apps/server/api/search.ts +0 -184
- package/src/apps/server/api/sessions.ts +0 -115
- package/src/apps/server/api/stats.ts +0 -723
- package/src/apps/server/api/turns.ts +0 -143
- package/src/apps/server/api/utils.ts +0 -65
- package/src/apps/server/index.ts +0 -111
- package/src/cli/index.ts +0 -3
- package/src/cli/retrieval-disclosure-output.ts +0 -2
- package/src/compat/index.ts +0 -5
- package/src/core/canonical-key.ts +0 -186
- package/src/core/citation-generator.ts +0 -63
- package/src/core/consolidated-store.ts +0 -356
- package/src/core/consolidation-worker.ts +0 -493
- package/src/core/context-formatter.ts +0 -276
- package/src/core/continuity-manager.ts +0 -341
- package/src/core/db-wrapper.ts +0 -64
- package/src/core/derive/fact-deriver.ts +0 -170
- package/src/core/derive/index.ts +0 -2
- package/src/core/derive/summary-deriver.ts +0 -76
- package/src/core/edge-repo.ts +0 -333
- package/src/core/embedder.ts +0 -4
- package/src/core/engine/embedding-maintenance-service.ts +0 -187
- package/src/core/engine/endless-memory-services.ts +0 -4
- package/src/core/engine/index.ts +0 -19
- package/src/core/engine/memory-engine-services.ts +0 -170
- package/src/core/engine/memory-ingest-service.ts +0 -317
- package/src/core/engine/memory-query-service.ts +0 -173
- package/src/core/engine/memory-runtime-service.ts +0 -162
- package/src/core/engine/memory-service-composition.ts +0 -231
- package/src/core/engine/retrieval-analytics-service.ts +0 -181
- package/src/core/engine/retrieval-disclosure-service.ts +0 -420
- package/src/core/engine/retrieval-orchestrator.ts +0 -377
- package/src/core/engine/retrieval-services.ts +0 -176
- package/src/core/engine/shared-memory-services.ts +0 -4
- package/src/core/entity-repo.ts +0 -349
- package/src/core/event-store.ts +0 -779
- package/src/core/evidence-aligner.ts +0 -635
- package/src/core/external-market-context.ts +0 -582
- package/src/core/graduation-worker.ts +0 -171
- package/src/core/graduation.ts +0 -377
- package/src/core/index.ts +0 -64
- package/src/core/ingest-interceptor.ts +0 -80
- package/src/core/markdown-mirror.ts +0 -70
- package/src/core/matcher.ts +0 -208
- package/src/core/md-mirror.ts +0 -92
- package/src/core/metadata-extractor.ts +0 -203
- package/src/core/model/memory-fact.ts +0 -30
- package/src/core/model/memory-rule.ts +0 -14
- package/src/core/model/memory-summary.ts +0 -21
- package/src/core/model/raw-event.ts +0 -28
- package/src/core/model/retrieval-result.ts +0 -35
- package/src/core/mongo-sync-config.ts +0 -165
- package/src/core/mongo-sync-worker.ts +0 -381
- package/src/core/privacy/filter.ts +0 -190
- package/src/core/privacy/index.ts +0 -20
- package/src/core/privacy/tag-parser.ts +0 -145
- package/src/core/product-validation-matrix.ts +0 -314
- package/src/core/progressive-retriever.ts +0 -414
- package/src/core/registry/project-path.ts +0 -54
- package/src/core/registry/session-registry.ts +0 -69
- package/src/core/replay-evaluator.ts +0 -625
- package/src/core/retrieval-benchmark.ts +0 -117
- package/src/core/retrieval-quality.ts +0 -109
- package/src/core/retriever.ts +0 -800
- package/src/core/session-qrels.ts +0 -360
- package/src/core/shared-event-store.ts +0 -114
- package/src/core/shared-promoter.ts +0 -249
- package/src/core/shared-store.ts +0 -289
- package/src/core/shared-vector-store.ts +0 -203
- package/src/core/sqlite-event-store.ts +0 -1846
- package/src/core/sqlite-wrapper.ts +0 -116
- package/src/core/sync-worker.ts +0 -228
- package/src/core/tag-taxonomy.ts +0 -51
- package/src/core/task/blocker-resolver.ts +0 -333
- package/src/core/task/index.ts +0 -9
- package/src/core/task/task-matcher.ts +0 -240
- package/src/core/task/task-projector.ts +0 -358
- package/src/core/task/task-resolver.ts +0 -421
- package/src/core/turn-state.ts +0 -207
- package/src/core/types.ts +0 -952
- package/src/core/vector-outbox.ts +0 -299
- package/src/core/vector-store.ts +0 -231
- package/src/core/vector-worker.ts +0 -521
- package/src/core/working-set-store.ts +0 -257
- package/src/extensions/endless-memory/endless-memory-services.ts +0 -350
- package/src/extensions/endless-memory/index.ts +0 -1
- package/src/extensions/index.ts +0 -5
- package/src/extensions/mcp/handlers.ts +0 -960
- package/src/extensions/mcp/index.ts +0 -48
- package/src/extensions/mcp/tools.ts +0 -252
- package/src/extensions/shared-memory/index.ts +0 -1
- package/src/extensions/shared-memory/shared-memory-services.ts +0 -211
- package/src/extensions/vector/embedder.ts +0 -234
- package/src/extensions/vector/index.ts +0 -1
- package/src/hooks/post-tool-use.ts +0 -9
- package/src/hooks/semantic-daemon-client.ts +0 -1
- package/src/hooks/semantic-daemon.ts +0 -11
- package/src/hooks/session-end.ts +0 -9
- package/src/hooks/session-start.ts +0 -9
- package/src/hooks/stop.ts +0 -9
- package/src/hooks/user-prompt-submit.ts +0 -9
- package/src/index.ts +0 -13
- package/src/mcp/handlers.ts +0 -2
- package/src/mcp/index.ts +0 -4
- package/src/mcp/tools.ts +0 -2
- package/src/server/api/chat.ts +0 -2
- package/src/server/api/citations.ts +0 -2
- package/src/server/api/events.ts +0 -2
- package/src/server/api/health.ts +0 -2
- package/src/server/api/index.ts +0 -2
- package/src/server/api/projects.ts +0 -2
- package/src/server/api/search.ts +0 -2
- package/src/server/api/sessions.ts +0 -2
- package/src/server/api/stats.ts +0 -2
- package/src/server/api/turns.ts +0 -2
- package/src/server/api/utils.ts +0 -2
- package/src/server/index.ts +0 -2
- package/src/services/bootstrap-organizer.ts +0 -463
- package/src/services/codex-session-history-importer.ts +0 -966
- package/src/services/hermes-session-history-importer.ts +0 -733
- package/src/services/memory-service-config.ts +0 -36
- package/src/services/memory-service-registry.ts +0 -150
- package/src/services/memory-service.ts +0 -688
- package/src/services/session-history-importer.ts +0 -629
- package/tests/README.md +0 -23
- package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +0 -54
- package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +0 -98
- package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +0 -99
- package/tests/apps/app-layer-boundary.test.ts +0 -48
- package/tests/apps/claude-settings-hooks.test.ts +0 -107
- package/tests/apps/cli-disclosure-output.test.ts +0 -212
- package/tests/apps/codex-import-runner.test.ts +0 -99
- package/tests/apps/codex-validation-output.test.ts +0 -100
- package/tests/apps/hermes-import-runner.test.ts +0 -99
- package/tests/apps/mcp-install-command.test.ts +0 -59
- package/tests/apps/package-build-entrypoints.test.ts +0 -30
- package/tests/apps/postinstall-embedding-backend.test.ts +0 -185
- package/tests/apps/search-api-disclosure.test.ts +0 -162
- package/tests/apps/stats-api-lightweight.test.ts +0 -67
- package/tests/apps/ui-disclosure-output.test.ts +0 -140
- package/tests/core/bootstrap-organizer.test.ts +0 -111
- package/tests/core/canonical-key.test.ts +0 -101
- package/tests/core/codex-session-history-importer-validation.test.ts +0 -185
- package/tests/core/consolidation-worker.test.ts +0 -75
- package/tests/core/embedding-maintenance-service.test.ts +0 -282
- package/tests/core/evidence-aligner.test.ts +0 -152
- package/tests/core/external-market-context.test.ts +0 -209
- package/tests/core/fact-deriver.test.ts +0 -79
- package/tests/core/hermes-session-history-importer-validation.test.ts +0 -609
- package/tests/core/ingest-interceptor.test.ts +0 -38
- package/tests/core/markdown-mirror.test.ts +0 -85
- package/tests/core/matcher.test.ts +0 -112
- package/tests/core/md-mirror.test.ts +0 -50
- package/tests/core/memory-engine-services.test.ts +0 -240
- package/tests/core/memory-ingest-service.test.ts +0 -296
- package/tests/core/memory-query-service.test.ts +0 -129
- package/tests/core/memory-runtime-service.test.ts +0 -201
- package/tests/core/memory-service-composition.test.ts +0 -192
- package/tests/core/memory-service-config.test.ts +0 -41
- package/tests/core/memory-service-facade.test.ts +0 -30
- package/tests/core/memory-service-registry.test.ts +0 -206
- package/tests/core/product-validation-matrix.test.ts +0 -61
- package/tests/core/project-registry.test.ts +0 -78
- package/tests/core/replay-evaluator.test.ts +0 -181
- package/tests/core/retrieval-analytics-service.test.ts +0 -210
- package/tests/core/retrieval-benchmark.test.ts +0 -93
- package/tests/core/retrieval-disclosure-service.test.ts +0 -264
- package/tests/core/retrieval-orchestrator.test.ts +0 -403
- package/tests/core/retrieval-quality.test.ts +0 -31
- package/tests/core/retrieval-services.test.ts +0 -185
- package/tests/core/retriever-fallback-chain.test.ts +0 -223
- package/tests/core/retriever-strategy-scope.test.ts +0 -164
- package/tests/core/retriever.memu-adoption.test.ts +0 -122
- package/tests/core/session-history-importer-filter.test.ts +0 -78
- package/tests/core/session-qrels.test.ts +0 -250
- package/tests/core/sqlite-event-store-replication.test.ts +0 -127
- package/tests/core/summary-deriver.test.ts +0 -66
- package/tests/extensions/embedder-warning-suppression.test.ts +0 -84
- package/tests/extensions/endless-memory-extension-boundary.test.ts +0 -17
- package/tests/extensions/endless-memory-services.test.ts +0 -325
- package/tests/extensions/mcp-context-tools.test.ts +0 -905
- package/tests/extensions/mcp-extension-boundary.test.ts +0 -21
- package/tests/extensions/mcp-package-build.test.ts +0 -22
- package/tests/extensions/mcp-project-aware-tools.test.ts +0 -102
- package/tests/extensions/shared-memory-extension-boundary.test.ts +0 -24
- package/tests/extensions/shared-memory-services.test.ts +0 -309
- package/tests/extensions/vector-extension-boundary.test.ts +0 -21
- package/tsconfig.json +0 -24
- package/vitest.config.ts +0 -15
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import type { MemoryEvent } from '../types.js';
|
|
2
|
-
|
|
3
|
-
interface RankedKeywordResult {
|
|
4
|
-
event: MemoryEvent;
|
|
5
|
-
rank: number;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface MemorySessionTurn {
|
|
9
|
-
turnId: string;
|
|
10
|
-
events: MemoryEvent[];
|
|
11
|
-
startedAt: Date;
|
|
12
|
-
promptPreview: string;
|
|
13
|
-
eventCount: number;
|
|
14
|
-
toolCount: number;
|
|
15
|
-
hasResponse: boolean;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface MemoryOutboxStats {
|
|
19
|
-
embedding: { pending: number; processing: number; failed: number; total: number };
|
|
20
|
-
vector: { pending: number; processing: number; failed: number; total: number };
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface MemoryStats {
|
|
24
|
-
totalEvents: number;
|
|
25
|
-
vectorCount: number;
|
|
26
|
-
levelStats: Array<{ level: string; count: number }>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface QueryStore {
|
|
30
|
-
keywordSearch(query: string, topK: number): Promise<RankedKeywordResult[]>;
|
|
31
|
-
getSessionEvents(sessionId: string): Promise<MemoryEvent[]>;
|
|
32
|
-
getRecentEvents(limit: number): Promise<MemoryEvent[]>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface QueryMaintenanceStore extends QueryStore {
|
|
36
|
-
rebuildFtsIndex(): Promise<number>;
|
|
37
|
-
getOutboxStats(): Promise<MemoryOutboxStats>;
|
|
38
|
-
getEventsByLevel(level: string, options?: { limit?: number; offset?: number }): Promise<MemoryEvent[]>;
|
|
39
|
-
getEventLevel(eventId: string): Promise<string | null>;
|
|
40
|
-
getSessionTurns(sessionId: string, options?: { limit?: number; offset?: number }): Promise<MemorySessionTurn[]>;
|
|
41
|
-
getEventsByTurn(turnId: string): Promise<MemoryEvent[]>;
|
|
42
|
-
countSessionTurns(sessionId: string): Promise<number>;
|
|
43
|
-
backfillTurnIds(): Promise<number>;
|
|
44
|
-
deleteSessionEvents(sessionId: string): Promise<number>;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
interface MemoryQueryServiceDeps {
|
|
48
|
-
vectorStore: { count(): Promise<number> };
|
|
49
|
-
graduation: { getStats(): Promise<Array<{ level: string; count: number }>> };
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Thin-core query service for lightweight read and maintenance paths.
|
|
54
|
-
*
|
|
55
|
-
* Higher-level retrieval orchestration lives in RetrievalOrchestrator;
|
|
56
|
-
* this service keeps storage-backed read models and maintenance delegates separate.
|
|
57
|
-
*/
|
|
58
|
-
export class MemoryQueryService {
|
|
59
|
-
constructor(
|
|
60
|
-
private readonly initialize: () => Promise<void>,
|
|
61
|
-
private readonly queryStore: QueryStore,
|
|
62
|
-
private readonly deps?: MemoryQueryServiceDeps
|
|
63
|
-
) {}
|
|
64
|
-
|
|
65
|
-
async keywordSearch(
|
|
66
|
-
query: string,
|
|
67
|
-
options?: { topK?: number; minScore?: number }
|
|
68
|
-
): Promise<Array<{ event: MemoryEvent; score: number }>> {
|
|
69
|
-
await this.initialize();
|
|
70
|
-
|
|
71
|
-
const results = await this.queryStore.keywordSearch(query, options?.topK ?? 10);
|
|
72
|
-
if (results.length === 0) return [];
|
|
73
|
-
|
|
74
|
-
const maxRank = Math.min(...results.map((r) => r.rank), -0.001);
|
|
75
|
-
const minRank = Math.max(...results.map((r) => r.rank), -1000);
|
|
76
|
-
const rankRange = maxRank - minRank || 1;
|
|
77
|
-
|
|
78
|
-
return results
|
|
79
|
-
.map((r) => ({
|
|
80
|
-
event: r.event,
|
|
81
|
-
score: 1 - (r.rank - minRank) / rankRange
|
|
82
|
-
}))
|
|
83
|
-
.filter((r) => !options?.minScore || r.score >= options.minScore);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async getSessionHistory(sessionId: string): Promise<MemoryEvent[]> {
|
|
87
|
-
await this.initialize();
|
|
88
|
-
return this.queryStore.getSessionEvents(sessionId);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
async getRecentEvents(limit: number = 100): Promise<MemoryEvent[]> {
|
|
92
|
-
await this.initialize();
|
|
93
|
-
return this.queryStore.getRecentEvents(limit);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
async rebuildFtsIndex(): Promise<number> {
|
|
97
|
-
await this.initialize();
|
|
98
|
-
return this.getMaintenanceStore('rebuildFtsIndex').rebuildFtsIndex();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async getOutboxStats(): Promise<MemoryOutboxStats> {
|
|
102
|
-
await this.initialize();
|
|
103
|
-
return this.getMaintenanceStore('getOutboxStats').getOutboxStats();
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async getStats(): Promise<MemoryStats> {
|
|
107
|
-
await this.initialize();
|
|
108
|
-
|
|
109
|
-
const deps = this.getStatsDeps();
|
|
110
|
-
const recentEvents = await this.queryStore.getRecentEvents(10000);
|
|
111
|
-
const vectorCount = await deps.vectorStore.count();
|
|
112
|
-
const levelStats = await deps.graduation.getStats();
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
totalEvents: recentEvents.length,
|
|
116
|
-
vectorCount,
|
|
117
|
-
levelStats
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
async getEventsByLevel(level: string, options?: { limit?: number; offset?: number }): Promise<MemoryEvent[]> {
|
|
122
|
-
await this.initialize();
|
|
123
|
-
return this.getMaintenanceStore('getEventsByLevel').getEventsByLevel(level, options);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
async getEventLevel(eventId: string): Promise<string | null> {
|
|
127
|
-
await this.initialize();
|
|
128
|
-
return this.getMaintenanceStore('getEventLevel').getEventLevel(eventId);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async getSessionTurns(
|
|
132
|
-
sessionId: string,
|
|
133
|
-
options?: { limit?: number; offset?: number }
|
|
134
|
-
): Promise<MemorySessionTurn[]> {
|
|
135
|
-
await this.initialize();
|
|
136
|
-
return this.getMaintenanceStore('getSessionTurns').getSessionTurns(sessionId, options);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
async getEventsByTurn(turnId: string): Promise<MemoryEvent[]> {
|
|
140
|
-
await this.initialize();
|
|
141
|
-
return this.getMaintenanceStore('getEventsByTurn').getEventsByTurn(turnId);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
async countSessionTurns(sessionId: string): Promise<number> {
|
|
145
|
-
await this.initialize();
|
|
146
|
-
return this.getMaintenanceStore('countSessionTurns').countSessionTurns(sessionId);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
async backfillTurnIds(): Promise<number> {
|
|
150
|
-
await this.initialize();
|
|
151
|
-
return this.getMaintenanceStore('backfillTurnIds').backfillTurnIds();
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
async deleteSessionEvents(sessionId: string): Promise<number> {
|
|
155
|
-
await this.initialize();
|
|
156
|
-
return this.getMaintenanceStore('deleteSessionEvents').deleteSessionEvents(sessionId);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
private getMaintenanceStore(method: keyof QueryMaintenanceStore): QueryMaintenanceStore {
|
|
160
|
-
const store = this.queryStore as QueryStore & Partial<QueryMaintenanceStore>;
|
|
161
|
-
if (typeof store[method] !== 'function') {
|
|
162
|
-
throw new Error(`MemoryQueryService requires queryStore.${String(method)}() for this operation`);
|
|
163
|
-
}
|
|
164
|
-
return store as QueryMaintenanceStore;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
private getStatsDeps(): MemoryQueryServiceDeps {
|
|
168
|
-
if (!this.deps) {
|
|
169
|
-
throw new Error('MemoryQueryService requires vectorStore and graduation dependencies for getStats()');
|
|
170
|
-
}
|
|
171
|
-
return this.deps;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Runtime Service
|
|
3
|
-
* Owns MemoryService lifecycle concerns: initialization, background workers,
|
|
4
|
-
* lightweight/read-only modes, and orderly shutdown.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { EventStore } from '../event-store.js';
|
|
8
|
-
import type { Embedder } from '../embedder.js';
|
|
9
|
-
import type { GraduationPipeline } from '../graduation.js';
|
|
10
|
-
import {
|
|
11
|
-
createGraduationWorker as defaultCreateGraduationWorker,
|
|
12
|
-
type GraduationRunResult,
|
|
13
|
-
type GraduationWorker
|
|
14
|
-
} from '../graduation-worker.js';
|
|
15
|
-
import type { Retriever } from '../retriever.js';
|
|
16
|
-
import type { VectorStore } from '../vector-store.js';
|
|
17
|
-
import {
|
|
18
|
-
createVectorWorker as defaultCreateVectorWorker,
|
|
19
|
-
type VectorWorker
|
|
20
|
-
} from '../vector-worker.js';
|
|
21
|
-
|
|
22
|
-
export interface RuntimeSQLiteStore {
|
|
23
|
-
initialize(): Promise<void>;
|
|
24
|
-
close(): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface RuntimeEndlessMemoryServices {
|
|
28
|
-
initializeFromSavedMode(): Promise<void>;
|
|
29
|
-
shutdown(): void;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface RuntimeSharedMemoryServices {
|
|
33
|
-
initialize(): Promise<void>;
|
|
34
|
-
close(): Promise<void>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface MemoryRuntimeServicesFactories {
|
|
38
|
-
createVectorWorker?: typeof defaultCreateVectorWorker;
|
|
39
|
-
createGraduationWorker?: typeof defaultCreateGraduationWorker;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface MemoryRuntimeServicesDeps {
|
|
43
|
-
sqliteStore: RuntimeSQLiteStore;
|
|
44
|
-
eventStore: EventStore;
|
|
45
|
-
vectorStore: VectorStore;
|
|
46
|
-
embedder: Embedder;
|
|
47
|
-
retriever: Retriever;
|
|
48
|
-
graduation: GraduationPipeline;
|
|
49
|
-
endlessMemoryServices: RuntimeEndlessMemoryServices;
|
|
50
|
-
sharedMemoryServices: RuntimeSharedMemoryServices;
|
|
51
|
-
readOnly: boolean;
|
|
52
|
-
lightweightMode: boolean;
|
|
53
|
-
embeddingOnly: boolean;
|
|
54
|
-
factories?: MemoryRuntimeServicesFactories;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export interface MemoryRuntimeService {
|
|
58
|
-
initialize(): Promise<void>;
|
|
59
|
-
shutdown(): Promise<void>;
|
|
60
|
-
processPendingEmbeddings(): Promise<number>;
|
|
61
|
-
forceGraduation(): Promise<GraduationRunResult>;
|
|
62
|
-
recordMemoryAccess(eventId: string, sessionId: string, confidence?: number): void;
|
|
63
|
-
getVectorWorker(): VectorWorker | null;
|
|
64
|
-
isInitialized(): boolean;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function createEmptyGraduationResult(): GraduationRunResult {
|
|
68
|
-
return { evaluated: 0, graduated: 0, byLevel: {} };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export function createMemoryRuntimeService(deps: MemoryRuntimeServicesDeps): MemoryRuntimeService {
|
|
72
|
-
const createVectorWorker = deps.factories?.createVectorWorker ?? defaultCreateVectorWorker;
|
|
73
|
-
const createGraduationWorker = deps.factories?.createGraduationWorker ?? defaultCreateGraduationWorker;
|
|
74
|
-
|
|
75
|
-
let initialized = false;
|
|
76
|
-
let vectorWorker: VectorWorker | null = null;
|
|
77
|
-
let graduationWorker: GraduationWorker | null = null;
|
|
78
|
-
|
|
79
|
-
return {
|
|
80
|
-
async initialize(): Promise<void> {
|
|
81
|
-
if (initialized) return;
|
|
82
|
-
|
|
83
|
-
// Initialize PRIMARY store: SQLite (always)
|
|
84
|
-
await deps.sqliteStore.initialize();
|
|
85
|
-
|
|
86
|
-
// Lightweight mode: only SQLite, no embedder/vector/workers.
|
|
87
|
-
// Used for hooks that just need to store data quickly.
|
|
88
|
-
if (deps.lightweightMode) {
|
|
89
|
-
initialized = true;
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
await deps.vectorStore.initialize();
|
|
94
|
-
await deps.embedder.initialize();
|
|
95
|
-
|
|
96
|
-
// Skip write-related workers in read-only mode.
|
|
97
|
-
if (!deps.readOnly) {
|
|
98
|
-
vectorWorker = createVectorWorker(
|
|
99
|
-
deps.eventStore,
|
|
100
|
-
deps.vectorStore,
|
|
101
|
-
deps.embedder
|
|
102
|
-
);
|
|
103
|
-
vectorWorker.start();
|
|
104
|
-
|
|
105
|
-
if (!deps.embeddingOnly) {
|
|
106
|
-
deps.retriever.setGraduationPipeline(deps.graduation);
|
|
107
|
-
graduationWorker = createGraduationWorker(
|
|
108
|
-
deps.eventStore,
|
|
109
|
-
deps.graduation
|
|
110
|
-
);
|
|
111
|
-
graduationWorker.start();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
await deps.endlessMemoryServices.initializeFromSavedMode();
|
|
115
|
-
await deps.sharedMemoryServices.initialize();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
initialized = true;
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
async shutdown(): Promise<void> {
|
|
122
|
-
if (graduationWorker) {
|
|
123
|
-
graduationWorker.stop();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
deps.endlessMemoryServices.shutdown();
|
|
127
|
-
|
|
128
|
-
if (vectorWorker) {
|
|
129
|
-
vectorWorker.stop();
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
await deps.sharedMemoryServices.close();
|
|
133
|
-
await deps.sqliteStore.close();
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
async processPendingEmbeddings(): Promise<number> {
|
|
137
|
-
if (vectorWorker) {
|
|
138
|
-
return vectorWorker.processAll();
|
|
139
|
-
}
|
|
140
|
-
return 0;
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
async forceGraduation(): Promise<GraduationRunResult> {
|
|
144
|
-
if (!graduationWorker) {
|
|
145
|
-
return createEmptyGraduationResult();
|
|
146
|
-
}
|
|
147
|
-
return graduationWorker.forceRun();
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
recordMemoryAccess(eventId: string, sessionId: string, confidence: number = 1.0): void {
|
|
151
|
-
deps.graduation.recordAccess(eventId, sessionId, confidence);
|
|
152
|
-
},
|
|
153
|
-
|
|
154
|
-
getVectorWorker(): VectorWorker | null {
|
|
155
|
-
return vectorWorker;
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
isInitialized(): boolean {
|
|
159
|
-
return initialized;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
}
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Service Composition
|
|
3
|
-
*
|
|
4
|
-
* Owns constructor-time service graph wiring for MemoryService so the public
|
|
5
|
-
* facade can stay focused on state assignment and method delegation.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import * as os from 'os';
|
|
9
|
-
import * as path from 'path';
|
|
10
|
-
|
|
11
|
-
import type { EventStore } from '../event-store.js';
|
|
12
|
-
import type { Embedder } from '../embedder.js';
|
|
13
|
-
import type { GraduationPipeline } from '../graduation.js';
|
|
14
|
-
import { createToolObservationEmbedding as defaultCreateToolObservationEmbedding } from '../metadata-extractor.js';
|
|
15
|
-
import type { Retriever } from '../retriever.js';
|
|
16
|
-
import type { SQLiteEventStore } from '../sqlite-event-store.js';
|
|
17
|
-
import type { ToolObservationPayload, SharedStoreConfig } from '../types.js';
|
|
18
|
-
import type { VectorStore } from '../vector-store.js';
|
|
19
|
-
import {
|
|
20
|
-
createEmbeddingMaintenanceService as defaultCreateEmbeddingMaintenanceService,
|
|
21
|
-
type EmbeddingMaintenanceService,
|
|
22
|
-
type EmbeddingMaintenanceServiceOptions
|
|
23
|
-
} from './embedding-maintenance-service.js';
|
|
24
|
-
import {
|
|
25
|
-
createEndlessMemoryServices as defaultCreateEndlessMemoryServices,
|
|
26
|
-
type EndlessMemoryServices,
|
|
27
|
-
type EndlessMemoryServicesOptions
|
|
28
|
-
} from './endless-memory-services.js';
|
|
29
|
-
import {
|
|
30
|
-
createMemoryEngineServices as defaultCreateMemoryEngineServices,
|
|
31
|
-
type MemoryEngineServices,
|
|
32
|
-
type MemoryEngineServicesOptions
|
|
33
|
-
} from './memory-engine-services.js';
|
|
34
|
-
import {
|
|
35
|
-
createMemoryRuntimeService as defaultCreateMemoryRuntimeService,
|
|
36
|
-
type MemoryRuntimeService,
|
|
37
|
-
type MemoryRuntimeServicesDeps
|
|
38
|
-
} from './memory-runtime-service.js';
|
|
39
|
-
import type {
|
|
40
|
-
MemoryIngestService
|
|
41
|
-
} from './memory-ingest-service.js';
|
|
42
|
-
import type {
|
|
43
|
-
MemoryQueryService
|
|
44
|
-
} from './memory-query-service.js';
|
|
45
|
-
import {
|
|
46
|
-
createSharedMemoryServices as defaultCreateSharedMemoryServices,
|
|
47
|
-
type SharedMemoryServices,
|
|
48
|
-
type SharedMemoryServicesOptions
|
|
49
|
-
} from './shared-memory-services.js';
|
|
50
|
-
import type {
|
|
51
|
-
RetrievalAnalyticsService,
|
|
52
|
-
RetrievalDisclosureService,
|
|
53
|
-
RetrievalOrchestrator
|
|
54
|
-
} from './retrieval-services.js';
|
|
55
|
-
|
|
56
|
-
export interface MemoryServiceCompositionConfig {
|
|
57
|
-
storagePath: string;
|
|
58
|
-
embeddingModel?: string;
|
|
59
|
-
readOnly?: boolean;
|
|
60
|
-
lightweightMode?: boolean;
|
|
61
|
-
embeddingOnly?: boolean;
|
|
62
|
-
projectHash?: string;
|
|
63
|
-
projectPath?: string;
|
|
64
|
-
sharedStoreConfig?: SharedStoreConfig;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export interface MemoryServiceCompositionFactories {
|
|
68
|
-
expandPath?: (targetPath: string) => string;
|
|
69
|
-
createToolObservationEmbedding?: (
|
|
70
|
-
toolName: string,
|
|
71
|
-
metadata: Record<string, unknown>,
|
|
72
|
-
success: boolean
|
|
73
|
-
) => string;
|
|
74
|
-
createMemoryEngineServices?: (options: MemoryEngineServicesOptions) => MemoryEngineServices;
|
|
75
|
-
createEndlessMemoryServices?: (options: EndlessMemoryServicesOptions) => EndlessMemoryServices;
|
|
76
|
-
createSharedMemoryServices?: (options: SharedMemoryServicesOptions) => SharedMemoryServices;
|
|
77
|
-
createMemoryRuntimeService?: (deps: MemoryRuntimeServicesDeps) => MemoryRuntimeService;
|
|
78
|
-
createEmbeddingMaintenanceService?: (
|
|
79
|
-
options: EmbeddingMaintenanceServiceOptions
|
|
80
|
-
) => EmbeddingMaintenanceService;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface MemoryServiceCompositionOptions {
|
|
84
|
-
config: MemoryServiceCompositionConfig;
|
|
85
|
-
defaultSharedStoragePath: string;
|
|
86
|
-
defaultSharedStoreConfig?: SharedStoreConfig;
|
|
87
|
-
initialize: () => Promise<void>;
|
|
88
|
-
getProjectHash: () => string | null;
|
|
89
|
-
getProjectPath?: () => string | null;
|
|
90
|
-
factories?: MemoryServiceCompositionFactories;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export interface MemoryServiceComposition {
|
|
94
|
-
storagePath: string;
|
|
95
|
-
readOnly: boolean;
|
|
96
|
-
lightweightMode: boolean;
|
|
97
|
-
embeddingOnly: boolean;
|
|
98
|
-
sqliteStore: SQLiteEventStore;
|
|
99
|
-
vectorStore: VectorStore;
|
|
100
|
-
embedder: Embedder;
|
|
101
|
-
retriever: Retriever;
|
|
102
|
-
retrievalOrchestrator: RetrievalOrchestrator;
|
|
103
|
-
retrievalDisclosureService: RetrievalDisclosureService;
|
|
104
|
-
retrievalAnalyticsService: RetrievalAnalyticsService;
|
|
105
|
-
embeddingMaintenanceService: EmbeddingMaintenanceService;
|
|
106
|
-
runtimeService: MemoryRuntimeService;
|
|
107
|
-
graduation: GraduationPipeline;
|
|
108
|
-
endlessMemoryServices: EndlessMemoryServices;
|
|
109
|
-
sharedMemoryServices: SharedMemoryServices;
|
|
110
|
-
ingestService: MemoryIngestService;
|
|
111
|
-
queryService: MemoryQueryService;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export function createMemoryServiceComposition(
|
|
115
|
-
options: MemoryServiceCompositionOptions
|
|
116
|
-
): MemoryServiceComposition {
|
|
117
|
-
const factories = options.factories ?? {};
|
|
118
|
-
const expandPath = factories.expandPath ?? defaultExpandPath;
|
|
119
|
-
const createToolEmbedding = factories.createToolObservationEmbedding ?? defaultCreateToolObservationEmbedding;
|
|
120
|
-
|
|
121
|
-
const storagePath = expandPath(options.config.storagePath);
|
|
122
|
-
const projectPathForMirror = options.getProjectPath?.() ?? options.config.projectPath ?? process.cwd();
|
|
123
|
-
const readOnly = options.config.readOnly ?? false;
|
|
124
|
-
const lightweightMode = options.config.lightweightMode ?? false;
|
|
125
|
-
const embeddingOnly = options.config.embeddingOnly ?? false;
|
|
126
|
-
const sharedStoreConfig = options.config.sharedStoreConfig ?? options.defaultSharedStoreConfig ?? {
|
|
127
|
-
enabled: true,
|
|
128
|
-
autoPromote: true,
|
|
129
|
-
searchShared: true,
|
|
130
|
-
minConfidenceForPromotion: 0.8,
|
|
131
|
-
sharedStoragePath: options.defaultSharedStoragePath
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
let sharedMemoryServices: SharedMemoryServices | null = null;
|
|
135
|
-
|
|
136
|
-
const engineServices = (factories.createMemoryEngineServices ?? defaultCreateMemoryEngineServices)({
|
|
137
|
-
storagePath,
|
|
138
|
-
readOnly,
|
|
139
|
-
embeddingModel: options.config.embeddingModel,
|
|
140
|
-
cwd: projectPathForMirror,
|
|
141
|
-
initialize: options.initialize,
|
|
142
|
-
getProjectHash: options.getProjectHash,
|
|
143
|
-
getProjectPath: options.getProjectPath,
|
|
144
|
-
hasSharedStore: () => sharedMemoryServices?.isEnabled() ?? false,
|
|
145
|
-
sharedStore: {
|
|
146
|
-
get: (entryId: string) => sharedMemoryServices?.getEntryForDisclosure(entryId) ?? Promise.resolve(null)
|
|
147
|
-
},
|
|
148
|
-
createToolObservationEmbedding: (payload: ToolObservationPayload) => createToolEmbedding(
|
|
149
|
-
payload.toolName,
|
|
150
|
-
payload.metadata || {},
|
|
151
|
-
payload.success
|
|
152
|
-
)
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
const endlessMemoryServices = (factories.createEndlessMemoryServices ?? defaultCreateEndlessMemoryServices)({
|
|
156
|
-
eventStore: engineServices.sqliteStore as unknown as EventStore,
|
|
157
|
-
configStore: engineServices.sqliteStore,
|
|
158
|
-
initialize: options.initialize
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
sharedMemoryServices = (factories.createSharedMemoryServices ?? defaultCreateSharedMemoryServices)({
|
|
162
|
-
config: sharedStoreConfig,
|
|
163
|
-
defaultSharedStoragePath: options.defaultSharedStoragePath,
|
|
164
|
-
readOnly,
|
|
165
|
-
expandPath,
|
|
166
|
-
embedder: engineServices.embedder,
|
|
167
|
-
retriever: engineServices.retriever
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
const runtimeService = (factories.createMemoryRuntimeService ?? defaultCreateMemoryRuntimeService)({
|
|
171
|
-
sqliteStore: engineServices.sqliteStore,
|
|
172
|
-
eventStore: engineServices.sqliteStore as unknown as EventStore,
|
|
173
|
-
vectorStore: engineServices.vectorStore,
|
|
174
|
-
embedder: engineServices.embedder,
|
|
175
|
-
retriever: engineServices.retriever,
|
|
176
|
-
graduation: engineServices.graduation,
|
|
177
|
-
endlessMemoryServices,
|
|
178
|
-
sharedMemoryServices,
|
|
179
|
-
readOnly,
|
|
180
|
-
lightweightMode,
|
|
181
|
-
embeddingOnly
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
const embeddingMaintenanceService = (
|
|
185
|
-
factories.createEmbeddingMaintenanceService ?? defaultCreateEmbeddingMaintenanceService
|
|
186
|
-
)({
|
|
187
|
-
storagePath,
|
|
188
|
-
initialize: options.initialize,
|
|
189
|
-
getEmbeddingModelName: () => engineServices.embedder.getModelName(),
|
|
190
|
-
vectorStore: engineServices.vectorStore,
|
|
191
|
-
eventStore: {
|
|
192
|
-
clearEmbeddingOutbox: () => engineServices.sqliteStore.clearEmbeddingOutbox(),
|
|
193
|
-
getEventsPage: async (limit, offset) => {
|
|
194
|
-
const events = await engineServices.sqliteStore.getEventsPage(limit, offset);
|
|
195
|
-
return events.map((event) => ({ id: event.id, content: event.content }));
|
|
196
|
-
},
|
|
197
|
-
enqueueForEmbedding: async (eventId, content) => {
|
|
198
|
-
await engineServices.sqliteStore.enqueueForEmbedding(eventId, content);
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
getVectorWorker: () => runtimeService.getVectorWorker()
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
return {
|
|
205
|
-
storagePath,
|
|
206
|
-
readOnly,
|
|
207
|
-
lightweightMode,
|
|
208
|
-
embeddingOnly,
|
|
209
|
-
sqliteStore: engineServices.sqliteStore,
|
|
210
|
-
vectorStore: engineServices.vectorStore,
|
|
211
|
-
embedder: engineServices.embedder,
|
|
212
|
-
retriever: engineServices.retriever,
|
|
213
|
-
retrievalOrchestrator: engineServices.retrievalOrchestrator,
|
|
214
|
-
retrievalDisclosureService: engineServices.retrievalDisclosureService,
|
|
215
|
-
retrievalAnalyticsService: engineServices.retrievalAnalyticsService,
|
|
216
|
-
embeddingMaintenanceService,
|
|
217
|
-
runtimeService,
|
|
218
|
-
graduation: engineServices.graduation,
|
|
219
|
-
endlessMemoryServices,
|
|
220
|
-
sharedMemoryServices,
|
|
221
|
-
ingestService: engineServices.ingestService,
|
|
222
|
-
queryService: engineServices.queryService
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
function defaultExpandPath(targetPath: string): string {
|
|
227
|
-
if (targetPath.startsWith('~')) {
|
|
228
|
-
return path.join(os.homedir(), targetPath.slice(1));
|
|
229
|
-
}
|
|
230
|
-
return targetPath;
|
|
231
|
-
}
|