@legioncodeinc/nectar 0.0.1
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/LICENSE.md +662 -0
- package/README.md +307 -0
- package/dist/api/daemon-api-wiring.d.ts +72 -0
- package/dist/api/daemon-api-wiring.d.ts.map +1 -0
- package/dist/api/daemon-api-wiring.js +150 -0
- package/dist/api/daemon-api-wiring.js.map +1 -0
- package/dist/api/hive-graph-api.d.ts +136 -0
- package/dist/api/hive-graph-api.d.ts.map +1 -0
- package/dist/api/hive-graph-api.js +234 -0
- package/dist/api/hive-graph-api.js.map +1 -0
- package/dist/api/loopback-client.d.ts +27 -0
- package/dist/api/loopback-client.d.ts.map +1 -0
- package/dist/api/loopback-client.js +87 -0
- package/dist/api/loopback-client.js.map +1 -0
- package/dist/api/router.d.ts +172 -0
- package/dist/api/router.d.ts.map +1 -0
- package/dist/api/router.js +212 -0
- package/dist/api/router.js.map +1 -0
- package/dist/api/status-query.d.ts +49 -0
- package/dist/api/status-query.d.ts.map +1 -0
- package/dist/api/status-query.js +103 -0
- package/dist/api/status-query.js.map +1 -0
- package/dist/brood-guard.d.ts +24 -0
- package/dist/brood-guard.d.ts.map +1 -0
- package/dist/brood-guard.js +19 -0
- package/dist/brood-guard.js.map +1 -0
- package/dist/brood-prereqs.d.ts +62 -0
- package/dist/brood-prereqs.d.ts.map +1 -0
- package/dist/brood-prereqs.js +87 -0
- package/dist/brood-prereqs.js.map +1 -0
- package/dist/brooding/bucketing.d.ts +68 -0
- package/dist/brooding/bucketing.d.ts.map +1 -0
- package/dist/brooding/bucketing.js +122 -0
- package/dist/brooding/bucketing.js.map +1 -0
- package/dist/brooding/cli.d.ts +78 -0
- package/dist/brooding/cli.d.ts.map +1 -0
- package/dist/brooding/cli.js +140 -0
- package/dist/brooding/cli.js.map +1 -0
- package/dist/brooding/constants.d.ts +75 -0
- package/dist/brooding/constants.d.ts.map +1 -0
- package/dist/brooding/constants.js +91 -0
- package/dist/brooding/constants.js.map +1 -0
- package/dist/brooding/cost.d.ts +110 -0
- package/dist/brooding/cost.d.ts.map +1 -0
- package/dist/brooding/cost.js +96 -0
- package/dist/brooding/cost.js.map +1 -0
- package/dist/brooding/describe.d.ts +152 -0
- package/dist/brooding/describe.d.ts.map +1 -0
- package/dist/brooding/describe.js +281 -0
- package/dist/brooding/describe.js.map +1 -0
- package/dist/brooding/discovery.d.ts +116 -0
- package/dist/brooding/discovery.d.ts.map +1 -0
- package/dist/brooding/discovery.js +179 -0
- package/dist/brooding/discovery.js.map +1 -0
- package/dist/brooding/index.d.ts +23 -0
- package/dist/brooding/index.d.ts.map +1 -0
- package/dist/brooding/index.js +33 -0
- package/dist/brooding/index.js.map +1 -0
- package/dist/brooding/pipeline-async.d.ts +97 -0
- package/dist/brooding/pipeline-async.d.ts.map +1 -0
- package/dist/brooding/pipeline-async.js +364 -0
- package/dist/brooding/pipeline-async.js.map +1 -0
- package/dist/brooding/pipeline.d.ts +198 -0
- package/dist/brooding/pipeline.d.ts.map +1 -0
- package/dist/brooding/pipeline.js +454 -0
- package/dist/brooding/pipeline.js.map +1 -0
- package/dist/brooding/precheck.d.ts +52 -0
- package/dist/brooding/precheck.d.ts.map +1 -0
- package/dist/brooding/precheck.js +143 -0
- package/dist/brooding/precheck.js.map +1 -0
- package/dist/brooding/resumability.d.ts +57 -0
- package/dist/brooding/resumability.d.ts.map +1 -0
- package/dist/brooding/resumability.js +46 -0
- package/dist/brooding/resumability.js.map +1 -0
- package/dist/cli.d.ts +139 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +912 -0
- package/dist/cli.js.map +1 -0
- package/dist/config-file.d.ts +52 -0
- package/dist/config-file.d.ts.map +1 -0
- package/dist/config-file.js +130 -0
- package/dist/config-file.js.map +1 -0
- package/dist/config.d.ts +49 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +98 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon.d.ts +265 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +664 -0
- package/dist/daemon.js.map +1 -0
- package/dist/doctor-registry.d.ts +134 -0
- package/dist/doctor-registry.d.ts.map +1 -0
- package/dist/doctor-registry.js +173 -0
- package/dist/doctor-registry.js.map +1 -0
- package/dist/embeddings/cohere-portkey.d.ts +67 -0
- package/dist/embeddings/cohere-portkey.d.ts.map +1 -0
- package/dist/embeddings/cohere-portkey.js +171 -0
- package/dist/embeddings/cohere-portkey.js.map +1 -0
- package/dist/embeddings/config.d.ts +74 -0
- package/dist/embeddings/config.d.ts.map +1 -0
- package/dist/embeddings/config.js +131 -0
- package/dist/embeddings/config.js.map +1 -0
- package/dist/embeddings/guard.d.ts +34 -0
- package/dist/embeddings/guard.d.ts.map +1 -0
- package/dist/embeddings/guard.js +67 -0
- package/dist/embeddings/guard.js.map +1 -0
- package/dist/embeddings/hosted-portkey.d.ts +73 -0
- package/dist/embeddings/hosted-portkey.d.ts.map +1 -0
- package/dist/embeddings/hosted-portkey.js +179 -0
- package/dist/embeddings/hosted-portkey.js.map +1 -0
- package/dist/embeddings/http.d.ts +33 -0
- package/dist/embeddings/http.d.ts.map +1 -0
- package/dist/embeddings/http.js +19 -0
- package/dist/embeddings/http.js.map +1 -0
- package/dist/embeddings/index.d.ts +17 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +17 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/local-nomic.d.ts +78 -0
- package/dist/embeddings/local-nomic.d.ts.map +1 -0
- package/dist/embeddings/local-nomic.js +126 -0
- package/dist/embeddings/local-nomic.js.map +1 -0
- package/dist/embeddings/provider.d.ts +79 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +50 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/enricher/config.d.ts +43 -0
- package/dist/enricher/config.d.ts.map +1 -0
- package/dist/enricher/config.js +34 -0
- package/dist/enricher/config.js.map +1 -0
- package/dist/enricher/content-cache.d.ts +29 -0
- package/dist/enricher/content-cache.d.ts.map +1 -0
- package/dist/enricher/content-cache.js +24 -0
- package/dist/enricher/content-cache.js.map +1 -0
- package/dist/enricher/cycle.d.ts +71 -0
- package/dist/enricher/cycle.d.ts.map +1 -0
- package/dist/enricher/cycle.js +319 -0
- package/dist/enricher/cycle.js.map +1 -0
- package/dist/enricher/describe.d.ts +61 -0
- package/dist/enricher/describe.d.ts.map +1 -0
- package/dist/enricher/describe.js +175 -0
- package/dist/enricher/describe.js.map +1 -0
- package/dist/enricher/failure.d.ts +25 -0
- package/dist/enricher/failure.d.ts.map +1 -0
- package/dist/enricher/failure.js +46 -0
- package/dist/enricher/failure.js.map +1 -0
- package/dist/enricher/index.d.ts +22 -0
- package/dist/enricher/index.d.ts.map +1 -0
- package/dist/enricher/index.js +22 -0
- package/dist/enricher/index.js.map +1 -0
- package/dist/enricher/jaccard.d.ts +11 -0
- package/dist/enricher/jaccard.d.ts.map +1 -0
- package/dist/enricher/jaccard.js +29 -0
- package/dist/enricher/jaccard.js.map +1 -0
- package/dist/enricher/loop.d.ts +22 -0
- package/dist/enricher/loop.d.ts.map +1 -0
- package/dist/enricher/loop.js +34 -0
- package/dist/enricher/loop.js.map +1 -0
- package/dist/enricher/meaningful-change.d.ts +28 -0
- package/dist/enricher/meaningful-change.d.ts.map +1 -0
- package/dist/enricher/meaningful-change.js +41 -0
- package/dist/enricher/meaningful-change.js.map +1 -0
- package/dist/enricher/observability.d.ts +22 -0
- package/dist/enricher/observability.d.ts.map +1 -0
- package/dist/enricher/observability.js +55 -0
- package/dist/enricher/observability.js.map +1 -0
- package/dist/enricher/pending-query.d.ts +35 -0
- package/dist/enricher/pending-query.d.ts.map +1 -0
- package/dist/enricher/pending-query.js +54 -0
- package/dist/enricher/pending-query.js.map +1 -0
- package/dist/enricher/sql-update.d.ts +7 -0
- package/dist/enricher/sql-update.d.ts.map +1 -0
- package/dist/enricher/sql-update.js +22 -0
- package/dist/enricher/sql-update.js.map +1 -0
- package/dist/enricher/store-adapter.d.ts +98 -0
- package/dist/enricher/store-adapter.d.ts.map +1 -0
- package/dist/enricher/store-adapter.js +129 -0
- package/dist/enricher/store-adapter.js.map +1 -0
- package/dist/enricher/store.d.ts +58 -0
- package/dist/enricher/store.d.ts.map +1 -0
- package/dist/enricher/store.js +126 -0
- package/dist/enricher/store.js.map +1 -0
- package/dist/enricher/tokenize.d.ts +10 -0
- package/dist/enricher/tokenize.d.ts.map +1 -0
- package/dist/enricher/tokenize.js +28 -0
- package/dist/enricher/tokenize.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +56 -0
- package/dist/errors.js.map +1 -0
- package/dist/health.d.ts +147 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +168 -0
- package/dist/health.js.map +1 -0
- package/dist/hive-graph/deeplake-credentials.d.ts +68 -0
- package/dist/hive-graph/deeplake-credentials.d.ts.map +1 -0
- package/dist/hive-graph/deeplake-credentials.js +135 -0
- package/dist/hive-graph/deeplake-credentials.js.map +1 -0
- package/dist/hive-graph/deeplake-heal.d.ts +63 -0
- package/dist/hive-graph/deeplake-heal.d.ts.map +1 -0
- package/dist/hive-graph/deeplake-heal.js +118 -0
- package/dist/hive-graph/deeplake-heal.js.map +1 -0
- package/dist/hive-graph/deeplake-store.d.ts +199 -0
- package/dist/hive-graph/deeplake-store.d.ts.map +1 -0
- package/dist/hive-graph/deeplake-store.js +541 -0
- package/dist/hive-graph/deeplake-store.js.map +1 -0
- package/dist/hive-graph/deeplake-transport.d.ts +89 -0
- package/dist/hive-graph/deeplake-transport.d.ts.map +1 -0
- package/dist/hive-graph/deeplake-transport.js +145 -0
- package/dist/hive-graph/deeplake-transport.js.map +1 -0
- package/dist/hive-graph/hash.d.ts +3 -0
- package/dist/hive-graph/hash.d.ts.map +1 -0
- package/dist/hive-graph/hash.js +12 -0
- package/dist/hive-graph/hash.js.map +1 -0
- package/dist/hive-graph/memory-store.d.ts +39 -0
- package/dist/hive-graph/memory-store.d.ts.map +1 -0
- package/dist/hive-graph/memory-store.js +125 -0
- package/dist/hive-graph/memory-store.js.map +1 -0
- package/dist/hive-graph/model.d.ts +109 -0
- package/dist/hive-graph/model.d.ts.map +1 -0
- package/dist/hive-graph/model.js +36 -0
- package/dist/hive-graph/model.js.map +1 -0
- package/dist/hive-graph/paths.d.ts +7 -0
- package/dist/hive-graph/paths.d.ts.map +1 -0
- package/dist/hive-graph/paths.js +26 -0
- package/dist/hive-graph/paths.js.map +1 -0
- package/dist/hive-graph/project-scope.d.ts +99 -0
- package/dist/hive-graph/project-scope.d.ts.map +1 -0
- package/dist/hive-graph/project-scope.js +286 -0
- package/dist/hive-graph/project-scope.js.map +1 -0
- package/dist/hive-graph/schema.d.ts +53 -0
- package/dist/hive-graph/schema.d.ts.map +1 -0
- package/dist/hive-graph/schema.js +139 -0
- package/dist/hive-graph/schema.js.map +1 -0
- package/dist/hive-graph/search-types.d.ts +82 -0
- package/dist/hive-graph/search-types.d.ts.map +1 -0
- package/dist/hive-graph/search-types.js +2 -0
- package/dist/hive-graph/search-types.js.map +1 -0
- package/dist/hive-graph/search.d.ts +51 -0
- package/dist/hive-graph/search.d.ts.map +1 -0
- package/dist/hive-graph/search.js +417 -0
- package/dist/hive-graph/search.js.map +1 -0
- package/dist/hive-graph/sql-guards.d.ts +99 -0
- package/dist/hive-graph/sql-guards.d.ts.map +1 -0
- package/dist/hive-graph/sql-guards.js +129 -0
- package/dist/hive-graph/sql-guards.js.map +1 -0
- package/dist/hive-graph/store.d.ts +151 -0
- package/dist/hive-graph/store.d.ts.map +1 -0
- package/dist/hive-graph/store.js +2 -0
- package/dist/hive-graph/store.js.map +1 -0
- package/dist/hive-graph/ulid.d.ts +14 -0
- package/dist/hive-graph/ulid.d.ts.map +1 -0
- package/dist/hive-graph/ulid.js +109 -0
- package/dist/hive-graph/ulid.js.map +1 -0
- package/dist/hivedoctor-registry.d.ts +111 -0
- package/dist/hivedoctor-registry.d.ts.map +1 -0
- package/dist/hivedoctor-registry.js +143 -0
- package/dist/hivedoctor-registry.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/lock.d.ts +66 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +282 -0
- package/dist/lock.js.map +1 -0
- package/dist/poll-loop.d.ts +71 -0
- package/dist/poll-loop.d.ts.map +1 -0
- package/dist/poll-loop.js +130 -0
- package/dist/poll-loop.js.map +1 -0
- package/dist/portkey/config.d.ts +46 -0
- package/dist/portkey/config.d.ts.map +1 -0
- package/dist/portkey/config.js +68 -0
- package/dist/portkey/config.js.map +1 -0
- package/dist/portkey/describe-model.d.ts +53 -0
- package/dist/portkey/describe-model.d.ts.map +1 -0
- package/dist/portkey/describe-model.js +56 -0
- package/dist/portkey/describe-model.js.map +1 -0
- package/dist/portkey/headers.d.ts +31 -0
- package/dist/portkey/headers.d.ts.map +1 -0
- package/dist/portkey/headers.js +37 -0
- package/dist/portkey/headers.js.map +1 -0
- package/dist/portkey/transport.d.ts +89 -0
- package/dist/portkey/transport.d.ts.map +1 -0
- package/dist/portkey/transport.js +167 -0
- package/dist/portkey/transport.js.map +1 -0
- package/dist/projection/format.d.ts +51 -0
- package/dist/projection/format.d.ts.map +1 -0
- package/dist/projection/format.js +81 -0
- package/dist/projection/format.js.map +1 -0
- package/dist/projection/generate.d.ts +31 -0
- package/dist/projection/generate.d.ts.map +1 -0
- package/dist/projection/generate.js +83 -0
- package/dist/projection/generate.js.map +1 -0
- package/dist/projection/inherit.d.ts +27 -0
- package/dist/projection/inherit.d.ts.map +1 -0
- package/dist/projection/inherit.js +128 -0
- package/dist/projection/inherit.js.map +1 -0
- package/dist/projection/load.d.ts +47 -0
- package/dist/projection/load.d.ts.map +1 -0
- package/dist/projection/load.js +258 -0
- package/dist/projection/load.js.map +1 -0
- package/dist/projection/store-adapter.d.ts +42 -0
- package/dist/projection/store-adapter.d.ts.map +1 -0
- package/dist/projection/store-adapter.js +42 -0
- package/dist/projection/store-adapter.js.map +1 -0
- package/dist/projection/write.d.ts +79 -0
- package/dist/projection/write.d.ts.map +1 -0
- package/dist/projection/write.js +122 -0
- package/dist/projection/write.js.map +1 -0
- package/dist/registration/classify.d.ts +33 -0
- package/dist/registration/classify.d.ts.map +1 -0
- package/dist/registration/classify.js +32 -0
- package/dist/registration/classify.js.map +1 -0
- package/dist/registration/copy-detect.d.ts +22 -0
- package/dist/registration/copy-detect.d.ts.map +1 -0
- package/dist/registration/copy-detect.js +12 -0
- package/dist/registration/copy-detect.js.map +1 -0
- package/dist/registration/disk-fs.d.ts +41 -0
- package/dist/registration/disk-fs.d.ts.map +1 -0
- package/dist/registration/disk-fs.js +175 -0
- package/dist/registration/disk-fs.js.map +1 -0
- package/dist/registration/fs-watch.d.ts +114 -0
- package/dist/registration/fs-watch.d.ts.map +1 -0
- package/dist/registration/fs-watch.js +266 -0
- package/dist/registration/fs-watch.js.map +1 -0
- package/dist/registration/ignore.d.ts +77 -0
- package/dist/registration/ignore.d.ts.map +1 -0
- package/dist/registration/ignore.js +249 -0
- package/dist/registration/ignore.js.map +1 -0
- package/dist/registration/ladder.d.ts +211 -0
- package/dist/registration/ladder.d.ts.map +1 -0
- package/dist/registration/ladder.js +378 -0
- package/dist/registration/ladder.js.map +1 -0
- package/dist/registration/paths-safe.d.ts +21 -0
- package/dist/registration/paths-safe.d.ts.map +1 -0
- package/dist/registration/paths-safe.js +88 -0
- package/dist/registration/paths-safe.js.map +1 -0
- package/dist/registration/prune-cli.d.ts +48 -0
- package/dist/registration/prune-cli.d.ts.map +1 -0
- package/dist/registration/prune-cli.js +57 -0
- package/dist/registration/prune-cli.js.map +1 -0
- package/dist/registration/review-cli.d.ts +42 -0
- package/dist/registration/review-cli.d.ts.map +1 -0
- package/dist/registration/review-cli.js +110 -0
- package/dist/registration/review-cli.js.map +1 -0
- package/dist/registration/review-store.d.ts +73 -0
- package/dist/registration/review-store.d.ts.map +1 -0
- package/dist/registration/review-store.js +243 -0
- package/dist/registration/review-store.js.map +1 -0
- package/dist/registration/service.d.ts +196 -0
- package/dist/registration/service.d.ts.map +1 -0
- package/dist/registration/service.js +384 -0
- package/dist/registration/service.js.map +1 -0
- package/dist/registration/store-bridge.d.ts +133 -0
- package/dist/registration/store-bridge.d.ts.map +1 -0
- package/dist/registration/store-bridge.js +159 -0
- package/dist/registration/store-bridge.js.map +1 -0
- package/dist/registration/tlsh.d.ts +125 -0
- package/dist/registration/tlsh.d.ts.map +1 -0
- package/dist/registration/tlsh.js +274 -0
- package/dist/registration/tlsh.js.map +1 -0
- package/dist/server.d.ts +26 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +156 -0
- package/dist/server.js.map +1 -0
- package/dist/service/argv.d.ts +52 -0
- package/dist/service/argv.d.ts.map +1 -0
- package/dist/service/argv.js +127 -0
- package/dist/service/argv.js.map +1 -0
- package/dist/service/command-runner.d.ts +54 -0
- package/dist/service/command-runner.d.ts.map +1 -0
- package/dist/service/command-runner.js +55 -0
- package/dist/service/command-runner.js.map +1 -0
- package/dist/service/index.d.ts +83 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +270 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/platform.d.ts +110 -0
- package/dist/service/platform.d.ts.map +1 -0
- package/dist/service/platform.js +157 -0
- package/dist/service/platform.js.map +1 -0
- package/dist/service/templates.d.ts +88 -0
- package/dist/service/templates.d.ts.map +1 -0
- package/dist/service/templates.js +212 -0
- package/dist/service/templates.js.map +1 -0
- package/dist/source-graph/deeplake-credentials.d.ts +57 -0
- package/dist/source-graph/deeplake-credentials.d.ts.map +1 -0
- package/dist/source-graph/deeplake-credentials.js +109 -0
- package/dist/source-graph/deeplake-credentials.js.map +1 -0
- package/dist/source-graph/deeplake-heal.d.ts +53 -0
- package/dist/source-graph/deeplake-heal.d.ts.map +1 -0
- package/dist/source-graph/deeplake-heal.js +41 -0
- package/dist/source-graph/deeplake-heal.js.map +1 -0
- package/dist/source-graph/deeplake-store.d.ts +151 -0
- package/dist/source-graph/deeplake-store.d.ts.map +1 -0
- package/dist/source-graph/deeplake-store.js +389 -0
- package/dist/source-graph/deeplake-store.js.map +1 -0
- package/dist/source-graph/deeplake-transport.d.ts +74 -0
- package/dist/source-graph/deeplake-transport.d.ts.map +1 -0
- package/dist/source-graph/deeplake-transport.js +107 -0
- package/dist/source-graph/deeplake-transport.js.map +1 -0
- package/dist/source-graph/hash.d.ts +3 -0
- package/dist/source-graph/hash.d.ts.map +1 -0
- package/dist/source-graph/hash.js +12 -0
- package/dist/source-graph/hash.js.map +1 -0
- package/dist/source-graph/memory-store.d.ts +32 -0
- package/dist/source-graph/memory-store.d.ts.map +1 -0
- package/dist/source-graph/memory-store.js +81 -0
- package/dist/source-graph/memory-store.js.map +1 -0
- package/dist/source-graph/model.d.ts +102 -0
- package/dist/source-graph/model.d.ts.map +1 -0
- package/dist/source-graph/model.js +36 -0
- package/dist/source-graph/model.js.map +1 -0
- package/dist/source-graph/paths.d.ts +7 -0
- package/dist/source-graph/paths.d.ts.map +1 -0
- package/dist/source-graph/paths.js +26 -0
- package/dist/source-graph/paths.js.map +1 -0
- package/dist/source-graph/schema.d.ts +44 -0
- package/dist/source-graph/schema.d.ts.map +1 -0
- package/dist/source-graph/schema.js +123 -0
- package/dist/source-graph/schema.js.map +1 -0
- package/dist/source-graph/sql-guards.d.ts +99 -0
- package/dist/source-graph/sql-guards.d.ts.map +1 -0
- package/dist/source-graph/sql-guards.js +129 -0
- package/dist/source-graph/sql-guards.js.map +1 -0
- package/dist/source-graph/store.d.ts +101 -0
- package/dist/source-graph/store.d.ts.map +1 -0
- package/dist/source-graph/store.js +2 -0
- package/dist/source-graph/store.js.map +1 -0
- package/dist/source-graph/ulid.d.ts +9 -0
- package/dist/source-graph/ulid.d.ts.map +1 -0
- package/dist/source-graph/ulid.js +61 -0
- package/dist/source-graph/ulid.js.map +1 -0
- package/dist/telemetry/checkin.d.ts +66 -0
- package/dist/telemetry/checkin.d.ts.map +1 -0
- package/dist/telemetry/checkin.js +142 -0
- package/dist/telemetry/checkin.js.map +1 -0
- package/dist/telemetry/db.d.ts +34 -0
- package/dist/telemetry/db.d.ts.map +1 -0
- package/dist/telemetry/db.js +122 -0
- package/dist/telemetry/db.js.map +1 -0
- package/dist/telemetry/index.d.ts +76 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +98 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/logs.d.ts +83 -0
- package/dist/telemetry/logs.d.ts.map +1 -0
- package/dist/telemetry/logs.js +110 -0
- package/dist/telemetry/logs.js.map +1 -0
- package/dist/telemetry/metrics.d.ts +82 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +148 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry-usage/emit.d.ts +105 -0
- package/dist/telemetry-usage/emit.d.ts.map +1 -0
- package/dist/telemetry-usage/emit.js +267 -0
- package/dist/telemetry-usage/emit.js.map +1 -0
- package/dist/telemetry-usage/posthog-key.d.ts +22 -0
- package/dist/telemetry-usage/posthog-key.d.ts.map +1 -0
- package/dist/telemetry-usage/posthog-key.js +22 -0
- package/dist/telemetry-usage/posthog-key.js.map +1 -0
- package/dist/worker.d.ts +69 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +91 -0
- package/dist/worker.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { buildAddColumnSql, buildCreateTableSql } from "./schema.js";
|
|
2
|
+
import { TransportError } from "./deeplake-transport.js";
|
|
3
|
+
/**
|
|
4
|
+
* Classify a `query`-kind `TransportError` message as a missing-table failure
|
|
5
|
+
* (mirrors honeycomb's `classifyFailure`, `src/daemon/storage/heal.ts:77-98`,
|
|
6
|
+
* missing-table branch only). Auth/permission failures are excluded first so a
|
|
7
|
+
* message that happens to mention a relation is never misread as a schema gap.
|
|
8
|
+
*/
|
|
9
|
+
export function isMissingTableError(err) {
|
|
10
|
+
if (err.kind !== "query")
|
|
11
|
+
return false;
|
|
12
|
+
if (/permission denied|must be owner|not authorized|forbidden|unauthorized/i.test(err.message)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
// A missing-COLUMN failure on the live backend also mentions the relation
|
|
16
|
+
// ('Column does not exist: column "x" of relation "t" does not exist'), so
|
|
17
|
+
// exclude the column form first or the wrong heal branch (CREATE TABLE)
|
|
18
|
+
// fires and the ALTER never happens (found by the PRD-018 close-out QA).
|
|
19
|
+
if (missingColumnName(err) !== null)
|
|
20
|
+
return false;
|
|
21
|
+
return /table does not exist|relation ["']?[A-Za-z_][A-Za-z0-9_.]*["']? does not exist|no such table/i.test(err.message);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extract the missing-column name from a `query`-kind `TransportError`, or null
|
|
25
|
+
* when the message is not a missing-column failure. Auth/permission failures are
|
|
26
|
+
* excluded first (same anti-mask rule as {@link isMissingTableError}) so a
|
|
27
|
+
* message that happens to mention a column is never misread as a schema gap.
|
|
28
|
+
* Recognizes the common phrasings across SQL backends (`column "x" does not
|
|
29
|
+
* exist`, `no such column: x`, `unknown column 'x'`, `undefined column: x`).
|
|
30
|
+
*/
|
|
31
|
+
export function missingColumnName(err) {
|
|
32
|
+
if (err.kind !== "query")
|
|
33
|
+
return null;
|
|
34
|
+
if (/permission denied|must be owner|not authorized|forbidden|unauthorized/i.test(err.message)) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Quote matcher: the transport surfaces the backend's raw JSON error body,
|
|
38
|
+
// so quotes around identifiers arrive JSON-escaped (`\"embed_model\"`).
|
|
39
|
+
// `Q` tolerates optional backslashes before an optional quote character.
|
|
40
|
+
const q = String.raw `\\*["'\u0060]?`;
|
|
41
|
+
const name = "([A-Za-z_][A-Za-z0-9_]*)";
|
|
42
|
+
const relation = String.raw `[A-Za-z_][A-Za-z0-9_.]*`;
|
|
43
|
+
const patterns = [
|
|
44
|
+
// The live Deep Lake backend's INSERT-path form (measured 2026-07-03):
|
|
45
|
+
// '400: {"error":"Column does not exist: column \"embed_model\" of
|
|
46
|
+
// relation \"hive_graph_versions\" does not exist", ...}'. Must come
|
|
47
|
+
// before the plain form and be recognized at all: without it the trailing
|
|
48
|
+
// 'relation ... does not exist' text matches the missing-TABLE classifier
|
|
49
|
+
// instead and the heal issues a useless CREATE rather than the ALTER.
|
|
50
|
+
new RegExp(`column ${q}${name}${q} of relation ${q}${relation}${q} does not exist`, "i"),
|
|
51
|
+
new RegExp(`column ${q}${name}${q} does not exist`, "i"),
|
|
52
|
+
new RegExp(`no such column:?\\s*${q}${name}${q}`, "i"),
|
|
53
|
+
new RegExp(`unknown column ${q}${name}${q}`, "i"),
|
|
54
|
+
new RegExp(`undefined column:?\\s*${q}${name}${q}`, "i"),
|
|
55
|
+
];
|
|
56
|
+
for (const re of patterns) {
|
|
57
|
+
const m = re.exec(err.message);
|
|
58
|
+
if (m !== null && m[1] !== undefined)
|
|
59
|
+
return m[1];
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Run a write, healing the two additive schema gaps EXACTLY ONCE each:
|
|
65
|
+
* - a missing-table failure -> CREATE the table (IF NOT EXISTS) and retry;
|
|
66
|
+
* - a missing-column failure whose column is a nullable additive column in
|
|
67
|
+
* `table` -> `ALTER TABLE ADD COLUMN` and retry (PRD-018i / NEC-018).
|
|
68
|
+
* Any other failure (or a success) returns/throws immediately and unhealed. A
|
|
69
|
+
* second failure after a heal propagates without a further retry (no loop).
|
|
70
|
+
*
|
|
71
|
+
* `runWrite` is the original statement's thunk so the retry re-issues the
|
|
72
|
+
* identical write.
|
|
73
|
+
*/
|
|
74
|
+
export async function withHeal(transport, table, runWrite) {
|
|
75
|
+
try {
|
|
76
|
+
return await runWrite();
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
if (!(err instanceof TransportError))
|
|
80
|
+
throw err;
|
|
81
|
+
if (isMissingTableError(err)) {
|
|
82
|
+
// Missing table: create it (IF NOT EXISTS makes concurrent heals
|
|
83
|
+
// converge), then retry the original write exactly once. Any failure from
|
|
84
|
+
// here on (the create itself, or the retried write) propagates unchanged.
|
|
85
|
+
await transport.query(buildCreateTableSql(table));
|
|
86
|
+
return runWrite();
|
|
87
|
+
}
|
|
88
|
+
const column = missingColumnName(err);
|
|
89
|
+
if (column !== null) {
|
|
90
|
+
const def = table.columns.find((c) => c.name === column);
|
|
91
|
+
// Only heal a column the current catalog actually defines AND that is a
|
|
92
|
+
// nullable additive column (NOT NULL columns are part of the CREATE set and
|
|
93
|
+
// never arrive via ALTER; refusing them keeps a stray message from ALTERing
|
|
94
|
+
// a bogus column). A future non-additive add must extend this rule.
|
|
95
|
+
if (def !== undefined && !def.notNull) {
|
|
96
|
+
// Deep Lake SQL has no `ADD COLUMN IF NOT EXISTS`, so two concurrent
|
|
97
|
+
// heals can both observe the missing-column failure and both issue the
|
|
98
|
+
// bare ALTER; the loser's ALTER then fails with a duplicate-column
|
|
99
|
+
// error even though the column it wanted is now there (CodeRabbit
|
|
100
|
+
// PR-18 finding #3). Swallow exactly that shape of failure and proceed
|
|
101
|
+
// to the retry - the column exists, which is all the heal needs - and
|
|
102
|
+
// let any OTHER ALTER failure (permission, connection, a genuine
|
|
103
|
+
// schema conflict) propagate unchanged.
|
|
104
|
+
try {
|
|
105
|
+
await transport.query(buildAddColumnSql(table, def));
|
|
106
|
+
}
|
|
107
|
+
catch (alterErr) {
|
|
108
|
+
const alreadyExists = alterErr instanceof TransportError && /already exists|duplicate column/i.test(alterErr.message);
|
|
109
|
+
if (!alreadyExists)
|
|
110
|
+
throw alterErr;
|
|
111
|
+
}
|
|
112
|
+
return runWrite();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
throw err;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=deeplake-heal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-heal.js","sourceRoot":"","sources":["../../src/hive-graph/deeplake-heal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Deep Lake-backed HiveGraphStore adapter (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* `DeepLakeHiveGraphStore` is the durable substrate for the two hive-graph
|
|
5
|
+
* tables (`hive_graph`, `hive_graph_versions`), reached over the network
|
|
6
|
+
* through nectar's own transport (`deeplake-transport.ts`) per ADR-0002 -
|
|
7
|
+
* never by importing the honeycomb runtime in-process. It is an ADDITIONAL
|
|
8
|
+
* adapter alongside `InMemoryHiveGraphStore` (`memory-store.ts`), not a
|
|
9
|
+
* replacement of it: the in-memory store keeps backing the file-registration
|
|
10
|
+
* ladder's tests and local dev, unchanged.
|
|
11
|
+
*
|
|
12
|
+
* `DeepLakeHiveGraphStore implements AsyncHiveGraphStore`
|
|
13
|
+
* (`store.ts`), not the synchronous `HiveGraphStore`. See the docblock on
|
|
14
|
+
* `AsyncHiveGraphStore` for why: the ladder's synchronous contract cannot be
|
|
15
|
+
* honored by a store that does real HTTP I/O, and wiring the ladder to an
|
|
16
|
+
* async store is a future PRD's decision, not this adapter's.
|
|
17
|
+
*
|
|
18
|
+
* All reads are scoped by `org_id`/`workspace_id`/`project_id` wherever the
|
|
19
|
+
* method receives a `Tenancy` (`listLatestVersions`, `latestVersionByPath`,
|
|
20
|
+
* `latestVersionByHash`), per PRD-005c's soft-filter contract - the
|
|
21
|
+
* `project_id` predicate is never omitted from those queries. The four
|
|
22
|
+
* by-nectar-only methods (`getIdentity`, `touchIdentity`, `nextSeq`,
|
|
23
|
+
* `latestVersion`) take no `Tenancy` parameter in the `HiveGraphStore` /
|
|
24
|
+
* `AsyncHiveGraphStore` seam itself - `nectar` is a globally-unique 26-char
|
|
25
|
+
* ULID (`ulid.ts`) and `InMemoryHiveGraphStore` looks those up by nectar
|
|
26
|
+
* alone too (no tenancy filter), so this adapter matches that seam exactly
|
|
27
|
+
* for drop-in-replacement parity rather than inventing extra scoping the
|
|
28
|
+
* interface does not carry.
|
|
29
|
+
*/
|
|
30
|
+
import type { HiveGraphRow, HiveGraphVersionRow, Tenancy } from "./model.js";
|
|
31
|
+
import type { AsyncHiveGraphStore, LatestVersion } from "./store.js";
|
|
32
|
+
import type { DeepLakeCredentials } from "./deeplake-credentials.js";
|
|
33
|
+
import type { QueryRunner } from "./deeplake-heal.js";
|
|
34
|
+
/** Options for {@link DeepLakeHiveGraphStore}. */
|
|
35
|
+
export interface DeepLakeHiveGraphStoreOptions {
|
|
36
|
+
/** Loaded via `deeplake-credentials.ts#loadDeepLakeCredentials`. */
|
|
37
|
+
readonly credentials: DeepLakeCredentials;
|
|
38
|
+
/** Per-statement timeout override in ms; see `DEFAULT_TRANSPORT_TIMEOUT_MS`. */
|
|
39
|
+
readonly timeoutMs?: number;
|
|
40
|
+
/**
|
|
41
|
+
* TEST-ONLY SEAM: inject a fake `QueryRunner` instead of constructing a
|
|
42
|
+
* real `HttpDeepLakeTransport` from `credentials`. When absent (the
|
|
43
|
+
* production path, and the default for every existing caller), the
|
|
44
|
+
* constructor builds a real `HttpDeepLakeTransport` from `credentials`
|
|
45
|
+
* exactly as before this option existed. `credentials` is still required
|
|
46
|
+
* even when `transport` is supplied (a test passes a trivial placeholder
|
|
47
|
+
* object; nothing in the class reads `credentials` again once the
|
|
48
|
+
* transport is constructed), which keeps this a strict addition rather
|
|
49
|
+
* than a change to the required shape of the options object.
|
|
50
|
+
*/
|
|
51
|
+
readonly transport?: QueryRunner;
|
|
52
|
+
}
|
|
53
|
+
export declare class DeepLakeHiveGraphStore implements AsyncHiveGraphStore {
|
|
54
|
+
private readonly transport;
|
|
55
|
+
/**
|
|
56
|
+
* Per-nectar append serialization (PRD-018g / NEC-011 AC-018g.3). Deep Lake has
|
|
57
|
+
* no transaction or unique constraint, so `nextSeq` + `appendVersion` as two
|
|
58
|
+
* statements is a read-then-write race: two concurrent writers can read the
|
|
59
|
+
* same MAX(seq) and both append `seq+1`. Chaining every seq-allocating append
|
|
60
|
+
* for a nectar through one promise makes the allocate-and-append pair atomic
|
|
61
|
+
* within THIS store instance, so no duplicate `(nectar, seq)` is produced by
|
|
62
|
+
* writers sharing the store.
|
|
63
|
+
*/
|
|
64
|
+
private readonly seqChains;
|
|
65
|
+
constructor(options: DeepLakeHiveGraphStoreOptions);
|
|
66
|
+
/**
|
|
67
|
+
* Run a READ statement, tolerating a missing-table failure as "no data yet"
|
|
68
|
+
* (an empty result), exactly like honeycomb's read-path guard
|
|
69
|
+
* (`tableExists`, `src/daemon/storage/heal.ts:171-175`) fails OPEN rather
|
|
70
|
+
* than provoking a CREATE. Only the missing-table shape is tolerated; a
|
|
71
|
+
* genuine connection/timeout/permission/syntax failure still propagates.
|
|
72
|
+
* Reads never create a table - only a write does, via `withHeal`.
|
|
73
|
+
*/
|
|
74
|
+
private readTolerant;
|
|
75
|
+
/**
|
|
76
|
+
* Insert-only mint, mirroring honeycomb's SELECT-before-INSERT write
|
|
77
|
+
* pattern (`selectBeforeInsert`, `src/daemon/storage/writes.ts:325-360`)
|
|
78
|
+
* rather than relying on a Deep Lake UNIQUE constraint: the Deep Lake SQL
|
|
79
|
+
* surface this adapter targets has no reliably-enforced uniqueness
|
|
80
|
+
* constraint to lean on, so "does the nectar already exist" is answered by
|
|
81
|
+
* probing first. Both the probe and the insert are heal-aware (a fresh
|
|
82
|
+
* tenancy's tables may not exist yet).
|
|
83
|
+
*
|
|
84
|
+
* After the insert, a best-effort re-verify SELECT counts the rows for the
|
|
85
|
+
* nectar; more than one means a race doubled it. Deep Lake offers no
|
|
86
|
+
* transactions, so this cannot PREVENT a race, only make it observable
|
|
87
|
+
* (the same limitation honeycomb documents). In practice a real race here
|
|
88
|
+
* is a near-zero-probability event - a nectar is a 26-char ULID with 80
|
|
89
|
+
* bits of randomness (`ulid.ts`), not a narrow key space two writers could
|
|
90
|
+
* plausibly collide on - so a failure of the re-verify SELECT itself
|
|
91
|
+
* (e.g. a transient network hiccup immediately after a successful insert)
|
|
92
|
+
* does not fail the whole call; the insert already succeeded and the
|
|
93
|
+
* re-verify is an observability nicety, not the source of truth.
|
|
94
|
+
*/
|
|
95
|
+
insertIdentity(row: HiveGraphRow): Promise<void>;
|
|
96
|
+
getIdentity(nectar: string): Promise<HiveGraphRow | undefined>;
|
|
97
|
+
/**
|
|
98
|
+
* Bump `last_update_date` via an in-place `UPDATE`.
|
|
99
|
+
*
|
|
100
|
+
* KNOWN CAVEAT: honeycomb's own operational history found that an in-place
|
|
101
|
+
* `UPDATE ... WHERE id = ...` does not reliably land on this backend under
|
|
102
|
+
* load - a by-id point read can still return a pre-update snapshot from a
|
|
103
|
+
* stale segment (see honeycomb `src/daemon/storage/catalog/tenancy.ts:475-489`,
|
|
104
|
+
* where the equivalent revoke-by-UPDATE was RETIRED in favor of an
|
|
105
|
+
* append-only version-bump for that reason). `hive_graph`'s catalog entry
|
|
106
|
+
* (`schema.ts`) nonetheless declares `writePattern: "update-or-insert"` for
|
|
107
|
+
* this exact field, and `last_update_date` is a low-stakes denormalized
|
|
108
|
+
* "last observed change" timestamp (not an authorization-bearing flag like
|
|
109
|
+
* the retired revoke), so this adapter uses `UPDATE` as declared rather than
|
|
110
|
+
* inventing an append-based scheme the schema does not define. If
|
|
111
|
+
* `last_update_date` staleness proves to be a real problem in practice, a
|
|
112
|
+
* future PRD should revisit this the same way honeycomb did - not this
|
|
113
|
+
* adapter, which mirrors the declared write pattern faithfully.
|
|
114
|
+
*/
|
|
115
|
+
touchIdentity(nectar: string, lastUpdateDate: string): Promise<void>;
|
|
116
|
+
appendVersion(row: HiveGraphVersionRow): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Allocate the next monotonic seq for `row.nectar` and append `row` at it,
|
|
119
|
+
* atomically with respect to other seq-allocating appends for the SAME nectar
|
|
120
|
+
* through this store (PRD-018g AC-018g.3). Returns the seq actually written.
|
|
121
|
+
* `row.seq` is ignored; the store owns seq allocation here so the caller never
|
|
122
|
+
* hand-computes a colliding value. Non-seq appends (`appendVersion`) that a
|
|
123
|
+
* caller has already sequenced are unaffected.
|
|
124
|
+
*/
|
|
125
|
+
appendVersionAtNextSeq(row: HiveGraphVersionRow): Promise<number>;
|
|
126
|
+
private allocateAndAppend;
|
|
127
|
+
/**
|
|
128
|
+
* The next monotonic seq for a nectar: MAX(seq)+1 over every version row,
|
|
129
|
+
* computed client-side by {@link reduceLatestVersion} rather than trusted
|
|
130
|
+
* to an SQL `ORDER BY`/`LIMIT`/`MAX()` clause. See that function's docblock
|
|
131
|
+
* for why.
|
|
132
|
+
*/
|
|
133
|
+
nextSeq(nectar: string): Promise<number>;
|
|
134
|
+
/** The latest (MAX seq) version row for a nectar; see {@link reduceLatestVersion}. */
|
|
135
|
+
latestVersion(nectar: string): Promise<HiveGraphVersionRow | undefined>;
|
|
136
|
+
/**
|
|
137
|
+
* Every nectar's latest version, scoped by the full tenancy predicate
|
|
138
|
+
* (`org_id`/`workspace_id`/`project_id`, PRD-005c). Fetches every identity
|
|
139
|
+
* and every version row for the tenancy and reduces to "latest per nectar"
|
|
140
|
+
* in application code, mirroring `InMemoryHiveGraphStore.listLatestVersions`'s
|
|
141
|
+
* iterate-and-reduce shape rather than pushing a `GROUP BY`/window-function
|
|
142
|
+
* reduction into SQL. This is not optimized for a very large per-tenant
|
|
143
|
+
* row count; a future PRD could push the "latest per nectar" reduction into
|
|
144
|
+
* SQL if that becomes the bottleneck. It is not this adapter's job to
|
|
145
|
+
* diverge from the reference in-memory implementation's behavior to chase
|
|
146
|
+
* that optimization prematurely.
|
|
147
|
+
*/
|
|
148
|
+
listLatestVersions(tenancy: Tenancy): Promise<LatestVersion[]>;
|
|
149
|
+
/**
|
|
150
|
+
* Every nectar's latest DESCRIBED version, scoped by the full tenancy
|
|
151
|
+
* predicate (PRD-011c's projection scan). Mirrors {@link listLatestVersions}'s
|
|
152
|
+
* two-SELECT-then-reduce-in-application-code shape, but reduces each nectar's
|
|
153
|
+
* version group with {@link reduceLatestDescribedVersion} and omits nectars
|
|
154
|
+
* that have no described version. The projection builder overlays this onto
|
|
155
|
+
* {@link listLatestVersions} so a minted-but-undescribed nectar still keeps a
|
|
156
|
+
* minimal entry.
|
|
157
|
+
*/
|
|
158
|
+
listLatestDescribedVersions(tenancy: Tenancy): Promise<LatestVersion[]>;
|
|
159
|
+
latestVersionByPath(tenancy: Tenancy, path: string): Promise<LatestVersion | undefined>;
|
|
160
|
+
latestVersionByHash(tenancy: Tenancy, contentHash: string): Promise<LatestVersion | undefined>;
|
|
161
|
+
/**
|
|
162
|
+
* By-path / by-hash lookup with predicate pushdown (NEC-042 item 8 /
|
|
163
|
+
* AC-018l.15). The pre-fix path called {@link listLatestVersions}, which
|
|
164
|
+
* scans the ENTIRE tenancy (all identities + all version rows) per probe -
|
|
165
|
+
* O(all rows) on what becomes a per-file-event hot path. Instead:
|
|
166
|
+
*
|
|
167
|
+
* 1. push the column predicate down (`WHERE path = ...` / `WHERE
|
|
168
|
+
* content_hash = ...`) to find only the candidate nectars that ever
|
|
169
|
+
* carried the value;
|
|
170
|
+
* 2. fetch the full history for JUST those candidates and reduce
|
|
171
|
+
* latest-per-nectar client-side with the shared {@link reduceLatestVersion}
|
|
172
|
+
* MAX(seq) helper (the client-side reduction is kept, not trusted to an
|
|
173
|
+
* SQL ORDER BY, matching the rest of this adapter);
|
|
174
|
+
* 3. return the nectar whose LATEST version satisfies the predicate, which
|
|
175
|
+
* preserves the reference `listLatestVersions().find` semantics (a nectar
|
|
176
|
+
* renamed AWAY from the path is not a false positive).
|
|
177
|
+
*/
|
|
178
|
+
private latestVersionByColumn;
|
|
179
|
+
/**
|
|
180
|
+
* Delete a nectar (identity + versions) scoped to `tenancy`, the SOLE deletion
|
|
181
|
+
* path (`prune --confirm`, PRD-006d). Both DELETE statements carry the full
|
|
182
|
+
* tenancy predicate (`org_id`/`workspace_id`/`project_id`, never omitting
|
|
183
|
+
* `project_id`) alongside the nectar key, so a nectar minted under another
|
|
184
|
+
* project is never removed by a delete issued in this tenancy (AC-20).
|
|
185
|
+
*
|
|
186
|
+
* The delete path deliberately does NOT go through `withHeal`: a missing table
|
|
187
|
+
* means there is nothing to delete, so it is a harmless no-op, NOT a reason to
|
|
188
|
+
* CREATE a fresh (empty) table. `deleteTolerant` therefore swallows only the
|
|
189
|
+
* missing-table transport error (via `isMissingTableError`, the same
|
|
190
|
+
* classification the read path uses) and lets every other failure propagate.
|
|
191
|
+
*/
|
|
192
|
+
deleteNectar(tenancy: Tenancy, nectar: string): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Run a DELETE, tolerating a missing-table failure as "nothing to delete" (a
|
|
195
|
+
* no-op). Never creates a table. Any other transport failure propagates.
|
|
196
|
+
*/
|
|
197
|
+
private deleteTolerant;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=deeplake-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-store.d.ts","sourceRoot":"","sources":["../../src/hive-graph/deeplake-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAkB,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;CAClC;AAgND,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;gBAErD,OAAO,EAAE,6BAA6B;IAYlD;;;;;;;OAOG;YACW,YAAY;IAS1B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAMpE;;;;;;;;;;;;;;;;;OAiBG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;;;OAOG;IACG,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;YA6BzD,iBAAiB;IAM/B;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY9C,sFAAsF;IAChF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAM7E;;;;;;;;;;;OAWG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8BpE;;;;;;;;OAQG;IACG,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BvE,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAIvF,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAIpG;;;;;;;;;;;;;;;;OAgBG;YACW,qBAAqB;IAqCnC;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;OAGG;YACW,cAAc;CAQ7B"}
|