squish-memory 1.1.5 → 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 +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 +46 -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/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/{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/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 +40 -17
- package/dist/config.js +150 -198
- package/dist/core/adapters/types.d.ts +13 -33
- package/dist/core/adapters/types.js +1 -1
- package/dist/core/agent-preferences.d.ts +16 -0
- package/dist/core/agent-preferences.js +124 -0
- package/dist/core/algorithms/safety/safety-checks.d.ts +1 -5
- package/dist/core/algorithms/types.d.ts +0 -8
- package/dist/core/associations.d.ts +3 -1
- package/dist/core/associations.js +37 -1
- 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 +0 -1
- package/dist/core/commands/mcp-server.js +4 -737
- package/dist/core/commands/remember.d.ts +24 -0
- package/dist/core/commands/remember.js +144 -0
- package/dist/core/{toon.d.ts → compression.d.ts} +6 -4
- package/dist/core/{toon.js → compression.js} +8 -8
- package/dist/core/context/agent-context.js +1 -1
- 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/{local-embeddings.d.ts → embeddings/local-embeddings.d.ts} +1 -1
- 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 -453
- 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 +10 -1
- package/dist/core/hooks/agent-hooks.js +301 -24
- 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/ingestion/core-memory.d.ts +2 -2
- package/dist/core/ingestion/core-memory.js +3 -3
- package/dist/core/ingestion/learnings.js +3 -0
- package/dist/core/ingestion/signal-engine.d.ts +41 -0
- package/dist/core/ingestion/signal-engine.js +201 -0
- package/dist/core/{obsidian-vault.d.ts → integrations/obsidian-vault.d.ts} +2 -1
- package/dist/core/{obsidian-vault.js → integrations/obsidian-vault.js} +69 -7
- 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 +57 -54
- package/dist/core/lib/types.d.ts +45 -0
- package/dist/core/lib/types.js +6 -0
- package/dist/core/lib/utils.d.ts +4 -0
- package/dist/core/lib/utils.js +55 -0
- package/dist/core/lifecycle.d.ts +0 -1
- package/dist/core/lifecycle.js +13 -23
- package/dist/core/logger.d.ts +1 -0
- package/dist/core/logger.js +14 -8
- package/dist/core/mcp/tools.d.ts +0 -2
- package/dist/core/mcp/tools.js +0 -87
- package/dist/core/mcp/types.d.ts +25 -253
- package/dist/core/mcp/types.js +2 -2
- package/dist/core/memory/categorizer.js +1 -0
- package/dist/core/memory/consolidation.js +2 -28
- package/dist/core/memory/entity-extractor.d.ts +4 -0
- package/dist/core/memory/entity-extractor.js +30 -16
- 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/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 +10 -7
- package/dist/core/memory/hybrid-search.js +458 -221
- package/dist/core/memory/importance.d.ts +0 -17
- package/dist/core/memory/importance.js +1 -58
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.js +1 -0
- package/dist/core/memory/memories.d.ts +13 -17
- package/dist/core/memory/memories.js +78 -75
- package/dist/core/memory/memory-lifecycle.d.ts +2 -2
- package/dist/core/memory/memory-lifecycle.js +10 -18
- package/dist/core/memory/normalization.d.ts +1 -16
- package/dist/core/memory/path-strengthener.d.ts +39 -0
- package/dist/core/memory/path-strengthener.js +150 -0
- package/dist/core/memory/query-processor.js +37 -3
- package/dist/core/memory/retrieval-feedback.d.ts +70 -0
- package/dist/core/memory/retrieval-feedback.js +213 -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 +10 -0
- package/dist/core/memory/stats.js +8 -3
- package/dist/core/memory/trigger-detector.d.ts +8 -1
- package/dist/core/memory/trigger-detector.js +42 -5
- package/dist/core/places/index.d.ts +1 -1
- package/dist/core/places/index.js +1 -1
- package/dist/core/places/places.d.ts +13 -13
- package/dist/core/places/places.js +27 -27
- package/dist/core/places/rules.js +23 -23
- package/dist/core/places/walking.d.ts +3 -3
- package/dist/core/places/walking.js +7 -7
- package/dist/core/projects.js +8 -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 +164 -3
- package/dist/core/scheduler/job-runner.js +1 -1
- package/dist/core/search/qmd-wrapper.d.ts +36 -0
- package/dist/core/search/qmd-wrapper.js +58 -0
- package/dist/core/session/auto-load.js +28 -3
- package/dist/core/session/entity-tracker.d.ts +62 -0
- package/dist/core/session/entity-tracker.js +287 -0
- package/dist/core/session/reference-resolver.d.ts +26 -0
- package/dist/core/session/reference-resolver.js +121 -0
- package/dist/core/session/self-iteration-job.d.ts +15 -0
- package/dist/core/session/self-iteration-job.js +163 -58
- 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/utils/summarization-helpers.d.ts +0 -4
- package/dist/core/utils/summarization-helpers.js +1 -6
- package/dist/db/bootstrap.d.ts +2 -0
- package/dist/db/bootstrap.js +229 -280
- package/dist/db/drizzle/schema-sqlite.d.ts +702 -1
- package/dist/db/drizzle/schema-sqlite.js +83 -4
- package/dist/db/drizzle/schema.d.ts +653 -1
- package/dist/db/drizzle/schema.js +93 -4
- 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/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 +19 -20
- package/dist/db/schema/index.js +25 -79
- 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/packages/mcp/src/index.d.ts +3 -0
- package/dist/packages/mcp/src/index.js +733 -0
- package/mcp.json.example +8 -11
- package/package.json +57 -76
- 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 +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/core/commands/managed-sync.d.ts +0 -10
- package/dist/core/commands/managed-sync.js +0 -64
- package/dist/core/external-folder/index.d.ts +0 -102
- package/dist/core/external-folder/index.js +0 -294
- 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/search/qmd-search.d.ts +0 -61
- package/dist/core/search/qmd-search.js +0 -178
- 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.d.ts +0 -29
- package/dist/core/snapshots.js +0 -220
- package/dist/core/sync/qmd-sync.d.ts +0 -94
- package/dist/core/sync/qmd-sync.js +0 -201
- 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,64 +0,0 @@
|
|
|
1
|
-
import { MCPClient } from '../../core/mcp/client.js';
|
|
2
|
-
import { config } from '../../config.js';
|
|
3
|
-
import { logger } from '../../core/logger.js';
|
|
4
|
-
import { search, rememberMemory } from '../../core/memory/memories.js';
|
|
5
|
-
export class ManagedSync {
|
|
6
|
-
client;
|
|
7
|
-
syncEnabled;
|
|
8
|
-
constructor() {
|
|
9
|
-
this.syncEnabled = config.managedMode && !!config.managedApiKey;
|
|
10
|
-
this.client = new MCPClient(config.managedApiUrl);
|
|
11
|
-
}
|
|
12
|
-
async sync() {
|
|
13
|
-
if (!this.syncEnabled) {
|
|
14
|
-
logger.debug('Managed sync disabled');
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
await this.client.initialize();
|
|
19
|
-
logger.info('Connected to managed storage');
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
logger.error('Managed sync connection failed:', error);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
async pushMemory(memoryId) {
|
|
26
|
-
if (!this.syncEnabled)
|
|
27
|
-
return;
|
|
28
|
-
try {
|
|
29
|
-
const memory = await search({ query: memoryId, limit: 1 });
|
|
30
|
-
if (memory.length > 0) {
|
|
31
|
-
await this.client.callTool('managed_memory_store', {
|
|
32
|
-
memory: memory[0],
|
|
33
|
-
});
|
|
34
|
-
logger.debug(`Pushed memory ${memoryId} to managed storage`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
logger.error(`Failed to push memory ${memoryId}:`, error);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async pullMemory(memoryId) {
|
|
42
|
-
if (!this.syncEnabled)
|
|
43
|
-
return;
|
|
44
|
-
try {
|
|
45
|
-
const result = await this.client.callTool('managed_memory_retrieve', {
|
|
46
|
-
memoryId,
|
|
47
|
-
});
|
|
48
|
-
if (result.content[0]?.text) {
|
|
49
|
-
const memory = JSON.parse(result.content[0].text);
|
|
50
|
-
await rememberMemory(memory);
|
|
51
|
-
logger.debug(`Pulled memory ${memoryId} from managed storage`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
logger.error(`Failed to pull memory ${memoryId}:`, error);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export async function startManagedSync() {
|
|
60
|
-
const sync = new ManagedSync();
|
|
61
|
-
await sync.sync();
|
|
62
|
-
return sync;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=managed-sync.js.map
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External Folder Memory Manager
|
|
3
|
-
*
|
|
4
|
-
* Wraps QMD to treat an external folder as a secondary memory layer.
|
|
5
|
-
* - Writes hot memories to daily notes (YYYY-MM-DD.md) with frontmatter
|
|
6
|
-
* - Uses QMD to search both Squish DB and external folder
|
|
7
|
-
* - Auto-indexes on mount and write
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* squish mount /path/to/folder # Enable external memory
|
|
11
|
-
* squish mount status # Show status
|
|
12
|
-
* squish mount unmount # Disable
|
|
13
|
-
*/
|
|
14
|
-
import type { MemoryRecord, MemoryType } from '../memory/memories.js';
|
|
15
|
-
export interface ExternalMemoryConfig {
|
|
16
|
-
enabled: boolean;
|
|
17
|
-
path: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ExternalMemoryStatus {
|
|
20
|
-
mounted: boolean;
|
|
21
|
-
path: string | null;
|
|
22
|
-
qmdIndexed: boolean;
|
|
23
|
-
memoryCount: number;
|
|
24
|
-
lastIndexed: string | null;
|
|
25
|
-
}
|
|
26
|
-
export interface MemoryAsMarkdown {
|
|
27
|
-
id: string;
|
|
28
|
-
type: MemoryType;
|
|
29
|
-
content: string;
|
|
30
|
-
tags: string[];
|
|
31
|
-
createdAt: string;
|
|
32
|
-
confidence?: string;
|
|
33
|
-
projectId?: string | null;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* External Folder Memory Manager class
|
|
37
|
-
*/
|
|
38
|
-
export declare class ExternalFolderMemory {
|
|
39
|
-
private mountedPath;
|
|
40
|
-
/**
|
|
41
|
-
* Check if external memory is enabled and mounted
|
|
42
|
-
*/
|
|
43
|
-
isEnabled(): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Get the mounted path
|
|
46
|
-
*/
|
|
47
|
-
getPath(): string | null;
|
|
48
|
-
/**
|
|
49
|
-
* Mount external memory at a path
|
|
50
|
-
* Creates folder if needed, initializes structure
|
|
51
|
-
*/
|
|
52
|
-
mount(path: string): Promise<{
|
|
53
|
-
success: boolean;
|
|
54
|
-
error?: string;
|
|
55
|
-
}>;
|
|
56
|
-
/**
|
|
57
|
-
* Unmount external memory
|
|
58
|
-
*/
|
|
59
|
-
unmount(): {
|
|
60
|
-
success: boolean;
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Ensure QMD indexes the external folder
|
|
64
|
-
*/
|
|
65
|
-
ensureIndexed(folderPath?: string): Promise<boolean>;
|
|
66
|
-
/**
|
|
67
|
-
* Write a memory to the external folder (daily note)
|
|
68
|
-
*/
|
|
69
|
-
writeMemory(memory: MemoryAsMarkdown): Promise<{
|
|
70
|
-
success: boolean;
|
|
71
|
-
error?: string;
|
|
72
|
-
}>;
|
|
73
|
-
/**
|
|
74
|
-
* Trigger background re-index via QMD
|
|
75
|
-
*/
|
|
76
|
-
private triggerReindex;
|
|
77
|
-
/**
|
|
78
|
-
* Get current status of external memory
|
|
79
|
-
*/
|
|
80
|
-
getStatus(): Promise<ExternalMemoryStatus>;
|
|
81
|
-
/**
|
|
82
|
-
* Check if folder is indexed by QMD
|
|
83
|
-
*/
|
|
84
|
-
private checkQMDIndexed;
|
|
85
|
-
/**
|
|
86
|
-
* Convert a MemoryRecord to MemoryAsMarkdown format
|
|
87
|
-
*/
|
|
88
|
-
toMarkdownFormat(memory: MemoryRecord): MemoryAsMarkdown;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get the singleton ExternalFolderMemory instance
|
|
92
|
-
*/
|
|
93
|
-
export declare function getExternalMemory(): ExternalFolderMemory;
|
|
94
|
-
/**
|
|
95
|
-
* Check if external memory is enabled
|
|
96
|
-
*/
|
|
97
|
-
export declare function isExternalMemoryEnabled(): boolean;
|
|
98
|
-
/**
|
|
99
|
-
* Get external memory path
|
|
100
|
-
*/
|
|
101
|
-
export declare function getExternalMemoryPath(): string | null;
|
|
102
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External Folder Memory Manager
|
|
3
|
-
*
|
|
4
|
-
* Wraps QMD to treat an external folder as a secondary memory layer.
|
|
5
|
-
* - Writes hot memories to daily notes (YYYY-MM-DD.md) with frontmatter
|
|
6
|
-
* - Uses QMD to search both Squish DB and external folder
|
|
7
|
-
* - Auto-indexes on mount and write
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* squish mount /path/to/folder # Enable external memory
|
|
11
|
-
* squish mount status # Show status
|
|
12
|
-
* squish mount unmount # Disable
|
|
13
|
-
*/
|
|
14
|
-
import { existsSync, mkdirSync, appendFileSync } from 'fs';
|
|
15
|
-
import { join } from 'path';
|
|
16
|
-
import { spawn } from 'child_process';
|
|
17
|
-
import { logger } from '../logger.js';
|
|
18
|
-
import { config } from '../../config.js';
|
|
19
|
-
/**
|
|
20
|
-
* Format a memory as markdown with YAML frontmatter
|
|
21
|
-
*/
|
|
22
|
-
function formatMemoryAsMarkdown(memory) {
|
|
23
|
-
const frontmatter = [
|
|
24
|
-
'---',
|
|
25
|
-
`id: ${memory.id}`,
|
|
26
|
-
`type: ${memory.type}`,
|
|
27
|
-
`tags: [${memory.tags.join(', ')}]`,
|
|
28
|
-
`created: ${memory.createdAt}`,
|
|
29
|
-
];
|
|
30
|
-
if (memory.confidence) {
|
|
31
|
-
frontmatter.push(`confidence: ${memory.confidence}`);
|
|
32
|
-
}
|
|
33
|
-
if (memory.projectId) {
|
|
34
|
-
frontmatter.push(`project: ${memory.projectId}`);
|
|
35
|
-
}
|
|
36
|
-
frontmatter.push('---', '', memory.content);
|
|
37
|
-
return frontmatter.join('\n');
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Get the daily note filename for a given date
|
|
41
|
-
*/
|
|
42
|
-
function getDailyNotePath(folderPath, date) {
|
|
43
|
-
const year = date.getFullYear();
|
|
44
|
-
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
45
|
-
const day = String(date.getDate()).padStart(2, '0');
|
|
46
|
-
return join(folderPath, `${year}-${month}-${day}.md`);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Get today's date string
|
|
50
|
-
*/
|
|
51
|
-
function getTodayDateStr() {
|
|
52
|
-
const today = new Date();
|
|
53
|
-
const year = today.getFullYear();
|
|
54
|
-
const month = String(today.getMonth() + 1).padStart(2, '0');
|
|
55
|
-
const day = String(today.getDate()).padStart(2, '0');
|
|
56
|
-
return `${year}-${month}-${day}`;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* External Folder Memory Manager class
|
|
60
|
-
*/
|
|
61
|
-
export class ExternalFolderMemory {
|
|
62
|
-
mountedPath = null;
|
|
63
|
-
/**
|
|
64
|
-
* Check if external memory is enabled and mounted
|
|
65
|
-
*/
|
|
66
|
-
isEnabled() {
|
|
67
|
-
return config.externalMemoryEnabled && !!config.externalMemoryPath;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get the mounted path
|
|
71
|
-
*/
|
|
72
|
-
getPath() {
|
|
73
|
-
return this.isEnabled() ? config.externalMemoryPath : null;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Mount external memory at a path
|
|
77
|
-
* Creates folder if needed, initializes structure
|
|
78
|
-
*/
|
|
79
|
-
async mount(path) {
|
|
80
|
-
if (!path) {
|
|
81
|
-
return { success: false, error: 'Path is required' };
|
|
82
|
-
}
|
|
83
|
-
// Resolve to absolute path
|
|
84
|
-
const absolutePath = join(process.cwd(), path);
|
|
85
|
-
// Security: validate path doesn't escape cwd (prevent path traversal)
|
|
86
|
-
const resolvedPath = absolutePath.split(/[\\/]/).join('/');
|
|
87
|
-
const cwdPath = process.cwd().split(/[\\/]/).join('/');
|
|
88
|
-
if (!resolvedPath.startsWith(cwdPath + '/') && resolvedPath !== cwdPath) {
|
|
89
|
-
return { success: false, error: 'Path traversal not allowed' };
|
|
90
|
-
}
|
|
91
|
-
// Create folder if it doesn't exist
|
|
92
|
-
if (!existsSync(absolutePath)) {
|
|
93
|
-
try {
|
|
94
|
-
mkdirSync(absolutePath, { recursive: true });
|
|
95
|
-
logger.info(`[ExternalMemory] Created folder: ${absolutePath}`);
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
return { success: false, error: `Failed to create folder: ${error}` };
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Initialize QMD index for this folder
|
|
102
|
-
const indexed = await this.ensureIndexed(absolutePath);
|
|
103
|
-
if (!indexed) {
|
|
104
|
-
logger.warn('[ExternalMemory] QMD not found or indexing failed. Install with: bun install -g qmd');
|
|
105
|
-
}
|
|
106
|
-
this.mountedPath = absolutePath;
|
|
107
|
-
logger.info(`[ExternalMemory] Mounted at: ${absolutePath}`);
|
|
108
|
-
return { success: true };
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Unmount external memory
|
|
112
|
-
*/
|
|
113
|
-
unmount() {
|
|
114
|
-
this.mountedPath = null;
|
|
115
|
-
logger.info('[ExternalMemory] Unmounted');
|
|
116
|
-
return { success: true };
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Ensure QMD indexes the external folder
|
|
120
|
-
*/
|
|
121
|
-
async ensureIndexed(folderPath) {
|
|
122
|
-
const targetPath = folderPath || this.getPath();
|
|
123
|
-
if (!targetPath) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
return new Promise((resolve) => {
|
|
127
|
-
// Run qmd add to index the folder
|
|
128
|
-
const process = spawn('qmd', ['add', targetPath], {
|
|
129
|
-
stdio: 'ignore'
|
|
130
|
-
});
|
|
131
|
-
process.on('close', (code) => {
|
|
132
|
-
if (code === 0) {
|
|
133
|
-
logger.info(`[ExternalMemory] Indexed folder: ${targetPath}`);
|
|
134
|
-
resolve(true);
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
logger.warn(`[ExternalMemory] QMD add failed with code: ${code}`);
|
|
138
|
-
resolve(false);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
process.on('error', (error) => {
|
|
142
|
-
logger.warn(`[ExternalMemory] QMD add error: ${error}`);
|
|
143
|
-
resolve(false);
|
|
144
|
-
});
|
|
145
|
-
// Timeout after 30 seconds
|
|
146
|
-
setTimeout(() => {
|
|
147
|
-
process.kill();
|
|
148
|
-
resolve(false);
|
|
149
|
-
}, 30000);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Write a memory to the external folder (daily note)
|
|
154
|
-
*/
|
|
155
|
-
async writeMemory(memory) {
|
|
156
|
-
const folderPath = this.getPath();
|
|
157
|
-
if (!folderPath) {
|
|
158
|
-
return { success: false, error: 'External memory not enabled' };
|
|
159
|
-
}
|
|
160
|
-
try {
|
|
161
|
-
const date = memory.createdAt ? new Date(memory.createdAt) : new Date();
|
|
162
|
-
const dailyNotePath = getDailyNotePath(folderPath, date);
|
|
163
|
-
const dateStr = getTodayDateStr();
|
|
164
|
-
// Build memory block content
|
|
165
|
-
const memoryBlock = formatMemoryAsMarkdown(memory);
|
|
166
|
-
// Check if daily note exists, if not create with header
|
|
167
|
-
if (!existsSync(dailyNotePath)) {
|
|
168
|
-
const header = `# ${dateStr}\n\n## Squish Memories\n\n---\n\n`;
|
|
169
|
-
appendFileSync(dailyNotePath, header, 'utf-8');
|
|
170
|
-
logger.info(`[ExternalMemory] Created daily note: ${dailyNotePath}`);
|
|
171
|
-
}
|
|
172
|
-
// Append memory block with separator
|
|
173
|
-
appendFileSync(dailyNotePath, '\n---\n\n' + memoryBlock + '\n', 'utf-8');
|
|
174
|
-
logger.info(`[ExternalMemory] Wrote memory ${memory.id} to ${dateStr}.md`);
|
|
175
|
-
// Trigger QMD re-index (background)
|
|
176
|
-
this.triggerReindex().catch(() => { });
|
|
177
|
-
return { success: true };
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
181
|
-
logger.error(`[ExternalMemory] Write failed: ${errorMsg}`);
|
|
182
|
-
return { success: false, error: errorMsg };
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Trigger background re-index via QMD
|
|
187
|
-
*/
|
|
188
|
-
async triggerReindex() {
|
|
189
|
-
const folderPath = this.getPath();
|
|
190
|
-
if (!folderPath)
|
|
191
|
-
return;
|
|
192
|
-
// Run qmd in background to re-index
|
|
193
|
-
spawn('qmd', ['add', folderPath], {
|
|
194
|
-
stdio: 'ignore',
|
|
195
|
-
detached: true
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Get current status of external memory
|
|
200
|
-
*/
|
|
201
|
-
async getStatus() {
|
|
202
|
-
const path = this.getPath();
|
|
203
|
-
if (!path || !existsSync(path)) {
|
|
204
|
-
return {
|
|
205
|
-
mounted: false,
|
|
206
|
-
path: null,
|
|
207
|
-
qmdIndexed: false,
|
|
208
|
-
memoryCount: 0,
|
|
209
|
-
lastIndexed: null
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
// Count .md files and memories
|
|
213
|
-
let memoryCount = 0;
|
|
214
|
-
try {
|
|
215
|
-
const { readdirSync } = await import('fs');
|
|
216
|
-
const files = readdirSync(path).filter(f => f.endsWith('.md'));
|
|
217
|
-
memoryCount = files.length;
|
|
218
|
-
}
|
|
219
|
-
catch {
|
|
220
|
-
// Ignore
|
|
221
|
-
}
|
|
222
|
-
// Check if QMD has this folder indexed (via qmd list)
|
|
223
|
-
const qmdIndexed = await this.checkQMDIndexed(path);
|
|
224
|
-
return {
|
|
225
|
-
mounted: true,
|
|
226
|
-
path,
|
|
227
|
-
qmdIndexed,
|
|
228
|
-
memoryCount,
|
|
229
|
-
lastIndexed: null
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Check if folder is indexed by QMD
|
|
234
|
-
*/
|
|
235
|
-
async checkQMDIndexed(folderPath) {
|
|
236
|
-
return new Promise((resolve) => {
|
|
237
|
-
const process = spawn('qmd', ['list'], {
|
|
238
|
-
stdio: 'pipe'
|
|
239
|
-
});
|
|
240
|
-
let output = '';
|
|
241
|
-
process.stdout?.on('data', (data) => {
|
|
242
|
-
output += data.toString();
|
|
243
|
-
});
|
|
244
|
-
process.on('close', () => {
|
|
245
|
-
resolve(output.includes(folderPath));
|
|
246
|
-
});
|
|
247
|
-
process.on('error', () => {
|
|
248
|
-
resolve(false);
|
|
249
|
-
});
|
|
250
|
-
setTimeout(() => {
|
|
251
|
-
process.kill();
|
|
252
|
-
resolve(false);
|
|
253
|
-
}, 5000);
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Convert a MemoryRecord to MemoryAsMarkdown format
|
|
258
|
-
*/
|
|
259
|
-
toMarkdownFormat(memory) {
|
|
260
|
-
return {
|
|
261
|
-
id: memory.id,
|
|
262
|
-
type: memory.type,
|
|
263
|
-
content: memory.content,
|
|
264
|
-
tags: memory.tags || [],
|
|
265
|
-
createdAt: memory.createdAt || new Date().toISOString(),
|
|
266
|
-
confidence: memory.confidenceLevel || undefined,
|
|
267
|
-
projectId: memory.projectId
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// Singleton instance
|
|
272
|
-
let externalMemoryInstance = null;
|
|
273
|
-
/**
|
|
274
|
-
* Get the singleton ExternalFolderMemory instance
|
|
275
|
-
*/
|
|
276
|
-
export function getExternalMemory() {
|
|
277
|
-
if (!externalMemoryInstance) {
|
|
278
|
-
externalMemoryInstance = new ExternalFolderMemory();
|
|
279
|
-
}
|
|
280
|
-
return externalMemoryInstance;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Check if external memory is enabled
|
|
284
|
-
*/
|
|
285
|
-
export function isExternalMemoryEnabled() {
|
|
286
|
-
return getExternalMemory().isEnabled();
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Get external memory path
|
|
290
|
-
*/
|
|
291
|
-
export function getExternalMemoryPath() {
|
|
292
|
-
return getExternalMemory().getPath();
|
|
293
|
-
}
|
|
294
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/** Namespace Management - Hierarchical folder-like namespaces for memories */
|
|
2
|
-
export type NamespaceType = 'root' | 'user' | 'agent' | 'project' | 'custom';
|
|
3
|
-
export interface Namespace {
|
|
4
|
-
id: string;
|
|
5
|
-
projectId: string;
|
|
6
|
-
name: string;
|
|
7
|
-
parentId: string | null;
|
|
8
|
-
type: NamespaceType;
|
|
9
|
-
description: string | null;
|
|
10
|
-
path: string;
|
|
11
|
-
children?: Namespace[];
|
|
12
|
-
createdAt: Date;
|
|
13
|
-
updatedAt: Date;
|
|
14
|
-
}
|
|
15
|
-
export interface NamespaceCreateInput {
|
|
16
|
-
projectId: string;
|
|
17
|
-
name: string;
|
|
18
|
-
type: NamespaceType;
|
|
19
|
-
parentId?: string | null;
|
|
20
|
-
description?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface NamespaceTree {
|
|
23
|
-
id: string;
|
|
24
|
-
name: string;
|
|
25
|
-
type: NamespaceType;
|
|
26
|
-
description: string | null;
|
|
27
|
-
path: string;
|
|
28
|
-
children: NamespaceTree[];
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Create a new namespace
|
|
32
|
-
*/
|
|
33
|
-
export declare function createNamespace(input: NamespaceCreateInput): Promise<Namespace>;
|
|
34
|
-
/**
|
|
35
|
-
* Get a namespace by ID
|
|
36
|
-
*/
|
|
37
|
-
export declare function getNamespaceById(id: string): Promise<Namespace | null>;
|
|
38
|
-
/**
|
|
39
|
-
* Resolve a namespace path to a namespace ID
|
|
40
|
-
* @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
|
|
41
|
-
*/
|
|
42
|
-
export declare function resolveNamespacePath(projectId: string, path: string[]): Promise<string | null>;
|
|
43
|
-
/**
|
|
44
|
-
* Get namespace tree for a project
|
|
45
|
-
*/
|
|
46
|
-
export declare function getNamespaceTree(projectId: string): Promise<NamespaceTree[]>;
|
|
47
|
-
/**
|
|
48
|
-
* Get or create default namespaces for a project
|
|
49
|
-
*/
|
|
50
|
-
export declare function getDefaultNamespaces(projectId: string): Promise<Namespace[]>;
|
|
51
|
-
/**
|
|
52
|
-
* List namespaces with optional filtering
|
|
53
|
-
*/
|
|
54
|
-
export declare function listNamespaces(options?: {
|
|
55
|
-
projectId?: string;
|
|
56
|
-
type?: NamespaceType;
|
|
57
|
-
parentId?: string;
|
|
58
|
-
recursive?: boolean;
|
|
59
|
-
}): Promise<Namespace[]>;
|
|
60
|
-
/**
|
|
61
|
-
* Delete a namespace (cascades to child namespaces)
|
|
62
|
-
*/
|
|
63
|
-
export declare function deleteNamespace(id: string): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Update namespace
|
|
66
|
-
*/
|
|
67
|
-
export declare function updateNamespace(id: string, updates: Partial<{
|
|
68
|
-
name: string;
|
|
69
|
-
description: string;
|
|
70
|
-
}>): Promise<void>;
|
|
71
|
-
//# sourceMappingURL=index.d.ts.map
|