squish-memory 1.0.2 → 1.2.0
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 +146 -0
- package/CHANGELOG.md +202 -0
- package/README.md +192 -287
- 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 +46 -0
- package/bin/squish.mjs +33 -0
- package/config/mcp-migration-map.json +1 -6
- package/config/mcp-mode-semantics.json +10 -12
- package/config/mcp-remote-auth.json +3 -26
- package/config/mcp-universal.schema.json +5 -35
- package/config/settings.json +78 -22
- 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/core/algorithms/index.ts +39 -0
- 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/core/embeddings/local-embeddings.ts +12 -0
- 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/core/lib/db-client.ts +168 -0
- package/core/lib/parse-embedding.ts +59 -0
- package/core/lib/schemas.ts +102 -0
- 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/core/memory/index.ts +11 -0
- 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/core/places/index.ts +14 -0
- 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 +581 -0
- package/core/scheduler/heartbeat.ts +91 -0
- package/core/scheduler/index.ts +8 -0
- 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/core/search/index.ts +4 -0
- 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/core/session/index.ts +7 -0
- 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/core/snapshots/cleanup.ts +13 -0
- 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/core/summarization/cleanup.ts +13 -0
- 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/core/utils/vector-operations.ts +135 -0
- package/core/utils/version-management.ts +74 -0
- package/core/worker.ts +324 -0
- package/db/adapter.ts +215 -0
- package/db/bootstrap.ts +1055 -0
- 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/dist/config.d.ts +61 -14
- package/dist/config.js +159 -139
- package/dist/core/adapters/config/claude-code.d.ts +45 -0
- package/dist/core/adapters/config/claude-code.js +113 -0
- package/dist/core/adapters/config/cursor.d.ts +26 -0
- package/dist/core/adapters/config/cursor.js +74 -0
- package/dist/core/adapters/config/opencode.d.ts +23 -0
- package/dist/core/adapters/config/opencode.js +73 -0
- package/dist/core/adapters/config/windsurf.d.ts +26 -0
- package/dist/core/adapters/config/windsurf.js +74 -0
- package/dist/core/adapters/index.d.ts +45 -0
- package/dist/core/adapters/index.js +84 -0
- package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
- package/dist/core/adapters/scripts/install-adapter.js +149 -0
- package/dist/core/adapters/timeline.d.ts +23 -0
- package/dist/core/adapters/timeline.js +88 -0
- package/dist/core/adapters/types.d.ts +137 -0
- package/dist/core/adapters/types.js +50 -0
- package/dist/core/agent-preferences.d.ts +16 -0
- package/dist/core/agent-preferences.js +124 -0
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
- package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
- package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
- package/dist/core/algorithms/index.d.ts +21 -0
- package/dist/core/algorithms/index.js +26 -0
- package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
- package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
- package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +2 -6
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
- package/dist/core/algorithms/types.d.ts +125 -0
- package/dist/core/algorithms/types.js +5 -0
- package/dist/core/associations.d.ts +3 -2
- package/dist/core/associations.js +37 -2
- package/dist/core/autosave.d.ts +19 -0
- package/dist/core/autosave.js +16 -0
- package/dist/core/beliefs/decay.d.ts +27 -0
- package/dist/core/beliefs/decay.js +217 -0
- package/dist/core/beliefs/extractor.d.ts +9 -0
- package/dist/core/beliefs/extractor.js +113 -0
- package/dist/core/beliefs/store.d.ts +46 -0
- package/dist/core/beliefs/store.js +466 -0
- package/dist/core/beliefs/types.d.ts +28 -0
- package/dist/core/beliefs/types.js +2 -0
- package/dist/core/commands/mcp-server.d.ts +2 -0
- package/dist/core/commands/mcp-server.js +6 -0
- package/dist/core/commands/remember.d.ts +24 -0
- package/dist/core/commands/remember.js +144 -0
- package/dist/core/compression.d.ts +45 -0
- package/dist/core/compression.js +160 -0
- package/dist/core/context/agent-context.d.ts +106 -0
- package/dist/core/context/agent-context.js +274 -0
- package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
- package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
- package/dist/core/context/context-window.d.ts +40 -0
- package/dist/core/context/context-window.js +177 -0
- package/dist/core/context/context.js +22 -0
- package/dist/core/embeddings/embeddings.d.ts +29 -0
- package/dist/core/embeddings/embeddings.js +546 -0
- package/dist/core/embeddings/google-multimodal.js +6 -2
- package/dist/core/embeddings/local-embeddings.d.ts +11 -0
- package/dist/core/embeddings/local-embeddings.js +11 -0
- package/dist/core/embeddings/qmd-client.js +1 -1
- package/dist/core/embeddings/transformers-local.d.ts +64 -0
- package/dist/core/embeddings/transformers-local.js +213 -0
- package/dist/core/embeddings.d.ts +1 -28
- package/dist/core/embeddings.js +2 -401
- package/dist/core/error-handling.d.ts +63 -0
- package/dist/core/error-handling.js +173 -0
- package/dist/core/graph/entity-deduplicator.d.ts +24 -0
- package/dist/core/graph/entity-deduplicator.js +183 -0
- package/dist/core/graph/graph-builder.d.ts +46 -0
- package/dist/core/graph/graph-builder.js +174 -0
- package/dist/core/graph/graph-traversal.d.ts +80 -0
- package/dist/core/graph/graph-traversal.js +315 -0
- package/dist/core/graph/index.d.ts +19 -0
- package/dist/core/graph/index.js +13 -0
- package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
- package/dist/core/graph/llm-entity-extractor.js +313 -0
- package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
- package/dist/core/graph/multi-hop-retrieval.js +215 -0
- package/dist/core/graph/relationship-extractor.d.ts +48 -0
- package/dist/core/graph/relationship-extractor.js +351 -0
- package/dist/core/hooks/agent-hooks.d.ts +83 -0
- package/dist/core/hooks/agent-hooks.js +521 -0
- package/dist/core/hooks/auto-tagger.d.ts +19 -0
- package/dist/core/hooks/auto-tagger.js +155 -0
- package/dist/core/hooks/capture-filter.d.ts +41 -0
- package/dist/core/hooks/capture-filter.js +128 -0
- package/dist/core/hot-cache.d.ts +86 -0
- package/dist/core/hot-cache.js +285 -0
- package/dist/core/index.d.ts +9 -9
- package/dist/core/index.js +9 -12
- package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
- package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +2 -2
- package/dist/core/{core-memory.js → ingestion/core-memory.js} +7 -7
- package/dist/core/ingestion/learnings.d.ts +57 -0
- package/dist/core/ingestion/learnings.js +205 -0
- package/dist/core/ingestion/signal-engine.d.ts +41 -0
- package/dist/core/ingestion/signal-engine.js +201 -0
- package/dist/core/integrations/obsidian-vault.d.ts +31 -0
- package/dist/core/integrations/obsidian-vault.js +156 -0
- package/dist/core/lib/db-client.d.ts +114 -0
- package/dist/core/lib/db-client.js +130 -0
- package/dist/core/lib/parse-embedding.d.ts +9 -0
- package/dist/core/lib/parse-embedding.js +58 -0
- package/dist/core/lib/schemas.d.ts +132 -0
- package/dist/core/lib/schemas.js +87 -0
- package/dist/core/lib/types.d.ts +45 -0
- package/dist/core/lib/types.js +6 -0
- package/dist/core/{utils.d.ts → lib/utils.d.ts} +5 -0
- package/dist/core/lib/utils.js +145 -0
- package/dist/core/lib/validation.d.ts +38 -0
- package/dist/core/lib/validation.js +151 -0
- package/dist/core/lifecycle.d.ts +7 -1
- package/dist/core/lifecycle.js +152 -42
- package/dist/core/logger.d.ts +1 -0
- package/dist/core/logger.js +13 -1
- package/dist/core/mcp/tools.d.ts +0 -2
- package/dist/core/mcp/tools.js +35 -90
- package/dist/core/mcp/types.d.ts +25 -253
- package/dist/core/mcp/types.js +2 -2
- package/dist/core/memory/categorizer.js +2 -0
- package/dist/core/memory/conflict-detector.js +1 -1
- package/dist/core/memory/consolidation.d.ts +1 -10
- package/dist/core/memory/consolidation.js +4 -39
- package/dist/core/memory/context-collector.js +1 -1
- package/dist/core/memory/edit-workflow.js +1 -1
- package/dist/core/memory/entity-extractor.d.ts +4 -0
- package/dist/core/memory/entity-extractor.js +30 -16
- package/dist/core/memory/entity-resolver.js +7 -7
- package/dist/core/memory/explain.d.ts +18 -0
- package/dist/core/memory/explain.js +92 -0
- package/dist/core/memory/fact-deriver.d.ts +31 -0
- package/dist/core/memory/fact-deriver.js +236 -0
- package/dist/core/memory/fact-extractor.js +12 -12
- package/dist/core/memory/feedback-tracker.js +1 -1
- package/dist/core/memory/hooks.d.ts +88 -0
- package/dist/core/memory/hooks.js +174 -0
- package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
- package/dist/core/memory/hybrid-retrieval.js +25 -127
- package/dist/core/memory/hybrid-scorer.js +6 -23
- package/dist/core/memory/hybrid-search.d.ts +9 -11
- package/dist/core/memory/hybrid-search.js +496 -273
- package/dist/core/memory/importance.d.ts +2 -24
- package/dist/core/memory/importance.js +7 -91
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.js +1 -0
- package/dist/core/memory/loader.d.ts +31 -0
- package/dist/core/memory/loader.js +141 -0
- package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
- package/dist/core/memory/markdown/markdown-storage.js +243 -0
- package/dist/core/memory/memories.d.ts +23 -19
- package/dist/core/memory/memories.js +243 -228
- package/dist/core/memory/memory-lifecycle.d.ts +8 -0
- package/dist/core/memory/memory-lifecycle.js +47 -0
- package/dist/core/memory/migrate.d.ts +21 -0
- package/dist/core/memory/migrate.js +134 -0
- package/dist/core/memory/normalization.d.ts +7 -0
- package/dist/core/memory/normalization.js +26 -0
- package/dist/core/memory/path-strengthener.d.ts +39 -0
- package/dist/core/memory/path-strengthener.js +150 -0
- package/dist/core/memory/progressive-disclosure.js +1 -1
- package/dist/core/memory/query-processor.js +37 -3
- package/dist/core/memory/query-rewriter.js +9 -9
- package/dist/core/memory/retrieval-feedback.d.ts +70 -0
- package/dist/core/memory/retrieval-feedback.js +213 -0
- package/dist/core/memory/serialization.d.ts +4 -0
- package/dist/core/memory/serialization.js +49 -0
- package/dist/core/memory/stale-cleaner.d.ts +26 -0
- package/dist/core/memory/stale-cleaner.js +97 -0
- package/dist/core/memory/stats.d.ts +15 -0
- package/dist/core/memory/stats.js +69 -13
- package/dist/core/memory/temporal-facts.js +21 -0
- package/dist/core/memory/trigger-detector.d.ts +8 -1
- package/dist/core/memory/trigger-detector.js +42 -5
- package/dist/core/memory/write-gate.js +1 -1
- package/dist/core/places/index.d.ts +14 -0
- package/dist/core/places/index.js +14 -0
- package/dist/core/places/memory-places.d.ts +68 -0
- package/dist/core/places/memory-places.js +261 -0
- package/dist/core/places/places.d.ts +88 -0
- package/dist/core/places/places.js +314 -0
- package/dist/core/places/rules.d.ts +74 -0
- package/dist/core/places/rules.js +240 -0
- package/dist/core/places/walking.d.ts +56 -0
- package/dist/core/places/walking.js +121 -0
- package/dist/core/projects.d.ts +5 -0
- package/dist/core/projects.js +47 -18
- package/dist/core/responses.d.ts +96 -0
- package/dist/core/responses.js +122 -0
- package/dist/core/runtime/trust-report.d.ts +102 -0
- package/dist/core/runtime/trust-report.js +107 -0
- package/dist/core/runtime/trust-state.d.ts +12 -0
- package/dist/core/runtime/trust-state.js +309 -0
- package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
- package/dist/core/scheduler/cron-scheduler.js +193 -10
- package/dist/core/scheduler/index.d.ts +1 -1
- package/dist/core/scheduler/index.js +1 -1
- package/dist/core/scheduler/job-runner.js +2 -2
- package/dist/core/search/conversations.js +40 -42
- package/dist/core/search/entities.js +6 -9
- package/dist/core/search/graph-boost.d.ts +7 -0
- package/dist/core/search/graph-boost.js +23 -0
- package/dist/core/search/qmd-wrapper.d.ts +36 -0
- package/dist/core/search/qmd-wrapper.js +58 -0
- package/dist/core/security/encrypt.d.ts +6 -0
- package/dist/core/security/encrypt.js +47 -0
- package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
- package/dist/core/security/governance.js +79 -0
- package/dist/core/session/auto-load.js +34 -9
- package/dist/core/session/entity-tracker.d.ts +62 -0
- package/dist/core/session/entity-tracker.js +287 -0
- package/dist/core/session/index.d.ts +1 -1
- package/dist/core/session/index.js +1 -1
- package/dist/core/session/reference-resolver.d.ts +26 -0
- package/dist/core/session/reference-resolver.js +121 -0
- package/dist/core/{session-hooks → session}/self-iteration-job.d.ts +15 -0
- package/dist/core/{session-hooks → session}/self-iteration-job.js +195 -90
- package/dist/core/session/working-set.d.ts +50 -0
- package/dist/core/session/working-set.js +212 -0
- package/dist/core/snapshots/creation.d.ts +2 -8
- package/dist/core/snapshots/creation.js +3 -12
- package/dist/core/{cache.js → storage/cache.js} +2 -2
- package/dist/core/utils/memory-operations.js +1 -1
- package/dist/core/utils/summarization-helpers.d.ts +0 -4
- package/dist/core/utils/summarization-helpers.js +1 -6
- package/dist/core/utils/vector-operations.d.ts +71 -0
- package/dist/core/utils/vector-operations.js +129 -0
- package/dist/db/adapter.d.ts +3 -3
- package/dist/db/adapter.js +99 -88
- package/dist/db/bootstrap.d.ts +2 -0
- package/dist/db/bootstrap.js +921 -674
- package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +775 -25
- package/dist/{drizzle → db/drizzle}/schema-sqlite.js +170 -24
- package/dist/{drizzle → db/drizzle}/schema.d.ts +731 -32
- package/dist/{drizzle → db/drizzle}/schema.js +192 -32
- package/dist/db/drizzle.config.d.ts +3 -0
- package/dist/db/drizzle.config.js +12 -0
- package/dist/db/index.d.ts +1 -5
- package/dist/db/index.js +51 -8
- package/dist/db/migrations/associations.d.ts +6 -0
- package/dist/db/migrations/associations.js +29 -0
- package/dist/db/migrations/beliefs.d.ts +10 -0
- package/dist/db/migrations/beliefs.js +76 -0
- package/dist/db/migrations/core-memory.d.ts +6 -0
- package/dist/db/migrations/core-memory.js +29 -0
- package/dist/db/migrations/fts.d.ts +6 -0
- package/dist/db/migrations/fts.js +52 -0
- package/dist/db/migrations/index.d.ts +25 -0
- package/dist/db/migrations/index.js +51 -0
- package/dist/db/migrations/indexes.d.ts +6 -0
- package/dist/db/migrations/indexes.js +30 -0
- package/dist/db/migrations/learnings.d.ts +7 -0
- package/dist/db/migrations/learnings.js +26 -0
- package/dist/db/migrations/maintenance.d.ts +6 -0
- package/dist/db/migrations/maintenance.js +61 -0
- package/dist/db/migrations/memories.d.ts +7 -0
- package/dist/db/migrations/memories.js +16 -0
- package/dist/db/migrations/memory-places.d.ts +6 -0
- package/dist/db/migrations/memory-places.js +29 -0
- package/dist/db/migrations/places.d.ts +6 -0
- package/dist/db/migrations/places.js +43 -0
- package/dist/db/migrations/projects.d.ts +3 -0
- package/dist/db/migrations/projects.js +13 -0
- package/dist/db/migrations/tier-conversion.d.ts +7 -0
- package/dist/db/migrations/tier-conversion.js +20 -0
- package/dist/db/neon.d.ts +8 -0
- package/dist/db/neon.js +20 -0
- package/dist/db/schema/beliefs.d.ts +9 -0
- package/dist/db/schema/beliefs.js +46 -0
- package/dist/db/schema/generator.d.ts +38 -0
- package/dist/db/schema/generator.js +108 -0
- package/dist/db/schema/index.d.ts +39 -0
- package/dist/db/schema/index.js +51 -0
- package/dist/db/schema/learnings.d.ts +7 -0
- package/dist/db/schema/learnings.js +30 -0
- package/dist/db/schema/memories.d.ts +7 -0
- package/dist/db/schema/memories.js +81 -0
- package/dist/db/schema/projects.d.ts +4 -0
- package/dist/db/schema/projects.js +31 -0
- package/dist/db/schema/tables/context-sessions.d.ts +9 -0
- package/dist/db/schema/tables/context-sessions.js +37 -0
- package/dist/db/schema/tables/conversations.d.ts +9 -0
- package/dist/db/schema/tables/conversations.js +47 -0
- package/dist/db/schema/tables/core-memory.d.ts +9 -0
- package/dist/db/schema/tables/core-memory.js +41 -0
- package/dist/db/schema/tables/entities.d.ts +9 -0
- package/dist/db/schema/tables/entities.js +39 -0
- package/dist/db/schema/tables/entity-relations.d.ts +9 -0
- package/dist/db/schema/tables/entity-relations.js +31 -0
- package/dist/db/schema/tables/learnings.d.ts +9 -0
- package/dist/db/schema/tables/learnings.js +66 -0
- package/dist/db/schema/tables/memories.d.ts +9 -0
- package/dist/db/schema/tables/memories.js +161 -0
- package/dist/db/schema/tables/memory-associations.d.ts +9 -0
- package/dist/db/schema/tables/memory-associations.js +39 -0
- package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
- package/dist/db/schema/tables/memory-hash-cache.js +29 -0
- package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-history.js +33 -0
- package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
- package/dist/db/schema/tables/messages.d.ts +9 -0
- package/dist/db/schema/tables/messages.js +41 -0
- package/dist/db/schema/tables/namespaces.d.ts +9 -0
- package/dist/db/schema/tables/namespaces.js +37 -0
- package/dist/db/schema/tables/projects.d.ts +9 -0
- package/dist/db/schema/tables/projects.js +31 -0
- package/dist/db/schema/tables/users.d.ts +9 -0
- package/dist/db/schema/tables/users.js +27 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.js +2 -2
- package/dist/db/supabase.d.ts +9 -0
- package/dist/db/supabase.js +24 -0
- package/dist/packages/mcp/src/index.d.ts +3 -0
- package/dist/packages/mcp/src/index.js +733 -0
- package/mcp.json.example +8 -0
- package/package.json +132 -173
- 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 +877 -0
- package/packages/mcp/tsconfig.json +20 -0
- package/skills/squish-memory/SKILL.md +107 -114
- package/skills/squish-memory/install.sh +3 -3
- package/skills/squish-memory/{claude-desktop.json → references/claude-desktop.json} +12 -12
- package/skills/squish-memory/{openclaw.json → references/openclaw.json} +13 -13
- package/skills/squish-memory/{opencode.json → references/opencode.json} +14 -14
- package/.claude-plugin/marketplace.json +0 -20
- package/.claude-plugin/plugin.json +0 -32
- package/.env.mcp.example +0 -60
- package/.mcp.json +0 -11
- package/QUICK-START.md +0 -71
- package/bin/squish-add.mjs +0 -32
- package/bin/squish-rm.mjs +0 -21
- package/commands/context-paging.md +0 -51
- package/commands/context-status.md +0 -22
- package/commands/context.md +0 -5
- package/commands/core-memory.md +0 -56
- package/commands/health.md +0 -5
- package/commands/init.md +0 -39
- package/commands/merge.md +0 -113
- package/commands/observe.md +0 -5
- package/commands/recall.md +0 -5
- package/commands/remember.md +0 -11
- package/commands/search.md +0 -10
- package/config/mcp-cli-fallback-policy.json +0 -22
- package/config/mcp.json +0 -38
- package/config/plugin-manifest.json +0 -152
- package/config/plugin-manifest.schema.json +0 -244
- package/config/remote-memory-policy.json +0 -32
- package/dist/api/web/index.d.ts +0 -3
- package/dist/api/web/index.js +0 -4
- package/dist/api/web/web-server.d.ts +0 -3
- package/dist/api/web/web-server.js +0 -6
- package/dist/api/web/web.d.ts +0 -4
- package/dist/api/web/web.js +0 -639
- package/dist/commands/managed-sync.d.ts +0 -10
- package/dist/commands/managed-sync.js +0 -64
- package/dist/commands/mcp-server.d.ts +0 -3
- package/dist/commands/mcp-server.js +0 -393
- package/dist/core/context.js +0 -24
- package/dist/core/governance.js +0 -64
- package/dist/core/local-embeddings.d.ts +0 -6
- package/dist/core/local-embeddings.js +0 -20
- 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/observations.d.ts +0 -26
- package/dist/core/observations.js +0 -110
- package/dist/core/requirements.d.ts +0 -20
- package/dist/core/requirements.js +0 -35
- package/dist/core/search/qmd-search.d.ts +0 -61
- package/dist/core/search/qmd-search.js +0 -178
- package/dist/core/snapshots.d.ts +0 -29
- package/dist/core/snapshots.js +0 -220
- package/dist/core/sync/qmd-sync.d.ts +0 -106
- package/dist/core/sync/qmd-sync.js +0 -213
- package/dist/core/utils.js +0 -74
- package/dist/index.d.ts +0 -19
- package/dist/index.js +0 -997
- 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/hooks/hooks.json +0 -52
- package/hooks/post-tool-use.js +0 -26
- package/hooks/session-end.js +0 -28
- package/hooks/session-start.js +0 -33
- package/hooks/user-prompt-submit.js +0 -26
- package/hooks/utils.js +0 -153
- package/npx-installer.js +0 -208
- package/packages/plugin-claude-code/README.md +0 -73
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
- package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
- package/packages/plugin-claude-code/package.json +0 -31
- package/packages/plugin-openclaw/README.md +0 -70
- package/packages/plugin-openclaw/dist/index.d.ts +0 -49
- package/packages/plugin-openclaw/dist/index.js +0 -262
- package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
- package/packages/plugin-openclaw/package.json +0 -31
- package/packages/plugin-opencode/install.mjs +0 -217
- package/packages/plugin-opencode/package.json +0 -21
- package/plugin.json +0 -32
- package/scripts/build-release.sh +0 -36
- package/scripts/check-secrets.js +0 -132
- package/scripts/db/check-db.mjs +0 -88
- package/scripts/db/fix-all-columns.mjs +0 -52
- package/scripts/db/fix-schema-all.mjs +0 -55
- package/scripts/db/fix-schema-full.mjs +0 -46
- package/scripts/db/fix-schema.mjs +0 -38
- package/scripts/db/init-db.mjs +0 -13
- package/scripts/db/recreate-db.mjs +0 -14
- package/scripts/generate-mcp.mjs +0 -264
- package/scripts/github-release.sh +0 -77
- package/scripts/init-dirs.mjs +0 -13
- package/scripts/install-interactive.mjs +0 -677
- package/scripts/install-mcp.mjs +0 -116
- package/scripts/install-plugin.mjs +0 -415
- package/scripts/install-web.sh +0 -120
- package/scripts/install.mjs +0 -340
- package/scripts/openclaw-bootstrap.mjs +0 -127
- package/scripts/package-release.sh +0 -71
- package/scripts/remote-preflight.mjs +0 -62
- package/scripts/squish-fallback.mjs +0 -132
- package/scripts/test/test-all-systems.mjs +0 -139
- package/scripts/test/test-memory-system.mjs +0 -139
- package/scripts/test/test-v0.5.0.mjs +0 -210
- package/scripts/test-interactive.mjs +0 -131
- package/scripts/verify-mcp.mjs +0 -214
- package/skills/memory-guide/SKILL.md +0 -332
- package/skills/squish-cli/SKILL.md +0 -240
- package/skills/squish-mcp/SKILL.md +0 -355
- package/skills/squish-memory/install.mjs +0 -335
- package/skills/squish-memory/skill.json +0 -32
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
- /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
- /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
- /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
- /package/dist/core/{privacy.js → security/privacy.js} +0 -0
- /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
- /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
- /package/dist/core/{session-hooks → session}/session-hooks.d.ts +0 -0
- /package/dist/core/{session-hooks → session}/session-hooks.js +0 -0
- /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
- /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
- /package/dist/core/{database.js → storage/database.js} +0 -0
|
@@ -9,29 +9,43 @@ import { eq, and } from 'drizzle-orm';
|
|
|
9
9
|
import { logger } from '../../core/logger.js';
|
|
10
10
|
// Regex patterns for entity detection
|
|
11
11
|
const PATTERNS = {
|
|
12
|
-
// File paths: src/components/Button.tsx
|
|
12
|
+
// File paths: src/components/Button.tsx
|
|
13
13
|
filePath: /(?:^|[^\w])(?:\.?\/[\w.-]*[\w.-]*(?:\/[\w.-]+)*|[\w.-]+\.(?:ts|tsx|js|jsx|py|rb|go|java|cpp|c|h|json|yaml|yml|env|md|txt|csv|sql|graphql))\b/gm,
|
|
14
|
-
// Functions/methods
|
|
14
|
+
// Functions/methods
|
|
15
15
|
functionCall: /\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*(?=\()/g,
|
|
16
|
-
// Classes
|
|
16
|
+
// Classes
|
|
17
17
|
className: /\b(?:class|new|extends|implements)\s+([A-Z][a-zA-Z0-9_$]*)\b/g,
|
|
18
|
-
// Common names
|
|
18
|
+
// Common names
|
|
19
19
|
personName: /(?:^|[^.\w])\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)?)\b(?![^.\w])/g,
|
|
20
|
-
// Capitalized concepts
|
|
21
|
-
concept: /\b(?:[A-Z][a-z]+\s+)+(?:System|Architecture|Pattern|Model|Algorithm|Framework|Library|Process|Concept|
|
|
22
|
-
//
|
|
23
|
-
tool: /\b(?:React|Vue|Angular|Node\.?js?|Express|Django|Flask|FastAPI|PostgreSQL|MongoDB|Redis|Docker|Kubernetes
|
|
24
|
-
// Design patterns
|
|
25
|
-
designPattern: /\b(?:abstract\s+)?(?:factory|singleton|observer|decorator|strategy|adapter
|
|
26
|
-
// Techniques
|
|
27
|
-
technique: /\b(?:memoization|caching|lazy\s+loading|debouncing|throttling
|
|
28
|
-
// Quoted concepts and important terms
|
|
29
|
-
quotedConcept: /["`]([^"`]+)["`]/g,
|
|
20
|
+
// Capitalized concepts
|
|
21
|
+
concept: /\b(?:[A-Z][a-z]+\s+)+(?:System|Architecture|Pattern|Model|Algorithm|Framework|Library|Process|Concept|Method)\b/g,
|
|
22
|
+
// Tools
|
|
23
|
+
tool: /\b(?:React|Vue|Angular|Node\.?js?|Express|Django|Flask|FastAPI|PostgreSQL|MongoDB|Redis|Docker|Kubernetes)\b/g,
|
|
24
|
+
// Design patterns
|
|
25
|
+
designPattern: /\b(?:abstract\s+)?(?:factory|singleton|observer|decorator|strategy|adapter)\s+(?:pattern|method)\b/gi,
|
|
26
|
+
// Techniques
|
|
27
|
+
technique: /\b(?:memoization|caching|lazy\s+loading|debouncing|throttling)\b/gi,
|
|
30
28
|
// ISO dates
|
|
31
29
|
date: /\b(\d{4}-\d{2}-\d{2})(?:T\d{2}:\d{2}:\d{2})?\b/g,
|
|
32
|
-
// Common code keywords and variables
|
|
33
|
-
codeVariable: /\b(?:const|let|var|function|async|await|return|import|export|class|interface|type|enum)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,
|
|
34
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Extract unique entity names for auto-linking
|
|
33
|
+
*/
|
|
34
|
+
export function extractEntityNames(content) {
|
|
35
|
+
const names = new Set();
|
|
36
|
+
// Extract person names
|
|
37
|
+
const namePattern = /(?:^|[^.\w])\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)?)\b(?![^.\w])/g;
|
|
38
|
+
let match;
|
|
39
|
+
while ((match = namePattern.exec(content)) !== null) {
|
|
40
|
+
names.add(match[1].toLowerCase());
|
|
41
|
+
}
|
|
42
|
+
// Extract capitalized concepts
|
|
43
|
+
const conceptPattern = /\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)+\b/g;
|
|
44
|
+
while ((match = conceptPattern.exec(content)) !== null) {
|
|
45
|
+
names.add(match[0].toLowerCase());
|
|
46
|
+
}
|
|
47
|
+
return Array.from(names).slice(0, 10);
|
|
48
|
+
}
|
|
35
49
|
/**
|
|
36
50
|
* Extract entities from content
|
|
37
51
|
*/
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* NO FALLBACKS - real extraction or throw
|
|
4
4
|
*/
|
|
5
5
|
export async function extractQueryEntities(query, callClaudeFn) {
|
|
6
|
-
const prompt = `Extract entities from this question. Return ONLY JSON:
|
|
7
|
-
{
|
|
8
|
-
"primary": ["Alice", "project name"],
|
|
9
|
-
"secondary": ["team", "budget"],
|
|
10
|
-
"queryType": "factual"
|
|
11
|
-
}
|
|
12
|
-
|
|
6
|
+
const prompt = `Extract entities from this question. Return ONLY JSON:
|
|
7
|
+
{
|
|
8
|
+
"primary": ["Alice", "project name"],
|
|
9
|
+
"secondary": ["team", "budget"],
|
|
10
|
+
"queryType": "factual"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
13
|
Question: ${query}`;
|
|
14
14
|
const response = await callClaudeFn(prompt, 500);
|
|
15
15
|
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StoredBelief } from '../beliefs/types.js';
|
|
2
|
+
export interface MemoryInspection {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
classification: string;
|
|
6
|
+
reasons: string[];
|
|
7
|
+
rawFallbackSnapshotId?: string | null;
|
|
8
|
+
nuanceSuppressed: boolean;
|
|
9
|
+
place?: string | null;
|
|
10
|
+
placeType?: string | null;
|
|
11
|
+
graphStatus?: string | null;
|
|
12
|
+
content: string;
|
|
13
|
+
legacyMetadata: boolean;
|
|
14
|
+
beliefs?: StoredBelief[];
|
|
15
|
+
}
|
|
16
|
+
export declare function summarizeInspection(input: MemoryInspection): string;
|
|
17
|
+
export declare function explainMemory(id: string): Promise<MemoryInspection | null>;
|
|
18
|
+
//# sourceMappingURL=explain.d.ts.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { eq } from 'drizzle-orm';
|
|
2
|
+
import { getDbClient } from '../lib/db-client.js';
|
|
3
|
+
import { deserializeMetadata } from './serialization.js';
|
|
4
|
+
import { getMemorySnapshot } from '../snapshots/retrieval.js';
|
|
5
|
+
import { getMemoryPlace } from '../places/memory-places.js';
|
|
6
|
+
import { getPlace } from '../places/places.js';
|
|
7
|
+
import { getBeliefsForMemory } from '../beliefs/store.js';
|
|
8
|
+
export function summarizeInspection(input) {
|
|
9
|
+
const lines = [
|
|
10
|
+
`Memory ${input.id}`,
|
|
11
|
+
`Type: ${input.type}`,
|
|
12
|
+
`Classification: ${input.classification}`,
|
|
13
|
+
`Reasons: ${input.reasons.join('; ') || 'n/a'}`,
|
|
14
|
+
`Raw fallback: ${input.rawFallbackSnapshotId ?? 'none'}`,
|
|
15
|
+
`nuance suppressed: ${input.nuanceSuppressed ? 'yes' : 'no'}`,
|
|
16
|
+
`Place: ${input.place ?? 'none'}${input.placeType ? ` (${input.placeType})` : ''}`,
|
|
17
|
+
`Graph: ${input.graphStatus ?? 'none'}`,
|
|
18
|
+
`Content: ${input.content}`,
|
|
19
|
+
`Legacy metadata: ${input.legacyMetadata ? 'yes' : 'no'}`,
|
|
20
|
+
];
|
|
21
|
+
if (input.beliefs && input.beliefs.length > 0) {
|
|
22
|
+
lines.push('Beliefs:');
|
|
23
|
+
for (const belief of input.beliefs) {
|
|
24
|
+
const confidence = typeof belief.confidence === 'number' ? belief.confidence.toFixed(1) : '?';
|
|
25
|
+
const sourceCount = belief.sourceMemoryIds?.length ?? 1;
|
|
26
|
+
const origin = sourceCount > 1 ? `derived from ${sourceCount} memories` : 'derived from 1 memory';
|
|
27
|
+
const evidence = belief.evidenceSummary
|
|
28
|
+
? `\n Evidence: ${belief.evidenceSummary.slice(0, 100)}${belief.evidenceSummary.length > 100 ? '...' : ''}`
|
|
29
|
+
: '';
|
|
30
|
+
lines.push(`- [${belief.type}] ${belief.statement}`);
|
|
31
|
+
lines.push(` Status: ${belief.status}, Confidence: ${confidence}/100, ${origin}${evidence}`);
|
|
32
|
+
if (belief.status === 'superseded') {
|
|
33
|
+
lines.push(` Note: This belief supersedes a previous version`);
|
|
34
|
+
}
|
|
35
|
+
if (belief.status === 'disputed') {
|
|
36
|
+
lines.push(` Warning: This belief has been disputed`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
lines.push(`Beliefs: ${input.legacyMetadata ? 'No derived beliefs available for this legacy record' : 'none derived'}`);
|
|
42
|
+
}
|
|
43
|
+
return lines.join('\n');
|
|
44
|
+
}
|
|
45
|
+
export async function explainMemory(id) {
|
|
46
|
+
const { db, schema } = await getDbClient();
|
|
47
|
+
const rows = await db.select().from(schema.memories).where(eq(schema.memories.id, id)).limit(1);
|
|
48
|
+
const row = rows[0];
|
|
49
|
+
if (!row)
|
|
50
|
+
return null;
|
|
51
|
+
const metadata = deserializeMetadata(row.metadata ?? null);
|
|
52
|
+
const rawClassification = metadata?.signal?.classification ?? metadata?.classification ?? null;
|
|
53
|
+
const classification = typeof rawClassification === 'string' && rawClassification.trim().length > 0
|
|
54
|
+
? rawClassification
|
|
55
|
+
: 'legacy-durable';
|
|
56
|
+
const reasons = Array.isArray(metadata?.signal?.reasons)
|
|
57
|
+
? metadata?.signal?.reasons
|
|
58
|
+
: Array.isArray(metadata?.reasons)
|
|
59
|
+
? metadata?.reasons
|
|
60
|
+
: ['This record predates signal tracking, so detailed ingestion metadata is unavailable.'];
|
|
61
|
+
const rawFallbackSnapshotId = typeof metadata?.rawFallbackSnapshotId === 'string'
|
|
62
|
+
? metadata.rawFallbackSnapshotId
|
|
63
|
+
: null;
|
|
64
|
+
const nuanceSuppressed = Boolean(metadata?.signal?.nuanceSuppressed ?? metadata?.nuanceSuppressed);
|
|
65
|
+
const graphStatus = typeof metadata?.graphStatus === 'string'
|
|
66
|
+
? metadata.graphStatus
|
|
67
|
+
: typeof metadata?.graph === 'object' && metadata.graph
|
|
68
|
+
? JSON.stringify(metadata.graph)
|
|
69
|
+
: 'Unavailable for this legacy record';
|
|
70
|
+
const legacyMetadata = rawClassification == null;
|
|
71
|
+
const placeId = await getMemoryPlace(id);
|
|
72
|
+
const place = placeId ? await getPlace(placeId) : null;
|
|
73
|
+
if (rawFallbackSnapshotId) {
|
|
74
|
+
await getMemorySnapshot(rawFallbackSnapshotId);
|
|
75
|
+
}
|
|
76
|
+
const beliefs = await getBeliefsForMemory(id);
|
|
77
|
+
return {
|
|
78
|
+
id: row.id,
|
|
79
|
+
type: row.type,
|
|
80
|
+
classification,
|
|
81
|
+
reasons,
|
|
82
|
+
rawFallbackSnapshotId,
|
|
83
|
+
nuanceSuppressed,
|
|
84
|
+
place: place?.name ?? null,
|
|
85
|
+
placeType: place?.placeType ?? null,
|
|
86
|
+
graphStatus,
|
|
87
|
+
content: row.content,
|
|
88
|
+
legacyMetadata,
|
|
89
|
+
beliefs,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=explain.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fact Deriver
|
|
3
|
+
*
|
|
4
|
+
* Derives implicit facts from existing relationships in the knowledge graph.
|
|
5
|
+
* Example: works_on(A, X) + uses(X, Y) -> depends_on(A, Y)
|
|
6
|
+
*/
|
|
7
|
+
import type { RelationType } from '../graph/llm-entity-extractor.js';
|
|
8
|
+
export interface DerivedFact {
|
|
9
|
+
fromEntityId: string;
|
|
10
|
+
fromEntityName: string;
|
|
11
|
+
toEntityId: string;
|
|
12
|
+
toEntityName: string;
|
|
13
|
+
relationType: RelationType;
|
|
14
|
+
rule: string;
|
|
15
|
+
confidence: number;
|
|
16
|
+
isDerived: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Derive implicit facts from existing relationships in the knowledge graph.
|
|
20
|
+
* Applies transitivity and causal rules to find new relationships.
|
|
21
|
+
*/
|
|
22
|
+
export declare function deriveFacts(projectId: string, options?: {
|
|
23
|
+
maxDerivations?: number;
|
|
24
|
+
minConfidence?: number;
|
|
25
|
+
storeResults?: boolean;
|
|
26
|
+
}): Promise<DerivedFact[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Get all derived facts for a project.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getDerivedFacts(projectId: string): Promise<DerivedFact[]>;
|
|
31
|
+
//# sourceMappingURL=fact-deriver.d.ts.map
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fact Deriver
|
|
3
|
+
*
|
|
4
|
+
* Derives implicit facts from existing relationships in the knowledge graph.
|
|
5
|
+
* Example: works_on(A, X) + uses(X, Y) -> depends_on(A, Y)
|
|
6
|
+
*/
|
|
7
|
+
import { eq, and, or } from 'drizzle-orm';
|
|
8
|
+
import { getDb } from '../../db/index.js';
|
|
9
|
+
import { getSchema } from '../../db/schema.js';
|
|
10
|
+
import { logger } from '../logger.js';
|
|
11
|
+
const DERIVATION_RULES = [
|
|
12
|
+
// Transitivity rules
|
|
13
|
+
{
|
|
14
|
+
name: 'works_on_uses_depends_on',
|
|
15
|
+
fromType: 'works_on',
|
|
16
|
+
toType: 'uses',
|
|
17
|
+
derivedType: 'depends_on',
|
|
18
|
+
description: 'If A works on X and X uses Y, then A depends on Y',
|
|
19
|
+
confidence: 0.8,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'manages_works_oversees',
|
|
23
|
+
fromType: 'manages',
|
|
24
|
+
toType: 'works_on',
|
|
25
|
+
derivedType: 'oversees',
|
|
26
|
+
description: 'If A manages B and B works on X, then A oversees X',
|
|
27
|
+
confidence: 0.75,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'caused_affects_may_affect',
|
|
31
|
+
fromType: 'caused',
|
|
32
|
+
toType: 'affects',
|
|
33
|
+
derivedType: 'may_affect',
|
|
34
|
+
description: 'If X caused Y and Y affects Z, then X may affect Z',
|
|
35
|
+
confidence: 0.7,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'part_of_contains',
|
|
39
|
+
fromType: 'part_of',
|
|
40
|
+
toType: 'contains',
|
|
41
|
+
derivedType: 'related_to',
|
|
42
|
+
description: 'If A is part of X and X contains B, then A is related to B',
|
|
43
|
+
confidence: 0.6,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'uses_depends_on',
|
|
47
|
+
fromType: 'uses',
|
|
48
|
+
toType: 'depends_on',
|
|
49
|
+
derivedType: 'depends_on',
|
|
50
|
+
description: 'If A uses X and X depends on Y, then A depends on Y',
|
|
51
|
+
confidence: 0.85,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'created_resolved',
|
|
55
|
+
fromType: 'created',
|
|
56
|
+
toType: 'resolved',
|
|
57
|
+
derivedType: 'related_to',
|
|
58
|
+
description: 'If A created X and X was resolved by B, then A is related to B',
|
|
59
|
+
confidence: 0.5,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'blocks_depends_on',
|
|
63
|
+
fromType: 'blocks',
|
|
64
|
+
toType: 'depends_on',
|
|
65
|
+
derivedType: 'blocks',
|
|
66
|
+
description: 'If X blocks A and A depends on Y, then X may block Y',
|
|
67
|
+
confidence: 0.65,
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
// ─── Main Derivation Function ─────────────────────────────────────────────────
|
|
71
|
+
/**
|
|
72
|
+
* Derive implicit facts from existing relationships in the knowledge graph.
|
|
73
|
+
* Applies transitivity and causal rules to find new relationships.
|
|
74
|
+
*/
|
|
75
|
+
export async function deriveFacts(projectId, options) {
|
|
76
|
+
const { maxDerivations = 50, minConfidence = 0.6, storeResults = true } = options || {};
|
|
77
|
+
const db = await getDb();
|
|
78
|
+
const schema = await getSchema();
|
|
79
|
+
// Get all entities for this project
|
|
80
|
+
const entities = await db
|
|
81
|
+
.select()
|
|
82
|
+
.from(schema.entities)
|
|
83
|
+
.where(eq(schema.entities.projectId, projectId));
|
|
84
|
+
if (entities.length < 2)
|
|
85
|
+
return [];
|
|
86
|
+
const entityMap = new Map(entities.map((e) => [e.id, e]));
|
|
87
|
+
const derivedFacts = [];
|
|
88
|
+
// Get all relations for this project's entities
|
|
89
|
+
const entityIds = entities.map((e) => e.id);
|
|
90
|
+
const allRelations = [];
|
|
91
|
+
// Fetch in batches to avoid query size limits
|
|
92
|
+
const batchSize = 100;
|
|
93
|
+
for (let i = 0; i < entityIds.length; i += batchSize) {
|
|
94
|
+
const batch = entityIds.slice(i, i + batchSize);
|
|
95
|
+
const relations = await db
|
|
96
|
+
.select()
|
|
97
|
+
.from(schema.entityRelations)
|
|
98
|
+
.where(or(...batch.map((id) => eq(schema.entityRelations.fromEntityId, id))));
|
|
99
|
+
allRelations.push(...relations);
|
|
100
|
+
}
|
|
101
|
+
// Build adjacency list for fast lookup
|
|
102
|
+
const outgoing = new Map();
|
|
103
|
+
for (const rel of allRelations) {
|
|
104
|
+
if (!outgoing.has(rel.fromEntityId)) {
|
|
105
|
+
outgoing.set(rel.fromEntityId, new Map());
|
|
106
|
+
}
|
|
107
|
+
outgoing.get(rel.fromEntityId).set(rel.toEntityId, {
|
|
108
|
+
relationType: rel.type,
|
|
109
|
+
weight: rel.weight || 1,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Apply derivation rules
|
|
113
|
+
for (const rule of DERIVATION_RULES) {
|
|
114
|
+
if (derivedFacts.length >= maxDerivations)
|
|
115
|
+
break;
|
|
116
|
+
if (rule.confidence < minConfidence)
|
|
117
|
+
continue;
|
|
118
|
+
// Find all pairs where fromType matches
|
|
119
|
+
for (const [fromId, targets] of outgoing) {
|
|
120
|
+
if (derivedFacts.length >= maxDerivations)
|
|
121
|
+
break;
|
|
122
|
+
for (const [midId, fromRel] of targets) {
|
|
123
|
+
if (fromRel.relationType !== rule.fromType)
|
|
124
|
+
continue;
|
|
125
|
+
// Check if midId has outgoing toType relations
|
|
126
|
+
const midTargets = outgoing.get(midId);
|
|
127
|
+
if (!midTargets)
|
|
128
|
+
continue;
|
|
129
|
+
for (const [toId, toRel] of midTargets) {
|
|
130
|
+
if (toRel.relationType !== rule.toType)
|
|
131
|
+
continue;
|
|
132
|
+
// Found a derivation: fromId --fromType--> midId --toType--> toId
|
|
133
|
+
// Derive: fromId --derivedType--> toId
|
|
134
|
+
const fromEntity = entityMap.get(fromId);
|
|
135
|
+
const toEntity = entityMap.get(toId);
|
|
136
|
+
if (!fromEntity || !toEntity)
|
|
137
|
+
continue;
|
|
138
|
+
// Check if this derived relation already exists
|
|
139
|
+
const existing = await db
|
|
140
|
+
.select()
|
|
141
|
+
.from(schema.entityRelations)
|
|
142
|
+
.where(and(eq(schema.entityRelations.fromEntityId, fromId), eq(schema.entityRelations.toEntityId, toId), eq(schema.entityRelations.type, rule.derivedType)))
|
|
143
|
+
.limit(1);
|
|
144
|
+
if (existing.length > 0)
|
|
145
|
+
continue; // Already exists
|
|
146
|
+
const derivedFact = {
|
|
147
|
+
fromEntityId: fromId,
|
|
148
|
+
fromEntityName: fromEntity.name,
|
|
149
|
+
toEntityId: toId,
|
|
150
|
+
toEntityName: toEntity.name,
|
|
151
|
+
relationType: rule.derivedType,
|
|
152
|
+
rule: rule.name,
|
|
153
|
+
confidence: rule.confidence,
|
|
154
|
+
isDerived: true,
|
|
155
|
+
};
|
|
156
|
+
derivedFacts.push(derivedFact);
|
|
157
|
+
// Store the derived fact if requested
|
|
158
|
+
if (storeResults) {
|
|
159
|
+
try {
|
|
160
|
+
await db.insert(schema.entityRelations).values({
|
|
161
|
+
fromEntityId: fromId,
|
|
162
|
+
toEntityId: toId,
|
|
163
|
+
type: rule.derivedType,
|
|
164
|
+
weight: Math.round(rule.confidence * 10),
|
|
165
|
+
properties: {
|
|
166
|
+
derived: true,
|
|
167
|
+
rule: rule.name,
|
|
168
|
+
confidence: rule.confidence,
|
|
169
|
+
description: rule.description,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
logger.debug('Error storing derived fact', {
|
|
175
|
+
rule: rule.name,
|
|
176
|
+
from: fromEntity.name,
|
|
177
|
+
to: toEntity.name,
|
|
178
|
+
error: error,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
logger.info('Fact derivation completed', {
|
|
187
|
+
projectId,
|
|
188
|
+
derivedCount: derivedFacts.length,
|
|
189
|
+
rulesApplied: DERIVATION_RULES.length,
|
|
190
|
+
});
|
|
191
|
+
return derivedFacts;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get all derived facts for a project.
|
|
195
|
+
*/
|
|
196
|
+
export async function getDerivedFacts(projectId) {
|
|
197
|
+
const db = await getDb();
|
|
198
|
+
const schema = await getSchema();
|
|
199
|
+
// Get all entities for this project
|
|
200
|
+
const entities = await db
|
|
201
|
+
.select()
|
|
202
|
+
.from(schema.entities)
|
|
203
|
+
.where(eq(schema.entities.projectId, projectId));
|
|
204
|
+
const entityIds = entities.map((e) => e.id);
|
|
205
|
+
if (entityIds.length === 0)
|
|
206
|
+
return [];
|
|
207
|
+
// Get all derived relations
|
|
208
|
+
const derivedRelations = [];
|
|
209
|
+
const batchSize = 100;
|
|
210
|
+
for (let i = 0; i < entityIds.length; i += batchSize) {
|
|
211
|
+
const batch = entityIds.slice(i, i + batchSize);
|
|
212
|
+
const relations = await db
|
|
213
|
+
.select()
|
|
214
|
+
.from(schema.entityRelations)
|
|
215
|
+
.where(or(...batch.map((id) => eq(schema.entityRelations.fromEntityId, id))));
|
|
216
|
+
for (const rel of relations) {
|
|
217
|
+
const props = rel.properties;
|
|
218
|
+
if (props && props.derived === true) {
|
|
219
|
+
const fromEntity = entities.find((e) => e.id === rel.fromEntityId);
|
|
220
|
+
const toEntity = entities.find((e) => e.id === rel.toEntityId);
|
|
221
|
+
derivedRelations.push({
|
|
222
|
+
fromEntityId: rel.fromEntityId,
|
|
223
|
+
fromEntityName: fromEntity?.name || 'Unknown',
|
|
224
|
+
toEntityId: rel.toEntityId,
|
|
225
|
+
toEntityName: toEntity?.name || 'Unknown',
|
|
226
|
+
relationType: rel.type,
|
|
227
|
+
rule: props.rule || 'unknown',
|
|
228
|
+
confidence: props.confidence || 0.5,
|
|
229
|
+
isDerived: true,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return derivedRelations;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=fact-deriver.js.map
|
|
@@ -13,18 +13,18 @@ export async function extractFacts(text, callClaude) {
|
|
|
13
13
|
entities: []
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
const prompt = `Extract atomic facts from this conversation.
|
|
17
|
-
|
|
18
|
-
Requirements:
|
|
19
|
-
- Extract specific, verifiable facts (names, dates, numbers, relationships)
|
|
20
|
-
- Each fact should be a standalone statement
|
|
21
|
-
- Identify entities (people, organizations, projects, locations)
|
|
22
|
-
- Note temporal information and relationships
|
|
23
|
-
|
|
24
|
-
Return ONLY valid JSON in this exact format:
|
|
25
|
-
{"facts":[{"content":"fact statement","confidence":0.95,"entities":["Name"],"relation":"optional"}],"summary":"brief summary","entities":["all","entities"]}
|
|
26
|
-
|
|
27
|
-
Text to analyze:
|
|
16
|
+
const prompt = `Extract atomic facts from this conversation.
|
|
17
|
+
|
|
18
|
+
Requirements:
|
|
19
|
+
- Extract specific, verifiable facts (names, dates, numbers, relationships)
|
|
20
|
+
- Each fact should be a standalone statement
|
|
21
|
+
- Identify entities (people, organizations, projects, locations)
|
|
22
|
+
- Note temporal information and relationships
|
|
23
|
+
|
|
24
|
+
Return ONLY valid JSON in this exact format:
|
|
25
|
+
{"facts":[{"content":"fact statement","confidence":0.95,"entities":["Name"],"relation":"optional"}],"summary":"brief summary","entities":["all","entities"]}
|
|
26
|
+
|
|
27
|
+
Text to analyze:
|
|
28
28
|
${text.substring(0, 4000)}`;
|
|
29
29
|
const response = await callClaude(prompt, 2000);
|
|
30
30
|
// Extract JSON - look for the first { and last }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { logger } from '../logger.js';
|
|
3
3
|
import { config } from '../../config.js';
|
|
4
4
|
import { getDb } from '../../db/index.js';
|
|
5
|
-
import { memoryFeedback, memories } from '../../drizzle/schema-sqlite.js';
|
|
5
|
+
import { memoryFeedback, memories } from '../../db/drizzle/schema-sqlite.js';
|
|
6
6
|
import { eq, and } from 'drizzle-orm';
|
|
7
7
|
import { analyzeResponseForMemoryReferences, mightContainMemoryReferences } from './response-analyzer.js';
|
|
8
8
|
const injectionTracker = new Map();
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Lifecycle Hooks
|
|
3
|
+
*
|
|
4
|
+
* Provides event hooks for memory operations:
|
|
5
|
+
* - memoryCreated: When a memory is stored (DB or markdown files)
|
|
6
|
+
* - memoryUpdated: When a memory is updated
|
|
7
|
+
* - memoryDeleted: When a memory is deleted
|
|
8
|
+
* - tierChange: When memory tier changes (hot/warm/cold)
|
|
9
|
+
* - decayApplied: When decay score is updated
|
|
10
|
+
*
|
|
11
|
+
* Each hook can have sync and async handlers.
|
|
12
|
+
* Usage: Register handlers to auto-capture, sync to external systems, etc.
|
|
13
|
+
*/
|
|
14
|
+
export type HookEvent = 'memoryCreated' | 'memoryUpdated' | 'memoryDeleted' | 'tierChange' | 'decayApplied';
|
|
15
|
+
export interface MemoryHookContext {
|
|
16
|
+
memoryId: string;
|
|
17
|
+
content: string;
|
|
18
|
+
type: string;
|
|
19
|
+
tags: string[];
|
|
20
|
+
project?: string;
|
|
21
|
+
source?: string;
|
|
22
|
+
tier?: string;
|
|
23
|
+
importance?: number;
|
|
24
|
+
oldContent?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TierChangeContext extends MemoryHookContext {
|
|
27
|
+
oldTier: string;
|
|
28
|
+
newTier: string;
|
|
29
|
+
}
|
|
30
|
+
export interface DecayContext extends MemoryHookContext {
|
|
31
|
+
oldScore: number;
|
|
32
|
+
newScore: number;
|
|
33
|
+
}
|
|
34
|
+
export type HookHandler<T = MemoryHookContext> = (context: T) => void | Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Register a hook handler for a specific event
|
|
37
|
+
*/
|
|
38
|
+
export declare function registerHook(event: HookEvent, handler: HookHandler, priority?: number): void;
|
|
39
|
+
/**
|
|
40
|
+
* Unregister a hook handler
|
|
41
|
+
*/
|
|
42
|
+
export declare function unregisterHook(event: HookEvent, handler: HookHandler): void;
|
|
43
|
+
/**
|
|
44
|
+
* Clear all hooks for an event
|
|
45
|
+
*/
|
|
46
|
+
export declare function clearHooks(event?: HookEvent): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get registered hooks for an event
|
|
49
|
+
*/
|
|
50
|
+
export declare function getHooks(event: HookEvent): HookHandler[];
|
|
51
|
+
/**
|
|
52
|
+
* List all registered hooks (for debugging)
|
|
53
|
+
*/
|
|
54
|
+
export declare function listHooks(): {
|
|
55
|
+
event: HookEvent;
|
|
56
|
+
priority: number;
|
|
57
|
+
}[];
|
|
58
|
+
/**
|
|
59
|
+
* Trigger memoryCreated hooks
|
|
60
|
+
* Called when a memory is stored in DB or markdown files
|
|
61
|
+
*/
|
|
62
|
+
export declare function triggerMemoryCreated(context: MemoryHookContext): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Trigger memoryUpdated hooks
|
|
65
|
+
* Called when a memory content/tags/etc changes
|
|
66
|
+
*/
|
|
67
|
+
export declare function triggerMemoryUpdated(context: MemoryHookContext, oldContent?: string): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Trigger memoryDeleted hooks
|
|
70
|
+
* Called when a memory is deleted
|
|
71
|
+
*/
|
|
72
|
+
export declare function triggerMemoryDeleted(context: MemoryHookContext): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Trigger tierChange hooks
|
|
75
|
+
* Called when memory tier changes
|
|
76
|
+
*/
|
|
77
|
+
export declare function triggerTierChange(context: TierChangeContext): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Trigger decayApplied hooks
|
|
80
|
+
* Called when memory decay score changes
|
|
81
|
+
*/
|
|
82
|
+
export declare function triggerDecayApplied(context: DecayContext): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Built-in hook: Auto-save to memory files when storing to DB
|
|
85
|
+
* Use this to have dual storage (DB + markdown files)
|
|
86
|
+
*/
|
|
87
|
+
export declare function createMarkdownAutoSyncHook(): (context: MemoryHookContext) => Promise<void>;
|
|
88
|
+
//# sourceMappingURL=hooks.d.ts.map
|