@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,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep Lake credentials loader for hivenectar (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Reads the SHARED `~/.deeplake/credentials.json` file that `hivemind login`
|
|
5
|
+
* (and honeycomb) already write, mirroring the shape honeycomb's
|
|
6
|
+
* `loadDiskCredentials` / `deeplakeCredentialsFileProvider`
|
|
7
|
+
* (`src/daemon/runtime/auth/credentials-store.ts`,
|
|
8
|
+
* `src/daemon/storage/config.ts`) read: `{ apiUrl, token, orgId, workspaceId }`.
|
|
9
|
+
* Per ADR-0002, hivenectar never imports honeycomb's runtime for this; it
|
|
10
|
+
* reads the same on-disk file with its own loader.
|
|
11
|
+
*
|
|
12
|
+
* Fail-closed by design (mirrors honeycomb's `StorageConfigError` posture): a
|
|
13
|
+
* missing file, malformed JSON, or a missing required field throws a
|
|
14
|
+
* `DeepLakeCredentialsError` listing exactly what is wrong, rather than
|
|
15
|
+
* returning a partially-undefined credential object a caller could
|
|
16
|
+
* accidentally use. `apiUrl` is the one field with a documented default (a
|
|
17
|
+
* legacy or hand-written file may omit it); `token`, `orgId`, and
|
|
18
|
+
* `workspaceId` are load-bearing and always required.
|
|
19
|
+
*
|
|
20
|
+
* The token is never logged or included in an error message in full;
|
|
21
|
+
* `redactToken` keeps only the last 4 characters, exactly like honeycomb's
|
|
22
|
+
* `redactToken` (`src/daemon/runtime/auth/credentials-store.ts:254-257`, its
|
|
23
|
+
* `defaultCredentialProvider` variant).
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
26
|
+
import { homedir } from "node:os";
|
|
27
|
+
import { join } from "node:path";
|
|
28
|
+
/** The SHARED credentials directory name under the user's home. */
|
|
29
|
+
export const CREDENTIALS_DIR_NAME = ".deeplake";
|
|
30
|
+
/** The credentials file name within the dir. */
|
|
31
|
+
export const CREDENTIALS_FILE_NAME = "credentials.json";
|
|
32
|
+
/** The canonical Deep Lake API base URL used when a file omits `apiUrl`. */
|
|
33
|
+
export const DEFAULT_DEEPLAKE_API_URL = "https://api.deeplake.ai";
|
|
34
|
+
/**
|
|
35
|
+
* Structured, fail-closed rejection. Carries exactly which fields were missing
|
|
36
|
+
* or invalid so a caller (or an operator reading a log line) knows what to
|
|
37
|
+
* fix without the loader ever echoing the file's contents (which may hold the
|
|
38
|
+
* token).
|
|
39
|
+
*/
|
|
40
|
+
export class DeepLakeCredentialsError extends Error {
|
|
41
|
+
missing;
|
|
42
|
+
constructor(missing) {
|
|
43
|
+
super(`Invalid Deep Lake credentials: ${missing.join("; ")}`);
|
|
44
|
+
this.name = "DeepLakeCredentialsError";
|
|
45
|
+
this.missing = missing;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Resolve the credentials directory, honoring the test override. */
|
|
49
|
+
export function credentialsDir(options = {}) {
|
|
50
|
+
return options.dir ?? join(homedir(), CREDENTIALS_DIR_NAME);
|
|
51
|
+
}
|
|
52
|
+
/** Resolve the full credentials file path within the (possibly overridden) dir. */
|
|
53
|
+
export function credentialsPath(options = {}) {
|
|
54
|
+
return join(credentialsDir(options), CREDENTIALS_FILE_NAME);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Load and validate `~/.deeplake/credentials.json` (or the overridden dir in
|
|
58
|
+
* `options.dir`). Throws {@link DeepLakeCredentialsError} listing every
|
|
59
|
+
* problem found: a missing file, invalid JSON, a non-object payload, or a
|
|
60
|
+
* missing/empty `token` / `orgId` / `workspaceId`. Never returns a partial
|
|
61
|
+
* credential — the caller either gets a fully-populated `DeepLakeCredentials`
|
|
62
|
+
* or a clear, typed reason it could not.
|
|
63
|
+
*/
|
|
64
|
+
export function loadDeepLakeCredentials(options = {}) {
|
|
65
|
+
const path = credentialsPath(options);
|
|
66
|
+
if (!existsSync(path)) {
|
|
67
|
+
throw new DeepLakeCredentialsError([`credentials file not found at ${path}`]);
|
|
68
|
+
}
|
|
69
|
+
let parsed;
|
|
70
|
+
try {
|
|
71
|
+
parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
throw new DeepLakeCredentialsError([`credentials file at ${path} is not valid JSON`]);
|
|
75
|
+
}
|
|
76
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
77
|
+
throw new DeepLakeCredentialsError([`credentials file at ${path} does not contain a JSON object`]);
|
|
78
|
+
}
|
|
79
|
+
const record = parsed;
|
|
80
|
+
const missing = [];
|
|
81
|
+
if (typeof record.token !== "string" || record.token.length === 0)
|
|
82
|
+
missing.push("token");
|
|
83
|
+
if (typeof record.orgId !== "string" || record.orgId.length === 0)
|
|
84
|
+
missing.push("orgId");
|
|
85
|
+
if (typeof record.workspaceId !== "string" || record.workspaceId.length === 0)
|
|
86
|
+
missing.push("workspaceId");
|
|
87
|
+
if (missing.length > 0) {
|
|
88
|
+
throw new DeepLakeCredentialsError(missing);
|
|
89
|
+
}
|
|
90
|
+
const apiUrl = typeof record.apiUrl === "string" && record.apiUrl.length > 0 ? record.apiUrl : DEFAULT_DEEPLAKE_API_URL;
|
|
91
|
+
return {
|
|
92
|
+
apiUrl,
|
|
93
|
+
token: record.token,
|
|
94
|
+
orgId: record.orgId,
|
|
95
|
+
workspaceId: record.workspaceId,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Redact a token for logs and errors. Never echoes a token in full: keeps the
|
|
100
|
+
* last 4 chars for correlation, masks the rest. An empty/short value collapses
|
|
101
|
+
* to a fixed mask so length isn't leaked either. Mirrors honeycomb's
|
|
102
|
+
* `redactToken` (`src/daemon/runtime/auth/credentials-store.ts:254-257`).
|
|
103
|
+
*/
|
|
104
|
+
export function redactToken(value) {
|
|
105
|
+
if (value.length <= 4)
|
|
106
|
+
return "****";
|
|
107
|
+
return `****${value.slice(-4)}`;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=deeplake-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-credentials.js","sourceRoot":"","sources":["../../src/source-graph/deeplake-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heal-on-first-write for the Deep Lake adapter (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the missing-table branch of honeycomb's `withHeal`
|
|
5
|
+
* (`src/daemon/storage/heal.ts:286-313`), scoped down to what the
|
|
6
|
+
* source-graph tables need: a write that fails because its table does not
|
|
7
|
+
* exist yet triggers exactly ONE create-then-retry. Any other failure
|
|
8
|
+
* (permission, connection, timeout, a genuine syntax error) propagates
|
|
9
|
+
* unchanged and never triggers a create — the same anti-mask rule honeycomb's
|
|
10
|
+
* `classifyFailure` documents: a credentials or syntax problem must never be
|
|
11
|
+
* misread as a schema gap behind a confusing CREATE attempt.
|
|
12
|
+
*
|
|
13
|
+
* Column healing (honeycomb's `healColumns` / `ALTER TABLE ADD COLUMN`) is
|
|
14
|
+
* deliberately NOT ported here: `SOURCE_GRAPH_COLUMNS` /
|
|
15
|
+
* `SOURCE_GRAPH_VERSIONS_COLUMNS` are the full, fixed column set at CREATE
|
|
16
|
+
* time and PRD-005 does not add columns to an already-created table out from
|
|
17
|
+
* under a running adapter, so there is no missing-column case for this
|
|
18
|
+
* adapter to heal. A future PRD that adds a column to the catalog would need
|
|
19
|
+
* to bring the column-heal half of honeycomb's engine over too.
|
|
20
|
+
*/
|
|
21
|
+
import type { CatalogTable } from "./schema.js";
|
|
22
|
+
import type { DeepLakeRow } from "./deeplake-transport.js";
|
|
23
|
+
import { TransportError } from "./deeplake-transport.js";
|
|
24
|
+
/**
|
|
25
|
+
* The minimal shape `withHeal` needs from a transport: one method that runs a
|
|
26
|
+
* SQL statement. `HttpDeepLakeTransport` satisfies this structurally (its
|
|
27
|
+
* `query` method is public even though its connection fields are private), so
|
|
28
|
+
* production callers pass it directly; a test can pass a plain fake object
|
|
29
|
+
* with a `query` method instead, without needing to construct a real
|
|
30
|
+
* `HttpDeepLakeTransport` or reach for a mocking library (hivenectar has
|
|
31
|
+
* none, by design).
|
|
32
|
+
*/
|
|
33
|
+
export interface QueryRunner {
|
|
34
|
+
query(sql: string): Promise<DeepLakeRow[]>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Classify a `query`-kind `TransportError` message as a missing-table failure
|
|
38
|
+
* (mirrors honeycomb's `classifyFailure`, `src/daemon/storage/heal.ts:77-98`,
|
|
39
|
+
* missing-table branch only). Auth/permission failures are excluded first so a
|
|
40
|
+
* message that happens to mention a relation is never misread as a schema gap.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isMissingTableError(err: TransportError): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Run a write, and on a missing-table failure, CREATE the table and retry the
|
|
45
|
+
* write EXACTLY ONCE. Any other failure (or a success) returns/throws
|
|
46
|
+
* immediately and unhealed. A second failure after the heal propagates
|
|
47
|
+
* without a further retry (no infinite loop).
|
|
48
|
+
*
|
|
49
|
+
* `runWrite` is the original statement's thunk so the retry re-issues the
|
|
50
|
+
* identical write.
|
|
51
|
+
*/
|
|
52
|
+
export declare function withHeal(transport: QueryRunner, table: CatalogTable, runWrite: () => Promise<DeepLakeRow[]>): Promise<DeepLakeRow[]>;
|
|
53
|
+
//# sourceMappingURL=deeplake-heal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-heal.d.ts","sourceRoot":"","sources":["../../src/source-graph/deeplake-heal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAQhE;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,GACrC,OAAO,CAAC,WAAW,EAAE,CAAC,CAaxB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { 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
|
+
return /table does not exist|relation ["']?[A-Za-z_][A-Za-z0-9_.]*["']? does not exist|no such table/i.test(err.message);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run a write, and on a missing-table failure, CREATE the table and retry the
|
|
19
|
+
* write EXACTLY ONCE. Any other failure (or a success) returns/throws
|
|
20
|
+
* immediately and unhealed. A second failure after the heal propagates
|
|
21
|
+
* without a further retry (no infinite loop).
|
|
22
|
+
*
|
|
23
|
+
* `runWrite` is the original statement's thunk so the retry re-issues the
|
|
24
|
+
* identical write.
|
|
25
|
+
*/
|
|
26
|
+
export async function withHeal(transport, table, runWrite) {
|
|
27
|
+
try {
|
|
28
|
+
return await runWrite();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
if (!(err instanceof TransportError) || !isMissingTableError(err)) {
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
// Missing table: create it (IF NOT EXISTS makes concurrent heals
|
|
35
|
+
// converge), then retry the original write exactly once. Any failure from
|
|
36
|
+
// here on (the create itself, or the retried write) propagates unchanged.
|
|
37
|
+
await transport.query(buildCreateTableSql(table));
|
|
38
|
+
return runWrite();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=deeplake-heal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-heal.js","sourceRoot":"","sources":["../../src/source-graph/deeplake-heal.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAezD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAmB;IACrD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,wEAAwE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,+FAA+F,CAAC,IAAI,CACzG,GAAG,CAAC,OAAO,CACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAsB,EACtB,KAAmB,EACnB,QAAsC;IAEtC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,iEAAiE;QACjE,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Deep Lake-backed SourceGraphStore adapter (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* `DeepLakeSourceGraphStore` is the durable substrate for the two source-graph
|
|
5
|
+
* tables (`source_graph`, `source_graph_versions`), reached over the network
|
|
6
|
+
* through hivenectar'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 `InMemorySourceGraphStore` (`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
|
+
* `DeepLakeSourceGraphStore implements AsyncSourceGraphStore`
|
|
13
|
+
* (`store.ts`), not the synchronous `SourceGraphStore`. See the docblock on
|
|
14
|
+
* `AsyncSourceGraphStore` 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 `SourceGraphStore` /
|
|
24
|
+
* `AsyncSourceGraphStore` seam itself - `nectar` is a globally-unique 26-char
|
|
25
|
+
* ULID (`ulid.ts`) and `InMemorySourceGraphStore` 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 { SourceGraphRow, SourceGraphVersionRow, Tenancy } from "./model.js";
|
|
31
|
+
import type { AsyncSourceGraphStore, LatestVersion } from "./store.js";
|
|
32
|
+
import type { DeepLakeCredentials } from "./deeplake-credentials.js";
|
|
33
|
+
import type { QueryRunner } from "./deeplake-heal.js";
|
|
34
|
+
/** Options for {@link DeepLakeSourceGraphStore}. */
|
|
35
|
+
export interface DeepLakeSourceGraphStoreOptions {
|
|
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 DeepLakeSourceGraphStore implements AsyncSourceGraphStore {
|
|
54
|
+
private readonly transport;
|
|
55
|
+
constructor(options: DeepLakeSourceGraphStoreOptions);
|
|
56
|
+
/**
|
|
57
|
+
* Run a READ statement, tolerating a missing-table failure as "no data yet"
|
|
58
|
+
* (an empty result), exactly like honeycomb's read-path guard
|
|
59
|
+
* (`tableExists`, `src/daemon/storage/heal.ts:171-175`) fails OPEN rather
|
|
60
|
+
* than provoking a CREATE. Only the missing-table shape is tolerated; a
|
|
61
|
+
* genuine connection/timeout/permission/syntax failure still propagates.
|
|
62
|
+
* Reads never create a table - only a write does, via `withHeal`.
|
|
63
|
+
*/
|
|
64
|
+
private readTolerant;
|
|
65
|
+
/**
|
|
66
|
+
* Insert-only mint, mirroring honeycomb's SELECT-before-INSERT write
|
|
67
|
+
* pattern (`selectBeforeInsert`, `src/daemon/storage/writes.ts:325-360`)
|
|
68
|
+
* rather than relying on a Deep Lake UNIQUE constraint: the Deep Lake SQL
|
|
69
|
+
* surface this adapter targets has no reliably-enforced uniqueness
|
|
70
|
+
* constraint to lean on, so "does the nectar already exist" is answered by
|
|
71
|
+
* probing first. Both the probe and the insert are heal-aware (a fresh
|
|
72
|
+
* tenancy's tables may not exist yet).
|
|
73
|
+
*
|
|
74
|
+
* After the insert, a best-effort re-verify SELECT counts the rows for the
|
|
75
|
+
* nectar; more than one means a race doubled it. Deep Lake offers no
|
|
76
|
+
* transactions, so this cannot PREVENT a race, only make it observable
|
|
77
|
+
* (the same limitation honeycomb documents). In practice a real race here
|
|
78
|
+
* is a near-zero-probability event - a nectar is a 26-char ULID with 80
|
|
79
|
+
* bits of randomness (`ulid.ts`), not a narrow key space two writers could
|
|
80
|
+
* plausibly collide on - so a failure of the re-verify SELECT itself
|
|
81
|
+
* (e.g. a transient network hiccup immediately after a successful insert)
|
|
82
|
+
* does not fail the whole call; the insert already succeeded and the
|
|
83
|
+
* re-verify is an observability nicety, not the source of truth.
|
|
84
|
+
*/
|
|
85
|
+
insertIdentity(row: SourceGraphRow): Promise<void>;
|
|
86
|
+
getIdentity(nectar: string): Promise<SourceGraphRow | undefined>;
|
|
87
|
+
/**
|
|
88
|
+
* Bump `last_update_date` via an in-place `UPDATE`.
|
|
89
|
+
*
|
|
90
|
+
* KNOWN CAVEAT: honeycomb's own operational history found that an in-place
|
|
91
|
+
* `UPDATE ... WHERE id = ...` does not reliably land on this backend under
|
|
92
|
+
* load - a by-id point read can still return a pre-update snapshot from a
|
|
93
|
+
* stale segment (see honeycomb `src/daemon/storage/catalog/tenancy.ts:475-489`,
|
|
94
|
+
* where the equivalent revoke-by-UPDATE was RETIRED in favor of an
|
|
95
|
+
* append-only version-bump for that reason). `source_graph`'s catalog entry
|
|
96
|
+
* (`schema.ts`) nonetheless declares `writePattern: "update-or-insert"` for
|
|
97
|
+
* this exact field, and `last_update_date` is a low-stakes denormalized
|
|
98
|
+
* "last observed change" timestamp (not an authorization-bearing flag like
|
|
99
|
+
* the retired revoke), so this adapter uses `UPDATE` as declared rather than
|
|
100
|
+
* inventing an append-based scheme the schema does not define. If
|
|
101
|
+
* `last_update_date` staleness proves to be a real problem in practice, a
|
|
102
|
+
* future PRD should revisit this the same way honeycomb did - not this
|
|
103
|
+
* adapter, which mirrors the declared write pattern faithfully.
|
|
104
|
+
*/
|
|
105
|
+
touchIdentity(nectar: string, lastUpdateDate: string): Promise<void>;
|
|
106
|
+
appendVersion(row: SourceGraphVersionRow): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* The next monotonic seq for a nectar: MAX(seq)+1 over every version row,
|
|
109
|
+
* computed client-side by {@link reduceLatestVersion} rather than trusted
|
|
110
|
+
* to an SQL `ORDER BY`/`LIMIT`/`MAX()` clause. See that function's docblock
|
|
111
|
+
* for why.
|
|
112
|
+
*/
|
|
113
|
+
nextSeq(nectar: string): Promise<number>;
|
|
114
|
+
/** The latest (MAX seq) version row for a nectar; see {@link reduceLatestVersion}. */
|
|
115
|
+
latestVersion(nectar: string): Promise<SourceGraphVersionRow | undefined>;
|
|
116
|
+
/**
|
|
117
|
+
* Every nectar's latest version, scoped by the full tenancy predicate
|
|
118
|
+
* (`org_id`/`workspace_id`/`project_id`, PRD-005c). Fetches every identity
|
|
119
|
+
* and every version row for the tenancy and reduces to "latest per nectar"
|
|
120
|
+
* in application code, mirroring `InMemorySourceGraphStore.listLatestVersions`'s
|
|
121
|
+
* iterate-and-reduce shape rather than pushing a `GROUP BY`/window-function
|
|
122
|
+
* reduction into SQL. This is not optimized for a very large per-tenant
|
|
123
|
+
* row count; a future PRD could push the "latest per nectar" reduction into
|
|
124
|
+
* SQL if that becomes the bottleneck. It is not this adapter's job to
|
|
125
|
+
* diverge from the reference in-memory implementation's behavior to chase
|
|
126
|
+
* that optimization prematurely.
|
|
127
|
+
*/
|
|
128
|
+
listLatestVersions(tenancy: Tenancy): Promise<LatestVersion[]>;
|
|
129
|
+
latestVersionByPath(tenancy: Tenancy, path: string): Promise<LatestVersion | undefined>;
|
|
130
|
+
latestVersionByHash(tenancy: Tenancy, contentHash: string): Promise<LatestVersion | undefined>;
|
|
131
|
+
/**
|
|
132
|
+
* Delete a nectar (identity + versions) scoped to `tenancy`, the SOLE deletion
|
|
133
|
+
* path (`prune --confirm`, PRD-006d). Both DELETE statements carry the full
|
|
134
|
+
* tenancy predicate (`org_id`/`workspace_id`/`project_id`, never omitting
|
|
135
|
+
* `project_id`) alongside the nectar key, so a nectar minted under another
|
|
136
|
+
* project is never removed by a delete issued in this tenancy (AC-20).
|
|
137
|
+
*
|
|
138
|
+
* The delete path deliberately does NOT go through `withHeal`: a missing table
|
|
139
|
+
* means there is nothing to delete, so it is a harmless no-op, NOT a reason to
|
|
140
|
+
* CREATE a fresh (empty) table. `deleteTolerant` therefore swallows only the
|
|
141
|
+
* missing-table transport error (via `isMissingTableError`, the same
|
|
142
|
+
* classification the read path uses) and lets every other failure propagate.
|
|
143
|
+
*/
|
|
144
|
+
deleteNectar(tenancy: Tenancy, nectar: string): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Run a DELETE, tolerating a missing-table failure as "nothing to delete" (a
|
|
147
|
+
* no-op). Never creates a table. Any other transport failure propagates.
|
|
148
|
+
*/
|
|
149
|
+
private deleteTolerant;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=deeplake-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-store.d.ts","sourceRoot":"","sources":["../../src/source-graph/deeplake-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAkB,cAAc,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,oDAAoD;AACpD,MAAM,WAAW,+BAA+B;IAC9C,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;AAyLD,qBAAa,wBAAyB,YAAW,qBAAqB;IACpE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,OAAO,EAAE,+BAA+B;IAYpD;;;;;;;OAOG;YACW,YAAY;IAS1B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAMtE;;;;;;;;;;;;;;;;;OAiBG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY9C,sFAAsF;IAChF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAM/E;;;;;;;;;;;OAWG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8B9D,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAKvF,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAKpG;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;OAGG;YACW,cAAc;CAQ7B"}
|