@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,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory SourceGraphStore 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 hivenectar'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 { SourceGraphRow, SourceGraphVersionRow, Tenancy } from "./model.js";
|
|
16
|
+
import type { LatestVersion, SourceGraphStore } from "./store.js";
|
|
17
|
+
export declare class InMemorySourceGraphStore implements SourceGraphStore {
|
|
18
|
+
private readonly identities;
|
|
19
|
+
/** nectar -> version rows in append order (seq ascending). */
|
|
20
|
+
private readonly versions;
|
|
21
|
+
insertIdentity(row: SourceGraphRow): void;
|
|
22
|
+
getIdentity(nectar: string): SourceGraphRow | undefined;
|
|
23
|
+
touchIdentity(nectar: string, lastUpdateDate: string): void;
|
|
24
|
+
appendVersion(row: SourceGraphVersionRow): void;
|
|
25
|
+
nextSeq(nectar: string): number;
|
|
26
|
+
latestVersion(nectar: string): SourceGraphVersionRow | undefined;
|
|
27
|
+
listLatestVersions(tenancy: Tenancy): LatestVersion[];
|
|
28
|
+
latestVersionByPath(tenancy: Tenancy, path: string): LatestVersion | undefined;
|
|
29
|
+
latestVersionByHash(tenancy: Tenancy, contentHash: string): LatestVersion | undefined;
|
|
30
|
+
deleteNectar(tenancy: Tenancy, nectar: string): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/source-graph/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8C;IAEvE,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAOzC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKvD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAK3D,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IAM/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQ/B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAQhE,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE;IAUrD,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;CAOrD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { inTenancy } from "./model.js";
|
|
2
|
+
export class InMemorySourceGraphStore {
|
|
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
|
+
latestVersionByPath(tenancy, path) {
|
|
58
|
+
for (const lv of this.listLatestVersions(tenancy)) {
|
|
59
|
+
if (lv.version.path === path)
|
|
60
|
+
return lv;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
latestVersionByHash(tenancy, contentHash) {
|
|
65
|
+
for (const lv of this.listLatestVersions(tenancy)) {
|
|
66
|
+
if (lv.version.contentHash === contentHash)
|
|
67
|
+
return lv;
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
deleteNectar(tenancy, nectar) {
|
|
72
|
+
const identity = this.identities.get(nectar);
|
|
73
|
+
if (identity === undefined)
|
|
74
|
+
return; // unknown nectar: no-op
|
|
75
|
+
if (!inTenancy(identity, tenancy))
|
|
76
|
+
return; // refuse a cross-project delete (AC-20)
|
|
77
|
+
this.identities.delete(nectar);
|
|
78
|
+
this.versions.delete(nectar);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/source-graph/memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Source Graph domain model (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Two tables, one purpose each, straight from the corpus
|
|
5
|
+
* (`library/knowledge/private/data/source-graph-schema.md`):
|
|
6
|
+
* - `source_graph` one row per logical file, keyed by nectar (ULID). Identity + provenance.
|
|
7
|
+
* - `source_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
|
+
/** `source_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
|
+
* `source_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 `source_graph` (identity + provenance only; no content, no description). */
|
|
39
|
+
export interface SourceGraphRow {
|
|
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 `source_graph_versions` (one per observed content state of a nectar). */
|
|
56
|
+
export interface SourceGraphVersionRow {
|
|
57
|
+
/** FK -> source_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
|
+
describeStatus: DescribeStatus;
|
|
91
|
+
/** Timestamp the version row was appended (distinct from mtimeObserved). */
|
|
92
|
+
observedAt: string;
|
|
93
|
+
orgId: string;
|
|
94
|
+
workspaceId: string;
|
|
95
|
+
projectId: string;
|
|
96
|
+
lastUpdateDate: string;
|
|
97
|
+
}
|
|
98
|
+
/** The embedding contract: 768 dims, tied to the FLOAT4[] column (ADR-0001 / PRD-014). A different dimension is rejected upstream. */
|
|
99
|
+
export declare const EMBED_DIMS = 768;
|
|
100
|
+
/** True if a vector honors the 768-dim contract. Recall's `embed.dim_rejected` guard discards anything else. */
|
|
101
|
+
export declare function isValidEmbedding(vec: number[] | null): boolean;
|
|
102
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/source-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,kIAAkI;AAClI,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,wFAAwF;AACxF,MAAM,WAAW,cAAc;IAC7B,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,qFAAqF;AACrF,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,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,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 Source Graph domain model (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Two tables, one purpose each, straight from the corpus
|
|
5
|
+
* (`library/knowledge/private/data/source-graph-schema.md`):
|
|
6
|
+
* - `source_graph` one row per logical file, keyed by nectar (ULID). Identity + provenance.
|
|
7
|
+
* - `source_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/source-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;AAgEF,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/source-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 `source_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 source-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/source-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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type SqlType = "TEXT" | "BIGINT" | "REAL" | "FLOAT4[]";
|
|
2
|
+
export interface ColumnDef {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly type: SqlType;
|
|
5
|
+
/** NOT NULL columns must carry a `default` (the load-time guard). Nullable columns omit it. */
|
|
6
|
+
readonly notNull: boolean;
|
|
7
|
+
readonly default?: string | number;
|
|
8
|
+
}
|
|
9
|
+
export interface CatalogTable {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
/** Scope is `tenant` for both tables (explicit org/workspace/project columns), mirroring `codebase`. */
|
|
12
|
+
readonly scope: "tenant";
|
|
13
|
+
/** How writes reconcile: identity is upserted, versions are append-only. */
|
|
14
|
+
readonly writePattern: "update-or-insert" | "append-only";
|
|
15
|
+
readonly columns: readonly ColumnDef[];
|
|
16
|
+
}
|
|
17
|
+
/** `source_graph` (identity + provenance). All TEXT NOT NULL with defaults; `kind` defaults to 'file'. */
|
|
18
|
+
export declare const SOURCE_GRAPH_COLUMNS: readonly ColumnDef[];
|
|
19
|
+
/** `source_graph_versions` (content + description chain). `embedding` + `confidence` + `fingerprint` are nullable. */
|
|
20
|
+
export declare const SOURCE_GRAPH_VERSIONS_COLUMNS: readonly ColumnDef[];
|
|
21
|
+
export declare const SOURCE_GRAPH_TABLE: CatalogTable;
|
|
22
|
+
export declare const SOURCE_GRAPH_VERSIONS_TABLE: CatalogTable;
|
|
23
|
+
/** The `source-graph` catalog group appended to the daemon's CATALOG aggregation. */
|
|
24
|
+
export declare const SOURCE_GRAPH_CATALOG_GROUP: {
|
|
25
|
+
readonly name: "source-graph";
|
|
26
|
+
readonly tables: readonly [CatalogTable, CatalogTable];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The load-time guard (mirrors honeycomb `schema.ts:80-100`): valid identifiers,
|
|
30
|
+
* no duplicate columns, and every NOT NULL column carries a DEFAULT. Throws on
|
|
31
|
+
* violation. Returns the table unchanged so it can wrap a definition inline.
|
|
32
|
+
*/
|
|
33
|
+
export declare function assertValidCatalogTable(table: CatalogTable): CatalogTable;
|
|
34
|
+
/**
|
|
35
|
+
* Render `CREATE TABLE IF NOT EXISTS "<name>" (...) USING deeplake` from a
|
|
36
|
+
* `CatalogTable`, mirroring honeycomb's `buildCreateTableSql`
|
|
37
|
+
* (`src/daemon/storage/schema.ts:110-114`). `IF NOT EXISTS` is what makes two
|
|
38
|
+
* concurrent healers converge: the second create is a harmless no-op, not a
|
|
39
|
+
* duplicate-table error. The table name is validated through `sqlIdent`;
|
|
40
|
+
* column names are validated at load by `assertValidCatalogTable`, so they are
|
|
41
|
+
* safe to interpolate via {@link columnClause}.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildCreateTableSql(table: CatalogTable): string;
|
|
44
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/source-graph/schema.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;CACxC;AAED,0GAA0G;AAC1G,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,EAUpD,CAAC;AAEF,sHAAsH;AACtH,eAAO,MAAM,6BAA6B,EAAE,SAAS,SAAS,EAuB7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAKhC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,YAKzC,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAIX;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAkBzE;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI/D"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Graph table definitions (PRD-005), transcribed from the DDL in
|
|
3
|
+
* `library/knowledge/private/data/source-graph-schema.md`.
|
|
4
|
+
*
|
|
5
|
+
* These `ColumnDef[]` arrays are the catalog contract the Deep Lake adapter
|
|
6
|
+
* (`deeplake-store.ts`) registers (mirroring honeycomb's `CatalogTable` /
|
|
7
|
+
* `ColumnDef` and its load-time guard: valid identifiers, no duplicates, and
|
|
8
|
+
* every NOT NULL column carries a DEFAULT, except the nullable
|
|
9
|
+
* `embedding`/`confidence`/`fingerprint`). Both tables self-create on first write via
|
|
10
|
+
* `deeplake-heal.ts`'s `withHeal`; there is no DDL pre-step.
|
|
11
|
+
*/
|
|
12
|
+
import { sqlIdent, sqlStr } from "./sql-guards.js";
|
|
13
|
+
/** `source_graph` (identity + provenance). All TEXT NOT NULL with defaults; `kind` defaults to 'file'. */
|
|
14
|
+
export const SOURCE_GRAPH_COLUMNS = [
|
|
15
|
+
{ name: "nectar", type: "TEXT", notNull: true, default: "" },
|
|
16
|
+
{ name: "kind", type: "TEXT", notNull: true, default: "file" },
|
|
17
|
+
{ name: "created_at", type: "TEXT", notNull: true, default: "" },
|
|
18
|
+
{ name: "derived_from_nectar", type: "TEXT", notNull: true, default: "" },
|
|
19
|
+
{ name: "fork_content_hash", type: "TEXT", notNull: true, default: "" },
|
|
20
|
+
{ name: "org_id", type: "TEXT", notNull: true, default: "" },
|
|
21
|
+
{ name: "workspace_id", type: "TEXT", notNull: true, default: "" },
|
|
22
|
+
{ name: "project_id", type: "TEXT", notNull: true, default: "" },
|
|
23
|
+
{ name: "last_update_date", type: "TEXT", notNull: true, default: "" },
|
|
24
|
+
];
|
|
25
|
+
/** `source_graph_versions` (content + description chain). `embedding` + `confidence` + `fingerprint` are nullable. */
|
|
26
|
+
export const SOURCE_GRAPH_VERSIONS_COLUMNS = [
|
|
27
|
+
{ name: "nectar", type: "TEXT", notNull: true, default: "" },
|
|
28
|
+
{ name: "content_hash", type: "TEXT", notNull: true, default: "" },
|
|
29
|
+
{ name: "seq", type: "BIGINT", notNull: true, default: 0 },
|
|
30
|
+
{ name: "path", type: "TEXT", notNull: true, default: "" },
|
|
31
|
+
{ name: "filename", type: "TEXT", notNull: true, default: "" },
|
|
32
|
+
{ name: "ext", type: "TEXT", notNull: true, default: "" },
|
|
33
|
+
{ name: "size_bytes", type: "BIGINT", notNull: true, default: 0 },
|
|
34
|
+
{ name: "mtime_observed", type: "TEXT", notNull: true, default: "" },
|
|
35
|
+
{ name: "title", type: "TEXT", notNull: true, default: "" },
|
|
36
|
+
{ name: "description", type: "TEXT", notNull: true, default: "" },
|
|
37
|
+
{ name: "concepts", type: "TEXT", notNull: true, default: "[]" },
|
|
38
|
+
{ name: "embedding", type: "FLOAT4[]", notNull: false },
|
|
39
|
+
{ name: "confidence", type: "REAL", notNull: false },
|
|
40
|
+
{ name: "fingerprint", type: "TEXT", notNull: false },
|
|
41
|
+
{ name: "described_at", type: "TEXT", notNull: true, default: "" },
|
|
42
|
+
{ name: "describe_model", type: "TEXT", notNull: true, default: "" },
|
|
43
|
+
{ name: "describe_status", type: "TEXT", notNull: true, default: "pending" },
|
|
44
|
+
{ name: "observed_at", type: "TEXT", notNull: true, default: "" },
|
|
45
|
+
{ name: "org_id", type: "TEXT", notNull: true, default: "" },
|
|
46
|
+
{ name: "workspace_id", type: "TEXT", notNull: true, default: "" },
|
|
47
|
+
{ name: "project_id", type: "TEXT", notNull: true, default: "" },
|
|
48
|
+
{ name: "last_update_date", type: "TEXT", notNull: true, default: "" },
|
|
49
|
+
];
|
|
50
|
+
export const SOURCE_GRAPH_TABLE = {
|
|
51
|
+
name: "source_graph",
|
|
52
|
+
scope: "tenant",
|
|
53
|
+
writePattern: "update-or-insert",
|
|
54
|
+
columns: SOURCE_GRAPH_COLUMNS,
|
|
55
|
+
};
|
|
56
|
+
export const SOURCE_GRAPH_VERSIONS_TABLE = {
|
|
57
|
+
name: "source_graph_versions",
|
|
58
|
+
scope: "tenant",
|
|
59
|
+
writePattern: "append-only",
|
|
60
|
+
columns: SOURCE_GRAPH_VERSIONS_COLUMNS,
|
|
61
|
+
};
|
|
62
|
+
/** The `source-graph` catalog group appended to the daemon's CATALOG aggregation. */
|
|
63
|
+
export const SOURCE_GRAPH_CATALOG_GROUP = {
|
|
64
|
+
name: "source-graph",
|
|
65
|
+
tables: [SOURCE_GRAPH_TABLE, SOURCE_GRAPH_VERSIONS_TABLE],
|
|
66
|
+
};
|
|
67
|
+
const IDENT_RE = /^[a-z_][a-z0-9_]*$/;
|
|
68
|
+
/**
|
|
69
|
+
* The load-time guard (mirrors honeycomb `schema.ts:80-100`): valid identifiers,
|
|
70
|
+
* no duplicate columns, and every NOT NULL column carries a DEFAULT. Throws on
|
|
71
|
+
* violation. Returns the table unchanged so it can wrap a definition inline.
|
|
72
|
+
*/
|
|
73
|
+
export function assertValidCatalogTable(table) {
|
|
74
|
+
if (!IDENT_RE.test(table.name)) {
|
|
75
|
+
throw new Error(`invalid table name: ${table.name}`);
|
|
76
|
+
}
|
|
77
|
+
const seen = new Set();
|
|
78
|
+
for (const col of table.columns) {
|
|
79
|
+
if (!IDENT_RE.test(col.name)) {
|
|
80
|
+
throw new Error(`invalid column identifier: ${table.name}.${col.name}`);
|
|
81
|
+
}
|
|
82
|
+
if (seen.has(col.name)) {
|
|
83
|
+
throw new Error(`duplicate column: ${table.name}.${col.name}`);
|
|
84
|
+
}
|
|
85
|
+
seen.add(col.name);
|
|
86
|
+
if (col.notNull && col.default === undefined) {
|
|
87
|
+
throw new Error(`NOT NULL column without DEFAULT: ${table.name}.${col.name}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return table;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Render one column's SQL clause (`<name> <type>[ NOT NULL][ DEFAULT <lit>]`)
|
|
94
|
+
* from a `ColumnDef`. The identifier is validated through `sqlIdent`; a
|
|
95
|
+
* string `default` is rendered as a quoted literal via `sqlStr` (the TEXT
|
|
96
|
+
* columns' defaults, e.g. `''`, `'file'`, `'[]'`, `'pending'`), a numeric
|
|
97
|
+
* `default` is inlined bare (the BIGINT columns' `0`). `FLOAT4[]`/`REAL`
|
|
98
|
+
* columns in this catalog are always nullable and carry no default.
|
|
99
|
+
*/
|
|
100
|
+
function columnClause(col) {
|
|
101
|
+
const name = sqlIdent(col.name);
|
|
102
|
+
const notNull = col.notNull ? " NOT NULL" : "";
|
|
103
|
+
let defaultClause = "";
|
|
104
|
+
if (col.default !== undefined) {
|
|
105
|
+
defaultClause = typeof col.default === "number" ? ` DEFAULT ${col.default}` : ` DEFAULT '${sqlStr(col.default)}'`;
|
|
106
|
+
}
|
|
107
|
+
return `${name} ${col.type}${notNull}${defaultClause}`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Render `CREATE TABLE IF NOT EXISTS "<name>" (...) USING deeplake` from a
|
|
111
|
+
* `CatalogTable`, mirroring honeycomb's `buildCreateTableSql`
|
|
112
|
+
* (`src/daemon/storage/schema.ts:110-114`). `IF NOT EXISTS` is what makes two
|
|
113
|
+
* concurrent healers converge: the second create is a harmless no-op, not a
|
|
114
|
+
* duplicate-table error. The table name is validated through `sqlIdent`;
|
|
115
|
+
* column names are validated at load by `assertValidCatalogTable`, so they are
|
|
116
|
+
* safe to interpolate via {@link columnClause}.
|
|
117
|
+
*/
|
|
118
|
+
export function buildCreateTableSql(table) {
|
|
119
|
+
const safeName = sqlIdent(table.name);
|
|
120
|
+
const colSql = table.columns.map(columnClause).join(", ");
|
|
121
|
+
return `CREATE TABLE IF NOT EXISTS "${safeName}" (${colSql}) USING deeplake`;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/source-graph/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL-safety escaping helpers for the Deep Lake adapter (PRD-005).
|
|
3
|
+
*
|
|
4
|
+
* Ported (not imported) from honeycomb's `src/daemon/storage/sql.ts`, per
|
|
5
|
+
* ADR-0002: hivenectar reaches Deep Lake over the network through its own
|
|
6
|
+
* client and never imports the honeycomb runtime in-process, so the escaping
|
|
7
|
+
* floor is mirrored here rather than shared across the process boundary.
|
|
8
|
+
*
|
|
9
|
+
* The Deep Lake HTTP query endpoint binds no parameters: every value is
|
|
10
|
+
* escaped and interpolated into the statement by hand before it is sent.
|
|
11
|
+
* There is no parameterized fallback to forget to use, so these helpers ARE
|
|
12
|
+
* the parameter binding. Every dynamic value the Deep Lake adapter builds
|
|
13
|
+
* (`schema.ts`'s `buildCreateTableSql`, `deeplake-store.ts`'s query builders)
|
|
14
|
+
* routes through `sqlStr` / `sqlLike` / `sqlIdent` / `sLiteral` / `eLiteral`.
|
|
15
|
+
*
|
|
16
|
+
* These functions are pure, synchronous, side-effect-free, and dependency-free
|
|
17
|
+
* beyond the language runtime (hivenectar's zero-runtime-dependency rule).
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Escape a string for use inside a single-quoted SQL literal.
|
|
21
|
+
*
|
|
22
|
+
* Order matters: backslashes are doubled FIRST (so the backslash added for a
|
|
23
|
+
* doubled quote is not itself re-escaped), then single quotes are doubled,
|
|
24
|
+
* then NUL and the C0/C1 control characters are dropped. The result is the
|
|
25
|
+
* inner body of the literal; the caller wraps it in quotes (`'${sqlStr(v)}'`,
|
|
26
|
+
* or via {@link sLiteral}) or uses the `E'...'` form via {@link eLiteral} when
|
|
27
|
+
* the body carries escape sequences.
|
|
28
|
+
*
|
|
29
|
+
* Because every quote is doubled and every backslash is doubled, an injection
|
|
30
|
+
* payload like `'; DROP TABLE x; --` collapses to one inert literal: the
|
|
31
|
+
* embedded quote can never close the string early, so no second statement is
|
|
32
|
+
* ever produced.
|
|
33
|
+
*/
|
|
34
|
+
export declare function sqlStr(value: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Escape a string for use inside a `LIKE` / `ILIKE` pattern.
|
|
37
|
+
*
|
|
38
|
+
* Escapes the `LIKE` metacharacters (`%` and `_`) so a literal substring
|
|
39
|
+
* search is never reinterpreted as a wildcard match, alongside the same
|
|
40
|
+
* quote-doubling and control stripping {@link sqlStr} performs. Not currently
|
|
41
|
+
* exercised by the source-graph store's equality-only reads, but ported
|
|
42
|
+
* alongside `sqlStr`/`sqlIdent` so a future prefix/substring query never has
|
|
43
|
+
* to reach for a hand-rolled escape.
|
|
44
|
+
*/
|
|
45
|
+
export declare function sqlLike(value: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Validate a table/column identifier against `^[a-zA-Z_][a-zA-Z0-9_]*$`.
|
|
48
|
+
* Returns the name UNCHANGED on success; throws on anything else.
|
|
49
|
+
*
|
|
50
|
+
* Strict by design: it THROWS rather than sanitizing, because a silently
|
|
51
|
+
* rewritten identifier would be a worse, harder-to-debug failure than a
|
|
52
|
+
* rejected one. Callers pass only known schema names (table and column
|
|
53
|
+
* identifiers from `SOURCE_GRAPH_COLUMNS` / `SOURCE_GRAPH_VERSIONS_COLUMNS`),
|
|
54
|
+
* so a rejection is always a programmer error worth surfacing.
|
|
55
|
+
*/
|
|
56
|
+
export declare function sqlIdent(name: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Build an ordinary single-quoted literal from a value. Thin convenience
|
|
59
|
+
* around `'${sqlStr(v)}'` so call sites read as a builder call rather than raw
|
|
60
|
+
* quote assembly. Use for ids, paths, hashes, enum-like values, and dates.
|
|
61
|
+
* Use {@link eLiteral} instead when the body may carry escape sequences
|
|
62
|
+
* (free-text title/description/concepts).
|
|
63
|
+
*/
|
|
64
|
+
export declare function sLiteral(value: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Build an `E'...'` escape-string literal from a raw text body.
|
|
67
|
+
*
|
|
68
|
+
* Free-text bodies that may contain escape sequences (a description or title
|
|
69
|
+
* with a literal backslash) must use the `E'...'` form so the
|
|
70
|
+
* doubled-backslash escaping from {@link sqlStr} round-trips to the intended
|
|
71
|
+
* bytes; a plain `'...'` literal for a body with backslashes would corrupt it.
|
|
72
|
+
*/
|
|
73
|
+
export declare function eLiteral(body: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Validate and render a numeric value for bare (unquoted) SQL interpolation.
|
|
76
|
+
* Throws unless `value` is, at runtime, a finite JavaScript `number` -
|
|
77
|
+
* TypeScript's `number` type is erased at runtime, so a value that merely
|
|
78
|
+
* carries the `number` type at compile time (e.g. `row.seq`, `row.sizeBytes`,
|
|
79
|
+
* `row.confidence`, or one entry of an embedding vector) is not actually
|
|
80
|
+
* guaranteed to be a safe, quote-free numeric literal unless this is checked
|
|
81
|
+
* here. Without this guard, a non-numeric value smuggled past the type
|
|
82
|
+
* system (a string, `NaN`, `Infinity`, or an object) would be interpolated
|
|
83
|
+
* bare via `String(value)` with no escaping at all - the same injection
|
|
84
|
+
* shape `sqlStr`/`sqlIdent` close for text and identifiers, just for the
|
|
85
|
+
* numeric case. Rejects `NaN`/`Infinity`/`-Infinity` too, since those are not
|
|
86
|
+
* valid bare-numeric SQL tokens.
|
|
87
|
+
*/
|
|
88
|
+
export declare function sqlNum(value: number): string;
|
|
89
|
+
/**
|
|
90
|
+
* Serialize a `number[]` to a `FLOAT4[]` SQL literal (`ARRAY[...]::float4[]`),
|
|
91
|
+
* mirroring honeycomb's `serializeFloat4Array` (`src/daemon/storage/vector.ts`).
|
|
92
|
+
* Every entry is validated via {@link sqlNum} before interpolation - the
|
|
93
|
+
* dimension contract (`isValidEmbedding`, 768) is a separate application-level
|
|
94
|
+
* check the caller is still responsible for, but this function does not rely
|
|
95
|
+
* on the caller to have validated *finiteness*: a non-numeric or non-finite
|
|
96
|
+
* entry throws here rather than being interpolated bare into the statement.
|
|
97
|
+
*/
|
|
98
|
+
export declare function sqlFloat4Array(vector: readonly number[]): string;
|
|
99
|
+
//# sourceMappingURL=sql-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-guards.d.ts","sourceRoot":"","sources":["../../src/source-graph/sql-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGhE"}
|