@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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the PRD-012a `searchHiveGraph` engine.
|
|
3
|
+
*
|
|
4
|
+
* The engine reads `hive_graph_versions` through an injected {@link StorageQuery}
|
|
5
|
+
* and optionally embeds the query through {@link EmbedClient}. CLI (012b) and the
|
|
6
|
+
* HTTP handler (PRD-008b) both delegate to the same function signature.
|
|
7
|
+
*/
|
|
8
|
+
import type { Tenancy } from "./model.js";
|
|
9
|
+
/** Org/workspace partition + soft `project_id` filter (decision #3). */
|
|
10
|
+
export type QueryScope = Tenancy;
|
|
11
|
+
/** One row of a Deep Lake query result. */
|
|
12
|
+
export type StorageRow = Record<string, unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* The read seam the engine uses. Org/workspace ride the transport headers;
|
|
15
|
+
* `project_id` is filtered in SQL via {@link QueryScope.projectId}.
|
|
16
|
+
*/
|
|
17
|
+
export interface StorageQuery {
|
|
18
|
+
query(sql: string, scope: QueryScope): Promise<readonly StorageRow[]>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Embeds a single query string to a 768-dim vector, or `null` on every failure
|
|
22
|
+
* mode (disabled, unreachable, timeout, wrong-dim). Mirrors honeycomb's
|
|
23
|
+
* `EmbedClient` contract consumed by recall's semantic arm.
|
|
24
|
+
*/
|
|
25
|
+
export interface EmbedClient {
|
|
26
|
+
embed(text: string): Promise<number[] | null>;
|
|
27
|
+
}
|
|
28
|
+
/** One ranked hive-graph search hit (latest described version per nectar). */
|
|
29
|
+
export interface HiveGraphHit {
|
|
30
|
+
readonly source: "nectar";
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly path: string;
|
|
33
|
+
readonly title: string;
|
|
34
|
+
readonly body: string;
|
|
35
|
+
readonly concepts: string;
|
|
36
|
+
readonly content_hash: string;
|
|
37
|
+
}
|
|
38
|
+
export interface HiveGraphSearchDeps {
|
|
39
|
+
readonly storage: StorageQuery;
|
|
40
|
+
/** When absent, search runs lexical-only and returns `degraded: true`. */
|
|
41
|
+
readonly embed?: EmbedClient;
|
|
42
|
+
/**
|
|
43
|
+
* The active embedding provider's model id (PRD-018i / NEC-018 AC-018i.3). When
|
|
44
|
+
* set, the semantic arm excludes rows whose non-null `embed_model` disagrees
|
|
45
|
+
* with it (a cross-space cosine comparison is meaningless) and reports the
|
|
46
|
+
* mismatched nectars through {@link onReembedNeeded}. Rows with a null
|
|
47
|
+
* `embed_model` (pre-provenance rows) are treated as compatible.
|
|
48
|
+
*/
|
|
49
|
+
readonly activeEmbedModel?: string;
|
|
50
|
+
/** Sink for nectars whose stored embedding disagrees with the active model, to be re-embedded (AC-018i.3). */
|
|
51
|
+
readonly onReembedNeeded?: (nectars: readonly string[]) => void;
|
|
52
|
+
/**
|
|
53
|
+
* The recall RRF multiplier loaded from `~/.honeycomb/nectar.json`'s
|
|
54
|
+
* `nectar_rrf_multiplier` knob (PRD-018k / NEC-041 AC-018k.7). This is the
|
|
55
|
+
* config SURFACE the knob plugs into: the value is accepted and exposed here,
|
|
56
|
+
* but this standalone two-arm engine deliberately applies NO cross-arm class
|
|
57
|
+
* weighting (PRD-012a; see the recall review's spec-conformance note), so the
|
|
58
|
+
* multiplier does not yet alter fusion. It reaches the recall path so a future
|
|
59
|
+
* cross-table fusion arm can weight nectar hits without a new plumbing change.
|
|
60
|
+
*/
|
|
61
|
+
readonly rrfMultiplier?: number;
|
|
62
|
+
}
|
|
63
|
+
export type HiveGraphSearchArmState = "ok" | "missing-table" | "error" | "not-run";
|
|
64
|
+
export type HiveGraphSearchArmName = "semantic" | "lexical";
|
|
65
|
+
export interface HiveGraphSearchArmStatus {
|
|
66
|
+
readonly status: HiveGraphSearchArmState;
|
|
67
|
+
readonly rows: number;
|
|
68
|
+
readonly reason?: string;
|
|
69
|
+
}
|
|
70
|
+
export type HiveGraphSearchReason = "ok" | "empty-query" | "semantic-unavailable" | "no-matches" | "missing-table" | "backend-error";
|
|
71
|
+
export interface HiveGraphSearchResult {
|
|
72
|
+
readonly hits: readonly HiveGraphHit[];
|
|
73
|
+
readonly sources: readonly ("nectar")[];
|
|
74
|
+
readonly degraded: boolean;
|
|
75
|
+
readonly reason?: HiveGraphSearchReason;
|
|
76
|
+
readonly errorSources?: readonly HiveGraphSearchArmName[];
|
|
77
|
+
readonly arms?: {
|
|
78
|
+
readonly semantic: HiveGraphSearchArmStatus;
|
|
79
|
+
readonly lexical: HiveGraphSearchArmStatus;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=search-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-types.d.ts","sourceRoot":"","sources":["../../src/hive-graph/search-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,8GAA8G;IAC9G,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAChE;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnF,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAC7B,IAAI,GACJ,aAAa,GACb,sBAAsB,GACtB,YAAY,GACZ,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;KAC5C,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-types.js","sourceRoot":"","sources":["../../src/hive-graph/search-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { HiveGraphSearchDeps, HiveGraphSearchResult, QueryScope } from "./search-types.js";
|
|
2
|
+
export type { EmbedClient, HiveGraphHit, HiveGraphSearchDeps, HiveGraphSearchResult, QueryScope, StorageQuery, } from "./search-types.js";
|
|
3
|
+
/** Default result cap when the caller omits `limit` (decision #34). */
|
|
4
|
+
export declare const DEFAULT_RECALL_LIMIT = 20;
|
|
5
|
+
/** Hard ceiling on search hits (fat-finger guard). */
|
|
6
|
+
export declare const MAX_RECALL_LIMIT = 200;
|
|
7
|
+
/** RRF constant `k` (mirrors honeycomb recall). */
|
|
8
|
+
export declare const RRF_K = 60;
|
|
9
|
+
/**
|
|
10
|
+
* Default recall RRF multiplier when `~/.honeycomb/nectar.json`'s
|
|
11
|
+
* `nectar_rrf_multiplier` knob is unset (PRD-018k / NEC-041). `1` is neutral:
|
|
12
|
+
* this standalone two-arm engine applies no cross-arm class weighting
|
|
13
|
+
* (PRD-012a), so the multiplier is a config surface for a future cross-table
|
|
14
|
+
* fusion arm, not a value that alters fusion today.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_RRF_MULTIPLIER = 1;
|
|
17
|
+
/** Vector arm over-fetch multiplier (mirrors honeycomb `vector.ts`). */
|
|
18
|
+
export declare const DEFAULT_OVERFETCH_MULTIPLIER = 3;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the effective recall RRF multiplier from the search deps (PRD-018k /
|
|
21
|
+
* NEC-041 AC-018k.7): the loaded `nectar_rrf_multiplier` value when it is a
|
|
22
|
+
* finite positive number, else {@link DEFAULT_RRF_MULTIPLIER}. This is where the
|
|
23
|
+
* config knob plugs into the recall path; fusion does not yet weight by it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveRrfMultiplier(deps: Pick<HiveGraphSearchDeps, "rrfMultiplier">): number;
|
|
26
|
+
/** Clamp a caller-supplied limit into `[1, MAX_RECALL_LIMIT]`, defaulting a missing/bad value. */
|
|
27
|
+
export declare function resolveRecallLimit(limit: number | undefined): number;
|
|
28
|
+
/**
|
|
29
|
+
* Latest described version per nectar (`MAX(seq)`), scoped by tenancy.
|
|
30
|
+
* Load-bearing shape from `recall-integration.md`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildLatestDescribedSubquery(scope: QueryScope): string;
|
|
33
|
+
/**
|
|
34
|
+
* Guarded lexical arm over `title`, `description`, and `concepts` with the
|
|
35
|
+
* latest-per-nectar join. Exported for injection-safety tests.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildHiveGraphLexicalArmSql(term: string, scope: QueryScope, perArmLimit: number): string;
|
|
38
|
+
/** Step 1 of the semantic arm: `<#>` cosine match returning scored nectar ids only. */
|
|
39
|
+
export declare function buildHiveGraphVectorSearchSql(queryVector: readonly number[], scope: QueryScope, perArmLimit: number, overFetchMultiplier?: number): string;
|
|
40
|
+
/** Step 2 of the semantic arm: hydrate matched nectars' display columns. */
|
|
41
|
+
export declare function buildHiveGraphHydrateSql(ids: readonly string[], scope: QueryScope): string;
|
|
42
|
+
/**
|
|
43
|
+
* Search the hive graph: guarded lexical + optional semantic arms fused by RRF.
|
|
44
|
+
*
|
|
45
|
+
* @param query - Search term (trimmed; empty returns the empty/degraded floor).
|
|
46
|
+
* @param scope - Tenancy + soft project filter applied in SQL.
|
|
47
|
+
* @param limit - Result cap; defaults to {@link DEFAULT_RECALL_LIMIT}.
|
|
48
|
+
* @param deps - Storage query seam + optional embed client.
|
|
49
|
+
*/
|
|
50
|
+
export declare function searchHiveGraph(query: string, scope: QueryScope, limit: number | undefined, deps: HiveGraphSearchDeps): Promise<HiveGraphSearchResult>;
|
|
51
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/hive-graph/search.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAKV,mBAAmB,EAEnB,qBAAqB,EACrB,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,uEAAuE;AACvE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,mDAAmD;AACnD,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,wEAAwE;AACxE,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAO9C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG,MAAM,CAG7F;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKpE;AAeD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUtE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgCxG;AAED,uFAAuF;AACvF,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,mBAAmB,SAA+B,GACjD,MAAM,CAyBR;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAoB1F;AAmQD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CA4ChC"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone hive-graph search engine (PRD-012a).
|
|
3
|
+
*
|
|
4
|
+
* Runs guarded lexical ILIKE + optional `<#>` vector semantic search over
|
|
5
|
+
* `hive_graph_versions`, filtered to the latest described version per nectar.
|
|
6
|
+
* Mirrors honeycomb recall arm mechanics without importing honeycomb (decision #2).
|
|
7
|
+
*/
|
|
8
|
+
import { EMBED_DIMS, isValidEmbedding } from "./model.js";
|
|
9
|
+
import { HIVE_GRAPH_VERSIONS_TABLE } from "./schema.js";
|
|
10
|
+
import { isMissingTableError } from "./deeplake-heal.js";
|
|
11
|
+
import { TransportError } from "./deeplake-transport.js";
|
|
12
|
+
import { sLiteral, sqlFloat4Array, sqlIdent, sqlLike } from "./sql-guards.js";
|
|
13
|
+
/** Default result cap when the caller omits `limit` (decision #34). */
|
|
14
|
+
export const DEFAULT_RECALL_LIMIT = 20;
|
|
15
|
+
/** Hard ceiling on search hits (fat-finger guard). */
|
|
16
|
+
export const MAX_RECALL_LIMIT = 200;
|
|
17
|
+
/** RRF constant `k` (mirrors honeycomb recall). */
|
|
18
|
+
export const RRF_K = 60;
|
|
19
|
+
/**
|
|
20
|
+
* Default recall RRF multiplier when `~/.honeycomb/nectar.json`'s
|
|
21
|
+
* `nectar_rrf_multiplier` knob is unset (PRD-018k / NEC-041). `1` is neutral:
|
|
22
|
+
* this standalone two-arm engine applies no cross-arm class weighting
|
|
23
|
+
* (PRD-012a), so the multiplier is a config surface for a future cross-table
|
|
24
|
+
* fusion arm, not a value that alters fusion today.
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_RRF_MULTIPLIER = 1;
|
|
27
|
+
/** Vector arm over-fetch multiplier (mirrors honeycomb `vector.ts`). */
|
|
28
|
+
export const DEFAULT_OVERFETCH_MULTIPLIER = 3;
|
|
29
|
+
const HIVE_GRAPH_VERSIONS = sqlIdent(HIVE_GRAPH_VERSIONS_TABLE.name);
|
|
30
|
+
const SOURCE_NECTAR = "nectar";
|
|
31
|
+
const SEMANTIC_ARM = "semantic";
|
|
32
|
+
const LEXICAL_ARM = "lexical";
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the effective recall RRF multiplier from the search deps (PRD-018k /
|
|
35
|
+
* NEC-041 AC-018k.7): the loaded `nectar_rrf_multiplier` value when it is a
|
|
36
|
+
* finite positive number, else {@link DEFAULT_RRF_MULTIPLIER}. This is where the
|
|
37
|
+
* config knob plugs into the recall path; fusion does not yet weight by it.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveRrfMultiplier(deps) {
|
|
40
|
+
const m = deps.rrfMultiplier;
|
|
41
|
+
return typeof m === "number" && Number.isFinite(m) && m > 0 ? m : DEFAULT_RRF_MULTIPLIER;
|
|
42
|
+
}
|
|
43
|
+
/** Clamp a caller-supplied limit into `[1, MAX_RECALL_LIMIT]`, defaulting a missing/bad value. */
|
|
44
|
+
export function resolveRecallLimit(limit) {
|
|
45
|
+
if (typeof limit !== "number" || !Number.isFinite(limit))
|
|
46
|
+
return DEFAULT_RECALL_LIMIT;
|
|
47
|
+
const truncated = Math.trunc(limit);
|
|
48
|
+
if (truncated < 1)
|
|
49
|
+
return DEFAULT_RECALL_LIMIT;
|
|
50
|
+
return Math.min(truncated, MAX_RECALL_LIMIT);
|
|
51
|
+
}
|
|
52
|
+
function cell(value) {
|
|
53
|
+
return value === undefined || value === null ? "" : String(value);
|
|
54
|
+
}
|
|
55
|
+
function tenancyPredicate(scope, prefix = "") {
|
|
56
|
+
const p = prefix === "" ? "" : `${prefix}.`;
|
|
57
|
+
return (`${p}${sqlIdent("org_id")} = ${sLiteral(scope.orgId)} AND ` +
|
|
58
|
+
`${p}${sqlIdent("workspace_id")} = ${sLiteral(scope.workspaceId)} AND ` +
|
|
59
|
+
`${p}${sqlIdent("project_id")} = ${sLiteral(scope.projectId)}`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Latest described version per nectar (`MAX(seq)`), scoped by tenancy.
|
|
63
|
+
* Load-bearing shape from `recall-integration.md`.
|
|
64
|
+
*/
|
|
65
|
+
export function buildLatestDescribedSubquery(scope) {
|
|
66
|
+
const nectarCol = sqlIdent("nectar");
|
|
67
|
+
const seqCol = sqlIdent("seq");
|
|
68
|
+
const statusCol = sqlIdent("describe_status");
|
|
69
|
+
return (`SELECT ${nectarCol}, MAX(${seqCol}) AS max_seq ` +
|
|
70
|
+
`FROM "${HIVE_GRAPH_VERSIONS}" ` +
|
|
71
|
+
`WHERE ${statusCol} = ${sLiteral("described")} AND ${tenancyPredicate(scope)} ` +
|
|
72
|
+
`GROUP BY ${nectarCol}`);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Guarded lexical arm over `title`, `description`, and `concepts` with the
|
|
76
|
+
* latest-per-nectar join. Exported for injection-safety tests.
|
|
77
|
+
*/
|
|
78
|
+
export function buildHiveGraphLexicalArmSql(term, scope, perArmLimit) {
|
|
79
|
+
const pattern = `'%${sqlLike(term)}%'`;
|
|
80
|
+
const latest = buildLatestDescribedSubquery(scope);
|
|
81
|
+
const perArm = Math.max(1, Math.trunc(perArmLimit));
|
|
82
|
+
const nectarCol = sqlIdent("nectar");
|
|
83
|
+
const seqCol = sqlIdent("seq");
|
|
84
|
+
const pathCol = sqlIdent("path");
|
|
85
|
+
const titleCol = sqlIdent("title");
|
|
86
|
+
const descCol = sqlIdent("description");
|
|
87
|
+
const conceptsCol = sqlIdent("concepts");
|
|
88
|
+
const hashCol = sqlIdent("content_hash");
|
|
89
|
+
// NEC-042 item 5 / AC-018l.12: `sqlLike` emits backslash escapes for `%`/`_`/`\`
|
|
90
|
+
// inside a plain literal, but whether `\%` is honored as a literal is
|
|
91
|
+
// dialect-dependent WITHOUT an explicit ESCAPE clause. Declaring `ESCAPE '\'`
|
|
92
|
+
// on every ILIKE pins the backslash as the escape char, so an escaped
|
|
93
|
+
// metacharacter can never widen the match. Applied to every ILIKE (the WHERE
|
|
94
|
+
// arm and the ORDER BY ranking) so match and ranking agree.
|
|
95
|
+
const like = (col) => `${col} ILIKE ${pattern} ESCAPE '\\'`;
|
|
96
|
+
return (`SELECT ${sLiteral(SOURCE_NECTAR)} AS source, v.${nectarCol} AS id, v.${pathCol} AS path, ` +
|
|
97
|
+
`v.${titleCol} AS title, v.${descCol} AS body, v.${conceptsCol} AS concepts, v.${hashCol} AS content_hash ` +
|
|
98
|
+
`FROM "${HIVE_GRAPH_VERSIONS}" v ` +
|
|
99
|
+
`INNER JOIN (${latest}) latest ON v.${nectarCol} = latest.${nectarCol} AND v.${seqCol} = latest.max_seq ` +
|
|
100
|
+
`WHERE (${like(`v.${titleCol}`)} OR ${like(`v.${descCol}`)} OR ${like(`v.${conceptsCol}`)}) ` +
|
|
101
|
+
`AND ${tenancyPredicate(scope, "v")} ` +
|
|
102
|
+
`ORDER BY CASE ` +
|
|
103
|
+
`WHEN ${like(`v.${titleCol}`)} THEN 0 ` +
|
|
104
|
+
`WHEN ${like(`v.${descCol}`)} THEN 1 ` +
|
|
105
|
+
`WHEN ${like(`v.${conceptsCol}`)} THEN 2 ` +
|
|
106
|
+
`ELSE 3 END ASC, v.${nectarCol} ASC ` +
|
|
107
|
+
`LIMIT ${perArm}`);
|
|
108
|
+
}
|
|
109
|
+
/** Step 1 of the semantic arm: `<#>` cosine match returning scored nectar ids only. */
|
|
110
|
+
export function buildHiveGraphVectorSearchSql(queryVector, scope, perArmLimit, overFetchMultiplier = DEFAULT_OVERFETCH_MULTIPLIER) {
|
|
111
|
+
assertQueryVectorDim(queryVector);
|
|
112
|
+
const latest = buildLatestDescribedSubquery(scope);
|
|
113
|
+
const vecLit = sqlFloat4Array(queryVector);
|
|
114
|
+
const nectarCol = sqlIdent("nectar");
|
|
115
|
+
const seqCol = sqlIdent("seq");
|
|
116
|
+
const embCol = sqlIdent("embedding");
|
|
117
|
+
const fetchLimit = Math.max(1, Math.trunc(perArmLimit)) * Math.max(1, Math.trunc(overFetchMultiplier));
|
|
118
|
+
// `<#>` between a FLOAT4[] column and a FLOAT4[] literal is cosine
|
|
119
|
+
// SIMILARITY on this backend, sorted DESC (official pg_deeplake SQL
|
|
120
|
+
// reference, docs.deeplake.ai "The <#> operator" table), and the live probe
|
|
121
|
+
// in test/hive-graph-search-live.test.ts confirms the near vector ranks
|
|
122
|
+
// first under this formula. The corpus's earlier "cosine distance, ascend"
|
|
123
|
+
// phrasing was wrong (NEC-005); the docs pass corrects it. Mapping
|
|
124
|
+
// similarity [-1, 1] to score [0, 1] preserves DESC = most similar first.
|
|
125
|
+
const scoreSql = `((1 + (v.${embCol} <#> ${vecLit})) / 2)`;
|
|
126
|
+
const embedModelCol = sqlIdent("embed_model");
|
|
127
|
+
return (`SELECT v.${nectarCol} AS id, ${scoreSql} AS score, v.${embedModelCol} AS embed_model ` +
|
|
128
|
+
`FROM "${HIVE_GRAPH_VERSIONS}" v ` +
|
|
129
|
+
`INNER JOIN (${latest}) latest ON v.${nectarCol} = latest.${nectarCol} AND v.${seqCol} = latest.max_seq ` +
|
|
130
|
+
`WHERE ARRAY_LENGTH(v.${embCol}, 1) > 0 AND ${tenancyPredicate(scope, "v")} ` +
|
|
131
|
+
`ORDER BY score DESC ` +
|
|
132
|
+
`LIMIT ${fetchLimit}`);
|
|
133
|
+
}
|
|
134
|
+
/** Step 2 of the semantic arm: hydrate matched nectars' display columns. */
|
|
135
|
+
export function buildHiveGraphHydrateSql(ids, scope) {
|
|
136
|
+
if (ids.length === 0) {
|
|
137
|
+
throw new Error("buildHiveGraphHydrateSql requires at least one id");
|
|
138
|
+
}
|
|
139
|
+
const latest = buildLatestDescribedSubquery(scope);
|
|
140
|
+
const inList = ids.map((id) => sLiteral(id)).join(", ");
|
|
141
|
+
const nectarCol = sqlIdent("nectar");
|
|
142
|
+
const seqCol = sqlIdent("seq");
|
|
143
|
+
const pathCol = sqlIdent("path");
|
|
144
|
+
const titleCol = sqlIdent("title");
|
|
145
|
+
const descCol = sqlIdent("description");
|
|
146
|
+
const conceptsCol = sqlIdent("concepts");
|
|
147
|
+
const hashCol = sqlIdent("content_hash");
|
|
148
|
+
return (`SELECT ${sLiteral(SOURCE_NECTAR)} AS source, v.${nectarCol} AS id, v.${pathCol} AS path, ` +
|
|
149
|
+
`v.${titleCol} AS title, v.${descCol} AS body, v.${conceptsCol} AS concepts, v.${hashCol} AS content_hash ` +
|
|
150
|
+
`FROM "${HIVE_GRAPH_VERSIONS}" v ` +
|
|
151
|
+
`INNER JOIN (${latest}) latest ON v.${nectarCol} = latest.${nectarCol} AND v.${seqCol} = latest.max_seq ` +
|
|
152
|
+
`WHERE v.${nectarCol} IN (${inList}) AND ${tenancyPredicate(scope, "v")}`);
|
|
153
|
+
}
|
|
154
|
+
function assertQueryVectorDim(vector) {
|
|
155
|
+
if (vector.length !== EMBED_DIMS) {
|
|
156
|
+
throw new Error(`Query vector must be ${EMBED_DIMS}-dim; got ${vector.length}`);
|
|
157
|
+
}
|
|
158
|
+
for (const v of vector) {
|
|
159
|
+
if (!Number.isFinite(v)) {
|
|
160
|
+
throw new Error(`Query vector must be ${EMBED_DIMS}-dim; got non-finite entry`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function rowToHit(row) {
|
|
165
|
+
const id = cell(row.id);
|
|
166
|
+
if (id === "")
|
|
167
|
+
return null;
|
|
168
|
+
const source = cell(row.source);
|
|
169
|
+
if (source !== SOURCE_NECTAR && source !== "")
|
|
170
|
+
return null;
|
|
171
|
+
return {
|
|
172
|
+
source: SOURCE_NECTAR,
|
|
173
|
+
id,
|
|
174
|
+
path: cell(row.path),
|
|
175
|
+
title: cell(row.title),
|
|
176
|
+
body: cell(row.body),
|
|
177
|
+
concepts: cell(row.concepts),
|
|
178
|
+
content_hash: cell(row.content_hash),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function fusionKey(source, id) {
|
|
182
|
+
return `${source}\0${id}`;
|
|
183
|
+
}
|
|
184
|
+
/** RRF fusion scoped to this engine's two arms (no cross-table arm-class weighting). */
|
|
185
|
+
function fuseHits(arms, limit) {
|
|
186
|
+
const docs = new Map();
|
|
187
|
+
for (const arm of arms) {
|
|
188
|
+
arm.entries.forEach((entry, index) => {
|
|
189
|
+
const rank = index + 1;
|
|
190
|
+
const contribution = 1 / (RRF_K + rank);
|
|
191
|
+
const key = fusionKey(entry.hit.source, entry.hit.id);
|
|
192
|
+
const existing = docs.get(key);
|
|
193
|
+
if (existing === undefined) {
|
|
194
|
+
docs.set(key, { hit: entry.hit, score: contribution });
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
existing.score += contribution;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
const ordered = [...docs.values()].sort((a, b) => {
|
|
202
|
+
if (b.score !== a.score)
|
|
203
|
+
return b.score - a.score;
|
|
204
|
+
return a.hit.id < b.hit.id ? -1 : a.hit.id > b.hit.id ? 1 : 0;
|
|
205
|
+
});
|
|
206
|
+
const hits = [];
|
|
207
|
+
for (const doc of ordered) {
|
|
208
|
+
if (hits.length >= limit)
|
|
209
|
+
break;
|
|
210
|
+
hits.push(doc.hit);
|
|
211
|
+
}
|
|
212
|
+
const sources = hits.length > 0 ? [SOURCE_NECTAR] : [];
|
|
213
|
+
return { hits, sources };
|
|
214
|
+
}
|
|
215
|
+
function rowsToRankedArm(rows) {
|
|
216
|
+
const entries = [];
|
|
217
|
+
for (const row of rows) {
|
|
218
|
+
const hit = rowToHit(row);
|
|
219
|
+
if (hit !== null)
|
|
220
|
+
entries.push({ hit });
|
|
221
|
+
}
|
|
222
|
+
return { entries };
|
|
223
|
+
}
|
|
224
|
+
function armOk(rows) {
|
|
225
|
+
return { status: "ok", rows: rows.length };
|
|
226
|
+
}
|
|
227
|
+
function armNotRun(reason) {
|
|
228
|
+
return { status: "not-run", rows: 0, reason };
|
|
229
|
+
}
|
|
230
|
+
function errorReason(err) {
|
|
231
|
+
return err instanceof Error ? err.message : String(err);
|
|
232
|
+
}
|
|
233
|
+
function classifyArmFailure(err) {
|
|
234
|
+
const reason = errorReason(err);
|
|
235
|
+
if (err instanceof TransportError && isMissingTableError(err)) {
|
|
236
|
+
return { status: "missing-table", rows: 0, reason };
|
|
237
|
+
}
|
|
238
|
+
if (err instanceof Error && /table does not exist|no such table/i.test(err.message)) {
|
|
239
|
+
return { status: "missing-table", rows: 0, reason };
|
|
240
|
+
}
|
|
241
|
+
return { status: "error", rows: 0, reason };
|
|
242
|
+
}
|
|
243
|
+
function resultReason(hits, semanticStatus, lexicalStatus) {
|
|
244
|
+
if (semanticStatus.status === "error" || lexicalStatus.status === "error")
|
|
245
|
+
return "backend-error";
|
|
246
|
+
if (hits.length > 0 && semanticStatus.status === "not-run")
|
|
247
|
+
return "semantic-unavailable";
|
|
248
|
+
if (hits.length > 0)
|
|
249
|
+
return "ok";
|
|
250
|
+
if (semanticStatus.status === "missing-table" || lexicalStatus.status === "missing-table")
|
|
251
|
+
return "missing-table";
|
|
252
|
+
return "no-matches";
|
|
253
|
+
}
|
|
254
|
+
function errorSources(semanticStatus, lexicalStatus) {
|
|
255
|
+
const sources = [];
|
|
256
|
+
if (semanticStatus.status === "error")
|
|
257
|
+
sources.push(SEMANTIC_ARM);
|
|
258
|
+
if (lexicalStatus.status === "error")
|
|
259
|
+
sources.push(LEXICAL_ARM);
|
|
260
|
+
return sources;
|
|
261
|
+
}
|
|
262
|
+
/** Per-arm fail-soft: missing table or backend error returns a classified status. */
|
|
263
|
+
async function runArmFailSoft(storage, sql, scope, onSuccess) {
|
|
264
|
+
try {
|
|
265
|
+
const rows = [...(await storage.query(sql, scope))];
|
|
266
|
+
onSuccess?.();
|
|
267
|
+
return { rows, status: armOk(rows) };
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
return { rows: [], status: classifyArmFailure(err) };
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
async function resolveQueryVector(query, embed) {
|
|
274
|
+
if (embed === undefined)
|
|
275
|
+
return null;
|
|
276
|
+
try {
|
|
277
|
+
const vec = await embed.embed(query);
|
|
278
|
+
if (vec === null || !isValidEmbedding(vec))
|
|
279
|
+
return null;
|
|
280
|
+
return vec;
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function parseScoredIds(rows) {
|
|
287
|
+
const out = [];
|
|
288
|
+
for (const row of rows) {
|
|
289
|
+
const id = cell(row.id);
|
|
290
|
+
if (id === "")
|
|
291
|
+
continue;
|
|
292
|
+
const rawScore = typeof row.score === "number" ? row.score : Number(row.score);
|
|
293
|
+
const score = Number.isFinite(rawScore) ? Math.min(1, Math.max(0, rawScore)) : 0;
|
|
294
|
+
const embedModel = typeof row.embed_model === "string" && row.embed_model !== "" ? row.embed_model : null;
|
|
295
|
+
out.push({ id, score, embedModel });
|
|
296
|
+
}
|
|
297
|
+
return out;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Partition scored rows into ones that may contribute to the vector arm and ones
|
|
301
|
+
* whose stored embedding model disagrees with the active provider (PRD-018i /
|
|
302
|
+
* NEC-018 AC-018i.3). A null `embed_model` (pre-provenance row) is treated as
|
|
303
|
+
* compatible; only a non-null model that differs is a cross-space mismatch.
|
|
304
|
+
*/
|
|
305
|
+
function partitionByEmbedModel(scored, activeEmbedModel) {
|
|
306
|
+
if (activeEmbedModel === undefined)
|
|
307
|
+
return { usable: [...scored], mismatched: [] };
|
|
308
|
+
const usable = [];
|
|
309
|
+
const mismatched = [];
|
|
310
|
+
for (const s of scored) {
|
|
311
|
+
if (s.embedModel !== null && s.embedModel !== activeEmbedModel)
|
|
312
|
+
mismatched.push(s.id);
|
|
313
|
+
else
|
|
314
|
+
usable.push(s);
|
|
315
|
+
}
|
|
316
|
+
return { usable, mismatched };
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Semantic arm: vectorSearch (scored ids) then hydrate (second guarded query),
|
|
320
|
+
* preserving cosine rank order.
|
|
321
|
+
*/
|
|
322
|
+
async function runSemanticArm(storage, scope, queryVector, perArmLimit, activeEmbedModel, onReembedNeeded, onSuccess) {
|
|
323
|
+
const scoreSql = buildHiveGraphVectorSearchSql(queryVector, scope, perArmLimit);
|
|
324
|
+
const scoreResult = await runArmFailSoft(storage, scoreSql, scope, onSuccess);
|
|
325
|
+
if (scoreResult.status.status !== "ok") {
|
|
326
|
+
return { entries: [], status: scoreResult.status };
|
|
327
|
+
}
|
|
328
|
+
const allScored = parseScoredIds(scoreResult.rows);
|
|
329
|
+
// AC-018i.3: exclude rows whose stored embed_model disagrees with the active
|
|
330
|
+
// provider, and queue those nectars for re-embedding so the index converges.
|
|
331
|
+
const { usable: scored, mismatched } = partitionByEmbedModel(allScored, activeEmbedModel);
|
|
332
|
+
if (mismatched.length > 0 && onReembedNeeded !== undefined) {
|
|
333
|
+
try {
|
|
334
|
+
onReembedNeeded(mismatched);
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
// fail-soft: a faulty re-embed sink never breaks the search path.
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (scored.length === 0)
|
|
341
|
+
return { entries: [], status: armOk([]) };
|
|
342
|
+
const ids = scored.map((s) => s.id).filter((id) => id !== "");
|
|
343
|
+
if (ids.length === 0)
|
|
344
|
+
return { entries: [], status: armOk([]) };
|
|
345
|
+
const hydrateResult = await runArmFailSoft(storage, buildHiveGraphHydrateSql(ids, scope), scope, onSuccess);
|
|
346
|
+
if (hydrateResult.status.status !== "ok") {
|
|
347
|
+
return { entries: [], status: hydrateResult.status };
|
|
348
|
+
}
|
|
349
|
+
const hitById = new Map();
|
|
350
|
+
for (const row of hydrateResult.rows) {
|
|
351
|
+
const hit = rowToHit(row);
|
|
352
|
+
if (hit !== null)
|
|
353
|
+
hitById.set(hit.id, hit);
|
|
354
|
+
}
|
|
355
|
+
const entries = [];
|
|
356
|
+
const seen = new Set();
|
|
357
|
+
for (const s of scored) {
|
|
358
|
+
if (seen.has(s.id))
|
|
359
|
+
continue;
|
|
360
|
+
const hit = hitById.get(s.id);
|
|
361
|
+
if (hit === undefined)
|
|
362
|
+
continue;
|
|
363
|
+
seen.add(s.id);
|
|
364
|
+
entries.push({ hit });
|
|
365
|
+
}
|
|
366
|
+
return { entries, status: { status: "ok", rows: entries.length } };
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Search the hive graph: guarded lexical + optional semantic arms fused by RRF.
|
|
370
|
+
*
|
|
371
|
+
* @param query - Search term (trimmed; empty returns the empty/degraded floor).
|
|
372
|
+
* @param scope - Tenancy + soft project filter applied in SQL.
|
|
373
|
+
* @param limit - Result cap; defaults to {@link DEFAULT_RECALL_LIMIT}.
|
|
374
|
+
* @param deps - Storage query seam + optional embed client.
|
|
375
|
+
*/
|
|
376
|
+
export async function searchHiveGraph(query, scope, limit, deps) {
|
|
377
|
+
const term = query.trim();
|
|
378
|
+
const resolvedLimit = resolveRecallLimit(limit);
|
|
379
|
+
if (term === "") {
|
|
380
|
+
return { hits: [], sources: [], degraded: true };
|
|
381
|
+
}
|
|
382
|
+
const queryVector = await resolveQueryVector(term, deps.embed);
|
|
383
|
+
const semanticRan = queryVector !== null;
|
|
384
|
+
const queryArm = async (sql) => {
|
|
385
|
+
const result = await runArmFailSoft(deps.storage, sql, scope);
|
|
386
|
+
return result;
|
|
387
|
+
};
|
|
388
|
+
const [semanticResult, lexicalResult] = await Promise.all([
|
|
389
|
+
semanticRan && queryVector !== null
|
|
390
|
+
? runSemanticArm(deps.storage, scope, queryVector, resolvedLimit, deps.activeEmbedModel, deps.onReembedNeeded)
|
|
391
|
+
: Promise.resolve({ entries: [], status: armNotRun("query embedding unavailable") }),
|
|
392
|
+
queryArm(buildHiveGraphLexicalArmSql(term, scope, resolvedLimit)),
|
|
393
|
+
]);
|
|
394
|
+
const arms = [];
|
|
395
|
+
if (semanticResult.entries.length > 0) {
|
|
396
|
+
arms.push({ entries: semanticResult.entries });
|
|
397
|
+
}
|
|
398
|
+
else if (semanticRan) {
|
|
399
|
+
arms.push({ entries: [] });
|
|
400
|
+
}
|
|
401
|
+
arms.push(rowsToRankedArm(lexicalResult.rows));
|
|
402
|
+
const { hits, sources } = fuseHits(arms, resolvedLimit);
|
|
403
|
+
const errors = errorSources(semanticResult.status, lexicalResult.status);
|
|
404
|
+
const degraded = !semanticRan || errors.length > 0;
|
|
405
|
+
return {
|
|
406
|
+
hits,
|
|
407
|
+
sources,
|
|
408
|
+
degraded,
|
|
409
|
+
reason: resultReason(hits, semanticResult.status, lexicalResult.status),
|
|
410
|
+
errorSources: errors,
|
|
411
|
+
arms: {
|
|
412
|
+
semantic: semanticResult.status,
|
|
413
|
+
lexical: lexicalResult.status,
|
|
414
|
+
},
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/hive-graph/search.ts"],"names":[],"mappings":"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"}
|