@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,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The workspace ignore contract for the file-registration intake (PRD-006a),
|
|
3
|
+
* extended by PRD-018c (NEC-007) into the ONE shared predicate every leg of
|
|
4
|
+
* the mission consults.
|
|
5
|
+
*
|
|
6
|
+
* Nectar does not maintain its own bespoke ignore list. Per PRD-006a
|
|
7
|
+
* ("Workspace scope and the ignore contract") and brooding-pipeline.md, the
|
|
8
|
+
* live-watch intake honors the SAME ignore contract the CodeGraph discovery
|
|
9
|
+
* uses: git-tracked-set semantics plus a per-repo ignore file. The daemon can
|
|
10
|
+
* later inject the real CodeGraph predicate; this module provides a pragmatic,
|
|
11
|
+
* dependency-free default so the intake is correct before that wiring lands.
|
|
12
|
+
*
|
|
13
|
+
* The default ({@link createDefaultIgnore}):
|
|
14
|
+
* - always skips the version-control and dependency dirs every CodeGraph
|
|
15
|
+
* discovery skips (`.git/`, `node_modules/`), and the daemon runtime dir
|
|
16
|
+
* (`.honeycomb/`) so the projection/lock/pid churn never triggers a cycle,
|
|
17
|
+
* - honors a `.honeycomb/graph-ignore.json`-style per-repo ignore file if one
|
|
18
|
+
* is present at the workspace root, matching the CodeGraph's own ignore-file
|
|
19
|
+
* convention (no nectar-specific list is invented).
|
|
20
|
+
*
|
|
21
|
+
* PRD-018c NEC-007 adds {@link createSharedIgnore}: the default UNION
|
|
22
|
+
* `.gitignore` semantics, so brooding discovery, the watch intake, and the
|
|
23
|
+
* resync path all exclude exactly the same set (AC-018c.1). Gitignore
|
|
24
|
+
* semantics are approximated by a cached `git ls-files --cached --others
|
|
25
|
+
* --exclude-standard` snapshot (the same "tracked + untracked-but-not-ignored"
|
|
26
|
+
* set brooding discovery already uses), refreshed on resync rather than
|
|
27
|
+
* spawned per event, with `git check-ignore` as the per-path fallback for a
|
|
28
|
+
* cache miss (a path created since the last refresh). Git genuinely absent
|
|
29
|
+
* degrades to the segment/graph-ignore-only default (silent, matches the walk
|
|
30
|
+
* fallback); git present but ERRORING is surfaced through `onGitError`,
|
|
31
|
+
* never silently collapsed (NEC-039).
|
|
32
|
+
*
|
|
33
|
+
* `isIgnored` takes a repo-relative, forward-slashed path.
|
|
34
|
+
*/
|
|
35
|
+
import { readFileSync } from "node:fs";
|
|
36
|
+
import { join } from "node:path";
|
|
37
|
+
import { spawnSync } from "node:child_process";
|
|
38
|
+
/** Path segments always dropped, independent of any ignore file. */
|
|
39
|
+
export const ALWAYS_IGNORED_SEGMENTS = [".git", "node_modules", ".honeycomb"];
|
|
40
|
+
/** The per-repo ignore file the CodeGraph discovery convention uses (relative to the workspace root). */
|
|
41
|
+
export const GRAPH_IGNORE_FILE = ".honeycomb/graph-ignore.json";
|
|
42
|
+
function normalize(relPath) {
|
|
43
|
+
// Trim a trailing slash too, so a declared prefix like "dist/" matches "dist"
|
|
44
|
+
// and "dist/x" whether or not the ignore file wrote the trailing slash.
|
|
45
|
+
return relPath
|
|
46
|
+
.replace(/\\/g, "/")
|
|
47
|
+
.replace(/^\.\//, "")
|
|
48
|
+
.replace(/^\/+/, "")
|
|
49
|
+
.replace(/\/+$/, "");
|
|
50
|
+
}
|
|
51
|
+
/** True if any path segment equals one of the always-ignored dir names. */
|
|
52
|
+
function hasIgnoredSegment(relPath) {
|
|
53
|
+
const segments = relPath.split("/");
|
|
54
|
+
for (const seg of segments) {
|
|
55
|
+
if (ALWAYS_IGNORED_SEGMENTS.includes(seg))
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Read the per-repo ignore file (a JSON array of prefixes, or `{ "ignore": [...] }`).
|
|
62
|
+
* Missing or malformed files yield an empty list (fail-open to the built-in
|
|
63
|
+
* segment rules); a hard read error other than "not found" is swallowed so the
|
|
64
|
+
* intake never crashes on a bad ignore file.
|
|
65
|
+
*/
|
|
66
|
+
export function loadIgnorePrefixes(root, readFile = defaultReadFile) {
|
|
67
|
+
let raw;
|
|
68
|
+
try {
|
|
69
|
+
raw = readFile(join(root, GRAPH_IGNORE_FILE));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
if (raw === null)
|
|
75
|
+
return [];
|
|
76
|
+
let parsed;
|
|
77
|
+
try {
|
|
78
|
+
parsed = JSON.parse(raw);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
const list = Array.isArray(parsed)
|
|
84
|
+
? parsed
|
|
85
|
+
: typeof parsed === "object" && parsed !== null && Array.isArray(parsed.ignore)
|
|
86
|
+
? parsed.ignore
|
|
87
|
+
: [];
|
|
88
|
+
return list.filter((entry) => typeof entry === "string" && entry.length > 0).map(normalize);
|
|
89
|
+
}
|
|
90
|
+
function defaultReadFile(p) {
|
|
91
|
+
try {
|
|
92
|
+
return readFileSync(p, "utf8");
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
if (typeof err === "object" && err !== null && err.code === "ENOENT")
|
|
96
|
+
return null;
|
|
97
|
+
throw err;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build the default ignore predicate for a workspace root. Combines the built-in
|
|
102
|
+
* segment rules with any prefixes declared in the repo's `graph-ignore.json`.
|
|
103
|
+
* A path is ignored if it (a) contains an always-ignored segment, or (b) equals
|
|
104
|
+
* or sits under one of the declared ignore prefixes.
|
|
105
|
+
*/
|
|
106
|
+
export function createDefaultIgnore(root, readFile = defaultReadFile) {
|
|
107
|
+
const prefixes = loadIgnorePrefixes(root, readFile);
|
|
108
|
+
return (relPath) => {
|
|
109
|
+
const p = normalize(relPath);
|
|
110
|
+
if (p === "")
|
|
111
|
+
return true;
|
|
112
|
+
if (hasIgnoredSegment(p))
|
|
113
|
+
return true;
|
|
114
|
+
for (const prefix of prefixes) {
|
|
115
|
+
if (p === prefix || p.startsWith(`${prefix}/`))
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// ── PRD-018c NEC-007/NEC-039: the git side of the shared ignore predicate ────
|
|
122
|
+
/** Args for the tracked+untracked-but-not-ignored snapshot (the same set brooding discovery enumerates). */
|
|
123
|
+
const GIT_SNAPSHOT_ARGS = ["ls-files", "--cached", "--others", "--exclude-standard", "-z"];
|
|
124
|
+
/** Guards a pathological repo's `ls-files` output. */
|
|
125
|
+
const GIT_SNAPSHOT_MAX_BUFFER = 64 * 1024 * 1024;
|
|
126
|
+
/** The real `git ls-files` runner: spawns synchronously, never throws. */
|
|
127
|
+
export const runGitLsFiles = (root) => {
|
|
128
|
+
let res;
|
|
129
|
+
try {
|
|
130
|
+
res = spawnSync("git", [...GIT_SNAPSHOT_ARGS], {
|
|
131
|
+
cwd: root,
|
|
132
|
+
encoding: "buffer",
|
|
133
|
+
maxBuffer: GIT_SNAPSHOT_MAX_BUFFER,
|
|
134
|
+
windowsHide: true,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
return { status: "error", reason: err instanceof Error ? err.message : String(err) };
|
|
139
|
+
}
|
|
140
|
+
if (res.error !== undefined) {
|
|
141
|
+
const code = res.error.code;
|
|
142
|
+
if (code === "ENOENT")
|
|
143
|
+
return { status: "absent" }; // git not on PATH
|
|
144
|
+
// ENOBUFS (output exceeded maxBuffer) and any other spawn-level error mean
|
|
145
|
+
// git IS present but the call itself failed: loud, never silent (NEC-039).
|
|
146
|
+
return { status: "error", reason: res.error.message };
|
|
147
|
+
}
|
|
148
|
+
if (res.status !== 0) {
|
|
149
|
+
const stderr = Buffer.isBuffer(res.stderr) ? res.stderr.toString("utf8") : String(res.stderr ?? "");
|
|
150
|
+
if (/not a git repository/i.test(stderr))
|
|
151
|
+
return { status: "absent" };
|
|
152
|
+
return { status: "error", reason: stderr.trim() || `git exited with status ${String(res.status)}` };
|
|
153
|
+
}
|
|
154
|
+
if (res.stdout === null)
|
|
155
|
+
return { status: "error", reason: "git ls-files produced no stdout" };
|
|
156
|
+
const stdout = Buffer.isBuffer(res.stdout) ? res.stdout.toString("utf8") : String(res.stdout);
|
|
157
|
+
const paths = stdout
|
|
158
|
+
.split("\0")
|
|
159
|
+
.map((p) => p.replace(/\\/g, "/"))
|
|
160
|
+
.filter((p) => p.length > 0);
|
|
161
|
+
return { status: "ok", paths };
|
|
162
|
+
};
|
|
163
|
+
export const runGitCheckIgnore = (root, relPath) => {
|
|
164
|
+
let res;
|
|
165
|
+
try {
|
|
166
|
+
res = spawnSync("git", ["check-ignore", "-q", "--", relPath], { cwd: root, windowsHide: true });
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
if (res.error !== undefined)
|
|
172
|
+
return null;
|
|
173
|
+
// check-ignore: exit 0 = ignored, 1 = not ignored, >1 (typically 128) = fatal error.
|
|
174
|
+
if (res.status === 0)
|
|
175
|
+
return true;
|
|
176
|
+
if (res.status === 1)
|
|
177
|
+
return false;
|
|
178
|
+
return null;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Build the ONE shared ignore predicate for a workspace (PRD-018c AC-018c.1):
|
|
182
|
+
* {@link createDefaultIgnore}'s segments+graph-ignore UNION gitignore
|
|
183
|
+
* semantics, approximated by a cached `git ls-files` snapshot with a
|
|
184
|
+
* per-path `git check-ignore` fallback for cache misses. Call {@link
|
|
185
|
+
* SharedIgnore.refresh} once per resync to keep the snapshot warm without
|
|
186
|
+
* spawning git on every watch event.
|
|
187
|
+
*/
|
|
188
|
+
export function createSharedIgnore(root, opts = {}) {
|
|
189
|
+
const base = createDefaultIgnore(root, opts.readFile);
|
|
190
|
+
const gitLsFiles = opts.gitLsFiles ?? runGitLsFiles;
|
|
191
|
+
const gitCheckIgnore = opts.gitCheckIgnore ?? runGitCheckIgnore;
|
|
192
|
+
const onGitError = opts.onGitError ?? (() => { });
|
|
193
|
+
/** Tracked+untracked-not-ignored snapshot; null when git is absent or no snapshot has ever succeeded. */
|
|
194
|
+
let eligible = null;
|
|
195
|
+
let gitAvailable = false;
|
|
196
|
+
let lastError = null;
|
|
197
|
+
function refresh() {
|
|
198
|
+
const probe = gitLsFiles(root);
|
|
199
|
+
switch (probe.status) {
|
|
200
|
+
case "ok":
|
|
201
|
+
eligible = new Set(probe.paths);
|
|
202
|
+
gitAvailable = true;
|
|
203
|
+
lastError = null;
|
|
204
|
+
return;
|
|
205
|
+
case "absent":
|
|
206
|
+
eligible = null;
|
|
207
|
+
gitAvailable = false;
|
|
208
|
+
lastError = null;
|
|
209
|
+
return;
|
|
210
|
+
case "error":
|
|
211
|
+
// Git IS present but errored (NEC-039): the failure is ALWAYS
|
|
212
|
+
// surfaced loudly via `onGitError`, regardless of caching. Whether
|
|
213
|
+
// gitignore semantics stay "available" depends on whether a prior
|
|
214
|
+
// successful snapshot is still cached: a still-useful (if stale)
|
|
215
|
+
// snapshot is never abandoned just because the LATEST refresh failed,
|
|
216
|
+
// but a workspace with no snapshot at all never silently claims full
|
|
217
|
+
// gitignore coverage by spawning `check-ignore` for every single
|
|
218
|
+
// path - it degrades to the segment/graph-ignore-only base instead.
|
|
219
|
+
gitAvailable = eligible !== null;
|
|
220
|
+
lastError = probe.reason;
|
|
221
|
+
onGitError(probe.reason);
|
|
222
|
+
return;
|
|
223
|
+
default: {
|
|
224
|
+
const _exhaustive = probe;
|
|
225
|
+
return _exhaustive;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
refresh(); // NEC-007 point 1: warm the cache once at construction.
|
|
230
|
+
function isGitIgnored(relPath) {
|
|
231
|
+
if (eligible === null)
|
|
232
|
+
return false; // no usable snapshot (git absent, or errored with nothing cached yet)
|
|
233
|
+
if (eligible.has(relPath))
|
|
234
|
+
return false; // definitely NOT ignored
|
|
235
|
+
// Cache miss against a real (possibly stale) snapshot: either genuinely
|
|
236
|
+
// ignored, or created since the last refresh. The per-path fallback keeps
|
|
237
|
+
// this correct without spawning git for every single event (NEC-007
|
|
238
|
+
// point 1) - it only runs for paths the last known-good snapshot didn't
|
|
239
|
+
// already resolve.
|
|
240
|
+
return gitCheckIgnore(root, relPath) === true;
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
isIgnored: (relPath) => base(relPath) || isGitIgnored(relPath),
|
|
244
|
+
refresh,
|
|
245
|
+
isGitAvailable: () => gitAvailable,
|
|
246
|
+
lastGitError: () => lastError,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/registration/ignore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The 5-step re-association ladder (PRD-006d), from ai/identity-and-reassociation.md.
|
|
3
|
+
*
|
|
4
|
+
* Evaluated top-down per observed file, first match wins:
|
|
5
|
+
* 1. (path, mtime, size) exact -> same nectar, no-op (no content read).
|
|
6
|
+
* 2. path match, content changed -> same nectar, append a version row.
|
|
7
|
+
* 3. exact content-hash match to a MISSING file -> carry the nectar (move).
|
|
8
|
+
* 4. TLSH fuzzy match to a missing file above a threshold -> carry, flag confidence;
|
|
9
|
+
* below the high band -> surface for review, do NOT claim, fall through to mint.
|
|
10
|
+
* 5. nothing matches -> mint a fresh nectar (or a copy, with provenance).
|
|
11
|
+
*
|
|
12
|
+
* DELIBERATE SPEC GAP preserved: the fuzzy confidence threshold is NOT pinned
|
|
13
|
+
* here. Step 4 runs only if a `fuzzy` step is injected, and that injected step
|
|
14
|
+
* owns the (deliberately unpinned, "tuned during brooding") threshold. The ladder
|
|
15
|
+
* itself hardcodes no number. Nectars are never deleted or reused (pruning is a
|
|
16
|
+
* separate, explicit operation, `prune --confirm`, PRD-006d / prune-cli.ts).
|
|
17
|
+
*/
|
|
18
|
+
import type { Tenancy } from "../hive-graph/model.js";
|
|
19
|
+
import type { LatestVersion, HiveGraphStore } from "../hive-graph/store.js";
|
|
20
|
+
/** A file observed on disk, ready to feed the ladder. `readContent` is called only when hashing is needed (not on the step-1 fast path). */
|
|
21
|
+
export interface ObservedFile {
|
|
22
|
+
readonly relPath: string;
|
|
23
|
+
readonly sizeBytes: number;
|
|
24
|
+
readonly mtimeObserved: string;
|
|
25
|
+
readContent(): string | Uint8Array;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A missing-file candidate the fuzzy step (step 4) consults. It is a superset of
|
|
29
|
+
* {@link LatestVersion} (so it still carries `.identity` and `.version`, keeping
|
|
30
|
+
* every existing injected fuzzy step working) plus the missing nectar's latest
|
|
31
|
+
* TLSH fingerprint. The fingerprint is read from the PERSISTED
|
|
32
|
+
* `hive_graph_versions.fingerprint` column of the candidate's latest version,
|
|
33
|
+
* so step 4 can match against a now-gone file without re-reading it AND survive a
|
|
34
|
+
* daemon restart: this is how the missing-files set "carries each missing
|
|
35
|
+
* nectar's latest content hash AND its TLSH fingerprint" (PRD-006b AC /
|
|
36
|
+
* identity-and-reassociation.md Step 3).
|
|
37
|
+
*/
|
|
38
|
+
export interface FuzzyCandidate extends LatestVersion {
|
|
39
|
+
/** The candidate's latest TLSH fingerprint, or null when none was cached. */
|
|
40
|
+
readonly fingerprint: string | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The injected fuzzy-match step (step 4). It owns fingerprinting, distance, the
|
|
44
|
+
* +/-20% size-bucket optimization, and the deliberately-unpinned confidence
|
|
45
|
+
* threshold. Given the new content and the missing candidates (each carrying a
|
|
46
|
+
* fingerprint), it returns a confident carry, a low-confidence review, or none.
|
|
47
|
+
*/
|
|
48
|
+
export interface FuzzyStep {
|
|
49
|
+
match(content: string | Uint8Array, candidates: readonly FuzzyCandidate[]): FuzzyOutcome;
|
|
50
|
+
}
|
|
51
|
+
export type FuzzyOutcome = {
|
|
52
|
+
readonly kind: "match";
|
|
53
|
+
readonly nectar: string;
|
|
54
|
+
readonly confidence: number;
|
|
55
|
+
readonly distance?: number;
|
|
56
|
+
} | {
|
|
57
|
+
readonly kind: "review";
|
|
58
|
+
readonly nectar: string;
|
|
59
|
+
readonly confidence: number;
|
|
60
|
+
readonly distance?: number;
|
|
61
|
+
} | {
|
|
62
|
+
readonly kind: "none";
|
|
63
|
+
};
|
|
64
|
+
/** A low-confidence step-4 candidate surfaced to `review-matches` (AC-18). Carries everything an accept needs. */
|
|
65
|
+
export interface ReviewCandidate {
|
|
66
|
+
/** The candidate MISSING nectar a human may confirm the new path is. */
|
|
67
|
+
readonly nectar: string;
|
|
68
|
+
/** The new path (already minted fresh at review time; accept re-associates it). */
|
|
69
|
+
readonly relPath: string;
|
|
70
|
+
readonly confidence: number;
|
|
71
|
+
readonly distance: number | null;
|
|
72
|
+
/** The new file's content hash (so accept can append the carried version row without re-reading disk). */
|
|
73
|
+
readonly contentHash: string;
|
|
74
|
+
readonly sizeBytes: number;
|
|
75
|
+
readonly mtimeObserved: string;
|
|
76
|
+
/** The fresh nectar minted for `relPath` when the review was raised. */
|
|
77
|
+
readonly mintedNectar: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The fast-path stat cache (PRD-018c NEC-035 / AC-018c.9): a side structure
|
|
81
|
+
* (never a hive-graph column) recording each path's freshest observed
|
|
82
|
+
* mtime/size when step 2 finds the content UNCHANGED (a touch, a branch-switch
|
|
83
|
+
* mtime bump). `hive_graph_versions.mtimeObserved`/`sizeBytes` are documented
|
|
84
|
+
* as "not authoritative; a fast-path cache key only" (model.ts) - the version
|
|
85
|
+
* ROW is never rewritten (append-only stays append-only); this cache is the
|
|
86
|
+
* "cheap side column" the PRD's fix direction offers as the alternative to an
|
|
87
|
+
* in-place UPDATE, so it carries no PRD-018g NEC-017 precedent. Step 1 prefers
|
|
88
|
+
* a cache hit over the stored version row's stat so a touch is remembered
|
|
89
|
+
* without a new version row, keeping the step-1 fast path fast forever
|
|
90
|
+
* instead of degrading to a full re-hash on every future observation.
|
|
91
|
+
*/
|
|
92
|
+
export interface StatCache {
|
|
93
|
+
get(relPath: string): {
|
|
94
|
+
readonly mtimeObserved: string;
|
|
95
|
+
readonly sizeBytes: number;
|
|
96
|
+
} | undefined;
|
|
97
|
+
set(relPath: string, stat: {
|
|
98
|
+
readonly mtimeObserved: string;
|
|
99
|
+
readonly sizeBytes: number;
|
|
100
|
+
}): void;
|
|
101
|
+
delete(relPath: string): void;
|
|
102
|
+
}
|
|
103
|
+
/** A simple `Map`-backed {@link StatCache}. One instance persists for the lifetime of a `RegistrationService` (across cycles, not across a daemon restart - a restart re-warms via the store's own version-row stat, just without the touch optimization until the next touch). */
|
|
104
|
+
export declare function createInMemoryStatCache(): StatCache;
|
|
105
|
+
export interface LadderDeps {
|
|
106
|
+
readonly store: HiveGraphStore;
|
|
107
|
+
readonly tenancy: Tenancy;
|
|
108
|
+
/** ISO 8601 "now"; injectable for deterministic tests. */
|
|
109
|
+
now(): string;
|
|
110
|
+
/** Whether a repo-relative path currently exists on disk. Distinguishes move (source gone) from copy (source present). */
|
|
111
|
+
existsOnDisk(relPath: string): boolean;
|
|
112
|
+
/** Optional step 4. Omit to disable fuzzy matching entirely (then an edited-moved file mints). */
|
|
113
|
+
readonly fuzzy?: FuzzyStep;
|
|
114
|
+
/** Called with a low-confidence step-4 candidate (surfaced to `review-matches`); the ladder then mints. */
|
|
115
|
+
onReviewNeeded?(candidate: ReviewCandidate): void;
|
|
116
|
+
/** Called when a version row is appended and warrants (re)description. */
|
|
117
|
+
onEnrichQueued?(nectar: string): void;
|
|
118
|
+
/**
|
|
119
|
+
* PRD-018c NEC-035 / AC-018c.9: the fast-path stat cache. Omit to preserve
|
|
120
|
+
* pre-018c behavior (a step-2 touch is never remembered, so every future
|
|
121
|
+
* observation re-hashes).
|
|
122
|
+
*/
|
|
123
|
+
readonly statCache?: StatCache;
|
|
124
|
+
/**
|
|
125
|
+
* PRD-018c NEC-034 / AC-018c.8: true when the workspace filesystem is
|
|
126
|
+
* case-insensitive (probed once per workspace, never guessed from
|
|
127
|
+
* `process.platform`). Enables the step-3 case-only-rename guard below.
|
|
128
|
+
* Omit/false preserves pre-018c case-sensitive behavior exactly.
|
|
129
|
+
*/
|
|
130
|
+
readonly caseInsensitive?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* PRD-018c EX-4 (change-detection review M7): the set of KNOWN paths
|
|
133
|
+
* currently missing from disk, computed ONCE per resync/settle cycle
|
|
134
|
+
* (`service.ts`'s `runCycle`) and passed in here so step 4's candidate scan
|
|
135
|
+
* is an O(1) set lookup instead of an `existsOnDisk` stat per known path per
|
|
136
|
+
* new file. Omit to fall back to the pre-018c per-candidate `existsOnDisk`
|
|
137
|
+
* stat (unit tests calling `reassociate` directly need no change).
|
|
138
|
+
*/
|
|
139
|
+
readonly missingPaths?: ReadonlySet<string>;
|
|
140
|
+
}
|
|
141
|
+
export type LadderStep = 1 | 2 | 3 | 4 | 5;
|
|
142
|
+
export type LadderAction = "noop" | "append-version" | "carry-nectar" | "mint" | "copy";
|
|
143
|
+
export interface LadderResult {
|
|
144
|
+
readonly step: LadderStep;
|
|
145
|
+
readonly action: LadderAction;
|
|
146
|
+
readonly nectar: string;
|
|
147
|
+
}
|
|
148
|
+
/** Run the ladder for one observed file. Returns which step fired and the nectar it resolved to. */
|
|
149
|
+
export declare function reassociate(file: ObservedFile, deps: LadderDeps): LadderResult;
|
|
150
|
+
/**
|
|
151
|
+
* Carry an existing nectar onto a new path (the `review-matches` accept path,
|
|
152
|
+
* AC-18): append a carried version row for `sourceNectar` at `target`. Returns
|
|
153
|
+
* false if the source nectar no longer exists. This is exactly what a
|
|
154
|
+
* high-confidence step 4 does, applied on human confirmation instead.
|
|
155
|
+
*
|
|
156
|
+
* The carried row's `fingerprint` is left NULL here: the accept path works from
|
|
157
|
+
* the persisted pending-candidate metadata (hash/size/mtime), not the file
|
|
158
|
+
* content, so there is nothing to fingerprint. It self-heals on the next
|
|
159
|
+
* observation of the file (a step-2 edit persists a fresh fingerprint), per the
|
|
160
|
+
* nullable-column contract.
|
|
161
|
+
*/
|
|
162
|
+
export declare function carryNectar(store: HiveGraphStore, tenancy: Tenancy, now: string, sourceNectar: string, target: {
|
|
163
|
+
relPath: string;
|
|
164
|
+
contentHash: string;
|
|
165
|
+
sizeBytes: number;
|
|
166
|
+
mtimeObserved: string;
|
|
167
|
+
}, confidence: number | null): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* PRD-018d (NEC-036): the idempotent crash-repair sweep for the ladder's
|
|
170
|
+
* multi-write actions.
|
|
171
|
+
*
|
|
172
|
+
* Every ladder action that mutates the store is a SEQUENCE of two writes
|
|
173
|
+
* (mint = `insertIdentity` + `appendVersion`; edit/carry = `appendVersion` +
|
|
174
|
+
* `touchIdentity`; review-accept = carry + `deleteNectar` of the placeholder,
|
|
175
|
+
* `review-cli.ts`), with no atomicity across a crash between them (the
|
|
176
|
+
* sync/async store bridge that would let these be one transaction is
|
|
177
|
+
* PRD-018b's construction, a Non-Goal here). This sweep heals the three
|
|
178
|
+
* resulting invariant violations instead, and is idempotent: running it again
|
|
179
|
+
* on an already-healed store finds nothing to do.
|
|
180
|
+
*
|
|
181
|
+
* 1. An orphan identity (a mint that crashed after `insertIdentity`, before
|
|
182
|
+
* `appendVersion`): zero version rows. There is no content to construct a
|
|
183
|
+
* version from, so the only sound repair is deleting the orphan (the same
|
|
184
|
+
* `deleteNectar` review-accept already uses to retire a placeholder -
|
|
185
|
+
* this sweep is not a new deletion path, just a new caller of the
|
|
186
|
+
* existing one). Requires the OPTIONAL `store.listIdentities` (skipped,
|
|
187
|
+
* not guessed at, when the adapter omits it).
|
|
188
|
+
* 2. A stale `identity.lastUpdateDate` (an edit/carry that crashed after
|
|
189
|
+
* `appendVersion`, before `touchIdentity`): the identity's timestamp
|
|
190
|
+
* predates its own latest version's `lastUpdateDate`, which feeds prune
|
|
191
|
+
* eligibility directly (`prune-cli.ts`). Healed by re-running
|
|
192
|
+
* `touchIdentity` with the version's own timestamp.
|
|
193
|
+
* 3. Two identities both claiming one path as their latest version's `path`
|
|
194
|
+
* (a review-accept that crashed after the carry landed, before the
|
|
195
|
+
* placeholder delete ran): under normal ladder operation a carry only
|
|
196
|
+
* ever targets a path with NO existing identity, so this can only be a
|
|
197
|
+
* crash artifact. The carried identity's version always has a strictly
|
|
198
|
+
* later `observedAt` than the placeholder's original mint, so the
|
|
199
|
+
* survivor is the entry with the latest `observedAt`; every other
|
|
200
|
+
* claimant is deleted.
|
|
201
|
+
*/
|
|
202
|
+
export declare function repairLadderState(store: HiveGraphStore, tenancy: Tenancy): RepairReport;
|
|
203
|
+
/** What {@link repairLadderState} healed in one sweep pass. */
|
|
204
|
+
export interface RepairReport {
|
|
205
|
+
readonly healedOrphanIdentities: number;
|
|
206
|
+
/** Orphan version rows (no matching identity) healed by reconstructing a minimal identity (CodeRabbit PR-18 finding #8). */
|
|
207
|
+
readonly healedOrphanVersions: number;
|
|
208
|
+
readonly healedStaleLastUpdate: number;
|
|
209
|
+
readonly healedDuplicatePaths: number;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=ladder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/registration/ladder.ts"],"names":[],"mappings":"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"}
|