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,328 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context Paging Service - Agent-controlled memory loading
|
|
3
|
-
* Allows agents to load/evict memories from working set
|
|
4
|
-
*/
|
|
5
|
-
import { eq, and } from 'drizzle-orm';
|
|
6
|
-
import { sql } from 'drizzle-orm';
|
|
7
|
-
import { getMemory } from '../memory/memories.js';
|
|
8
|
-
import { getDbClient } from '../lib/db-client.js';
|
|
9
|
-
/**
|
|
10
|
-
* Initialize or get a context session
|
|
11
|
-
* Simplified - just tracks what's loaded, not tokens (Claude manages its own context)
|
|
12
|
-
*/
|
|
13
|
-
export async function initializeContextSession(sessionId, projectId, userId) {
|
|
14
|
-
const { db, schema } = await getDbClient();
|
|
15
|
-
const { contextSessions } = schema;
|
|
16
|
-
// Check if session exists
|
|
17
|
-
const existing = await db
|
|
18
|
-
.select()
|
|
19
|
-
.from(contextSessions)
|
|
20
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
21
|
-
.limit(1);
|
|
22
|
-
if (existing.length === 0) {
|
|
23
|
-
await db.insert(contextSessions).values({
|
|
24
|
-
sessionId,
|
|
25
|
-
projectId: projectId,
|
|
26
|
-
userId: userId || null,
|
|
27
|
-
loadedMemoryIds: JSON.stringify([]),
|
|
28
|
-
tokenBudget: 8000,
|
|
29
|
-
tokensUsed: 0,
|
|
30
|
-
coreMemoryTokens: 0,
|
|
31
|
-
loadedMemoriesTokens: 0,
|
|
32
|
-
metadata: JSON.stringify({}),
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Load a memory into working set
|
|
38
|
-
*/
|
|
39
|
-
export async function loadMemoryToContext(sessionId, memoryId) {
|
|
40
|
-
const { db, schema } = await getDbClient();
|
|
41
|
-
const { contextSessions } = schema;
|
|
42
|
-
// Get session
|
|
43
|
-
const session = await db
|
|
44
|
-
.select()
|
|
45
|
-
.from(contextSessions)
|
|
46
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
47
|
-
.limit(1);
|
|
48
|
-
if (session.length === 0) {
|
|
49
|
-
return {
|
|
50
|
-
success: false,
|
|
51
|
-
message: `Session "${sessionId}" not found. Initialize session first.`,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const currentSession = session[0];
|
|
55
|
-
const loadedIds = currentSession.loadedMemoryIds || [];
|
|
56
|
-
// Check if already loaded
|
|
57
|
-
if (loadedIds.includes(memoryId)) {
|
|
58
|
-
return {
|
|
59
|
-
success: false,
|
|
60
|
-
message: `Memory "${memoryId}" is already in working set`,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
// Get memory
|
|
64
|
-
const memory = await getMemory(memoryId);
|
|
65
|
-
if (!memory) {
|
|
66
|
-
return {
|
|
67
|
-
success: false,
|
|
68
|
-
message: `Memory "${memoryId}" not found`,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
// Update session
|
|
72
|
-
const newLoadedIds = [...loadedIds, memoryId];
|
|
73
|
-
await db
|
|
74
|
-
.update(contextSessions)
|
|
75
|
-
.set({
|
|
76
|
-
loadedMemoryIds: newLoadedIds,
|
|
77
|
-
updatedAt: new Date(),
|
|
78
|
-
})
|
|
79
|
-
.where(eq(contextSessions.sessionId, sessionId));
|
|
80
|
-
// Also update memory's contextStatus to 'in-context'
|
|
81
|
-
await db
|
|
82
|
-
.update(schema.memories)
|
|
83
|
-
.set({
|
|
84
|
-
contextStatus: 'in-context',
|
|
85
|
-
})
|
|
86
|
-
.where(eq(schema.memories.id, memoryId));
|
|
87
|
-
return {
|
|
88
|
-
success: true,
|
|
89
|
-
memory: {
|
|
90
|
-
id: memory.id,
|
|
91
|
-
type: memory.type,
|
|
92
|
-
content: memory.content,
|
|
93
|
-
contentPreview: memory.content.substring(0, 200) + (memory.content.length > 200 ? '...' : ''),
|
|
94
|
-
loadedAt: new Date(),
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Evict a memory from working set
|
|
100
|
-
*/
|
|
101
|
-
export async function evictMemoryFromContext(sessionId, memoryId) {
|
|
102
|
-
const { db, schema } = await getDbClient();
|
|
103
|
-
const { contextSessions } = schema;
|
|
104
|
-
// Get session
|
|
105
|
-
const session = await db
|
|
106
|
-
.select()
|
|
107
|
-
.from(contextSessions)
|
|
108
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
109
|
-
.limit(1);
|
|
110
|
-
if (session.length === 0) {
|
|
111
|
-
return {
|
|
112
|
-
success: false,
|
|
113
|
-
message: `Session "${sessionId}" not found`,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
const currentSession = session[0];
|
|
117
|
-
const loadedIds = currentSession.loadedMemoryIds || [];
|
|
118
|
-
// Check if loaded
|
|
119
|
-
if (!loadedIds.includes(memoryId)) {
|
|
120
|
-
return {
|
|
121
|
-
success: false,
|
|
122
|
-
message: `Memory "${memoryId}" is not in working set`,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
// Update session
|
|
126
|
-
const newLoadedIds = loadedIds.filter((id) => id !== memoryId);
|
|
127
|
-
await db
|
|
128
|
-
.update(contextSessions)
|
|
129
|
-
.set({
|
|
130
|
-
loadedMemoryIds: newLoadedIds,
|
|
131
|
-
updatedAt: new Date(),
|
|
132
|
-
})
|
|
133
|
-
.where(eq(contextSessions.sessionId, sessionId));
|
|
134
|
-
// Also update memory's contextStatus to 'out-of-context'
|
|
135
|
-
await db
|
|
136
|
-
.update(schema.memories)
|
|
137
|
-
.set({
|
|
138
|
-
contextStatus: 'out-of-context',
|
|
139
|
-
})
|
|
140
|
-
.where(eq(schema.memories.id, memoryId));
|
|
141
|
-
return {
|
|
142
|
-
success: true,
|
|
143
|
-
message: `Memory "${memoryId}" removed from working set`,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* View all memories in working set
|
|
148
|
-
*/
|
|
149
|
-
export async function viewLoadedMemories(sessionId) {
|
|
150
|
-
const { db, schema } = await getDbClient();
|
|
151
|
-
const { contextSessions } = schema;
|
|
152
|
-
// Get session
|
|
153
|
-
const session = await db
|
|
154
|
-
.select()
|
|
155
|
-
.from(contextSessions)
|
|
156
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
157
|
-
.limit(1);
|
|
158
|
-
if (session.length === 0) {
|
|
159
|
-
return {
|
|
160
|
-
success: false,
|
|
161
|
-
memories: [],
|
|
162
|
-
count: 0,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
const currentSession = session[0];
|
|
166
|
-
const loadedIds = currentSession.loadedMemoryIds || [];
|
|
167
|
-
if (loadedIds.length === 0) {
|
|
168
|
-
return {
|
|
169
|
-
success: true,
|
|
170
|
-
memories: [],
|
|
171
|
-
count: 0,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
// Get all loaded memories
|
|
175
|
-
const memories = [];
|
|
176
|
-
for (const id of loadedIds) {
|
|
177
|
-
const memory = await getMemory(id);
|
|
178
|
-
if (memory) {
|
|
179
|
-
memories.push({
|
|
180
|
-
id: memory.id,
|
|
181
|
-
type: memory.type,
|
|
182
|
-
content: memory.content,
|
|
183
|
-
contentPreview: memory.content.substring(0, 200) + (memory.content.length > 200 ? '...' : ''),
|
|
184
|
-
loadedAt: currentSession.updatedAt,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
success: true,
|
|
190
|
-
memories,
|
|
191
|
-
count: memories.length,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Get context status - what's in your working set and what's available
|
|
196
|
-
*/
|
|
197
|
-
export async function getContextStatus(sessionId, projectId) {
|
|
198
|
-
const { db, schema } = await getDbClient();
|
|
199
|
-
const { contextSessions, memories, learnings } = schema;
|
|
200
|
-
// Get session
|
|
201
|
-
const session = await db
|
|
202
|
-
.select()
|
|
203
|
-
.from(contextSessions)
|
|
204
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
205
|
-
.limit(1);
|
|
206
|
-
if (session.length === 0) {
|
|
207
|
-
return {
|
|
208
|
-
success: false,
|
|
209
|
-
coreMemory: { sizeBytes: 0, maxBytes: 2048, usagePercent: 0 },
|
|
210
|
-
workingSet: { loadedCount: 0, loadedMemories: [] },
|
|
211
|
-
available: { totalMemories: 0, totalObservations: 0 },
|
|
212
|
-
note: "Session not found. Initialize session first.",
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
const currentSession = session[0];
|
|
216
|
-
// Get core memory stats
|
|
217
|
-
const { getCoreMemoryStats } = await import('../ingestion/core-memory.js');
|
|
218
|
-
const coreStats = await getCoreMemoryStats(projectId);
|
|
219
|
-
// Get loaded memories
|
|
220
|
-
const loadedIds = currentSession.loadedMemoryIds || [];
|
|
221
|
-
const loadedMemories = [];
|
|
222
|
-
for (const id of loadedIds) {
|
|
223
|
-
const memory = await getMemory(id);
|
|
224
|
-
if (memory) {
|
|
225
|
-
loadedMemories.push({
|
|
226
|
-
id: memory.id,
|
|
227
|
-
type: memory.type,
|
|
228
|
-
contentLength: memory.content.length,
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
// Get external context stats (counts)
|
|
233
|
-
const totalMemories = await db
|
|
234
|
-
.select()
|
|
235
|
-
.from(memories)
|
|
236
|
-
.where(eq(memories.projectId, projectId));
|
|
237
|
-
const totalObservations = await db
|
|
238
|
-
.select()
|
|
239
|
-
.from(learnings)
|
|
240
|
-
.where(eq(learnings.projectId, projectId));
|
|
241
|
-
return {
|
|
242
|
-
success: true,
|
|
243
|
-
coreMemory: {
|
|
244
|
-
sizeBytes: coreStats.totalBytes,
|
|
245
|
-
maxBytes: coreStats.maxBytes,
|
|
246
|
-
usagePercent: coreStats.usagePercent,
|
|
247
|
-
},
|
|
248
|
-
workingSet: {
|
|
249
|
-
loadedCount: loadedMemories.length,
|
|
250
|
-
loadedMemories,
|
|
251
|
-
},
|
|
252
|
-
available: {
|
|
253
|
-
totalMemories: totalMemories.length,
|
|
254
|
-
totalObservations: totalObservations.length,
|
|
255
|
-
},
|
|
256
|
-
note: "Claude manages its own context and token limits. This shows what memories you've loaded into your working set.",
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Clear all loaded memories from working set
|
|
261
|
-
*/
|
|
262
|
-
export async function clearLoadedMemories(sessionId) {
|
|
263
|
-
const { db, schema } = await getDbClient();
|
|
264
|
-
const { contextSessions } = schema;
|
|
265
|
-
await db
|
|
266
|
-
.update(contextSessions)
|
|
267
|
-
.set({
|
|
268
|
-
loadedMemoryIds: [],
|
|
269
|
-
updatedAt: new Date(),
|
|
270
|
-
})
|
|
271
|
-
.where(eq(contextSessions.sessionId, sessionId));
|
|
272
|
-
return {
|
|
273
|
-
success: true,
|
|
274
|
-
message: 'All memories cleared from working set',
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Get all memories currently marked as in-context for a session
|
|
279
|
-
*/
|
|
280
|
-
export async function getInContextMemories(sessionId) {
|
|
281
|
-
const { db, schema } = await getDbClient();
|
|
282
|
-
const { contextSessions } = schema;
|
|
283
|
-
// Get session to find project
|
|
284
|
-
const session = await db
|
|
285
|
-
.select()
|
|
286
|
-
.from(contextSessions)
|
|
287
|
-
.where(eq(contextSessions.sessionId, sessionId))
|
|
288
|
-
.limit(1);
|
|
289
|
-
if (session.length === 0) {
|
|
290
|
-
return [];
|
|
291
|
-
}
|
|
292
|
-
const { memories } = schema;
|
|
293
|
-
const projectId = session[0].projectId;
|
|
294
|
-
// Get all in-context memories
|
|
295
|
-
const inContextMemories = await db
|
|
296
|
-
.select()
|
|
297
|
-
.from(memories)
|
|
298
|
-
.where(and(eq(memories.projectId, projectId), eq(memories.contextStatus, 'in-context')));
|
|
299
|
-
return inContextMemories.map((mem) => ({
|
|
300
|
-
id: mem.id,
|
|
301
|
-
type: mem.type,
|
|
302
|
-
content: mem.content,
|
|
303
|
-
contentPreview: mem.content.substring(0, 200) + (mem.content.length > 200 ? '...' : ''),
|
|
304
|
-
loadedAt: mem.updatedAt,
|
|
305
|
-
}));
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Get out-of-context (archived) memories for a project
|
|
309
|
-
*/
|
|
310
|
-
export async function getOutOfContextMemories(projectId, limit = 10) {
|
|
311
|
-
const { db, schema } = await getDbClient();
|
|
312
|
-
const { memories } = schema;
|
|
313
|
-
// Get out-of-context memories, ordered by last accessed
|
|
314
|
-
const outOfContextMemories = await db
|
|
315
|
-
.select()
|
|
316
|
-
.from(memories)
|
|
317
|
-
.where(and(eq(memories.projectId, projectId), eq(memories.contextStatus, 'out-of-context')))
|
|
318
|
-
.orderBy(sql `COALESCE(${memories.lastAccessedAt}, ${memories.createdAt}) DESC`)
|
|
319
|
-
.limit(limit);
|
|
320
|
-
return outOfContextMemories.map((mem) => ({
|
|
321
|
-
id: mem.id,
|
|
322
|
-
type: mem.type,
|
|
323
|
-
content: mem.content,
|
|
324
|
-
contentPreview: mem.content.substring(0, 200) + (mem.content.length > 200 ? '...' : ''),
|
|
325
|
-
loadedAt: mem.lastAccessedAt || mem.createdAt,
|
|
326
|
-
}));
|
|
327
|
-
}
|
|
328
|
-
//# sourceMappingURL=context-paging.js.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export interface ContextWindowConfig {
|
|
2
|
-
maxTokens: number;
|
|
3
|
-
warningThreshold: number;
|
|
4
|
-
criticalThreshold: number;
|
|
5
|
-
}
|
|
6
|
-
export declare const DEFAULT_CONTEXT_CONFIG: ContextWindowConfig;
|
|
7
|
-
export interface TokenUsageStats {
|
|
8
|
-
coreMemoryTokens: number;
|
|
9
|
-
memoriesTokens: number;
|
|
10
|
-
totalTokens: number;
|
|
11
|
-
maxTokens: number;
|
|
12
|
-
usagePercent: number;
|
|
13
|
-
status: 'ok' | 'warning' | 'critical';
|
|
14
|
-
remainingTokens: number;
|
|
15
|
-
}
|
|
16
|
-
export interface OptimizationSuggestion {
|
|
17
|
-
type: 'drop' | 'summarize' | 'consolidate';
|
|
18
|
-
memoryId: string;
|
|
19
|
-
memoryType: string;
|
|
20
|
-
contentPreview: string;
|
|
21
|
-
tokens: number;
|
|
22
|
-
reason: string;
|
|
23
|
-
priority: number;
|
|
24
|
-
}
|
|
25
|
-
export declare function estimateTokens(content: string): number;
|
|
26
|
-
export declare function getTokenUsage(projectPath: string): Promise<TokenUsageStats>;
|
|
27
|
-
export declare function checkContextLimit(projectPath: string, additionalTokens: number): Promise<{
|
|
28
|
-
ok: boolean;
|
|
29
|
-
warning?: string;
|
|
30
|
-
stats: TokenUsageStats;
|
|
31
|
-
}>;
|
|
32
|
-
export declare function getOptimizationSuggestions(projectPath: string): Promise<OptimizationSuggestion[]>;
|
|
33
|
-
export declare function getContextWindowStatus(projectPath: string): Promise<{
|
|
34
|
-
config: ContextWindowConfig;
|
|
35
|
-
usage: TokenUsageStats;
|
|
36
|
-
suggestions: OptimizationSuggestion[];
|
|
37
|
-
memoryCount: number;
|
|
38
|
-
coreMemorySections: number;
|
|
39
|
-
}>;
|
|
40
|
-
//# sourceMappingURL=context-window.d.ts.map
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { eq, sql } from 'drizzle-orm';
|
|
2
|
-
import { getDb } from '../../db/index.js';
|
|
3
|
-
import { getSchema } from '../../db/schema.js';
|
|
4
|
-
import { createDatabaseClient } from '../storage/database.js';
|
|
5
|
-
import { requireProject } from '../projects.js';
|
|
6
|
-
export const DEFAULT_CONTEXT_CONFIG = {
|
|
7
|
-
maxTokens: 128000,
|
|
8
|
-
warningThreshold: 0.80,
|
|
9
|
-
criticalThreshold: 0.95,
|
|
10
|
-
};
|
|
11
|
-
export function estimateTokens(content) {
|
|
12
|
-
if (!content)
|
|
13
|
-
return 0;
|
|
14
|
-
return Math.ceil(content.length / 4);
|
|
15
|
-
}
|
|
16
|
-
export async function getTokenUsage(projectPath) {
|
|
17
|
-
const project = await requireProject(projectPath);
|
|
18
|
-
const projectId = project.id;
|
|
19
|
-
const db = createDatabaseClient(await getDb());
|
|
20
|
-
const schema = await getSchema();
|
|
21
|
-
const memories = schema.memories;
|
|
22
|
-
const coreMemory = schema.coreMemory;
|
|
23
|
-
const coreMemoryRows = await db
|
|
24
|
-
.select()
|
|
25
|
-
.from(coreMemory)
|
|
26
|
-
.where(eq(coreMemory.projectId, projectId));
|
|
27
|
-
let coreMemoryTokens = 0;
|
|
28
|
-
for (const row of coreMemoryRows) {
|
|
29
|
-
coreMemoryTokens += row.tokensEstimate || estimateTokens(row.content || '');
|
|
30
|
-
}
|
|
31
|
-
const memoryRows = await db
|
|
32
|
-
.select({
|
|
33
|
-
tokens: memories.tokensEstimate,
|
|
34
|
-
content: memories.content,
|
|
35
|
-
})
|
|
36
|
-
.from(memories)
|
|
37
|
-
.where(eq(memories.projectId, projectId));
|
|
38
|
-
let memoriesTokens = 0;
|
|
39
|
-
for (const row of memoryRows) {
|
|
40
|
-
memoriesTokens += row.tokens || estimateTokens(row.content || '');
|
|
41
|
-
}
|
|
42
|
-
const totalTokens = coreMemoryTokens + memoriesTokens;
|
|
43
|
-
const config = DEFAULT_CONTEXT_CONFIG;
|
|
44
|
-
const usagePercent = (totalTokens / config.maxTokens) * 100;
|
|
45
|
-
const remainingTokens = Math.max(0, config.maxTokens - totalTokens);
|
|
46
|
-
let status = 'ok';
|
|
47
|
-
if (usagePercent >= config.criticalThreshold * 100) {
|
|
48
|
-
status = 'critical';
|
|
49
|
-
}
|
|
50
|
-
else if (usagePercent >= config.warningThreshold * 100) {
|
|
51
|
-
status = 'warning';
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
coreMemoryTokens,
|
|
55
|
-
memoriesTokens,
|
|
56
|
-
totalTokens,
|
|
57
|
-
maxTokens: config.maxTokens,
|
|
58
|
-
usagePercent,
|
|
59
|
-
status,
|
|
60
|
-
remainingTokens,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
export async function checkContextLimit(projectPath, additionalTokens) {
|
|
64
|
-
const stats = await getTokenUsage(projectPath);
|
|
65
|
-
const projectedTotal = stats.totalTokens + additionalTokens;
|
|
66
|
-
const projectedPercent = (projectedTotal / stats.maxTokens) * 100;
|
|
67
|
-
if (projectedPercent >= DEFAULT_CONTEXT_CONFIG.criticalThreshold * 100) {
|
|
68
|
-
return {
|
|
69
|
-
ok: false,
|
|
70
|
-
warning: `CRITICAL: Adding ${additionalTokens} tokens would exceed ${(DEFAULT_CONTEXT_CONFIG.criticalThreshold * 100).toFixed(0)}% of context limit (${projectedPercent.toFixed(1)}% projected). Consider optimizing first.`,
|
|
71
|
-
stats,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (projectedPercent >= DEFAULT_CONTEXT_CONFIG.warningThreshold * 100) {
|
|
75
|
-
return {
|
|
76
|
-
ok: true,
|
|
77
|
-
warning: `WARNING: Adding ${additionalTokens} tokens would reach ${(projectedPercent.toFixed(1))}% of context limit. Consider optimizing soon.`,
|
|
78
|
-
stats,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
return { ok: true, stats };
|
|
82
|
-
}
|
|
83
|
-
export async function getOptimizationSuggestions(projectPath) {
|
|
84
|
-
const project = await requireProject(projectPath);
|
|
85
|
-
const projectId = project.id;
|
|
86
|
-
const db = createDatabaseClient(await getDb());
|
|
87
|
-
const schema = await getSchema();
|
|
88
|
-
const memories = schema.memories;
|
|
89
|
-
const candidates = await db
|
|
90
|
-
.select({
|
|
91
|
-
id: memories.id,
|
|
92
|
-
type: memories.type,
|
|
93
|
-
content: memories.content,
|
|
94
|
-
tokens: memories.tokensEstimate,
|
|
95
|
-
importanceScore: memories.importanceScore,
|
|
96
|
-
accessCount: memories.accessCount,
|
|
97
|
-
createdAt: memories.createdAt,
|
|
98
|
-
isPinned: memories.isPinned,
|
|
99
|
-
isProtected: memories.isProtected,
|
|
100
|
-
})
|
|
101
|
-
.from(memories)
|
|
102
|
-
.where(eq(memories.projectId, projectId))
|
|
103
|
-
.orderBy(sql `(importance_score * 0.4 + (100 - COALESCE(access_count, 0)) * 0.3 + (strftime('%s', 'now') - created_at / 1000) / 86400 * 0.3) ASC`)
|
|
104
|
-
.limit(20);
|
|
105
|
-
const suggestions = [];
|
|
106
|
-
for (const mem of candidates) {
|
|
107
|
-
const tokens = mem.tokens || estimateTokens(mem.content || '');
|
|
108
|
-
const contentPreview = mem.content?.substring(0, 100) + '...';
|
|
109
|
-
const isPinned = mem.isPinned === 1 || mem.isPinned === true;
|
|
110
|
-
const isProtected = mem.isProtected === 1 || mem.isProtected === true;
|
|
111
|
-
const accessCount = mem.accessCount || 0;
|
|
112
|
-
const importanceScore = mem.importanceScore || 50;
|
|
113
|
-
if (isPinned || isProtected) {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
if (importanceScore < 30 && accessCount < 3) {
|
|
117
|
-
suggestions.push({
|
|
118
|
-
type: 'drop',
|
|
119
|
-
memoryId: mem.id,
|
|
120
|
-
memoryType: mem.type,
|
|
121
|
-
contentPreview,
|
|
122
|
-
tokens,
|
|
123
|
-
reason: `Low importance (${importanceScore}) and rarely accessed (${accessCount} times)`,
|
|
124
|
-
priority: 1,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
else if (importanceScore < 50 && tokens > 500) {
|
|
128
|
-
suggestions.push({
|
|
129
|
-
type: 'summarize',
|
|
130
|
-
memoryId: mem.id,
|
|
131
|
-
memoryType: mem.type,
|
|
132
|
-
contentPreview,
|
|
133
|
-
tokens,
|
|
134
|
-
reason: `Large memory (${tokens} tokens) with moderate importance`,
|
|
135
|
-
priority: 2,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
else if (tokens > 1000) {
|
|
139
|
-
suggestions.push({
|
|
140
|
-
type: 'consolidate',
|
|
141
|
-
memoryId: mem.id,
|
|
142
|
-
memoryType: mem.type,
|
|
143
|
-
contentPreview,
|
|
144
|
-
tokens,
|
|
145
|
-
reason: `Very large memory (${tokens} tokens) - candidate for consolidation`,
|
|
146
|
-
priority: 3,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return suggestions.sort((a, b) => a.priority - b.priority).slice(0, 10);
|
|
151
|
-
}
|
|
152
|
-
export async function getContextWindowStatus(projectPath) {
|
|
153
|
-
const project = await requireProject(projectPath);
|
|
154
|
-
const projectId = project.id;
|
|
155
|
-
const db = createDatabaseClient(await getDb());
|
|
156
|
-
const schema = await getSchema();
|
|
157
|
-
const [usage, suggestions] = await Promise.all([
|
|
158
|
-
getTokenUsage(projectPath),
|
|
159
|
-
getOptimizationSuggestions(projectPath),
|
|
160
|
-
]);
|
|
161
|
-
const memoryCount = await db
|
|
162
|
-
.select({ count: sql `COUNT(*)` })
|
|
163
|
-
.from(schema.memories)
|
|
164
|
-
.where(eq(schema.memories.projectId, projectId));
|
|
165
|
-
const coreMemorySections = await db
|
|
166
|
-
.select({ count: sql `COUNT(*)` })
|
|
167
|
-
.from(schema.coreMemory)
|
|
168
|
-
.where(eq(schema.coreMemory.projectId, projectId));
|
|
169
|
-
return {
|
|
170
|
-
config: DEFAULT_CONTEXT_CONFIG,
|
|
171
|
-
usage,
|
|
172
|
-
suggestions,
|
|
173
|
-
memoryCount: memoryCount[0]?.count || 0,
|
|
174
|
-
coreMemorySections: coreMemorySections[0]?.count || 0,
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=context-window.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export interface ContextInput {
|
|
2
|
-
project: string;
|
|
3
|
-
include?: Array<'memories' | 'observations' | 'entities'>;
|
|
4
|
-
limit?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare function getProjectContext(input: ContextInput): Promise<Record<string, unknown>>;
|
|
7
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { requireProject } from '../projects.js';
|
|
2
|
-
import { getRecent } from '../memory/memories.js';
|
|
3
|
-
import { getObservations } from '../ingestion/learnings.js';
|
|
4
|
-
import { getEntitiesForProject } from '../search/entities.js';
|
|
5
|
-
import { validateLimit } from '../lib/validation.js';
|
|
6
|
-
export async function getProjectContext(input) {
|
|
7
|
-
const project = await requireProject(input.project);
|
|
8
|
-
const include = input.include ?? ['memories', 'observations'];
|
|
9
|
-
const limit = validateLimit(input.limit, 10, 1, 100);
|
|
10
|
-
const result = { project };
|
|
11
|
-
if (include.includes('memories')) {
|
|
12
|
-
result.memories = await getRecent(project.path, limit);
|
|
13
|
-
}
|
|
14
|
-
if (include.includes('observations')) {
|
|
15
|
-
result.observations = await getObservations(project.path, limit);
|
|
16
|
-
}
|
|
17
|
-
if (include.includes('entities')) {
|
|
18
|
-
result.entities = await getEntitiesForProject(project.path, limit);
|
|
19
|
-
}
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { MultimodalInput } from './google-multimodal.js';
|
|
2
|
-
export type EmbeddingProvider = 'local' | 'openai' | 'ollama' | 'lmstudio' | 'transformers' | 'google' | 'none' | 'auto';
|
|
3
|
-
export declare function getEmbedding(input: string | MultimodalInput): Promise<number[] | null>;
|
|
4
|
-
/**
|
|
5
|
-
* Get embeddings for multiple inputs in parallel batches
|
|
6
|
-
* Processes inputs in batches to respect rate limits while parallelizing
|
|
7
|
-
*/
|
|
8
|
-
export declare function getBatchEmbeddings(inputs: string[], batchSize?: number): Promise<Array<number[] | null>>;
|
|
9
|
-
/**
|
|
10
|
-
* Clear the embedding cache
|
|
11
|
-
*/
|
|
12
|
-
export declare function clearEmbeddingCache(): void;
|
|
13
|
-
/**
|
|
14
|
-
* Get embedding cache statistics
|
|
15
|
-
*/
|
|
16
|
-
export declare function getEmbeddingCacheStats(): {
|
|
17
|
-
size: number;
|
|
18
|
-
maxSize: number;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Check health of all configured embedding providers
|
|
22
|
-
* Returns availability and latency for each provider
|
|
23
|
-
*/
|
|
24
|
-
export declare function checkEmbeddingProviderHealth(): Promise<Map<string, {
|
|
25
|
-
available: boolean;
|
|
26
|
-
latencyMs?: number;
|
|
27
|
-
error?: string;
|
|
28
|
-
}>>;
|
|
29
|
-
//# sourceMappingURL=embeddings.d.ts.map
|