@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal Deep Lake HTTP transport for nectar (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-0002, nectar 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 hive-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 nectar's zero-runtime-dependency rule (AGENTS.md).
|
|
14
|
+
*
|
|
15
|
+
* The transport is deliberately thin: no retry, no concurrency bounding.
|
|
16
|
+
* Nectar'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 nectar'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
|
+
/**
|
|
67
|
+
* Run one SQL statement against the configured workspace.
|
|
68
|
+
*
|
|
69
|
+
* Transient failures (HTTP 429 and 5xx, e.g. the backend's intermittent
|
|
70
|
+
* 'failed to get database connection' 500) are retried with bounded
|
|
71
|
+
* exponential backoff plus jitter before the TransportError propagates:
|
|
72
|
+
* a single upstream blip must not abort a minutes-long brood or an
|
|
73
|
+
* enricher cycle. Non-transient failures (4xx other than 429: schema
|
|
74
|
+
* errors, bad SQL, auth) fail fast on the first attempt so heal and
|
|
75
|
+
* fail-soft classification see them unchanged.
|
|
76
|
+
*/
|
|
77
|
+
async query(sql) {
|
|
78
|
+
let lastTransient = null;
|
|
79
|
+
for (let attempt = 0; attempt < QUERY_TRANSIENT_MAX_ATTEMPTS; attempt += 1) {
|
|
80
|
+
if (attempt > 0) {
|
|
81
|
+
const backoff = QUERY_TRANSIENT_BASE_BACKOFF_MS * 2 ** (attempt - 1);
|
|
82
|
+
await new Promise((resolve) => setTimeout(resolve, backoff + Math.random() * backoff));
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
return await this.queryOnce(sql);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (err instanceof TransportError &&
|
|
89
|
+
err.kind === "query" &&
|
|
90
|
+
err.status !== undefined &&
|
|
91
|
+
(err.status === 429 || err.status >= 500)) {
|
|
92
|
+
lastTransient = err;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// lastTransient is always set when the loop exhausts.
|
|
99
|
+
throw lastTransient ?? new TransportError("query", "transient retry loop exhausted without an error");
|
|
100
|
+
}
|
|
101
|
+
async queryOnce(sql) {
|
|
102
|
+
const controller = new AbortController();
|
|
103
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
104
|
+
let resp;
|
|
105
|
+
try {
|
|
106
|
+
resp = await fetch(`${this.endpoint}/workspaces/${encodeURIComponent(this.workspaceId)}/tables/query`, {
|
|
107
|
+
method: "POST",
|
|
108
|
+
headers: {
|
|
109
|
+
Authorization: `Bearer ${this.token}`,
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
[DEEPLAKE_ORG_HEADER]: this.orgId,
|
|
112
|
+
[DEEPLAKE_CLIENT_HEADER]: "nectar",
|
|
113
|
+
},
|
|
114
|
+
signal: controller.signal,
|
|
115
|
+
body: JSON.stringify({ query: sql }),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
// AbortError fires when our own timeout aborts the request. Map it to
|
|
120
|
+
// the timeout kind so callers can distinguish it from a dropped socket.
|
|
121
|
+
if (e instanceof Error && e.name === "AbortError") {
|
|
122
|
+
throw new TransportError("timeout", `request aborted after ${this.timeoutMs}ms`);
|
|
123
|
+
}
|
|
124
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
125
|
+
throw new TransportError("connection", message);
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
clearTimeout(timer);
|
|
129
|
+
}
|
|
130
|
+
if (!resp.ok) {
|
|
131
|
+
const text = await resp.text().catch(() => "");
|
|
132
|
+
throw new TransportError("query", `${resp.status}: ${text.slice(0, 200)}`, resp.status);
|
|
133
|
+
}
|
|
134
|
+
const raw = (await resp.json().catch(() => null));
|
|
135
|
+
if (!raw?.rows || !raw?.columns)
|
|
136
|
+
return [];
|
|
137
|
+
const columns = raw.columns;
|
|
138
|
+
return raw.rows.map((row) => Object.fromEntries(columns.map((col, i) => [col, row[i]])));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** Bounded attempts for transient (429/5xx) query failures. */
|
|
142
|
+
export const QUERY_TRANSIENT_MAX_ATTEMPTS = 4;
|
|
143
|
+
/** First-retry backoff; doubles per attempt, with up-to-equal jitter added. */
|
|
144
|
+
export const QUERY_TRANSIENT_BASE_BACKOFF_MS = 500;
|
|
145
|
+
//# sourceMappingURL=deeplake-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deeplake-transport.js","sourceRoot":"","sources":["../../src/hive-graph/deeplake-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hive-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 Hive 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 `hive_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/hive-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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory HiveGraphStore adapter (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* A complete, correct implementation of the store seam backed by plain Maps.
|
|
5
|
+
* It is the store the file-registration ladder (PRD-006), brooding (PRD-007),
|
|
6
|
+
* and the search engine (PRD-012) run against in tests and local dev. The Deep
|
|
7
|
+
* Lake adapter (the durable substrate, reached through nectar's own client
|
|
8
|
+
* per ADR-0002) implements the same interface and is a drop-in replacement; no
|
|
9
|
+
* consumer changes when it lands.
|
|
10
|
+
*
|
|
11
|
+
* "latest version" is always MAX(seq) for a nectar. All reads are tenancy-scoped
|
|
12
|
+
* (org+workspace+project); project_id is a plain column predicate here, exactly
|
|
13
|
+
* as the soft-filter contract (PRD-005c) specifies.
|
|
14
|
+
*/
|
|
15
|
+
import type { HiveGraphRow, HiveGraphVersionRow, Tenancy } from "./model.js";
|
|
16
|
+
import type { LatestVersion, HiveGraphStore } from "./store.js";
|
|
17
|
+
export declare class InMemoryHiveGraphStore implements HiveGraphStore {
|
|
18
|
+
private readonly identities;
|
|
19
|
+
/** nectar -> version rows in append order (seq ascending). */
|
|
20
|
+
private readonly versions;
|
|
21
|
+
insertIdentity(row: HiveGraphRow): void;
|
|
22
|
+
getIdentity(nectar: string): HiveGraphRow | undefined;
|
|
23
|
+
touchIdentity(nectar: string, lastUpdateDate: string): void;
|
|
24
|
+
appendVersion(row: HiveGraphVersionRow): void;
|
|
25
|
+
nextSeq(nectar: string): number;
|
|
26
|
+
latestVersion(nectar: string): HiveGraphVersionRow | undefined;
|
|
27
|
+
listLatestVersions(tenancy: Tenancy): LatestVersion[];
|
|
28
|
+
listLatestDescribedVersions(tenancy: Tenancy): LatestVersion[];
|
|
29
|
+
/** The highest-seq version whose `describeStatus` is `described`, or undefined. */
|
|
30
|
+
private latestDescribedVersion;
|
|
31
|
+
latestVersionByPath(tenancy: Tenancy, path: string): LatestVersion | undefined;
|
|
32
|
+
latestVersionByHash(tenancy: Tenancy, contentHash: string): LatestVersion | undefined;
|
|
33
|
+
deleteNectar(tenancy: Tenancy, nectar: string): void;
|
|
34
|
+
/** Every identity row in scope, including one with zero version rows (PRD-018d repair sweep). */
|
|
35
|
+
listIdentities(tenancy: Tenancy): HiveGraphRow[];
|
|
36
|
+
/** Every nectar with at least one version row in scope, including one with NO identity row (CodeRabbit PR-18 finding #8 repair sweep). Scoped via the version row's own tenancy columns, since an orphan has no identity to scope against. */
|
|
37
|
+
listVersionNectars(tenancy: Tenancy): string[];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/hive-graph/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IAErE,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAOvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKrD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAK3D,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAM7C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQ/B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAQ9D,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE;IAUrD,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE;IAU9D,mFAAmF;IACnF,OAAO,CAAC,sBAAsB;IAW9B,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAO9E,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOrF,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQpD,iGAAiG;IACjG,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE;IAQhD,8OAA8O;IAC9O,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE;CAQ/C"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { inTenancy } from "./model.js";
|
|
2
|
+
export class InMemoryHiveGraphStore {
|
|
3
|
+
identities = new Map();
|
|
4
|
+
/** nectar -> version rows in append order (seq ascending). */
|
|
5
|
+
versions = new Map();
|
|
6
|
+
insertIdentity(row) {
|
|
7
|
+
if (this.identities.has(row.nectar)) {
|
|
8
|
+
throw new Error(`identity already exists for nectar ${row.nectar}`);
|
|
9
|
+
}
|
|
10
|
+
this.identities.set(row.nectar, { ...row });
|
|
11
|
+
}
|
|
12
|
+
getIdentity(nectar) {
|
|
13
|
+
const row = this.identities.get(nectar);
|
|
14
|
+
return row ? { ...row } : undefined;
|
|
15
|
+
}
|
|
16
|
+
touchIdentity(nectar, lastUpdateDate) {
|
|
17
|
+
const row = this.identities.get(nectar);
|
|
18
|
+
if (row !== undefined)
|
|
19
|
+
row.lastUpdateDate = lastUpdateDate;
|
|
20
|
+
}
|
|
21
|
+
appendVersion(row) {
|
|
22
|
+
const list = this.versions.get(row.nectar) ?? [];
|
|
23
|
+
list.push({ ...row });
|
|
24
|
+
this.versions.set(row.nectar, list);
|
|
25
|
+
}
|
|
26
|
+
nextSeq(nectar) {
|
|
27
|
+
const list = this.versions.get(nectar);
|
|
28
|
+
if (list === undefined || list.length === 0)
|
|
29
|
+
return 0;
|
|
30
|
+
let max = -1;
|
|
31
|
+
for (const v of list)
|
|
32
|
+
if (v.seq > max)
|
|
33
|
+
max = v.seq;
|
|
34
|
+
return max + 1;
|
|
35
|
+
}
|
|
36
|
+
latestVersion(nectar) {
|
|
37
|
+
const list = this.versions.get(nectar);
|
|
38
|
+
if (list === undefined || list.length === 0)
|
|
39
|
+
return undefined;
|
|
40
|
+
let latest = list[0];
|
|
41
|
+
for (const v of list)
|
|
42
|
+
if (v.seq > latest.seq)
|
|
43
|
+
latest = v;
|
|
44
|
+
return { ...latest };
|
|
45
|
+
}
|
|
46
|
+
listLatestVersions(tenancy) {
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const [nectar, identity] of this.identities) {
|
|
49
|
+
if (!inTenancy(identity, tenancy))
|
|
50
|
+
continue;
|
|
51
|
+
const version = this.latestVersion(nectar);
|
|
52
|
+
if (version !== undefined)
|
|
53
|
+
out.push({ identity: { ...identity }, version });
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
listLatestDescribedVersions(tenancy) {
|
|
58
|
+
const out = [];
|
|
59
|
+
for (const [nectar, identity] of this.identities) {
|
|
60
|
+
if (!inTenancy(identity, tenancy))
|
|
61
|
+
continue;
|
|
62
|
+
const described = this.latestDescribedVersion(nectar);
|
|
63
|
+
if (described !== undefined)
|
|
64
|
+
out.push({ identity: { ...identity }, version: described });
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
/** The highest-seq version whose `describeStatus` is `described`, or undefined. */
|
|
69
|
+
latestDescribedVersion(nectar) {
|
|
70
|
+
const list = this.versions.get(nectar);
|
|
71
|
+
if (list === undefined || list.length === 0)
|
|
72
|
+
return undefined;
|
|
73
|
+
let latest;
|
|
74
|
+
for (const v of list) {
|
|
75
|
+
if (v.describeStatus !== "described")
|
|
76
|
+
continue;
|
|
77
|
+
if (latest === undefined || v.seq > latest.seq)
|
|
78
|
+
latest = v;
|
|
79
|
+
}
|
|
80
|
+
return latest === undefined ? undefined : { ...latest };
|
|
81
|
+
}
|
|
82
|
+
latestVersionByPath(tenancy, path) {
|
|
83
|
+
for (const lv of this.listLatestVersions(tenancy)) {
|
|
84
|
+
if (lv.version.path === path)
|
|
85
|
+
return lv;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
latestVersionByHash(tenancy, contentHash) {
|
|
90
|
+
for (const lv of this.listLatestVersions(tenancy)) {
|
|
91
|
+
if (lv.version.contentHash === contentHash)
|
|
92
|
+
return lv;
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
deleteNectar(tenancy, nectar) {
|
|
97
|
+
const identity = this.identities.get(nectar);
|
|
98
|
+
if (identity === undefined)
|
|
99
|
+
return; // unknown nectar: no-op
|
|
100
|
+
if (!inTenancy(identity, tenancy))
|
|
101
|
+
return; // refuse a cross-project delete (AC-20)
|
|
102
|
+
this.identities.delete(nectar);
|
|
103
|
+
this.versions.delete(nectar);
|
|
104
|
+
}
|
|
105
|
+
/** Every identity row in scope, including one with zero version rows (PRD-018d repair sweep). */
|
|
106
|
+
listIdentities(tenancy) {
|
|
107
|
+
const out = [];
|
|
108
|
+
for (const identity of this.identities.values()) {
|
|
109
|
+
if (inTenancy(identity, tenancy))
|
|
110
|
+
out.push({ ...identity });
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/** Every nectar with at least one version row in scope, including one with NO identity row (CodeRabbit PR-18 finding #8 repair sweep). Scoped via the version row's own tenancy columns, since an orphan has no identity to scope against. */
|
|
115
|
+
listVersionNectars(tenancy) {
|
|
116
|
+
const out = [];
|
|
117
|
+
for (const [nectar, list] of this.versions) {
|
|
118
|
+
const first = list[0];
|
|
119
|
+
if (first !== undefined && inTenancy(first, tenancy))
|
|
120
|
+
out.push(nectar);
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/hive-graph/memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Hive Graph domain model (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Two tables, one purpose each, straight from the corpus
|
|
5
|
+
* (`library/knowledge/private/data/hive-graph-schema.md`):
|
|
6
|
+
* - `hive_graph` one row per logical file, keyed by nectar (ULID). Identity + provenance.
|
|
7
|
+
* - `hive_graph_versions` append-only, keyed by (nectar, content_hash). Content + lazy description.
|
|
8
|
+
*
|
|
9
|
+
* These types are the frozen contract the store adapters (PRD-005) and the
|
|
10
|
+
* file-registration ladder (PRD-006) both build against. Column names match the
|
|
11
|
+
* DDL exactly so the future Deep Lake adapter maps 1:1.
|
|
12
|
+
*/
|
|
13
|
+
/** Tenancy triple. Scope is org+workspace at the storage layer; project_id is a soft column filter (PRD-005c / decision #3). */
|
|
14
|
+
export interface Tenancy {
|
|
15
|
+
readonly orgId: string;
|
|
16
|
+
readonly workspaceId: string;
|
|
17
|
+
readonly projectId: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* True when a row's tenancy columns match `t` exactly on all three of
|
|
21
|
+
* `orgId`/`workspaceId`/`projectId`. The single scoping predicate re-used by
|
|
22
|
+
* the in-memory store, the ladder's carry guard, and the delete/prune/review
|
|
23
|
+
* paths so no identity mutation ever crosses a project boundary (AC-20).
|
|
24
|
+
*/
|
|
25
|
+
export declare function inTenancy(row: {
|
|
26
|
+
orgId: string;
|
|
27
|
+
workspaceId: string;
|
|
28
|
+
projectId: string;
|
|
29
|
+
}, t: Tenancy): boolean;
|
|
30
|
+
/** `hive_graph.kind` discriminator. Only `file` is minted in v1; `directory` reserves the namespace (schema doc YAGNI note). */
|
|
31
|
+
export type NectarKind = "file" | "directory";
|
|
32
|
+
/**
|
|
33
|
+
* `hive_graph_versions.describe_status`. Exactly the six values in the schema
|
|
34
|
+
* doc column table (including `skipped-deleted`, the decisions-doc #14 addition).
|
|
35
|
+
*/
|
|
36
|
+
export type DescribeStatus = "pending" | "described" | "failed" | "skipped-too-large" | "skipped-binary" | "skipped-deleted";
|
|
37
|
+
export declare const DESCRIBE_STATUSES: readonly DescribeStatus[];
|
|
38
|
+
/** A row of `hive_graph` (identity + provenance only; no content, no description). */
|
|
39
|
+
export interface HiveGraphRow {
|
|
40
|
+
/** 26-char ULID, minted once, never derived from content. Primary key. */
|
|
41
|
+
nectar: string;
|
|
42
|
+
kind: NectarKind;
|
|
43
|
+
/** ISO 8601 minting time (the decoded ULID timestamp). */
|
|
44
|
+
createdAt: string;
|
|
45
|
+
/** Copy-paste provenance; empty for an originally-minted file. */
|
|
46
|
+
derivedFromNectar: string;
|
|
47
|
+
/** Content hash at the fork point; empty unless derived. */
|
|
48
|
+
forkContentHash: string;
|
|
49
|
+
orgId: string;
|
|
50
|
+
workspaceId: string;
|
|
51
|
+
projectId: string;
|
|
52
|
+
/** Denormalized "last observed change" timestamp; bumped on every appended version. */
|
|
53
|
+
lastUpdateDate: string;
|
|
54
|
+
}
|
|
55
|
+
/** A row of `hive_graph_versions` (one per observed content state of a nectar). */
|
|
56
|
+
export interface HiveGraphVersionRow {
|
|
57
|
+
/** FK -> hive_graph.nectar. Composite key part 1. */
|
|
58
|
+
nectar: string;
|
|
59
|
+
/** sha256 of file content at observation. Composite key part 2. */
|
|
60
|
+
contentHash: string;
|
|
61
|
+
/** Monotonic per-nectar version counter (0, 1, 2, ...). "latest" = MAX(seq). */
|
|
62
|
+
seq: number;
|
|
63
|
+
/** Repo-relative path (forward slashes) at observation time. Mutable across a nectar's versions -> records moves. */
|
|
64
|
+
path: string;
|
|
65
|
+
filename: string;
|
|
66
|
+
/** Lowercased extension without the dot (`ts`, `md`, `json`). */
|
|
67
|
+
ext: string;
|
|
68
|
+
sizeBytes: number;
|
|
69
|
+
/** File mtime at observation (ISO 8601). Not authoritative; a fast-path cache key only. */
|
|
70
|
+
mtimeObserved: string;
|
|
71
|
+
/** LLM-minted, <=80 chars. Empty while pending. */
|
|
72
|
+
title: string;
|
|
73
|
+
/** LLM-minted, 1-3 sentences. Empty while pending. */
|
|
74
|
+
description: string;
|
|
75
|
+
/** JSON-encoded string array, e.g. '["auth","session"]'. Defaults to '[]'. */
|
|
76
|
+
concepts: string;
|
|
77
|
+
/** 768-dim vector over title+description. Null until enriched (or if embeddings off). */
|
|
78
|
+
embedding: number[] | null;
|
|
79
|
+
/** Set only on ladder step-4 (TLSH fuzzy) rows: 1 - normalizedTLSHDistance. Null otherwise. */
|
|
80
|
+
confidence: number | null;
|
|
81
|
+
/**
|
|
82
|
+
* TLSH-family fingerprint of the content (the `computeFingerprint` "H1"-prefixed
|
|
83
|
+
* digest); set on every content-bearing row, consulted by ladder step 4 for
|
|
84
|
+
* missing files so cold-catch-up fuzzy matching survives a daemon restart. Null
|
|
85
|
+
* on pre-fingerprint rows (they self-heal on next observation).
|
|
86
|
+
*/
|
|
87
|
+
fingerprint: string | null;
|
|
88
|
+
describedAt: string;
|
|
89
|
+
describeModel: string;
|
|
90
|
+
/**
|
|
91
|
+
* The embedding model that produced {@link embedding} (PRD-018i / NEC-018).
|
|
92
|
+
* Null when the row carries no embedding (`embedding === null`) or was written
|
|
93
|
+
* before this column existed (the catalog heal path backfills old rows as
|
|
94
|
+
* null). Additive nullable column; the ONLY schema change in PRD-018.
|
|
95
|
+
*/
|
|
96
|
+
embedModel?: string | null;
|
|
97
|
+
describeStatus: DescribeStatus;
|
|
98
|
+
/** Timestamp the version row was appended (distinct from mtimeObserved). */
|
|
99
|
+
observedAt: string;
|
|
100
|
+
orgId: string;
|
|
101
|
+
workspaceId: string;
|
|
102
|
+
projectId: string;
|
|
103
|
+
lastUpdateDate: string;
|
|
104
|
+
}
|
|
105
|
+
/** The embedding contract: 768 dims, tied to the FLOAT4[] column (ADR-0001 / PRD-014). A different dimension is rejected upstream. */
|
|
106
|
+
export declare const EMBED_DIMS = 768;
|
|
107
|
+
/** True if a vector honors the 768-dim contract. Recall's `embed.dim_rejected` guard discards anything else. */
|
|
108
|
+
export declare function isValidEmbedding(vec: number[] | null): boolean;
|
|
109
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/hive-graph/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gIAAgI;AAChI,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAE7G;AAED,gIAAgI;AAChI,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,mBAAmB,GACnB,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAOtD,CAAC;AAEF,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,+FAA+F;IAC/F,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,sIAAsI;AACtI,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,gHAAgH;AAChH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAE9D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Hive Graph domain model (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Two tables, one purpose each, straight from the corpus
|
|
5
|
+
* (`library/knowledge/private/data/hive-graph-schema.md`):
|
|
6
|
+
* - `hive_graph` one row per logical file, keyed by nectar (ULID). Identity + provenance.
|
|
7
|
+
* - `hive_graph_versions` append-only, keyed by (nectar, content_hash). Content + lazy description.
|
|
8
|
+
*
|
|
9
|
+
* These types are the frozen contract the store adapters (PRD-005) and the
|
|
10
|
+
* file-registration ladder (PRD-006) both build against. Column names match the
|
|
11
|
+
* DDL exactly so the future Deep Lake adapter maps 1:1.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* True when a row's tenancy columns match `t` exactly on all three of
|
|
15
|
+
* `orgId`/`workspaceId`/`projectId`. The single scoping predicate re-used by
|
|
16
|
+
* the in-memory store, the ladder's carry guard, and the delete/prune/review
|
|
17
|
+
* paths so no identity mutation ever crosses a project boundary (AC-20).
|
|
18
|
+
*/
|
|
19
|
+
export function inTenancy(row, t) {
|
|
20
|
+
return row.orgId === t.orgId && row.workspaceId === t.workspaceId && row.projectId === t.projectId;
|
|
21
|
+
}
|
|
22
|
+
export const DESCRIBE_STATUSES = [
|
|
23
|
+
"pending",
|
|
24
|
+
"described",
|
|
25
|
+
"failed",
|
|
26
|
+
"skipped-too-large",
|
|
27
|
+
"skipped-binary",
|
|
28
|
+
"skipped-deleted",
|
|
29
|
+
];
|
|
30
|
+
/** The embedding contract: 768 dims, tied to the FLOAT4[] column (ADR-0001 / PRD-014). A different dimension is rejected upstream. */
|
|
31
|
+
export const EMBED_DIMS = 768;
|
|
32
|
+
/** True if a vector honors the 768-dim contract. Recall's `embed.dim_rejected` guard discards anything else. */
|
|
33
|
+
export function isValidEmbedding(vec) {
|
|
34
|
+
return vec === null || vec.length === EMBED_DIMS;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/hive-graph/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAA8D,EAAE,CAAU;IAClG,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;AACrG,CAAC;AAiBD,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,SAAS;IACT,WAAW;IACX,QAAQ;IACR,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAuEF,sIAAsI;AACtI,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAE9B,gHAAgH;AAChH,MAAM,UAAU,gBAAgB,CAAC,GAAoB;IACnD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Repo-relative, forward-slashed path. `root` is the project root; `absOrRel` may be absolute or already relative. */
|
|
2
|
+
export declare function toRepoRelative(absOrRel: string, root: string): string;
|
|
3
|
+
/** Bare filename (`a.ts`) from a path. */
|
|
4
|
+
export declare function filenameOf(p: string): string;
|
|
5
|
+
/** Lowercased extension without the leading dot (`ts`, `md`, `json`); empty string if none. */
|
|
6
|
+
export declare function extOf(p: string): string;
|
|
7
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/hive-graph/paths.ts"],"names":[],"mappings":"AASA,uHAAuH;AACvH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,+FAA+F;AAC/F,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path helpers for building version rows (PRD-005 / PRD-006).
|
|
3
|
+
*
|
|
4
|
+
* Paths in `hive_graph_versions.path` are repo-relative with forward slashes,
|
|
5
|
+
* regardless of OS. `filename` and `ext` are denormalized from the path for fast
|
|
6
|
+
* filename-only search and extractor routing (per hive-graph-schema.md).
|
|
7
|
+
*/
|
|
8
|
+
import { relative, basename, extname } from "node:path";
|
|
9
|
+
/** Repo-relative, forward-slashed path. `root` is the project root; `absOrRel` may be absolute or already relative. */
|
|
10
|
+
export function toRepoRelative(absOrRel, root) {
|
|
11
|
+
const rel = relative(root, absOrRel);
|
|
12
|
+
// If `absOrRel` was already relative to cwd and not under root, `relative` may
|
|
13
|
+
// return it unchanged; normalize separators either way.
|
|
14
|
+
const forward = (rel === "" ? absOrRel : rel).replace(/\\/g, "/");
|
|
15
|
+
return forward.replace(/^\.\//, "");
|
|
16
|
+
}
|
|
17
|
+
/** Bare filename (`a.ts`) from a path. */
|
|
18
|
+
export function filenameOf(p) {
|
|
19
|
+
return basename(p.replace(/\\/g, "/"));
|
|
20
|
+
}
|
|
21
|
+
/** Lowercased extension without the leading dot (`ts`, `md`, `json`); empty string if none. */
|
|
22
|
+
export function extOf(p) {
|
|
23
|
+
const ext = extname(p);
|
|
24
|
+
return ext.startsWith(".") ? ext.slice(1).toLowerCase() : ext.toLowerCase();
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/hive-graph/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAExD,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,+EAA+E;IAC/E,wDAAwD;IACxD,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAC9E,CAAC"}
|