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,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: detect_duplicate_memories
|
|
3
|
-
*
|
|
4
|
-
* Scans for duplicate or similar memories and creates merge proposals
|
|
5
|
-
* Entry point for memory merging workflow
|
|
6
|
-
*/
|
|
7
|
-
interface DetectDuplicatesInput {
|
|
8
|
-
projectId?: string;
|
|
9
|
-
threshold?: number;
|
|
10
|
-
memoryType?: 'fact' | 'preference' | 'decision' | 'observation' | 'context';
|
|
11
|
-
limit?: number;
|
|
12
|
-
autoCreateProposals?: boolean;
|
|
13
|
-
}
|
|
14
|
-
interface DetectDuplicatesResponse {
|
|
15
|
-
ok: boolean;
|
|
16
|
-
message: string;
|
|
17
|
-
data?: {
|
|
18
|
-
projectId: string;
|
|
19
|
-
duplicateCount: number;
|
|
20
|
-
proposalsCreated: number;
|
|
21
|
-
proposalIds: string[];
|
|
22
|
-
statistics: {
|
|
23
|
-
totalMemories: number;
|
|
24
|
-
scannedMemories: number;
|
|
25
|
-
candidatesFound: number;
|
|
26
|
-
estimatedTokensSaved: number;
|
|
27
|
-
};
|
|
28
|
-
timing: {
|
|
29
|
-
stage1Ms: number;
|
|
30
|
-
stage2Ms: number;
|
|
31
|
-
totalMs: number;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
error?: string;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Handle detect_duplicate_memories tool call
|
|
38
|
-
*
|
|
39
|
-
* Algorithm:
|
|
40
|
-
* 1. Run two-stage detection (SimHash → embedding similarity)
|
|
41
|
-
* 2. Filter by safety checks
|
|
42
|
-
* 3. Create merge proposals in database
|
|
43
|
-
* 4. Return summary
|
|
44
|
-
*/
|
|
45
|
-
export declare function handleDetectDuplicates(input: DetectDuplicatesInput): Promise<DetectDuplicatesResponse>;
|
|
46
|
-
export {};
|
|
47
|
-
//# sourceMappingURL=detect-duplicates.d.ts.map
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: detect_duplicate_memories
|
|
3
|
-
*
|
|
4
|
-
* Scans for duplicate or similar memories and creates merge proposals
|
|
5
|
-
* Entry point for memory merging workflow
|
|
6
|
-
*/
|
|
7
|
-
import { randomUUID } from 'crypto';
|
|
8
|
-
import { detectDuplicates } from '../detection/two-stage-detector.js';
|
|
9
|
-
import { runSafetyChecks } from '../safety/safety-checks.js';
|
|
10
|
-
import { mergeMemories } from '../strategies/merge-strategies.js';
|
|
11
|
-
import { estimateTokensSaved } from '../analytics/token-estimator.js';
|
|
12
|
-
import { getDb } from '../../../db/index.js';
|
|
13
|
-
import { getSchema } from '../../../db/schema.js';
|
|
14
|
-
import { createDatabaseClient } from '../../../core/storage/database.js';
|
|
15
|
-
import { buildSuccessResponse, buildErrorResponse } from '../utils/response-builder.js';
|
|
16
|
-
/**
|
|
17
|
-
* Handle detect_duplicate_memories tool call
|
|
18
|
-
*
|
|
19
|
-
* Algorithm:
|
|
20
|
-
* 1. Run two-stage detection (SimHash → embedding similarity)
|
|
21
|
-
* 2. Filter by safety checks
|
|
22
|
-
* 3. Create merge proposals in database
|
|
23
|
-
* 4. Return summary
|
|
24
|
-
*/
|
|
25
|
-
export async function handleDetectDuplicates(input) {
|
|
26
|
-
try {
|
|
27
|
-
const projectId = input.projectId;
|
|
28
|
-
const threshold = input.threshold ?? 0.85;
|
|
29
|
-
const memoryType = input.memoryType;
|
|
30
|
-
const limit = input.limit ?? 50;
|
|
31
|
-
const autoCreateProposals = input.autoCreateProposals !== false;
|
|
32
|
-
if (!projectId) {
|
|
33
|
-
return buildErrorResponse('projectId is required', 'projectId is required');
|
|
34
|
-
}
|
|
35
|
-
// Run detection
|
|
36
|
-
const startTime = Date.now();
|
|
37
|
-
const detectionResult = await detectDuplicates({
|
|
38
|
-
projectId,
|
|
39
|
-
threshold,
|
|
40
|
-
type: memoryType,
|
|
41
|
-
limit,
|
|
42
|
-
});
|
|
43
|
-
const detectionTime = Date.now() - startTime;
|
|
44
|
-
if (detectionResult.candidates.length === 0) {
|
|
45
|
-
return buildSuccessResponse('No duplicates found', {
|
|
46
|
-
projectId,
|
|
47
|
-
duplicateCount: 0,
|
|
48
|
-
proposalsCreated: 0,
|
|
49
|
-
proposalIds: [],
|
|
50
|
-
statistics: {
|
|
51
|
-
totalMemories: detectionResult.statistics.totalMemories,
|
|
52
|
-
scannedMemories: detectionResult.statistics.totalMemories,
|
|
53
|
-
candidatesFound: 0,
|
|
54
|
-
estimatedTokensSaved: 0,
|
|
55
|
-
},
|
|
56
|
-
timing: {
|
|
57
|
-
stage1Ms: detectionResult.stage1Time,
|
|
58
|
-
stage2Ms: detectionResult.stage2Time,
|
|
59
|
-
totalMs: detectionTime,
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
if (!autoCreateProposals) {
|
|
64
|
-
return buildSuccessResponse(`Found ${detectionResult.candidates.length} potential duplicates`, {
|
|
65
|
-
projectId,
|
|
66
|
-
duplicateCount: detectionResult.candidates.length,
|
|
67
|
-
proposalsCreated: 0,
|
|
68
|
-
proposalIds: [],
|
|
69
|
-
statistics: {
|
|
70
|
-
totalMemories: detectionResult.statistics.totalMemories,
|
|
71
|
-
scannedMemories: detectionResult.statistics.totalMemories,
|
|
72
|
-
candidatesFound: detectionResult.candidates.length,
|
|
73
|
-
estimatedTokensSaved: 0,
|
|
74
|
-
},
|
|
75
|
-
timing: {
|
|
76
|
-
stage1Ms: detectionResult.stage1Time,
|
|
77
|
-
stage2Ms: detectionResult.stage2Time,
|
|
78
|
-
totalMs: detectionTime,
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
// Create proposals for detected duplicates
|
|
83
|
-
const db = createDatabaseClient(await getDb());
|
|
84
|
-
const schema = await getSchema();
|
|
85
|
-
const proposalIds = [];
|
|
86
|
-
let estimatedTokensSaved = 0;
|
|
87
|
-
for (const candidate of detectionResult.candidates) {
|
|
88
|
-
const sources = [candidate.memory1, candidate.memory2];
|
|
89
|
-
// Run safety checks
|
|
90
|
-
const safetyResult = runSafetyChecks(sources, {
|
|
91
|
-
similarityScore: candidate.similarityScore,
|
|
92
|
-
});
|
|
93
|
-
if (!safetyResult.passed) {
|
|
94
|
-
// Skip this candidate if safety checks fail
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
// Merge memories
|
|
98
|
-
const merged = mergeMemories(sources);
|
|
99
|
-
// Estimate tokens saved
|
|
100
|
-
const tokensSaved = estimateTokensSaved(sources, merged);
|
|
101
|
-
estimatedTokensSaved += tokensSaved;
|
|
102
|
-
// Create proposal
|
|
103
|
-
const proposalId = randomUUID();
|
|
104
|
-
await db.insert(schema.memoryMergeProposals).values({
|
|
105
|
-
id: proposalId,
|
|
106
|
-
projectId: projectId,
|
|
107
|
-
userId: candidate.memory1.userId,
|
|
108
|
-
sourceMemoryIds: [candidate.memory1.id, candidate.memory2.id],
|
|
109
|
-
proposedContent: merged.content,
|
|
110
|
-
proposedSummary: merged.summary,
|
|
111
|
-
proposedTags: merged.tags,
|
|
112
|
-
proposedMetadata: merged.metadata,
|
|
113
|
-
detectionMethod: candidate.detectionMethod,
|
|
114
|
-
similarityScore: candidate.similarityScore,
|
|
115
|
-
confidenceLevel: candidate.confidenceLevel,
|
|
116
|
-
mergeReason: candidate.mergeReason,
|
|
117
|
-
conflictWarnings: merged.conflictWarnings,
|
|
118
|
-
status: 'pending',
|
|
119
|
-
createdAt: new Date(),
|
|
120
|
-
});
|
|
121
|
-
proposalIds.push(proposalId);
|
|
122
|
-
}
|
|
123
|
-
return buildSuccessResponse(`Created ${proposalIds.length} merge proposals from ${detectionResult.candidates.length} duplicates`, {
|
|
124
|
-
projectId,
|
|
125
|
-
duplicateCount: detectionResult.candidates.length,
|
|
126
|
-
proposalsCreated: proposalIds.length,
|
|
127
|
-
proposalIds,
|
|
128
|
-
statistics: {
|
|
129
|
-
totalMemories: detectionResult.statistics.totalMemories,
|
|
130
|
-
scannedMemories: detectionResult.statistics.totalMemories,
|
|
131
|
-
candidatesFound: detectionResult.candidates.length,
|
|
132
|
-
estimatedTokensSaved,
|
|
133
|
-
},
|
|
134
|
-
timing: {
|
|
135
|
-
stage1Ms: detectionResult.stage1Time,
|
|
136
|
-
stage2Ms: detectionResult.stage2Time,
|
|
137
|
-
totalMs: detectionTime,
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
return buildErrorResponse('Failed to detect duplicates', error);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=detect-duplicates.js.map
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: get_merge_stats
|
|
3
|
-
*
|
|
4
|
-
* Returns statistics about memory merges for a project
|
|
5
|
-
*/
|
|
6
|
-
interface GetMergeStatsInput {
|
|
7
|
-
projectId: string;
|
|
8
|
-
}
|
|
9
|
-
interface MergeStats {
|
|
10
|
-
projectId: string;
|
|
11
|
-
totalMemories: number;
|
|
12
|
-
mergeableMemories: number;
|
|
13
|
-
mergedMemories: number;
|
|
14
|
-
canonicalMemories: number;
|
|
15
|
-
pendingProposals: number;
|
|
16
|
-
approvedMerges: number;
|
|
17
|
-
rejectedProposals: number;
|
|
18
|
-
tokensSaved: {
|
|
19
|
-
total: number;
|
|
20
|
-
formatted: string;
|
|
21
|
-
percentage: number;
|
|
22
|
-
};
|
|
23
|
-
averageMergeSize: number;
|
|
24
|
-
reversedMerges: number;
|
|
25
|
-
}
|
|
26
|
-
interface GetMergeStatsResponse {
|
|
27
|
-
ok: boolean;
|
|
28
|
-
message: string;
|
|
29
|
-
data?: MergeStats;
|
|
30
|
-
error?: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Handle get_merge_stats tool call
|
|
34
|
-
*
|
|
35
|
-
* Gathers merge statistics for a project
|
|
36
|
-
*/
|
|
37
|
-
export declare function handleGetMergeStats(input: GetMergeStatsInput): Promise<GetMergeStatsResponse>;
|
|
38
|
-
export {};
|
|
39
|
-
//# sourceMappingURL=get-stats.d.ts.map
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: get_merge_stats
|
|
3
|
-
*
|
|
4
|
-
* Returns statistics about memory merges for a project
|
|
5
|
-
*/
|
|
6
|
-
import { getDb } from '../../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../../db/schema.js';
|
|
8
|
-
import { createDatabaseClient } from '../../../core/storage/database.js';
|
|
9
|
-
import { eq } from 'drizzle-orm';
|
|
10
|
-
import { calculateProjectTokenSavings, formatTokenCount } from '../analytics/token-estimator.js';
|
|
11
|
-
/**
|
|
12
|
-
* Handle get_merge_stats tool call
|
|
13
|
-
*
|
|
14
|
-
* Gathers merge statistics for a project
|
|
15
|
-
*/
|
|
16
|
-
export async function handleGetMergeStats(input) {
|
|
17
|
-
try {
|
|
18
|
-
const { projectId } = input;
|
|
19
|
-
if (!projectId) {
|
|
20
|
-
return {
|
|
21
|
-
ok: false,
|
|
22
|
-
message: 'projectId is required',
|
|
23
|
-
error: 'projectId is required',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
const db = createDatabaseClient(await getDb());
|
|
27
|
-
const schema = await getSchema();
|
|
28
|
-
// Get all memories in project
|
|
29
|
-
const memories = await db
|
|
30
|
-
.select()
|
|
31
|
-
.from(schema.memories)
|
|
32
|
-
.where(eq(schema.memories.projectId, projectId));
|
|
33
|
-
// Get merge history
|
|
34
|
-
const mergeHistory = await db
|
|
35
|
-
.select()
|
|
36
|
-
.from(schema.memoryMergeHistory)
|
|
37
|
-
.where(eq(schema.memoryMergeHistory.projectId, projectId));
|
|
38
|
-
// Get proposals
|
|
39
|
-
const allProposals = await db
|
|
40
|
-
.select()
|
|
41
|
-
.from(schema.memoryMergeProposals)
|
|
42
|
-
.where(eq(schema.memoryMergeProposals.projectId, projectId));
|
|
43
|
-
// Calculate statistics
|
|
44
|
-
const totalMemories = memories.length;
|
|
45
|
-
const mergedMemories = memories.filter((m) => m.isMerged).length;
|
|
46
|
-
const canonicalMemories = memories.filter((m) => m.isCanonical).length;
|
|
47
|
-
const mergeableMemories = memories.filter((m) => m.isMergeable && !m.isMerged && m.isActive).length;
|
|
48
|
-
const pendingProposals = allProposals.filter((p) => p.status === 'pending').length;
|
|
49
|
-
const approvedMerges = allProposals.filter((p) => p.status === 'approved').length;
|
|
50
|
-
const rejectedProposals = allProposals.filter((p) => p.status === 'rejected').length;
|
|
51
|
-
const reversedMerges = mergeHistory.filter((m) => m.isReversed).length;
|
|
52
|
-
// Calculate token savings
|
|
53
|
-
const tokenStats = await calculateProjectTokenSavings(projectId);
|
|
54
|
-
// Calculate average merge size (memories per canonical)
|
|
55
|
-
const averageMergeSize = canonicalMemories > 0
|
|
56
|
-
? Math.round((mergedMemories + canonicalMemories) / canonicalMemories)
|
|
57
|
-
: 1;
|
|
58
|
-
return {
|
|
59
|
-
ok: true,
|
|
60
|
-
message: 'Merge statistics retrieved',
|
|
61
|
-
data: {
|
|
62
|
-
projectId,
|
|
63
|
-
totalMemories,
|
|
64
|
-
mergeableMemories,
|
|
65
|
-
mergedMemories,
|
|
66
|
-
canonicalMemories,
|
|
67
|
-
pendingProposals,
|
|
68
|
-
approvedMerges,
|
|
69
|
-
rejectedProposals,
|
|
70
|
-
tokensSaved: {
|
|
71
|
-
total: tokenStats.totalSaved,
|
|
72
|
-
formatted: formatTokenCount(tokenStats.totalSaved),
|
|
73
|
-
percentage: tokenStats.tokenSavingPercentage,
|
|
74
|
-
},
|
|
75
|
-
averageMergeSize,
|
|
76
|
-
reversedMerges,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
return {
|
|
82
|
-
ok: false,
|
|
83
|
-
message: 'Failed to get merge statistics',
|
|
84
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=get-stats.js.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: list_merge_proposals
|
|
3
|
-
*
|
|
4
|
-
* Lists pending merge proposals for user review
|
|
5
|
-
*/
|
|
6
|
-
interface ListProposalsInput {
|
|
7
|
-
projectId: string;
|
|
8
|
-
status?: 'pending' | 'approved' | 'rejected' | 'expired';
|
|
9
|
-
limit?: number;
|
|
10
|
-
}
|
|
11
|
-
interface ProposalSummary {
|
|
12
|
-
id: string;
|
|
13
|
-
projectId: string;
|
|
14
|
-
sourceMemoryIds: string[];
|
|
15
|
-
status: 'pending' | 'approved' | 'rejected' | 'expired';
|
|
16
|
-
confidenceLevel: 'high' | 'medium' | 'low';
|
|
17
|
-
similarityScore: number;
|
|
18
|
-
mergeReason: string;
|
|
19
|
-
createdAt: string;
|
|
20
|
-
conflictWarnings: string[];
|
|
21
|
-
}
|
|
22
|
-
interface ListProposalsResponse {
|
|
23
|
-
ok: boolean;
|
|
24
|
-
message: string;
|
|
25
|
-
data?: {
|
|
26
|
-
projectId: string;
|
|
27
|
-
count: number;
|
|
28
|
-
proposals: ProposalSummary[];
|
|
29
|
-
byStatus: {
|
|
30
|
-
pending: number;
|
|
31
|
-
approved: number;
|
|
32
|
-
rejected: number;
|
|
33
|
-
expired: number;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
error?: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Handle list_merge_proposals tool call
|
|
40
|
-
*
|
|
41
|
-
* Lists merge proposals that are waiting for user review
|
|
42
|
-
*/
|
|
43
|
-
export declare function handleListProposals(input: ListProposalsInput): Promise<ListProposalsResponse>;
|
|
44
|
-
export {};
|
|
45
|
-
//# sourceMappingURL=list-proposals.d.ts.map
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: list_merge_proposals
|
|
3
|
-
*
|
|
4
|
-
* Lists pending merge proposals for user review
|
|
5
|
-
*/
|
|
6
|
-
import { getDb } from '../../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../../db/schema.js';
|
|
8
|
-
import { createDatabaseClient } from '../../../core/storage/database.js';
|
|
9
|
-
import { eq, desc } from 'drizzle-orm';
|
|
10
|
-
/**
|
|
11
|
-
* Handle list_merge_proposals tool call
|
|
12
|
-
*
|
|
13
|
-
* Lists merge proposals that are waiting for user review
|
|
14
|
-
*/
|
|
15
|
-
export async function handleListProposals(input) {
|
|
16
|
-
try {
|
|
17
|
-
const { projectId, status, limit = 20 } = input;
|
|
18
|
-
if (!projectId) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
message: 'projectId is required',
|
|
22
|
-
error: 'projectId is required',
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const db = createDatabaseClient(await getDb());
|
|
26
|
-
const schema = await getSchema();
|
|
27
|
-
// Build query
|
|
28
|
-
let query = db
|
|
29
|
-
.select()
|
|
30
|
-
.from(schema.memoryMergeProposals)
|
|
31
|
-
.where(eq(schema.memoryMergeProposals.projectId, projectId));
|
|
32
|
-
// Filter by status if specified
|
|
33
|
-
if (status) {
|
|
34
|
-
query = query.where(eq(schema.memoryMergeProposals.status, status));
|
|
35
|
-
}
|
|
36
|
-
// Order by creation date (newest first)
|
|
37
|
-
query = query.orderBy(desc(schema.memoryMergeProposals.createdAt));
|
|
38
|
-
// Limit results
|
|
39
|
-
query = query.limit(limit);
|
|
40
|
-
const proposals = await query;
|
|
41
|
-
// Count by status for the project
|
|
42
|
-
const allProposals = await db
|
|
43
|
-
.select()
|
|
44
|
-
.from(schema.memoryMergeProposals)
|
|
45
|
-
.where(eq(schema.memoryMergeProposals.projectId, projectId));
|
|
46
|
-
const byStatus = {
|
|
47
|
-
pending: allProposals.filter((p) => p.status === 'pending').length,
|
|
48
|
-
approved: allProposals.filter((p) => p.status === 'approved').length,
|
|
49
|
-
rejected: allProposals.filter((p) => p.status === 'rejected').length,
|
|
50
|
-
expired: allProposals.filter((p) => p.status === 'expired').length,
|
|
51
|
-
};
|
|
52
|
-
// Format proposals
|
|
53
|
-
const formattedProposals = proposals.map((p) => ({
|
|
54
|
-
id: p.id,
|
|
55
|
-
projectId: p.projectId,
|
|
56
|
-
sourceMemoryIds: p.sourceMemoryIds || [],
|
|
57
|
-
status: p.status || 'pending',
|
|
58
|
-
confidenceLevel: p.confidenceLevel || 'medium',
|
|
59
|
-
similarityScore: typeof p.similarityScore === 'string' ? parseFloat(p.similarityScore) : p.similarityScore || 0,
|
|
60
|
-
mergeReason: p.mergeReason || '',
|
|
61
|
-
createdAt: p.createdAt?.toISOString() || '',
|
|
62
|
-
conflictWarnings: p.conflictWarnings || [],
|
|
63
|
-
}));
|
|
64
|
-
return {
|
|
65
|
-
ok: true,
|
|
66
|
-
message: `Found ${formattedProposals.length} proposals (${byStatus.pending} pending)`,
|
|
67
|
-
data: {
|
|
68
|
-
projectId,
|
|
69
|
-
count: formattedProposals.length,
|
|
70
|
-
proposals: formattedProposals,
|
|
71
|
-
byStatus,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
return {
|
|
77
|
-
ok: false,
|
|
78
|
-
message: 'Failed to list proposals',
|
|
79
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=list-proposals.js.map
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shows a preview of the merged result without executing the merge.
|
|
3
|
-
*/
|
|
4
|
-
interface PreviewMergeInput {
|
|
5
|
-
proposalId: string;
|
|
6
|
-
}
|
|
7
|
-
interface PreviewMergeResponse {
|
|
8
|
-
ok: boolean;
|
|
9
|
-
message: string;
|
|
10
|
-
data?: {
|
|
11
|
-
proposalId: string;
|
|
12
|
-
sourceMemories: Array<{
|
|
13
|
-
id: string;
|
|
14
|
-
type: string;
|
|
15
|
-
content: string;
|
|
16
|
-
summary: string | null;
|
|
17
|
-
tags: string[];
|
|
18
|
-
createdAt: string;
|
|
19
|
-
}>;
|
|
20
|
-
mergedResult: {
|
|
21
|
-
content: string;
|
|
22
|
-
summary: string | null;
|
|
23
|
-
tags: string[];
|
|
24
|
-
metadata: Record<string, unknown>;
|
|
25
|
-
};
|
|
26
|
-
analysis: {
|
|
27
|
-
mergeReason: string;
|
|
28
|
-
conflictWarnings: string[];
|
|
29
|
-
savedTokens: number;
|
|
30
|
-
savedPercentage: number;
|
|
31
|
-
similarityScore: number;
|
|
32
|
-
confidenceLevel: string;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
error?: string;
|
|
36
|
-
}
|
|
37
|
-
export declare function handlePreviewMerge(input: PreviewMergeInput): Promise<PreviewMergeResponse>;
|
|
38
|
-
export {};
|
|
39
|
-
//# sourceMappingURL=preview-merge.d.ts.map
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shows a preview of the merged result without executing the merge.
|
|
3
|
-
*/
|
|
4
|
-
import { getDb } from '../../../db/index.js';
|
|
5
|
-
import { getSchema } from '../../../db/schema.js';
|
|
6
|
-
import { createDatabaseClient } from '../../../core/storage/database.js';
|
|
7
|
-
import { eq } from 'drizzle-orm';
|
|
8
|
-
import { estimateMergeSavingsPreview } from '../analytics/token-estimator.js';
|
|
9
|
-
import { mergeMemories } from '../strategies/merge-strategies.js';
|
|
10
|
-
export async function handlePreviewMerge(input) {
|
|
11
|
-
try {
|
|
12
|
-
const { proposalId } = input;
|
|
13
|
-
if (!proposalId) {
|
|
14
|
-
return {
|
|
15
|
-
ok: false,
|
|
16
|
-
message: 'proposalId is required',
|
|
17
|
-
error: 'proposalId is required',
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const db = createDatabaseClient(await getDb());
|
|
21
|
-
const schema = await getSchema();
|
|
22
|
-
// Load proposal
|
|
23
|
-
const [proposal] = await db
|
|
24
|
-
.select()
|
|
25
|
-
.from(schema.memoryMergeProposals)
|
|
26
|
-
.where(eq(schema.memoryMergeProposals.id, proposalId));
|
|
27
|
-
if (!proposal) {
|
|
28
|
-
return {
|
|
29
|
-
ok: false,
|
|
30
|
-
message: 'Proposal not found',
|
|
31
|
-
error: `Proposal ${proposalId} not found`,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
// Load source memories
|
|
35
|
-
const sourceIds = proposal.sourceMemoryIds || [];
|
|
36
|
-
const sourceMemories = [];
|
|
37
|
-
for (const id of sourceIds) {
|
|
38
|
-
const [memory] = await db.select().from(schema.memories).where(eq(schema.memories.id, id));
|
|
39
|
-
if (memory) {
|
|
40
|
-
sourceMemories.push(memory);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (sourceMemories.length === 0) {
|
|
44
|
-
return {
|
|
45
|
-
ok: false,
|
|
46
|
-
message: 'No source memories found',
|
|
47
|
-
error: 'Could not load source memories',
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// Regenerate merged result from source memories (should match proposal)
|
|
51
|
-
const merged = mergeMemories(sourceMemories);
|
|
52
|
-
// Calculate token savings
|
|
53
|
-
const savings = estimateMergeSavingsPreview(sourceMemories, merged);
|
|
54
|
-
// Format response
|
|
55
|
-
return {
|
|
56
|
-
ok: true,
|
|
57
|
-
message: 'Merge preview generated',
|
|
58
|
-
data: {
|
|
59
|
-
proposalId,
|
|
60
|
-
sourceMemories: sourceMemories.map((m) => ({
|
|
61
|
-
id: m.id,
|
|
62
|
-
type: m.type,
|
|
63
|
-
content: m.content,
|
|
64
|
-
summary: m.summary,
|
|
65
|
-
tags: m.tags || [],
|
|
66
|
-
createdAt: m.createdAt?.toISOString() || '',
|
|
67
|
-
})),
|
|
68
|
-
mergedResult: {
|
|
69
|
-
content: merged.content,
|
|
70
|
-
summary: merged.summary,
|
|
71
|
-
tags: merged.tags,
|
|
72
|
-
metadata: merged.metadata,
|
|
73
|
-
},
|
|
74
|
-
analysis: {
|
|
75
|
-
mergeReason: merged.mergeReason,
|
|
76
|
-
conflictWarnings: merged.conflictWarnings,
|
|
77
|
-
savedTokens: savings.savedTokens,
|
|
78
|
-
savedPercentage: savings.savedPercentage,
|
|
79
|
-
similarityScore: proposal.similarityScore || 0,
|
|
80
|
-
confidenceLevel: proposal.confidenceLevel || 'unknown',
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
return {
|
|
87
|
-
ok: false,
|
|
88
|
-
message: 'Failed to preview merge',
|
|
89
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=preview-merge.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: reject_merge
|
|
3
|
-
*
|
|
4
|
-
* Rejects a merge proposal without executing it
|
|
5
|
-
*/
|
|
6
|
-
interface RejectMergeInput {
|
|
7
|
-
proposalId: string;
|
|
8
|
-
reviewNotes?: string;
|
|
9
|
-
}
|
|
10
|
-
interface RejectMergeResponse {
|
|
11
|
-
ok: boolean;
|
|
12
|
-
message: string;
|
|
13
|
-
data?: {
|
|
14
|
-
proposalId: string;
|
|
15
|
-
previousStatus: string;
|
|
16
|
-
newStatus: string;
|
|
17
|
-
rejectedAt: string;
|
|
18
|
-
};
|
|
19
|
-
error?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Handle reject_merge tool call
|
|
23
|
-
*
|
|
24
|
-
* Marks a merge proposal as rejected without executing it
|
|
25
|
-
*/
|
|
26
|
-
export declare function handleRejectMerge(input: RejectMergeInput): Promise<RejectMergeResponse>;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=reject-merge.d.ts.map
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool: reject_merge
|
|
3
|
-
*
|
|
4
|
-
* Rejects a merge proposal without executing it
|
|
5
|
-
*/
|
|
6
|
-
import { getDb } from '../../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../../db/schema.js';
|
|
8
|
-
import { createDatabaseClient } from '../../../core/storage/database.js';
|
|
9
|
-
import { eq } from 'drizzle-orm';
|
|
10
|
-
/**
|
|
11
|
-
* Handle reject_merge tool call
|
|
12
|
-
*
|
|
13
|
-
* Marks a merge proposal as rejected without executing it
|
|
14
|
-
*/
|
|
15
|
-
export async function handleRejectMerge(input) {
|
|
16
|
-
try {
|
|
17
|
-
const { proposalId, reviewNotes } = input;
|
|
18
|
-
if (!proposalId) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
message: 'proposalId is required',
|
|
22
|
-
error: 'proposalId is required',
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const db = createDatabaseClient(await getDb());
|
|
26
|
-
const schema = await getSchema();
|
|
27
|
-
// Load proposal
|
|
28
|
-
const [proposal] = await db
|
|
29
|
-
.select()
|
|
30
|
-
.from(schema.memoryMergeProposals)
|
|
31
|
-
.where(eq(schema.memoryMergeProposals.id, proposalId));
|
|
32
|
-
if (!proposal) {
|
|
33
|
-
return {
|
|
34
|
-
ok: false,
|
|
35
|
-
message: 'Proposal not found',
|
|
36
|
-
error: `Proposal ${proposalId} not found`,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const previousStatus = proposal.status;
|
|
40
|
-
// Update status to rejected
|
|
41
|
-
const now = new Date();
|
|
42
|
-
await db
|
|
43
|
-
.update(schema.memoryMergeProposals)
|
|
44
|
-
.set({
|
|
45
|
-
status: 'rejected',
|
|
46
|
-
reviewedAt: now,
|
|
47
|
-
reviewNotes: reviewNotes || `Rejected without comment`,
|
|
48
|
-
})
|
|
49
|
-
.where(eq(schema.memoryMergeProposals.id, proposalId));
|
|
50
|
-
return {
|
|
51
|
-
ok: true,
|
|
52
|
-
message: `Merge proposal rejected`,
|
|
53
|
-
data: {
|
|
54
|
-
proposalId,
|
|
55
|
-
previousStatus: previousStatus || 'unknown',
|
|
56
|
-
newStatus: 'rejected',
|
|
57
|
-
rejectedAt: now.toISOString(),
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
return {
|
|
63
|
-
ok: false,
|
|
64
|
-
message: 'Failed to reject merge',
|
|
65
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=reject-merge.js.map
|