@atomicmemory/core 1.0.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/CHANGELOG.md +27 -0
- package/LICENSE +201 -0
- package/README.md +314 -0
- package/dist/app/bind-ephemeral.d.ts +18 -0
- package/dist/app/bind-ephemeral.js +22 -0
- package/dist/app/cors-headers.d.ts +12 -0
- package/dist/app/cors-headers.js +18 -0
- package/dist/app/create-app.d.ts +25 -0
- package/dist/app/create-app.js +156 -0
- package/dist/app/runtime-config-route-snapshot.d.ts +27 -0
- package/dist/app/runtime-config-route-snapshot.js +27 -0
- package/dist/app/runtime-container.d.ts +281 -0
- package/dist/app/runtime-container.js +297 -0
- package/dist/app/startup-checks.d.ts +28 -0
- package/dist/app/startup-checks.js +45 -0
- package/dist/bin.d.ts +17 -0
- package/dist/bin.js +128 -0
- package/dist/config.d.ts +680 -0
- package/dist/config.js +808 -0
- package/dist/db/agent-trust-repository.d.ts +49 -0
- package/dist/db/agent-trust-repository.js +66 -0
- package/dist/db/belief-edges-repository.d.ts +68 -0
- package/dist/db/belief-edges-repository.js +124 -0
- package/dist/db/claim-repository.d.ts +6 -0
- package/dist/db/claim-repository.js +4 -0
- package/dist/db/contradictions-repository.d.ts +56 -0
- package/dist/db/contradictions-repository.js +88 -0
- package/dist/db/document-chunk-repository.d.ts +48 -0
- package/dist/db/document-chunk-repository.js +145 -0
- package/dist/db/document-chunk-types.d.ts +35 -0
- package/dist/db/document-chunk-types.js +9 -0
- package/dist/db/document-list-cursor.d.ts +45 -0
- package/dist/db/document-list-cursor.js +111 -0
- package/dist/db/document-list-repository.d.ts +103 -0
- package/dist/db/document-list-repository.js +204 -0
- package/dist/db/entity-cards-repository.d.ts +37 -0
- package/dist/db/entity-cards-repository.js +46 -0
- package/dist/db/entity-values-repository.d.ts +26 -0
- package/dist/db/entity-values-repository.js +57 -0
- package/dist/db/link-repository.d.ts +30 -0
- package/dist/db/link-repository.js +54 -0
- package/dist/db/memory-repository.d.ts +163 -0
- package/dist/db/memory-repository.js +232 -0
- package/dist/db/migrate.d.ts +6 -0
- package/dist/db/migrate.js +36 -0
- package/dist/db/mmr.d.ts +14 -0
- package/dist/db/mmr.js +57 -0
- package/dist/db/passport-feed-repository.d.ts +91 -0
- package/dist/db/passport-feed-repository.js +198 -0
- package/dist/db/pg-episode-store.d.ts +19 -0
- package/dist/db/pg-episode-store.js +17 -0
- package/dist/db/pg-link-store.d.ts +17 -0
- package/dist/db/pg-link-store.js +14 -0
- package/dist/db/pg-memory-store.d.ts +68 -0
- package/dist/db/pg-memory-store.js +53 -0
- package/dist/db/pg-recap-store.d.ts +13 -0
- package/dist/db/pg-recap-store.js +19 -0
- package/dist/db/pg-representation-store.d.ts +17 -0
- package/dist/db/pg-representation-store.js +17 -0
- package/dist/db/pg-search-store.d.ts +29 -0
- package/dist/db/pg-search-store.js +47 -0
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +21 -0
- package/dist/db/ppr.d.ts +56 -0
- package/dist/db/ppr.js +178 -0
- package/dist/db/query-helpers.d.ts +44 -0
- package/dist/db/query-helpers.js +60 -0
- package/dist/db/raw-doc-artifact-sync.d.ts +128 -0
- package/dist/db/raw-doc-artifact-sync.js +259 -0
- package/dist/db/raw-document-blob-repository.d.ts +148 -0
- package/dist/db/raw-document-blob-repository.js +300 -0
- package/dist/db/raw-document-repository.d.ts +104 -0
- package/dist/db/raw-document-repository.js +410 -0
- package/dist/db/raw-document-status-repository.d.ts +122 -0
- package/dist/db/raw-document-status-repository.js +183 -0
- package/dist/db/raw-document-types.d.ts +236 -0
- package/dist/db/raw-document-types.js +10 -0
- package/dist/db/raw-storage-reconciliation-repository.d.ts +110 -0
- package/dist/db/raw-storage-reconciliation-repository.js +200 -0
- package/dist/db/reflection-jobs-repository.d.ts +33 -0
- package/dist/db/reflection-jobs-repository.js +48 -0
- package/dist/db/reflections-repository.d.ts +41 -0
- package/dist/db/reflections-repository.js +83 -0
- package/dist/db/repository-claims.d.ts +141 -0
- package/dist/db/repository-claims.js +376 -0
- package/dist/db/repository-deferred-audn.d.ts +33 -0
- package/dist/db/repository-deferred-audn.js +69 -0
- package/dist/db/repository-document-delete.d.ts +53 -0
- package/dist/db/repository-document-delete.js +156 -0
- package/dist/db/repository-entities.d.ts +114 -0
- package/dist/db/repository-entities.js +317 -0
- package/dist/db/repository-entity-attributes.d.ts +41 -0
- package/dist/db/repository-entity-attributes.js +65 -0
- package/dist/db/repository-entity-graph.d.ts +32 -0
- package/dist/db/repository-entity-graph.js +87 -0
- package/dist/db/repository-first-mentions.d.ts +41 -0
- package/dist/db/repository-first-mentions.js +79 -0
- package/dist/db/repository-lessons.d.ts +51 -0
- package/dist/db/repository-lessons.js +90 -0
- package/dist/db/repository-links.d.ts +26 -0
- package/dist/db/repository-links.js +105 -0
- package/dist/db/repository-observation.d.ts +26 -0
- package/dist/db/repository-observation.js +51 -0
- package/dist/db/repository-read.d.ts +56 -0
- package/dist/db/repository-read.js +271 -0
- package/dist/db/repository-recaps.d.ts +59 -0
- package/dist/db/repository-recaps.js +158 -0
- package/dist/db/repository-representations.d.ts +48 -0
- package/dist/db/repository-representations.js +162 -0
- package/dist/db/repository-temporal-state.d.ts +35 -0
- package/dist/db/repository-temporal-state.js +46 -0
- package/dist/db/repository-tll.d.ts +88 -0
- package/dist/db/repository-tll.js +179 -0
- package/dist/db/repository-types.d.ts +313 -0
- package/dist/db/repository-types.js +142 -0
- package/dist/db/repository-user-profiles.d.ts +17 -0
- package/dist/db/repository-user-profiles.js +28 -0
- package/dist/db/repository-vector-search.d.ts +33 -0
- package/dist/db/repository-vector-search.js +373 -0
- package/dist/db/repository-wipe.d.ts +34 -0
- package/dist/db/repository-wipe.js +94 -0
- package/dist/db/repository-write.d.ts +61 -0
- package/dist/db/repository-write.js +279 -0
- package/dist/db/schema.sql +1355 -0
- package/dist/db/storage-artifact-delete-tx.d.ts +56 -0
- package/dist/db/storage-artifact-delete-tx.js +123 -0
- package/dist/db/storage-artifact-providers.d.ts +21 -0
- package/dist/db/storage-artifact-providers.js +21 -0
- package/dist/db/storage-artifact-recovery-repository.d.ts +66 -0
- package/dist/db/storage-artifact-recovery-repository.js +58 -0
- package/dist/db/storage-artifact-repository.d.ts +329 -0
- package/dist/db/storage-artifact-repository.js +497 -0
- package/dist/db/stores.d.ts +220 -0
- package/dist/db/stores.js +12 -0
- package/dist/db/summaries-repository.d.ts +74 -0
- package/dist/db/summaries-repository.js +125 -0
- package/dist/eval/beam-10m-loader.d.ts +98 -0
- package/dist/eval/beam-10m-loader.js +128 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +17 -0
- package/dist/middleware/require-bearer.d.ts +27 -0
- package/dist/middleware/require-bearer.js +60 -0
- package/dist/middleware/validate-response.d.ts +33 -0
- package/dist/middleware/validate-response.js +55 -0
- package/dist/middleware/validate.d.ts +43 -0
- package/dist/middleware/validate.js +85 -0
- package/dist/routes/agents.d.ts +13 -0
- package/dist/routes/agents.js +89 -0
- package/dist/routes/document-response-formatters.d.ts +98 -0
- package/dist/routes/document-response-formatters.js +243 -0
- package/dist/routes/documents.d.ts +74 -0
- package/dist/routes/documents.js +425 -0
- package/dist/routes/memories.d.ts +29 -0
- package/dist/routes/memories.js +725 -0
- package/dist/routes/memory-response-formatters.d.ts +179 -0
- package/dist/routes/memory-response-formatters.js +210 -0
- package/dist/routes/public-raw-storage-metadata.d.ts +54 -0
- package/dist/routes/public-raw-storage-metadata.js +56 -0
- package/dist/routes/reflect.d.ts +14 -0
- package/dist/routes/reflect.js +19 -0
- package/dist/routes/response-schema-map.d.ts +14 -0
- package/dist/routes/response-schema-map.js +69 -0
- package/dist/routes/route-errors.d.ts +12 -0
- package/dist/routes/route-errors.js +30 -0
- package/dist/routes/storage-error-handlers.d.ts +34 -0
- package/dist/routes/storage-error-handlers.js +185 -0
- package/dist/routes/storage-response-formatters.d.ts +44 -0
- package/dist/routes/storage-response-formatters.js +155 -0
- package/dist/routes/storage.d.ts +38 -0
- package/dist/routes/storage.js +369 -0
- package/dist/routes/upstream-provider-errors.d.ts +19 -0
- package/dist/routes/upstream-provider-errors.js +95 -0
- package/dist/schemas/agents.d.ts +79 -0
- package/dist/schemas/agents.js +126 -0
- package/dist/schemas/common.d.ts +110 -0
- package/dist/schemas/common.js +190 -0
- package/dist/schemas/document-list-responses.d.ts +102 -0
- package/dist/schemas/document-list-responses.js +87 -0
- package/dist/schemas/document-list-schemas.d.ts +123 -0
- package/dist/schemas/document-list-schemas.js +174 -0
- package/dist/schemas/document-response-schemas.d.ts +610 -0
- package/dist/schemas/document-response-schemas.js +264 -0
- package/dist/schemas/document-status-envelope.d.ts +48 -0
- package/dist/schemas/document-status-envelope.js +54 -0
- package/dist/schemas/documents.d.ts +292 -0
- package/dist/schemas/documents.js +449 -0
- package/dist/schemas/errors.d.ts +75 -0
- package/dist/schemas/errors.js +105 -0
- package/dist/schemas/memories.d.ts +378 -0
- package/dist/schemas/memories.js +542 -0
- package/dist/schemas/openapi.d.ts +24 -0
- package/dist/schemas/openapi.js +1038 -0
- package/dist/schemas/response-scalars.d.ts +10 -0
- package/dist/schemas/response-scalars.js +10 -0
- package/dist/schemas/responses.d.ts +536 -0
- package/dist/schemas/responses.js +350 -0
- package/dist/schemas/search-response-parts.d.ts +97 -0
- package/dist/schemas/search-response-parts.js +103 -0
- package/dist/schemas/storage-schemas.d.ts +175 -0
- package/dist/schemas/storage-schemas.js +277 -0
- package/dist/schemas/zod-setup.d.ts +15 -0
- package/dist/schemas/zod-setup.js +17 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.js +57 -0
- package/dist/services/abstract-query-policy.d.ts +13 -0
- package/dist/services/abstract-query-policy.js +50 -0
- package/dist/services/affinity-clustering.d.ts +66 -0
- package/dist/services/affinity-clustering.js +125 -0
- package/dist/services/agentic-retrieval.d.ts +38 -0
- package/dist/services/agentic-retrieval.js +126 -0
- package/dist/services/answer-format.d.ts +56 -0
- package/dist/services/answer-format.js +118 -0
- package/dist/services/answer-rescue.d.ts +72 -0
- package/dist/services/answer-rescue.js +177 -0
- package/dist/services/answer-verifier.d.ts +24 -0
- package/dist/services/answer-verifier.js +73 -0
- package/dist/services/api-retry.d.ts +6 -0
- package/dist/services/api-retry.js +41 -0
- package/dist/services/assistant-turn-filter.d.ts +20 -0
- package/dist/services/assistant-turn-filter.js +69 -0
- package/dist/services/atomicmem-uri.d.ts +33 -0
- package/dist/services/atomicmem-uri.js +86 -0
- package/dist/services/audit-events.d.ts +54 -0
- package/dist/services/audit-events.js +56 -0
- package/dist/services/chunked-extraction.d.ts +21 -0
- package/dist/services/chunked-extraction.js +108 -0
- package/dist/services/claim-slotting.d.ts +27 -0
- package/dist/services/claim-slotting.js +38 -0
- package/dist/services/claude-code-llm.d.ts +19 -0
- package/dist/services/claude-code-llm.js +96 -0
- package/dist/services/composite-dedup.d.ts +50 -0
- package/dist/services/composite-dedup.js +153 -0
- package/dist/services/composite-grouping.d.ts +41 -0
- package/dist/services/composite-grouping.js +111 -0
- package/dist/services/composite-staleness.d.ts +20 -0
- package/dist/services/composite-staleness.js +50 -0
- package/dist/services/conciseness-preference.d.ts +14 -0
- package/dist/services/conciseness-preference.js +42 -0
- package/dist/services/conflict-policy.d.ts +20 -0
- package/dist/services/conflict-policy.js +335 -0
- package/dist/services/consensus-extraction.d.ts +39 -0
- package/dist/services/consensus-extraction.js +147 -0
- package/dist/services/consensus-validation.d.ts +52 -0
- package/dist/services/consensus-validation.js +206 -0
- package/dist/services/consolidation-service.d.ts +60 -0
- package/dist/services/consolidation-service.js +171 -0
- package/dist/services/content-detection.d.ts +18 -0
- package/dist/services/content-detection.js +25 -0
- package/dist/services/contradiction-surfacing.d.ts +62 -0
- package/dist/services/contradiction-surfacing.js +111 -0
- package/dist/services/cost-telemetry.d.ts +39 -0
- package/dist/services/cost-telemetry.js +58 -0
- package/dist/services/counter-evidence.d.ts +34 -0
- package/dist/services/counter-evidence.js +92 -0
- package/dist/services/current-state-ranking.d.ts +21 -0
- package/dist/services/current-state-ranking.js +152 -0
- package/dist/services/deferred-audn.d.ts +47 -0
- package/dist/services/deferred-audn.js +162 -0
- package/dist/services/document-chunker.d.ts +50 -0
- package/dist/services/document-chunker.js +153 -0
- package/dist/services/document-failure-markers.d.ts +91 -0
- package/dist/services/document-failure-markers.js +305 -0
- package/dist/services/document-indexer.d.ts +122 -0
- package/dist/services/document-indexer.js +405 -0
- package/dist/services/document-service.d.ts +245 -0
- package/dist/services/document-service.js +325 -0
- package/dist/services/document-upload-artifact-sync.d.ts +80 -0
- package/dist/services/document-upload-artifact-sync.js +162 -0
- package/dist/services/document-upload-beta2-recovery.d.ts +72 -0
- package/dist/services/document-upload-beta2-recovery.js +94 -0
- package/dist/services/document-upload.d.ts +44 -0
- package/dist/services/document-upload.js +353 -0
- package/dist/services/embedding.d.ts +57 -0
- package/dist/services/embedding.js +416 -0
- package/dist/services/entity-attribute-extractor.d.ts +34 -0
- package/dist/services/entity-attribute-extractor.js +117 -0
- package/dist/services/entity-card-synthesis.d.ts +54 -0
- package/dist/services/entity-card-synthesis.js +92 -0
- package/dist/services/entity-dedup.d.ts +9 -0
- package/dist/services/entity-dedup.js +14 -0
- package/dist/services/entity-graph.d.ts +17 -0
- package/dist/services/entity-graph.js +135 -0
- package/dist/services/entropy-gate.d.ts +52 -0
- package/dist/services/entropy-gate.js +56 -0
- package/dist/services/episode-fetcher.d.ts +47 -0
- package/dist/services/episode-fetcher.js +128 -0
- package/dist/services/event-anchor-facts.d.ts +8 -0
- package/dist/services/event-anchor-facts.js +205 -0
- package/dist/services/event-chain-detector.d.ts +52 -0
- package/dist/services/event-chain-detector.js +83 -0
- package/dist/services/extraction-cache.d.ts +9 -0
- package/dist/services/extraction-cache.js +54 -0
- package/dist/services/extraction-enrichment.d.ts +9 -0
- package/dist/services/extraction-enrichment.js +223 -0
- package/dist/services/extraction.d.ts +69 -0
- package/dist/services/extraction.js +596 -0
- package/dist/services/fact-normalization.d.ts +12 -0
- package/dist/services/fact-normalization.js +248 -0
- package/dist/services/filecoin-observability.d.ts +127 -0
- package/dist/services/filecoin-observability.js +200 -0
- package/dist/services/first-mention-service.d.ts +76 -0
- package/dist/services/first-mention-service.js +186 -0
- package/dist/services/hierarchical-retrieval.d.ts +49 -0
- package/dist/services/hierarchical-retrieval.js +50 -0
- package/dist/services/ingest-fact-pipeline.d.ts +32 -0
- package/dist/services/ingest-fact-pipeline.js +212 -0
- package/dist/services/ingest-post-write.d.ts +50 -0
- package/dist/services/ingest-post-write.js +117 -0
- package/dist/services/ingest-trace.d.ts +32 -0
- package/dist/services/ingest-trace.js +60 -0
- package/dist/services/input-sanitizer.d.ts +41 -0
- package/dist/services/input-sanitizer.js +135 -0
- package/dist/services/iterative-retrieval.d.ts +26 -0
- package/dist/services/iterative-retrieval.js +139 -0
- package/dist/services/keyword-expansion.d.ts +10 -0
- package/dist/services/keyword-expansion.js +26 -0
- package/dist/services/lesson-service.d.ts +68 -0
- package/dist/services/lesson-service.js +178 -0
- package/dist/services/literal-extractor.d.ts +16 -0
- package/dist/services/literal-extractor.js +74 -0
- package/dist/services/literal-list-protection.d.ts +17 -0
- package/dist/services/literal-list-protection.js +134 -0
- package/dist/services/literal-query-expansion.d.ts +20 -0
- package/dist/services/literal-query-expansion.js +181 -0
- package/dist/services/llm.d.ts +61 -0
- package/dist/services/llm.js +265 -0
- package/dist/services/memcell-projection.d.ts +17 -0
- package/dist/services/memcell-projection.js +41 -0
- package/dist/services/memory-audn.d.ts +43 -0
- package/dist/services/memory-audn.js +419 -0
- package/dist/services/memory-crud.d.ts +93 -0
- package/dist/services/memory-crud.js +255 -0
- package/dist/services/memory-ingest.d.ts +21 -0
- package/dist/services/memory-ingest.js +249 -0
- package/dist/services/memory-lifecycle.d.ts +75 -0
- package/dist/services/memory-lifecycle.js +108 -0
- package/dist/services/memory-lineage.d.ts +181 -0
- package/dist/services/memory-lineage.js +232 -0
- package/dist/services/memory-network.d.ts +40 -0
- package/dist/services/memory-network.js +75 -0
- package/dist/services/memory-search-types.d.ts +25 -0
- package/dist/services/memory-search-types.js +10 -0
- package/dist/services/memory-search.d.ts +48 -0
- package/dist/services/memory-search.js +505 -0
- package/dist/services/memory-service-types.d.ts +371 -0
- package/dist/services/memory-service-types.js +8 -0
- package/dist/services/memory-service.d.ts +152 -0
- package/dist/services/memory-service.js +225 -0
- package/dist/services/memory-storage.d.ts +33 -0
- package/dist/services/memory-storage.js +328 -0
- package/dist/services/msr-aggregator.d.ts +38 -0
- package/dist/services/msr-aggregator.js +97 -0
- package/dist/services/msr-detector.d.ts +35 -0
- package/dist/services/msr-detector.js +65 -0
- package/dist/services/namespace-retrieval.d.ts +60 -0
- package/dist/services/namespace-retrieval.js +180 -0
- package/dist/services/observation-date-extraction.d.ts +12 -0
- package/dist/services/observation-date-extraction.js +50 -0
- package/dist/services/observation-service.d.ts +27 -0
- package/dist/services/observation-service.js +84 -0
- package/dist/services/packaging-observability.d.ts +29 -0
- package/dist/services/packaging-observability.js +146 -0
- package/dist/services/query-expansion.d.ts +83 -0
- package/dist/services/query-expansion.js +242 -0
- package/dist/services/query-keyword-matches.d.ts +6 -0
- package/dist/services/query-keyword-matches.js +56 -0
- package/dist/services/query-term-visibility.d.ts +28 -0
- package/dist/services/query-term-visibility.js +100 -0
- package/dist/services/quick-extraction.d.ts +25 -0
- package/dist/services/quick-extraction.js +431 -0
- package/dist/services/quoted-entity-extraction.d.ts +10 -0
- package/dist/services/quoted-entity-extraction.js +161 -0
- package/dist/services/raw-storage-reconciler-backoff.d.ts +8 -0
- package/dist/services/raw-storage-reconciler-backoff.js +14 -0
- package/dist/services/raw-storage-reconciler-scheduler.d.ts +29 -0
- package/dist/services/raw-storage-reconciler-scheduler.js +43 -0
- package/dist/services/raw-storage-reconciler.d.ts +71 -0
- package/dist/services/raw-storage-reconciler.js +278 -0
- package/dist/services/recap-builder.d.ts +49 -0
- package/dist/services/recap-builder.js +157 -0
- package/dist/services/reflect-jobs.d.ts +23 -0
- package/dist/services/reflect-jobs.js +36 -0
- package/dist/services/reflect-prompts.d.ts +71 -0
- package/dist/services/reflect-prompts.js +99 -0
- package/dist/services/reflect-retrieval.d.ts +33 -0
- package/dist/services/reflect-retrieval.js +30 -0
- package/dist/services/reflect.d.ts +49 -0
- package/dist/services/reflect.js +84 -0
- package/dist/services/relative-temporal.d.ts +14 -0
- package/dist/services/relative-temporal.js +163 -0
- package/dist/services/relevance-policy.d.ts +37 -0
- package/dist/services/relevance-policy.js +109 -0
- package/dist/services/rerank.d.ts +32 -0
- package/dist/services/rerank.js +118 -0
- package/dist/services/reranker.d.ts +20 -0
- package/dist/services/reranker.js +99 -0
- package/dist/services/retrieval-channel-rules.d.ts +34 -0
- package/dist/services/retrieval-channel-rules.js +41 -0
- package/dist/services/retrieval-config-overlay.d.ts +36 -0
- package/dist/services/retrieval-config-overlay.js +44 -0
- package/dist/services/retrieval-format.d.ts +119 -0
- package/dist/services/retrieval-format.js +559 -0
- package/dist/services/retrieval-policy.d.ts +69 -0
- package/dist/services/retrieval-policy.js +275 -0
- package/dist/services/retrieval-profiles.d.ts +37 -0
- package/dist/services/retrieval-profiles.js +90 -0
- package/dist/services/retrieval-side-effects.d.ts +14 -0
- package/dist/services/retrieval-side-effects.js +26 -0
- package/dist/services/retrieval-trace.d.ts +108 -0
- package/dist/services/retrieval-trace.js +147 -0
- package/dist/services/rrf-fusion.d.ts +18 -0
- package/dist/services/rrf-fusion.js +34 -0
- package/dist/services/search-pipeline.d.ts +71 -0
- package/dist/services/search-pipeline.js +788 -0
- package/dist/services/session-date.d.ts +20 -0
- package/dist/services/session-date.js +61 -0
- package/dist/services/session-packaging.d.ts +53 -0
- package/dist/services/session-packaging.js +182 -0
- package/dist/services/session-summary-generator.d.ts +53 -0
- package/dist/services/session-summary-generator.js +134 -0
- package/dist/services/specialists/cr-specialist.d.ts +52 -0
- package/dist/services/specialists/cr-specialist.js +121 -0
- package/dist/services/specialists/dispatch.d.ts +53 -0
- package/dist/services/specialists/dispatch.js +102 -0
- package/dist/services/specialists/ie-ku-specialist.d.ts +37 -0
- package/dist/services/specialists/ie-ku-specialist.js +63 -0
- package/dist/services/specialists/msr-specialist.d.ts +61 -0
- package/dist/services/specialists/msr-specialist.js +162 -0
- package/dist/services/specialists/tr-specialist.d.ts +37 -0
- package/dist/services/specialists/tr-specialist.js +146 -0
- package/dist/services/storage-key-prefix.d.ts +42 -0
- package/dist/services/storage-key-prefix.js +45 -0
- package/dist/services/storage-put-recovery.d.ts +71 -0
- package/dist/services/storage-put-recovery.js +269 -0
- package/dist/services/storage-service-errors.d.ts +124 -0
- package/dist/services/storage-service-errors.js +189 -0
- package/dist/services/storage-service.d.ts +176 -0
- package/dist/services/storage-service.js +423 -0
- package/dist/services/subject-aware-ranking.d.ts +19 -0
- package/dist/services/subject-aware-ranking.js +161 -0
- package/dist/services/supplemental-extraction.d.ts +7 -0
- package/dist/services/supplemental-extraction.js +116 -0
- package/dist/services/tbc-execution.d.ts +49 -0
- package/dist/services/tbc-execution.js +284 -0
- package/dist/services/temporal-classifier.d.ts +56 -0
- package/dist/services/temporal-classifier.js +94 -0
- package/dist/services/temporal-endpoint-evidence.d.ts +12 -0
- package/dist/services/temporal-endpoint-evidence.js +313 -0
- package/dist/services/temporal-fingerprint.d.ts +6 -0
- package/dist/services/temporal-fingerprint.js +12 -0
- package/dist/services/temporal-format.d.ts +9 -0
- package/dist/services/temporal-format.js +21 -0
- package/dist/services/temporal-intent.d.ts +39 -0
- package/dist/services/temporal-intent.js +78 -0
- package/dist/services/temporal-query-constraints.d.ts +16 -0
- package/dist/services/temporal-query-constraints.js +107 -0
- package/dist/services/temporal-query-expansion.d.ts +14 -0
- package/dist/services/temporal-query-expansion.js +131 -0
- package/dist/services/temporal-rerank.d.ts +22 -0
- package/dist/services/temporal-rerank.js +47 -0
- package/dist/services/temporal-result-protection.d.ts +7 -0
- package/dist/services/temporal-result-protection.js +60 -0
- package/dist/services/temporal-state-write.d.ts +57 -0
- package/dist/services/temporal-state-write.js +45 -0
- package/dist/services/tiered-context.d.ts +87 -0
- package/dist/services/tiered-context.js +214 -0
- package/dist/services/tiered-loading.d.ts +88 -0
- package/dist/services/tiered-loading.js +263 -0
- package/dist/services/timeline-pack.d.ts +36 -0
- package/dist/services/timeline-pack.js +50 -0
- package/dist/services/timing.d.ts +13 -0
- package/dist/services/timing.js +72 -0
- package/dist/services/tll-augmentation.d.ts +20 -0
- package/dist/services/tll-augmentation.js +125 -0
- package/dist/services/tll-retrieval.d.ts +55 -0
- package/dist/services/tll-retrieval.js +101 -0
- package/dist/services/topic-abstraction.d.ts +36 -0
- package/dist/services/topic-abstraction.js +105 -0
- package/dist/services/trust-scoring.d.ts +43 -0
- package/dist/services/trust-scoring.js +89 -0
- package/dist/services/typed-belief-calculus.d.ts +126 -0
- package/dist/services/typed-belief-calculus.js +204 -0
- package/dist/services/upload-config.d.ts +34 -0
- package/dist/services/upload-config.js +23 -0
- package/dist/services/upload-decision.d.ts +65 -0
- package/dist/services/upload-decision.js +98 -0
- package/dist/services/upload-helpers.d.ts +107 -0
- package/dist/services/upload-helpers.js +148 -0
- package/dist/services/user-profile-builder.d.ts +22 -0
- package/dist/services/user-profile-builder.js +109 -0
- package/dist/services/voyage-embedding.d.ts +22 -0
- package/dist/services/voyage-embedding.js +77 -0
- package/dist/services/write-security.d.ts +31 -0
- package/dist/services/write-security.js +64 -0
- package/dist/storage/artifact-public-redaction.d.ts +34 -0
- package/dist/storage/artifact-public-redaction.js +83 -0
- package/dist/storage/cleanup.d.ts +103 -0
- package/dist/storage/cleanup.js +138 -0
- package/dist/storage/codec-factory.d.ts +17 -0
- package/dist/storage/codec-factory.js +33 -0
- package/dist/storage/codecs/aes-gcm-codec.d.ts +44 -0
- package/dist/storage/codecs/aes-gcm-codec.js +108 -0
- package/dist/storage/codecs/noop-codec.d.ts +16 -0
- package/dist/storage/codecs/noop-codec.js +23 -0
- package/dist/storage/factory.d.ts +44 -0
- package/dist/storage/factory.js +99 -0
- package/dist/storage/filecoin-cid-validation.d.ts +82 -0
- package/dist/storage/filecoin-cid-validation.js +122 -0
- package/dist/storage/filecoin-public-metadata.d.ts +73 -0
- package/dist/storage/filecoin-public-metadata.js +110 -0
- package/dist/storage/local-fs-store.d.ts +39 -0
- package/dist/storage/local-fs-store.js +145 -0
- package/dist/storage/pointer-uri-allowlist.d.ts +38 -0
- package/dist/storage/pointer-uri-allowlist.js +70 -0
- package/dist/storage/provider-metadata-projection.d.ts +27 -0
- package/dist/storage/provider-metadata-projection.js +68 -0
- package/dist/storage/providers/filecoin/backend.d.ts +42 -0
- package/dist/storage/providers/filecoin/backend.js +250 -0
- package/dist/storage/providers/filecoin/config.d.ts +70 -0
- package/dist/storage/providers/filecoin/config.js +275 -0
- package/dist/storage/providers/filecoin/errors.d.ts +45 -0
- package/dist/storage/providers/filecoin/errors.js +56 -0
- package/dist/storage/providers/filecoin/filecoin-pin-car.d.ts +78 -0
- package/dist/storage/providers/filecoin/filecoin-pin-car.js +155 -0
- package/dist/storage/providers/filecoin/filecoin-pin-client.d.ts +92 -0
- package/dist/storage/providers/filecoin/filecoin-pin-client.js +199 -0
- package/dist/storage/providers/filecoin/filecoin-pin-mapping.d.ts +58 -0
- package/dist/storage/providers/filecoin/filecoin-pin-mapping.js +103 -0
- package/dist/storage/providers/filecoin/filecoin-pin-timeout.d.ts +30 -0
- package/dist/storage/providers/filecoin/filecoin-pin-timeout.js +53 -0
- package/dist/storage/providers/filecoin/filecoin-pin-vendor.d.ts +111 -0
- package/dist/storage/providers/filecoin/filecoin-pin-vendor.js +87 -0
- package/dist/storage/providers/filecoin/hints.d.ts +71 -0
- package/dist/storage/providers/filecoin/hints.js +123 -0
- package/dist/storage/providers/filecoin/index.d.ts +51 -0
- package/dist/storage/providers/filecoin/index.js +103 -0
- package/dist/storage/providers/filecoin/ipfs-cid.d.ts +50 -0
- package/dist/storage/providers/filecoin/ipfs-cid.js +64 -0
- package/dist/storage/providers/filecoin/metadata.d.ts +72 -0
- package/dist/storage/providers/filecoin/metadata.js +137 -0
- package/dist/storage/providers/filecoin/piece-cid.d.ts +48 -0
- package/dist/storage/providers/filecoin/piece-cid.js +57 -0
- package/dist/storage/providers/filecoin/provider-client.d.ts +234 -0
- package/dist/storage/providers/filecoin/provider-client.js +27 -0
- package/dist/storage/providers/filecoin/readiness.d.ts +62 -0
- package/dist/storage/providers/filecoin/readiness.js +85 -0
- package/dist/storage/providers/filecoin/retriever.d.ts +82 -0
- package/dist/storage/providers/filecoin/retriever.js +63 -0
- package/dist/storage/providers/filecoin/skeleton-client.d.ts +36 -0
- package/dist/storage/providers/filecoin/skeleton-client.js +55 -0
- package/dist/storage/providers/filecoin/synapse-client.d.ts +169 -0
- package/dist/storage/providers/filecoin/synapse-client.js +343 -0
- package/dist/storage/providers/filecoin/synapse-construction.d.ts +26 -0
- package/dist/storage/providers/filecoin/synapse-construction.js +47 -0
- package/dist/storage/providers/filecoin/synapse-error-mapping.d.ts +23 -0
- package/dist/storage/providers/filecoin/synapse-error-mapping.js +49 -0
- package/dist/storage/providers/filecoin/synapse-readiness.d.ts +37 -0
- package/dist/storage/providers/filecoin/synapse-readiness.js +231 -0
- package/dist/storage/providers/filecoin/uri.d.ts +49 -0
- package/dist/storage/providers/filecoin/uri.js +84 -0
- package/dist/storage/providers/filecoin/verified-fetch-lifecycle.d.ts +77 -0
- package/dist/storage/providers/filecoin/verified-fetch-lifecycle.js +196 -0
- package/dist/storage/providers/filecoin/verified-fetch-retriever.d.ts +54 -0
- package/dist/storage/providers/filecoin/verified-fetch-retriever.js +81 -0
- package/dist/storage/providers/filecoin/verified-fetch-vendor.d.ts +71 -0
- package/dist/storage/providers/filecoin/verified-fetch-vendor.js +94 -0
- package/dist/storage/raw-content-codec.d.ts +89 -0
- package/dist/storage/raw-content-codec.js +47 -0
- package/dist/storage/raw-content-store-backend-adapter.d.ts +28 -0
- package/dist/storage/raw-content-store-backend-adapter.js +67 -0
- package/dist/storage/raw-content-store.d.ts +228 -0
- package/dist/storage/raw-content-store.js +27 -0
- package/dist/storage/s3-store.d.ts +42 -0
- package/dist/storage/s3-store.js +181 -0
- package/dist/storage/storage-backend-registry.d.ts +58 -0
- package/dist/storage/storage-backend-registry.js +56 -0
- package/dist/storage/storage-backend.d.ts +82 -0
- package/dist/storage/storage-backend.js +14 -0
- package/dist/storage/storage-capabilities.d.ts +56 -0
- package/dist/storage/storage-capabilities.js +170 -0
- package/dist/storage/store-registry.d.ts +67 -0
- package/dist/storage/store-registry.js +77 -0
- package/dist/vector-math.d.ts +15 -0
- package/dist/vector-math.js +31 -0
- package/dist/xml-escape.d.ts +5 -0
- package/dist/xml-escape.js +7 -0
- package/openapi.json +15395 -0
- package/openapi.yaml +10794 -0
- package/package.json +119 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain-facing store interfaces for Phase 5.
|
|
3
|
+
*
|
|
4
|
+
* Each interface exposes only the methods its domain consumers need.
|
|
5
|
+
* Implementations delegate to the existing split repository modules
|
|
6
|
+
* (repository-read.ts, repository-write.ts, repository-links.ts, etc.).
|
|
7
|
+
*
|
|
8
|
+
* For ClaimStore, EntityStore, and LessonStore, the existing repository
|
|
9
|
+
* classes already serve as implementations — these interfaces are extracted
|
|
10
|
+
* from their public surfaces.
|
|
11
|
+
*/
|
|
12
|
+
import type pg from 'pg';
|
|
13
|
+
import type { EntityAttributesRepository } from './repository-entity-attributes.js';
|
|
14
|
+
import type { EntityValuesRepository } from './entity-values-repository.js';
|
|
15
|
+
import type { EntityCardsRepository } from './entity-cards-repository.js';
|
|
16
|
+
import type { ContradictionsRepository } from './contradictions-repository.js';
|
|
17
|
+
import type { BeliefEdgesRepository } from './belief-edges-repository.js';
|
|
18
|
+
import type { AgentScope, AtomicFactRow, CanonicalMemoryObjectLineage, ForesightRow, MemoryRow, SearchResult, EpisodeRow, StoreMemoryInput } from './repository-types.js';
|
|
19
|
+
import type { CandidateRow } from './repository-vector-search.js';
|
|
20
|
+
/** A topic-similarity candidate row returned by findTopicCandidates. */
|
|
21
|
+
export interface TopicCandidateRow extends CandidateRow {
|
|
22
|
+
topic_abstraction: string;
|
|
23
|
+
}
|
|
24
|
+
/** Recap-layer store (Sprint 3 v1). Cross-session synthesis. */
|
|
25
|
+
export interface RecapStore {
|
|
26
|
+
findUnconsolidatedClusters(userId: string, minSize: number, pivot?: 'topic' | 'session'): Promise<{
|
|
27
|
+
topic: string;
|
|
28
|
+
member_ids: string[];
|
|
29
|
+
member_contents: string[];
|
|
30
|
+
time_range_start: Date | null;
|
|
31
|
+
time_range_end: Date | null;
|
|
32
|
+
}[]>;
|
|
33
|
+
storeRecap(input: {
|
|
34
|
+
userId: string;
|
|
35
|
+
recapText: string;
|
|
36
|
+
recapEmbedding: number[];
|
|
37
|
+
topic: string;
|
|
38
|
+
memberMemoryIds: string[];
|
|
39
|
+
timeRangeStart: Date | null;
|
|
40
|
+
timeRangeEnd: Date | null;
|
|
41
|
+
}): Promise<string>;
|
|
42
|
+
findRecapCandidates(userId: string, queryEmbedding: number[], limit: number): Promise<{
|
|
43
|
+
id: string;
|
|
44
|
+
user_id: string;
|
|
45
|
+
recap_text: string;
|
|
46
|
+
recap_embedding: number[];
|
|
47
|
+
topic: string;
|
|
48
|
+
member_count: number;
|
|
49
|
+
similarity: number;
|
|
50
|
+
}[]>;
|
|
51
|
+
}
|
|
52
|
+
import type { StoreAtomicFactInput, StoreForesightInput } from './repository-representations.js';
|
|
53
|
+
import type { MemoryLink } from './repository-links.js';
|
|
54
|
+
import type { SummariesRepository } from './summaries-repository.js';
|
|
55
|
+
import type { ManagedBlobRefRow } from './raw-document-blob-repository.js';
|
|
56
|
+
export type { StoreMemoryInput };
|
|
57
|
+
export interface MemoryStore {
|
|
58
|
+
storeMemory(input: StoreMemoryInput): Promise<string>;
|
|
59
|
+
getMemory(id: string, userId?: string): Promise<MemoryRow | null>;
|
|
60
|
+
getMemoryIncludingDeleted(id: string, userId?: string): Promise<MemoryRow | null>;
|
|
61
|
+
listMemories(userId: string, limit?: number, offset?: number, sourceSite?: string, episodeId?: string): Promise<MemoryRow[]>;
|
|
62
|
+
softDeleteMemory(userId: string, id: string): Promise<void>;
|
|
63
|
+
updateMemoryContent(userId: string, id: string, content: string, embedding: number[], importance: number, keywords?: string, trustScore?: number): Promise<void>;
|
|
64
|
+
updateMemoryMetadata(userId: string, id: string, metadata: Record<string, unknown>): Promise<void>;
|
|
65
|
+
expireMemory(userId: string, id: string): Promise<void>;
|
|
66
|
+
touchMemory(id: string): Promise<void>;
|
|
67
|
+
countMemories(userId?: string): Promise<number>;
|
|
68
|
+
getMemoryStats(userId: string): Promise<{
|
|
69
|
+
count: number;
|
|
70
|
+
avgImportance: number;
|
|
71
|
+
sourceDistribution: Record<string, number>;
|
|
72
|
+
}>;
|
|
73
|
+
deleteBySource(userId: string, sourceSite: string): Promise<{
|
|
74
|
+
deletedMemories: number;
|
|
75
|
+
deletedEpisodes: number;
|
|
76
|
+
deletedDocuments: number;
|
|
77
|
+
/** Managed-blob refs the caller hands to `cleanupManagedBlobs()`
|
|
78
|
+
* after the DB tx commits. Each ref carries `rawDocumentId` so
|
|
79
|
+
* the cleanup loop can sync the paired artifact by id. */
|
|
80
|
+
blobs: ManagedBlobRefRow[];
|
|
81
|
+
}>;
|
|
82
|
+
deleteAll(userId?: string): Promise<void>;
|
|
83
|
+
backdateMemories(ids: string[], timestamp: Date): Promise<void>;
|
|
84
|
+
updateOpinionConfidence(userId: string, memoryId: string, newConfidence: number): Promise<void>;
|
|
85
|
+
countNeedsClarification(userId: string): Promise<number>;
|
|
86
|
+
storeCanonicalMemoryObject(input: {
|
|
87
|
+
userId: string;
|
|
88
|
+
objectFamily: 'ingested_fact';
|
|
89
|
+
payloadFormat?: string;
|
|
90
|
+
canonicalPayload: {
|
|
91
|
+
factText: string;
|
|
92
|
+
factType: string;
|
|
93
|
+
headline: string;
|
|
94
|
+
keywords: string[];
|
|
95
|
+
};
|
|
96
|
+
provenance: {
|
|
97
|
+
episodeId: string | null;
|
|
98
|
+
sourceSite: string;
|
|
99
|
+
sourceUrl: string;
|
|
100
|
+
};
|
|
101
|
+
observedAt?: Date;
|
|
102
|
+
lineage: CanonicalMemoryObjectLineage;
|
|
103
|
+
}): Promise<string>;
|
|
104
|
+
getMemoryInWorkspace(id: string, workspaceId: string, callerAgentId?: string): Promise<MemoryRow | null>;
|
|
105
|
+
listMemoriesInWorkspace(workspaceId: string, limit?: number, offset?: number, callerAgentId?: string): Promise<MemoryRow[]>;
|
|
106
|
+
softDeleteMemoryInWorkspace(id: string, workspaceId: string): Promise<void>;
|
|
107
|
+
}
|
|
108
|
+
export interface EpisodeStore {
|
|
109
|
+
storeEpisode(input: {
|
|
110
|
+
userId: string;
|
|
111
|
+
content: string;
|
|
112
|
+
sourceSite: string;
|
|
113
|
+
sourceUrl?: string;
|
|
114
|
+
sessionId?: string;
|
|
115
|
+
workspaceId?: string;
|
|
116
|
+
agentId?: string;
|
|
117
|
+
}): Promise<string>;
|
|
118
|
+
getEpisode(id: string): Promise<EpisodeRow | null>;
|
|
119
|
+
}
|
|
120
|
+
export interface SearchStore {
|
|
121
|
+
searchSimilar(userId: string, queryEmbedding: number[], limit: number, sourceSite?: string, referenceTime?: Date): Promise<SearchResult[]>;
|
|
122
|
+
searchHybrid(userId: string, queryText: string, queryEmbedding: number[], limit: number, sourceSite?: string, referenceTime?: Date): Promise<SearchResult[]>;
|
|
123
|
+
searchKeyword(userId: string, queryText: string, limit: number, sourceSite?: string): Promise<SearchResult[]>;
|
|
124
|
+
searchAtomicFactsHybrid(userId: string, queryText: string, queryEmbedding: number[], limit: number, sourceSite?: string, referenceTime?: Date): Promise<SearchResult[]>;
|
|
125
|
+
findNearDuplicates(userId: string, embedding: number[], threshold: number, limit?: number): Promise<CandidateRow[]>;
|
|
126
|
+
findKeywordCandidates(userId: string, keywords: string[], limit?: number, includeExpired?: boolean): Promise<CandidateRow[]>;
|
|
127
|
+
findTopicCandidates(userId: string, queryEmbedding: number[], limit: number): Promise<TopicCandidateRow[]>;
|
|
128
|
+
findTemporalNeighbors(userId: string, anchorTimestamps: Date[], queryEmbedding: number[], windowMinutes: number, excludeIds: Set<string>, limit: number, referenceTime?: Date): Promise<SearchResult[]>;
|
|
129
|
+
fetchMemoriesByIds(userId: string, ids: string[], queryEmbedding: number[], referenceTime?: Date, includeExpired?: boolean): Promise<SearchResult[]>;
|
|
130
|
+
searchSimilarInWorkspace(workspaceId: string, queryEmbedding: number[], limit: number, agentScope?: AgentScope, callerAgentId?: string, referenceTime?: Date): Promise<SearchResult[]>;
|
|
131
|
+
findNearDuplicatesInWorkspace(workspaceId: string, embedding: number[], threshold: number, limit?: number, agentScope?: AgentScope, callerAgentId?: string): Promise<CandidateRow[]>;
|
|
132
|
+
}
|
|
133
|
+
export interface SemanticLinkStore {
|
|
134
|
+
createLinks(links: MemoryLink[]): Promise<number>;
|
|
135
|
+
findLinkCandidates(userId: string, embedding: number[], threshold: number, excludeId: string, limit?: number): Promise<Array<{
|
|
136
|
+
id: string;
|
|
137
|
+
similarity: number;
|
|
138
|
+
}>>;
|
|
139
|
+
findLinkedMemoryIds(memoryIds: string[], excludeIds: Set<string>, limit: number): Promise<string[]>;
|
|
140
|
+
countLinks(): Promise<number>;
|
|
141
|
+
}
|
|
142
|
+
export interface RepresentationStore {
|
|
143
|
+
storeAtomicFacts(facts: StoreAtomicFactInput[]): Promise<string[]>;
|
|
144
|
+
storeForesight(entries: StoreForesightInput[]): Promise<string[]>;
|
|
145
|
+
listAtomicFactsForMemory(userId: string, parentMemoryId: string): Promise<AtomicFactRow[]>;
|
|
146
|
+
listForesightForMemory(userId: string, parentMemoryId: string): Promise<ForesightRow[]>;
|
|
147
|
+
replaceAtomicFactsForMemory(userId: string, parentMemoryId: string, facts: StoreAtomicFactInput[]): Promise<string[]>;
|
|
148
|
+
replaceForesightForMemory(userId: string, parentMemoryId: string, entries: StoreForesightInput[]): Promise<string[]>;
|
|
149
|
+
}
|
|
150
|
+
export type ClaimStore = Pick<import('./repository-claims.js').ClaimRepository, 'addEvidence' | 'createClaim' | 'createClaimVersion' | 'createUpdateVersion' | 'findClaimByMemoryId' | 'getActiveClaimTargetBySlot' | 'getClaimVersionByMemoryId' | 'getRecentMutations' | 'getReversalChain' | 'getUserMutationSummary' | 'invalidateClaim' | 'listClaimsMissingSlots' | 'searchClaimVersions' | 'setClaimCurrentVersion' | 'supersedeClaimVersion' | 'updateClaimSlot' | 'deleteAll'>;
|
|
151
|
+
export type EntityStore = Pick<import('./repository-entities.js').EntityRepository, 'resolveEntity' | 'linkMemoryToEntity' | 'getEntitiesForMemory' | 'getEntity' | 'searchEntities' | 'findEntitiesByName' | 'findMemoryIdsByEntities' | 'findRelatedEntityIds' | 'findDeterministicEntity' | 'getRelationsForMemory' | 'upsertRelation' | 'countEntities'>;
|
|
152
|
+
export type LessonStore = Pick<import('./repository-lessons.js').LessonRepository, 'createLesson' | 'findSimilarLessons' | 'getLessonsByUser' | 'getLessonsByType' | 'deactivateLesson' | 'countActiveLessons' | 'deleteAll'>;
|
|
153
|
+
export interface CoreStores {
|
|
154
|
+
memory: MemoryStore;
|
|
155
|
+
episode: EpisodeStore;
|
|
156
|
+
/** Recap layer (Sprint 3 v1). Optional/null disables Recap features. */
|
|
157
|
+
recap: RecapStore | null;
|
|
158
|
+
search: SearchStore;
|
|
159
|
+
link: SemanticLinkStore;
|
|
160
|
+
representation: RepresentationStore;
|
|
161
|
+
claim: ClaimStore;
|
|
162
|
+
entity: EntityStore | null;
|
|
163
|
+
/** Entity-attribute index (EAI). Null when entityAttributesEnabled is off. */
|
|
164
|
+
entityAttributes: EntityAttributesRepository | null;
|
|
165
|
+
lesson: LessonStore | null;
|
|
166
|
+
/**
|
|
167
|
+
* Hierarchical retrieval summaries (TBC sprint). Null when
|
|
168
|
+
* `hierarchicalRetrievalEnabled` is off — gates the 5th RRF arm
|
|
169
|
+
* in search-pipeline.
|
|
170
|
+
*/
|
|
171
|
+
summaries: SummariesRepository | null;
|
|
172
|
+
/**
|
|
173
|
+
* User-profile store (Sprint 3 v1.5 — H2). Null when
|
|
174
|
+
* `userProfileChannelEnabled` is off.
|
|
175
|
+
*/
|
|
176
|
+
userProfile: import('./repository-user-profiles.js').UserProfileRepository | null;
|
|
177
|
+
/**
|
|
178
|
+
* Reflection retrieval store (BEAM-0.85 Phase 1, Task 1.9). Null when
|
|
179
|
+
* `reflectEnabled` is off — the reflect-retrieval helper short-circuits
|
|
180
|
+
* on the disabled flag so callers always pass the store through.
|
|
181
|
+
*/
|
|
182
|
+
reflections: import('./reflections-repository.js').ReflectionsRepository | null;
|
|
183
|
+
/**
|
|
184
|
+
* Reflection job queue (BEAM-0.85 Phase 1, Task 1.12). Null when
|
|
185
|
+
* `reflectEnabled` is off.
|
|
186
|
+
*/
|
|
187
|
+
reflectionJobs: import('./reflection-jobs-repository.js').ReflectionJobsRepository | null;
|
|
188
|
+
/**
|
|
189
|
+
* Belief-edges repository for the CR bilateral-contradiction specialist
|
|
190
|
+
* (BEAM-0.85 Phase 2). Null when `tbcEnabled` is off — the CR specialist
|
|
191
|
+
* dispatcher short-circuits when the repo is absent.
|
|
192
|
+
*/
|
|
193
|
+
beliefEdges: BeliefEdgesRepository | null;
|
|
194
|
+
/**
|
|
195
|
+
* Entity-values store for the IE/KU literal-value specialist (BEAM-0.85
|
|
196
|
+
* Phase 2). Null when `phase2SpecialistsEnabled` is off — the specialist
|
|
197
|
+
* dispatcher short-circuits when the repo is absent.
|
|
198
|
+
*/
|
|
199
|
+
entityValues: EntityValuesRepository | null;
|
|
200
|
+
/**
|
|
201
|
+
* Entity-cards store for the always-on ENTITY_CARD channel (BEAM-0.85 —
|
|
202
|
+
* Honcho parity). Null when `entityCardEnabled` is off. When present, the
|
|
203
|
+
* search pipeline reads cards by (userId, conversationId) and injects
|
|
204
|
+
* them as `## ENTITY_STATE` at the top of every answer-LLM prompt.
|
|
205
|
+
*/
|
|
206
|
+
entityCards: EntityCardsRepository | null;
|
|
207
|
+
/**
|
|
208
|
+
* Contradictions store for AUDN bilateral preservation (BEAM CR fix).
|
|
209
|
+
* Null when `contradictionPreservationEnabled` is off. When present,
|
|
210
|
+
* AUDN's DELETE/SUPERSEDE path keeps both memories and records the pair
|
|
211
|
+
* here instead of discarding the older side.
|
|
212
|
+
*/
|
|
213
|
+
contradictions: ContradictionsRepository | null;
|
|
214
|
+
/**
|
|
215
|
+
* Raw pool access for call sites that still need it (PPR, deferred-audn
|
|
216
|
+
* reconciliation, link generation). Will be removed when those paths
|
|
217
|
+
* move behind dedicated store methods.
|
|
218
|
+
*/
|
|
219
|
+
pool: pg.Pool;
|
|
220
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain-facing store interfaces for Phase 5.
|
|
3
|
+
*
|
|
4
|
+
* Each interface exposes only the methods its domain consumers need.
|
|
5
|
+
* Implementations delegate to the existing split repository modules
|
|
6
|
+
* (repository-read.ts, repository-write.ts, repository-links.ts, etc.).
|
|
7
|
+
*
|
|
8
|
+
* For ClaimStore, EntityStore, and LessonStore, the existing repository
|
|
9
|
+
* classes already serve as implementations — these interfaces are extracted
|
|
10
|
+
* from their public surfaces.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository for hierarchical-retrieval session + conversation summaries.
|
|
3
|
+
* Schema lives in src/db/schema.sql under "Hierarchical Retrieval" section.
|
|
4
|
+
* Activated only when `HIERARCHICAL_RETRIEVAL_ENABLED=true`; see
|
|
5
|
+
* docs/hierarchical-retrieval.md.
|
|
6
|
+
*
|
|
7
|
+
* Reads use pgvector cosine distance (`embedding <=> $1`) returning
|
|
8
|
+
* `1 - distance` as similarity. The `pgvector` package converts JS
|
|
9
|
+
* arrays to the SQL vector literal at call time.
|
|
10
|
+
*/
|
|
11
|
+
import pg from 'pg';
|
|
12
|
+
export interface AppendSessionSummaryInput {
|
|
13
|
+
userId: string;
|
|
14
|
+
sessionId: string;
|
|
15
|
+
conversationId: string;
|
|
16
|
+
sessionIndex: number;
|
|
17
|
+
summaryText: string;
|
|
18
|
+
summaryEmbedding: number[];
|
|
19
|
+
topics: string[];
|
|
20
|
+
factCount: number;
|
|
21
|
+
occurredStart?: Date | null;
|
|
22
|
+
occurredEnd?: Date | null;
|
|
23
|
+
workspaceId?: string | null;
|
|
24
|
+
agentId?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface AppendConvSummaryInput {
|
|
27
|
+
userId: string;
|
|
28
|
+
conversationId: string;
|
|
29
|
+
summaryText: string;
|
|
30
|
+
summaryEmbedding: number[];
|
|
31
|
+
sessionCount: number;
|
|
32
|
+
factCount: number;
|
|
33
|
+
occurredStart?: Date | null;
|
|
34
|
+
occurredEnd?: Date | null;
|
|
35
|
+
workspaceId?: string | null;
|
|
36
|
+
agentId?: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface ConvSummaryHit {
|
|
39
|
+
id: string;
|
|
40
|
+
conversationId: string;
|
|
41
|
+
similarity: number;
|
|
42
|
+
summaryText: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SessionSummaryHit {
|
|
45
|
+
id: string;
|
|
46
|
+
sessionId: string;
|
|
47
|
+
conversationId: string;
|
|
48
|
+
sessionIndex: number;
|
|
49
|
+
similarity: number;
|
|
50
|
+
summaryText: string;
|
|
51
|
+
}
|
|
52
|
+
export declare class SummariesRepository {
|
|
53
|
+
private readonly pool;
|
|
54
|
+
constructor(pool: pg.Pool);
|
|
55
|
+
/** Insert a session summary; returns the new row id. */
|
|
56
|
+
appendSessionSummary(input: AppendSessionSummaryInput): Promise<string>;
|
|
57
|
+
/** Insert a conversation summary; returns the new row id. */
|
|
58
|
+
appendConvSummary(input: AppendConvSummaryInput): Promise<string>;
|
|
59
|
+
/** Stage 1: top-K conversation summaries by query-embedding similarity. */
|
|
60
|
+
searchTopConvSummaries(userId: string, queryEmbedding: number[], topK: number): Promise<ConvSummaryHit[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Stage 2: top-K session summaries by query-embedding similarity, filtered
|
|
63
|
+
* to a set of conversation IDs (typically the matches from stage 1).
|
|
64
|
+
*/
|
|
65
|
+
searchTopSessionSummaries(userId: string, conversationIds: string[], queryEmbedding: number[], topK: number): Promise<SessionSummaryHit[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Stage 3: expand from a set of session_ids to atomic-memory ids by
|
|
68
|
+
* joining through episodes. The 5th RRF arm hands these ids to the
|
|
69
|
+
* existing rank pipeline.
|
|
70
|
+
*/
|
|
71
|
+
getMemoryIdsForSessions(userId: string, sessionIds: string[], limit: number): Promise<string[]>;
|
|
72
|
+
/** Test/dev helper. */
|
|
73
|
+
deleteAllForUser(userId: string): Promise<void>;
|
|
74
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository for hierarchical-retrieval session + conversation summaries.
|
|
3
|
+
* Schema lives in src/db/schema.sql under "Hierarchical Retrieval" section.
|
|
4
|
+
* Activated only when `HIERARCHICAL_RETRIEVAL_ENABLED=true`; see
|
|
5
|
+
* docs/hierarchical-retrieval.md.
|
|
6
|
+
*
|
|
7
|
+
* Reads use pgvector cosine distance (`embedding <=> $1`) returning
|
|
8
|
+
* `1 - distance` as similarity. The `pgvector` package converts JS
|
|
9
|
+
* arrays to the SQL vector literal at call time.
|
|
10
|
+
*/
|
|
11
|
+
export class SummariesRepository {
|
|
12
|
+
pool;
|
|
13
|
+
constructor(pool) {
|
|
14
|
+
this.pool = pool;
|
|
15
|
+
}
|
|
16
|
+
/** Insert a session summary; returns the new row id. */
|
|
17
|
+
async appendSessionSummary(input) {
|
|
18
|
+
const pgvector = await import('pgvector/pg');
|
|
19
|
+
const result = await this.pool.query(`INSERT INTO session_summaries
|
|
20
|
+
(user_id, session_id, conversation_id, session_index, summary_text,
|
|
21
|
+
summary_embedding, topics, fact_count, occurred_start, occurred_end,
|
|
22
|
+
workspace_id, agent_id)
|
|
23
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
|
|
24
|
+
RETURNING id`, [
|
|
25
|
+
input.userId,
|
|
26
|
+
input.sessionId,
|
|
27
|
+
input.conversationId,
|
|
28
|
+
input.sessionIndex,
|
|
29
|
+
input.summaryText,
|
|
30
|
+
pgvector.default.toSql(input.summaryEmbedding),
|
|
31
|
+
input.topics,
|
|
32
|
+
input.factCount,
|
|
33
|
+
input.occurredStart ?? null,
|
|
34
|
+
input.occurredEnd ?? null,
|
|
35
|
+
input.workspaceId ?? null,
|
|
36
|
+
input.agentId ?? null,
|
|
37
|
+
]);
|
|
38
|
+
return result.rows[0]?.id ?? '';
|
|
39
|
+
}
|
|
40
|
+
/** Insert a conversation summary; returns the new row id. */
|
|
41
|
+
async appendConvSummary(input) {
|
|
42
|
+
const pgvector = await import('pgvector/pg');
|
|
43
|
+
const result = await this.pool.query(`INSERT INTO conv_summaries
|
|
44
|
+
(user_id, conversation_id, summary_text, summary_embedding,
|
|
45
|
+
session_count, fact_count, occurred_start, occurred_end,
|
|
46
|
+
workspace_id, agent_id)
|
|
47
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
|
|
48
|
+
RETURNING id`, [
|
|
49
|
+
input.userId,
|
|
50
|
+
input.conversationId,
|
|
51
|
+
input.summaryText,
|
|
52
|
+
pgvector.default.toSql(input.summaryEmbedding),
|
|
53
|
+
input.sessionCount,
|
|
54
|
+
input.factCount,
|
|
55
|
+
input.occurredStart ?? null,
|
|
56
|
+
input.occurredEnd ?? null,
|
|
57
|
+
input.workspaceId ?? null,
|
|
58
|
+
input.agentId ?? null,
|
|
59
|
+
]);
|
|
60
|
+
return result.rows[0]?.id ?? '';
|
|
61
|
+
}
|
|
62
|
+
/** Stage 1: top-K conversation summaries by query-embedding similarity. */
|
|
63
|
+
async searchTopConvSummaries(userId, queryEmbedding, topK) {
|
|
64
|
+
const pgvector = await import('pgvector/pg');
|
|
65
|
+
const result = await this.pool.query(`SELECT id, conversation_id, summary_text,
|
|
66
|
+
1 - (summary_embedding <=> $1) AS similarity
|
|
67
|
+
FROM conv_summaries
|
|
68
|
+
WHERE user_id = $2
|
|
69
|
+
ORDER BY summary_embedding <=> $1
|
|
70
|
+
LIMIT $3`, [pgvector.default.toSql(queryEmbedding), userId, topK]);
|
|
71
|
+
return result.rows.map((row) => ({
|
|
72
|
+
id: row.id,
|
|
73
|
+
conversationId: row.conversation_id,
|
|
74
|
+
similarity: Number(row.similarity),
|
|
75
|
+
summaryText: row.summary_text,
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Stage 2: top-K session summaries by query-embedding similarity, filtered
|
|
80
|
+
* to a set of conversation IDs (typically the matches from stage 1).
|
|
81
|
+
*/
|
|
82
|
+
async searchTopSessionSummaries(userId, conversationIds, queryEmbedding, topK) {
|
|
83
|
+
if (conversationIds.length === 0)
|
|
84
|
+
return [];
|
|
85
|
+
const pgvector = await import('pgvector/pg');
|
|
86
|
+
const result = await this.pool.query(`SELECT id, session_id, conversation_id, session_index, summary_text,
|
|
87
|
+
1 - (summary_embedding <=> $1) AS similarity
|
|
88
|
+
FROM session_summaries
|
|
89
|
+
WHERE user_id = $2 AND conversation_id = ANY($3::text[])
|
|
90
|
+
ORDER BY summary_embedding <=> $1
|
|
91
|
+
LIMIT $4`, [pgvector.default.toSql(queryEmbedding), userId, conversationIds, topK]);
|
|
92
|
+
return result.rows.map((row) => ({
|
|
93
|
+
id: row.id,
|
|
94
|
+
sessionId: row.session_id,
|
|
95
|
+
conversationId: row.conversation_id,
|
|
96
|
+
sessionIndex: row.session_index,
|
|
97
|
+
similarity: Number(row.similarity),
|
|
98
|
+
summaryText: row.summary_text,
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Stage 3: expand from a set of session_ids to atomic-memory ids by
|
|
103
|
+
* joining through episodes. The 5th RRF arm hands these ids to the
|
|
104
|
+
* existing rank pipeline.
|
|
105
|
+
*/
|
|
106
|
+
async getMemoryIdsForSessions(userId, sessionIds, limit) {
|
|
107
|
+
if (sessionIds.length === 0)
|
|
108
|
+
return [];
|
|
109
|
+
const result = await this.pool.query(`SELECT m.id
|
|
110
|
+
FROM memories m
|
|
111
|
+
JOIN episodes e ON m.episode_id = e.id
|
|
112
|
+
WHERE m.user_id = $1
|
|
113
|
+
AND e.session_id = ANY($2::text[])
|
|
114
|
+
AND m.deleted_at IS NULL
|
|
115
|
+
AND m.expired_at IS NULL
|
|
116
|
+
ORDER BY m.created_at DESC
|
|
117
|
+
LIMIT $3`, [userId, sessionIds, limit]);
|
|
118
|
+
return result.rows.map((r) => r.id);
|
|
119
|
+
}
|
|
120
|
+
/** Test/dev helper. */
|
|
121
|
+
async deleteAllForUser(userId) {
|
|
122
|
+
await this.pool.query(`DELETE FROM session_summaries WHERE user_id = $1`, [userId]);
|
|
123
|
+
await this.pool.query(`DELETE FROM conv_summaries WHERE user_id = $1`, [userId]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEAM-10M dataset loader (T3.1 scaffold).
|
|
3
|
+
*
|
|
4
|
+
* Source: HuggingFace `Mohammadta/BEAM-10M` (200 questions / 10 conversations).
|
|
5
|
+
* The 10M tier averages ~1.4M tokens of conversation context per system —
|
|
6
|
+
* the highest-difficulty BEAM tier and the SOTA target for this sprint.
|
|
7
|
+
*
|
|
8
|
+
* This loader is a *stub*: it returns the typed shape for tests and the
|
|
9
|
+
* smoke design without invoking the HuggingFace API. Real loading lives
|
|
10
|
+
* in `atomicmemory-benchmarks/atomicbench/src/eval/` once the loader is
|
|
11
|
+
* promoted out of the worktree.
|
|
12
|
+
*/
|
|
13
|
+
/** A single ingest-time message in a session. */
|
|
14
|
+
export interface Beam10MMessage {
|
|
15
|
+
role: 'user' | 'assistant';
|
|
16
|
+
content: string;
|
|
17
|
+
/** ISO timestamp anchoring the turn for temporal queries. */
|
|
18
|
+
timestamp: string;
|
|
19
|
+
}
|
|
20
|
+
/** One session = one chunked conversation segment with shared time anchor. */
|
|
21
|
+
export interface Beam10MSession {
|
|
22
|
+
/** Stable session id used as both ingest scope and summary key. */
|
|
23
|
+
sessionId: string;
|
|
24
|
+
/** 0-based position within the parent conversation. */
|
|
25
|
+
sessionIndex: number;
|
|
26
|
+
/** ISO date the session started (for temporal RRF arm). */
|
|
27
|
+
startedAt: string;
|
|
28
|
+
/** Ordered messages in this session. */
|
|
29
|
+
messages: Beam10MMessage[];
|
|
30
|
+
}
|
|
31
|
+
/** A BEAM probing question — same shape across all tiers. */
|
|
32
|
+
export interface Beam10MQuestion {
|
|
33
|
+
/** Stable id (e.g. `c1-q3-KU`). */
|
|
34
|
+
id: string;
|
|
35
|
+
/** BEAM ability category; one of the 10 standard codes. */
|
|
36
|
+
ability: 'ABS' | 'CR' | 'EO' | 'IE' | 'IF' | 'KU' | 'MSR' | 'PF' | 'SUM' | 'TR';
|
|
37
|
+
/** Question text. */
|
|
38
|
+
question: string;
|
|
39
|
+
/** Ground-truth answer / rubric anchor — used by the judge. */
|
|
40
|
+
ideal: string;
|
|
41
|
+
/** Optional per-rubric criteria the judge scores. */
|
|
42
|
+
rubric: string[];
|
|
43
|
+
}
|
|
44
|
+
/** One conversation = many sessions + a fixed set of probing questions. */
|
|
45
|
+
export interface Beam10MConversation {
|
|
46
|
+
/** 1-based conversation id (matches Mem0's published numbering). */
|
|
47
|
+
conversationId: number;
|
|
48
|
+
/** Ordered sessions; ingest happens session-by-session. */
|
|
49
|
+
sessions: Beam10MSession[];
|
|
50
|
+
/** 20 probing questions per conversation × 10 conversations = 200 total. */
|
|
51
|
+
questions: Beam10MQuestion[];
|
|
52
|
+
/** Approximate total tokens of conversation transcript (≈ 1.4M for 10M tier). */
|
|
53
|
+
approxTokens: number;
|
|
54
|
+
}
|
|
55
|
+
/** The full BEAM-10M dataset as returned by the loader. */
|
|
56
|
+
export interface Beam10MDataset {
|
|
57
|
+
schemaVersion: 'beam-10m.v1';
|
|
58
|
+
/** Tier identifier. */
|
|
59
|
+
tier: '10M';
|
|
60
|
+
conversations: Beam10MConversation[];
|
|
61
|
+
/** Total question count across all conversations (200 in the canonical set). */
|
|
62
|
+
totalQuestions: number;
|
|
63
|
+
}
|
|
64
|
+
export interface LoadBeam10MOptions {
|
|
65
|
+
/** Limit to first N questions per conversation (for smoke / cost control). */
|
|
66
|
+
sliceSize?: number;
|
|
67
|
+
/** Restrict to specific conversation ids (e.g. [1] for conv-1 smoke). */
|
|
68
|
+
conversationIds?: number[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Load the BEAM-10M dataset. If the normalized JSON cache produced by
|
|
72
|
+
* `atomicmemory-benchmarks/data/beam-10m/preprocess.py` exists at the
|
|
73
|
+
* resolved path, parses it and returns the real dataset. Otherwise falls
|
|
74
|
+
* back to a deterministic stub fixture matching the canonical
|
|
75
|
+
* 10-conversation × 20-question shape, so tests and cost-estimator code
|
|
76
|
+
* keep working without the ~344 MB parquet shards on disk.
|
|
77
|
+
*/
|
|
78
|
+
export declare function loadBeam10MDataset(opts?: LoadBeam10MOptions): Promise<Beam10MDataset>;
|
|
79
|
+
/**
|
|
80
|
+
* Cost projection for a given dataset slice. Used by the smoke plan to
|
|
81
|
+
* estimate per-seed cost before committing the full multirun budget.
|
|
82
|
+
*
|
|
83
|
+
* Cost components per system per question:
|
|
84
|
+
* - ingest (one-time): ~$0.002/fact × ~150 facts/conv = $0.30/conv
|
|
85
|
+
* - summary generation (hierarchical only): ~$0.001/session × 50 sessions = $0.05/conv
|
|
86
|
+
* - search + answer + judge: ~$0.10/question (multi-iter)
|
|
87
|
+
*
|
|
88
|
+
* Per-conv: ~$2 ingest + $2 questions = ~$4/conv. 10 convs = ~$40/seed.
|
|
89
|
+
* The smoke (conv-1 × 20 q) is ~$4. n=3 multirun on full set = ~$120.
|
|
90
|
+
*/
|
|
91
|
+
export declare function estimateBeamCost(dataset: Beam10MDataset, opts?: {
|
|
92
|
+
hierarchicalEnabled?: boolean;
|
|
93
|
+
}): {
|
|
94
|
+
ingestUsd: number;
|
|
95
|
+
summaryUsd: number;
|
|
96
|
+
questionsUsd: number;
|
|
97
|
+
totalUsd: number;
|
|
98
|
+
};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEAM-10M dataset loader (T3.1 scaffold).
|
|
3
|
+
*
|
|
4
|
+
* Source: HuggingFace `Mohammadta/BEAM-10M` (200 questions / 10 conversations).
|
|
5
|
+
* The 10M tier averages ~1.4M tokens of conversation context per system —
|
|
6
|
+
* the highest-difficulty BEAM tier and the SOTA target for this sprint.
|
|
7
|
+
*
|
|
8
|
+
* This loader is a *stub*: it returns the typed shape for tests and the
|
|
9
|
+
* smoke design without invoking the HuggingFace API. Real loading lives
|
|
10
|
+
* in `atomicmemory-benchmarks/atomicbench/src/eval/` once the loader is
|
|
11
|
+
* promoted out of the worktree.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the on-disk normalized JSON cache path. Set
|
|
15
|
+
* `BEAM_10M_NORMALIZED_PATH` to override (used by tests + the in-tree
|
|
16
|
+
* `atomicmemory-benchmarks/data/beam-10m/preprocess.py` output).
|
|
17
|
+
*/
|
|
18
|
+
function resolveCachePath() {
|
|
19
|
+
const env = process.env.BEAM_10M_NORMALIZED_PATH;
|
|
20
|
+
if (env)
|
|
21
|
+
return env;
|
|
22
|
+
// Default: sibling repo path. The harness runs from the benchmarks repo
|
|
23
|
+
// so this resolves correctly when invoked through atomicbench.
|
|
24
|
+
const candidate = '/Users/moralespanitz/me/supernet/atomicmemory-benchmarks/data/beam-10m/beam-10m-normalized.json';
|
|
25
|
+
return candidate;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Load the BEAM-10M dataset. If the normalized JSON cache produced by
|
|
29
|
+
* `atomicmemory-benchmarks/data/beam-10m/preprocess.py` exists at the
|
|
30
|
+
* resolved path, parses it and returns the real dataset. Otherwise falls
|
|
31
|
+
* back to a deterministic stub fixture matching the canonical
|
|
32
|
+
* 10-conversation × 20-question shape, so tests and cost-estimator code
|
|
33
|
+
* keep working without the ~344 MB parquet shards on disk.
|
|
34
|
+
*/
|
|
35
|
+
export async function loadBeam10MDataset(opts = {}) {
|
|
36
|
+
const allConversations = await loadConversationsOrStub();
|
|
37
|
+
const filtered = opts.conversationIds && opts.conversationIds.length > 0
|
|
38
|
+
? allConversations.filter((c) => opts.conversationIds.includes(c.conversationId))
|
|
39
|
+
: allConversations;
|
|
40
|
+
const sliced = opts.sliceSize !== undefined
|
|
41
|
+
? filtered.map((c) => ({ ...c, questions: c.questions.slice(0, opts.sliceSize) }))
|
|
42
|
+
: filtered;
|
|
43
|
+
const totalQuestions = sliced.reduce((sum, c) => sum + c.questions.length, 0);
|
|
44
|
+
return {
|
|
45
|
+
schemaVersion: 'beam-10m.v1',
|
|
46
|
+
tier: '10M',
|
|
47
|
+
conversations: sliced,
|
|
48
|
+
totalQuestions,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function loadConversationsOrStub() {
|
|
52
|
+
const cachePath = resolveCachePath();
|
|
53
|
+
if (!cachePath)
|
|
54
|
+
return buildStubFixture();
|
|
55
|
+
try {
|
|
56
|
+
const fs = await import('node:fs/promises');
|
|
57
|
+
const raw = await fs.readFile(cachePath, 'utf8');
|
|
58
|
+
const parsed = JSON.parse(raw);
|
|
59
|
+
if (!parsed.conversations || !Array.isArray(parsed.conversations)) {
|
|
60
|
+
return buildStubFixture();
|
|
61
|
+
}
|
|
62
|
+
return parsed.conversations;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return buildStubFixture();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Cost projection for a given dataset slice. Used by the smoke plan to
|
|
70
|
+
* estimate per-seed cost before committing the full multirun budget.
|
|
71
|
+
*
|
|
72
|
+
* Cost components per system per question:
|
|
73
|
+
* - ingest (one-time): ~$0.002/fact × ~150 facts/conv = $0.30/conv
|
|
74
|
+
* - summary generation (hierarchical only): ~$0.001/session × 50 sessions = $0.05/conv
|
|
75
|
+
* - search + answer + judge: ~$0.10/question (multi-iter)
|
|
76
|
+
*
|
|
77
|
+
* Per-conv: ~$2 ingest + $2 questions = ~$4/conv. 10 convs = ~$40/seed.
|
|
78
|
+
* The smoke (conv-1 × 20 q) is ~$4. n=3 multirun on full set = ~$120.
|
|
79
|
+
*/
|
|
80
|
+
export function estimateBeamCost(dataset, opts = {}) {
|
|
81
|
+
const convCount = dataset.conversations.length;
|
|
82
|
+
const factsPerConv = 150; // empirical average from BEAM-100K
|
|
83
|
+
const sessionsPerConv = 50;
|
|
84
|
+
const questionsTotal = dataset.totalQuestions;
|
|
85
|
+
const ingestUsd = convCount * factsPerConv * 0.002;
|
|
86
|
+
const summaryUsd = opts.hierarchicalEnabled
|
|
87
|
+
? convCount * sessionsPerConv * 0.001 + convCount * 0.005
|
|
88
|
+
: 0;
|
|
89
|
+
const questionsUsd = questionsTotal * 0.10;
|
|
90
|
+
const totalUsd = ingestUsd + summaryUsd + questionsUsd;
|
|
91
|
+
return { ingestUsd, summaryUsd, questionsUsd, totalUsd };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stub fixture: 10 conversations × 1 session × 1 message + 20 placeholder
|
|
95
|
+
* questions per conversation. Real data has ~50 sessions × ~30 messages
|
|
96
|
+
* each per conversation; this stub gives the shape only.
|
|
97
|
+
*/
|
|
98
|
+
function buildStubFixture() {
|
|
99
|
+
const convs = [];
|
|
100
|
+
for (let cid = 1; cid <= 10; cid += 1) {
|
|
101
|
+
const sessions = [
|
|
102
|
+
{
|
|
103
|
+
sessionId: `c${cid}-s0`,
|
|
104
|
+
sessionIndex: 0,
|
|
105
|
+
startedAt: '2026-01-01T00:00:00Z',
|
|
106
|
+
messages: [
|
|
107
|
+
{ role: 'user', content: `placeholder-c${cid}-msg`, timestamp: '2026-01-01T00:00:00Z' },
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
const questions = [];
|
|
112
|
+
const abilities = [
|
|
113
|
+
'ABS', 'CR', 'EO', 'IE', 'IF', 'KU', 'MSR', 'PF', 'SUM', 'TR',
|
|
114
|
+
];
|
|
115
|
+
for (let qi = 1; qi <= 20; qi += 1) {
|
|
116
|
+
const ability = abilities[(qi - 1) % abilities.length];
|
|
117
|
+
questions.push({
|
|
118
|
+
id: `c${cid}-q${qi}-${ability}`,
|
|
119
|
+
ability,
|
|
120
|
+
question: `placeholder-question-${qi}`,
|
|
121
|
+
ideal: `placeholder-answer-${qi}`,
|
|
122
|
+
rubric: [],
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
convs.push({ conversationId: cid, sessions, questions, approxTokens: 1_400_000 });
|
|
126
|
+
}
|
|
127
|
+
return convs;
|
|
128
|
+
}
|