@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,389 @@
|
|
|
1
|
+
import { DESCRIBE_STATUSES } from "./model.js";
|
|
2
|
+
import { SOURCE_GRAPH_TABLE, SOURCE_GRAPH_VERSIONS_TABLE } from "./schema.js";
|
|
3
|
+
import { HttpDeepLakeTransport, TransportError } from "./deeplake-transport.js";
|
|
4
|
+
import { isMissingTableError, withHeal } from "./deeplake-heal.js";
|
|
5
|
+
import { eLiteral, sLiteral, sqlFloat4Array, sqlIdent, sqlNum } from "./sql-guards.js";
|
|
6
|
+
const SOURCE_GRAPH_TABLE_NAME = sqlIdent(SOURCE_GRAPH_TABLE.name);
|
|
7
|
+
const SOURCE_GRAPH_VERSIONS_TABLE_NAME = sqlIdent(SOURCE_GRAPH_VERSIONS_TABLE.name);
|
|
8
|
+
function toStr(value) {
|
|
9
|
+
return typeof value === "string" ? value : String(value ?? "");
|
|
10
|
+
}
|
|
11
|
+
function toNum(value) {
|
|
12
|
+
const n = typeof value === "number" ? value : Number(value);
|
|
13
|
+
return Number.isFinite(n) ? n : 0;
|
|
14
|
+
}
|
|
15
|
+
function toDescribeStatus(value) {
|
|
16
|
+
if (typeof value === "string" && DESCRIBE_STATUSES.includes(value)) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
throw new Error(`invalid describe_status value from Deep Lake: ${JSON.stringify(value)}`);
|
|
20
|
+
}
|
|
21
|
+
function toEmbedding(value) {
|
|
22
|
+
if (!Array.isArray(value))
|
|
23
|
+
return null;
|
|
24
|
+
return value.map((v) => toNum(v));
|
|
25
|
+
}
|
|
26
|
+
function toConfidence(value) {
|
|
27
|
+
if (value === null || value === undefined)
|
|
28
|
+
return null;
|
|
29
|
+
const n = typeof value === "number" ? value : Number(value);
|
|
30
|
+
return Number.isFinite(n) ? n : null;
|
|
31
|
+
}
|
|
32
|
+
/** Map a raw `source_graph` row into the domain `SourceGraphRow`. */
|
|
33
|
+
function toIdentityRow(row) {
|
|
34
|
+
return {
|
|
35
|
+
nectar: toStr(row.nectar),
|
|
36
|
+
kind: row.kind === "directory" ? "directory" : "file",
|
|
37
|
+
createdAt: toStr(row.created_at),
|
|
38
|
+
derivedFromNectar: toStr(row.derived_from_nectar),
|
|
39
|
+
forkContentHash: toStr(row.fork_content_hash),
|
|
40
|
+
orgId: toStr(row.org_id),
|
|
41
|
+
workspaceId: toStr(row.workspace_id),
|
|
42
|
+
projectId: toStr(row.project_id),
|
|
43
|
+
lastUpdateDate: toStr(row.last_update_date),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Map a raw `source_graph_versions` row into the domain `SourceGraphVersionRow`. */
|
|
47
|
+
function toVersionRow(row) {
|
|
48
|
+
return {
|
|
49
|
+
nectar: toStr(row.nectar),
|
|
50
|
+
contentHash: toStr(row.content_hash),
|
|
51
|
+
seq: toNum(row.seq),
|
|
52
|
+
path: toStr(row.path),
|
|
53
|
+
filename: toStr(row.filename),
|
|
54
|
+
ext: toStr(row.ext),
|
|
55
|
+
sizeBytes: toNum(row.size_bytes),
|
|
56
|
+
mtimeObserved: toStr(row.mtime_observed),
|
|
57
|
+
title: toStr(row.title),
|
|
58
|
+
description: toStr(row.description),
|
|
59
|
+
concepts: toStr(row.concepts),
|
|
60
|
+
embedding: toEmbedding(row.embedding),
|
|
61
|
+
confidence: toConfidence(row.confidence),
|
|
62
|
+
fingerprint: typeof row.fingerprint === "string" ? row.fingerprint : null,
|
|
63
|
+
describedAt: toStr(row.described_at),
|
|
64
|
+
describeModel: toStr(row.describe_model),
|
|
65
|
+
describeStatus: toDescribeStatus(row.describe_status),
|
|
66
|
+
observedAt: toStr(row.observed_at),
|
|
67
|
+
orgId: toStr(row.org_id),
|
|
68
|
+
workspaceId: toStr(row.workspace_id),
|
|
69
|
+
projectId: toStr(row.project_id),
|
|
70
|
+
lastUpdateDate: toStr(row.last_update_date),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reduce a set of raw `source_graph_versions` rows for ONE nectar to the one
|
|
75
|
+
* with the highest `seq` (client-side MAX(seq)), returning `undefined` for an
|
|
76
|
+
* empty set. This is the real "MAX(seq) selection" logic `nextSeq`,
|
|
77
|
+
* `latestVersion`, and `listLatestVersions` all share - it does not trust the
|
|
78
|
+
* Deep Lake backend to have already applied an `ORDER BY seq DESC LIMIT 1`
|
|
79
|
+
* correctly, since this same file documents (`touchIdentity`'s docblock,
|
|
80
|
+
* citing honeycomb `src/daemon/storage/catalog/tenancy.ts:475-489`) that this
|
|
81
|
+
* backend has known point-read/ordering quirks under load. Fetching every
|
|
82
|
+
* version row for a nectar and reducing here is a small, testable function
|
|
83
|
+
* instead of an opaque SQL clause, and a nectar's version history (one row
|
|
84
|
+
* per observed edit of a single file) is not expected to be large enough for
|
|
85
|
+
* the extra rows to matter.
|
|
86
|
+
*/
|
|
87
|
+
function reduceLatestVersion(rows) {
|
|
88
|
+
let latest;
|
|
89
|
+
for (const raw of rows) {
|
|
90
|
+
const version = toVersionRow(raw);
|
|
91
|
+
if (latest === undefined || version.seq > latest.seq)
|
|
92
|
+
latest = version;
|
|
93
|
+
}
|
|
94
|
+
return latest;
|
|
95
|
+
}
|
|
96
|
+
/** Build the `INSERT INTO "source_graph" (...) VALUES (...)` statement for one identity row. */
|
|
97
|
+
function buildInsertIdentitySql(row) {
|
|
98
|
+
const cols = [
|
|
99
|
+
"nectar",
|
|
100
|
+
"kind",
|
|
101
|
+
"created_at",
|
|
102
|
+
"derived_from_nectar",
|
|
103
|
+
"fork_content_hash",
|
|
104
|
+
"org_id",
|
|
105
|
+
"workspace_id",
|
|
106
|
+
"project_id",
|
|
107
|
+
"last_update_date",
|
|
108
|
+
];
|
|
109
|
+
const vals = [
|
|
110
|
+
sLiteral(row.nectar),
|
|
111
|
+
sLiteral(row.kind),
|
|
112
|
+
sLiteral(row.createdAt),
|
|
113
|
+
sLiteral(row.derivedFromNectar),
|
|
114
|
+
sLiteral(row.forkContentHash),
|
|
115
|
+
sLiteral(row.orgId),
|
|
116
|
+
sLiteral(row.workspaceId),
|
|
117
|
+
sLiteral(row.projectId),
|
|
118
|
+
sLiteral(row.lastUpdateDate),
|
|
119
|
+
];
|
|
120
|
+
return `INSERT INTO "${SOURCE_GRAPH_TABLE_NAME}" (${cols.join(", ")}) VALUES (${vals.join(", ")})`;
|
|
121
|
+
}
|
|
122
|
+
/** Build the `INSERT INTO "source_graph_versions" (...) VALUES (...)` statement for one version row. */
|
|
123
|
+
function buildInsertVersionSql(row) {
|
|
124
|
+
const cols = [
|
|
125
|
+
"nectar",
|
|
126
|
+
"content_hash",
|
|
127
|
+
"seq",
|
|
128
|
+
"path",
|
|
129
|
+
"filename",
|
|
130
|
+
"ext",
|
|
131
|
+
"size_bytes",
|
|
132
|
+
"mtime_observed",
|
|
133
|
+
"title",
|
|
134
|
+
"description",
|
|
135
|
+
"concepts",
|
|
136
|
+
"embedding",
|
|
137
|
+
"confidence",
|
|
138
|
+
"fingerprint",
|
|
139
|
+
"described_at",
|
|
140
|
+
"describe_model",
|
|
141
|
+
"describe_status",
|
|
142
|
+
"observed_at",
|
|
143
|
+
"org_id",
|
|
144
|
+
"workspace_id",
|
|
145
|
+
"project_id",
|
|
146
|
+
"last_update_date",
|
|
147
|
+
];
|
|
148
|
+
const vals = [
|
|
149
|
+
sLiteral(row.nectar),
|
|
150
|
+
sLiteral(row.contentHash),
|
|
151
|
+
sqlNum(row.seq),
|
|
152
|
+
sLiteral(row.path),
|
|
153
|
+
sLiteral(row.filename),
|
|
154
|
+
sLiteral(row.ext),
|
|
155
|
+
sqlNum(row.sizeBytes),
|
|
156
|
+
sLiteral(row.mtimeObserved),
|
|
157
|
+
// Free-text fields may carry backslashes/newlines; use the E'...' form.
|
|
158
|
+
eLiteral(row.title),
|
|
159
|
+
eLiteral(row.description),
|
|
160
|
+
eLiteral(row.concepts),
|
|
161
|
+
row.embedding !== null ? sqlFloat4Array(row.embedding) : "NULL",
|
|
162
|
+
row.confidence !== null ? sqlNum(row.confidence) : "NULL",
|
|
163
|
+
row.fingerprint !== null ? sLiteral(row.fingerprint) : "NULL",
|
|
164
|
+
sLiteral(row.describedAt),
|
|
165
|
+
sLiteral(row.describeModel),
|
|
166
|
+
sLiteral(row.describeStatus),
|
|
167
|
+
sLiteral(row.observedAt),
|
|
168
|
+
sLiteral(row.orgId),
|
|
169
|
+
sLiteral(row.workspaceId),
|
|
170
|
+
sLiteral(row.projectId),
|
|
171
|
+
sLiteral(row.lastUpdateDate),
|
|
172
|
+
];
|
|
173
|
+
return `INSERT INTO "${SOURCE_GRAPH_VERSIONS_TABLE_NAME}" (${cols.join(", ")}) VALUES (${vals.join(", ")})`;
|
|
174
|
+
}
|
|
175
|
+
/** The `AND`-joined tenancy predicate (`org_id`/`workspace_id`/`project_id`), never omitting `project_id`. */
|
|
176
|
+
function tenancyPredicate(tenancy) {
|
|
177
|
+
return (`org_id = ${sLiteral(tenancy.orgId)} AND ` +
|
|
178
|
+
`workspace_id = ${sLiteral(tenancy.workspaceId)} AND ` +
|
|
179
|
+
`project_id = ${sLiteral(tenancy.projectId)}`);
|
|
180
|
+
}
|
|
181
|
+
export class DeepLakeSourceGraphStore {
|
|
182
|
+
transport;
|
|
183
|
+
constructor(options) {
|
|
184
|
+
this.transport =
|
|
185
|
+
options.transport ??
|
|
186
|
+
new HttpDeepLakeTransport({
|
|
187
|
+
endpoint: options.credentials.apiUrl,
|
|
188
|
+
token: options.credentials.token,
|
|
189
|
+
orgId: options.credentials.orgId,
|
|
190
|
+
workspaceId: options.credentials.workspaceId,
|
|
191
|
+
...(options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Run a READ statement, tolerating a missing-table failure as "no data yet"
|
|
196
|
+
* (an empty result), exactly like honeycomb's read-path guard
|
|
197
|
+
* (`tableExists`, `src/daemon/storage/heal.ts:171-175`) fails OPEN rather
|
|
198
|
+
* than provoking a CREATE. Only the missing-table shape is tolerated; a
|
|
199
|
+
* genuine connection/timeout/permission/syntax failure still propagates.
|
|
200
|
+
* Reads never create a table - only a write does, via `withHeal`.
|
|
201
|
+
*/
|
|
202
|
+
async readTolerant(sql) {
|
|
203
|
+
try {
|
|
204
|
+
return await this.transport.query(sql);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
if (err instanceof TransportError && isMissingTableError(err))
|
|
208
|
+
return [];
|
|
209
|
+
throw err;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Insert-only mint, mirroring honeycomb's SELECT-before-INSERT write
|
|
214
|
+
* pattern (`selectBeforeInsert`, `src/daemon/storage/writes.ts:325-360`)
|
|
215
|
+
* rather than relying on a Deep Lake UNIQUE constraint: the Deep Lake SQL
|
|
216
|
+
* surface this adapter targets has no reliably-enforced uniqueness
|
|
217
|
+
* constraint to lean on, so "does the nectar already exist" is answered by
|
|
218
|
+
* probing first. Both the probe and the insert are heal-aware (a fresh
|
|
219
|
+
* tenancy's tables may not exist yet).
|
|
220
|
+
*
|
|
221
|
+
* After the insert, a best-effort re-verify SELECT counts the rows for the
|
|
222
|
+
* nectar; more than one means a race doubled it. Deep Lake offers no
|
|
223
|
+
* transactions, so this cannot PREVENT a race, only make it observable
|
|
224
|
+
* (the same limitation honeycomb documents). In practice a real race here
|
|
225
|
+
* is a near-zero-probability event - a nectar is a 26-char ULID with 80
|
|
226
|
+
* bits of randomness (`ulid.ts`), not a narrow key space two writers could
|
|
227
|
+
* plausibly collide on - so a failure of the re-verify SELECT itself
|
|
228
|
+
* (e.g. a transient network hiccup immediately after a successful insert)
|
|
229
|
+
* does not fail the whole call; the insert already succeeded and the
|
|
230
|
+
* re-verify is an observability nicety, not the source of truth.
|
|
231
|
+
*/
|
|
232
|
+
async insertIdentity(row) {
|
|
233
|
+
const probeSql = `SELECT nectar FROM "${SOURCE_GRAPH_TABLE_NAME}" WHERE nectar = ${sLiteral(row.nectar)} LIMIT 1`;
|
|
234
|
+
const probeRows = await withHeal(this.transport, SOURCE_GRAPH_TABLE, () => this.transport.query(probeSql));
|
|
235
|
+
if (probeRows.length > 0) {
|
|
236
|
+
throw new Error(`identity already exists for nectar ${row.nectar}`);
|
|
237
|
+
}
|
|
238
|
+
const insertSql = buildInsertIdentitySql(row);
|
|
239
|
+
await withHeal(this.transport, SOURCE_GRAPH_TABLE, () => this.transport.query(insertSql));
|
|
240
|
+
const verifySql = `SELECT nectar FROM "${SOURCE_GRAPH_TABLE_NAME}" WHERE nectar = ${sLiteral(row.nectar)}`;
|
|
241
|
+
const verifyRows = await this.transport.query(verifySql).catch(() => []);
|
|
242
|
+
if (verifyRows.length > 1) {
|
|
243
|
+
throw new Error(`race detected inserting identity for nectar ${row.nectar}: ${verifyRows.length} rows present after insert`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async getIdentity(nectar) {
|
|
247
|
+
const sql = `SELECT * FROM "${SOURCE_GRAPH_TABLE_NAME}" WHERE nectar = ${sLiteral(nectar)} LIMIT 1`;
|
|
248
|
+
const rows = await this.readTolerant(sql);
|
|
249
|
+
return rows.length > 0 ? toIdentityRow(rows[0]) : undefined;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Bump `last_update_date` via an in-place `UPDATE`.
|
|
253
|
+
*
|
|
254
|
+
* KNOWN CAVEAT: honeycomb's own operational history found that an in-place
|
|
255
|
+
* `UPDATE ... WHERE id = ...` does not reliably land on this backend under
|
|
256
|
+
* load - a by-id point read can still return a pre-update snapshot from a
|
|
257
|
+
* stale segment (see honeycomb `src/daemon/storage/catalog/tenancy.ts:475-489`,
|
|
258
|
+
* where the equivalent revoke-by-UPDATE was RETIRED in favor of an
|
|
259
|
+
* append-only version-bump for that reason). `source_graph`'s catalog entry
|
|
260
|
+
* (`schema.ts`) nonetheless declares `writePattern: "update-or-insert"` for
|
|
261
|
+
* this exact field, and `last_update_date` is a low-stakes denormalized
|
|
262
|
+
* "last observed change" timestamp (not an authorization-bearing flag like
|
|
263
|
+
* the retired revoke), so this adapter uses `UPDATE` as declared rather than
|
|
264
|
+
* inventing an append-based scheme the schema does not define. If
|
|
265
|
+
* `last_update_date` staleness proves to be a real problem in practice, a
|
|
266
|
+
* future PRD should revisit this the same way honeycomb did - not this
|
|
267
|
+
* adapter, which mirrors the declared write pattern faithfully.
|
|
268
|
+
*/
|
|
269
|
+
async touchIdentity(nectar, lastUpdateDate) {
|
|
270
|
+
const sql = `UPDATE "${SOURCE_GRAPH_TABLE_NAME}" SET last_update_date = ${sLiteral(lastUpdateDate)} ` +
|
|
271
|
+
`WHERE nectar = ${sLiteral(nectar)}`;
|
|
272
|
+
await withHeal(this.transport, SOURCE_GRAPH_TABLE, () => this.transport.query(sql));
|
|
273
|
+
}
|
|
274
|
+
async appendVersion(row) {
|
|
275
|
+
const insertSql = buildInsertVersionSql(row);
|
|
276
|
+
await withHeal(this.transport, SOURCE_GRAPH_VERSIONS_TABLE, () => this.transport.query(insertSql));
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* The next monotonic seq for a nectar: MAX(seq)+1 over every version row,
|
|
280
|
+
* computed client-side by {@link reduceLatestVersion} rather than trusted
|
|
281
|
+
* to an SQL `ORDER BY`/`LIMIT`/`MAX()` clause. See that function's docblock
|
|
282
|
+
* for why.
|
|
283
|
+
*/
|
|
284
|
+
async nextSeq(nectar) {
|
|
285
|
+
const sql = `SELECT seq FROM "${SOURCE_GRAPH_VERSIONS_TABLE_NAME}" WHERE nectar = ${sLiteral(nectar)}`;
|
|
286
|
+
const rows = await this.readTolerant(sql);
|
|
287
|
+
if (rows.length === 0)
|
|
288
|
+
return 0;
|
|
289
|
+
let maxSeq = toNum(rows[0]?.seq);
|
|
290
|
+
for (const row of rows) {
|
|
291
|
+
const seq = toNum(row.seq);
|
|
292
|
+
if (seq > maxSeq)
|
|
293
|
+
maxSeq = seq;
|
|
294
|
+
}
|
|
295
|
+
return maxSeq + 1;
|
|
296
|
+
}
|
|
297
|
+
/** The latest (MAX seq) version row for a nectar; see {@link reduceLatestVersion}. */
|
|
298
|
+
async latestVersion(nectar) {
|
|
299
|
+
const sql = `SELECT * FROM "${SOURCE_GRAPH_VERSIONS_TABLE_NAME}" WHERE nectar = ${sLiteral(nectar)}`;
|
|
300
|
+
const rows = await this.readTolerant(sql);
|
|
301
|
+
return reduceLatestVersion(rows);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Every nectar's latest version, scoped by the full tenancy predicate
|
|
305
|
+
* (`org_id`/`workspace_id`/`project_id`, PRD-005c). Fetches every identity
|
|
306
|
+
* and every version row for the tenancy and reduces to "latest per nectar"
|
|
307
|
+
* in application code, mirroring `InMemorySourceGraphStore.listLatestVersions`'s
|
|
308
|
+
* iterate-and-reduce shape rather than pushing a `GROUP BY`/window-function
|
|
309
|
+
* reduction into SQL. This is not optimized for a very large per-tenant
|
|
310
|
+
* row count; a future PRD could push the "latest per nectar" reduction into
|
|
311
|
+
* SQL if that becomes the bottleneck. It is not this adapter's job to
|
|
312
|
+
* diverge from the reference in-memory implementation's behavior to chase
|
|
313
|
+
* that optimization prematurely.
|
|
314
|
+
*/
|
|
315
|
+
async listLatestVersions(tenancy) {
|
|
316
|
+
const predicate = tenancyPredicate(tenancy);
|
|
317
|
+
const identitiesSql = `SELECT * FROM "${SOURCE_GRAPH_TABLE_NAME}" WHERE ${predicate}`;
|
|
318
|
+
const versionsSql = `SELECT * FROM "${SOURCE_GRAPH_VERSIONS_TABLE_NAME}" WHERE ${predicate}`;
|
|
319
|
+
const [identityRows, versionRows] = await Promise.all([
|
|
320
|
+
this.readTolerant(identitiesSql),
|
|
321
|
+
this.readTolerant(versionsSql),
|
|
322
|
+
]);
|
|
323
|
+
// Group raw version rows by nectar first, then reduce each group with the
|
|
324
|
+
// SAME `reduceLatestVersion` helper `nextSeq`/`latestVersion` use, so
|
|
325
|
+
// there is exactly one "pick the highest seq" implementation in this file.
|
|
326
|
+
const rowsByNectar = new Map();
|
|
327
|
+
for (const raw of versionRows) {
|
|
328
|
+
const nectar = toStr(raw.nectar);
|
|
329
|
+
const group = rowsByNectar.get(nectar);
|
|
330
|
+
if (group === undefined)
|
|
331
|
+
rowsByNectar.set(nectar, [raw]);
|
|
332
|
+
else
|
|
333
|
+
group.push(raw);
|
|
334
|
+
}
|
|
335
|
+
const out = [];
|
|
336
|
+
for (const raw of identityRows) {
|
|
337
|
+
const identity = toIdentityRow(raw);
|
|
338
|
+
const group = rowsByNectar.get(identity.nectar);
|
|
339
|
+
const version = group !== undefined ? reduceLatestVersion(group) : undefined;
|
|
340
|
+
if (version !== undefined)
|
|
341
|
+
out.push({ identity, version });
|
|
342
|
+
}
|
|
343
|
+
return out;
|
|
344
|
+
}
|
|
345
|
+
async latestVersionByPath(tenancy, path) {
|
|
346
|
+
const all = await this.listLatestVersions(tenancy);
|
|
347
|
+
return all.find((lv) => lv.version.path === path);
|
|
348
|
+
}
|
|
349
|
+
async latestVersionByHash(tenancy, contentHash) {
|
|
350
|
+
const all = await this.listLatestVersions(tenancy);
|
|
351
|
+
return all.find((lv) => lv.version.contentHash === contentHash);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Delete a nectar (identity + versions) scoped to `tenancy`, the SOLE deletion
|
|
355
|
+
* path (`prune --confirm`, PRD-006d). Both DELETE statements carry the full
|
|
356
|
+
* tenancy predicate (`org_id`/`workspace_id`/`project_id`, never omitting
|
|
357
|
+
* `project_id`) alongside the nectar key, so a nectar minted under another
|
|
358
|
+
* project is never removed by a delete issued in this tenancy (AC-20).
|
|
359
|
+
*
|
|
360
|
+
* The delete path deliberately does NOT go through `withHeal`: a missing table
|
|
361
|
+
* means there is nothing to delete, so it is a harmless no-op, NOT a reason to
|
|
362
|
+
* CREATE a fresh (empty) table. `deleteTolerant` therefore swallows only the
|
|
363
|
+
* missing-table transport error (via `isMissingTableError`, the same
|
|
364
|
+
* classification the read path uses) and lets every other failure propagate.
|
|
365
|
+
*/
|
|
366
|
+
async deleteNectar(tenancy, nectar) {
|
|
367
|
+
const predicate = tenancyPredicate(tenancy);
|
|
368
|
+
const nectarKey = sLiteral(nectar);
|
|
369
|
+
const deleteVersionsSql = `DELETE FROM "${SOURCE_GRAPH_VERSIONS_TABLE_NAME}" WHERE nectar = ${nectarKey} AND ${predicate}`;
|
|
370
|
+
const deleteIdentitySql = `DELETE FROM "${SOURCE_GRAPH_TABLE_NAME}" WHERE nectar = ${nectarKey} AND ${predicate}`;
|
|
371
|
+
await this.deleteTolerant(deleteVersionsSql);
|
|
372
|
+
await this.deleteTolerant(deleteIdentitySql);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Run a DELETE, tolerating a missing-table failure as "nothing to delete" (a
|
|
376
|
+
* no-op). Never creates a table. Any other transport failure propagates.
|
|
377
|
+
*/
|
|
378
|
+
async deleteTolerant(sql) {
|
|
379
|
+
try {
|
|
380
|
+
await this.transport.query(sql);
|
|
381
|
+
}
|
|
382
|
+
catch (err) {
|
|
383
|
+
if (err instanceof TransportError && isMissingTableError(err))
|
|
384
|
+
return;
|
|
385
|
+
throw err;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=deeplake-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-store.js","sourceRoot":"","sources":["../../src/source-graph/deeplake-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal Deep Lake HTTP transport for hivenectar (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-0002, hivenectar is an independent daemon that reaches Deep Lake
|
|
5
|
+
* over the network through its OWN client, never by importing the honeycomb
|
|
6
|
+
* runtime in-process. This module mirrors the shape of honeycomb's
|
|
7
|
+
* `HttpDeepLakeTransport` (`src/daemon/storage/transport.ts`), scoped down to
|
|
8
|
+
* exactly what the two source-graph tables need: one method that posts a SQL
|
|
9
|
+
* statement to the Deep Lake query endpoint and returns rows, or throws a
|
|
10
|
+
* typed `TransportError`.
|
|
11
|
+
*
|
|
12
|
+
* Node built-ins only (`fetch` is global on Node >=22); no new runtime
|
|
13
|
+
* dependency, matching hivenectar's zero-runtime-dependency rule (AGENTS.md).
|
|
14
|
+
*
|
|
15
|
+
* The transport is deliberately thin: no retry, no concurrency bounding.
|
|
16
|
+
* Hivenectar's write volume (one file-registration event at a time, from a
|
|
17
|
+
* single daemon worker loop per `worker.ts`) does not need honeycomb's
|
|
18
|
+
* `Semaphore(5)` + 429/5xx retry client layer that exists to bound a
|
|
19
|
+
* high-concurrency multi-harness workload; a future PRD can add that layer
|
|
20
|
+
* here without changing this transport's contract if hivenectar's write
|
|
21
|
+
* volume grows to need it.
|
|
22
|
+
*/
|
|
23
|
+
/** What kind of failure the transport hit. */
|
|
24
|
+
export type TransportErrorKind = "query" | "connection" | "timeout";
|
|
25
|
+
/**
|
|
26
|
+
* A typed failure raised by {@link HttpDeepLakeTransport}. `status` carries
|
|
27
|
+
* the HTTP status for query failures (e.g. 404, 500) so heal logic
|
|
28
|
+
* (`deeplake-heal.ts`) can classify the failure message.
|
|
29
|
+
*/
|
|
30
|
+
export declare class TransportError extends Error {
|
|
31
|
+
readonly kind: TransportErrorKind;
|
|
32
|
+
readonly status?: number;
|
|
33
|
+
constructor(kind: TransportErrorKind, message: string, status?: number);
|
|
34
|
+
}
|
|
35
|
+
/** One row of a Deep Lake query result: column name -> raw JSON value. */
|
|
36
|
+
export type DeepLakeRow = Record<string, unknown>;
|
|
37
|
+
/** Header name Deep Lake reads to attribute traffic by client family. */
|
|
38
|
+
export declare const DEEPLAKE_CLIENT_HEADER = "X-Deeplake-Client";
|
|
39
|
+
/** Header name Deep Lake reads to scope a request to an org partition. */
|
|
40
|
+
export declare const DEEPLAKE_ORG_HEADER = "X-Activeloop-Org-Id";
|
|
41
|
+
/** Default per-statement timeout when the caller does not override it. */
|
|
42
|
+
export declare const DEFAULT_TRANSPORT_TIMEOUT_MS = 15000;
|
|
43
|
+
/** Fixed connection details a transport instance targets for its lifetime. */
|
|
44
|
+
export interface DeepLakeTransportConfig {
|
|
45
|
+
/** Deep Lake HTTP query endpoint, e.g. https://api.deeplake.ai. */
|
|
46
|
+
readonly endpoint: string;
|
|
47
|
+
/** Bearer token. Never logged in full; see `deeplake-credentials.ts#redactToken`. */
|
|
48
|
+
readonly token: string;
|
|
49
|
+
/** Org id sent as a request header so Deep Lake enforces tenancy. */
|
|
50
|
+
readonly orgId: string;
|
|
51
|
+
/** Workspace/partition the statement targets (the URL path segment). */
|
|
52
|
+
readonly workspaceId: string;
|
|
53
|
+
/** Per-statement timeout in ms; defaults to {@link DEFAULT_TRANSPORT_TIMEOUT_MS}. */
|
|
54
|
+
readonly timeoutMs?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Real HTTP transport against the Deep Lake SQL endpoint. POSTs
|
|
58
|
+
* `{ query: sql }` to `${endpoint}/workspaces/${workspaceId}/tables/query`
|
|
59
|
+
* with a bearer token, the org header, and a client-family header, exactly
|
|
60
|
+
* mirroring honeycomb's `HttpDeepLakeTransport.query` shape. Maps a fetch
|
|
61
|
+
* failure / abort / non-ok response into a typed `TransportError` the heal
|
|
62
|
+
* logic and the store can branch on.
|
|
63
|
+
*/
|
|
64
|
+
export declare class HttpDeepLakeTransport {
|
|
65
|
+
private readonly endpoint;
|
|
66
|
+
private readonly token;
|
|
67
|
+
private readonly orgId;
|
|
68
|
+
private readonly workspaceId;
|
|
69
|
+
private readonly timeoutMs;
|
|
70
|
+
constructor(config: DeepLakeTransportConfig);
|
|
71
|
+
/** Run one SQL statement against the configured workspace. */
|
|
72
|
+
query(sql: string): Promise<DeepLakeRow[]>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=deeplake-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-transport.d.ts","sourceRoot":"","sources":["../../src/source-graph/deeplake-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAMvE;AAED,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAC1D,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,uBAAuB;IAQ3C,8DAA8D;IACxD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAoCjD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal Deep Lake HTTP transport for hivenectar (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-0002, hivenectar is an independent daemon that reaches Deep Lake
|
|
5
|
+
* over the network through its OWN client, never by importing the honeycomb
|
|
6
|
+
* runtime in-process. This module mirrors the shape of honeycomb's
|
|
7
|
+
* `HttpDeepLakeTransport` (`src/daemon/storage/transport.ts`), scoped down to
|
|
8
|
+
* exactly what the two source-graph tables need: one method that posts a SQL
|
|
9
|
+
* statement to the Deep Lake query endpoint and returns rows, or throws a
|
|
10
|
+
* typed `TransportError`.
|
|
11
|
+
*
|
|
12
|
+
* Node built-ins only (`fetch` is global on Node >=22); no new runtime
|
|
13
|
+
* dependency, matching hivenectar's zero-runtime-dependency rule (AGENTS.md).
|
|
14
|
+
*
|
|
15
|
+
* The transport is deliberately thin: no retry, no concurrency bounding.
|
|
16
|
+
* Hivenectar's write volume (one file-registration event at a time, from a
|
|
17
|
+
* single daemon worker loop per `worker.ts`) does not need honeycomb's
|
|
18
|
+
* `Semaphore(5)` + 429/5xx retry client layer that exists to bound a
|
|
19
|
+
* high-concurrency multi-harness workload; a future PRD can add that layer
|
|
20
|
+
* here without changing this transport's contract if hivenectar's write
|
|
21
|
+
* volume grows to need it.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* A typed failure raised by {@link HttpDeepLakeTransport}. `status` carries
|
|
25
|
+
* the HTTP status for query failures (e.g. 404, 500) so heal logic
|
|
26
|
+
* (`deeplake-heal.ts`) can classify the failure message.
|
|
27
|
+
*/
|
|
28
|
+
export class TransportError extends Error {
|
|
29
|
+
kind;
|
|
30
|
+
status;
|
|
31
|
+
constructor(kind, message, status) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = "TransportError";
|
|
34
|
+
this.kind = kind;
|
|
35
|
+
if (status !== undefined)
|
|
36
|
+
this.status = status;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Header name Deep Lake reads to attribute traffic by client family. */
|
|
40
|
+
export const DEEPLAKE_CLIENT_HEADER = "X-Deeplake-Client";
|
|
41
|
+
/** Header name Deep Lake reads to scope a request to an org partition. */
|
|
42
|
+
export const DEEPLAKE_ORG_HEADER = "X-Activeloop-Org-Id";
|
|
43
|
+
/** Default per-statement timeout when the caller does not override it. */
|
|
44
|
+
export const DEFAULT_TRANSPORT_TIMEOUT_MS = 15_000;
|
|
45
|
+
/**
|
|
46
|
+
* Real HTTP transport against the Deep Lake SQL endpoint. POSTs
|
|
47
|
+
* `{ query: sql }` to `${endpoint}/workspaces/${workspaceId}/tables/query`
|
|
48
|
+
* with a bearer token, the org header, and a client-family header, exactly
|
|
49
|
+
* mirroring honeycomb's `HttpDeepLakeTransport.query` shape. Maps a fetch
|
|
50
|
+
* failure / abort / non-ok response into a typed `TransportError` the heal
|
|
51
|
+
* logic and the store can branch on.
|
|
52
|
+
*/
|
|
53
|
+
export class HttpDeepLakeTransport {
|
|
54
|
+
endpoint;
|
|
55
|
+
token;
|
|
56
|
+
orgId;
|
|
57
|
+
workspaceId;
|
|
58
|
+
timeoutMs;
|
|
59
|
+
constructor(config) {
|
|
60
|
+
this.endpoint = config.endpoint.replace(/\/+$/, "");
|
|
61
|
+
this.token = config.token;
|
|
62
|
+
this.orgId = config.orgId;
|
|
63
|
+
this.workspaceId = config.workspaceId;
|
|
64
|
+
this.timeoutMs = config.timeoutMs ?? DEFAULT_TRANSPORT_TIMEOUT_MS;
|
|
65
|
+
}
|
|
66
|
+
/** Run one SQL statement against the configured workspace. */
|
|
67
|
+
async query(sql) {
|
|
68
|
+
const controller = new AbortController();
|
|
69
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
70
|
+
let resp;
|
|
71
|
+
try {
|
|
72
|
+
resp = await fetch(`${this.endpoint}/workspaces/${encodeURIComponent(this.workspaceId)}/tables/query`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
Authorization: `Bearer ${this.token}`,
|
|
76
|
+
"Content-Type": "application/json",
|
|
77
|
+
[DEEPLAKE_ORG_HEADER]: this.orgId,
|
|
78
|
+
[DEEPLAKE_CLIENT_HEADER]: "hivenectar",
|
|
79
|
+
},
|
|
80
|
+
signal: controller.signal,
|
|
81
|
+
body: JSON.stringify({ query: sql }),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
// AbortError fires when our own timeout aborts the request. Map it to
|
|
86
|
+
// the timeout kind so callers can distinguish it from a dropped socket.
|
|
87
|
+
if (e instanceof Error && e.name === "AbortError") {
|
|
88
|
+
throw new TransportError("timeout", `request aborted after ${this.timeoutMs}ms`);
|
|
89
|
+
}
|
|
90
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
91
|
+
throw new TransportError("connection", message);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
clearTimeout(timer);
|
|
95
|
+
}
|
|
96
|
+
if (!resp.ok) {
|
|
97
|
+
const text = await resp.text().catch(() => "");
|
|
98
|
+
throw new TransportError("query", `${resp.status}: ${text.slice(0, 200)}`, resp.status);
|
|
99
|
+
}
|
|
100
|
+
const raw = (await resp.json().catch(() => null));
|
|
101
|
+
if (!raw?.rows || !raw?.columns)
|
|
102
|
+
return [];
|
|
103
|
+
const columns = raw.columns;
|
|
104
|
+
return raw.rows.map((row) => Object.fromEntries(columns.map((col, i) => [col, row[i]])));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=deeplake-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-transport.js","sourceRoot":"","sources":["../../src/source-graph/deeplake-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/source-graph/hash.ts"],"names":[],"mappings":"AAQA,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content hashing for the Source Graph (PRD-005 / PRD-006).
|
|
3
|
+
*
|
|
4
|
+
* `content_hash` is the sha256 of file content at observation, and the composite
|
|
5
|
+
* key part 2 on `source_graph_versions`. Node built-ins only (`node:crypto`).
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
8
|
+
/** Lowercase hex sha256 of the given data. */
|
|
9
|
+
export function sha256Hex(data) {
|
|
10
|
+
return createHash("sha256").update(data).digest("hex");
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/source-graph/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,IAAyB;IACjD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC"}
|