@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,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Document-route response schemas.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `schemas/responses.ts` (which was at 435 non-comment
|
|
5
|
+
* LOC after Slice 3, over the workspace's 400 rule). The shapes are
|
|
6
|
+
* unchanged — this is a pure relocation. `responses.ts` re-exports
|
|
7
|
+
* each symbol so existing imports through `import * as R from
|
|
8
|
+
* './responses'` keep working.
|
|
9
|
+
*
|
|
10
|
+
* Field naming follows the wire contract (snake_case). Per-layer
|
|
11
|
+
* per-layer status enums + `last_error` envelope come from the
|
|
12
|
+
* shared `document-status-envelope` module so the same definitions
|
|
13
|
+
* back both `RawDocumentResponseSchema` (full row) and the
|
|
14
|
+
* passport-feed grouped-row schema.
|
|
15
|
+
*/
|
|
16
|
+
import { z } from './zod-setup.js';
|
|
17
|
+
import { ExtractionStatusEnumSchema, LastErrorEnvelopeSchema, RawStorageStatusEnumSchema, SemanticIndexStatusEnumSchema, } from './document-status-envelope.js';
|
|
18
|
+
/**
|
|
19
|
+
* Wire shape for `raw_storage_metadata`. Strict allowlist:
|
|
20
|
+
* - `codec`: `{ name, version }` only. AES-GCM internals
|
|
21
|
+
* (`nonce`/`tag`/`key_id`/`encoded_*`) NEVER reach the wire.
|
|
22
|
+
* - `filecoin`: public projection
|
|
23
|
+
* `{ ipfs_cid?, piece_cid?, copy_count, provider_ids,
|
|
24
|
+
* copy_statuses }` (Phase 4 renamed the legacy ambiguous
|
|
25
|
+
* `cid` slot to `ipfs_cid`). The structured internal
|
|
26
|
+
* `copies: [{provider_id, status}]` blob is flattened by
|
|
27
|
+
* `projectFilecoinPublicMetadata` at the formatter; legacy
|
|
28
|
+
* onramp fields (`onramp`, `gateway_url`, `deal_ids`,
|
|
29
|
+
* `onramp_status`, `deal_status`, `retrieval_verified_at`,
|
|
30
|
+
* `last_verified_at`) and the legacy `cid` slot are NOT
|
|
31
|
+
* emitted — the strict schema rejects them at the wire.
|
|
32
|
+
* - `upload_result` (internal upload sidecar) is NOT declared,
|
|
33
|
+
* so any leak fails the response-shape validator.
|
|
34
|
+
*
|
|
35
|
+
* The formatter (`formatPublicRawStorageMetadata`) is the single
|
|
36
|
+
* source of redaction; this schema is the deny-by-default lock at
|
|
37
|
+
* the route boundary. Every nested object is `.strict()` so a
|
|
38
|
+
* formatter regression that lets ANY unknown key through fails the
|
|
39
|
+
* `validateResponse` middleware instead of silently shipping.
|
|
40
|
+
*/
|
|
41
|
+
export const PublicRawStorageMetadataSchema = z.object({
|
|
42
|
+
codec: z.object({
|
|
43
|
+
name: z.enum(['none', 'aes_gcm']),
|
|
44
|
+
version: z.number(),
|
|
45
|
+
}).strict().optional(),
|
|
46
|
+
filecoin: z.object({
|
|
47
|
+
ipfs_cid: z.string().optional(),
|
|
48
|
+
piece_cid: z.string().optional(),
|
|
49
|
+
copy_count: z.number().int().nonnegative().optional(),
|
|
50
|
+
provider_ids: z.array(z.string()).optional(),
|
|
51
|
+
copy_statuses: z.array(z.string()).optional(),
|
|
52
|
+
}).strict().optional(),
|
|
53
|
+
}).strict().openapi({
|
|
54
|
+
description: 'Public-facing raw_storage_metadata. STRICTLY allowlisted: codec ' +
|
|
55
|
+
'emits only name+version (AES-GCM internals never reach the wire); ' +
|
|
56
|
+
'filecoin emits public fields ' +
|
|
57
|
+
'(ipfs_cid, piece_cid, copy_count, provider_ids, copy_statuses) — ' +
|
|
58
|
+
'`ipfs_cid` is an optional CIDv1 IPFS / CAR-root identity hint ' +
|
|
59
|
+
'populated by drivers that derive one alongside the PieceCID; the ' +
|
|
60
|
+
'canonical storage URI stays `filecoin://piece/<piece_cid>` ' +
|
|
61
|
+
'regardless. The internal structured copies[{provider_id,status}] ' +
|
|
62
|
+
'shape is flattened at the formatter; upload_result and other ' +
|
|
63
|
+
'internal sidecars are NEVER emitted. The schema is deny-by-default ' +
|
|
64
|
+
'(`.strict()`) at every level — a formatter regression that lets ' +
|
|
65
|
+
'unknown keys through fails response-shape validation.',
|
|
66
|
+
});
|
|
67
|
+
/** Wire enum for per-row delete semantics. */
|
|
68
|
+
export const DeleteSemanticsEnumSchema = z.enum(['delete', 'unpin', 'tombstone']).nullable()
|
|
69
|
+
.openapi({
|
|
70
|
+
description: "What AtomicMemory's DELETE call does at the provider boundary " +
|
|
71
|
+
"for this row's storage_provider. `'delete'` = adapter issues the " +
|
|
72
|
+
"provider's removal operation; `'unpin'` = removes AtomicMemory's " +
|
|
73
|
+
"pin but the provider's other peers may continue to serve; " +
|
|
74
|
+
"`'tombstone'` = AtomicMemory stops managing the bytes but the " +
|
|
75
|
+
"decentralized network may still serve. `null` for pointer-only " +
|
|
76
|
+
"rows or providers not registered for cleanup.",
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Wire-format shape of a document record. Mirrors `RawDocumentRow`
|
|
80
|
+
* with snake_case keys. `storage_uri` and `storage_provider` are
|
|
81
|
+
* always null until managed-blob storage is configured.
|
|
82
|
+
*/
|
|
83
|
+
export const RawDocumentResponseSchema = z.object({
|
|
84
|
+
id: z.string(),
|
|
85
|
+
user_id: z.string(),
|
|
86
|
+
raw_source_id: z.string(),
|
|
87
|
+
external_id: z.string(),
|
|
88
|
+
external_uri: z.string().nullable(),
|
|
89
|
+
display_name: z.string().nullable(),
|
|
90
|
+
mime_type: z.string().nullable(),
|
|
91
|
+
size_bytes: z.number().nullable(),
|
|
92
|
+
content_hash: z.string().nullable(),
|
|
93
|
+
provider_version: z.string().nullable(),
|
|
94
|
+
source_modified_at: z.string().nullable(),
|
|
95
|
+
storage_mode: z.enum(['pointer_only', 'managed_blob', 'inline_small_text']),
|
|
96
|
+
storage_uri: z.string().nullable(),
|
|
97
|
+
storage_provider: z.string().nullable(),
|
|
98
|
+
registration_status: z.enum(['registered', 'registration_failed']),
|
|
99
|
+
raw_storage_status: RawStorageStatusEnumSchema,
|
|
100
|
+
// Public allowlist: `PublicRawStorageMetadata` projects
|
|
101
|
+
// through `formatPublicRawStorageMetadata` so AES-GCM internals,
|
|
102
|
+
// `upload_result`, and any unknown filecoin fields can never reach
|
|
103
|
+
// the wire. Internal structured `copies: [{ provider_id, status }]`
|
|
104
|
+
// flattens to `copy_count` / `provider_ids` / `copy_statuses` via
|
|
105
|
+
// the shared `projectFilecoinPublicMetadata` helper.
|
|
106
|
+
raw_storage_metadata: PublicRawStorageMetadataSchema,
|
|
107
|
+
// Per-row delete-semantics capability. NULL
|
|
108
|
+
// for pointer-only rows and providers the deployment doesn't have
|
|
109
|
+
// registered for cleanup.
|
|
110
|
+
delete_semantics: DeleteSemanticsEnumSchema,
|
|
111
|
+
metadata: z.record(z.string(), z.unknown()),
|
|
112
|
+
created_at: z.string(),
|
|
113
|
+
updated_at: z.string(),
|
|
114
|
+
indexed_content_hash: z.string().nullable(),
|
|
115
|
+
indexed_at: z.string().nullable(),
|
|
116
|
+
// Per-layer status envelope. Sub-schemas in
|
|
117
|
+
// `document-status-envelope.ts`. `'running'` is internal in the
|
|
118
|
+
// synchronous indexer: readers under READ COMMITTED do
|
|
119
|
+
// not observe it because the write lives inside the
|
|
120
|
+
// BEGIN..COMMIT transaction.
|
|
121
|
+
extraction_status: ExtractionStatusEnumSchema,
|
|
122
|
+
semantic_index_status: SemanticIndexStatusEnumSchema,
|
|
123
|
+
last_error: LastErrorEnvelopeSchema,
|
|
124
|
+
// Additive link to the paired `storage_artifacts` row. NULL for
|
|
125
|
+
// pointer-only stubs without `external_uri` and older rows.
|
|
126
|
+
storage_artifact_id: z.string().uuid().nullable(),
|
|
127
|
+
}).openapi({ description: 'Document registry record. snake_case wire format.' });
|
|
128
|
+
export const RegisterDocumentResponseSchema = z.object({
|
|
129
|
+
document: RawDocumentResponseSchema,
|
|
130
|
+
created: z.boolean(),
|
|
131
|
+
}).openapi({
|
|
132
|
+
description: 'Document registration result. `created: true` when a new row was inserted; ' +
|
|
133
|
+
'`false` when an active row with the same (user, source, external_id, version) ' +
|
|
134
|
+
'already existed.',
|
|
135
|
+
});
|
|
136
|
+
export const ListDocumentsResponseSchema = z.object({
|
|
137
|
+
documents: z.array(RawDocumentResponseSchema),
|
|
138
|
+
count: z.number(),
|
|
139
|
+
}).openapi({ description: 'Paginated document list.' });
|
|
140
|
+
/**
|
|
141
|
+
* Cursor-paginated user-scoped document list. Distinct from
|
|
142
|
+
* `ListDocumentsResponseSchema` (the legacy `/list` shape) because it
|
|
143
|
+
* carries an opaque cursor instead of `count`, matching the
|
|
144
|
+
* "fetch-next-page" UX the document-detail / recovery surfaces
|
|
145
|
+
* need. `next_cursor: null` means the stream is exhausted.
|
|
146
|
+
*/
|
|
147
|
+
export const DocumentListRootResponseSchema = z.object({
|
|
148
|
+
documents: z.array(RawDocumentResponseSchema),
|
|
149
|
+
next_cursor: z.string().nullable(),
|
|
150
|
+
}).openapi({ description: 'Cursor-paginated document list.' });
|
|
151
|
+
export const DeleteDocumentResponseSchema = z.object({
|
|
152
|
+
success: z.literal(true),
|
|
153
|
+
already_deleted: z.boolean(),
|
|
154
|
+
}).openapi({
|
|
155
|
+
description: 'Document soft-delete acknowledgement. `already_deleted: true` when the row was ' +
|
|
156
|
+
'missing or previously tombstoned (idempotent on repeat calls).',
|
|
157
|
+
});
|
|
158
|
+
export const UploadRawDocumentResponseSchema = z.object({
|
|
159
|
+
document_id: z.string(),
|
|
160
|
+
storage_provider: z.string(),
|
|
161
|
+
storage_uri: z.string(),
|
|
162
|
+
// PLAINTEXT content hash — the bytes the caller passed in, not
|
|
163
|
+
// the encoded bytes the adapter stored.
|
|
164
|
+
content_hash: z.string(),
|
|
165
|
+
size_bytes: z.number(),
|
|
166
|
+
// Filecoin uses `'blob_available'` once gateway retrieval is
|
|
167
|
+
// confirmed, immediate providers use `'blob_stored'`, and pending
|
|
168
|
+
// provider acceptances use `'blob_pending'` for the reconciler to
|
|
169
|
+
// promote. `'blob_archival_failed'` is written by the reconciler,
|
|
170
|
+
// never returned from this endpoint.
|
|
171
|
+
raw_storage_status: z.enum(['blob_stored', 'blob_pending', 'blob_available']),
|
|
172
|
+
storage_mode: z.literal('managed_blob'),
|
|
173
|
+
// Public allowlist (same as `RawDocumentResponseSchema`).
|
|
174
|
+
// Internal `upload_result` sidecar + AES-GCM internals NEVER reach
|
|
175
|
+
// the wire; internal `copies: [{ provider_id, status }]` flattens
|
|
176
|
+
// to public scalar `copy_count` / `provider_ids` / `copy_statuses`.
|
|
177
|
+
raw_storage_metadata: PublicRawStorageMetadataSchema,
|
|
178
|
+
// Per-row delete_semantics — resolved from the just-uploaded row's
|
|
179
|
+
// `storage_provider` via the registry.
|
|
180
|
+
delete_semantics: DeleteSemanticsEnumSchema,
|
|
181
|
+
idempotent_skip: z.boolean(),
|
|
182
|
+
}).openapi({
|
|
183
|
+
description: 'Managed-blob upload result. The document row is now ' +
|
|
184
|
+
"`storage_mode='managed_blob'` with `raw_storage_status` set to " +
|
|
185
|
+
"`'blob_stored'` (immediate providers — local_fs, s3), " +
|
|
186
|
+
"`'blob_pending'` (eventual providers awaiting the " +
|
|
187
|
+
"reconciler), or `'blob_available'` (gateway-confirmed " +
|
|
188
|
+
"retrievable on Filecoin). `content_hash` is the SHA-256 of the " +
|
|
189
|
+
'PLAINTEXT bytes (distinct from `indexed_content_hash` and from ' +
|
|
190
|
+
'the encoded-byte hash the codec writes under ' +
|
|
191
|
+
'`raw_storage_metadata.codec`, which is internal). ' +
|
|
192
|
+
'`raw_storage_metadata` is the public allowlist ' +
|
|
193
|
+
'(codec name+version + Synapse filecoin allowlist with ' +
|
|
194
|
+
'flattened copy_count/provider_ids/copy_statuses — internal ' +
|
|
195
|
+
'sidecars stripped). `delete_semantics` advertises what ' +
|
|
196
|
+
"AtomicMemory's DELETE call will do at the provider boundary for " +
|
|
197
|
+
'this row. `idempotent_skip: true` when the same bytes were ' +
|
|
198
|
+
'already attached to this document.',
|
|
199
|
+
});
|
|
200
|
+
export const IndexDocumentResponseSchema = z.object({
|
|
201
|
+
document_id: z.string(),
|
|
202
|
+
indexed_content_hash: z.string(),
|
|
203
|
+
chunks_created: z.number(),
|
|
204
|
+
memories_created: z.number(),
|
|
205
|
+
idempotent_skip: z.boolean(),
|
|
206
|
+
chunker_version: z.string(),
|
|
207
|
+
parser_version: z.string(),
|
|
208
|
+
}).openapi({
|
|
209
|
+
description: 'Text indexing result. `indexed_content_hash` is the SHA-256 ' +
|
|
210
|
+
'of the indexed text and is stored on the document as ' +
|
|
211
|
+
'`indexed_content_hash` (distinct from the upstream/provider ' +
|
|
212
|
+
'`content_hash`). `idempotent_skip: true` when the input matched the ' +
|
|
213
|
+
'prior indexed text under the current chunker_version (no fresh ' +
|
|
214
|
+
'chunks or memories created); otherwise the prior generation was ' +
|
|
215
|
+
'soft-deleted and the counts reflect the new generation.',
|
|
216
|
+
});
|
|
217
|
+
export const DocumentLimitsResponseSchema = z.object({
|
|
218
|
+
raw_upload_max_bytes: z.number().int().positive(),
|
|
219
|
+
index_max_text_bytes: z.number().int().positive(),
|
|
220
|
+
raw_storage: z.object({
|
|
221
|
+
enabled: z.boolean(),
|
|
222
|
+
mode: z.enum(['pointer_only', 'managed_blob']),
|
|
223
|
+
reason: z.string().optional(),
|
|
224
|
+
// Filecoin lifecycle refactor (Slice 4): when `mode = 'managed_blob'`
|
|
225
|
+
// and an adapter is configured, the active store's
|
|
226
|
+
// `capabilities` surface here. snake_case on the wire; the route
|
|
227
|
+
// formatter is the only camelCase→snake_case mapper. All five
|
|
228
|
+
// capability fields are optional so a `pointer_only` deployment
|
|
229
|
+
// (no store) still validates.
|
|
230
|
+
provider: z.string().optional(),
|
|
231
|
+
addressing: z.enum(['location', 'content']).optional(),
|
|
232
|
+
retrieval_consistency: z.enum(['immediate', 'eventual']).optional(),
|
|
233
|
+
delete_semantics: z.enum(['delete', 'unpin', 'tombstone']).optional(),
|
|
234
|
+
supports_head: z.boolean().optional(),
|
|
235
|
+
supports_get: z.boolean().optional(),
|
|
236
|
+
}),
|
|
237
|
+
}).openapi({
|
|
238
|
+
description: 'Document upload/index limits and raw-storage capability. Public ' +
|
|
239
|
+
'preflight surface — clients read this to size requests and decide ' +
|
|
240
|
+
'whether to attempt a managed-blob upload. When a managed-blob ' +
|
|
241
|
+
'adapter is configured, `raw_storage` additionally advertises the ' +
|
|
242
|
+
"active store's `provider` + capability triple " +
|
|
243
|
+
'(`addressing`, `retrieval_consistency`, `delete_semantics`) so ' +
|
|
244
|
+
'clients can render honest copy for eventual-provider flows. ' +
|
|
245
|
+
'No PII, no per-user state.',
|
|
246
|
+
});
|
|
247
|
+
/**
|
|
248
|
+
* failure-transition - response shape for `POST /v1/documents/:id/extraction-failure`
|
|
249
|
+
* and `POST /v1/documents/:id/index-failure`. Both endpoints return the
|
|
250
|
+
* row in its post-transition state so the caller can read back the
|
|
251
|
+
* `extraction_status` / `semantic_index_status` / `last_error` they
|
|
252
|
+
* just persisted without a round-trip to `GET /:id`. `idempotent` is
|
|
253
|
+
* `true` when the call hit the already-failed-row idempotent retry
|
|
254
|
+
* branch (no state change beyond `last_error.occurred_at`/`message`).
|
|
255
|
+
*/
|
|
256
|
+
export const DocumentFailureMarkerResponseSchema = z.object({
|
|
257
|
+
document: RawDocumentResponseSchema,
|
|
258
|
+
idempotent: z.boolean(),
|
|
259
|
+
}).openapi({
|
|
260
|
+
description: 'Constrained-transition acknowledgement. The persisted row is ' +
|
|
261
|
+
'echoed so callers can read back the durable status they just ' +
|
|
262
|
+
'wrote. `idempotent: true` when the row was already in the ' +
|
|
263
|
+
'failed state and the call only refreshed `last_error`.',
|
|
264
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared Phase B status-envelope sub-schemas.
|
|
3
|
+
*
|
|
4
|
+
* The same enum + last_error tuple appears in
|
|
5
|
+
* `RawDocumentResponseSchema` (full document row) AND in
|
|
6
|
+
* `PassportFeedDocumentGroupedRowSchema` (the passport-feed grouped
|
|
7
|
+
* row's per-layer status snapshot). Inlining the literals in both
|
|
8
|
+
* places caused fallow's clone detector to flag a 31-line duplicate;
|
|
9
|
+
* centralising them here keeps the wire contract in one place.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from './zod-setup.js';
|
|
12
|
+
export declare const RawStorageStatusEnumSchema: z.ZodEnum<{
|
|
13
|
+
blob_deleted: "blob_deleted";
|
|
14
|
+
blob_tombstoned: "blob_tombstoned";
|
|
15
|
+
blob_stored: "blob_stored";
|
|
16
|
+
blob_pending: "blob_pending";
|
|
17
|
+
blob_available: "blob_available";
|
|
18
|
+
pointer_recorded: "pointer_recorded";
|
|
19
|
+
inline_text_stored: "inline_text_stored";
|
|
20
|
+
raw_storage_failed: "raw_storage_failed";
|
|
21
|
+
blob_archival_failed: "blob_archival_failed";
|
|
22
|
+
}>;
|
|
23
|
+
export declare const ExtractionStatusEnumSchema: z.ZodEnum<{
|
|
24
|
+
pending: "pending";
|
|
25
|
+
not_required: "not_required";
|
|
26
|
+
running: "running";
|
|
27
|
+
complete: "complete";
|
|
28
|
+
unsupported: "unsupported";
|
|
29
|
+
failed: "failed";
|
|
30
|
+
}>;
|
|
31
|
+
export declare const SemanticIndexStatusEnumSchema: z.ZodEnum<{
|
|
32
|
+
pending: "pending";
|
|
33
|
+
not_required: "not_required";
|
|
34
|
+
running: "running";
|
|
35
|
+
complete: "complete";
|
|
36
|
+
failed: "failed";
|
|
37
|
+
stale: "stale";
|
|
38
|
+
}>;
|
|
39
|
+
export declare const LastErrorEnvelopeSchema: z.ZodNullable<z.ZodObject<{
|
|
40
|
+
layer: z.ZodEnum<{
|
|
41
|
+
raw_storage: "raw_storage";
|
|
42
|
+
extraction: "extraction";
|
|
43
|
+
semantic_index: "semantic_index";
|
|
44
|
+
}>;
|
|
45
|
+
code: z.ZodString;
|
|
46
|
+
message: z.ZodString;
|
|
47
|
+
occurred_at: z.ZodString;
|
|
48
|
+
}, z.core.$strip>>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared Phase B status-envelope sub-schemas.
|
|
3
|
+
*
|
|
4
|
+
* The same enum + last_error tuple appears in
|
|
5
|
+
* `RawDocumentResponseSchema` (full document row) AND in
|
|
6
|
+
* `PassportFeedDocumentGroupedRowSchema` (the passport-feed grouped
|
|
7
|
+
* row's per-layer status snapshot). Inlining the literals in both
|
|
8
|
+
* places caused fallow's clone detector to flag a 31-line duplicate;
|
|
9
|
+
* centralising them here keeps the wire contract in one place.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from './zod-setup.js';
|
|
12
|
+
// Filecoin lifecycle refactor (Slice 2): the wire enum tracks the DB
|
|
13
|
+
// CHECK constraint + the `RawStorageStatus` TypeScript union — all
|
|
14
|
+
// three must agree. The Zod response validator (`middleware/
|
|
15
|
+
// validate-response.ts`) reads this schema for every document
|
|
16
|
+
// response, so a row in a Phase-1-reserved state (`blob_pending`)
|
|
17
|
+
// must be acceptable on the wire even before its dedicated UI /
|
|
18
|
+
// recovery flows ship. Slice 4 layers the camelCase→snake_case
|
|
19
|
+
// capability map on top of this schema family on the limits route.
|
|
20
|
+
export const RawStorageStatusEnumSchema = z.enum([
|
|
21
|
+
'pointer_recorded',
|
|
22
|
+
'blob_stored',
|
|
23
|
+
'inline_text_stored',
|
|
24
|
+
'raw_storage_failed',
|
|
25
|
+
'blob_deleted',
|
|
26
|
+
'blob_pending',
|
|
27
|
+
'blob_available',
|
|
28
|
+
'blob_archival_failed',
|
|
29
|
+
'blob_tombstoned',
|
|
30
|
+
]);
|
|
31
|
+
export const ExtractionStatusEnumSchema = z.enum([
|
|
32
|
+
'not_required',
|
|
33
|
+
'pending',
|
|
34
|
+
'running',
|
|
35
|
+
'complete',
|
|
36
|
+
'unsupported',
|
|
37
|
+
'failed',
|
|
38
|
+
]);
|
|
39
|
+
export const SemanticIndexStatusEnumSchema = z.enum([
|
|
40
|
+
'not_required',
|
|
41
|
+
'pending',
|
|
42
|
+
'running',
|
|
43
|
+
'complete',
|
|
44
|
+
'failed',
|
|
45
|
+
'stale',
|
|
46
|
+
]);
|
|
47
|
+
export const LastErrorEnvelopeSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
layer: z.enum(['raw_storage', 'extraction', 'semantic_index']),
|
|
50
|
+
code: z.string(),
|
|
51
|
+
message: z.string(),
|
|
52
|
+
occurred_at: z.string(),
|
|
53
|
+
})
|
|
54
|
+
.nullable();
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Zod schemas for /v1/documents/*.
|
|
3
|
+
*
|
|
4
|
+
* Wire format is snake_case (matching /v1/memories/*); each schema
|
|
5
|
+
* `.transform()`s to camelCase for handlers. Covers register
|
|
6
|
+
* (pointer-only at the wire layer), index, raw upload, the
|
|
7
|
+
* constrained-transition bodies, the query schemas in
|
|
8
|
+
* `document-list-schemas.ts`, and the runtime preflight + path-param
|
|
9
|
+
* helpers shared across the routes.
|
|
10
|
+
*
|
|
11
|
+
* Wire-layer mode invariant: `POST /v1/documents` (register) still
|
|
12
|
+
* only accepts `storage_mode='pointer_only'`. The `managed_blob`
|
|
13
|
+
* mode is populated server-side by the post-upload row-promotion in
|
|
14
|
+
* `raw-document-blob-repository.ts:updateRawDocumentBlobStorageWithClient`
|
|
15
|
+
* `inline_small_text` is reserved for a future inline-
|
|
16
|
+
* text path and is rejected with a "not yet supported" message even
|
|
17
|
+
* though the SQL CHECK accepts it.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from './zod-setup.js';
|
|
20
|
+
export declare const RegisterDocumentBodySchema: z.ZodPipe<z.ZodObject<{
|
|
21
|
+
user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
22
|
+
source_site: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
23
|
+
provider: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
24
|
+
external_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
25
|
+
account_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
26
|
+
external_uri: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
27
|
+
display_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
28
|
+
mime_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
29
|
+
size_bytes: z.ZodPipe<z.ZodUnknown, z.ZodTransform<number | undefined, unknown>>;
|
|
30
|
+
content_hash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
31
|
+
provider_version: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
32
|
+
source_modified_at: z.ZodPipe<z.ZodUnknown, z.ZodTransform<Date | undefined, unknown>>;
|
|
33
|
+
storage_mode: z.ZodPipe<z.ZodUnknown, z.ZodTransform<"pointer_only", unknown>>;
|
|
34
|
+
retention_policy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
35
|
+
consent_policy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
36
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
37
|
+
extraction_status: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
pending: "pending";
|
|
39
|
+
not_required: "not_required";
|
|
40
|
+
unsupported: "unsupported";
|
|
41
|
+
}>>;
|
|
42
|
+
semantic_index_status: z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
pending: "pending";
|
|
44
|
+
not_required: "not_required";
|
|
45
|
+
}>>;
|
|
46
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
47
|
+
extractionStatus: "pending" | "not_required" | "unsupported" | undefined;
|
|
48
|
+
semanticIndexStatus: "pending" | "not_required" | undefined;
|
|
49
|
+
storageMode: "pointer_only";
|
|
50
|
+
retentionPolicy: Record<string, unknown>;
|
|
51
|
+
consentPolicy: Record<string, unknown>;
|
|
52
|
+
metadata: Record<string, unknown>;
|
|
53
|
+
externalUri: string | null;
|
|
54
|
+
displayName: string | null;
|
|
55
|
+
mimeType: string | null;
|
|
56
|
+
sizeBytes: number | null;
|
|
57
|
+
contentHash: string | null;
|
|
58
|
+
providerVersion: string | null;
|
|
59
|
+
sourceModifiedAt: Date | null;
|
|
60
|
+
userId: string;
|
|
61
|
+
sourceSite: string;
|
|
62
|
+
provider: string;
|
|
63
|
+
externalId: string;
|
|
64
|
+
accountId: string | null;
|
|
65
|
+
}, {
|
|
66
|
+
user_id: string;
|
|
67
|
+
source_site: string;
|
|
68
|
+
provider: string;
|
|
69
|
+
external_id: string;
|
|
70
|
+
size_bytes: number | undefined;
|
|
71
|
+
source_modified_at: Date | undefined;
|
|
72
|
+
storage_mode: "pointer_only";
|
|
73
|
+
account_id?: string | null | undefined;
|
|
74
|
+
external_uri?: string | null | undefined;
|
|
75
|
+
display_name?: string | null | undefined;
|
|
76
|
+
mime_type?: string | null | undefined;
|
|
77
|
+
content_hash?: string | null | undefined;
|
|
78
|
+
provider_version?: string | null | undefined;
|
|
79
|
+
retention_policy?: Record<string, unknown> | undefined;
|
|
80
|
+
consent_policy?: Record<string, unknown> | undefined;
|
|
81
|
+
metadata?: Record<string, unknown> | undefined;
|
|
82
|
+
extraction_status?: "pending" | "not_required" | "unsupported" | undefined;
|
|
83
|
+
semantic_index_status?: "pending" | "not_required" | undefined;
|
|
84
|
+
}>>;
|
|
85
|
+
export type RegisterDocumentBody = z.infer<typeof RegisterDocumentBodySchema>;
|
|
86
|
+
export declare const DocumentIdParamSchema: z.ZodPipe<z.ZodObject<{
|
|
87
|
+
id: z.ZodString;
|
|
88
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
89
|
+
id: string;
|
|
90
|
+
}, {
|
|
91
|
+
id: string;
|
|
92
|
+
}>>;
|
|
93
|
+
export type DocumentIdParam = z.infer<typeof DocumentIdParamSchema>;
|
|
94
|
+
/**
|
|
95
|
+
* Exported (private-by-convention) so the cursor-list query-schema module
|
|
96
|
+
* (`document-list-schemas.ts`) can reuse the same wire contract for
|
|
97
|
+
* the cursor-paginated routes without re-defining the helper.
|
|
98
|
+
*/
|
|
99
|
+
export declare const RequiredQueryString: z.ZodString;
|
|
100
|
+
export declare const DocumentByIdQuerySchema: z.ZodPipe<z.ZodObject<{
|
|
101
|
+
user_id: z.ZodString;
|
|
102
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
103
|
+
userId: string;
|
|
104
|
+
}, {
|
|
105
|
+
user_id: string;
|
|
106
|
+
}>>;
|
|
107
|
+
export type DocumentByIdQuery = z.infer<typeof DocumentByIdQuerySchema>;
|
|
108
|
+
export declare const ListDocumentsQuerySchema: z.ZodPipe<z.ZodObject<{
|
|
109
|
+
user_id: z.ZodString;
|
|
110
|
+
source_site: z.ZodOptional<z.ZodString>;
|
|
111
|
+
limit: z.ZodOptional<z.ZodString>;
|
|
112
|
+
offset: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
114
|
+
userId: string;
|
|
115
|
+
sourceSite: string | undefined;
|
|
116
|
+
limit: number;
|
|
117
|
+
offset: number;
|
|
118
|
+
}, {
|
|
119
|
+
user_id: string;
|
|
120
|
+
source_site?: string | undefined;
|
|
121
|
+
limit?: string | undefined;
|
|
122
|
+
offset?: string | undefined;
|
|
123
|
+
}>>;
|
|
124
|
+
export type ListDocumentsQuery = z.infer<typeof ListDocumentsQuerySchema>;
|
|
125
|
+
/**
|
|
126
|
+
* Hard ceiling on the indexed-text body. Deterministic (no env knob)
|
|
127
|
+
* so the wire contract stays predictable: clients can size their
|
|
128
|
+
* extracted-text payloads against a known fixed value.
|
|
129
|
+
*
|
|
130
|
+
* 25 MiB accommodates the webapp manual-upload pipeline, which allows
|
|
131
|
+
* 50 MiB input files and feeds the *extracted* text (typically a
|
|
132
|
+
* fraction of the source size — e.g. a 50 MiB PDF extracts to ≈ 5 MiB
|
|
133
|
+
* of text).
|
|
134
|
+
*
|
|
135
|
+
* status-layer durable-failure contract: the indexer's `semanticValidate`
|
|
136
|
+
* (in `services/document-indexer.ts`) is the authoritative gate for
|
|
137
|
+
* whitespace-only and oversized-text inputs. Both checks fire AFTER
|
|
138
|
+
* the document is loaded and the running CAS lands, so the row is
|
|
139
|
+
* durably marked `semantic_index_status='failed'` + `last_error`
|
|
140
|
+
* before the route returns 413/400. The route's body-parser limit
|
|
141
|
+
* (`INDEX_BODY_PARSER_LIMIT` below) is a defense-in-depth bound that
|
|
142
|
+
* lets a body containing exactly `MAX_INDEX_TEXT_BYTES` of text reach
|
|
143
|
+
* the handler with reasonable JSON-wrapper headroom while still
|
|
144
|
+
* rejecting truly multi-GB request bodies.
|
|
145
|
+
*
|
|
146
|
+
* `IndexDocumentBodySchema` deliberately does NOT refine on whitespace
|
|
147
|
+
* or byte length — those are durable-failure checks owned by the
|
|
148
|
+
* indexer. The schema only enforces structural shape (string fields
|
|
149
|
+
* are present and typed correctly) so callers that send a malformed
|
|
150
|
+
* body (no `user_id`, missing `text`, wrong type) still get a clean
|
|
151
|
+
* pre-document-known 400 with no row touched.
|
|
152
|
+
*/
|
|
153
|
+
export declare const MAX_INDEX_TEXT_BYTES: number;
|
|
154
|
+
/**
|
|
155
|
+
* Per-route HTTP body-parser limit for `POST /v1/documents/:id/index`.
|
|
156
|
+
* Adds a 64 KiB headroom on top of `MAX_INDEX_TEXT_BYTES` so a body
|
|
157
|
+
* containing the cap-sized text plus the JSON wrapper
|
|
158
|
+
* (`{"user_id":"<uuid>","text":"…"}`) and modest amounts of escape
|
|
159
|
+
* encoding still fits. Truly huge request bodies (multi-GB scrape
|
|
160
|
+
* dumps, malformed clients, attack payloads) still get rejected by
|
|
161
|
+
* Express's body parser with 413 BEFORE the handler runs.
|
|
162
|
+
*
|
|
163
|
+
* Pathological JSON-escape encodings that double the encoded text
|
|
164
|
+
* size will exceed this cap and surface as 413 from the body-parser
|
|
165
|
+
* — that is the right behavior; the runtime semantic-validation
|
|
166
|
+
* limit is on the parsed UTF-8 string, not the wire-encoded bytes,
|
|
167
|
+
* and a caller can re-encode to fit.
|
|
168
|
+
*/
|
|
169
|
+
export declare const INDEX_BODY_PARSER_LIMIT: number;
|
|
170
|
+
export declare const IndexDocumentBodySchema: z.ZodPipe<z.ZodObject<{
|
|
171
|
+
user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
172
|
+
text: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
173
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
174
|
+
userId: string;
|
|
175
|
+
text: string;
|
|
176
|
+
}, {
|
|
177
|
+
user_id: string;
|
|
178
|
+
text: string;
|
|
179
|
+
}>>;
|
|
180
|
+
export type IndexDocumentBody = z.infer<typeof IndexDocumentBodySchema>;
|
|
181
|
+
/**
|
|
182
|
+
* failure-transition - bounded enum of extraction-layer failure codes accepted on
|
|
183
|
+
* `POST /v1/documents/:id/extraction-failure`. The set deliberately
|
|
184
|
+
* mirrors the audit's "things a parser does when it gives up" list;
|
|
185
|
+
* adding a new code requires updating this enum AND the route's
|
|
186
|
+
* `ExtractionErrorCode` SDK type so the wire stays in lockstep.
|
|
187
|
+
*/
|
|
188
|
+
declare const ExtractionErrorCodeSchema: z.ZodEnum<{
|
|
189
|
+
unknown: "unknown";
|
|
190
|
+
parser_threw: "parser_threw";
|
|
191
|
+
parser_timeout: "parser_timeout";
|
|
192
|
+
parser_oom: "parser_oom";
|
|
193
|
+
unsupported_encoding: "unsupported_encoding";
|
|
194
|
+
corrupt_input: "corrupt_input";
|
|
195
|
+
}>;
|
|
196
|
+
export type ExtractionErrorCode = z.infer<typeof ExtractionErrorCodeSchema>;
|
|
197
|
+
/**
|
|
198
|
+
* failure-transition - request body for the constrained extraction-failure
|
|
199
|
+
* transition. The route service-truncates / sanitises `error_message`
|
|
200
|
+
* before persisting (see `sanitizeLastErrorMessage` +
|
|
201
|
+
* `MAX_LAST_ERROR_MESSAGE_CHARS` in
|
|
202
|
+
* `src/db/raw-document-status-repository.ts`); the schema enforces
|
|
203
|
+
* upper-bound shape only. Service-owned status fields are NOT
|
|
204
|
+
* accepted - clients can declare *that* extraction failed and *what
|
|
205
|
+
* category*, but cannot put a document into arbitrary status
|
|
206
|
+
* combinations.
|
|
207
|
+
*/
|
|
208
|
+
export declare const ExtractionFailureBodySchema: z.ZodPipe<z.ZodObject<{
|
|
209
|
+
user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
210
|
+
error_code: z.ZodEnum<{
|
|
211
|
+
unknown: "unknown";
|
|
212
|
+
parser_threw: "parser_threw";
|
|
213
|
+
parser_timeout: "parser_timeout";
|
|
214
|
+
parser_oom: "parser_oom";
|
|
215
|
+
unsupported_encoding: "unsupported_encoding";
|
|
216
|
+
corrupt_input: "corrupt_input";
|
|
217
|
+
}>;
|
|
218
|
+
error_message: z.ZodString;
|
|
219
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
220
|
+
userId: string;
|
|
221
|
+
errorCode: "unknown" | "parser_threw" | "parser_timeout" | "parser_oom" | "unsupported_encoding" | "corrupt_input";
|
|
222
|
+
errorMessage: string;
|
|
223
|
+
}, {
|
|
224
|
+
user_id: string;
|
|
225
|
+
error_code: "unknown" | "parser_threw" | "parser_timeout" | "parser_oom" | "unsupported_encoding" | "corrupt_input";
|
|
226
|
+
error_message: string;
|
|
227
|
+
}>>;
|
|
228
|
+
export type ExtractionFailureBody = z.infer<typeof ExtractionFailureBodySchema>;
|
|
229
|
+
/**
|
|
230
|
+
* failure-transition - bounded enum of semantic-index-layer failure codes
|
|
231
|
+
* accepted on `POST /v1/documents/:id/index-failure`. The
|
|
232
|
+
* `index_text_too_large` code is special: when paired with a row in
|
|
233
|
+
* `extraction_status='pending'`, the route atomically advances
|
|
234
|
+
* extraction to `'complete'` (text-in-hand implies extraction
|
|
235
|
+
* succeeded) AND marks semantic_index `'failed'` so the durable row
|
|
236
|
+
* reflects the upload pipeline's actual sequence.
|
|
237
|
+
*/
|
|
238
|
+
declare const IndexErrorCodeSchema: z.ZodEnum<{
|
|
239
|
+
unknown: "unknown";
|
|
240
|
+
index_text_too_large: "index_text_too_large";
|
|
241
|
+
extraction_empty: "extraction_empty";
|
|
242
|
+
}>;
|
|
243
|
+
export type IndexErrorCode = z.infer<typeof IndexErrorCodeSchema>;
|
|
244
|
+
/**
|
|
245
|
+
* failure-transition - request body for the constrained index-failure
|
|
246
|
+
* transition. Service ownership rules match
|
|
247
|
+
* `ExtractionFailureBodySchema`: the message is sanitised + truncated
|
|
248
|
+
* server-side; status fields cannot be smuggled in.
|
|
249
|
+
*/
|
|
250
|
+
export declare const IndexFailureBodySchema: z.ZodPipe<z.ZodObject<{
|
|
251
|
+
user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
|
|
252
|
+
error_code: z.ZodEnum<{
|
|
253
|
+
unknown: "unknown";
|
|
254
|
+
index_text_too_large: "index_text_too_large";
|
|
255
|
+
extraction_empty: "extraction_empty";
|
|
256
|
+
}>;
|
|
257
|
+
error_message: z.ZodString;
|
|
258
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
259
|
+
userId: string;
|
|
260
|
+
errorCode: "unknown" | "index_text_too_large" | "extraction_empty";
|
|
261
|
+
errorMessage: string;
|
|
262
|
+
}, {
|
|
263
|
+
user_id: string;
|
|
264
|
+
error_code: "unknown" | "index_text_too_large" | "extraction_empty";
|
|
265
|
+
error_message: string;
|
|
266
|
+
}>>;
|
|
267
|
+
export type IndexFailureBody = z.infer<typeof IndexFailureBodySchema>;
|
|
268
|
+
/**
|
|
269
|
+
* Query schema for the raw-upload route. The body is the file bytes
|
|
270
|
+
* themselves (Content-Type: application/octet-stream); identifying
|
|
271
|
+
* fields ride on the query string so we don't have to multipart-parse.
|
|
272
|
+
*/
|
|
273
|
+
export declare const UploadRawDocumentQuerySchema: z.ZodPipe<z.ZodObject<{
|
|
274
|
+
user_id: z.ZodString;
|
|
275
|
+
content_type: z.ZodOptional<z.ZodString>;
|
|
276
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
277
|
+
userId: string;
|
|
278
|
+
contentType: string | undefined;
|
|
279
|
+
}, {
|
|
280
|
+
user_id: string;
|
|
281
|
+
content_type?: string | undefined;
|
|
282
|
+
}>>;
|
|
283
|
+
export type UploadRawDocumentQuery = z.infer<typeof UploadRawDocumentQuerySchema>;
|
|
284
|
+
/**
|
|
285
|
+
* Exported for the cursor-list query-schema module
|
|
286
|
+
* (`document-list-schemas.ts`) so the cursor-paginated routes share
|
|
287
|
+
* the same parse-and-clamp semantics for `limit`. Returns
|
|
288
|
+
* `defaultVal` for missing / non-numeric input; clamps to
|
|
289
|
+
* `[min, max]` otherwise.
|
|
290
|
+
*/
|
|
291
|
+
export declare function clampInt(raw: string | undefined, defaultVal: number, min: number, max: number): number;
|
|
292
|
+
export {};
|