squish-memory 0.7.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/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +32 -0
- package/.mcp.json +14 -0
- package/LICENSE +21 -0
- package/README.md +556 -0
- package/commands/context-paging.md +51 -0
- package/commands/context-status.md +22 -0
- package/commands/context.md +5 -0
- package/commands/core-memory.md +56 -0
- package/commands/health.md +5 -0
- package/commands/init.md +39 -0
- package/commands/merge.md +113 -0
- package/commands/observe.md +5 -0
- package/commands/recall.md +5 -0
- package/commands/remember.md +11 -0
- package/commands/search.md +10 -0
- package/dist/adapters/claude-code/capture.d.ts +11 -0
- package/dist/adapters/claude-code/capture.d.ts.map +1 -0
- package/dist/adapters/claude-code/capture.js +100 -0
- package/dist/adapters/claude-code/capture.js.map +1 -0
- package/dist/adapters/claude-code/index.d.ts +5 -0
- package/dist/adapters/claude-code/index.d.ts.map +1 -0
- package/dist/adapters/claude-code/index.js +6 -0
- package/dist/adapters/claude-code/index.js.map +1 -0
- package/dist/adapters/claude-code/injection.d.ts +34 -0
- package/dist/adapters/claude-code/injection.d.ts.map +1 -0
- package/dist/adapters/claude-code/injection.js +127 -0
- package/dist/adapters/claude-code/injection.js.map +1 -0
- package/dist/adapters/claude-code/plugin-wrapper.d.ts +21 -0
- package/dist/adapters/claude-code/plugin-wrapper.d.ts.map +1 -0
- package/dist/adapters/claude-code/plugin-wrapper.js +239 -0
- package/dist/adapters/claude-code/plugin-wrapper.js.map +1 -0
- package/dist/adapters/claude-code/types.d.ts +46 -0
- package/dist/adapters/claude-code/types.d.ts.map +1 -0
- package/dist/adapters/claude-code/types.js +6 -0
- package/dist/adapters/claude-code/types.js.map +1 -0
- package/dist/algorithms/merge/analytics/token-estimator.d.ts +50 -0
- package/dist/algorithms/merge/analytics/token-estimator.d.ts.map +1 -0
- package/dist/algorithms/merge/analytics/token-estimator.js +154 -0
- package/dist/algorithms/merge/analytics/token-estimator.js.map +1 -0
- package/dist/algorithms/merge/detection/hash-filters.d.ts +47 -0
- package/dist/algorithms/merge/detection/hash-filters.d.ts.map +1 -0
- package/dist/algorithms/merge/detection/hash-filters.js +190 -0
- package/dist/algorithms/merge/detection/hash-filters.js.map +1 -0
- package/dist/algorithms/merge/detection/semantic-ranker.d.ts +32 -0
- package/dist/algorithms/merge/detection/semantic-ranker.d.ts.map +1 -0
- package/dist/algorithms/merge/detection/semantic-ranker.js +118 -0
- package/dist/algorithms/merge/detection/semantic-ranker.js.map +1 -0
- package/dist/algorithms/merge/detection/two-stage-detector.d.ts +49 -0
- package/dist/algorithms/merge/detection/two-stage-detector.d.ts.map +1 -0
- package/dist/algorithms/merge/detection/two-stage-detector.js +185 -0
- package/dist/algorithms/merge/detection/two-stage-detector.js.map +1 -0
- package/dist/algorithms/merge/handlers/approve-merge.d.ts +22 -0
- package/dist/algorithms/merge/handlers/approve-merge.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/approve-merge.js +179 -0
- package/dist/algorithms/merge/handlers/approve-merge.js.map +1 -0
- package/dist/algorithms/merge/handlers/detect-duplicates.d.ts +47 -0
- package/dist/algorithms/merge/handlers/detect-duplicates.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/detect-duplicates.js +165 -0
- package/dist/algorithms/merge/handlers/detect-duplicates.js.map +1 -0
- package/dist/algorithms/merge/handlers/get-stats.d.ts +39 -0
- package/dist/algorithms/merge/handlers/get-stats.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/get-stats.js +88 -0
- package/dist/algorithms/merge/handlers/get-stats.js.map +1 -0
- package/dist/algorithms/merge/handlers/list-proposals.d.ts +45 -0
- package/dist/algorithms/merge/handlers/list-proposals.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/list-proposals.js +83 -0
- package/dist/algorithms/merge/handlers/list-proposals.js.map +1 -0
- package/dist/algorithms/merge/handlers/preview-merge.d.ts +39 -0
- package/dist/algorithms/merge/handlers/preview-merge.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/preview-merge.js +93 -0
- package/dist/algorithms/merge/handlers/preview-merge.js.map +1 -0
- package/dist/algorithms/merge/handlers/reject-merge.d.ts +28 -0
- package/dist/algorithms/merge/handlers/reject-merge.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/reject-merge.js +69 -0
- package/dist/algorithms/merge/handlers/reject-merge.js.map +1 -0
- package/dist/algorithms/merge/handlers/reverse-merge.d.ts +21 -0
- package/dist/algorithms/merge/handlers/reverse-merge.d.ts.map +1 -0
- package/dist/algorithms/merge/handlers/reverse-merge.js +121 -0
- package/dist/algorithms/merge/handlers/reverse-merge.js.map +1 -0
- package/dist/algorithms/merge/safety/safety-checks.d.ts +22 -0
- package/dist/algorithms/merge/safety/safety-checks.d.ts.map +1 -0
- package/dist/algorithms/merge/safety/safety-checks.js +215 -0
- package/dist/algorithms/merge/safety/safety-checks.js.map +1 -0
- package/dist/algorithms/merge/strategies/merge-strategies.d.ts +32 -0
- package/dist/algorithms/merge/strategies/merge-strategies.d.ts.map +1 -0
- package/dist/algorithms/merge/strategies/merge-strategies.js +337 -0
- package/dist/algorithms/merge/strategies/merge-strategies.js.map +1 -0
- package/dist/api/web/web.d.ts +4 -0
- package/dist/api/web/web.d.ts.map +1 -0
- package/dist/api/web/web.js +484 -0
- package/dist/api/web/web.js.map +1 -0
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +83 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-memory.d.ts +22 -0
- package/dist/core/agent-memory.d.ts.map +1 -0
- package/dist/core/agent-memory.js +111 -0
- package/dist/core/agent-memory.js.map +1 -0
- package/dist/core/associations.d.ts +32 -0
- package/dist/core/associations.d.ts.map +1 -0
- package/dist/core/associations.js +249 -0
- package/dist/core/associations.js.map +1 -0
- package/dist/core/cache.d.ts +13 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +202 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/consolidation.d.ts +6 -0
- package/dist/core/consolidation.d.ts.map +1 -0
- package/dist/core/consolidation.js +40 -0
- package/dist/core/consolidation.js.map +1 -0
- package/dist/core/context-paging.d.ts +90 -0
- package/dist/core/context-paging.d.ts.map +1 -0
- package/dist/core/context-paging.js +348 -0
- package/dist/core/context-paging.js.map +1 -0
- package/dist/core/context.d.ts +7 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +24 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/core-memory.d.ts +73 -0
- package/dist/core/core-memory.d.ts.map +1 -0
- package/dist/core/core-memory.js +214 -0
- package/dist/core/core-memory.js.map +1 -0
- package/dist/core/database.d.ts +12 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +12 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/embeddings/qmd-client.d.ts +136 -0
- package/dist/core/embeddings/qmd-client.d.ts.map +1 -0
- package/dist/core/embeddings/qmd-client.js +403 -0
- package/dist/core/embeddings/qmd-client.js.map +1 -0
- package/dist/core/embeddings/qmd-provider.d.ts +65 -0
- package/dist/core/embeddings/qmd-provider.d.ts.map +1 -0
- package/dist/core/embeddings/qmd-provider.js +133 -0
- package/dist/core/embeddings/qmd-provider.js.map +1 -0
- package/dist/core/embeddings.d.ts +19 -0
- package/dist/core/embeddings.d.ts.map +1 -0
- package/dist/core/embeddings.js +297 -0
- package/dist/core/embeddings.js.map +1 -0
- package/dist/core/governance.d.ts +21 -0
- package/dist/core/governance.d.ts.map +1 -0
- package/dist/core/governance.js +64 -0
- package/dist/core/governance.js.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +19 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +182 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/local-embeddings.d.ts +14 -0
- package/dist/core/local-embeddings.d.ts.map +1 -0
- package/dist/core/local-embeddings.js +94 -0
- package/dist/core/local-embeddings.js.map +1 -0
- package/dist/core/logger.d.ts +16 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +34 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/memory/bridge-discovery.d.ts +50 -0
- package/dist/core/memory/bridge-discovery.d.ts.map +1 -0
- package/dist/core/memory/bridge-discovery.js +291 -0
- package/dist/core/memory/bridge-discovery.js.map +1 -0
- package/dist/core/memory/entity-extractor.d.ts +33 -0
- package/dist/core/memory/entity-extractor.d.ts.map +1 -0
- package/dist/core/memory/entity-extractor.js +336 -0
- package/dist/core/memory/entity-extractor.js.map +1 -0
- package/dist/core/memory/entity-resolver.d.ts +23 -0
- package/dist/core/memory/entity-resolver.d.ts.map +1 -0
- package/dist/core/memory/entity-resolver.js +64 -0
- package/dist/core/memory/entity-resolver.js.map +1 -0
- package/dist/core/memory/fact-extractor.d.ts +24 -0
- package/dist/core/memory/fact-extractor.d.ts.map +1 -0
- package/dist/core/memory/fact-extractor.js +89 -0
- package/dist/core/memory/fact-extractor.js.map +1 -0
- package/dist/core/memory/hybrid-retrieval.d.ts +30 -0
- package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -0
- package/dist/core/memory/hybrid-retrieval.js +63 -0
- package/dist/core/memory/hybrid-retrieval.js.map +1 -0
- package/dist/core/memory/hybrid-scorer.d.ts +51 -0
- package/dist/core/memory/hybrid-scorer.d.ts.map +1 -0
- package/dist/core/memory/hybrid-scorer.js +248 -0
- package/dist/core/memory/hybrid-scorer.js.map +1 -0
- package/dist/core/memory/index.d.ts +8 -0
- package/dist/core/memory/index.d.ts.map +1 -0
- package/dist/core/memory/index.js +10 -0
- package/dist/core/memory/index.js.map +1 -0
- package/dist/core/memory/memories.d.ts +35 -0
- package/dist/core/memory/memories.d.ts.map +1 -0
- package/dist/core/memory/memories.js +338 -0
- package/dist/core/memory/memories.js.map +1 -0
- package/dist/core/memory/memory-manager.d.ts +15 -0
- package/dist/core/memory/memory-manager.d.ts.map +1 -0
- package/dist/core/memory/memory-manager.js +46 -0
- package/dist/core/memory/memory-manager.js.map +1 -0
- package/dist/core/memory/query-processor.d.ts +21 -0
- package/dist/core/memory/query-processor.d.ts.map +1 -0
- package/dist/core/memory/query-processor.js +72 -0
- package/dist/core/memory/query-processor.js.map +1 -0
- package/dist/core/memory/serialization.d.ts +6 -0
- package/dist/core/memory/serialization.d.ts.map +1 -0
- package/dist/core/memory/serialization.js +35 -0
- package/dist/core/memory/serialization.js.map +1 -0
- package/dist/core/memory/temporal-parser.d.ts +32 -0
- package/dist/core/memory/temporal-parser.d.ts.map +1 -0
- package/dist/core/memory/temporal-parser.js +385 -0
- package/dist/core/memory/temporal-parser.js.map +1 -0
- package/dist/core/observations.d.ts +26 -0
- package/dist/core/observations.d.ts.map +1 -0
- package/dist/core/observations.js +118 -0
- package/dist/core/observations.js.map +1 -0
- package/dist/core/privacy.d.ts +23 -0
- package/dist/core/privacy.d.ts.map +1 -0
- package/dist/core/privacy.js +82 -0
- package/dist/core/privacy.js.map +1 -0
- package/dist/core/projects.d.ts +10 -0
- package/dist/core/projects.d.ts.map +1 -0
- package/dist/core/projects.js +66 -0
- package/dist/core/projects.js.map +1 -0
- package/dist/core/redis.d.ts +11 -0
- package/dist/core/redis.d.ts.map +1 -0
- package/dist/core/redis.js +69 -0
- package/dist/core/redis.js.map +1 -0
- package/dist/core/requirements.d.ts +20 -0
- package/dist/core/requirements.d.ts.map +1 -0
- package/dist/core/requirements.js +35 -0
- package/dist/core/requirements.js.map +1 -0
- package/dist/core/search/conversations.d.ts +25 -0
- package/dist/core/search/conversations.d.ts.map +1 -0
- package/dist/core/search/conversations.js +112 -0
- package/dist/core/search/conversations.js.map +1 -0
- package/dist/core/search/entities.d.ts +12 -0
- package/dist/core/search/entities.d.ts.map +1 -0
- package/dist/core/search/entities.js +34 -0
- package/dist/core/search/entities.js.map +1 -0
- package/dist/core/search/folder-context.d.ts +25 -0
- package/dist/core/search/folder-context.d.ts.map +1 -0
- package/dist/core/search/folder-context.js +119 -0
- package/dist/core/search/folder-context.js.map +1 -0
- package/dist/core/search/index.d.ts +4 -0
- package/dist/core/search/index.d.ts.map +1 -0
- package/dist/core/search/index.js +5 -0
- package/dist/core/search/index.js.map +1 -0
- package/dist/core/search/qmd-search.d.ts +61 -0
- package/dist/core/search/qmd-search.d.ts.map +1 -0
- package/dist/core/search/qmd-search.js +178 -0
- package/dist/core/search/qmd-search.js.map +1 -0
- package/dist/core/secret-detector.d.ts +32 -0
- package/dist/core/secret-detector.d.ts.map +1 -0
- package/dist/core/secret-detector.js +88 -0
- package/dist/core/secret-detector.js.map +1 -0
- package/dist/core/snapshots/cleanup.d.ts +9 -0
- package/dist/core/snapshots/cleanup.d.ts.map +1 -0
- package/dist/core/snapshots/cleanup.js +12 -0
- package/dist/core/snapshots/cleanup.js.map +1 -0
- package/dist/core/snapshots/comparison.d.ts +19 -0
- package/dist/core/snapshots/comparison.d.ts.map +1 -0
- package/dist/core/snapshots/comparison.js +37 -0
- package/dist/core/snapshots/comparison.js.map +1 -0
- package/dist/core/snapshots/creation.d.ts +19 -0
- package/dist/core/snapshots/creation.d.ts.map +1 -0
- package/dist/core/snapshots/creation.js +126 -0
- package/dist/core/snapshots/creation.js.map +1 -0
- package/dist/core/snapshots/retrieval.d.ts +7 -0
- package/dist/core/snapshots/retrieval.d.ts.map +1 -0
- package/dist/core/snapshots/retrieval.js +41 -0
- package/dist/core/snapshots/retrieval.js.map +1 -0
- package/dist/core/snapshots/stats.d.ts +11 -0
- package/dist/core/snapshots/stats.d.ts.map +1 -0
- package/dist/core/snapshots/stats.js +52 -0
- package/dist/core/snapshots/stats.js.map +1 -0
- package/dist/core/snapshots.d.ts +29 -0
- package/dist/core/snapshots.d.ts.map +1 -0
- package/dist/core/snapshots.js +220 -0
- package/dist/core/snapshots.js.map +1 -0
- package/dist/core/summarization/cleanup.d.ts +9 -0
- package/dist/core/summarization/cleanup.d.ts.map +1 -0
- package/dist/core/summarization/cleanup.js +12 -0
- package/dist/core/summarization/cleanup.js.map +1 -0
- package/dist/core/summarization/queries.d.ts +9 -0
- package/dist/core/summarization/queries.d.ts.map +1 -0
- package/dist/core/summarization/queries.js +28 -0
- package/dist/core/summarization/queries.js.map +1 -0
- package/dist/core/summarization/stats.d.ts +14 -0
- package/dist/core/summarization/stats.d.ts.map +1 -0
- package/dist/core/summarization/stats.js +52 -0
- package/dist/core/summarization/stats.js.map +1 -0
- package/dist/core/summarization/strategies.d.ts +24 -0
- package/dist/core/summarization/strategies.d.ts.map +1 -0
- package/dist/core/summarization/strategies.js +28 -0
- package/dist/core/summarization/strategies.js.map +1 -0
- package/dist/core/summarization.d.ts +37 -0
- package/dist/core/summarization.d.ts.map +1 -0
- package/dist/core/summarization.js +188 -0
- package/dist/core/summarization.js.map +1 -0
- package/dist/core/sync/qmd-sync.d.ts +106 -0
- package/dist/core/sync/qmd-sync.d.ts.map +1 -0
- package/dist/core/sync/qmd-sync.js +213 -0
- package/dist/core/sync/qmd-sync.js.map +1 -0
- package/dist/core/temporal-facts.d.ts +54 -0
- package/dist/core/temporal-facts.d.ts.map +1 -0
- package/dist/core/temporal-facts.js +193 -0
- package/dist/core/temporal-facts.js.map +1 -0
- package/dist/core/utils/cleanup-operations.d.ts +13 -0
- package/dist/core/utils/cleanup-operations.d.ts.map +1 -0
- package/dist/core/utils/cleanup-operations.js +44 -0
- package/dist/core/utils/cleanup-operations.js.map +1 -0
- package/dist/core/utils/content-extraction.d.ts +19 -0
- package/dist/core/utils/content-extraction.d.ts.map +1 -0
- package/dist/core/utils/content-extraction.js +65 -0
- package/dist/core/utils/content-extraction.js.map +1 -0
- package/dist/core/utils/filter-builder.d.ts +13 -0
- package/dist/core/utils/filter-builder.d.ts.map +1 -0
- package/dist/core/utils/filter-builder.js +44 -0
- package/dist/core/utils/filter-builder.js.map +1 -0
- package/dist/core/utils/history-traversal.d.ts +13 -0
- package/dist/core/utils/history-traversal.d.ts.map +1 -0
- package/dist/core/utils/history-traversal.js +50 -0
- package/dist/core/utils/history-traversal.js.map +1 -0
- package/dist/core/utils/memory-operations.d.ts +17 -0
- package/dist/core/utils/memory-operations.d.ts.map +1 -0
- package/dist/core/utils/memory-operations.js +41 -0
- package/dist/core/utils/memory-operations.js.map +1 -0
- package/dist/core/utils/query-operations.d.ts +18 -0
- package/dist/core/utils/query-operations.d.ts.map +1 -0
- package/dist/core/utils/query-operations.js +65 -0
- package/dist/core/utils/query-operations.js.map +1 -0
- package/dist/core/utils/summarization-helpers.d.ts +21 -0
- package/dist/core/utils/summarization-helpers.d.ts.map +1 -0
- package/dist/core/utils/summarization-helpers.js +35 -0
- package/dist/core/utils/summarization-helpers.js.map +1 -0
- package/dist/core/utils/temporal-queries.d.ts +13 -0
- package/dist/core/utils/temporal-queries.d.ts.map +1 -0
- package/dist/core/utils/temporal-queries.js +27 -0
- package/dist/core/utils/temporal-queries.js.map +1 -0
- package/dist/core/utils/version-management.d.ts +9 -0
- package/dist/core/utils/version-management.d.ts.map +1 -0
- package/dist/core/utils/version-management.js +61 -0
- package/dist/core/utils/version-management.js.map +1 -0
- package/dist/core/utils.d.ts +13 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +51 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/core/worker.d.ts +62 -0
- package/dist/core/worker.d.ts.map +1 -0
- package/dist/core/worker.js +186 -0
- package/dist/core/worker.js.map +1 -0
- package/dist/db/adapter.d.ts +6 -0
- package/dist/db/adapter.d.ts.map +1 -0
- package/dist/db/adapter.js +43 -0
- package/dist/db/adapter.js.map +1 -0
- package/dist/db/bootstrap.d.ts +9 -0
- package/dist/db/bootstrap.d.ts.map +1 -0
- package/dist/db/bootstrap.js +444 -0
- package/dist/db/bootstrap.js.map +1 -0
- package/dist/db/index.d.ts +11 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +43 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +3 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +11 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/drizzle/schema-sqlite.d.ts +3046 -0
- package/dist/drizzle/schema-sqlite.d.ts.map +1 -0
- package/dist/drizzle/schema-sqlite.js +405 -0
- package/dist/drizzle/schema-sqlite.js.map +1 -0
- package/dist/drizzle/schema.d.ts +2969 -0
- package/dist/drizzle/schema.d.ts.map +1 -0
- package/dist/drizzle/schema.js +555 -0
- package/dist/drizzle/schema.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +784 -0
- package/dist/index.js.map +1 -0
- package/hooks/hooks.json +52 -0
- package/hooks/post-tool-use.js +26 -0
- package/hooks/session-end.js +28 -0
- package/hooks/session-start.js +33 -0
- package/hooks/user-prompt-submit.js +26 -0
- package/hooks/utils.js +153 -0
- package/npx-installer.js +208 -0
- package/package.json +101 -0
- package/plugin.json +32 -0
- package/skills/memory-guide/SKILL.md +198 -0
- package/skills/squish-memory/SKILL.md +87 -0
- package/skills/squish-memory/install.sh +91 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Requirements Filter Builder
|
|
3
|
+
* Common patterns for building database filters from criteria objects
|
|
4
|
+
*/
|
|
5
|
+
import { eq, inArray, gte } from 'drizzle-orm';
|
|
6
|
+
/**
|
|
7
|
+
* Build database filter array from MemoryCriteria
|
|
8
|
+
*/
|
|
9
|
+
export function buildMemoryFilters(criteria, schema) {
|
|
10
|
+
const filters = [];
|
|
11
|
+
if (criteria.type) {
|
|
12
|
+
filters.push(eq(schema.memories.type, criteria.type));
|
|
13
|
+
}
|
|
14
|
+
if (criteria.types && criteria.types.length > 0) {
|
|
15
|
+
filters.push(inArray(schema.memories.type, criteria.types));
|
|
16
|
+
}
|
|
17
|
+
if (criteria.sector) {
|
|
18
|
+
filters.push(eq(schema.memories.sector, criteria.sector));
|
|
19
|
+
}
|
|
20
|
+
if (criteria.minConfidence !== undefined) {
|
|
21
|
+
filters.push(gte(schema.memories.confidence, criteria.minConfidence));
|
|
22
|
+
}
|
|
23
|
+
if (criteria.minRelevance !== undefined) {
|
|
24
|
+
filters.push(gte(schema.memories.relevanceScore, criteria.minRelevance));
|
|
25
|
+
}
|
|
26
|
+
if (criteria.projectId) {
|
|
27
|
+
filters.push(eq(schema.memories.projectId, criteria.projectId));
|
|
28
|
+
}
|
|
29
|
+
if (criteria.agentId) {
|
|
30
|
+
filters.push(eq(schema.memories.agentId, criteria.agentId));
|
|
31
|
+
}
|
|
32
|
+
return filters;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build database filter array from partial criteria (for assertions)
|
|
36
|
+
*/
|
|
37
|
+
export function buildMemoryFiltersPartial(criteria, schema) {
|
|
38
|
+
const filters = [];
|
|
39
|
+
if (criteria.type) {
|
|
40
|
+
filters.push(eq(schema.memories.type, criteria.type));
|
|
41
|
+
}
|
|
42
|
+
return filters;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=filter-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-builder.js","sourceRoot":"","sources":["../../../core/utils/filter-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAa,EAAE,MAAW;IAC3D,MAAM,OAAO,GAAU,EAAE,CAAC;IAE1B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAiB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAqB,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAa,EAAE,MAAW;IAClE,MAAM,OAAO,GAAU,EAAE,CAAC;IAE1B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared History and Version Tracking Utilities
|
|
3
|
+
* Common patterns for traversing version chains and history
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Traverse superseded fact chain (specific to memories table)
|
|
7
|
+
* Follows the supersededBy chain to build complete version history
|
|
8
|
+
*/
|
|
9
|
+
export declare function traverseSupersededChain(startFactId: string, options?: {
|
|
10
|
+
maxDepth?: number;
|
|
11
|
+
includeStart?: boolean;
|
|
12
|
+
}): Promise<any[]>;
|
|
13
|
+
//# sourceMappingURL=history-traversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-traversal.d.ts","sourceRoot":"","sources":["../../../core/utils/history-traversal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,OAAO,CAAC,GAAG,EAAE,CAAC,CA0ChB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared History and Version Tracking Utilities
|
|
3
|
+
* Common patterns for traversing version chains and history
|
|
4
|
+
*/
|
|
5
|
+
import { eq } from 'drizzle-orm';
|
|
6
|
+
import { getDb } from '../../db/index.js';
|
|
7
|
+
import { getSchema } from '../../db/schema.js';
|
|
8
|
+
import { logger } from '../logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Traverse superseded fact chain (specific to memories table)
|
|
11
|
+
* Follows the supersededBy chain to build complete version history
|
|
12
|
+
*/
|
|
13
|
+
export async function traverseSupersededChain(startFactId, options = {}) {
|
|
14
|
+
const { maxDepth = 50, includeStart = true } = options;
|
|
15
|
+
try {
|
|
16
|
+
const db = await getDb();
|
|
17
|
+
const schema = await getSchema();
|
|
18
|
+
// Get the starting fact
|
|
19
|
+
const initial = await db
|
|
20
|
+
.select()
|
|
21
|
+
.from(schema.memories)
|
|
22
|
+
.where(eq(schema.memories.id, startFactId))
|
|
23
|
+
.limit(1);
|
|
24
|
+
if (initial.length === 0) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const history = includeStart ? [initial[0]] : [];
|
|
28
|
+
let currentId = initial[0].supersededBy;
|
|
29
|
+
let depth = 0;
|
|
30
|
+
// Follow the superseded chain
|
|
31
|
+
while (currentId && depth < maxDepth) {
|
|
32
|
+
const next = await db
|
|
33
|
+
.select()
|
|
34
|
+
.from(schema.memories)
|
|
35
|
+
.where(eq(schema.memories.id, currentId))
|
|
36
|
+
.limit(1);
|
|
37
|
+
if (next.length === 0)
|
|
38
|
+
break;
|
|
39
|
+
history.push(next[0]);
|
|
40
|
+
currentId = next[0].supersededBy;
|
|
41
|
+
depth++;
|
|
42
|
+
}
|
|
43
|
+
return history;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
logger.error('Error traversing superseded chain', error);
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=history-traversal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-traversal.js","sourceRoot":"","sources":["../../../core/utils/history-traversal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,UAGI,EAAE;IAEN,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAO,EAAU;aAC9B,MAAM,EAAE;aACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;aAC1C,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAU,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,8BAA8B;QAC9B,OAAO,SAAS,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,MAAO,EAAU;iBAC3B,MAAM,EAAE;iBACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACrB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;iBACxC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEZ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAE7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YACjC,KAAK,EAAE,CAAC;QACV,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Memory Operations Utilities
|
|
3
|
+
* Common patterns for memory governance operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generic memory operation with governance checks and error handling
|
|
7
|
+
*/
|
|
8
|
+
export declare function performMemoryOperation(memoryId: string, operation: {
|
|
9
|
+
name: string;
|
|
10
|
+
updates: Record<string, any>;
|
|
11
|
+
requiresGovernance?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Redis publish operation with error handling
|
|
15
|
+
*/
|
|
16
|
+
export declare function performRedisPublish(getRedisClient: () => Promise<any>, channel: string, message: unknown): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=memory-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-operations.d.ts","sourceRoot":"","sources":["../../../core/utils/memory-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Memory Operations Utilities
|
|
3
|
+
* Common patterns for memory governance operations
|
|
4
|
+
*/
|
|
5
|
+
import { eq } from 'drizzle-orm';
|
|
6
|
+
import { getDb } from '../../db/index.js';
|
|
7
|
+
import { getSchema } from '../../db/schema.js';
|
|
8
|
+
import { config } from '../../config.js';
|
|
9
|
+
import { logger } from '../logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generic memory operation with governance checks and error handling
|
|
12
|
+
*/
|
|
13
|
+
export async function performMemoryOperation(memoryId, operation) {
|
|
14
|
+
if (operation.requiresGovernance !== false && !config.governanceEnabled) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const db = await getDb();
|
|
19
|
+
const schema = await getSchema();
|
|
20
|
+
await db
|
|
21
|
+
.update(schema.memories)
|
|
22
|
+
.set(operation.updates)
|
|
23
|
+
.where(eq(schema.memories.id, memoryId));
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
logger.error(`Error ${operation.name.toLowerCase()}`, error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Redis publish operation with error handling
|
|
31
|
+
*/
|
|
32
|
+
export async function performRedisPublish(getRedisClient, channel, message) {
|
|
33
|
+
try {
|
|
34
|
+
const redis = await getRedisClient();
|
|
35
|
+
await redis.publish(channel, JSON.stringify(message));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger.error('Error publishing to Redis', error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=memory-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-operations.js","sourceRoot":"","sources":["../../../core/utils/memory-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,SAIC;IAED,IAAI,SAAS,CAAC,kBAAkB,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,MAAO,EAAU;aACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aACvB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;aACtB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,cAAkC,EAClC,OAAe,EACf,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Requirements Query Operations
|
|
3
|
+
* Common patterns for database queries with error handling
|
|
4
|
+
*/
|
|
5
|
+
export declare class MemoryRequirementError extends Error {
|
|
6
|
+
readonly missingCriteria: any;
|
|
7
|
+
readonly context?: any | undefined;
|
|
8
|
+
constructor(message: string, missingCriteria: any, context?: any | undefined);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Execute a memory requirement query with standard error handling
|
|
12
|
+
*/
|
|
13
|
+
export declare function executeMemoryQuery(criteria: any, filters: any[], limit?: number, operation?: string): Promise<any[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Execute a memory assertion query (expecting specific results)
|
|
16
|
+
*/
|
|
17
|
+
export declare function executeMemoryAssertion(criteria: any, filters: any[], expectedCount: number, operation: string, errorMessage: string): Promise<any[]>;
|
|
18
|
+
//# sourceMappingURL=query-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-operations.d.ts","sourceRoot":"","sources":["../../../core/utils/query-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,qBAAa,sBAAuB,SAAQ,KAAK;aAG7B,eAAe,EAAE,GAAG;aACpB,OAAO,CAAC,EAAE,GAAG;gBAF7B,OAAO,EAAE,MAAM,EACC,eAAe,EAAE,GAAG,EACpB,OAAO,CAAC,EAAE,GAAG,YAAA;CAMhC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EAAE,EACd,KAAK,GAAE,MAAU,EACjB,SAAS,GAAE,MAA6B,GACvC,OAAO,CAAC,GAAG,EAAE,CAAC,CAqBhB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EAAE,EACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,EAAE,CAAC,CAqBhB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Requirements Query Operations
|
|
3
|
+
* Common patterns for database queries with error handling
|
|
4
|
+
*/
|
|
5
|
+
import { and } from 'drizzle-orm';
|
|
6
|
+
import { getDb } from '../../db/index.js';
|
|
7
|
+
import { getSchema } from '../../db/schema.js';
|
|
8
|
+
export class MemoryRequirementError extends Error {
|
|
9
|
+
missingCriteria;
|
|
10
|
+
context;
|
|
11
|
+
constructor(message, missingCriteria, context) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.missingCriteria = missingCriteria;
|
|
14
|
+
this.context = context;
|
|
15
|
+
this.name = 'MemoryRequirementError';
|
|
16
|
+
Object.setPrototypeOf(this, MemoryRequirementError.prototype);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Execute a memory requirement query with standard error handling
|
|
21
|
+
*/
|
|
22
|
+
export async function executeMemoryQuery(criteria, filters, limit = 1, operation = 'memory requirement') {
|
|
23
|
+
try {
|
|
24
|
+
const db = await getDb();
|
|
25
|
+
const schema = await getSchema();
|
|
26
|
+
const query = filters.length > 0 ? and(...filters) : undefined;
|
|
27
|
+
const memories = await db
|
|
28
|
+
.select()
|
|
29
|
+
.from(schema.memories)
|
|
30
|
+
.where(query)
|
|
31
|
+
.limit(limit);
|
|
32
|
+
return memories;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof MemoryRequirementError) {
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
39
|
+
throw new MemoryRequirementError(`Error checking ${operation}: ${msg}`, criteria);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Execute a memory assertion query (expecting specific results)
|
|
44
|
+
*/
|
|
45
|
+
export async function executeMemoryAssertion(criteria, filters, expectedCount, operation, errorMessage) {
|
|
46
|
+
try {
|
|
47
|
+
const memories = await executeMemoryQuery(criteria, filters, 100, operation);
|
|
48
|
+
if (expectedCount === 0 && memories.length > 0) {
|
|
49
|
+
throw new MemoryRequirementError(errorMessage, criteria, { found: memories[0].id });
|
|
50
|
+
}
|
|
51
|
+
if (expectedCount > 0 && memories.length < expectedCount) {
|
|
52
|
+
const msg = `Required ${expectedCount} memories but found ${memories.length}`;
|
|
53
|
+
throw new MemoryRequirementError(msg, criteria, { found: memories.length, required: expectedCount });
|
|
54
|
+
}
|
|
55
|
+
return memories;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof MemoryRequirementError) {
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
62
|
+
throw new MemoryRequirementError(`Error ${operation}: ${msg}`, criteria);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=query-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-operations.js","sourceRoot":"","sources":["../../../core/utils/query-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAG7B;IACA;IAHlB,YACE,OAAe,EACC,eAAoB,EACpB,OAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,oBAAe,GAAf,eAAe,CAAK;QACpB,YAAO,GAAP,OAAO,CAAM;QAG7B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAa,EACb,OAAc,EACd,QAAgB,CAAC,EACjB,YAAoB,oBAAoB;IAExC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/D,MAAM,QAAQ,GAAG,MAAO,EAAU;aAC/B,MAAM,EAAE;aACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrB,KAAK,CAAC,KAAK,CAAC;aACZ,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,SAAS,KAAK,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAa,EACb,OAAc,EACd,aAAqB,EACrB,SAAiB,EACjB,YAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAE7E,IAAI,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,sBAAsB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,YAAY,aAAa,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9E,MAAM,IAAI,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,sBAAsB,CAAC,SAAS,SAAS,KAAK,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Summarization Strategy Utilities
|
|
3
|
+
* Common patterns for different summarization approaches
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Chunk messages for incremental summarization
|
|
7
|
+
*/
|
|
8
|
+
export declare function chunkMessages(messages: any[], chunkSize: number): any[][];
|
|
9
|
+
/**
|
|
10
|
+
* Get rolling window of messages
|
|
11
|
+
*/
|
|
12
|
+
export declare function getRollingWindow(messages: any[], windowSize: number): any[];
|
|
13
|
+
/**
|
|
14
|
+
* Estimate tokens in text (rough approximation)
|
|
15
|
+
*/
|
|
16
|
+
export declare function estimateTokens(text: string): number;
|
|
17
|
+
/**
|
|
18
|
+
* Calculate tokens saved by summarization
|
|
19
|
+
*/
|
|
20
|
+
export declare function calculateTokensSaved(messages: any[], summary: string): number;
|
|
21
|
+
//# sourceMappingURL=summarization-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarization-helpers.d.ts","sourceRoot":"","sources":["../../../core/utils/summarization-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAMzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Summarization Strategy Utilities
|
|
3
|
+
* Common patterns for different summarization approaches
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Chunk messages for incremental summarization
|
|
7
|
+
*/
|
|
8
|
+
export function chunkMessages(messages, chunkSize) {
|
|
9
|
+
const chunks = [];
|
|
10
|
+
for (let i = 0; i < messages.length; i += chunkSize) {
|
|
11
|
+
chunks.push(messages.slice(i, i + chunkSize));
|
|
12
|
+
}
|
|
13
|
+
return chunks;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get rolling window of messages
|
|
17
|
+
*/
|
|
18
|
+
export function getRollingWindow(messages, windowSize) {
|
|
19
|
+
return messages.slice(-windowSize);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Estimate tokens in text (rough approximation)
|
|
23
|
+
*/
|
|
24
|
+
export function estimateTokens(text) {
|
|
25
|
+
return Math.ceil(text.length / 4);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calculate tokens saved by summarization
|
|
29
|
+
*/
|
|
30
|
+
export function calculateTokensSaved(messages, summary) {
|
|
31
|
+
const originalTokens = messages.reduce((sum, m) => sum + estimateTokens(m.content || ''), 0);
|
|
32
|
+
const summaryTokens = estimateTokens(summary);
|
|
33
|
+
return Math.max(0, originalTokens - summaryTokens);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=summarization-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarization-helpers.js","sourceRoot":"","sources":["../../../core/utils/summarization-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAe,EAAE,SAAiB;IAC9D,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAe,EAAE,UAAkB;IAClE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAe,EAAE,OAAe;IACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CACpC,CAAC,GAAW,EAAE,CAAM,EAAE,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAC9D,CAAC,CACF,CAAC;IACF,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Temporal Query Utilities
|
|
3
|
+
* Common patterns for temporal database queries
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Build temporal validity filters for queries
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildTemporalFilters(schema: any, timestamp?: Date, additionalFilters?: any[]): any[];
|
|
9
|
+
/**
|
|
10
|
+
* Build temporal query for facts at a specific time
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildFactAtTimeQuery(schema: any, timestamp?: Date, additionalFilters?: any[]): any;
|
|
13
|
+
//# sourceMappingURL=temporal-queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal-queries.d.ts","sourceRoot":"","sources":["../../../core/utils/temporal-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,IAAiB,EAC5B,iBAAiB,GAAE,GAAG,EAAO,GAC5B,GAAG,EAAE,CAQP;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,IAAiB,EAC5B,iBAAiB,GAAE,GAAG,EAAO,GAC5B,GAAG,CAOL"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Temporal Query Utilities
|
|
3
|
+
* Common patterns for temporal database queries
|
|
4
|
+
*/
|
|
5
|
+
import { and, eq, lte, gte, or, isNull } from 'drizzle-orm';
|
|
6
|
+
/**
|
|
7
|
+
* Build temporal validity filters for queries
|
|
8
|
+
*/
|
|
9
|
+
export function buildTemporalFilters(schema, timestamp = new Date(), additionalFilters = []) {
|
|
10
|
+
const filters = [
|
|
11
|
+
lte(schema.validFrom, timestamp),
|
|
12
|
+
or(isNull(schema.validTo), gte(schema.validTo, timestamp)),
|
|
13
|
+
...additionalFilters
|
|
14
|
+
];
|
|
15
|
+
return filters;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build temporal query for facts at a specific time
|
|
19
|
+
*/
|
|
20
|
+
export function buildFactAtTimeQuery(schema, timestamp = new Date(), additionalFilters = []) {
|
|
21
|
+
const filters = buildTemporalFilters(schema, timestamp, [
|
|
22
|
+
eq(schema.type, 'fact'),
|
|
23
|
+
...additionalFilters
|
|
24
|
+
]);
|
|
25
|
+
return and(...filters);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=temporal-queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal-queries.js","sourceRoot":"","sources":["../../../core/utils/temporal-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAW,EACX,YAAkB,IAAI,IAAI,EAAE,EAC5B,oBAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,MAAM,CAAC,SAAgB,EAAE,SAAS,CAAC;QACvC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAc,EAAE,SAAS,CAAC,CAAC;QACjE,GAAG,iBAAiB;KACrB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAW,EACX,YAAkB,IAAI,IAAI,EAAE,EAC5B,oBAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE;QACtD,EAAE,CAAC,MAAM,CAAC,IAAW,EAAE,MAAM,CAAC;QAC9B,GAAG,iBAAiB;KACrB,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Version Management Utilities
|
|
3
|
+
* Common patterns for versioning and updating records
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create a new version of a fact by expiring the old one
|
|
7
|
+
*/
|
|
8
|
+
export declare function createNewFactVersion(oldFactId: string, newContent: string, additionalFields?: Record<string, any>, reason?: string): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=version-management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-management.d.ts","sourceRoot":"","sources":["../../../core/utils/version-management.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC1C,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAsDjB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Version Management Utilities
|
|
3
|
+
* Common patterns for versioning and updating records
|
|
4
|
+
*/
|
|
5
|
+
import { eq } from 'drizzle-orm';
|
|
6
|
+
import { randomUUID } from 'crypto';
|
|
7
|
+
import { getDb } from '../../db/index.js';
|
|
8
|
+
import { getSchema } from '../../db/schema.js';
|
|
9
|
+
import { logger } from '../logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a new version of a fact by expiring the old one
|
|
12
|
+
*/
|
|
13
|
+
export async function createNewFactVersion(oldFactId, newContent, additionalFields = {}, reason) {
|
|
14
|
+
try {
|
|
15
|
+
const db = await getDb();
|
|
16
|
+
const schema = await getSchema();
|
|
17
|
+
// Get the old fact
|
|
18
|
+
const oldFacts = await db
|
|
19
|
+
.select()
|
|
20
|
+
.from(schema.memories)
|
|
21
|
+
.where(eq(schema.memories.id, oldFactId))
|
|
22
|
+
.limit(1);
|
|
23
|
+
if (oldFacts.length === 0) {
|
|
24
|
+
throw new Error('Previous fact not found');
|
|
25
|
+
}
|
|
26
|
+
const oldFact = oldFacts[0];
|
|
27
|
+
const now = new Date();
|
|
28
|
+
const newFactId = randomUUID();
|
|
29
|
+
// Expire the old fact
|
|
30
|
+
await db
|
|
31
|
+
.update(schema.memories)
|
|
32
|
+
.set({ validTo: now, supersededBy: newFactId })
|
|
33
|
+
.where(eq(schema.memories.id, oldFactId));
|
|
34
|
+
// Create new version
|
|
35
|
+
const newFact = {
|
|
36
|
+
id: newFactId,
|
|
37
|
+
type: 'fact',
|
|
38
|
+
sector: 'semantic',
|
|
39
|
+
content: newContent,
|
|
40
|
+
confidence: oldFact.confidence,
|
|
41
|
+
validFrom: now,
|
|
42
|
+
validTo: null,
|
|
43
|
+
version: (oldFact.version || 1) + 1,
|
|
44
|
+
tags: oldFact.tags,
|
|
45
|
+
projectId: oldFact.projectId,
|
|
46
|
+
createdAt: now,
|
|
47
|
+
updatedAt: now,
|
|
48
|
+
...additionalFields,
|
|
49
|
+
};
|
|
50
|
+
if (reason) {
|
|
51
|
+
newFact.metadata = { supersedes: oldFactId, reason };
|
|
52
|
+
}
|
|
53
|
+
await db.insert(schema.memories).values(newFact);
|
|
54
|
+
return newFactId;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.error('Error creating new fact version', error);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=version-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-management.js","sourceRoot":"","sources":["../../../core/utils/version-management.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,UAAkB,EAClB,mBAAwC,EAAE,EAC1C,MAAe;IAEf,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,mBAAmB;QACnB,MAAM,QAAQ,GAAG,MAAO,EAAU;aAC/B,MAAM,EAAE;aACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;aACxC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAE/B,sBAAsB;QACtB,MAAO,EAAU;aACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aACvB,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;aAC9C,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAE5C,qBAAqB;QACrB,MAAM,OAAO,GAAQ;YACnB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,GAAG,gBAAgB;SACpB,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,QAAQ,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACvD,CAAC;QAED,MAAO,EAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility functions for the squish codebase
|
|
3
|
+
*/
|
|
4
|
+
export declare function normalizeTimestamp(value: any): string | null;
|
|
5
|
+
export declare function isDatabaseUnavailableError(error: any): boolean;
|
|
6
|
+
export declare function withDatabaseErrorHandling<T>(operation: () => Promise<T>, errorMessage: string): Promise<T>;
|
|
7
|
+
export declare function clampLimit(value: number | undefined, defaultValue: number, min?: number, max?: number): number;
|
|
8
|
+
export declare function prepareEmbedding(embedding: number[] | null): {
|
|
9
|
+
embedding?: number[] | null;
|
|
10
|
+
embeddingJson?: string | null;
|
|
11
|
+
};
|
|
12
|
+
export declare function determineOverallStatus(dbStatus: string, redisOk: boolean): string;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../core/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAM5D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAG9D;AAED,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CASZ;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,EAAE,GAAG,GAAE,MAAY,GAAG,MAAM,CAEtH;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAK3H;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAQjF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility functions for the squish codebase
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { config } from '../config.js';
|
|
6
|
+
import { toSqliteJson } from './memory/serialization.js';
|
|
7
|
+
export function normalizeTimestamp(value) {
|
|
8
|
+
if (!value)
|
|
9
|
+
return null;
|
|
10
|
+
if (value instanceof Date)
|
|
11
|
+
return value.toISOString();
|
|
12
|
+
if (typeof value === 'number')
|
|
13
|
+
return new Date(value * 1000).toISOString();
|
|
14
|
+
if (typeof value === 'string')
|
|
15
|
+
return value;
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
export function isDatabaseUnavailableError(error) {
|
|
19
|
+
return error.message?.includes('Database unavailable') ||
|
|
20
|
+
error.message?.includes('not a valid Win32 application');
|
|
21
|
+
}
|
|
22
|
+
export async function withDatabaseErrorHandling(operation, errorMessage) {
|
|
23
|
+
try {
|
|
24
|
+
return await operation();
|
|
25
|
+
}
|
|
26
|
+
catch (dbError) {
|
|
27
|
+
if (isDatabaseUnavailableError(dbError)) {
|
|
28
|
+
throw new McpError(ErrorCode.InternalError, errorMessage);
|
|
29
|
+
}
|
|
30
|
+
throw dbError;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function clampLimit(value, defaultValue, min = 1, max = 100) {
|
|
34
|
+
return Math.min(Math.max(value ?? defaultValue, min), max);
|
|
35
|
+
}
|
|
36
|
+
export function prepareEmbedding(embedding) {
|
|
37
|
+
if (config.isTeamMode) {
|
|
38
|
+
return { embedding: embedding ?? null };
|
|
39
|
+
}
|
|
40
|
+
return { embeddingJson: toSqliteJson(embedding ?? null) };
|
|
41
|
+
}
|
|
42
|
+
export function determineOverallStatus(dbStatus, redisOk) {
|
|
43
|
+
if ((dbStatus === 'ok' || dbStatus === 'unavailable') && redisOk) {
|
|
44
|
+
return 'ok';
|
|
45
|
+
}
|
|
46
|
+
if (dbStatus === 'unavailable') {
|
|
47
|
+
return 'degraded';
|
|
48
|
+
}
|
|
49
|
+
return 'error';
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../core/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAAC,KAAU;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAU;IACnD,OAAO,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC;QAC/C,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAA2B,EAC3B,YAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,OAAY,EAAE,CAAC;QACtB,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,OAAO,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAyB,EAAE,YAAoB,EAAE,MAAc,CAAC,EAAE,MAAc,GAAG;IAC5G,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAA0B;IACzD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB,EAAE,OAAgB;IACvE,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,aAAa,CAAC,IAAI,OAAO,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Worker
|
|
3
|
+
* Handles lifecycle maintenance, summarization, and other async tasks
|
|
4
|
+
*/
|
|
5
|
+
interface WorkerConfig {
|
|
6
|
+
lifecycleInterval: number;
|
|
7
|
+
pruningInterval: number;
|
|
8
|
+
summarizationCheckInterval: number;
|
|
9
|
+
associationPruningThreshold: number;
|
|
10
|
+
summaryPruningAge: number;
|
|
11
|
+
}
|
|
12
|
+
declare class SquishWorker {
|
|
13
|
+
private lifecycleTimer?;
|
|
14
|
+
private pruningTimer?;
|
|
15
|
+
private summarizationTimer?;
|
|
16
|
+
private config;
|
|
17
|
+
private isRunning;
|
|
18
|
+
private stats;
|
|
19
|
+
constructor(customConfig?: Partial<WorkerConfig>);
|
|
20
|
+
start(): Promise<void>;
|
|
21
|
+
stop(): Promise<void>;
|
|
22
|
+
private scheduleLifecycleMaintenance;
|
|
23
|
+
private runLifecycleMaintenance;
|
|
24
|
+
private schedulePruning;
|
|
25
|
+
private runPruning;
|
|
26
|
+
private scheduleSummarizationCheck;
|
|
27
|
+
private runSummarizationCheck;
|
|
28
|
+
getStats(): {
|
|
29
|
+
isRunning: boolean;
|
|
30
|
+
stats: {
|
|
31
|
+
lifecycleRuns: number;
|
|
32
|
+
pruningRuns: number;
|
|
33
|
+
summarizationRuns: number;
|
|
34
|
+
lastLifecycle: any;
|
|
35
|
+
lastAssociation: any;
|
|
36
|
+
lastSummarization: any;
|
|
37
|
+
};
|
|
38
|
+
config: WorkerConfig;
|
|
39
|
+
};
|
|
40
|
+
forceLifecycleMaintenance(projectId?: string): Promise<any>;
|
|
41
|
+
forcePruning(): Promise<any>;
|
|
42
|
+
}
|
|
43
|
+
export declare function getWorker(customConfig?: Partial<WorkerConfig>): SquishWorker;
|
|
44
|
+
export declare function startWorker(): Promise<void>;
|
|
45
|
+
export declare function stopWorker(): Promise<void>;
|
|
46
|
+
export declare function getWorkerStats(): {
|
|
47
|
+
isRunning: boolean;
|
|
48
|
+
stats: {
|
|
49
|
+
lifecycleRuns: number;
|
|
50
|
+
pruningRuns: number;
|
|
51
|
+
summarizationRuns: number;
|
|
52
|
+
lastLifecycle: any;
|
|
53
|
+
lastAssociation: any;
|
|
54
|
+
lastSummarization: any;
|
|
55
|
+
};
|
|
56
|
+
config: WorkerConfig;
|
|
57
|
+
} | null;
|
|
58
|
+
export declare function forceLifecycleMaintenance(projectId?: string): Promise<any>;
|
|
59
|
+
export declare function forcePruning(): Promise<any>;
|
|
60
|
+
export type { WorkerConfig };
|
|
61
|
+
export { SquishWorker };
|
|
62
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../core/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,UAAU,YAAY;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAUD,cAAM,YAAY;IAChB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAOX;gBAEU,YAAY,GAAE,OAAO,CAAC,YAAY,CAAM;IAI9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,CAAC,4BAA4B;YAYtB,uBAAuB;IAmBrC,OAAO,CAAC,eAAe;YAYT,UAAU;IA0BxB,OAAO,CAAC,0BAA0B;YAQpB,qBAAqB;IAanC,QAAQ;;;;;;2BAvIiB,GAAG;6BACD,GAAG;+BACD,GAAG;;;;IA6I1B,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3D,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;CAGnC;AAID,wBAAgB,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAK5E;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;AAED,wBAAgB,cAAc;;;;;;uBA5KH,GAAG;yBACD,GAAG;2BACD,GAAG;;;SA+KjC;AAED,wBAAsB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGhF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,CAGjD;AAED,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,CAAC"}
|