squish-memory 1.1.5 → 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/.env.example +32 -16
- package/CHANGELOG.md +147 -0
- package/README.md +120 -78
- package/{scripts → bin}/dependency-manager.mjs +217 -217
- package/{scripts → bin}/detect-clients.mjs +78 -78
- package/bin/install-interactive.mjs +321 -0
- package/bin/squish-mcp.mjs +44 -0
- package/bin/squish.mjs +33 -0
- package/config/mcp-migration-map.json +1 -6
- package/config/mcp-mode-semantics.json +19 -23
- package/config/mcp-remote-auth.json +3 -26
- package/config/mcp-universal.schema.json +5 -35
- package/config/settings.json +107 -52
- package/config.js +5 -0
- package/config.ts +218 -0
- package/core/adapters/config/claude-code.ts +133 -0
- package/core/adapters/config/cursor.ts +90 -0
- package/core/adapters/config/opencode.ts +89 -0
- package/core/adapters/config/windsurf.ts +90 -0
- package/core/adapters/index.ts +102 -0
- package/core/adapters/timeline.ts +116 -0
- package/core/adapters/types.ts +166 -0
- package/core/agent-preferences.ts +140 -0
- package/core/algorithms/analytics/token-estimator.ts +216 -0
- package/core/algorithms/detection/hash-filters.ts +260 -0
- package/core/algorithms/detection/semantic-ranker.ts +194 -0
- package/core/algorithms/detection/two-stage-detector.ts +421 -0
- package/core/algorithms/handlers/approve-merge.ts +215 -0
- package/core/algorithms/handlers/detect-duplicates.ts +192 -0
- package/core/algorithms/handlers/get-stats.ts +132 -0
- package/core/algorithms/handlers/list-proposals.ts +130 -0
- package/core/algorithms/handlers/preview-merge.ts +139 -0
- package/core/algorithms/handlers/reject-merge.ts +93 -0
- package/core/algorithms/handlers/reverse-merge.ts +155 -0
- package/{dist/core/algorithms/index.js → core/algorithms/index.ts} +39 -26
- package/core/algorithms/operations/cache-maintenance.ts +182 -0
- package/core/algorithms/safety/safety-checks.ts +256 -0
- package/core/algorithms/strategies/merge-strategies.ts +381 -0
- package/core/algorithms/types.ts +140 -0
- package/core/algorithms/utils/response-builder.ts +61 -0
- package/core/associations.ts +363 -0
- package/core/beliefs/decay.ts +289 -0
- package/core/beliefs/extractor.ts +131 -0
- package/core/beliefs/store.ts +557 -0
- package/core/beliefs/types.ts +38 -0
- package/core/commands/mcp-server.ts +5 -0
- package/core/compression.ts +177 -0
- package/core/config.js +2 -0
- package/core/consolidation.ts +330 -0
- package/core/context/agent-context.ts +388 -0
- package/core/context/context-paging.ts +449 -0
- package/core/context/context-window.ts +234 -0
- package/core/context/context.ts +35 -0
- package/core/embeddings/embeddings.ts +616 -0
- package/core/embeddings/google-multimodal.ts +200 -0
- package/{dist/core/local-embeddings.js → core/embeddings/local-embeddings.ts} +12 -11
- package/core/embeddings/qmd-client.ts +495 -0
- package/core/embeddings/transformers-local.ts +261 -0
- package/core/embeddings.js +4 -0
- package/core/error-handling.ts +206 -0
- package/core/external +219 -0
- package/core/graph/entity-deduplicator.ts +232 -0
- package/core/graph/graph-builder.ts +257 -0
- package/core/graph/graph-traversal.ts +490 -0
- package/core/graph/index.ts +24 -0
- package/core/graph/llm-entity-extractor.ts +402 -0
- package/core/graph/multi-hop-retrieval.ts +317 -0
- package/core/graph/relationship-extractor.ts +465 -0
- package/core/hooks/agent-hooks.ts +653 -0
- package/core/hooks/auto-tagger.ts +149 -0
- package/core/hooks/capture-filter.ts +169 -0
- package/core/hot-cache.ts +388 -0
- package/core/index.ts +10 -0
- package/core/ingestion/agent-memory.ts +167 -0
- package/core/ingestion/core-memory.ts +326 -0
- package/core/ingestion/learnings.ts +260 -0
- package/core/ingestion/signal-engine.ts +266 -0
- package/core/integrations/obsidian-vault.ts +197 -0
- package/core/layers/generator.ts +115 -0
- package/{dist/core/lib/db-client.d.ts → core/lib/db-client.ts} +168 -114
- package/core/lib/parse-embedding.ts +59 -0
- package/{dist/core/lib/schemas.js → core/lib/schemas.ts} +102 -87
- package/core/lib/types.ts +49 -0
- package/core/lib/utils.ts +151 -0
- package/core/lib/validation.ts +180 -0
- package/core/lifecycle.ts +353 -0
- package/core/logger.ts +59 -0
- package/core/memory/bridge-discovery.ts +395 -0
- package/core/memory/categorizer.ts +390 -0
- package/core/memory/conflict-detector.ts +62 -0
- package/core/memory/consolidation.ts +372 -0
- package/core/memory/context-collector.ts +75 -0
- package/core/memory/contradiction-resolver.ts +494 -0
- package/core/memory/edit-workflow.ts +174 -0
- package/core/memory/entity-extractor.ts +426 -0
- package/core/memory/entity-resolver.ts +89 -0
- package/core/memory/explain.ts +112 -0
- package/core/memory/fact-deriver.ts +300 -0
- package/core/memory/fact-extractor.ts +120 -0
- package/core/memory/feedback-tracker.ts +200 -0
- package/core/memory/hooks.ts +230 -0
- package/core/memory/hybrid-retrieval.ts +65 -0
- package/core/memory/hybrid-scorer.ts +325 -0
- package/core/memory/hybrid-search.ts +748 -0
- package/core/memory/importance.ts +319 -0
- package/{dist/core/memory/index.js → core/memory/index.ts} +11 -10
- package/core/memory/loader.ts +178 -0
- package/core/memory/markdown/markdown-storage.ts +318 -0
- package/core/memory/memories.ts +565 -0
- package/core/memory/memory-lifecycle.ts +51 -0
- package/core/memory/memory-manager.ts +53 -0
- package/core/memory/migrate.ts +173 -0
- package/core/memory/normalization.ts +30 -0
- package/core/memory/path-strengthener.ts +211 -0
- package/core/memory/progressive-disclosure.ts +392 -0
- package/core/memory/query-processor.ts +130 -0
- package/core/memory/query-rewriter.ts +153 -0
- package/core/memory/response-analyzer.ts +81 -0
- package/core/memory/retrieval-feedback.ts +276 -0
- package/core/memory/serialization.ts +83 -0
- package/core/memory/stale-cleaner.ts +147 -0
- package/core/memory/stats.ts +181 -0
- package/core/memory/telemetry.ts +392 -0
- package/core/memory/temporal-facts.ts +356 -0
- package/core/memory/temporal-parser.ts +477 -0
- package/core/memory/trigger-detector.ts +104 -0
- package/core/memory/write-gate.ts +288 -0
- package/{dist/core/places/index.js → core/places/index.ts} +12 -12
- package/core/places/memory-places.ts +339 -0
- package/core/places/places.ts +406 -0
- package/core/places/rules.ts +308 -0
- package/core/places/walking.ts +192 -0
- package/core/projects +89 -0
- package/core/projects.ts +131 -0
- package/core/redis.ts +82 -0
- package/core/responses.ts +187 -0
- package/core/runtime/trust-report.ts +195 -0
- package/core/runtime/trust-state.ts +360 -0
- package/core/scheduler/cron-scheduler.ts +590 -0
- package/core/scheduler/heartbeat.ts +91 -0
- package/{dist/core/scheduler/index.js → core/scheduler/index.ts} +8 -8
- package/core/scheduler/job-runner.ts +197 -0
- package/core/search/conversations.ts +166 -0
- package/core/search/entities.ts +46 -0
- package/core/search/folder-context.ts +154 -0
- package/core/search/graph-boost.ts +22 -0
- package/{dist/core/search/index.js → core/search/index.ts} +4 -5
- package/core/search/qmd-wrapper.ts +84 -0
- package/core/security/encrypt.ts +51 -0
- package/core/security/governance.ts +102 -0
- package/core/security/privacy.ts +108 -0
- package/core/security/secret-detector.ts +122 -0
- package/core/session/auto-load.ts +160 -0
- package/core/session/entity-tracker.ts +363 -0
- package/{dist/core/session/index.js → core/session/index.ts} +7 -7
- package/core/session/reference-resolver.ts +158 -0
- package/core/session/self-iteration-job.ts +478 -0
- package/core/session/session-hooks.ts +69 -0
- package/core/session/types.ts +36 -0
- package/core/session/working-set.ts +275 -0
- package/{dist/core/snapshots/cleanup.js → core/snapshots/cleanup.ts} +13 -12
- package/core/snapshots/comparison.ts +59 -0
- package/core/snapshots/creation.ts +139 -0
- package/core/snapshots/retrieval.ts +44 -0
- package/core/snapshots/stats.ts +63 -0
- package/core/storage/cache.ts +241 -0
- package/core/storage/database.ts +23 -0
- package/{dist/core/summarization/cleanup.js → core/summarization/cleanup.ts} +13 -12
- package/core/summarization/queries.ts +32 -0
- package/core/summarization/stats.ts +64 -0
- package/core/summarization/strategies.ts +52 -0
- package/core/summarization.ts +248 -0
- package/core/temporal-facts.ts +244 -0
- package/core/tracing/collector.ts +470 -0
- package/core/tracing/visualizer.ts +195 -0
- package/core/utils/cleanup-operations.ts +50 -0
- package/core/utils/content-extraction.ts +95 -0
- package/core/utils/filter-builder.ts +56 -0
- package/core/utils/history-traversal.ts +63 -0
- package/core/utils/memory-operations.ts +56 -0
- package/core/utils/query-operations.ts +83 -0
- package/core/utils/summarization-helpers.ts +45 -0
- package/core/utils/temporal-queries.ts +39 -0
- package/{dist/core/utils/vector-operations.js → core/utils/vector-operations.ts} +135 -129
- package/core/utils/version-management.ts +74 -0
- package/core/worker.ts +333 -0
- package/db/adapter.ts +215 -0
- package/{dist/db/bootstrap.js → db/bootstrap.ts} +388 -418
- package/db/drizzle/migrations/0000_needy_cerebro.sql +402 -0
- package/db/drizzle/migrations/meta/0000_snapshot.json +3451 -0
- package/db/drizzle/migrations/meta/_journal.json +13 -0
- package/db/drizzle/schema-sqlite.ts +1032 -0
- package/db/drizzle/schema.ts +1128 -0
- package/db/drizzle.config.ts +12 -0
- package/db/index.ts +83 -0
- package/db/init.sql +5 -0
- package/db/migrations/associations.ts +35 -0
- package/db/migrations/beliefs.ts +89 -0
- package/db/migrations/core-memory.ts +35 -0
- package/db/migrations/fts.ts +59 -0
- package/db/migrations/index.ts +54 -0
- package/db/migrations/indexes.ts +36 -0
- package/db/migrations/learnings.ts +34 -0
- package/db/migrations/maintenance.ts +68 -0
- package/db/migrations/memories.ts +22 -0
- package/db/migrations/memory-places.ts +35 -0
- package/db/migrations/places.ts +49 -0
- package/db/migrations/projects.ts +21 -0
- package/db/migrations/tier-conversion.ts +24 -0
- package/db/neon.ts +22 -0
- package/db/schema/beliefs.ts +50 -0
- package/db/schema/generator.ts +159 -0
- package/db/schema/index.ts +58 -0
- package/db/schema/learnings.ts +32 -0
- package/db/schema/memories.ts +83 -0
- package/db/schema/projects.ts +33 -0
- package/db/schema.ts +13 -0
- package/db/supabase.ts +27 -0
- package/mcp.json.example +8 -11
- package/package.json +140 -159
- package/packages/cli/package.json +22 -0
- package/packages/cli/src/commands/clean.ts +68 -0
- package/packages/cli/src/commands/context.ts +79 -0
- package/packages/cli/src/commands/doctor.ts +357 -0
- package/packages/cli/src/commands/forget.ts +72 -0
- package/packages/cli/src/commands/health.ts +36 -0
- package/packages/cli/src/commands/inspect.ts +41 -0
- package/packages/cli/src/commands/link.ts +50 -0
- package/packages/cli/src/commands/migrate.ts +93 -0
- package/packages/cli/src/commands/recall.ts +99 -0
- package/packages/cli/src/commands/recent.ts +57 -0
- package/packages/cli/src/commands/remember.ts +139 -0
- package/packages/cli/src/commands/run.ts +58 -0
- package/packages/cli/src/commands/stale.ts +43 -0
- package/packages/cli/src/commands/stats.ts +42 -0
- package/packages/cli/src/index.ts +57 -0
- package/packages/cli/tsconfig.json +24 -0
- package/packages/mcp/package.json +26 -0
- package/packages/mcp/src/index.ts +940 -0
- package/packages/mcp/tsconfig.json +20 -0
- package/skills/squish-memory/SKILL.md +38 -35
- package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
- package/skills/squish-memory/references/claude-desktop.json +12 -0
- package/skills/squish-memory/references/openclaw.json +13 -0
- package/skills/squish-memory/references/opencode.json +14 -0
- package/config/hooks/claude-code-hooks.json +0 -39
- package/config/hooks/cursor-hooks.json +0 -30
- package/config/hooks/opencode-hooks.json +0 -30
- package/config/hooks/windsurf-hooks.json +0 -30
- package/config/mcp-cli-fallback-policy.json +0 -22
- package/config/mcp.json +0 -38
- package/config/plugin-manifest.json +0 -101
- package/config/plugin-manifest.schema.json +0 -244
- package/config/plugin.json +0 -32
- package/config/remote-memory-policy.json +0 -32
- package/core/commands/context-paging.md +0 -51
- package/core/commands/context-status.md +0 -22
- package/core/commands/context.md +0 -5
- package/core/commands/core-memory.md +0 -56
- package/core/commands/health.md +0 -5
- package/core/commands/init.md +0 -39
- package/core/commands/merge.md +0 -113
- package/core/commands/recall.md +0 -5
- package/core/commands/remember.md +0 -11
- package/core/commands/search.md +0 -10
- package/dist/config.d.ts +0 -83
- package/dist/config.js +0 -242
- 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 -157
- package/dist/core/adapters/types.js +0 -50
- 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/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 -22
- 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 -133
- 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 -31
- package/dist/core/associations.js +0 -248
- package/dist/core/autosave.d.ts +0 -19
- package/dist/core/autosave.js +0 -16
- package/dist/core/commands/managed-sync.d.ts +0 -10
- package/dist/core/commands/managed-sync.js +0 -64
- package/dist/core/commands/mcp-server.d.ts +0 -3
- package/dist/core/commands/mcp-server.js +0 -739
- 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/google-multimodal.d.ts +0 -14
- package/dist/core/embeddings/google-multimodal.js +0 -142
- package/dist/core/embeddings/qmd-client.d.ts +0 -136
- package/dist/core/embeddings/qmd-client.js +0 -403
- package/dist/core/embeddings.d.ts +0 -29
- package/dist/core/embeddings.js +0 -454
- package/dist/core/error-handling.d.ts +0 -63
- package/dist/core/error-handling.js +0 -173
- package/dist/core/external-folder/index.d.ts +0 -102
- package/dist/core/external-folder/index.js +0 -294
- package/dist/core/hooks/agent-hooks.d.ts +0 -74
- package/dist/core/hooks/agent-hooks.js +0 -244
- 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/index.d.ts +0 -10
- package/dist/core/index.js +0 -14
- 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 -202
- package/dist/core/layers/generator.d.ts +0 -25
- package/dist/core/layers/generator.js +0 -76
- package/dist/core/lib/db-client.js +0 -130
- package/dist/core/lib/schemas.d.ts +0 -129
- package/dist/core/lib/utils.d.ts +0 -14
- package/dist/core/lib/utils.js +0 -90
- package/dist/core/lib/validation.d.ts +0 -38
- package/dist/core/lib/validation.js +0 -151
- package/dist/core/lifecycle.d.ts +0 -26
- package/dist/core/lifecycle.js +0 -302
- package/dist/core/local-embeddings.d.ts +0 -11
- package/dist/core/logger.d.ts +0 -16
- package/dist/core/logger.js +0 -40
- 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 -9
- package/dist/core/mcp/tools.js +0 -365
- package/dist/core/mcp/types.d.ts +0 -315
- 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 -305
- 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 -303
- 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 -33
- package/dist/core/memory/entity-extractor.js +0 -336
- package/dist/core/memory/entity-resolver.d.ts +0 -23
- package/dist/core/memory/entity-resolver.js +0 -64
- 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 -29
- package/dist/core/memory/hybrid-retrieval.js +0 -139
- package/dist/core/memory/hybrid-scorer.d.ts +0 -40
- package/dist/core/memory/hybrid-scorer.js +0 -284
- package/dist/core/memory/hybrid-search.d.ts +0 -20
- package/dist/core/memory/hybrid-search.js +0 -359
- package/dist/core/memory/importance.d.ts +0 -63
- package/dist/core/memory/importance.js +0 -298
- package/dist/core/memory/index.d.ts +0 -8
- 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 -47
- package/dist/core/memory/memories.js +0 -449
- package/dist/core/memory/memory-lifecycle.d.ts +0 -8
- package/dist/core/memory/memory-lifecycle.js +0 -55
- 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 -22
- package/dist/core/memory/normalization.js +0 -26
- 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 -72
- 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/serialization.d.ts +0 -10
- package/dist/core/memory/serialization.js +0 -84
- package/dist/core/memory/stats.d.ts +0 -22
- package/dist/core/memory/stats.js +0 -138
- 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 -14
- package/dist/core/memory/trigger-detector.js +0 -42
- package/dist/core/memory/write-gate.d.ts +0 -54
- package/dist/core/memory/write-gate.js +0 -210
- package/dist/core/namespaces/index.d.ts +0 -71
- package/dist/core/namespaces/index.js +0 -305
- package/dist/core/namespaces/uri-parser.d.ts +0 -31
- package/dist/core/namespaces/uri-parser.js +0 -74
- package/dist/core/obsidian-vault.d.ts +0 -30
- package/dist/core/obsidian-vault.js +0 -94
- package/dist/core/places/index.d.ts +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 -108
- 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/scheduler/cron-scheduler.d.ts +0 -32
- package/dist/core/scheduler/cron-scheduler.js +0 -332
- 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/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/qmd-search.d.ts +0 -61
- package/dist/core/search/qmd-search.js +0 -178
- 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 -119
- package/dist/core/session/index.d.ts +0 -7
- package/dist/core/session/self-iteration-job.d.ts +0 -20
- package/dist/core/session/self-iteration-job.js +0 -282
- 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-hooks/self-iteration-job.d.ts +0 -20
- package/dist/core/session-hooks/self-iteration-job.js +0 -282
- package/dist/core/session-hooks/session-hooks.d.ts +0 -18
- package/dist/core/session-hooks/session-hooks.js +0 -58
- package/dist/core/snapshots/cleanup.d.ts +0 -9
- 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 -19
- package/dist/core/snapshots/creation.js +0 -126
- 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/snapshots.d.ts +0 -29
- package/dist/core/snapshots.js +0 -220
- 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/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/sync/qmd-sync.d.ts +0 -94
- package/dist/core/sync/qmd-sync.js +0 -201
- package/dist/core/temporal-facts.d.ts +0 -54
- package/dist/core/temporal-facts.js +0 -193
- package/dist/core/toon.d.ts +0 -43
- package/dist/core/toon.js +0 -160
- 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 -21
- package/dist/core/utils/summarization-helpers.js +0 -38
- 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/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 -9
- package/dist/db/drizzle/schema-sqlite.d.ts +0 -4837
- package/dist/db/drizzle/schema-sqlite.js +0 -684
- package/dist/db/drizzle/schema.d.ts +0 -4082
- package/dist/db/drizzle/schema.js +0 -770
- 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/neon.d.ts +0 -8
- package/dist/db/neon.js +0 -20
- package/dist/db/schema/index.d.ts +0 -40
- package/dist/db/schema/index.js +0 -105
- 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/index.d.ts +0 -7
- package/dist/index.js +0 -1677
- package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
- package/dist/webui/server.d.ts +0 -5
- package/dist/webui/server.js +0 -642
- package/generated/mcp/manifest.json +0 -23
- package/generated/mcp/mcp-servers.json +0 -25
- package/generated/mcp/mcporter.json +0 -34
- package/generated/mcp/openclaw-memory-qmd.json +0 -17
- package/generated/mcp/runtime.json +0 -12
- package/scripts/README.md +0 -60
- package/scripts/build-release.sh +0 -36
- package/scripts/check-secrets.js +0 -132
- package/scripts/copy-runtime-assets.mjs +0 -26
- package/scripts/generate-mcp.mjs +0 -264
- package/scripts/github-release.sh +0 -77
- package/scripts/init-dirs.mjs +0 -13
- package/scripts/install-claude-code.sh +0 -85
- package/scripts/install-cursor.sh +0 -56
- package/scripts/install-hooks.sh +0 -73
- package/scripts/install-interactive.mjs +0 -357
- package/scripts/install-opencode.sh +0 -75
- package/scripts/install-plugin.mjs +0 -415
- package/scripts/install-windsurf.sh +0 -67
- package/scripts/remote-preflight.mjs +0 -62
- package/scripts/squish-fallback.mjs +0 -132
- package/scripts/test-interactive.mjs +0 -131
- package/scripts/verify-mcp.mjs +0 -214
- package/skills/squish-memory/scripts/install.mjs +0 -335
- package/skills/squish-memory/write_skill.js +0 -2
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { config } from '../../config.js';
|
|
2
|
-
import { logger } from '../logger.js';
|
|
3
|
-
let redis = null;
|
|
4
|
-
class LRUCache {
|
|
5
|
-
cache = new Map();
|
|
6
|
-
maxSize;
|
|
7
|
-
maxSizeBytes;
|
|
8
|
-
currentSizeBytes = 0;
|
|
9
|
-
cleanupTimer = null;
|
|
10
|
-
constructor(maxSize = 1000, maxSizeBytes = 50 * 1024 * 1024) {
|
|
11
|
-
this.maxSize = maxSize;
|
|
12
|
-
this.maxSizeBytes = maxSizeBytes; // 50MB default
|
|
13
|
-
this.startCleanupTimer();
|
|
14
|
-
}
|
|
15
|
-
get(key) {
|
|
16
|
-
const entry = this.cache.get(key);
|
|
17
|
-
if (!entry)
|
|
18
|
-
return null;
|
|
19
|
-
// Check expiration
|
|
20
|
-
if (entry.expires < Date.now()) {
|
|
21
|
-
this.delete(key);
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
// Update LRU access time
|
|
25
|
-
entry.lastAccessed = Date.now();
|
|
26
|
-
return entry.value;
|
|
27
|
-
}
|
|
28
|
-
set(key, value, ttlMs = 3600000) {
|
|
29
|
-
const size = this.estimateSize(value);
|
|
30
|
-
// Evict if needed
|
|
31
|
-
while ((this.cache.size >= this.maxSize || this.currentSizeBytes + size > this.maxSizeBytes) &&
|
|
32
|
-
this.cache.size > 0) {
|
|
33
|
-
this.evictLRU();
|
|
34
|
-
}
|
|
35
|
-
// Delete old entry if exists
|
|
36
|
-
if (this.cache.has(key)) {
|
|
37
|
-
this.delete(key);
|
|
38
|
-
}
|
|
39
|
-
// Add new entry
|
|
40
|
-
this.cache.set(key, {
|
|
41
|
-
value,
|
|
42
|
-
expires: Date.now() + ttlMs,
|
|
43
|
-
lastAccessed: Date.now(),
|
|
44
|
-
});
|
|
45
|
-
this.currentSizeBytes += size;
|
|
46
|
-
}
|
|
47
|
-
delete(key) {
|
|
48
|
-
const entry = this.cache.get(key);
|
|
49
|
-
if (entry) {
|
|
50
|
-
const size = this.estimateSize(entry.value);
|
|
51
|
-
this.currentSizeBytes = Math.max(0, this.currentSizeBytes - size);
|
|
52
|
-
}
|
|
53
|
-
return this.cache.delete(key);
|
|
54
|
-
}
|
|
55
|
-
clear() {
|
|
56
|
-
this.cache.clear();
|
|
57
|
-
this.currentSizeBytes = 0;
|
|
58
|
-
}
|
|
59
|
-
size() {
|
|
60
|
-
return this.cache.size;
|
|
61
|
-
}
|
|
62
|
-
sizeBytes() {
|
|
63
|
-
return this.currentSizeBytes;
|
|
64
|
-
}
|
|
65
|
-
evictLRU() {
|
|
66
|
-
let oldestKey = null;
|
|
67
|
-
let oldestTime = Infinity;
|
|
68
|
-
for (const [key, entry] of this.cache.entries()) {
|
|
69
|
-
if (entry.lastAccessed < oldestTime) {
|
|
70
|
-
oldestTime = entry.lastAccessed;
|
|
71
|
-
oldestKey = key;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (oldestKey) {
|
|
75
|
-
logger.debug('Evicting LRU cache entry', { key: oldestKey });
|
|
76
|
-
this.delete(oldestKey);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
estimateSize(value) {
|
|
80
|
-
try {
|
|
81
|
-
return JSON.stringify(value).length * 2; // UTF-16, rough estimate
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return 1024; // Default 1KB for non-serializable objects
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
cleanup() {
|
|
88
|
-
const now = Date.now();
|
|
89
|
-
const toDelete = [];
|
|
90
|
-
for (const [key, entry] of this.cache.entries()) {
|
|
91
|
-
if (entry.expires < now) {
|
|
92
|
-
toDelete.push(key);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
for (const key of toDelete) {
|
|
96
|
-
this.delete(key);
|
|
97
|
-
}
|
|
98
|
-
if (toDelete.length > 0) {
|
|
99
|
-
logger.debug('Cache cleanup removed expired entries', { count: toDelete.length });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
startCleanupTimer() {
|
|
103
|
-
// Cleanup every 5 minutes
|
|
104
|
-
this.cleanupTimer = setInterval(() => this.cleanup(), 5 * 60 * 1000);
|
|
105
|
-
// Prevent timer from keeping process alive
|
|
106
|
-
if (this.cleanupTimer.unref) {
|
|
107
|
-
this.cleanupTimer.unref();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
stopCleanupTimer() {
|
|
111
|
-
if (this.cleanupTimer) {
|
|
112
|
-
clearInterval(this.cleanupTimer);
|
|
113
|
-
this.cleanupTimer = null;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
getStats() {
|
|
117
|
-
return {
|
|
118
|
-
entries: this.cache.size,
|
|
119
|
-
sizeBytes: this.currentSizeBytes,
|
|
120
|
-
maxSize: this.maxSize,
|
|
121
|
-
maxSizeBytes: this.maxSizeBytes,
|
|
122
|
-
utilizationPercent: (this.cache.size / this.maxSize) * 100,
|
|
123
|
-
memoryUtilizationPercent: (this.currentSizeBytes / this.maxSizeBytes) * 100,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Create LRU cache with configurable limits
|
|
128
|
-
const memoryCache = new LRUCache(parseInt(process.env.SQUISH_CACHE_MAX_ENTRIES || '1000'), parseInt(process.env.SQUISH_CACHE_MAX_BYTES || '52428800') // 50MB
|
|
129
|
-
);
|
|
130
|
-
async function initRedis() {
|
|
131
|
-
if (!config.redisEnabled)
|
|
132
|
-
return null;
|
|
133
|
-
if (redis)
|
|
134
|
-
return redis;
|
|
135
|
-
try {
|
|
136
|
-
const { createClient } = await import('redis');
|
|
137
|
-
redis = createClient({ url: process.env.REDIS_URL });
|
|
138
|
-
await redis.connect();
|
|
139
|
-
logger.info('Redis connected');
|
|
140
|
-
return redis;
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
logger.error('Failed to connect to Redis, using memory cache', error);
|
|
144
|
-
redis = null;
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
export async function cacheGet(key) {
|
|
149
|
-
try {
|
|
150
|
-
const r = await initRedis();
|
|
151
|
-
if (r) {
|
|
152
|
-
const value = await r.get(key);
|
|
153
|
-
return value ? JSON.parse(value) : null;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
logger.error('Redis GET failed, falling back to memory', error);
|
|
158
|
-
}
|
|
159
|
-
// Memory cache fallback with LRU
|
|
160
|
-
return memoryCache.get(key);
|
|
161
|
-
}
|
|
162
|
-
export async function cacheSet(key, value, ttlMs = 3600000) {
|
|
163
|
-
try {
|
|
164
|
-
const r = await initRedis();
|
|
165
|
-
if (r) {
|
|
166
|
-
await r.setEx(key, Math.floor(ttlMs / 1000), JSON.stringify(value));
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
logger.error('Redis SET failed, falling back to memory', error);
|
|
172
|
-
}
|
|
173
|
-
// Memory cache fallback with LRU
|
|
174
|
-
memoryCache.set(key, value, ttlMs);
|
|
175
|
-
}
|
|
176
|
-
export function getCacheStats() {
|
|
177
|
-
return memoryCache.getStats();
|
|
178
|
-
}
|
|
179
|
-
export async function closeCache() {
|
|
180
|
-
if (redis) {
|
|
181
|
-
await redis.quit();
|
|
182
|
-
redis = null;
|
|
183
|
-
}
|
|
184
|
-
memoryCache.stopCleanupTimer();
|
|
185
|
-
memoryCache.clear();
|
|
186
|
-
}
|
|
187
|
-
export async function checkRedisHealth() {
|
|
188
|
-
if (!config.redisEnabled)
|
|
189
|
-
return true;
|
|
190
|
-
try {
|
|
191
|
-
const r = await initRedis();
|
|
192
|
-
if (!r)
|
|
193
|
-
return false;
|
|
194
|
-
const pong = await r.ping();
|
|
195
|
-
return pong === 'PONG';
|
|
196
|
-
}
|
|
197
|
-
catch (error) {
|
|
198
|
-
logger.error('Redis health check failed', error);
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=cache.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Database } from 'better-sqlite3';
|
|
2
|
-
import type { Pool } from 'pg';
|
|
3
|
-
export interface DatabaseClient {
|
|
4
|
-
$client: Database | Pool;
|
|
5
|
-
$clientType: 'sqlite' | 'postgres';
|
|
6
|
-
select: (...args: any[]) => any;
|
|
7
|
-
insert: (...args: any[]) => any;
|
|
8
|
-
update: (...args: any[]) => any;
|
|
9
|
-
delete: (...args: any[]) => any;
|
|
10
|
-
}
|
|
11
|
-
export declare function createDatabaseClient(db: any): DatabaseClient;
|
|
12
|
-
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export function createDatabaseClient(db) {
|
|
2
|
-
const isSqlite = typeof db.$client.prepare === 'function';
|
|
3
|
-
return {
|
|
4
|
-
$client: db.$client,
|
|
5
|
-
$clientType: isSqlite ? 'sqlite' : 'postgres',
|
|
6
|
-
select: (...args) => db.select(...args),
|
|
7
|
-
insert: (...args) => db.insert(...args),
|
|
8
|
-
update: (...args) => db.update(...args),
|
|
9
|
-
delete: (...args) => db.delete(...args),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=database.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Cleanup Operations
|
|
3
|
-
* Maintenance and cleanup for summarization data
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Delete old summaries to save space
|
|
7
|
-
*/
|
|
8
|
-
export declare function pruneOldSummaries(olderThanDays?: number): Promise<number>;
|
|
9
|
-
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Queries
|
|
3
|
-
* Database operations for summary retrieval
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Get recent summaries for a conversation
|
|
7
|
-
*/
|
|
8
|
-
export declare function getRecentSummaries(conversationId: string, limit?: number): Promise<any[]>;
|
|
9
|
-
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Queries
|
|
3
|
-
* Database operations for summary retrieval
|
|
4
|
-
*/
|
|
5
|
-
import { eq, desc } from 'drizzle-orm';
|
|
6
|
-
import { getDb } from '../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../db/schema.js';
|
|
8
|
-
import { logger } from '../logger.js';
|
|
9
|
-
/**
|
|
10
|
-
* Get recent summaries for a conversation
|
|
11
|
-
*/
|
|
12
|
-
export async function getRecentSummaries(conversationId, limit = 10) {
|
|
13
|
-
try {
|
|
14
|
-
const db = await getDb();
|
|
15
|
-
const schema = await getSchema();
|
|
16
|
-
return await db
|
|
17
|
-
.select()
|
|
18
|
-
.from(schema.sessionSummaries)
|
|
19
|
-
.where(eq(schema.sessionSummaries.conversationId, conversationId))
|
|
20
|
-
.orderBy(desc(schema.sessionSummaries.createdAt))
|
|
21
|
-
.limit(limit);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
logger.error('Error getting recent summaries', error);
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=queries.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Statistics
|
|
3
|
-
* Analytics and statistics for summarization operations
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Get summarization statistics
|
|
7
|
-
*/
|
|
8
|
-
export declare function getSummarizationStats(projectId?: string): Promise<{
|
|
9
|
-
totalSummaries: number;
|
|
10
|
-
byType: Record<string, number>;
|
|
11
|
-
totalTokensSaved: number;
|
|
12
|
-
avgCompressionRatio: number;
|
|
13
|
-
}>;
|
|
14
|
-
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Statistics
|
|
3
|
-
* Analytics and statistics for summarization operations
|
|
4
|
-
*/
|
|
5
|
-
import { eq } from 'drizzle-orm';
|
|
6
|
-
import { getDb } from '../../db/index.js';
|
|
7
|
-
import { getSchema } from '../../db/schema.js';
|
|
8
|
-
import { logger } from '../logger.js';
|
|
9
|
-
/**
|
|
10
|
-
* Get summarization statistics
|
|
11
|
-
*/
|
|
12
|
-
export async function getSummarizationStats(projectId) {
|
|
13
|
-
try {
|
|
14
|
-
const db = await getDb();
|
|
15
|
-
const schema = await getSchema();
|
|
16
|
-
const where = projectId ? eq(schema.sessionSummaries.projectId, projectId) : undefined;
|
|
17
|
-
const summaries = await db.select().from(schema.sessionSummaries).where(where);
|
|
18
|
-
const stats = {
|
|
19
|
-
totalSummaries: summaries.length,
|
|
20
|
-
byType: {
|
|
21
|
-
incremental: 0,
|
|
22
|
-
rolling: 0,
|
|
23
|
-
final: 0,
|
|
24
|
-
},
|
|
25
|
-
totalTokensSaved: 0,
|
|
26
|
-
avgCompressionRatio: 0,
|
|
27
|
-
};
|
|
28
|
-
for (const s of summaries) {
|
|
29
|
-
stats.byType[s.summaryType] = (stats.byType[s.summaryType] || 0) + 1;
|
|
30
|
-
stats.totalTokensSaved += s.tokensSaved || 0;
|
|
31
|
-
}
|
|
32
|
-
// Calculate average compression ratio
|
|
33
|
-
let totalRatio = 0;
|
|
34
|
-
for (const s of summaries) {
|
|
35
|
-
if (s.compressedFrom && s.compressedFrom > 0) {
|
|
36
|
-
totalRatio += s.tokensSaved / (s.compressedFrom * 100); // Rough estimate
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
stats.avgCompressionRatio = summaries.length > 0 ? totalRatio / summaries.length : 0;
|
|
40
|
-
return stats;
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
logger.error('Error getting summarization stats', error);
|
|
44
|
-
return {
|
|
45
|
-
totalSummaries: 0,
|
|
46
|
-
byType: {},
|
|
47
|
-
totalTokensSaved: 0,
|
|
48
|
-
avgCompressionRatio: 0,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=stats.js.map
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Strategies
|
|
3
|
-
* Implements different summarization algorithms
|
|
4
|
-
*/
|
|
5
|
-
export type SummaryType = 'incremental' | 'rolling' | 'final';
|
|
6
|
-
export interface SummarizationConfig {
|
|
7
|
-
incrementalThreshold: number;
|
|
8
|
-
rollingWindowSize: number;
|
|
9
|
-
compressionRatio: number;
|
|
10
|
-
enabled: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Create incremental summary (summary in chunks)
|
|
14
|
-
*/
|
|
15
|
-
export declare function createIncrementalSummary(messages: any[], config: SummarizationConfig): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Create rolling summary (last N messages)
|
|
18
|
-
*/
|
|
19
|
-
export declare function createRollingSummary(messages: any[], config: SummarizationConfig): Promise<string>;
|
|
20
|
-
/**
|
|
21
|
-
* Create final summary (entire conversation)
|
|
22
|
-
*/
|
|
23
|
-
export declare function createFinalSummary(messages: any[], config: SummarizationConfig): Promise<string>;
|
|
24
|
-
//# sourceMappingURL=strategies.d.ts.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summarization Strategies
|
|
3
|
-
* Implements different summarization algorithms
|
|
4
|
-
*/
|
|
5
|
-
import { chunkMessages, getRollingWindow, } from '../utils/summarization-helpers.js';
|
|
6
|
-
import { extractMessageContent, generateExtractiveSummary } from '../utils/content-extraction.js';
|
|
7
|
-
/**
|
|
8
|
-
* Create incremental summary (summary in chunks)
|
|
9
|
-
*/
|
|
10
|
-
export async function createIncrementalSummary(messages, config) {
|
|
11
|
-
const chunks = chunkMessages(messages, config.incrementalThreshold);
|
|
12
|
-
const summaries = chunks.map(chunk => generateExtractiveSummary(extractMessageContent(chunk)));
|
|
13
|
-
return summaries.join('\n---\n');
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Create rolling summary (last N messages)
|
|
17
|
-
*/
|
|
18
|
-
export async function createRollingSummary(messages, config) {
|
|
19
|
-
const window = getRollingWindow(messages, config.rollingWindowSize);
|
|
20
|
-
return generateExtractiveSummary(extractMessageContent(window));
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Create final summary (entire conversation)
|
|
24
|
-
*/
|
|
25
|
-
export async function createFinalSummary(messages, config) {
|
|
26
|
-
return generateExtractiveSummary(extractMessageContent(messages));
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=strategies.js.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Aggressive Session Summarization
|
|
3
|
-
* Implements incremental, rolling, and final summarization
|
|
4
|
-
*/
|
|
5
|
-
export type SummaryType = 'incremental' | 'rolling' | 'final';
|
|
6
|
-
export interface SummarizationConfig {
|
|
7
|
-
incrementalThreshold: number;
|
|
8
|
-
rollingWindowSize: number;
|
|
9
|
-
compressionRatio: number;
|
|
10
|
-
enabled: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Summarize a conversation session
|
|
14
|
-
*/
|
|
15
|
-
export declare function summarizeSession(conversationId: string, summaryType: SummaryType, customConfig?: Partial<SummarizationConfig>): Promise<{
|
|
16
|
-
summaryId: string;
|
|
17
|
-
tokensSaved: number;
|
|
18
|
-
summary: string;
|
|
19
|
-
}>;
|
|
20
|
-
/**
|
|
21
|
-
* Get recent summaries for a conversation
|
|
22
|
-
*/
|
|
23
|
-
export declare function getRecentSummaries(conversationId: string, limit?: number): Promise<any[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Get summarization statistics
|
|
26
|
-
*/
|
|
27
|
-
export declare function getSummarizationStats(projectId?: string): Promise<{
|
|
28
|
-
totalSummaries: number;
|
|
29
|
-
byType: Record<string, number>;
|
|
30
|
-
totalTokensSaved: number;
|
|
31
|
-
avgCompressionRatio: number;
|
|
32
|
-
}>;
|
|
33
|
-
/**
|
|
34
|
-
* Delete old summaries to save space
|
|
35
|
-
*/
|
|
36
|
-
export declare function pruneOldSummaries(olderThanDays?: number): Promise<number>;
|
|
37
|
-
//# sourceMappingURL=summarization.d.ts.map
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Aggressive Session Summarization
|
|
3
|
-
* Implements incremental, rolling, and final summarization
|
|
4
|
-
*/
|
|
5
|
-
import { eq, desc } from 'drizzle-orm';
|
|
6
|
-
import { randomUUID } from 'crypto';
|
|
7
|
-
import { getDb } from '../db/index.js';
|
|
8
|
-
import { getSchema } from '../db/schema.js';
|
|
9
|
-
import { config } from '../config.js';
|
|
10
|
-
import { getEmbedding } from './embeddings.js';
|
|
11
|
-
import { cleanupOldSessionSummaries } from './utils/cleanup-operations.js';
|
|
12
|
-
import { chunkMessages, getRollingWindow, calculateTokensSaved } from './utils/summarization-helpers.js';
|
|
13
|
-
import { extractMessageContent, generateExtractiveSummary } from './utils/content-extraction.js';
|
|
14
|
-
import { logger } from './logger.js';
|
|
15
|
-
const DEFAULT_CONFIG = {
|
|
16
|
-
incrementalThreshold: config.incrementalThreshold || 10,
|
|
17
|
-
rollingWindowSize: 50,
|
|
18
|
-
compressionRatio: 0.2, // 5:1 compression
|
|
19
|
-
enabled: config.summarizationEnabled !== false,
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Summarize a conversation session
|
|
23
|
-
*/
|
|
24
|
-
export async function summarizeSession(conversationId, summaryType, customConfig = {}) {
|
|
25
|
-
const finalConfig = { ...DEFAULT_CONFIG, ...customConfig };
|
|
26
|
-
if (!finalConfig.enabled) {
|
|
27
|
-
return { summaryId: '', tokensSaved: 0, summary: '' };
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
const db = await getDb();
|
|
31
|
-
const schema = await getSchema();
|
|
32
|
-
// Fetch messages for this conversation
|
|
33
|
-
const messages = await db
|
|
34
|
-
.select()
|
|
35
|
-
.from(schema.messages)
|
|
36
|
-
.where(eq(schema.messages.conversationId, conversationId))
|
|
37
|
-
.orderBy(schema.messages.createdAt);
|
|
38
|
-
if (messages.length === 0) {
|
|
39
|
-
return { summaryId: '', tokensSaved: 0, summary: '' };
|
|
40
|
-
}
|
|
41
|
-
let summary = '';
|
|
42
|
-
switch (summaryType) {
|
|
43
|
-
case 'incremental':
|
|
44
|
-
summary = await createIncrementalSummary(messages, finalConfig);
|
|
45
|
-
break;
|
|
46
|
-
case 'rolling':
|
|
47
|
-
summary = await createRollingSummary(messages, finalConfig);
|
|
48
|
-
break;
|
|
49
|
-
case 'final':
|
|
50
|
-
summary = await createFinalSummary(messages, finalConfig);
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
if (summary) {
|
|
54
|
-
// Store summary with embedding
|
|
55
|
-
const embedding = await getEmbedding(summary);
|
|
56
|
-
const conversation = await db
|
|
57
|
-
.select()
|
|
58
|
-
.from(schema.conversations)
|
|
59
|
-
.where(eq(schema.conversations.id, conversationId))
|
|
60
|
-
.limit(1);
|
|
61
|
-
if (conversation.length > 0) {
|
|
62
|
-
const tokensSaved = estimateTokensSaved(messages, summary);
|
|
63
|
-
const summaryId = randomUUID();
|
|
64
|
-
await db.insert(schema.sessionSummaries).values({
|
|
65
|
-
id: summaryId,
|
|
66
|
-
conversationId,
|
|
67
|
-
projectId: conversation[0].projectId,
|
|
68
|
-
summaryType,
|
|
69
|
-
content: summary,
|
|
70
|
-
compressedFrom: messages.length,
|
|
71
|
-
tokensSaved,
|
|
72
|
-
embedding: embedding || null,
|
|
73
|
-
createdAt: new Date(),
|
|
74
|
-
});
|
|
75
|
-
return { summaryId, tokensSaved, summary };
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return { summaryId: '', tokensSaved: 0, summary };
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
logger.error('Error summarizing session', error);
|
|
82
|
-
return { summaryId: '', tokensSaved: 0, summary: '' };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Create incremental summary (summary in chunks)
|
|
87
|
-
*/
|
|
88
|
-
async function createIncrementalSummary(messages, config) {
|
|
89
|
-
const chunks = chunkMessages(messages, config.incrementalThreshold);
|
|
90
|
-
const summaries = chunks.map(chunk => generateExtractiveSummary(extractMessageContent(chunk)));
|
|
91
|
-
return summaries.join('\n---\n');
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Create rolling summary (last N messages)
|
|
95
|
-
*/
|
|
96
|
-
async function createRollingSummary(messages, config) {
|
|
97
|
-
const window = getRollingWindow(messages, config.rollingWindowSize);
|
|
98
|
-
return generateExtractiveSummary(extractMessageContent(window));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Create final summary (entire conversation)
|
|
102
|
-
*/
|
|
103
|
-
async function createFinalSummary(messages, config) {
|
|
104
|
-
return generateExtractiveSummary(extractMessageContent(messages));
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Generate basic extractive summary of messages
|
|
108
|
-
*/
|
|
109
|
-
function summarizeChunk(messages) {
|
|
110
|
-
if (messages.length === 0)
|
|
111
|
-
return '';
|
|
112
|
-
return generateExtractiveSummary(extractMessageContent(messages));
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Estimate tokens saved by summarization
|
|
116
|
-
*/
|
|
117
|
-
function estimateTokensSaved(messages, summary) {
|
|
118
|
-
return calculateTokensSaved(messages, summary);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Get recent summaries for a conversation
|
|
122
|
-
*/
|
|
123
|
-
export async function getRecentSummaries(conversationId, limit = 10) {
|
|
124
|
-
try {
|
|
125
|
-
const db = await getDb();
|
|
126
|
-
const schema = await getSchema();
|
|
127
|
-
return await db
|
|
128
|
-
.select()
|
|
129
|
-
.from(schema.sessionSummaries)
|
|
130
|
-
.where(eq(schema.sessionSummaries.conversationId, conversationId))
|
|
131
|
-
.orderBy(desc(schema.sessionSummaries.createdAt))
|
|
132
|
-
.limit(limit);
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
logger.error('Error getting recent summaries', error);
|
|
136
|
-
return [];
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get summarization statistics
|
|
141
|
-
*/
|
|
142
|
-
export async function getSummarizationStats(projectId) {
|
|
143
|
-
try {
|
|
144
|
-
const db = await getDb();
|
|
145
|
-
const schema = await getSchema();
|
|
146
|
-
const where = projectId ? eq(schema.sessionSummaries.projectId, projectId) : undefined;
|
|
147
|
-
const summaries = await db.select().from(schema.sessionSummaries).where(where);
|
|
148
|
-
const stats = {
|
|
149
|
-
totalSummaries: summaries.length,
|
|
150
|
-
byType: {
|
|
151
|
-
incremental: 0,
|
|
152
|
-
rolling: 0,
|
|
153
|
-
final: 0,
|
|
154
|
-
},
|
|
155
|
-
totalTokensSaved: 0,
|
|
156
|
-
avgCompressionRatio: 0,
|
|
157
|
-
};
|
|
158
|
-
for (const s of summaries) {
|
|
159
|
-
stats.byType[s.summaryType] = (stats.byType[s.summaryType] || 0) + 1;
|
|
160
|
-
stats.totalTokensSaved += s.tokensSaved || 0;
|
|
161
|
-
}
|
|
162
|
-
// Calculate average compression ratio
|
|
163
|
-
let totalRatio = 0;
|
|
164
|
-
for (const s of summaries) {
|
|
165
|
-
if (s.compressedFrom && s.compressedFrom > 0) {
|
|
166
|
-
totalRatio += s.tokensSaved / (s.compressedFrom * 100); // Rough estimate
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
stats.avgCompressionRatio = summaries.length > 0 ? totalRatio / summaries.length : 0;
|
|
170
|
-
return stats;
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
logger.error('Error getting summarization stats', error);
|
|
174
|
-
return {
|
|
175
|
-
totalSummaries: 0,
|
|
176
|
-
byType: {},
|
|
177
|
-
totalTokensSaved: 0,
|
|
178
|
-
avgCompressionRatio: 0,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Delete old summaries to save space
|
|
184
|
-
*/
|
|
185
|
-
export async function pruneOldSummaries(olderThanDays = 30) {
|
|
186
|
-
return cleanupOldSessionSummaries(olderThanDays);
|
|
187
|
-
}
|
|
188
|
-
//# sourceMappingURL=summarization.js.map
|