claude-memory-layer 1.0.30 → 1.0.32
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 +12 -5
- package/dist/cli/index.js +4 -3
- package/dist/cli/index.js.map +2 -2
- package/dist/core/index.js +3 -2
- package/dist/core/index.js.map +2 -2
- package/dist/hooks/post-tool-use.js +3 -2
- package/dist/hooks/post-tool-use.js.map +2 -2
- package/dist/hooks/semantic-daemon.js +3 -2
- package/dist/hooks/semantic-daemon.js.map +2 -2
- package/dist/hooks/session-end.js +3 -2
- package/dist/hooks/session-end.js.map +2 -2
- package/dist/hooks/session-start.js +3 -2
- package/dist/hooks/session-start.js.map +2 -2
- package/dist/hooks/stop.js +3 -2
- package/dist/hooks/stop.js.map +2 -2
- package/dist/hooks/user-prompt-submit.js +3 -2
- package/dist/hooks/user-prompt-submit.js.map +2 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +2 -2
- package/dist/mcp/index.js +3 -2
- package/dist/mcp/index.js.map +2 -2
- package/dist/server/api/index.js +3 -2
- package/dist/server/api/index.js.map +2 -2
- package/dist/server/index.js +3 -2
- package/dist/server/index.js.map +2 -2
- package/dist/services/memory-service.js +3 -2
- package/dist/services/memory-service.js.map +2 -2
- package/package.json +10 -3
- package/scripts/postinstall-embedding-backend.cjs +18 -16
- 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 -233
- 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 -175
- 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 -83
- 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,688 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Service - Main entry point for memory operations
|
|
3
|
-
* Coordinates EventStore, VectorStore, Retriever, and Graduation
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import * as os from 'os';
|
|
7
|
-
|
|
8
|
-
import type { RetrievalResult, UnifiedRetrievalResult } from '../core/retriever.js';
|
|
9
|
-
import type { PromotionResult } from '../core/shared-promoter.js';
|
|
10
|
-
import type { SharedMemoryServices } from '../extensions/shared-memory/index.js';
|
|
11
|
-
import type {
|
|
12
|
-
AppendResult,
|
|
13
|
-
MemoryEvent,
|
|
14
|
-
ToolObservationPayload,
|
|
15
|
-
MemoryMode,
|
|
16
|
-
EndlessModeConfig,
|
|
17
|
-
WorkingSet,
|
|
18
|
-
ConsolidatedMemory,
|
|
19
|
-
EndlessModeStatus,
|
|
20
|
-
ContinuityScore,
|
|
21
|
-
SharedStoreConfig,
|
|
22
|
-
Entry
|
|
23
|
-
} from '../core/types.js';
|
|
24
|
-
import type { EndlessMemoryServices } from '../extensions/endless-memory/index.js';
|
|
25
|
-
import {
|
|
26
|
-
type EmbeddingMaintenanceService,
|
|
27
|
-
type EmbeddingModelMaintenanceOptions,
|
|
28
|
-
type EmbeddingModelMaintenanceResult
|
|
29
|
-
} from '../core/engine/embedding-maintenance-service.js';
|
|
30
|
-
import type { MemoryRuntimeService } from '../core/engine/memory-runtime-service.js';
|
|
31
|
-
import type { GraduationRunResult } from '../core/graduation-worker.js';
|
|
32
|
-
import type { IngestInterceptor } from '../core/ingest-interceptor.js';
|
|
33
|
-
import type { MemoryIngestService } from '../core/engine/memory-ingest-service.js';
|
|
34
|
-
import type { MemoryQueryService } from '../core/engine/memory-query-service.js';
|
|
35
|
-
import { createMemoryServiceComposition } from '../core/engine/memory-service-composition.js';
|
|
36
|
-
import {
|
|
37
|
-
getProjectStoragePath as defaultGetProjectStoragePath,
|
|
38
|
-
hashProjectPath as defaultHashProjectPath
|
|
39
|
-
} from '../core/registry/project-path.js';
|
|
40
|
-
import { getSessionProject as defaultGetSessionProject } from '../core/registry/session-registry.js';
|
|
41
|
-
import {
|
|
42
|
-
DEFAULT_ENABLED_SHARED_STORE_CONFIG,
|
|
43
|
-
DEFAULT_SHARED_STORAGE_PATH,
|
|
44
|
-
DISABLED_SHARED_STORE_CONFIG,
|
|
45
|
-
type MemoryServiceConfig
|
|
46
|
-
} from './memory-service-config.js';
|
|
47
|
-
import { createMemoryServiceRegistry } from './memory-service-registry.js';
|
|
48
|
-
import {
|
|
49
|
-
type AccessedMemory,
|
|
50
|
-
type HelpfulMemory,
|
|
51
|
-
type HelpfulnessStats,
|
|
52
|
-
type RecordQueryTraceInput,
|
|
53
|
-
type RetrievalAnalyticsService,
|
|
54
|
-
type RetrievalDisclosureExpansion,
|
|
55
|
-
type RetrievalDisclosureExpandOptions,
|
|
56
|
-
type RetrievalDisclosureSearchOptions,
|
|
57
|
-
type RetrievalDisclosureSearchResponse,
|
|
58
|
-
type RetrievalDisclosureService,
|
|
59
|
-
type RetrievalDisclosureSource,
|
|
60
|
-
type RetrievalOrchestrator,
|
|
61
|
-
type RetrievalTrace,
|
|
62
|
-
type RetrievalTraceStats,
|
|
63
|
-
type RetrieveMemoriesOptions
|
|
64
|
-
} from '../core/engine/retrieval-services.js';
|
|
65
|
-
export { getProjectStoragePath, hashProjectPath } from '../core/registry/project-path.js';
|
|
66
|
-
export {
|
|
67
|
-
getSessionProject,
|
|
68
|
-
registerSession,
|
|
69
|
-
type SessionRegistry,
|
|
70
|
-
type SessionRegistryEntry,
|
|
71
|
-
loadSessionRegistry
|
|
72
|
-
} from '../core/registry/session-registry.js';
|
|
73
|
-
|
|
74
|
-
export {
|
|
75
|
-
DEFAULT_ENABLED_SHARED_STORE_CONFIG,
|
|
76
|
-
DEFAULT_SHARED_STORAGE_PATH,
|
|
77
|
-
DISABLED_SHARED_STORE_CONFIG,
|
|
78
|
-
type MemoryServiceConfig
|
|
79
|
-
} from './memory-service-config.js';
|
|
80
|
-
|
|
81
|
-
export class MemoryService {
|
|
82
|
-
private readonly retrievalOrchestrator: RetrievalOrchestrator;
|
|
83
|
-
private readonly retrievalDisclosureService: RetrievalDisclosureService;
|
|
84
|
-
private readonly retrievalAnalyticsService: RetrievalAnalyticsService;
|
|
85
|
-
private readonly embeddingMaintenanceService: EmbeddingMaintenanceService;
|
|
86
|
-
private readonly runtimeService: MemoryRuntimeService;
|
|
87
|
-
|
|
88
|
-
// Endless Mode components
|
|
89
|
-
private readonly endlessMemoryServices: EndlessMemoryServices;
|
|
90
|
-
|
|
91
|
-
// Shared Store components (cross-project knowledge)
|
|
92
|
-
private sharedMemoryServices!: SharedMemoryServices;
|
|
93
|
-
private projectHash: string | null = null;
|
|
94
|
-
private projectPath: string | null = null;
|
|
95
|
-
|
|
96
|
-
private readonly readOnly: boolean;
|
|
97
|
-
private readonly lightweightMode: boolean;
|
|
98
|
-
private readonly embeddingOnly: boolean;
|
|
99
|
-
private readonly ingestService: MemoryIngestService;
|
|
100
|
-
private readonly queryService: MemoryQueryService;
|
|
101
|
-
|
|
102
|
-
constructor(config: MemoryServiceConfig & { projectHash?: string; projectPath?: string; sharedStoreConfig?: SharedStoreConfig }) {
|
|
103
|
-
this.readOnly = config.readOnly ?? false;
|
|
104
|
-
this.lightweightMode = config.lightweightMode ?? false;
|
|
105
|
-
this.embeddingOnly = config.embeddingOnly ?? false;
|
|
106
|
-
|
|
107
|
-
// Store project hash for shared store operations
|
|
108
|
-
this.projectHash = config.projectHash || null;
|
|
109
|
-
this.projectPath = config.projectPath || null;
|
|
110
|
-
const sharedStoreConfig = config.sharedStoreConfig ?? DEFAULT_ENABLED_SHARED_STORE_CONFIG;
|
|
111
|
-
|
|
112
|
-
const composition = createMemoryServiceComposition({
|
|
113
|
-
config: {
|
|
114
|
-
...config,
|
|
115
|
-
storagePath: config.storagePath,
|
|
116
|
-
readOnly: this.readOnly,
|
|
117
|
-
lightweightMode: this.lightweightMode,
|
|
118
|
-
embeddingOnly: this.embeddingOnly,
|
|
119
|
-
sharedStoreConfig
|
|
120
|
-
},
|
|
121
|
-
defaultSharedStoragePath: DEFAULT_SHARED_STORAGE_PATH,
|
|
122
|
-
defaultSharedStoreConfig: DEFAULT_ENABLED_SHARED_STORE_CONFIG,
|
|
123
|
-
initialize: () => this.initialize(),
|
|
124
|
-
getProjectHash: () => this.projectHash,
|
|
125
|
-
getProjectPath: () => this.projectPath
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
this.retrievalOrchestrator = composition.retrievalOrchestrator;
|
|
129
|
-
this.retrievalDisclosureService = composition.retrievalDisclosureService;
|
|
130
|
-
this.retrievalAnalyticsService = composition.retrievalAnalyticsService;
|
|
131
|
-
this.ingestService = composition.ingestService;
|
|
132
|
-
this.queryService = composition.queryService;
|
|
133
|
-
this.endlessMemoryServices = composition.endlessMemoryServices;
|
|
134
|
-
this.sharedMemoryServices = composition.sharedMemoryServices;
|
|
135
|
-
this.runtimeService = composition.runtimeService;
|
|
136
|
-
this.embeddingMaintenanceService = composition.embeddingMaintenanceService;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Initialize all components
|
|
141
|
-
*/
|
|
142
|
-
async initialize(): Promise<void> {
|
|
143
|
-
await this.runtimeService.initialize();
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
registerIngestBefore(interceptor: IngestInterceptor): () => void {
|
|
147
|
-
return this.ingestService.registerIngestBefore(interceptor);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
registerIngestAfter(interceptor: IngestInterceptor): () => void {
|
|
151
|
-
return this.ingestService.registerIngestAfter(interceptor);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
registerIngestOnError(interceptor: IngestInterceptor): () => void {
|
|
155
|
-
return this.ingestService.registerIngestOnError(interceptor);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Start a new session
|
|
160
|
-
*/
|
|
161
|
-
async startSession(sessionId: string, projectPath?: string): Promise<void> {
|
|
162
|
-
return this.ingestService.startSession(sessionId, projectPath);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* End a session
|
|
167
|
-
*/
|
|
168
|
-
async endSession(sessionId: string, summary?: string): Promise<void> {
|
|
169
|
-
return this.ingestService.endSession(sessionId, summary);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Store a user prompt
|
|
174
|
-
*/
|
|
175
|
-
async storeUserPrompt(
|
|
176
|
-
sessionId: string,
|
|
177
|
-
content: string,
|
|
178
|
-
metadata?: Record<string, unknown>
|
|
179
|
-
): Promise<AppendResult> {
|
|
180
|
-
return this.ingestService.storeUserPrompt(sessionId, content, metadata);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Store an agent response
|
|
185
|
-
*/
|
|
186
|
-
async storeAgentResponse(
|
|
187
|
-
sessionId: string,
|
|
188
|
-
content: string,
|
|
189
|
-
metadata?: Record<string, unknown>
|
|
190
|
-
): Promise<AppendResult> {
|
|
191
|
-
return this.ingestService.storeAgentResponse(sessionId, content, metadata);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Store a session summary
|
|
196
|
-
*/
|
|
197
|
-
async storeSessionSummary(
|
|
198
|
-
sessionId: string,
|
|
199
|
-
summary: string,
|
|
200
|
-
metadata?: Record<string, unknown>
|
|
201
|
-
): Promise<AppendResult> {
|
|
202
|
-
return this.ingestService.storeSessionSummary(sessionId, summary, metadata);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Backfill session summaries for recent sessions that are missing them.
|
|
207
|
-
* Called from session-start hook to catch sessions that ended without Stop hook.
|
|
208
|
-
*/
|
|
209
|
-
async backfillMissingSummaries(currentSessionId: string, limit = 5): Promise<void> {
|
|
210
|
-
return this.ingestService.backfillMissingSummaries(currentSessionId, limit);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Generate a rule-based session summary from stored events.
|
|
215
|
-
* Called at session end (Stop hook) when no LLM-generated summary exists.
|
|
216
|
-
* Skips if a summary already exists for this session.
|
|
217
|
-
*/
|
|
218
|
-
async generateSessionSummary(sessionId: string): Promise<void> {
|
|
219
|
-
return this.ingestService.generateSessionSummary(sessionId);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Store a tool observation
|
|
224
|
-
*/
|
|
225
|
-
async storeToolObservation(
|
|
226
|
-
sessionId: string,
|
|
227
|
-
payload: ToolObservationPayload
|
|
228
|
-
): Promise<AppendResult> {
|
|
229
|
-
return this.ingestService.storeToolObservation(sessionId, payload);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Retrieve relevant memories for a query
|
|
234
|
-
*/
|
|
235
|
-
async retrieveMemories(
|
|
236
|
-
query: string,
|
|
237
|
-
options?: RetrieveMemoriesOptions
|
|
238
|
-
): Promise<UnifiedRetrievalResult> {
|
|
239
|
-
return this.retrievalOrchestrator.retrieveMemories(query, options);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Layer 1 retrieval disclosure: lightweight search envelopes for UI/API/agent use.
|
|
244
|
-
*/
|
|
245
|
-
async searchDisclosure(
|
|
246
|
-
query: string,
|
|
247
|
-
options?: RetrievalDisclosureSearchOptions
|
|
248
|
-
): Promise<RetrievalDisclosureSearchResponse> {
|
|
249
|
-
return this.retrievalDisclosureService.search(query, options);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Layer 2 retrieval disclosure: expand a search result into surrounding timeline context.
|
|
254
|
-
*/
|
|
255
|
-
async expandDisclosure(
|
|
256
|
-
resultId: string,
|
|
257
|
-
options?: RetrievalDisclosureExpandOptions
|
|
258
|
-
): Promise<RetrievalDisclosureExpansion | null> {
|
|
259
|
-
return this.retrievalDisclosureService.expand(resultId, options);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Layer 3 retrieval disclosure: resolve a search result to its raw source event.
|
|
264
|
-
*/
|
|
265
|
-
async sourceDisclosure(resultId: string): Promise<RetrievalDisclosureSource | null> {
|
|
266
|
-
return this.retrievalDisclosureService.source(resultId);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Fast keyword search using SQLite FTS5
|
|
271
|
-
* Much faster than vector search - no embedding model needed
|
|
272
|
-
*/
|
|
273
|
-
async keywordSearch(
|
|
274
|
-
query: string,
|
|
275
|
-
options?: { topK?: number; minScore?: number }
|
|
276
|
-
): Promise<Array<{event: MemoryEvent; score: number}>> {
|
|
277
|
-
return this.queryService.keywordSearch(query, options);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Rebuild FTS index (call after database upgrade)
|
|
282
|
-
*/
|
|
283
|
-
async rebuildFtsIndex(): Promise<number> {
|
|
284
|
-
return this.queryService.rebuildFtsIndex();
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Get session history
|
|
289
|
-
*/
|
|
290
|
-
async getSessionHistory(sessionId: string): Promise<MemoryEvent[]> {
|
|
291
|
-
return this.queryService.getSessionHistory(sessionId);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Get recent events
|
|
296
|
-
*/
|
|
297
|
-
async getRecentEvents(limit: number = 100): Promise<MemoryEvent[]> {
|
|
298
|
-
return this.queryService.getRecentEvents(limit);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Get memory statistics
|
|
303
|
-
*/
|
|
304
|
-
|
|
305
|
-
async getOutboxStats(): Promise<{
|
|
306
|
-
embedding: { pending: number; processing: number; failed: number; total: number };
|
|
307
|
-
vector: { pending: number; processing: number; failed: number; total: number };
|
|
308
|
-
}> {
|
|
309
|
-
return this.queryService.getOutboxStats();
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
async getRetrievalTraceStats(): Promise<RetrievalTraceStats> {
|
|
313
|
-
return this.retrievalAnalyticsService.getRetrievalTraceStats();
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
async getRecentRetrievalTraces(limit: number = 50): Promise<RetrievalTrace[]> {
|
|
317
|
-
return this.retrievalAnalyticsService.getRecentRetrievalTraces(limit);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
async getStats(): Promise<{
|
|
321
|
-
totalEvents: number;
|
|
322
|
-
vectorCount: number;
|
|
323
|
-
levelStats: Array<{ level: string; count: number }>;
|
|
324
|
-
}> {
|
|
325
|
-
return this.queryService.getStats();
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Process pending embeddings
|
|
330
|
-
*/
|
|
331
|
-
async processPendingEmbeddings(): Promise<number> {
|
|
332
|
-
return this.runtimeService.processPendingEmbeddings();
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Get events by memory level
|
|
337
|
-
*/
|
|
338
|
-
async getEventsByLevel(level: string, options?: { limit?: number; offset?: number }): Promise<MemoryEvent[]> {
|
|
339
|
-
return this.queryService.getEventsByLevel(level, options);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Get memory level for a specific event
|
|
344
|
-
*/
|
|
345
|
-
async getEventLevel(eventId: string): Promise<string | null> {
|
|
346
|
-
return this.queryService.getEventLevel(eventId);
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* Format retrieval results as context for Claude
|
|
351
|
-
*/
|
|
352
|
-
formatAsContext(result: RetrievalResult): string {
|
|
353
|
-
return this.retrievalOrchestrator.formatAsContext(result);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// ============================================================
|
|
357
|
-
// Shared Store Methods (Cross-Project Knowledge)
|
|
358
|
-
// ============================================================
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Check if shared store is enabled and initialized
|
|
362
|
-
*/
|
|
363
|
-
isSharedStoreEnabled(): boolean {
|
|
364
|
-
return this.sharedMemoryServices.isEnabled();
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* Promote an entry to shared storage
|
|
369
|
-
*/
|
|
370
|
-
async promoteToShared(entry: Entry): Promise<PromotionResult> {
|
|
371
|
-
return this.sharedMemoryServices.promoteToShared(entry, this.projectHash);
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* Get shared store statistics
|
|
376
|
-
*/
|
|
377
|
-
async getSharedStoreStats(): Promise<{
|
|
378
|
-
total: number;
|
|
379
|
-
averageConfidence: number;
|
|
380
|
-
topTopics: Array<{ topic: string; count: number }>;
|
|
381
|
-
totalUsageCount: number;
|
|
382
|
-
} | null> {
|
|
383
|
-
return this.sharedMemoryServices.getStats();
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* Search shared troubleshooting entries
|
|
388
|
-
*/
|
|
389
|
-
async searchShared(
|
|
390
|
-
query: string,
|
|
391
|
-
options?: { topK?: number; minConfidence?: number }
|
|
392
|
-
) {
|
|
393
|
-
return this.sharedMemoryServices.search(query, options);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Get project hash for this service
|
|
398
|
-
*/
|
|
399
|
-
getProjectHash(): string | null {
|
|
400
|
-
return this.projectHash;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// ============================================================
|
|
404
|
-
// Endless Mode Methods
|
|
405
|
-
// ============================================================
|
|
406
|
-
|
|
407
|
-
/**
|
|
408
|
-
* Initialize Endless Mode components
|
|
409
|
-
*/
|
|
410
|
-
async initializeEndlessMode(): Promise<void> {
|
|
411
|
-
return this.endlessMemoryServices.initializeEndlessMode();
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Get Endless Mode configuration
|
|
416
|
-
*/
|
|
417
|
-
async getEndlessConfig(): Promise<EndlessModeConfig> {
|
|
418
|
-
return this.endlessMemoryServices.getEndlessConfig();
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
/**
|
|
422
|
-
* Set Endless Mode configuration
|
|
423
|
-
*/
|
|
424
|
-
async setEndlessConfig(config: Partial<EndlessModeConfig>): Promise<void> {
|
|
425
|
-
return this.endlessMemoryServices.setEndlessConfig(config);
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
/**
|
|
429
|
-
* Set memory mode (session or endless)
|
|
430
|
-
*/
|
|
431
|
-
async setMode(mode: MemoryMode): Promise<void> {
|
|
432
|
-
return this.endlessMemoryServices.setMode(mode);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Get current memory mode
|
|
437
|
-
*/
|
|
438
|
-
getMode(): MemoryMode {
|
|
439
|
-
return this.endlessMemoryServices.getMode();
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* Check if endless mode is active
|
|
444
|
-
*/
|
|
445
|
-
isEndlessModeActive(): boolean {
|
|
446
|
-
return this.endlessMemoryServices.isEndlessModeActive();
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
* Add event to Working Set (Endless Mode)
|
|
451
|
-
*/
|
|
452
|
-
async addToWorkingSet(eventId: string, relevanceScore?: number): Promise<void> {
|
|
453
|
-
return this.endlessMemoryServices.addToWorkingSet(eventId, relevanceScore);
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Get the current Working Set
|
|
458
|
-
*/
|
|
459
|
-
async getWorkingSet(): Promise<WorkingSet | null> {
|
|
460
|
-
return this.endlessMemoryServices.getWorkingSet();
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
* Search consolidated memories
|
|
465
|
-
*/
|
|
466
|
-
async searchConsolidated(
|
|
467
|
-
query: string,
|
|
468
|
-
options?: { topK?: number }
|
|
469
|
-
): Promise<ConsolidatedMemory[]> {
|
|
470
|
-
return this.endlessMemoryServices.searchConsolidated(query, options);
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Get all consolidated memories
|
|
475
|
-
*/
|
|
476
|
-
async getConsolidatedMemories(limit?: number): Promise<ConsolidatedMemory[]> {
|
|
477
|
-
return this.endlessMemoryServices.getConsolidatedMemories(limit);
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Increment access count for memories that were used in prompts
|
|
482
|
-
*/
|
|
483
|
-
async incrementMemoryAccess(eventIds: string[]): Promise<void> {
|
|
484
|
-
return this.retrievalOrchestrator.incrementMemoryAccess(eventIds);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
/**
|
|
488
|
-
* Get most accessed memories from events
|
|
489
|
-
*/
|
|
490
|
-
async getMostAccessedMemories(limit: number = 10): Promise<AccessedMemory[]> {
|
|
491
|
-
return this.retrievalAnalyticsService.getMostAccessedMemories(limit);
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
/**
|
|
495
|
-
* Record a memory retrieval for helpfulness tracking
|
|
496
|
-
*/
|
|
497
|
-
async recordRetrieval(eventId: string, sessionId: string, score: number, query: string): Promise<void> {
|
|
498
|
-
return this.retrievalOrchestrator.recordRetrieval(eventId, sessionId, score, query);
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
/**
|
|
502
|
-
* Record a query-level retrieval trace (used by user-prompt-submit hook).
|
|
503
|
-
* Feeds the retrieval_traces table that powers dashboard stats.
|
|
504
|
-
*/
|
|
505
|
-
async recordQueryTrace(input: RecordQueryTraceInput): Promise<void> {
|
|
506
|
-
return this.retrievalOrchestrator.recordQueryTrace(input);
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
/**
|
|
510
|
-
* Evaluate helpfulness of retrievals in a session (called at session end)
|
|
511
|
-
*/
|
|
512
|
-
async evaluateSessionHelpfulness(sessionId: string): Promise<void> {
|
|
513
|
-
await this.retrievalAnalyticsService.evaluateSessionHelpfulness(sessionId);
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* Backfill helpfulness evaluation for sessions that ended without Stop hook.
|
|
518
|
-
* Call on first turn of a new session to catch missed evaluations.
|
|
519
|
-
*/
|
|
520
|
-
async evaluatePendingSessions(currentSessionId: string): Promise<void> {
|
|
521
|
-
await this.retrievalAnalyticsService.evaluatePendingSessions(currentSessionId);
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
/**
|
|
525
|
-
* Get most helpful memories ranked by helpfulness score
|
|
526
|
-
*/
|
|
527
|
-
async getHelpfulMemories(limit: number = 10): Promise<HelpfulMemory[]> {
|
|
528
|
-
return this.retrievalAnalyticsService.getHelpfulMemories(limit);
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* Get helpfulness statistics for dashboard
|
|
533
|
-
*/
|
|
534
|
-
async getHelpfulnessStats(): Promise<HelpfulnessStats> {
|
|
535
|
-
return this.retrievalAnalyticsService.getHelpfulnessStats();
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
/**
|
|
539
|
-
* Mark a consolidated memory as accessed
|
|
540
|
-
*/
|
|
541
|
-
async markMemoryAccessed(memoryId: string): Promise<void> {
|
|
542
|
-
return this.endlessMemoryServices.markMemoryAccessed(memoryId);
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* Calculate continuity score for current context
|
|
547
|
-
*/
|
|
548
|
-
async calculateContinuity(
|
|
549
|
-
content: string,
|
|
550
|
-
metadata?: { files?: string[]; entities?: string[] }
|
|
551
|
-
): Promise<ContinuityScore | null> {
|
|
552
|
-
return this.endlessMemoryServices.calculateContinuity(content, metadata);
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
* Record activity (for consolidation idle trigger)
|
|
557
|
-
*/
|
|
558
|
-
recordActivity(): void {
|
|
559
|
-
this.endlessMemoryServices.recordActivity();
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* Force a consolidation run
|
|
564
|
-
*/
|
|
565
|
-
async forceConsolidation(): Promise<number> {
|
|
566
|
-
return this.endlessMemoryServices.forceConsolidation();
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
/**
|
|
570
|
-
* Get Endless Mode status
|
|
571
|
-
*/
|
|
572
|
-
async getEndlessModeStatus(): Promise<EndlessModeStatus> {
|
|
573
|
-
return this.endlessMemoryServices.getEndlessModeStatus();
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
// ============================================================
|
|
577
|
-
// Turn Grouping Methods
|
|
578
|
-
// ============================================================
|
|
579
|
-
|
|
580
|
-
/**
|
|
581
|
-
* Get events grouped by turn for a session
|
|
582
|
-
*/
|
|
583
|
-
async getSessionTurns(sessionId: string, options?: { limit?: number; offset?: number }): Promise<Array<{
|
|
584
|
-
turnId: string;
|
|
585
|
-
events: MemoryEvent[];
|
|
586
|
-
startedAt: Date;
|
|
587
|
-
promptPreview: string;
|
|
588
|
-
eventCount: number;
|
|
589
|
-
toolCount: number;
|
|
590
|
-
hasResponse: boolean;
|
|
591
|
-
}>> {
|
|
592
|
-
return this.queryService.getSessionTurns(sessionId, options);
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/**
|
|
596
|
-
* Get all events for a specific turn
|
|
597
|
-
*/
|
|
598
|
-
async getEventsByTurn(turnId: string): Promise<MemoryEvent[]> {
|
|
599
|
-
return this.queryService.getEventsByTurn(turnId);
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
/**
|
|
603
|
-
* Count total turns for a session
|
|
604
|
-
*/
|
|
605
|
-
async countSessionTurns(sessionId: string): Promise<number> {
|
|
606
|
-
return this.queryService.countSessionTurns(sessionId);
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
/**
|
|
610
|
-
* Backfill turn_ids from metadata for events stored before the migration
|
|
611
|
-
*/
|
|
612
|
-
async backfillTurnIds(): Promise<number> {
|
|
613
|
-
return this.queryService.backfillTurnIds();
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
/**
|
|
617
|
-
* Delete all events for a session (for force reimport)
|
|
618
|
-
*/
|
|
619
|
-
async deleteSessionEvents(sessionId: string): Promise<number> {
|
|
620
|
-
return this.queryService.deleteSessionEvents(sessionId);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
/**
|
|
624
|
-
* Format Endless Mode context for Claude
|
|
625
|
-
*/
|
|
626
|
-
async formatEndlessContext(query: string): Promise<string> {
|
|
627
|
-
return this.endlessMemoryServices.formatEndlessContext(query);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
/**
|
|
631
|
-
* Force a graduation evaluation run
|
|
632
|
-
*/
|
|
633
|
-
async forceGraduation(): Promise<GraduationRunResult> {
|
|
634
|
-
return this.runtimeService.forceGraduation();
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
/**
|
|
638
|
-
* Record access to a memory event (for graduation scoring)
|
|
639
|
-
*/
|
|
640
|
-
recordMemoryAccess(eventId: string, sessionId: string, confidence: number = 1.0): void {
|
|
641
|
-
this.runtimeService.recordMemoryAccess(eventId, sessionId, confidence);
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
getEmbeddingModelName(): string {
|
|
645
|
-
return this.embeddingMaintenanceService.getEmbeddingModelName();
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
/**
|
|
649
|
-
* Ensure embedding model metadata is in sync and optionally migrate vectors.
|
|
650
|
-
* Migration strategy: clear vector index + clear embedding outbox + re-enqueue all events.
|
|
651
|
-
*/
|
|
652
|
-
async ensureEmbeddingModelForImport(
|
|
653
|
-
options?: EmbeddingModelMaintenanceOptions
|
|
654
|
-
): Promise<EmbeddingModelMaintenanceResult> {
|
|
655
|
-
return this.embeddingMaintenanceService.ensureEmbeddingModelForImport(options);
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
/**
|
|
659
|
-
* Backward-compatible alias used by some hooks
|
|
660
|
-
*/
|
|
661
|
-
async close(): Promise<void> {
|
|
662
|
-
await this.shutdown();
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
/**
|
|
666
|
-
* Shutdown service
|
|
667
|
-
*/
|
|
668
|
-
async shutdown(): Promise<void> {
|
|
669
|
-
await this.runtimeService.shutdown();
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
const defaultRegistry = createMemoryServiceRegistry<MemoryService>({
|
|
674
|
-
createService: (config) => new MemoryService(config),
|
|
675
|
-
hashProjectPath: defaultHashProjectPath,
|
|
676
|
-
getProjectStoragePath: defaultGetProjectStoragePath,
|
|
677
|
-
getSessionProject: defaultGetSessionProject,
|
|
678
|
-
homedir: os.homedir,
|
|
679
|
-
disabledSharedStoreConfig: DISABLED_SHARED_STORE_CONFIG
|
|
680
|
-
});
|
|
681
|
-
|
|
682
|
-
export const getDefaultMemoryService = defaultRegistry.getDefaultMemoryService;
|
|
683
|
-
export const getReadOnlyMemoryService = defaultRegistry.getReadOnlyMemoryService;
|
|
684
|
-
export const getMemoryServiceForProject = defaultRegistry.getMemoryServiceForProject;
|
|
685
|
-
export const getMemoryServiceForSession = defaultRegistry.getMemoryServiceForSession;
|
|
686
|
-
export const getLightweightMemoryService = defaultRegistry.getLightweightMemoryService;
|
|
687
|
-
export const getLightweightMemoryServiceForProject = defaultRegistry.getLightweightMemoryServiceForProject;
|
|
688
|
-
export const createMemoryService = defaultRegistry.createMemoryService;
|