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,385 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Temporal Parser
|
|
3
|
-
* Parses temporal expressions and creates time-based relationships between memories
|
|
4
|
-
* Handles absolute dates, relative times, durations, and frequencies
|
|
5
|
-
*/
|
|
6
|
-
import { createAssociation } from '../../core/associations.js';
|
|
7
|
-
import { getDb } from '../../db/index.js';
|
|
8
|
-
import { getSchema } from '../../db/schema.js';
|
|
9
|
-
import { eq } from 'drizzle-orm';
|
|
10
|
-
import { logger } from '../../core/logger.js';
|
|
11
|
-
// Regex patterns for temporal expression detection
|
|
12
|
-
const PATTERNS = {
|
|
13
|
-
// ISO dates: 2024-01-05, 2024-01-05T10:30:00Z
|
|
14
|
-
isoDate: /\b(\d{4}-\d{2}-\d{2})(?:T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z?)?\b/g,
|
|
15
|
-
// Natural dates: January 5, Jan 5, 1/5/2024, 01-05-2024
|
|
16
|
-
naturalDate: /\b(?:January|February|March|April|May|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2}(?:,?\s+\d{4})?\b/gi,
|
|
17
|
-
// Relative times: yesterday, today, tomorrow, last week, next month
|
|
18
|
-
relativeTime: /\b(?:yesterday|today|tomorrow|last\s+(?:week|month|year|day|hour)|next\s+(?:week|month|year|day|hour))\b/gi,
|
|
19
|
-
// Time offsets: 3 days ago, in 2 weeks, 5 minutes ago
|
|
20
|
-
timeOffset: /\b(\d+)\s+(?:days?|weeks?|months?|years?|hours?|minutes?|seconds?)\s+(?:ago|from now|in the past|in the future)\b/gi,
|
|
21
|
-
// Durations: for 2 hours, over 3 weeks, during 5 days
|
|
22
|
-
duration: /\b(?:for|during|over)\s+(\d+)\s+(?:days?|weeks?|months?|years?|hours?|minutes?|seconds?)\b/gi,
|
|
23
|
-
// Frequencies: daily, weekly, monthly, every week, once a month
|
|
24
|
-
frequency: /\b(?:daily|weekly|monthly|yearly|hourly|every\s+(?:day|week|month|year)|once\s+a\s+(?:day|week|month|year))\b/gi,
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Parse temporal expressions from content
|
|
28
|
-
*/
|
|
29
|
-
export async function parseTemporalFacts(content, referenceDate = new Date()) {
|
|
30
|
-
const facts = [];
|
|
31
|
-
// Parse absolute dates (ISO and natural format)
|
|
32
|
-
const isoDates = Array.from(content.matchAll(PATTERNS.isoDate));
|
|
33
|
-
for (const match of isoDates) {
|
|
34
|
-
try {
|
|
35
|
-
const date = new Date(match[0]);
|
|
36
|
-
if (!isNaN(date.getTime())) {
|
|
37
|
-
facts.push({
|
|
38
|
-
type: 'absolute',
|
|
39
|
-
value: match[0],
|
|
40
|
-
parsed: { start: date, end: date },
|
|
41
|
-
confidence: 0.95,
|
|
42
|
-
context: extractContext(content, match.index || 0),
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// Invalid date format
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const naturalDates = Array.from(content.matchAll(PATTERNS.naturalDate));
|
|
51
|
-
for (const match of naturalDates) {
|
|
52
|
-
try {
|
|
53
|
-
const date = parseNaturalDate(match[0], referenceDate);
|
|
54
|
-
if (date) {
|
|
55
|
-
facts.push({
|
|
56
|
-
type: 'absolute',
|
|
57
|
-
value: match[0],
|
|
58
|
-
parsed: { start: date, end: date },
|
|
59
|
-
confidence: 0.85,
|
|
60
|
-
context: extractContext(content, match.index || 0),
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// Invalid date format
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// Parse relative times
|
|
69
|
-
const relativeTimes = Array.from(content.matchAll(PATTERNS.relativeTime));
|
|
70
|
-
for (const match of relativeTimes) {
|
|
71
|
-
const date = parseRelativeTime(match[0], referenceDate);
|
|
72
|
-
if (date) {
|
|
73
|
-
facts.push({
|
|
74
|
-
type: 'relative',
|
|
75
|
-
value: match[0],
|
|
76
|
-
parsed: { start: date, end: date },
|
|
77
|
-
confidence: 0.9,
|
|
78
|
-
context: extractContext(content, match.index || 0),
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// Parse time offsets (3 days ago, in 2 weeks, etc.)
|
|
83
|
-
const timeOffsets = Array.from(content.matchAll(PATTERNS.timeOffset));
|
|
84
|
-
for (const match of timeOffsets) {
|
|
85
|
-
const amount = parseInt(match[1]);
|
|
86
|
-
const unit = match[0].split(/\s+/)[1].toLowerCase();
|
|
87
|
-
const date = calculateDateOffset(referenceDate, amount, unit, match[0]);
|
|
88
|
-
if (date) {
|
|
89
|
-
facts.push({
|
|
90
|
-
type: 'relative',
|
|
91
|
-
value: match[0],
|
|
92
|
-
parsed: { start: date, end: date },
|
|
93
|
-
confidence: 0.85,
|
|
94
|
-
context: extractContext(content, match.index || 0),
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Parse durations
|
|
99
|
-
const durations = Array.from(content.matchAll(PATTERNS.duration));
|
|
100
|
-
for (const match of durations) {
|
|
101
|
-
const amount = parseInt(match[1]);
|
|
102
|
-
const unit = match[0].split(/\s+/)[2].toLowerCase();
|
|
103
|
-
const durationMs = calculateDurationMs(amount, unit);
|
|
104
|
-
if (durationMs > 0) {
|
|
105
|
-
facts.push({
|
|
106
|
-
type: 'duration',
|
|
107
|
-
value: match[0],
|
|
108
|
-
parsed: { duration: durationMs },
|
|
109
|
-
confidence: 0.8,
|
|
110
|
-
context: extractContext(content, match.index || 0),
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Parse frequencies
|
|
115
|
-
const frequencies = Array.from(content.matchAll(PATTERNS.frequency));
|
|
116
|
-
for (const match of frequencies) {
|
|
117
|
-
facts.push({
|
|
118
|
-
type: 'frequency',
|
|
119
|
-
value: match[0],
|
|
120
|
-
parsed: { frequency: match[0].toLowerCase() },
|
|
121
|
-
confidence: 0.85,
|
|
122
|
-
context: extractContext(content, match.index || 0),
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
return facts;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Link temporal relations between memories
|
|
129
|
-
*/
|
|
130
|
-
export async function linkTemporalRelations(memoryId, facts) {
|
|
131
|
-
const relations = [];
|
|
132
|
-
if (facts.length === 0)
|
|
133
|
-
return relations;
|
|
134
|
-
try {
|
|
135
|
-
const db = await getDb();
|
|
136
|
-
const schema = await getSchema();
|
|
137
|
-
// Get the target memory
|
|
138
|
-
const targetMemories = await db
|
|
139
|
-
.select()
|
|
140
|
-
.from(schema.memories)
|
|
141
|
-
.where(eq(schema.memories.id, memoryId))
|
|
142
|
-
.limit(1);
|
|
143
|
-
if (targetMemories.length === 0)
|
|
144
|
-
return relations;
|
|
145
|
-
const targetMemory = targetMemories[0];
|
|
146
|
-
// Find related memories with temporal overlaps
|
|
147
|
-
const allMemories = await db
|
|
148
|
-
.select()
|
|
149
|
-
.from(schema.memories)
|
|
150
|
-
.where(eq(schema.memories.projectId, targetMemory.projectId));
|
|
151
|
-
for (const fact of facts) {
|
|
152
|
-
if (!fact.parsed.start)
|
|
153
|
-
continue;
|
|
154
|
-
for (const otherMemory of allMemories) {
|
|
155
|
-
if (otherMemory.id === memoryId)
|
|
156
|
-
continue;
|
|
157
|
-
const relation = analyzeTemporalRelation(fact, targetMemory, otherMemory);
|
|
158
|
-
if (relation) {
|
|
159
|
-
relations.push(relation);
|
|
160
|
-
// Create association for temporal relationships
|
|
161
|
-
if (relation.type === 'supersedes') {
|
|
162
|
-
await createAssociation(memoryId, otherMemory.id, 'supersedes', relation.confidence);
|
|
163
|
-
}
|
|
164
|
-
else if (relation.type === 'contradicts') {
|
|
165
|
-
await createAssociation(memoryId, otherMemory.id, 'contradicts', relation.confidence);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// Update memory validity dates if we have absolute dates
|
|
171
|
-
const absoluteFacts = facts.filter((f) => f.type === 'absolute');
|
|
172
|
-
if (absoluteFacts.length > 0) {
|
|
173
|
-
const dates = absoluteFacts
|
|
174
|
-
.map((f) => f.parsed.start)
|
|
175
|
-
.filter((d) => d);
|
|
176
|
-
if (dates.length > 0) {
|
|
177
|
-
const minDate = new Date(Math.min(...dates.map((d) => d.getTime())));
|
|
178
|
-
const maxDate = new Date(Math.max(...dates.map((d) => d.getTime())));
|
|
179
|
-
await db
|
|
180
|
-
.update(schema.memories)
|
|
181
|
-
.set({
|
|
182
|
-
validFrom: minDate,
|
|
183
|
-
validTo: maxDate,
|
|
184
|
-
updatedAt: new Date(),
|
|
185
|
-
})
|
|
186
|
-
.where(eq(schema.memories.id, memoryId));
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
logger.debug('Temporal relations linked', {
|
|
190
|
-
memoryId,
|
|
191
|
-
factCount: facts.length,
|
|
192
|
-
relationCount: relations.length,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
logger.error('Error linking temporal relations', error);
|
|
197
|
-
}
|
|
198
|
-
return relations;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Analyze temporal relationship between two memories
|
|
202
|
-
*/
|
|
203
|
-
function analyzeTemporalRelation(fact, targetMemory, otherMemory) {
|
|
204
|
-
if (!fact.parsed.start || !otherMemory.validFrom)
|
|
205
|
-
return null;
|
|
206
|
-
const factDate = fact.parsed.start;
|
|
207
|
-
const otherStart = new Date(otherMemory.validFrom);
|
|
208
|
-
const otherEnd = otherMemory.validTo ? new Date(otherMemory.validTo) : otherStart;
|
|
209
|
-
// Determine temporal relationship
|
|
210
|
-
if (factDate < otherStart) {
|
|
211
|
-
return {
|
|
212
|
-
type: 'before',
|
|
213
|
-
targetMemoryId: otherMemory.id,
|
|
214
|
-
confidence: 0.9,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
if (factDate > otherEnd) {
|
|
218
|
-
return {
|
|
219
|
-
type: 'after',
|
|
220
|
-
targetMemoryId: otherMemory.id,
|
|
221
|
-
confidence: 0.9,
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
// Check for overlaps or containment
|
|
225
|
-
if (factDate >= otherStart && factDate <= otherEnd) {
|
|
226
|
-
// Check if this memory supersedes or contradicts
|
|
227
|
-
const contentSimilarity = calculateContentSimilarity(targetMemory.content, otherMemory.content);
|
|
228
|
-
if (contentSimilarity > 0.7) {
|
|
229
|
-
// High similarity with different dates suggests supersession or contradiction
|
|
230
|
-
return {
|
|
231
|
-
type: targetMemory.createdAt > otherMemory.createdAt ? 'supersedes' : 'contradicts',
|
|
232
|
-
targetMemoryId: otherMemory.id,
|
|
233
|
-
confidence: contentSimilarity * 0.9,
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
return {
|
|
237
|
-
type: 'overlaps',
|
|
238
|
-
targetMemoryId: otherMemory.id,
|
|
239
|
-
confidence: 0.7,
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
return null;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Parse natural date formats (e.g., "January 5", "Jan 5, 2024")
|
|
246
|
-
*/
|
|
247
|
-
function parseNaturalDate(dateStr, referenceDate) {
|
|
248
|
-
try {
|
|
249
|
-
// Handle "Month Day, Year" or "Month Day"
|
|
250
|
-
const date = new Date(dateStr);
|
|
251
|
-
if (!isNaN(date.getTime())) {
|
|
252
|
-
// If year is missing, use reference year
|
|
253
|
-
if (!dateStr.includes(date.getFullYear().toString())) {
|
|
254
|
-
date.setFullYear(referenceDate.getFullYear());
|
|
255
|
-
}
|
|
256
|
-
return date;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Parse relative time expressions
|
|
266
|
-
*/
|
|
267
|
-
function parseRelativeTime(timeStr, referenceDate) {
|
|
268
|
-
const str = timeStr.toLowerCase();
|
|
269
|
-
const date = new Date(referenceDate);
|
|
270
|
-
if (str === 'yesterday') {
|
|
271
|
-
date.setDate(date.getDate() - 1);
|
|
272
|
-
return date;
|
|
273
|
-
}
|
|
274
|
-
if (str === 'today') {
|
|
275
|
-
return date;
|
|
276
|
-
}
|
|
277
|
-
if (str === 'tomorrow') {
|
|
278
|
-
date.setDate(date.getDate() + 1);
|
|
279
|
-
return date;
|
|
280
|
-
}
|
|
281
|
-
if (str.includes('last week')) {
|
|
282
|
-
date.setDate(date.getDate() - 7);
|
|
283
|
-
return date;
|
|
284
|
-
}
|
|
285
|
-
if (str.includes('next week')) {
|
|
286
|
-
date.setDate(date.getDate() + 7);
|
|
287
|
-
return date;
|
|
288
|
-
}
|
|
289
|
-
if (str.includes('last month')) {
|
|
290
|
-
date.setMonth(date.getMonth() - 1);
|
|
291
|
-
return date;
|
|
292
|
-
}
|
|
293
|
-
if (str.includes('next month')) {
|
|
294
|
-
date.setMonth(date.getMonth() + 1);
|
|
295
|
-
return date;
|
|
296
|
-
}
|
|
297
|
-
if (str.includes('last year')) {
|
|
298
|
-
date.setFullYear(date.getFullYear() - 1);
|
|
299
|
-
return date;
|
|
300
|
-
}
|
|
301
|
-
if (str.includes('next year')) {
|
|
302
|
-
date.setFullYear(date.getFullYear() + 1);
|
|
303
|
-
return date;
|
|
304
|
-
}
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Calculate date offset (e.g., "3 days ago")
|
|
309
|
-
*/
|
|
310
|
-
function calculateDateOffset(referenceDate, amount, unit, fullText) {
|
|
311
|
-
const date = new Date(referenceDate);
|
|
312
|
-
const isNegative = fullText.includes('ago') || fullText.includes('past');
|
|
313
|
-
const multiplier = isNegative ? -1 : 1;
|
|
314
|
-
const unitLower = unit.replace(/s$/, '').toLowerCase();
|
|
315
|
-
switch (unitLower) {
|
|
316
|
-
case 'day':
|
|
317
|
-
date.setDate(date.getDate() + multiplier * amount);
|
|
318
|
-
break;
|
|
319
|
-
case 'week':
|
|
320
|
-
date.setDate(date.getDate() + multiplier * amount * 7);
|
|
321
|
-
break;
|
|
322
|
-
case 'month':
|
|
323
|
-
date.setMonth(date.getMonth() + multiplier * amount);
|
|
324
|
-
break;
|
|
325
|
-
case 'year':
|
|
326
|
-
date.setFullYear(date.getFullYear() + multiplier * amount);
|
|
327
|
-
break;
|
|
328
|
-
case 'hour':
|
|
329
|
-
date.setHours(date.getHours() + multiplier * amount);
|
|
330
|
-
break;
|
|
331
|
-
case 'minute':
|
|
332
|
-
date.setMinutes(date.getMinutes() + multiplier * amount);
|
|
333
|
-
break;
|
|
334
|
-
default:
|
|
335
|
-
return null;
|
|
336
|
-
}
|
|
337
|
-
return date;
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Calculate duration in milliseconds
|
|
341
|
-
*/
|
|
342
|
-
function calculateDurationMs(amount, unit) {
|
|
343
|
-
const unitLower = unit.replace(/s$/, '').toLowerCase();
|
|
344
|
-
switch (unitLower) {
|
|
345
|
-
case 'day':
|
|
346
|
-
return amount * 24 * 60 * 60 * 1000;
|
|
347
|
-
case 'week':
|
|
348
|
-
return amount * 7 * 24 * 60 * 60 * 1000;
|
|
349
|
-
case 'month':
|
|
350
|
-
return amount * 30 * 24 * 60 * 60 * 1000;
|
|
351
|
-
case 'year':
|
|
352
|
-
return amount * 365 * 24 * 60 * 60 * 1000;
|
|
353
|
-
case 'hour':
|
|
354
|
-
return amount * 60 * 60 * 1000;
|
|
355
|
-
case 'minute':
|
|
356
|
-
return amount * 60 * 1000;
|
|
357
|
-
case 'second':
|
|
358
|
-
return amount * 1000;
|
|
359
|
-
default:
|
|
360
|
-
return 0;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Extract surrounding context for temporal expression
|
|
365
|
-
*/
|
|
366
|
-
function extractContext(content, index, contextLength = 50) {
|
|
367
|
-
const start = Math.max(0, index - contextLength);
|
|
368
|
-
const end = Math.min(content.length, index + contextLength);
|
|
369
|
-
return content.substring(start, end).trim();
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* Simple content similarity calculation (token overlap)
|
|
373
|
-
*/
|
|
374
|
-
function calculateContentSimilarity(content1, content2) {
|
|
375
|
-
const tokens1 = new Set(content1.toLowerCase().split(/\s+/));
|
|
376
|
-
const tokens2 = new Set(content2.toLowerCase().split(/\s+/));
|
|
377
|
-
let overlap = 0;
|
|
378
|
-
for (const token of tokens1) {
|
|
379
|
-
if (tokens2.has(token))
|
|
380
|
-
overlap++;
|
|
381
|
-
}
|
|
382
|
-
const totalUnique = tokens1.size + tokens2.size - overlap;
|
|
383
|
-
return totalUnique > 0 ? overlap / totalUnique : 0;
|
|
384
|
-
}
|
|
385
|
-
//# sourceMappingURL=temporal-parser.js.map
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export interface MemorySignals {
|
|
2
|
-
explicitTriggers: string[];
|
|
3
|
-
implicit: {
|
|
4
|
-
decision: boolean;
|
|
5
|
-
correction: boolean;
|
|
6
|
-
preference: boolean;
|
|
7
|
-
workflowRule: boolean;
|
|
8
|
-
lesson: boolean;
|
|
9
|
-
note: boolean;
|
|
10
|
-
important: boolean;
|
|
11
|
-
hack: boolean;
|
|
12
|
-
why: boolean;
|
|
13
|
-
todo: boolean;
|
|
14
|
-
fixme: boolean;
|
|
15
|
-
};
|
|
16
|
-
suggestedType: 'observation' | 'fact' | 'decision' | 'context' | 'preference' | 'task';
|
|
17
|
-
priority: 'normal' | 'high';
|
|
18
|
-
confidence: 'certain' | 'speculative' | 'inferred';
|
|
19
|
-
}
|
|
20
|
-
export declare function detectMemorySignals(content: string): MemorySignals;
|
|
21
|
-
//# sourceMappingURL=trigger-detector.d.ts.map
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
const EXPLICIT_TRIGGER_PATTERNS = [
|
|
2
|
-
{ label: 'remember', regex: /\bremember\b/i },
|
|
3
|
-
{ label: 'dont-forget', regex: /\b(?:don'?t\s+forget|do\s+not\s+forget)\b/i },
|
|
4
|
-
{ label: 'keep-in-mind', regex: /\bkeep\s+in\s+mind\b/i },
|
|
5
|
-
{ label: 'note-that', regex: /\bnote\s+that\b/i },
|
|
6
|
-
{ label: 'from-now-on', regex: /\bfrom\s+now\s+on\b/i },
|
|
7
|
-
{ label: 'going-forward', regex: /\bgoing\s+forward\b/i },
|
|
8
|
-
{ label: 'save-this', regex: /\bsave\s+this\b/i },
|
|
9
|
-
{ label: 'log-this', regex: /\blog\s+this\b/i },
|
|
10
|
-
{ label: 'important', regex: /\bimportant\s*:/i },
|
|
11
|
-
// New: Rationale comment triggers
|
|
12
|
-
{ label: 'NOTE', regex: /NOTE:/i },
|
|
13
|
-
{ label: 'IMPORTANT', regex: /IMPORTANT:/i },
|
|
14
|
-
{ label: 'HACK', regex: /HACK:/i },
|
|
15
|
-
{ label: 'WHY', regex: /WHY:/i },
|
|
16
|
-
{ label: 'TODO', regex: /TODO:/i },
|
|
17
|
-
{ label: 'FIXME', regex: /FIXME:/i },
|
|
18
|
-
{ label: 'XXX', regex: /XXX:/i },
|
|
19
|
-
{ label: 'DEPRECATED', regex: /DEPRECATED:/i },
|
|
20
|
-
];
|
|
21
|
-
export function detectMemorySignals(content) {
|
|
22
|
-
const text = content.trim();
|
|
23
|
-
const explicitTriggers = EXPLICIT_TRIGGER_PATTERNS.filter((p) => p.regex.test(text)).map((p) => p.label);
|
|
24
|
-
const implicit = {
|
|
25
|
-
decision: /\b(?:decided|choose|chose|going with|picked|selected|final decision)\b/i.test(text) ||
|
|
26
|
-
/\b(?:x over y|option\s+[a-z0-9]+\s+over)\b/i.test(text),
|
|
27
|
-
correction: /\b(?:no,?\s+i\s+meant|actually,?\s+that'?s\s+not|correction:|i\s+meant)\b/i.test(text),
|
|
28
|
-
preference: /\b(?:i\s+like|i\s+don'?t\s+like|i\s+hate|my\s+preference\s+is|prefer)\b/i.test(text) ||
|
|
29
|
-
/\b(?:always|never)\b/i.test(text),
|
|
30
|
-
workflowRule: /\b(?:let'?s\s+always\s+do\s+it\s+this\s+way|standard\s+workflow|runbook)\b/i.test(text),
|
|
31
|
-
lesson: /\b(?:failed\s+because|lesson\s+learned|next\s+time|do\s+not\s+repeat|root\s+cause)\b/i.test(text),
|
|
32
|
-
// New: Rationale patterns from code comments
|
|
33
|
-
note: /NOTE:/i.test(text),
|
|
34
|
-
important: /IMPORTANT:/i.test(text),
|
|
35
|
-
hack: /HACK:/i.test(text),
|
|
36
|
-
why: /WHY:/i.test(text),
|
|
37
|
-
todo: /TODO:/i.test(text),
|
|
38
|
-
fixme: /FIXME:/i.test(text),
|
|
39
|
-
};
|
|
40
|
-
let suggestedType = 'observation';
|
|
41
|
-
// Priority order: decision > preference > lesson > workflowRule > rationale > fact
|
|
42
|
-
if (implicit.decision)
|
|
43
|
-
suggestedType = 'decision';
|
|
44
|
-
else if (implicit.preference)
|
|
45
|
-
suggestedType = 'preference';
|
|
46
|
-
else if (implicit.workflowRule || implicit.lesson)
|
|
47
|
-
suggestedType = 'context';
|
|
48
|
-
else if (implicit.todo)
|
|
49
|
-
suggestedType = 'task';
|
|
50
|
-
else if (!implicit.decision && !implicit.preference && /\b(?:is|are|was|were|uses|has|have)\b/i.test(text)) {
|
|
51
|
-
suggestedType = 'fact';
|
|
52
|
-
}
|
|
53
|
-
// Override for specific rationale markers
|
|
54
|
-
if (implicit.note || implicit.important)
|
|
55
|
-
suggestedType = 'observation';
|
|
56
|
-
if (implicit.why)
|
|
57
|
-
suggestedType = 'context';
|
|
58
|
-
// Determine confidence based on signal strength
|
|
59
|
-
let confidence = 'certain';
|
|
60
|
-
if (implicit.note || implicit.todo)
|
|
61
|
-
confidence = 'speculative';
|
|
62
|
-
if (implicit.hack || implicit.fixme)
|
|
63
|
-
confidence = 'certain'; // Known issues are certain
|
|
64
|
-
const priority = explicitTriggers.length > 0 ||
|
|
65
|
-
implicit.correction ||
|
|
66
|
-
implicit.important ||
|
|
67
|
-
implicit.hack ||
|
|
68
|
-
implicit.fixme
|
|
69
|
-
? 'high'
|
|
70
|
-
: 'normal';
|
|
71
|
-
return {
|
|
72
|
-
explicitTriggers,
|
|
73
|
-
implicit,
|
|
74
|
-
suggestedType,
|
|
75
|
-
priority,
|
|
76
|
-
confidence,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=trigger-detector.js.map
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Write Gate Enforcement
|
|
3
|
-
* Validates memories before writing to ensure quality, security, and consistency
|
|
4
|
-
* Integrates secret detection, trigger detection, and content validation
|
|
5
|
-
*/
|
|
6
|
-
import { MemorySignals } from './trigger-detector.js';
|
|
7
|
-
export interface WriteGateResult {
|
|
8
|
-
allowed: boolean;
|
|
9
|
-
sanitized: boolean;
|
|
10
|
-
warnings: string[];
|
|
11
|
-
errors: string[];
|
|
12
|
-
metadata: {
|
|
13
|
-
secretsDetected: number;
|
|
14
|
-
signals: MemorySignals | null;
|
|
15
|
-
contradictions: {
|
|
16
|
-
found: boolean;
|
|
17
|
-
count: number;
|
|
18
|
-
};
|
|
19
|
-
temporalSupersession: {
|
|
20
|
-
count: number;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
sanitizedContent?: string;
|
|
24
|
-
}
|
|
25
|
-
export interface WriteGateOptions {
|
|
26
|
-
allowSecrets?: boolean;
|
|
27
|
-
minContentLength?: number;
|
|
28
|
-
maxContentLength?: number;
|
|
29
|
-
projectId?: string;
|
|
30
|
-
skipContradictionCheck?: boolean;
|
|
31
|
-
skipTemporalSupersession?: boolean;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Main write gate function - validates and sanitizes content before write
|
|
35
|
-
*/
|
|
36
|
-
export declare function enforceWriteGate(content: string, type: string, options?: WriteGateOptions): Promise<WriteGateResult>;
|
|
37
|
-
/**
|
|
38
|
-
* Quick validation without async operations
|
|
39
|
-
* Use for fast pre-check before full validation
|
|
40
|
-
*/
|
|
41
|
-
export declare function quickValidate(content: string): {
|
|
42
|
-
valid: boolean;
|
|
43
|
-
errors: string[];
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Sanitize content for storage
|
|
47
|
-
* Redacts secrets and normalizes whitespace
|
|
48
|
-
*/
|
|
49
|
-
export declare function sanitizeForStorage(content: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* Calculate a quality score for content (0-100)
|
|
52
|
-
*/
|
|
53
|
-
export declare function calculateContentQualityScore(content: string): number;
|
|
54
|
-
//# sourceMappingURL=write-gate.d.ts.map
|