@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,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase-3 managed-blob helpers for the document pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `raw-document-repository.ts` to keep that module under
|
|
5
|
+
* the workspace 400-LOC cap as the managed-blob surface grew. This
|
|
6
|
+
* module owns every read/update that touches the
|
|
7
|
+
* `storage_mode='managed_blob'` slice of `raw_documents`:
|
|
8
|
+
*
|
|
9
|
+
* - Lookups for blob URIs that need cleanup
|
|
10
|
+
* (`listManagedBlobs*`, `listOrphanedManagedBlobs*`).
|
|
11
|
+
* - The post-upload row-promotion helper
|
|
12
|
+
* (`updateRawDocumentBlobStorageWithClient`).
|
|
13
|
+
*
|
|
14
|
+
* Cleanup state-machine markers used to live here as URI-keyed
|
|
15
|
+
* updates; the paired artifact-sync implementation replaced them with the id-keyed paired helpers
|
|
16
|
+
* in `db/raw-doc-artifact-sync.ts`.
|
|
17
|
+
*
|
|
18
|
+
* The base registry CRUD (insert / list / get / soft-delete /
|
|
19
|
+
* source-site lookups) and the indexer hash setter stay in
|
|
20
|
+
* `raw-document-repository.ts` so this module can stay tightly
|
|
21
|
+
* scoped to the managed-blob lifecycle.
|
|
22
|
+
*
|
|
23
|
+
* No row-mapping helpers are needed here — every function returns
|
|
24
|
+
* `(storage_provider, storage_uri)` tuples or executes UPDATEs, so
|
|
25
|
+
* the snake_case → camelCase mapping the registry CRUD needs lives
|
|
26
|
+
* with the registry helpers, not here.
|
|
27
|
+
*/
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Cleanup-target lookups (active blobs for live cascades).
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* `(storage_provider, storage_uri)` tuples for the *active* managed-blob
|
|
33
|
+
* row of a single document. Caller hands the result to
|
|
34
|
+
* `cleanupManagedBlobs()` *after* the DB transaction commits. Active-only
|
|
35
|
+
* (deleted_at IS NULL) — soft-deleted rows are skipped to avoid
|
|
36
|
+
* double-deleting blobs after a prior cascade.
|
|
37
|
+
*/
|
|
38
|
+
export async function listManagedBlobsForDocumentWithClient(client, userId, documentId) {
|
|
39
|
+
const result = await client.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
|
|
40
|
+
FROM raw_documents
|
|
41
|
+
WHERE id = $1
|
|
42
|
+
AND user_id = $2
|
|
43
|
+
AND storage_mode = 'managed_blob'
|
|
44
|
+
AND storage_uri IS NOT NULL
|
|
45
|
+
AND storage_provider IS NOT NULL
|
|
46
|
+
AND deleted_at IS NULL`, [documentId, userId]);
|
|
47
|
+
return result.rows.map(toManagedBlobRef);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Source-scoped sibling of `listManagedBlobsForDocumentWithClient`.
|
|
51
|
+
* Used by `deleteBySource` so source-reset can hand a complete blob
|
|
52
|
+
* list to the post-commit cleanup pass.
|
|
53
|
+
*/
|
|
54
|
+
export async function listManagedBlobsBySourceWithClient(client, userId, sourceSite) {
|
|
55
|
+
const result = await client.query(`SELECT d.id, d.storage_provider, d.storage_uri, d.raw_storage_metadata
|
|
56
|
+
FROM raw_documents d
|
|
57
|
+
JOIN raw_sources s ON s.id = d.raw_source_id
|
|
58
|
+
WHERE d.user_id = $1
|
|
59
|
+
AND s.source_site = $2
|
|
60
|
+
AND d.storage_mode = 'managed_blob'
|
|
61
|
+
AND d.storage_uri IS NOT NULL
|
|
62
|
+
AND d.storage_provider IS NOT NULL
|
|
63
|
+
AND d.deleted_at IS NULL`, [userId, sourceSite]);
|
|
64
|
+
return result.rows.map(toManagedBlobRef);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Active managed-blob URIs for a user (`userId` set) or globally
|
|
68
|
+
* (`userId` undefined). Used by `deleteAll`'s pre-hard-delete cleanup
|
|
69
|
+
* hook so the wipe can flush the blob store before dropping the rows.
|
|
70
|
+
*/
|
|
71
|
+
export async function listManagedBlobsForUser(pool, userId) {
|
|
72
|
+
const where = userId === undefined ? 'WHERE' : 'WHERE user_id = $1 AND';
|
|
73
|
+
const params = userId === undefined ? [] : [userId];
|
|
74
|
+
const result = await pool.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
|
|
75
|
+
FROM raw_documents
|
|
76
|
+
${where}
|
|
77
|
+
storage_mode = 'managed_blob'
|
|
78
|
+
AND storage_uri IS NOT NULL
|
|
79
|
+
AND storage_provider IS NOT NULL
|
|
80
|
+
AND deleted_at IS NULL`, params);
|
|
81
|
+
return result.rows.map(toManagedBlobRef);
|
|
82
|
+
}
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// Retry-target lookups (orphan blobs left by a previously-failed cleanup).
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
/**
|
|
87
|
+
* Retry-safe lookup: managed-blob URIs that need cleanup *for a
|
|
88
|
+
* soft-deleted document* whose prior cleanup pass failed. Consulted by
|
|
89
|
+
* a retry of `DELETE /v1/documents/:id` so it can re-attempt
|
|
90
|
+
* `store.delete()` on the orphan instead of returning
|
|
91
|
+
* `already_deleted=true` while the blob is still present.
|
|
92
|
+
*
|
|
93
|
+
* Filters: `deleted_at IS NOT NULL` (only soft-deleted rows), and
|
|
94
|
+
* `raw_storage_status = 'raw_storage_failed'` (only the rows whose
|
|
95
|
+
* cleanup failed — `blob_deleted` rows are already clean).
|
|
96
|
+
*/
|
|
97
|
+
export async function listOrphanedManagedBlobsForDocument(pool, userId, documentId) {
|
|
98
|
+
const result = await pool.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
|
|
99
|
+
FROM raw_documents
|
|
100
|
+
WHERE id = $1
|
|
101
|
+
AND user_id = $2
|
|
102
|
+
AND storage_mode = 'managed_blob'
|
|
103
|
+
AND storage_uri IS NOT NULL
|
|
104
|
+
AND storage_provider IS NOT NULL
|
|
105
|
+
AND deleted_at IS NOT NULL
|
|
106
|
+
AND raw_storage_status = 'raw_storage_failed'`, [documentId, userId]);
|
|
107
|
+
return result.rows.map(toManagedBlobRef);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Source-scoped sibling of `listOrphanedManagedBlobsForDocument`. Used
|
|
111
|
+
* by the retry path of `POST /v1/memories/reset-source` so a second
|
|
112
|
+
* reset-by-source after a partially-failed cleanup can still find the
|
|
113
|
+
* orphan blobs to retry on.
|
|
114
|
+
*/
|
|
115
|
+
export async function listOrphanedManagedBlobsBySource(pool, userId, sourceSite) {
|
|
116
|
+
const result = await pool.query(`SELECT d.id, d.storage_provider, d.storage_uri, d.raw_storage_metadata
|
|
117
|
+
FROM raw_documents d
|
|
118
|
+
JOIN raw_sources s ON s.id = d.raw_source_id
|
|
119
|
+
WHERE d.user_id = $1
|
|
120
|
+
AND s.source_site = $2
|
|
121
|
+
AND d.storage_mode = 'managed_blob'
|
|
122
|
+
AND d.storage_uri IS NOT NULL
|
|
123
|
+
AND d.storage_provider IS NOT NULL
|
|
124
|
+
AND d.deleted_at IS NOT NULL
|
|
125
|
+
AND d.raw_storage_status = 'raw_storage_failed'`, [userId, sourceSite]);
|
|
126
|
+
return result.rows.map(toManagedBlobRef);
|
|
127
|
+
}
|
|
128
|
+
// the paired artifact-sync implementation superseded the URI-keyed cleanup markers
|
|
129
|
+
// (`markRawStorageDeletedByUri`, `markRawStorageTombstonedByUri`,
|
|
130
|
+
// `markRawStorageFailedByUri`) with the id-keyed paired helpers in
|
|
131
|
+
// `db/raw-doc-artifact-sync.ts`. The id-keyed form is unambiguous
|
|
132
|
+
// when multiple documents share a `storage_uri`.
|
|
133
|
+
// the paired artifact-sync implementation superseded `markCleanupSuccess` with
|
|
134
|
+
// `markCleanupSuccessAndSyncArtifact` in `db/raw-doc-artifact-sync.ts`,
|
|
135
|
+
// which pairs the marker write with the artifact sync in one
|
|
136
|
+
// transaction.
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// the managed-upload upload-pipeline α/β/β2/γ helpers.
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
/**
|
|
141
|
+
* the claim step: short-tx slot claim. Writes `raw_storage_status =
|
|
142
|
+
* 'blob_uploading'` + claim_id + claimed_at + plaintext content_hash +
|
|
143
|
+
* plaintext size_bytes.
|
|
144
|
+
*
|
|
145
|
+
* `clearDurableUri` (rev-fix HIGH 2) selects between the two
|
|
146
|
+
* recovery paths:
|
|
147
|
+
* - `true` (reclaimAndUpload): the row may carry a stale URI /
|
|
148
|
+
* provider / metadata from a prior failed attempt — clear them
|
|
149
|
+
* so a crash before the durable URI-write step cannot leave a finalize-recovery
|
|
150
|
+
* window pointing at the old bytes. `raw_storage_pending_since`
|
|
151
|
+
* is cleared too (the row is leaving the pending state).
|
|
152
|
+
* - `false` (finalize-recovery): preserve `storage_uri`,
|
|
153
|
+
* `storage_provider`, and `raw_storage_metadata`. the finalization step alone
|
|
154
|
+
* promotes the row; β + β2 are skipped because the bytes are
|
|
155
|
+
* already durable on the provider.
|
|
156
|
+
*/
|
|
157
|
+
export async function claimUploadSlotWithClient(client, args) {
|
|
158
|
+
if (args.clearDurableUri) {
|
|
159
|
+
const result = await client.query(`UPDATE raw_documents
|
|
160
|
+
SET raw_storage_status = 'blob_uploading',
|
|
161
|
+
raw_storage_claim_id = $1,
|
|
162
|
+
raw_storage_claimed_at = NOW(),
|
|
163
|
+
content_hash = $2,
|
|
164
|
+
size_bytes = $3,
|
|
165
|
+
storage_uri = NULL,
|
|
166
|
+
storage_provider = NULL,
|
|
167
|
+
raw_storage_metadata = '{}'::jsonb,
|
|
168
|
+
raw_storage_pending_since = NULL,
|
|
169
|
+
updated_at = NOW()
|
|
170
|
+
WHERE id = $4 AND user_id = $5 AND deleted_at IS NULL`, [args.claimId, args.contentHash, args.sizeBytes, args.documentId, args.userId]);
|
|
171
|
+
return result.rowCount ?? 0;
|
|
172
|
+
}
|
|
173
|
+
const result = await client.query(`UPDATE raw_documents
|
|
174
|
+
SET raw_storage_status = 'blob_uploading',
|
|
175
|
+
raw_storage_claim_id = $1,
|
|
176
|
+
raw_storage_claimed_at = NOW(),
|
|
177
|
+
content_hash = $2,
|
|
178
|
+
size_bytes = $3,
|
|
179
|
+
updated_at = NOW()
|
|
180
|
+
WHERE id = $4 AND user_id = $5 AND deleted_at IS NULL`, [args.claimId, args.contentHash, args.sizeBytes, args.documentId, args.userId]);
|
|
181
|
+
return result.rowCount ?? 0;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* the durable URI-write step: short-tx durable URI record. Writes storage_mode,
|
|
185
|
+
* storage_uri, storage_provider, raw_storage_metadata. Status STAYS
|
|
186
|
+
* `blob_uploading` — the finalization step flips it. Guarded by claim_id so a
|
|
187
|
+
* stale claim's β2 cannot clobber a row another worker has since
|
|
188
|
+
* reclaimed. Returns rowCount; caller compensates with a delete on 0.
|
|
189
|
+
*/
|
|
190
|
+
export async function recordUploadResultWithClient(client, args) {
|
|
191
|
+
const result = await client.query(`UPDATE raw_documents
|
|
192
|
+
SET storage_mode = 'managed_blob',
|
|
193
|
+
storage_uri = $1,
|
|
194
|
+
storage_provider = $2,
|
|
195
|
+
raw_storage_metadata = $3::jsonb,
|
|
196
|
+
updated_at = NOW()
|
|
197
|
+
WHERE id = $4 AND user_id = $5
|
|
198
|
+
AND raw_storage_status = 'blob_uploading'
|
|
199
|
+
AND raw_storage_claim_id = $6
|
|
200
|
+
AND deleted_at IS NULL`, [
|
|
201
|
+
args.storageUri,
|
|
202
|
+
args.storageProvider,
|
|
203
|
+
JSON.stringify(args.rawStorageMetadata),
|
|
204
|
+
args.documentId,
|
|
205
|
+
args.userId,
|
|
206
|
+
args.claimId,
|
|
207
|
+
]);
|
|
208
|
+
return result.rowCount ?? 0;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* the finalization step: compare-and-set status flip. Writes the final
|
|
212
|
+
* raw_storage_status, sets pending_since when entering blob_pending,
|
|
213
|
+
* clears the claim, and layer-scopes the last_error clear (drops
|
|
214
|
+
* raw_storage envelopes only). Guarded on claim_id + storage_uri NOT
|
|
215
|
+
* NULL. Returns rowCount.
|
|
216
|
+
*/
|
|
217
|
+
export async function finalizeUploadStatusWithClient(client, args) {
|
|
218
|
+
const result = await client.query(`UPDATE raw_documents
|
|
219
|
+
SET raw_storage_status = $1,
|
|
220
|
+
raw_storage_claim_id = NULL,
|
|
221
|
+
raw_storage_claimed_at = NULL,
|
|
222
|
+
raw_storage_pending_since = CASE
|
|
223
|
+
WHEN $1 = 'blob_pending' THEN NOW()
|
|
224
|
+
ELSE NULL
|
|
225
|
+
END,
|
|
226
|
+
last_error = CASE
|
|
227
|
+
WHEN last_error IS NOT NULL AND last_error->>'layer' = 'raw_storage'
|
|
228
|
+
THEN NULL
|
|
229
|
+
ELSE last_error
|
|
230
|
+
END,
|
|
231
|
+
updated_at = NOW()
|
|
232
|
+
WHERE id = $2 AND user_id = $3
|
|
233
|
+
AND raw_storage_status = 'blob_uploading'
|
|
234
|
+
AND raw_storage_claim_id = $4
|
|
235
|
+
AND storage_uri IS NOT NULL
|
|
236
|
+
AND deleted_at IS NULL`, [args.finalStatus, args.documentId, args.userId, args.claimId]);
|
|
237
|
+
return result.rowCount ?? 0;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* the provider-write step failure-path: clear an active claim and flip the row to
|
|
241
|
+
* raw_storage_failed with a sanitized last_error envelope. Guarded
|
|
242
|
+
* by claim_id so a stale claim's failure marker cannot overwrite a
|
|
243
|
+
* subsequent successful retry. Returns rowCount.
|
|
244
|
+
*/
|
|
245
|
+
export async function failClaimedUploadWithClient(client, args) {
|
|
246
|
+
const result = await client.query(`UPDATE raw_documents
|
|
247
|
+
SET raw_storage_status = 'raw_storage_failed',
|
|
248
|
+
raw_storage_claim_id = NULL,
|
|
249
|
+
raw_storage_claimed_at = NULL,
|
|
250
|
+
last_error = $1::jsonb,
|
|
251
|
+
updated_at = NOW()
|
|
252
|
+
WHERE id = $2 AND user_id = $3 AND raw_storage_claim_id = $4`, [JSON.stringify(args.lastError), args.documentId, args.userId, args.claimId]);
|
|
253
|
+
return result.rowCount ?? 0;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Cleanup-failure marker. Called from a soft-delete cascade after the
|
|
257
|
+
* DB transaction has committed when the post-commit blob delete
|
|
258
|
+
* raised: flips `raw_storage_status` to `raw_storage_failed` on the
|
|
259
|
+
* row backing `storageUri`. The row is *already* soft-deleted
|
|
260
|
+
* (deleted_at set), so the explicit `WHERE deleted_at IS NOT NULL`
|
|
261
|
+
* guards against accidentally clobbering an active row.
|
|
262
|
+
*
|
|
263
|
+
* Intentionally scoped by `storage_uri` (and user) rather than `id` so
|
|
264
|
+
* an orphaned blob can't be associated with the wrong tombstoned doc
|
|
265
|
+
* in case of duplicate URIs (defensive — adapter URIs are unique).
|
|
266
|
+
*/
|
|
267
|
+
// the paired artifact-sync implementation superseded `markRawStorageFailedByUri` with the id-keyed
|
|
268
|
+
// paired helper `markCleanupFailedAndSyncArtifact` in
|
|
269
|
+
// `db/raw-doc-artifact-sync.ts`; the URI-keyed form is gone.
|
|
270
|
+
// the managed-upload superseded the legacy single-shot
|
|
271
|
+
// `updateRawDocumentBlobStorageWithClient` helper. The upload service
|
|
272
|
+
// now drives the row's promotion through the α/β/β2/γ helpers above:
|
|
273
|
+
// `claimUploadSlotWithClient` (the claim step) writes plaintext hash + size +
|
|
274
|
+
// claim_id with status='blob_uploading';
|
|
275
|
+
// `recordUploadResultWithClient` (the durable URI-write step) records URI/provider/
|
|
276
|
+
// metadata while status stays 'blob_uploading';
|
|
277
|
+
// `finalizeUploadStatusWithClient` (the finalization step) flips to the final
|
|
278
|
+
// terminal status and clears the claim. The legacy helper would have
|
|
279
|
+
// fought the new split — removed cleanly rather than left as a
|
|
280
|
+
// dead-code attractor.
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
// Internal mappers
|
|
283
|
+
// ---------------------------------------------------------------------------
|
|
284
|
+
function toManagedBlobRef(row) {
|
|
285
|
+
// `raw_storage_metadata` is a `jsonb` column; pg returns it as
|
|
286
|
+
// a parsed object (or `null` on a row that never set it). The
|
|
287
|
+
// cleanup loop passes this straight through to
|
|
288
|
+
// `RawContentStore.delete` as opaque hints — the adapter is
|
|
289
|
+
// responsible for narrowing/validating its own provider sibling.
|
|
290
|
+
const metadata = row.raw_storage_metadata;
|
|
291
|
+
const rawStorageMetadata = metadata && typeof metadata === 'object' && !Array.isArray(metadata)
|
|
292
|
+
? metadata
|
|
293
|
+
: {};
|
|
294
|
+
return {
|
|
295
|
+
rawDocumentId: row.id,
|
|
296
|
+
storageProvider: row.storage_provider,
|
|
297
|
+
storageUri: row.storage_uri,
|
|
298
|
+
rawStorageMetadata,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres queries for the document pipeline (Phase 1 — pointer-only).
|
|
3
|
+
*
|
|
4
|
+
* Function-style module mirroring `repository-write.ts`. The split
|
|
5
|
+
* `*WithClient` variants exist so `deleteBySource` can include
|
|
6
|
+
* document soft-deletion inside its existing transaction.
|
|
7
|
+
*
|
|
8
|
+
* Phase 1 contract: callers only ever pass `storageMode = 'pointer_only'`.
|
|
9
|
+
* The CHECK constraint on `raw_documents.storage_mode` accepts
|
|
10
|
+
* `managed_blob` and `inline_small_text` as well, but the service layer
|
|
11
|
+
* rejects them until those phases land. No raw content is ever written
|
|
12
|
+
* by this module — `storage_uri` and `storage_provider` are NEVER set
|
|
13
|
+
* in Phase 1.
|
|
14
|
+
*/
|
|
15
|
+
import pg from 'pg';
|
|
16
|
+
import type { ListRawDocumentsInput, RawDocumentRow, RawSourceRow, RegisterRawDocumentInput, UpsertRawSourceInput } from './raw-document-types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Full column set on `raw_documents`. Exported so the Phase D list /
|
|
19
|
+
* recovery / passport-feed repositories (which moved to focused
|
|
20
|
+
* modules to keep this file under the 400 LOC rule) can build their
|
|
21
|
+
* SELECT lists from the same canonical source.
|
|
22
|
+
*/
|
|
23
|
+
export declare const RAW_DOCUMENT_COLUMNS = "id, user_id, raw_source_id, external_id, external_uri, display_name, mime_type, size_bytes, content_hash, provider_version, source_modified_at, storage_mode, storage_uri, storage_provider, registration_status, raw_storage_status, raw_storage_metadata, metadata, created_at, updated_at, deleted_at, indexed_content_hash, indexed_at, extraction_status, semantic_index_status, last_error, raw_storage_claim_id, raw_storage_claimed_at, raw_storage_last_checked_at, raw_storage_next_check_at, raw_storage_reconcile_attempts, raw_storage_pending_since, storage_artifact_id";
|
|
24
|
+
/**
|
|
25
|
+
* Idempotently insert (or update) a `raw_sources` row keyed on
|
|
26
|
+
* `(user_id, source_site, provider, COALESCE(account_id, ''))`. Returns
|
|
27
|
+
* the persisted row.
|
|
28
|
+
*
|
|
29
|
+
* On conflict the storage_mode + retention/consent policies are
|
|
30
|
+
* **overwritten** with the input values — those describe the caller's
|
|
31
|
+
* current intent, and silently keeping a stale policy on the existing
|
|
32
|
+
* row would mask configuration drift.
|
|
33
|
+
*/
|
|
34
|
+
export declare function upsertRawSource(pool: pg.Pool, input: UpsertRawSourceInput): Promise<RawSourceRow>;
|
|
35
|
+
/**
|
|
36
|
+
* Idempotently register a `raw_documents` row. Returns
|
|
37
|
+
* `{ document, created: true }` when a fresh row was inserted, or
|
|
38
|
+
* `{ document, created: false }` when an active row already existed
|
|
39
|
+
* (matched on `idx_raw_documents_active_unique`).
|
|
40
|
+
*
|
|
41
|
+
* Implemented as a single atomic `INSERT ... ON CONFLICT DO NOTHING
|
|
42
|
+
* RETURNING ...` followed by a fallback SELECT when no row was
|
|
43
|
+
* inserted. Two concurrent calls for the same namespace see exactly
|
|
44
|
+
* one INSERT win and one fallback SELECT — neither caller observes
|
|
45
|
+
* the unique-violation error that the previous find-then-insert
|
|
46
|
+
* pattern could surface.
|
|
47
|
+
*
|
|
48
|
+
* Soft-deleted rows are excluded by the partial unique index, so a
|
|
49
|
+
* re-registration after `softDeleteRawDocument` always inserts a new id.
|
|
50
|
+
*/
|
|
51
|
+
export declare function registerRawDocument(pool: pg.Pool, input: RegisterRawDocumentInput): Promise<{
|
|
52
|
+
document: RawDocumentRow;
|
|
53
|
+
created: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Fetch one active document by id, scoped to a user. Returns null when
|
|
57
|
+
* the row is missing, deleted, or owned by a different user.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getRawDocumentById(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<RawDocumentRow | null>;
|
|
60
|
+
/**
|
|
61
|
+
* List active documents for a user, optionally filtered by source_site.
|
|
62
|
+
* Limit is clamped to [1, 100]; offset is non-negative.
|
|
63
|
+
*/
|
|
64
|
+
export declare function listRawDocuments(pool: pg.Pool, input: ListRawDocumentsInput): Promise<RawDocumentRow[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Soft-delete one document by id, scoped to a user. Returns true when
|
|
67
|
+
* a row transitioned from active to deleted; false when the row was
|
|
68
|
+
* missing, already deleted, or owned by a different user.
|
|
69
|
+
*/
|
|
70
|
+
export declare function softDeleteRawDocument(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Fetch one active document together with its parent source's
|
|
73
|
+
* `source_site`. The Phase 2 indexer uses `source_site` to populate the
|
|
74
|
+
* `memories.source_site` column on derived memories without needing a
|
|
75
|
+
* second round-trip.
|
|
76
|
+
*/
|
|
77
|
+
export declare function getDocumentWithSourceSite(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<{
|
|
78
|
+
document: RawDocumentRow;
|
|
79
|
+
sourceSite: string;
|
|
80
|
+
} | null>;
|
|
81
|
+
/**
|
|
82
|
+
* Update the indexed-text fingerprint on an active document. Called by
|
|
83
|
+
* the Phase 2 indexer on a successful re-chunk pass so subsequent index
|
|
84
|
+
* calls can short-circuit on byte-identical input.
|
|
85
|
+
*
|
|
86
|
+
* Writes only `indexed_content_hash` + `indexed_at` (and `updated_at`).
|
|
87
|
+
* `content_hash` is reserved for the upstream/provider raw-content
|
|
88
|
+
* fingerprint and must not be touched by the indexer.
|
|
89
|
+
*/
|
|
90
|
+
export declare function setRawDocumentIndexedHashWithClient(client: pg.PoolClient | pg.Pool, userId: string, id: string, indexedContentHash: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Soft-delete every active document whose source_site matches.
|
|
93
|
+
* Joins through `raw_sources` so callers don't need to know
|
|
94
|
+
* `raw_source_id`. Used by `deleteBySource` to keep document deletion
|
|
95
|
+
* inside the same transactional reset.
|
|
96
|
+
*/
|
|
97
|
+
export declare function deleteDocumentsBySourceWithClient(client: pg.PoolClient, userId: string, sourceSite: string): Promise<number>;
|
|
98
|
+
/**
|
|
99
|
+
* Map a flat Postgres row into the typed `RawDocumentRow` shape.
|
|
100
|
+
* Exported so the Phase D list / recovery / passport-feed
|
|
101
|
+
* repositories can reuse it without re-implementing the column-by-
|
|
102
|
+
* column projection.
|
|
103
|
+
*/
|
|
104
|
+
export declare function rowToRawDocument(row: Record<string, unknown>): RawDocumentRow;
|