squish-memory 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/squish-mcp.mjs +40 -42
- package/core/scheduler/cron-scheduler.ts +10 -1
- package/core/worker.ts +10 -1
- package/package.json +119 -119
- package/packages/mcp/src/index.ts +99 -36
- package/dist/config.d.ts +0 -106
- package/dist/config.js +0 -194
- package/dist/core/adapters/config/claude-code.d.ts +0 -45
- package/dist/core/adapters/config/claude-code.js +0 -113
- package/dist/core/adapters/config/cursor.d.ts +0 -26
- package/dist/core/adapters/config/cursor.js +0 -74
- package/dist/core/adapters/config/opencode.d.ts +0 -23
- package/dist/core/adapters/config/opencode.js +0 -73
- package/dist/core/adapters/config/windsurf.d.ts +0 -26
- package/dist/core/adapters/config/windsurf.js +0 -74
- package/dist/core/adapters/index.d.ts +0 -45
- package/dist/core/adapters/index.js +0 -84
- package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
- package/dist/core/adapters/scripts/install-adapter.js +0 -149
- package/dist/core/adapters/timeline.d.ts +0 -23
- package/dist/core/adapters/timeline.js +0 -88
- package/dist/core/adapters/types.d.ts +0 -137
- package/dist/core/adapters/types.js +0 -50
- package/dist/core/agent-preferences.d.ts +0 -16
- package/dist/core/agent-preferences.js +0 -124
- package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
- package/dist/core/algorithms/analytics/token-estimator.js +0 -154
- package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
- package/dist/core/algorithms/detection/hash-filters.js +0 -190
- package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
- package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
- package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
- package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
- package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
- package/dist/core/algorithms/handlers/approve-merge.js +0 -179
- package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
- package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
- package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
- package/dist/core/algorithms/handlers/get-stats.js +0 -88
- package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
- package/dist/core/algorithms/handlers/list-proposals.js +0 -83
- package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
- package/dist/core/algorithms/handlers/preview-merge.js +0 -93
- package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
- package/dist/core/algorithms/handlers/reject-merge.js +0 -69
- package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
- package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
- package/dist/core/algorithms/index.d.ts +0 -21
- package/dist/core/algorithms/index.js +0 -26
- package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
- package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
- package/dist/core/algorithms/safety/safety-checks.d.ts +0 -18
- package/dist/core/algorithms/safety/safety-checks.js +0 -179
- package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
- package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
- package/dist/core/algorithms/types.d.ts +0 -125
- package/dist/core/algorithms/types.js +0 -5
- package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
- package/dist/core/algorithms/utils/response-builder.js +0 -37
- package/dist/core/associations.d.ts +0 -33
- package/dist/core/associations.js +0 -284
- package/dist/core/autosave.d.ts +0 -19
- package/dist/core/autosave.js +0 -16
- package/dist/core/beliefs/decay.d.ts +0 -27
- package/dist/core/beliefs/decay.js +0 -217
- package/dist/core/beliefs/extractor.d.ts +0 -9
- package/dist/core/beliefs/extractor.js +0 -113
- package/dist/core/beliefs/store.d.ts +0 -46
- package/dist/core/beliefs/store.js +0 -466
- package/dist/core/beliefs/types.d.ts +0 -28
- package/dist/core/beliefs/types.js +0 -2
- package/dist/core/commands/mcp-server.d.ts +0 -2
- package/dist/core/commands/mcp-server.js +0 -6
- package/dist/core/commands/remember.d.ts +0 -24
- package/dist/core/commands/remember.js +0 -144
- package/dist/core/compression.d.ts +0 -45
- package/dist/core/compression.js +0 -160
- package/dist/core/consolidation.d.ts +0 -37
- package/dist/core/consolidation.js +0 -248
- package/dist/core/context/agent-context.d.ts +0 -106
- package/dist/core/context/agent-context.js +0 -274
- package/dist/core/context/context-paging.d.ts +0 -80
- package/dist/core/context/context-paging.js +0 -328
- package/dist/core/context/context-window.d.ts +0 -40
- package/dist/core/context/context-window.js +0 -177
- package/dist/core/context/context.d.ts +0 -7
- package/dist/core/context/context.js +0 -22
- package/dist/core/embeddings/embeddings.d.ts +0 -29
- package/dist/core/embeddings/embeddings.js +0 -546
- package/dist/core/embeddings/google-multimodal.d.ts +0 -14
- package/dist/core/embeddings/google-multimodal.js +0 -146
- package/dist/core/embeddings/local-embeddings.d.ts +0 -11
- package/dist/core/embeddings/local-embeddings.js +0 -11
- package/dist/core/embeddings/qmd-client.d.ts +0 -136
- package/dist/core/embeddings/qmd-client.js +0 -403
- package/dist/core/embeddings/transformers-local.d.ts +0 -64
- package/dist/core/embeddings/transformers-local.js +0 -213
- package/dist/core/embeddings.d.ts +0 -2
- package/dist/core/embeddings.js +0 -3
- package/dist/core/error-handling.d.ts +0 -63
- package/dist/core/error-handling.js +0 -173
- package/dist/core/graph/entity-deduplicator.d.ts +0 -24
- package/dist/core/graph/entity-deduplicator.js +0 -183
- package/dist/core/graph/graph-builder.d.ts +0 -46
- package/dist/core/graph/graph-builder.js +0 -174
- package/dist/core/graph/graph-traversal.d.ts +0 -80
- package/dist/core/graph/graph-traversal.js +0 -315
- package/dist/core/graph/index.d.ts +0 -19
- package/dist/core/graph/index.js +0 -13
- package/dist/core/graph/llm-entity-extractor.d.ts +0 -49
- package/dist/core/graph/llm-entity-extractor.js +0 -313
- package/dist/core/graph/multi-hop-retrieval.d.ts +0 -48
- package/dist/core/graph/multi-hop-retrieval.js +0 -215
- package/dist/core/graph/relationship-extractor.d.ts +0 -48
- package/dist/core/graph/relationship-extractor.js +0 -351
- package/dist/core/hooks/agent-hooks.d.ts +0 -83
- package/dist/core/hooks/agent-hooks.js +0 -521
- package/dist/core/hooks/auto-tagger.d.ts +0 -19
- package/dist/core/hooks/auto-tagger.js +0 -155
- package/dist/core/hooks/capture-filter.d.ts +0 -41
- package/dist/core/hooks/capture-filter.js +0 -128
- package/dist/core/hot-cache.d.ts +0 -86
- package/dist/core/hot-cache.js +0 -285
- package/dist/core/index.d.ts +0 -10
- package/dist/core/index.js +0 -11
- package/dist/core/ingestion/agent-memory.d.ts +0 -22
- package/dist/core/ingestion/agent-memory.js +0 -109
- package/dist/core/ingestion/core-memory.d.ts +0 -78
- package/dist/core/ingestion/core-memory.js +0 -226
- package/dist/core/ingestion/learnings.d.ts +0 -57
- package/dist/core/ingestion/learnings.js +0 -205
- package/dist/core/ingestion/signal-engine.d.ts +0 -41
- package/dist/core/ingestion/signal-engine.js +0 -201
- package/dist/core/integrations/obsidian-vault.d.ts +0 -31
- package/dist/core/integrations/obsidian-vault.js +0 -156
- package/dist/core/layers/generator.d.ts +0 -25
- package/dist/core/layers/generator.js +0 -76
- package/dist/core/lib/db-client.d.ts +0 -114
- package/dist/core/lib/db-client.js +0 -130
- package/dist/core/lib/parse-embedding.d.ts +0 -9
- package/dist/core/lib/parse-embedding.js +0 -58
- package/dist/core/lib/schemas.d.ts +0 -132
- package/dist/core/lib/schemas.js +0 -87
- package/dist/core/lib/types.d.ts +0 -45
- package/dist/core/lib/types.js +0 -6
- package/dist/core/lib/utils.d.ts +0 -18
- package/dist/core/lib/utils.js +0 -145
- package/dist/core/lib/validation.d.ts +0 -38
- package/dist/core/lib/validation.js +0 -151
- package/dist/core/lifecycle.d.ts +0 -25
- package/dist/core/lifecycle.js +0 -292
- package/dist/core/logger.d.ts +0 -17
- package/dist/core/logger.js +0 -46
- package/dist/core/mcp/client.d.ts +0 -17
- package/dist/core/mcp/client.js +0 -101
- package/dist/core/mcp/index.d.ts +0 -6
- package/dist/core/mcp/index.js +0 -6
- package/dist/core/mcp/server.d.ts +0 -18
- package/dist/core/mcp/server.js +0 -157
- package/dist/core/mcp/standalone-server.d.ts +0 -13
- package/dist/core/mcp/standalone-server.js +0 -46
- package/dist/core/mcp/tools.d.ts +0 -7
- package/dist/core/mcp/tools.js +0 -278
- package/dist/core/mcp/types.d.ts +0 -87
- package/dist/core/mcp/types.js +0 -48
- package/dist/core/memory/bridge-discovery.d.ts +0 -50
- package/dist/core/memory/bridge-discovery.js +0 -291
- package/dist/core/memory/categorizer.d.ts +0 -27
- package/dist/core/memory/categorizer.js +0 -306
- package/dist/core/memory/conflict-detector.d.ts +0 -7
- package/dist/core/memory/conflict-detector.js +0 -43
- package/dist/core/memory/consolidation.d.ts +0 -42
- package/dist/core/memory/consolidation.js +0 -277
- package/dist/core/memory/context-collector.d.ts +0 -10
- package/dist/core/memory/context-collector.js +0 -56
- package/dist/core/memory/contradiction-resolver.d.ts +0 -40
- package/dist/core/memory/contradiction-resolver.js +0 -368
- package/dist/core/memory/edit-workflow.d.ts +0 -19
- package/dist/core/memory/edit-workflow.js +0 -120
- package/dist/core/memory/entity-extractor.d.ts +0 -37
- package/dist/core/memory/entity-extractor.js +0 -350
- package/dist/core/memory/entity-resolver.d.ts +0 -23
- package/dist/core/memory/entity-resolver.js +0 -64
- package/dist/core/memory/explain.d.ts +0 -18
- package/dist/core/memory/explain.js +0 -92
- package/dist/core/memory/fact-deriver.d.ts +0 -31
- package/dist/core/memory/fact-deriver.js +0 -236
- package/dist/core/memory/fact-extractor.d.ts +0 -24
- package/dist/core/memory/fact-extractor.js +0 -89
- package/dist/core/memory/feedback-tracker.d.ts +0 -12
- package/dist/core/memory/feedback-tracker.js +0 -155
- package/dist/core/memory/hooks.d.ts +0 -88
- package/dist/core/memory/hooks.js +0 -174
- package/dist/core/memory/hybrid-retrieval.d.ts +0 -27
- package/dist/core/memory/hybrid-retrieval.js +0 -37
- package/dist/core/memory/hybrid-scorer.d.ts +0 -40
- package/dist/core/memory/hybrid-scorer.js +0 -267
- package/dist/core/memory/hybrid-search.d.ts +0 -23
- package/dist/core/memory/hybrid-search.js +0 -596
- package/dist/core/memory/importance.d.ts +0 -46
- package/dist/core/memory/importance.js +0 -241
- package/dist/core/memory/index.d.ts +0 -9
- package/dist/core/memory/index.js +0 -11
- package/dist/core/memory/loader.d.ts +0 -31
- package/dist/core/memory/loader.js +0 -141
- package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
- package/dist/core/memory/markdown/markdown-storage.js +0 -243
- package/dist/core/memory/memories.d.ts +0 -43
- package/dist/core/memory/memories.js +0 -452
- package/dist/core/memory/memory-lifecycle.d.ts +0 -8
- package/dist/core/memory/memory-lifecycle.js +0 -47
- package/dist/core/memory/memory-manager.d.ts +0 -15
- package/dist/core/memory/memory-manager.js +0 -46
- package/dist/core/memory/migrate.d.ts +0 -21
- package/dist/core/memory/migrate.js +0 -134
- package/dist/core/memory/normalization.d.ts +0 -7
- package/dist/core/memory/normalization.js +0 -26
- package/dist/core/memory/path-strengthener.d.ts +0 -39
- package/dist/core/memory/path-strengthener.js +0 -150
- package/dist/core/memory/progressive-disclosure.d.ts +0 -43
- package/dist/core/memory/progressive-disclosure.js +0 -280
- package/dist/core/memory/query-processor.d.ts +0 -21
- package/dist/core/memory/query-processor.js +0 -106
- package/dist/core/memory/query-rewriter.d.ts +0 -13
- package/dist/core/memory/query-rewriter.js +0 -118
- package/dist/core/memory/response-analyzer.d.ts +0 -9
- package/dist/core/memory/response-analyzer.js +0 -61
- package/dist/core/memory/retrieval-feedback.d.ts +0 -70
- package/dist/core/memory/retrieval-feedback.js +0 -213
- package/dist/core/memory/serialization.d.ts +0 -10
- package/dist/core/memory/serialization.js +0 -84
- package/dist/core/memory/stale-cleaner.d.ts +0 -26
- package/dist/core/memory/stale-cleaner.js +0 -97
- package/dist/core/memory/stats.d.ts +0 -32
- package/dist/core/memory/stats.js +0 -143
- package/dist/core/memory/telemetry.d.ts +0 -69
- package/dist/core/memory/telemetry.js +0 -313
- package/dist/core/memory/temporal-facts.d.ts +0 -41
- package/dist/core/memory/temporal-facts.js +0 -283
- package/dist/core/memory/temporal-parser.d.ts +0 -32
- package/dist/core/memory/temporal-parser.js +0 -385
- package/dist/core/memory/trigger-detector.d.ts +0 -21
- package/dist/core/memory/trigger-detector.js +0 -79
- package/dist/core/memory/write-gate.d.ts +0 -54
- package/dist/core/memory/write-gate.js +0 -210
- package/dist/core/places/index.d.ts +0 -14
- package/dist/core/places/index.js +0 -14
- package/dist/core/places/memory-places.d.ts +0 -68
- package/dist/core/places/memory-places.js +0 -261
- package/dist/core/places/places.d.ts +0 -88
- package/dist/core/places/places.js +0 -314
- package/dist/core/places/rules.d.ts +0 -74
- package/dist/core/places/rules.js +0 -240
- package/dist/core/places/walking.d.ts +0 -56
- package/dist/core/places/walking.js +0 -121
- package/dist/core/projects.d.ts +0 -17
- package/dist/core/projects.js +0 -116
- package/dist/core/redis.d.ts +0 -11
- package/dist/core/redis.js +0 -69
- package/dist/core/responses.d.ts +0 -96
- package/dist/core/responses.js +0 -122
- package/dist/core/runtime/trust-report.d.ts +0 -102
- package/dist/core/runtime/trust-report.js +0 -107
- package/dist/core/runtime/trust-state.d.ts +0 -12
- package/dist/core/runtime/trust-state.js +0 -309
- package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
- package/dist/core/scheduler/cron-scheduler.js +0 -493
- package/dist/core/scheduler/heartbeat.d.ts +0 -11
- package/dist/core/scheduler/heartbeat.js +0 -73
- package/dist/core/scheduler/index.d.ts +0 -8
- package/dist/core/scheduler/index.js +0 -8
- package/dist/core/scheduler/job-runner.d.ts +0 -11
- package/dist/core/scheduler/job-runner.js +0 -164
- package/dist/core/search/conversations.d.ts +0 -25
- package/dist/core/search/conversations.js +0 -110
- package/dist/core/search/entities.d.ts +0 -12
- package/dist/core/search/entities.js +0 -31
- package/dist/core/search/folder-context.d.ts +0 -25
- package/dist/core/search/folder-context.js +0 -119
- package/dist/core/search/graph-boost.d.ts +0 -7
- package/dist/core/search/graph-boost.js +0 -23
- package/dist/core/search/index.d.ts +0 -4
- package/dist/core/search/index.js +0 -5
- package/dist/core/search/qmd-wrapper.d.ts +0 -36
- package/dist/core/search/qmd-wrapper.js +0 -58
- package/dist/core/security/encrypt.d.ts +0 -6
- package/dist/core/security/encrypt.js +0 -47
- package/dist/core/security/governance.d.ts +0 -26
- package/dist/core/security/governance.js +0 -79
- package/dist/core/security/privacy.d.ts +0 -23
- package/dist/core/security/privacy.js +0 -82
- package/dist/core/security/secret-detector.d.ts +0 -32
- package/dist/core/security/secret-detector.js +0 -88
- package/dist/core/session/auto-load.d.ts +0 -6
- package/dist/core/session/auto-load.js +0 -144
- package/dist/core/session/entity-tracker.d.ts +0 -62
- package/dist/core/session/entity-tracker.js +0 -287
- package/dist/core/session/index.d.ts +0 -7
- package/dist/core/session/index.js +0 -7
- package/dist/core/session/reference-resolver.d.ts +0 -26
- package/dist/core/session/reference-resolver.js +0 -121
- package/dist/core/session/self-iteration-job.d.ts +0 -35
- package/dist/core/session/self-iteration-job.js +0 -387
- package/dist/core/session/session-hooks.d.ts +0 -18
- package/dist/core/session/session-hooks.js +0 -58
- package/dist/core/session/types.d.ts +0 -26
- package/dist/core/session/types.js +0 -10
- package/dist/core/session/working-set.d.ts +0 -50
- package/dist/core/session/working-set.js +0 -212
- package/dist/core/snapshots/cleanup.d.ts +0 -9
- package/dist/core/snapshots/cleanup.js +0 -12
- package/dist/core/snapshots/comparison.d.ts +0 -19
- package/dist/core/snapshots/comparison.js +0 -43
- package/dist/core/snapshots/creation.d.ts +0 -13
- package/dist/core/snapshots/creation.js +0 -117
- package/dist/core/snapshots/retrieval.d.ts +0 -7
- package/dist/core/snapshots/retrieval.js +0 -41
- package/dist/core/snapshots/stats.d.ts +0 -11
- package/dist/core/snapshots/stats.js +0 -52
- package/dist/core/storage/cache.d.ts +0 -13
- package/dist/core/storage/cache.js +0 -202
- package/dist/core/storage/database.d.ts +0 -12
- package/dist/core/storage/database.js +0 -12
- package/dist/core/summarization/cleanup.d.ts +0 -9
- package/dist/core/summarization/cleanup.js +0 -12
- package/dist/core/summarization/queries.d.ts +0 -9
- package/dist/core/summarization/queries.js +0 -28
- package/dist/core/summarization/stats.d.ts +0 -14
- package/dist/core/summarization/stats.js +0 -52
- package/dist/core/summarization/strategies.d.ts +0 -24
- package/dist/core/summarization/strategies.js +0 -28
- package/dist/core/summarization.d.ts +0 -37
- package/dist/core/summarization.js +0 -188
- package/dist/core/temporal-facts.d.ts +0 -54
- package/dist/core/temporal-facts.js +0 -193
- package/dist/core/tracing/collector.d.ts +0 -111
- package/dist/core/tracing/collector.js +0 -350
- package/dist/core/tracing/visualizer.d.ts +0 -32
- package/dist/core/tracing/visualizer.js +0 -165
- package/dist/core/utils/cleanup-operations.d.ts +0 -13
- package/dist/core/utils/cleanup-operations.js +0 -44
- package/dist/core/utils/content-extraction.d.ts +0 -19
- package/dist/core/utils/content-extraction.js +0 -75
- package/dist/core/utils/filter-builder.d.ts +0 -13
- package/dist/core/utils/filter-builder.js +0 -44
- package/dist/core/utils/history-traversal.d.ts +0 -13
- package/dist/core/utils/history-traversal.js +0 -50
- package/dist/core/utils/memory-operations.d.ts +0 -17
- package/dist/core/utils/memory-operations.js +0 -43
- package/dist/core/utils/query-operations.d.ts +0 -18
- package/dist/core/utils/query-operations.js +0 -65
- package/dist/core/utils/summarization-helpers.d.ts +0 -17
- package/dist/core/utils/summarization-helpers.js +0 -33
- package/dist/core/utils/temporal-queries.d.ts +0 -13
- package/dist/core/utils/temporal-queries.js +0 -27
- package/dist/core/utils/vector-operations.d.ts +0 -71
- package/dist/core/utils/vector-operations.js +0 -129
- package/dist/core/utils/version-management.d.ts +0 -9
- package/dist/core/utils/version-management.js +0 -61
- package/dist/core/worker.d.ts +0 -82
- package/dist/core/worker.js +0 -272
- package/dist/db/adapter.d.ts +0 -7
- package/dist/db/adapter.js +0 -175
- package/dist/db/bootstrap.d.ts +0 -11
- package/dist/db/bootstrap.js +0 -1034
- package/dist/db/drizzle/schema-sqlite.d.ts +0 -5538
- package/dist/db/drizzle/schema-sqlite.js +0 -763
- package/dist/db/drizzle/schema.d.ts +0 -4734
- package/dist/db/drizzle/schema.js +0 -859
- package/dist/db/drizzle.config.d.ts +0 -3
- package/dist/db/drizzle.config.js +0 -12
- package/dist/db/index.d.ts +0 -7
- package/dist/db/index.js +0 -89
- package/dist/db/migrations/associations.d.ts +0 -6
- package/dist/db/migrations/associations.js +0 -29
- package/dist/db/migrations/beliefs.d.ts +0 -10
- package/dist/db/migrations/beliefs.js +0 -76
- package/dist/db/migrations/core-memory.d.ts +0 -6
- package/dist/db/migrations/core-memory.js +0 -29
- package/dist/db/migrations/fts.d.ts +0 -6
- package/dist/db/migrations/fts.js +0 -52
- package/dist/db/migrations/index.d.ts +0 -25
- package/dist/db/migrations/index.js +0 -51
- package/dist/db/migrations/indexes.d.ts +0 -6
- package/dist/db/migrations/indexes.js +0 -30
- package/dist/db/migrations/learnings.d.ts +0 -7
- package/dist/db/migrations/learnings.js +0 -26
- package/dist/db/migrations/maintenance.d.ts +0 -6
- package/dist/db/migrations/maintenance.js +0 -61
- package/dist/db/migrations/memories.d.ts +0 -7
- package/dist/db/migrations/memories.js +0 -16
- package/dist/db/migrations/memory-places.d.ts +0 -6
- package/dist/db/migrations/memory-places.js +0 -29
- package/dist/db/migrations/places.d.ts +0 -6
- package/dist/db/migrations/places.js +0 -43
- package/dist/db/migrations/projects.d.ts +0 -3
- package/dist/db/migrations/projects.js +0 -13
- package/dist/db/migrations/tier-conversion.d.ts +0 -7
- package/dist/db/migrations/tier-conversion.js +0 -20
- package/dist/db/neon.d.ts +0 -8
- package/dist/db/neon.js +0 -20
- package/dist/db/schema/beliefs.d.ts +0 -9
- package/dist/db/schema/beliefs.js +0 -46
- package/dist/db/schema/generator.d.ts +0 -38
- package/dist/db/schema/generator.js +0 -108
- package/dist/db/schema/index.d.ts +0 -39
- package/dist/db/schema/index.js +0 -51
- package/dist/db/schema/learnings.d.ts +0 -7
- package/dist/db/schema/learnings.js +0 -30
- package/dist/db/schema/memories.d.ts +0 -7
- package/dist/db/schema/memories.js +0 -81
- package/dist/db/schema/projects.d.ts +0 -4
- package/dist/db/schema/projects.js +0 -31
- package/dist/db/schema/tables/context-sessions.d.ts +0 -9
- package/dist/db/schema/tables/context-sessions.js +0 -37
- package/dist/db/schema/tables/conversations.d.ts +0 -9
- package/dist/db/schema/tables/conversations.js +0 -47
- package/dist/db/schema/tables/core-memory.d.ts +0 -9
- package/dist/db/schema/tables/core-memory.js +0 -41
- package/dist/db/schema/tables/entities.d.ts +0 -9
- package/dist/db/schema/tables/entities.js +0 -39
- package/dist/db/schema/tables/entity-relations.d.ts +0 -9
- package/dist/db/schema/tables/entity-relations.js +0 -31
- package/dist/db/schema/tables/learnings.d.ts +0 -9
- package/dist/db/schema/tables/learnings.js +0 -66
- package/dist/db/schema/tables/memories.d.ts +0 -9
- package/dist/db/schema/tables/memories.js +0 -161
- package/dist/db/schema/tables/memory-associations.d.ts +0 -9
- package/dist/db/schema/tables/memory-associations.js +0 -39
- package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
- package/dist/db/schema/tables/memory-hash-cache.js +0 -29
- package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
- package/dist/db/schema/tables/memory-merge-history.js +0 -33
- package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
- package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
- package/dist/db/schema/tables/messages.d.ts +0 -9
- package/dist/db/schema/tables/messages.js +0 -41
- package/dist/db/schema/tables/namespaces.d.ts +0 -9
- package/dist/db/schema/tables/namespaces.js +0 -37
- package/dist/db/schema/tables/projects.d.ts +0 -9
- package/dist/db/schema/tables/projects.js +0 -31
- package/dist/db/schema/tables/users.d.ts +0 -9
- package/dist/db/schema/tables/users.js +0 -27
- package/dist/db/schema.d.ts +0 -3
- package/dist/db/schema.js +0 -11
- package/dist/db/supabase.d.ts +0 -9
- package/dist/db/supabase.js +0 -24
- package/dist/packages/mcp/src/index.d.ts +0 -3
- package/dist/packages/mcp/src/index.js +0 -733
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Entity Extractor
|
|
3
|
-
* Extracts named entities from memory content
|
|
4
|
-
* Supports people, files, functions, dates, locations, concepts, tools, and patterns
|
|
5
|
-
*/
|
|
6
|
-
import { getDb } from '../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../db/schema.js';
|
|
8
|
-
import { eq, and } from 'drizzle-orm';
|
|
9
|
-
import { logger } from '../../core/logger.js';
|
|
10
|
-
// Regex patterns for entity detection
|
|
11
|
-
const PATTERNS = {
|
|
12
|
-
// File paths: src/components/Button.tsx
|
|
13
|
-
filePath: /(?:^|[^\w])(?:\.?\/[\w.-]*[\w.-]*(?:\/[\w.-]+)*|[\w.-]+\.(?:ts|tsx|js|jsx|py|rb|go|java|cpp|c|h|json|yaml|yml|env|md|txt|csv|sql|graphql))\b/gm,
|
|
14
|
-
// Functions/methods
|
|
15
|
-
functionCall: /\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*(?=\()/g,
|
|
16
|
-
// Classes
|
|
17
|
-
className: /\b(?:class|new|extends|implements)\s+([A-Z][a-zA-Z0-9_$]*)\b/g,
|
|
18
|
-
// Common names
|
|
19
|
-
personName: /(?:^|[^.\w])\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)?)\b(?![^.\w])/g,
|
|
20
|
-
// Capitalized concepts
|
|
21
|
-
concept: /\b(?:[A-Z][a-z]+\s+)+(?:System|Architecture|Pattern|Model|Algorithm|Framework|Library|Process|Concept|Method)\b/g,
|
|
22
|
-
// Tools
|
|
23
|
-
tool: /\b(?:React|Vue|Angular|Node\.?js?|Express|Django|Flask|FastAPI|PostgreSQL|MongoDB|Redis|Docker|Kubernetes)\b/g,
|
|
24
|
-
// Design patterns
|
|
25
|
-
designPattern: /\b(?:abstract\s+)?(?:factory|singleton|observer|decorator|strategy|adapter)\s+(?:pattern|method)\b/gi,
|
|
26
|
-
// Techniques
|
|
27
|
-
technique: /\b(?:memoization|caching|lazy\s+loading|debouncing|throttling)\b/gi,
|
|
28
|
-
// ISO dates
|
|
29
|
-
date: /\b(\d{4}-\d{2}-\d{2})(?:T\d{2}:\d{2}:\d{2})?\b/g,
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Extract unique entity names for auto-linking
|
|
33
|
-
*/
|
|
34
|
-
export function extractEntityNames(content) {
|
|
35
|
-
const names = new Set();
|
|
36
|
-
// Extract person names
|
|
37
|
-
const namePattern = /(?:^|[^.\w])\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)?)\b(?![^.\w])/g;
|
|
38
|
-
let match;
|
|
39
|
-
while ((match = namePattern.exec(content)) !== null) {
|
|
40
|
-
names.add(match[1].toLowerCase());
|
|
41
|
-
}
|
|
42
|
-
// Extract capitalized concepts
|
|
43
|
-
const conceptPattern = /\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)+\b/g;
|
|
44
|
-
while ((match = conceptPattern.exec(content)) !== null) {
|
|
45
|
-
names.add(match[0].toLowerCase());
|
|
46
|
-
}
|
|
47
|
-
return Array.from(names).slice(0, 10);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Extract entities from content
|
|
51
|
-
*/
|
|
52
|
-
export async function extractEntities(content) {
|
|
53
|
-
const entities = [];
|
|
54
|
-
const seenKeys = new Set(); // Deduplicate entities
|
|
55
|
-
// Extract file paths
|
|
56
|
-
const filePaths = Array.from(content.matchAll(PATTERNS.filePath));
|
|
57
|
-
for (const match of filePaths) {
|
|
58
|
-
const name = match[0].trim();
|
|
59
|
-
const key = `file:${name}`;
|
|
60
|
-
if (!seenKeys.has(key)) {
|
|
61
|
-
entities.push({
|
|
62
|
-
name,
|
|
63
|
-
type: 'file',
|
|
64
|
-
confidence: 0.9,
|
|
65
|
-
startIndex: match.index || 0,
|
|
66
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
67
|
-
context: extractContext(content, match.index || 0),
|
|
68
|
-
normalized: normalizePath(name),
|
|
69
|
-
});
|
|
70
|
-
seenKeys.add(key);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Extract function calls
|
|
74
|
-
const functionCalls = Array.from(content.matchAll(PATTERNS.functionCall));
|
|
75
|
-
for (const match of functionCalls) {
|
|
76
|
-
const name = match[1];
|
|
77
|
-
const key = `function:${name}`;
|
|
78
|
-
if (!seenKeys.has(key) && name.length > 2) {
|
|
79
|
-
entities.push({
|
|
80
|
-
name,
|
|
81
|
-
type: 'function',
|
|
82
|
-
confidence: 0.85,
|
|
83
|
-
startIndex: match.index || 0,
|
|
84
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
85
|
-
context: extractContext(content, match.index || 0),
|
|
86
|
-
});
|
|
87
|
-
seenKeys.add(key);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Extract class names
|
|
91
|
-
const classNames = Array.from(content.matchAll(PATTERNS.className));
|
|
92
|
-
for (const match of classNames) {
|
|
93
|
-
const name = match[1];
|
|
94
|
-
const key = `class:${name}`;
|
|
95
|
-
if (!seenKeys.has(key)) {
|
|
96
|
-
entities.push({
|
|
97
|
-
name,
|
|
98
|
-
type: 'class',
|
|
99
|
-
confidence: 0.95,
|
|
100
|
-
startIndex: match.index || 0,
|
|
101
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
102
|
-
context: extractContext(content, match.index || 0),
|
|
103
|
-
});
|
|
104
|
-
seenKeys.add(key);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// Extract technologies/tools
|
|
108
|
-
const tools = Array.from(content.matchAll(PATTERNS.tool));
|
|
109
|
-
for (const match of tools) {
|
|
110
|
-
const name = match[0];
|
|
111
|
-
const key = `tool:${name}`;
|
|
112
|
-
if (!seenKeys.has(key)) {
|
|
113
|
-
entities.push({
|
|
114
|
-
name,
|
|
115
|
-
type: 'tool',
|
|
116
|
-
confidence: 0.9,
|
|
117
|
-
startIndex: match.index || 0,
|
|
118
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
119
|
-
context: extractContext(content, match.index || 0),
|
|
120
|
-
});
|
|
121
|
-
seenKeys.add(key);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// Extract design patterns
|
|
125
|
-
const patterns = Array.from(content.matchAll(PATTERNS.designPattern));
|
|
126
|
-
for (const match of patterns) {
|
|
127
|
-
const name = match[0];
|
|
128
|
-
const key = `pattern:${name}`;
|
|
129
|
-
if (!seenKeys.has(key)) {
|
|
130
|
-
entities.push({
|
|
131
|
-
name,
|
|
132
|
-
type: 'pattern',
|
|
133
|
-
confidence: 0.92,
|
|
134
|
-
startIndex: match.index || 0,
|
|
135
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
136
|
-
context: extractContext(content, match.index || 0),
|
|
137
|
-
});
|
|
138
|
-
seenKeys.add(key);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// Extract techniques/methodologies
|
|
142
|
-
const techniques = Array.from(content.matchAll(PATTERNS.technique));
|
|
143
|
-
for (const match of techniques) {
|
|
144
|
-
const name = match[0];
|
|
145
|
-
const key = `technique:${name}`;
|
|
146
|
-
if (!seenKeys.has(key)) {
|
|
147
|
-
entities.push({
|
|
148
|
-
name,
|
|
149
|
-
type: 'technique',
|
|
150
|
-
confidence: 0.88,
|
|
151
|
-
startIndex: match.index || 0,
|
|
152
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
153
|
-
context: extractContext(content, match.index || 0),
|
|
154
|
-
});
|
|
155
|
-
seenKeys.add(key);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// Extract dates
|
|
159
|
-
const dates = Array.from(content.matchAll(PATTERNS.date));
|
|
160
|
-
for (const match of dates) {
|
|
161
|
-
const name = match[0];
|
|
162
|
-
const key = `date:${name}`;
|
|
163
|
-
if (!seenKeys.has(key)) {
|
|
164
|
-
entities.push({
|
|
165
|
-
name,
|
|
166
|
-
type: 'date',
|
|
167
|
-
confidence: 0.95,
|
|
168
|
-
startIndex: match.index || 0,
|
|
169
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
170
|
-
context: extractContext(content, match.index || 0),
|
|
171
|
-
});
|
|
172
|
-
seenKeys.add(key);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// Extract quoted important concepts
|
|
176
|
-
const quotedConcepts = Array.from(content.matchAll(PATTERNS.quotedConcept));
|
|
177
|
-
for (const match of quotedConcepts) {
|
|
178
|
-
const name = match[1];
|
|
179
|
-
const key = `concept:${name}`;
|
|
180
|
-
if (!seenKeys.has(key) && name.length > 2) {
|
|
181
|
-
entities.push({
|
|
182
|
-
name,
|
|
183
|
-
type: 'concept',
|
|
184
|
-
confidence: 0.8,
|
|
185
|
-
startIndex: match.index || 0,
|
|
186
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
187
|
-
context: extractContext(content, match.index || 0),
|
|
188
|
-
});
|
|
189
|
-
seenKeys.add(key);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
// Extract capitalized concepts
|
|
193
|
-
const concepts = Array.from(content.matchAll(PATTERNS.concept));
|
|
194
|
-
for (const match of concepts) {
|
|
195
|
-
const name = match[0];
|
|
196
|
-
const key = `concept:${name}`;
|
|
197
|
-
if (!seenKeys.has(key)) {
|
|
198
|
-
entities.push({
|
|
199
|
-
name,
|
|
200
|
-
type: 'concept',
|
|
201
|
-
confidence: 0.75,
|
|
202
|
-
startIndex: match.index || 0,
|
|
203
|
-
endIndex: (match.index || 0) + match[0].length,
|
|
204
|
-
context: extractContext(content, match.index || 0),
|
|
205
|
-
});
|
|
206
|
-
seenKeys.add(key);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// Sort by start index
|
|
210
|
-
entities.sort((a, b) => a.startIndex - b.startIndex);
|
|
211
|
-
logger.debug('Entities extracted', {
|
|
212
|
-
count: entities.length,
|
|
213
|
-
byType: countByType(entities),
|
|
214
|
-
});
|
|
215
|
-
return entities;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Link extracted entities to memory records
|
|
219
|
-
* Creates entity records in the knowledge graph
|
|
220
|
-
*/
|
|
221
|
-
export async function linkEntitiesToMemories(memoryId, entities) {
|
|
222
|
-
if (entities.length === 0)
|
|
223
|
-
return;
|
|
224
|
-
try {
|
|
225
|
-
const db = await getDb();
|
|
226
|
-
const schema = await getSchema();
|
|
227
|
-
// Get memory to find project
|
|
228
|
-
const memories = await db
|
|
229
|
-
.select()
|
|
230
|
-
.from(schema.memories)
|
|
231
|
-
.where(eq(schema.memories.id, memoryId))
|
|
232
|
-
.limit(1);
|
|
233
|
-
if (memories.length === 0)
|
|
234
|
-
return;
|
|
235
|
-
const memory = memories[0];
|
|
236
|
-
// Insert unique entities into the knowledge graph
|
|
237
|
-
for (const entity of entities) {
|
|
238
|
-
try {
|
|
239
|
-
// Check if entity already exists
|
|
240
|
-
const existing = await db
|
|
241
|
-
.select()
|
|
242
|
-
.from(schema.entities)
|
|
243
|
-
.where(and(eq(schema.entities.projectId, memory.projectId), eq(schema.entities.name, entity.name), eq(schema.entities.type, entity.type)))
|
|
244
|
-
.limit(1);
|
|
245
|
-
if (existing.length === 0) {
|
|
246
|
-
// Insert new entity with metadata in properties
|
|
247
|
-
await db.insert(schema.entities).values({
|
|
248
|
-
name: entity.name,
|
|
249
|
-
type: entity.type,
|
|
250
|
-
projectId: memory.projectId,
|
|
251
|
-
description: entity.context,
|
|
252
|
-
properties: {
|
|
253
|
-
confidence: entity.confidence,
|
|
254
|
-
extractedFrom: memoryId,
|
|
255
|
-
normalized: entity.normalized,
|
|
256
|
-
},
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
catch (error) {
|
|
261
|
-
logger.error('Error inserting entity', { entity, error });
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
logger.debug('Entities linked to memory', {
|
|
265
|
-
memoryId,
|
|
266
|
-
entityCount: entities.length,
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
catch (error) {
|
|
270
|
-
logger.error('Error linking entities to memories', error);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Get entities extracted from a memory based on properties
|
|
275
|
-
*/
|
|
276
|
-
export async function getMemoryEntities(memoryId) {
|
|
277
|
-
try {
|
|
278
|
-
const db = await getDb();
|
|
279
|
-
const schema = await getSchema();
|
|
280
|
-
// Find all entities with this memory ID in properties
|
|
281
|
-
const allEntities = await db.select().from(schema.entities);
|
|
282
|
-
const entities = [];
|
|
283
|
-
for (const entity of allEntities) {
|
|
284
|
-
const props = entity.properties;
|
|
285
|
-
if (props && props.extractedFrom === memoryId) {
|
|
286
|
-
entities.push({
|
|
287
|
-
name: entity.name,
|
|
288
|
-
type: entity.type,
|
|
289
|
-
confidence: props.confidence || 0.8,
|
|
290
|
-
startIndex: 0,
|
|
291
|
-
endIndex: 0,
|
|
292
|
-
context: entity.description || '',
|
|
293
|
-
normalized: props.normalized,
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return entities;
|
|
298
|
-
}
|
|
299
|
-
catch (error) {
|
|
300
|
-
logger.error('Error getting memory entities', error);
|
|
301
|
-
return [];
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Get all entities for a project
|
|
306
|
-
*/
|
|
307
|
-
export async function getProjectEntities(projectId, type) {
|
|
308
|
-
try {
|
|
309
|
-
const db = await getDb();
|
|
310
|
-
const schema = await getSchema();
|
|
311
|
-
let query = db.select().from(schema.entities).where(eq(schema.entities.projectId, projectId));
|
|
312
|
-
if (type) {
|
|
313
|
-
query = query.where(eq(schema.entities.type, type));
|
|
314
|
-
}
|
|
315
|
-
return await query;
|
|
316
|
-
}
|
|
317
|
-
catch (error) {
|
|
318
|
-
logger.error('Error getting project entities', error);
|
|
319
|
-
return [];
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Extract context around entity
|
|
324
|
-
*/
|
|
325
|
-
function extractContext(content, index, contextLength = 50) {
|
|
326
|
-
const start = Math.max(0, index - contextLength);
|
|
327
|
-
const end = Math.min(content.length, index + contextLength);
|
|
328
|
-
return content.substring(start, end).trim();
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Normalize file path
|
|
332
|
-
*/
|
|
333
|
-
function normalizePath(path) {
|
|
334
|
-
return path
|
|
335
|
-
.trim()
|
|
336
|
-
.replace(/^\.\//, '')
|
|
337
|
-
.toLowerCase()
|
|
338
|
-
.replace(/\\/g, '/');
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Count entities by type
|
|
342
|
-
*/
|
|
343
|
-
function countByType(entities) {
|
|
344
|
-
const counts = {};
|
|
345
|
-
for (const entity of entities) {
|
|
346
|
-
counts[entity.type] = (counts[entity.type] || 0) + 1;
|
|
347
|
-
}
|
|
348
|
-
return counts;
|
|
349
|
-
}
|
|
350
|
-
//# sourceMappingURL=entity-extractor.js.map
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface ExtractedEntities {
|
|
2
|
-
primary: string[];
|
|
3
|
-
secondary: string[];
|
|
4
|
-
queryType: 'factual' | 'relational' | 'temporal';
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Extract entities from a query using Claude
|
|
8
|
-
* NO FALLBACKS - real extraction or throw
|
|
9
|
-
*/
|
|
10
|
-
export declare function extractQueryEntities(query: string, callClaudeFn: (prompt: string, maxTokens: number) => Promise<string>): Promise<ExtractedEntities>;
|
|
11
|
-
/**
|
|
12
|
-
* Score memory relevance based on entity matching
|
|
13
|
-
* Returns boost factor (0-1)
|
|
14
|
-
*/
|
|
15
|
-
export declare function scoreEntityMatch(memoryEntities: string[], queryEntities: string[]): number;
|
|
16
|
-
/**
|
|
17
|
-
* Filter and boost memories by entity relevance
|
|
18
|
-
*/
|
|
19
|
-
export declare function filterByEntities(memories: any[], queryEntities: string[]): Array<{
|
|
20
|
-
memory: any;
|
|
21
|
-
entityBoost: number;
|
|
22
|
-
}>;
|
|
23
|
-
//# sourceMappingURL=entity-resolver.d.ts.map
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract entities from a query using Claude
|
|
3
|
-
* NO FALLBACKS - real extraction or throw
|
|
4
|
-
*/
|
|
5
|
-
export async function extractQueryEntities(query, callClaudeFn) {
|
|
6
|
-
const prompt = `Extract entities from this question. Return ONLY JSON:
|
|
7
|
-
{
|
|
8
|
-
"primary": ["Alice", "project name"],
|
|
9
|
-
"secondary": ["team", "budget"],
|
|
10
|
-
"queryType": "factual"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Question: ${query}`;
|
|
14
|
-
const response = await callClaudeFn(prompt, 500);
|
|
15
|
-
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
16
|
-
if (!jsonMatch) {
|
|
17
|
-
throw new Error('No JSON in entity extraction');
|
|
18
|
-
}
|
|
19
|
-
const parsed = JSON.parse(jsonMatch[0]);
|
|
20
|
-
return {
|
|
21
|
-
primary: parsed.primary || [],
|
|
22
|
-
secondary: parsed.secondary || [],
|
|
23
|
-
queryType: parsed.queryType || 'factual',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Score memory relevance based on entity matching
|
|
28
|
-
* Returns boost factor (0-1)
|
|
29
|
-
*/
|
|
30
|
-
export function scoreEntityMatch(memoryEntities, queryEntities) {
|
|
31
|
-
if (!queryEntities.length || !memoryEntities.length) {
|
|
32
|
-
return 0.5; // Neutral if no entities
|
|
33
|
-
}
|
|
34
|
-
const querySet = new Set(queryEntities.map(e => e.toLowerCase()));
|
|
35
|
-
const memorySet = new Set(memoryEntities.map(e => e.toLowerCase()));
|
|
36
|
-
// Count matches
|
|
37
|
-
let matches = 0;
|
|
38
|
-
for (const entity of querySet) {
|
|
39
|
-
if (memorySet.has(entity)) {
|
|
40
|
-
matches++;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// Calculate boost (0-1)
|
|
44
|
-
const matchRatio = matches / querySet.size;
|
|
45
|
-
return 0.5 + (matchRatio * 0.5); // 0.5 to 1.0
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Filter and boost memories by entity relevance
|
|
49
|
-
*/
|
|
50
|
-
export function filterByEntities(memories, queryEntities) {
|
|
51
|
-
if (!queryEntities.length) {
|
|
52
|
-
// No entities to filter by, return all with neutral boost
|
|
53
|
-
return memories.map(m => ({ memory: m, entityBoost: 0.5 }));
|
|
54
|
-
}
|
|
55
|
-
return memories.map(memory => {
|
|
56
|
-
const memoryEntities = memory.metadata?.entities || [];
|
|
57
|
-
const boost = scoreEntityMatch(memoryEntities, queryEntities);
|
|
58
|
-
return {
|
|
59
|
-
memory,
|
|
60
|
-
entityBoost: boost,
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=entity-resolver.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { StoredBelief } from '../beliefs/types.js';
|
|
2
|
-
export interface MemoryInspection {
|
|
3
|
-
id: string;
|
|
4
|
-
type: string;
|
|
5
|
-
classification: string;
|
|
6
|
-
reasons: string[];
|
|
7
|
-
rawFallbackSnapshotId?: string | null;
|
|
8
|
-
nuanceSuppressed: boolean;
|
|
9
|
-
place?: string | null;
|
|
10
|
-
placeType?: string | null;
|
|
11
|
-
graphStatus?: string | null;
|
|
12
|
-
content: string;
|
|
13
|
-
legacyMetadata: boolean;
|
|
14
|
-
beliefs?: StoredBelief[];
|
|
15
|
-
}
|
|
16
|
-
export declare function summarizeInspection(input: MemoryInspection): string;
|
|
17
|
-
export declare function explainMemory(id: string): Promise<MemoryInspection | null>;
|
|
18
|
-
//# sourceMappingURL=explain.d.ts.map
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { eq } from 'drizzle-orm';
|
|
2
|
-
import { getDbClient } from '../lib/db-client.js';
|
|
3
|
-
import { deserializeMetadata } from './serialization.js';
|
|
4
|
-
import { getMemorySnapshot } from '../snapshots/retrieval.js';
|
|
5
|
-
import { getMemoryPlace } from '../places/memory-places.js';
|
|
6
|
-
import { getPlace } from '../places/places.js';
|
|
7
|
-
import { getBeliefsForMemory } from '../beliefs/store.js';
|
|
8
|
-
export function summarizeInspection(input) {
|
|
9
|
-
const lines = [
|
|
10
|
-
`Memory ${input.id}`,
|
|
11
|
-
`Type: ${input.type}`,
|
|
12
|
-
`Classification: ${input.classification}`,
|
|
13
|
-
`Reasons: ${input.reasons.join('; ') || 'n/a'}`,
|
|
14
|
-
`Raw fallback: ${input.rawFallbackSnapshotId ?? 'none'}`,
|
|
15
|
-
`nuance suppressed: ${input.nuanceSuppressed ? 'yes' : 'no'}`,
|
|
16
|
-
`Place: ${input.place ?? 'none'}${input.placeType ? ` (${input.placeType})` : ''}`,
|
|
17
|
-
`Graph: ${input.graphStatus ?? 'none'}`,
|
|
18
|
-
`Content: ${input.content}`,
|
|
19
|
-
`Legacy metadata: ${input.legacyMetadata ? 'yes' : 'no'}`,
|
|
20
|
-
];
|
|
21
|
-
if (input.beliefs && input.beliefs.length > 0) {
|
|
22
|
-
lines.push('Beliefs:');
|
|
23
|
-
for (const belief of input.beliefs) {
|
|
24
|
-
const confidence = typeof belief.confidence === 'number' ? belief.confidence.toFixed(1) : '?';
|
|
25
|
-
const sourceCount = belief.sourceMemoryIds?.length ?? 1;
|
|
26
|
-
const origin = sourceCount > 1 ? `derived from ${sourceCount} memories` : 'derived from 1 memory';
|
|
27
|
-
const evidence = belief.evidenceSummary
|
|
28
|
-
? `\n Evidence: ${belief.evidenceSummary.slice(0, 100)}${belief.evidenceSummary.length > 100 ? '...' : ''}`
|
|
29
|
-
: '';
|
|
30
|
-
lines.push(`- [${belief.type}] ${belief.statement}`);
|
|
31
|
-
lines.push(` Status: ${belief.status}, Confidence: ${confidence}/100, ${origin}${evidence}`);
|
|
32
|
-
if (belief.status === 'superseded') {
|
|
33
|
-
lines.push(` Note: This belief supersedes a previous version`);
|
|
34
|
-
}
|
|
35
|
-
if (belief.status === 'disputed') {
|
|
36
|
-
lines.push(` Warning: This belief has been disputed`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
lines.push(`Beliefs: ${input.legacyMetadata ? 'No derived beliefs available for this legacy record' : 'none derived'}`);
|
|
42
|
-
}
|
|
43
|
-
return lines.join('\n');
|
|
44
|
-
}
|
|
45
|
-
export async function explainMemory(id) {
|
|
46
|
-
const { db, schema } = await getDbClient();
|
|
47
|
-
const rows = await db.select().from(schema.memories).where(eq(schema.memories.id, id)).limit(1);
|
|
48
|
-
const row = rows[0];
|
|
49
|
-
if (!row)
|
|
50
|
-
return null;
|
|
51
|
-
const metadata = deserializeMetadata(row.metadata ?? null);
|
|
52
|
-
const rawClassification = metadata?.signal?.classification ?? metadata?.classification ?? null;
|
|
53
|
-
const classification = typeof rawClassification === 'string' && rawClassification.trim().length > 0
|
|
54
|
-
? rawClassification
|
|
55
|
-
: 'legacy-durable';
|
|
56
|
-
const reasons = Array.isArray(metadata?.signal?.reasons)
|
|
57
|
-
? metadata?.signal?.reasons
|
|
58
|
-
: Array.isArray(metadata?.reasons)
|
|
59
|
-
? metadata?.reasons
|
|
60
|
-
: ['This record predates signal tracking, so detailed ingestion metadata is unavailable.'];
|
|
61
|
-
const rawFallbackSnapshotId = typeof metadata?.rawFallbackSnapshotId === 'string'
|
|
62
|
-
? metadata.rawFallbackSnapshotId
|
|
63
|
-
: null;
|
|
64
|
-
const nuanceSuppressed = Boolean(metadata?.signal?.nuanceSuppressed ?? metadata?.nuanceSuppressed);
|
|
65
|
-
const graphStatus = typeof metadata?.graphStatus === 'string'
|
|
66
|
-
? metadata.graphStatus
|
|
67
|
-
: typeof metadata?.graph === 'object' && metadata.graph
|
|
68
|
-
? JSON.stringify(metadata.graph)
|
|
69
|
-
: 'Unavailable for this legacy record';
|
|
70
|
-
const legacyMetadata = rawClassification == null;
|
|
71
|
-
const placeId = await getMemoryPlace(id);
|
|
72
|
-
const place = placeId ? await getPlace(placeId) : null;
|
|
73
|
-
if (rawFallbackSnapshotId) {
|
|
74
|
-
await getMemorySnapshot(rawFallbackSnapshotId);
|
|
75
|
-
}
|
|
76
|
-
const beliefs = await getBeliefsForMemory(id);
|
|
77
|
-
return {
|
|
78
|
-
id: row.id,
|
|
79
|
-
type: row.type,
|
|
80
|
-
classification,
|
|
81
|
-
reasons,
|
|
82
|
-
rawFallbackSnapshotId,
|
|
83
|
-
nuanceSuppressed,
|
|
84
|
-
place: place?.name ?? null,
|
|
85
|
-
placeType: place?.placeType ?? null,
|
|
86
|
-
graphStatus,
|
|
87
|
-
content: row.content,
|
|
88
|
-
legacyMetadata,
|
|
89
|
-
beliefs,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=explain.js.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fact Deriver
|
|
3
|
-
*
|
|
4
|
-
* Derives implicit facts from existing relationships in the knowledge graph.
|
|
5
|
-
* Example: works_on(A, X) + uses(X, Y) -> depends_on(A, Y)
|
|
6
|
-
*/
|
|
7
|
-
import type { RelationType } from '../graph/llm-entity-extractor.js';
|
|
8
|
-
export interface DerivedFact {
|
|
9
|
-
fromEntityId: string;
|
|
10
|
-
fromEntityName: string;
|
|
11
|
-
toEntityId: string;
|
|
12
|
-
toEntityName: string;
|
|
13
|
-
relationType: RelationType;
|
|
14
|
-
rule: string;
|
|
15
|
-
confidence: number;
|
|
16
|
-
isDerived: boolean;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Derive implicit facts from existing relationships in the knowledge graph.
|
|
20
|
-
* Applies transitivity and causal rules to find new relationships.
|
|
21
|
-
*/
|
|
22
|
-
export declare function deriveFacts(projectId: string, options?: {
|
|
23
|
-
maxDerivations?: number;
|
|
24
|
-
minConfidence?: number;
|
|
25
|
-
storeResults?: boolean;
|
|
26
|
-
}): Promise<DerivedFact[]>;
|
|
27
|
-
/**
|
|
28
|
-
* Get all derived facts for a project.
|
|
29
|
-
*/
|
|
30
|
-
export declare function getDerivedFacts(projectId: string): Promise<DerivedFact[]>;
|
|
31
|
-
//# sourceMappingURL=fact-deriver.d.ts.map
|