@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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The brooding module barrel (PRD-007).
|
|
3
|
+
*
|
|
4
|
+
* The clean module surface the orchestrator wires into the CLI verb, the daemon
|
|
5
|
+
* boot (background auto-trigger), and the HTTP `POST /api/hive-graph/build`
|
|
6
|
+
* seam. Nothing here touches `src/cli.ts`, `src/daemon.ts`, or any other agent's
|
|
7
|
+
* file: the orchestrator imports {@link runBrood} / {@link planBrood} /
|
|
8
|
+
* {@link parseBroodArgs} / {@link shouldAutoBrood} and wires the seams.
|
|
9
|
+
*
|
|
10
|
+
* Pipeline order (fixed, PRD-007):
|
|
11
|
+
* discover -> pre-check -> bucket -> describe -> embed -> persist -> regenerate-projection
|
|
12
|
+
*/
|
|
13
|
+
// Stage constants + buckets (PRD-007b).
|
|
14
|
+
export { BATCH_FILE_SIZE, BATCH_TOTAL_SIZE, MAX_DESCRIBE_SIZE, BINARY_SNIFF_BYTES, BATCH_INPUT_TOKEN_BUDGET, MAX_BATCH_FILES, MIN_BATCH_FILES_BAND, BYTES_PER_TOKEN, KNOWN_BINARY_EXTENSIONS, } from "./constants.js";
|
|
15
|
+
// Stage 1: discovery (PRD-007a; NEC-007/NEC-039 loud-failure surfacing PRD-018c).
|
|
16
|
+
export { discoverFiles, spawnGitLsFiles, GitDiscoveryError, GIT_LS_FILES_MAX_BUFFER, GIT_LS_FILES_ARGS, } from "./discovery.js";
|
|
17
|
+
// Stage 2: content-hash pre-check (PRD-007a).
|
|
18
|
+
export { prepareFile, prepareFiles, contentHashPrecheck, } from "./precheck.js";
|
|
19
|
+
// Stage 3: bucketing + dynamic packing (PRD-007b).
|
|
20
|
+
export { estimateTokens, classifyBucket, packBatches, bucketFiles, } from "./bucketing.js";
|
|
21
|
+
// Cost math (PRD-007b).
|
|
22
|
+
export { GEMINI_INPUT_PRICE_PER_M_LE_200K, GEMINI_OUTPUT_PRICE_PER_M_LE_200K, GEMINI_INPUT_PRICE_PER_M_GT_200K, GEMINI_OUTPUT_PRICE_PER_M_GT_200K, AVG_OUTPUT_TOKENS_PER_CALL, BROODING_COST_REFERENCE, estimateBroodCost, } from "./cost.js";
|
|
23
|
+
// Stages 4-5: describe + embed (PRD-007b).
|
|
24
|
+
export { BATCH_SYSTEM_PROMPT, SOLO_SYSTEM_PROMPT, MAX_TITLE_CHARS, MAX_CONCEPTS, MAX_DESCRIPTION_CHARS, buildBatchUserMessage, buildSoloUserMessage, extractJson, describeBatchGroup, describeSoloFile, embeddingText, embedDescriptions, } from "./describe.js";
|
|
25
|
+
// Resumability state machine (PRD-007c).
|
|
26
|
+
export { BROOD_TERMINAL_STATUSES, isTerminalBroodStatus, isForceProtectedStatus, classifyResume, } from "./resumability.js";
|
|
27
|
+
// Orchestrator (PRD-007).
|
|
28
|
+
export { BroodError, planBrood, runBrood, resolveProjection, buildVersionRow, buildIdentity, resolveDescribeFn, defaultNow, } from "./pipeline.js";
|
|
29
|
+
// Async-native orchestrator: the sync/async store bridge (Wave D dormancy closure).
|
|
30
|
+
export { planBroodAsync, runBroodAsync, } from "./pipeline-async.js";
|
|
31
|
+
// CLI verb surface + dry-run (PRD-007d).
|
|
32
|
+
export { parseBroodArgs, shouldAutoBrood, evaluateAutoBrood, evaluateAutoBroodAsync, formatDryRunReport, } from "./cli.js";
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/brooding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,wCAAwC;AACxC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AAExB,kFAAkF;AAClF,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAOlB,MAAM,gBAAgB,CAAC;AAExB,8CAA8C;AAC9C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,mBAAmB,GAIpB,MAAM,eAAe,CAAC;AAEvB,mDAAmD;AACnD,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,GAIZ,MAAM,gBAAgB,CAAC;AAExB,wBAAwB;AACxB,OAAO,EACL,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,GAGlB,MAAM,WAAW,CAAC;AAEnB,2CAA2C;AAC3C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAKlB,MAAM,eAAe,CAAC;AAEvB,yCAAyC;AACzC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,OAAO,EACL,UAAU,EACV,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GAUX,MAAM,eAAe,CAAC;AAEvB,oFAAoF;AACpF,OAAO,EACL,cAAc,EACd,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,yCAAyC;AACzC,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GAInB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The async-native brooding pipeline (the sync/async bridge, Wave D dormancy closure).
|
|
3
|
+
*
|
|
4
|
+
* `runBrood` (`pipeline.ts`) consumes the SYNCHRONOUS {@link HiveGraphStore}; the
|
|
5
|
+
* only durable substrate (`DeepLakeHiveGraphStore`) implements the ASYNC
|
|
6
|
+
* {@link AsyncHiveGraphStore}. Rather than hydrate an entire repo's version rows
|
|
7
|
+
* into an in-memory sync mirror (the batch-shaped brood is exactly the workload
|
|
8
|
+
* where that is the wrong trade), this is an async-native variant of the same
|
|
9
|
+
* pipeline: it reuses every store-agnostic stage verbatim
|
|
10
|
+
* (`discoverFiles`/`prepareFiles`/`contentHashPrecheck`/`bucketFiles`/
|
|
11
|
+
* `classifyResume`/`describeBatchGroup`/`describeSoloFile`/`embedDescriptions`/
|
|
12
|
+
* `estimateBroodCost`) and the shared row/identity/describe helpers exported from
|
|
13
|
+
* `pipeline.ts`, differing ONLY in that each store read/write is `await`ed
|
|
14
|
+
* against the async store. `runBrood` was already `async` (it awaits the LLM +
|
|
15
|
+
* embed stages), so the sole structural change here is threading `await` through
|
|
16
|
+
* the store calls; the fixed pipeline order and every semantic (resumability via
|
|
17
|
+
* `describe_status`, the #22 packing, the skip-bucket terminal writes, fail-soft
|
|
18
|
+
* projection regen) is identical.
|
|
19
|
+
*
|
|
20
|
+
* This is the path the live `POST /api/hive-graph/build` endpoint and the
|
|
21
|
+
* daemon's durable auto-brood invoke (see `api/daemon-api-wiring.ts` and
|
|
22
|
+
* `daemon.ts`).
|
|
23
|
+
*/
|
|
24
|
+
import type { Tenancy } from "../hive-graph/model.js";
|
|
25
|
+
import type { AsyncHiveGraphStore } from "../hive-graph/store.js";
|
|
26
|
+
import type { RegistrationFs } from "../registration/service.js";
|
|
27
|
+
import type { IgnorePredicate } from "../registration/ignore.js";
|
|
28
|
+
import type { PortkeyFetch } from "../portkey/transport.js";
|
|
29
|
+
import type { PortkeyEnabled } from "../portkey/config.js";
|
|
30
|
+
import { type EmbedProvider } from "../embeddings/provider.js";
|
|
31
|
+
import type { PortableProjection } from "../projection/format.js";
|
|
32
|
+
import { type GitLsFiles } from "./discovery.js";
|
|
33
|
+
import { type PackBatchesOptions } from "./bucketing.js";
|
|
34
|
+
import { type DescribeFn } from "./describe.js";
|
|
35
|
+
import { type BroodPlan, type BroodResult, type BroodRunOptions, type PlanBroodOptions } from "./pipeline.js";
|
|
36
|
+
/** Shared configuration for {@link planBroodAsync} and {@link runBroodAsync} (the async twin of `BroodConfig`). */
|
|
37
|
+
export interface AsyncBroodConfig {
|
|
38
|
+
/** The durable async store the brood reads from and writes to (Deep Lake). */
|
|
39
|
+
readonly store: AsyncHiveGraphStore;
|
|
40
|
+
readonly tenancy: Tenancy;
|
|
41
|
+
/** The project root discovery walks and the projection is written under. */
|
|
42
|
+
readonly root: string;
|
|
43
|
+
/** Filesystem seam (stat/read/list); typically `createDiskRegistrationFs(root)`. */
|
|
44
|
+
readonly fs: RegistrationFs;
|
|
45
|
+
/** git-ls-files seam (default spawns git); overridden in tests. */
|
|
46
|
+
readonly gitLsFiles?: GitLsFiles;
|
|
47
|
+
/** Ignore predicate for the walk fallback (default: the shared CodeGraph ignore). */
|
|
48
|
+
readonly isIgnored?: IgnorePredicate;
|
|
49
|
+
/**
|
|
50
|
+
* The committed projection consulted by the pre-check. `undefined` -> attempt
|
|
51
|
+
* to load `<root>/.honeycomb/nectars.json`; `null` -> no projection.
|
|
52
|
+
*/
|
|
53
|
+
readonly projection?: PortableProjection | null;
|
|
54
|
+
/** ISO 8601 "now"; injectable for deterministic tests. */
|
|
55
|
+
readonly now?: () => string;
|
|
56
|
+
/** Dynamic batch-packing overrides (default: the decision #22 constants). */
|
|
57
|
+
readonly packOptions?: PackBatchesOptions;
|
|
58
|
+
/** Structured log sink; defaults to a no-op. */
|
|
59
|
+
readonly log?: (line: Record<string, unknown>) => void;
|
|
60
|
+
}
|
|
61
|
+
/** Transport + provider seams a full async describe run needs (never touched by dry-run). */
|
|
62
|
+
export interface AsyncBroodRuntimeDeps {
|
|
63
|
+
/** The chat transport. Default wires `describeViaPortkey` against `portkey`. */
|
|
64
|
+
readonly describe?: DescribeFn;
|
|
65
|
+
/** Portkey credentials used to build the default `describe` when none is given. */
|
|
66
|
+
readonly portkey?: PortkeyEnabled;
|
|
67
|
+
/** Injectable fetch for the default describe transport (tests). */
|
|
68
|
+
readonly fetch?: PortkeyFetch;
|
|
69
|
+
/** The embedding provider (default: the disabled provider -> NULL embeddings, BM25 fallback). */
|
|
70
|
+
readonly embedProvider?: EmbedProvider;
|
|
71
|
+
/** Active embedding model id stamped as `embed_model` on rows carrying an embedding (PRD-018i / NEC-018). */
|
|
72
|
+
readonly embedModelId?: string | null;
|
|
73
|
+
/**
|
|
74
|
+
* Projection regeneration seam (default: {@link rebuildProjectionAsync} from
|
|
75
|
+
* the async store). Returns the written path. The async twin of the sync
|
|
76
|
+
* pipeline's `regenerateProjection`.
|
|
77
|
+
*/
|
|
78
|
+
readonly regenerateProjection?: (store: AsyncHiveGraphStore, tenancy: Tenancy, root: string) => Promise<string>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The `--dry-run` cost preview against the async store (the async twin of
|
|
82
|
+
* {@link planBrood}): discover -> pre-check -> bucket -> estimate. Makes NO LLM
|
|
83
|
+
* call and writes NOTHING (no rows, no projection); it only reads the async
|
|
84
|
+
* store's latest-per-nectar set for the pre-check's already-brooded skip. The
|
|
85
|
+
* bucket counts and estimate reflect only the resumability-remaining
|
|
86
|
+
* survivors (brooding review M4 / EX-3).
|
|
87
|
+
*/
|
|
88
|
+
export declare function planBroodAsync(config: AsyncBroodConfig, options?: PlanBroodOptions): Promise<BroodPlan>;
|
|
89
|
+
/**
|
|
90
|
+
* The full brooding run against the durable {@link AsyncHiveGraphStore} (the
|
|
91
|
+
* sync/async bridge). Applies resumability, mints, describes, embeds, persists,
|
|
92
|
+
* and regenerates the projection - identical in behavior to {@link runBrood},
|
|
93
|
+
* awaiting the async store throughout. On `dryRun`, delegates to
|
|
94
|
+
* {@link planBroodAsync} and returns without any LLM call or store write.
|
|
95
|
+
*/
|
|
96
|
+
export declare function runBroodAsync(config: AsyncBroodConfig, deps?: AsyncBroodRuntimeDeps, options?: BroodRunOptions): Promise<BroodResult>;
|
|
97
|
+
//# sourceMappingURL=pipeline-async.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-async.d.ts","sourceRoot":"","sources":["../../src/brooding/pipeline-async.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAqC,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAIL,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AAEvB,mHAAmH;AACnH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,gDAAgD;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACxD;AAED,6FAA6F;AAC7F,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,6GAA6G;IAC7G,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjH;AAmDD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBjH;AAqBD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,qBAA0B,EAChC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAmStB"}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import { isValidEmbedding } from "../hive-graph/model.js";
|
|
2
|
+
import { mintNectar } from "../hive-graph/ulid.js";
|
|
3
|
+
import { filenameOf } from "../hive-graph/paths.js";
|
|
4
|
+
import { createOffProvider } from "../embeddings/provider.js";
|
|
5
|
+
import { rebuildProjectionAsync } from "../projection/write.js";
|
|
6
|
+
import { discoverFiles } from "./discovery.js";
|
|
7
|
+
import { contentHashPrecheck, prepareFiles } from "./precheck.js";
|
|
8
|
+
import { bucketFiles, classifyBucket } from "./bucketing.js";
|
|
9
|
+
import { estimateBroodCost, usageCostUsd } from "./cost.js";
|
|
10
|
+
import { describeBatchGroup, describeSoloFile, embedDescriptions, } from "./describe.js";
|
|
11
|
+
import { classifyResume } from "./resumability.js";
|
|
12
|
+
import { BroodError, buildIdentity, buildVersionRow, defaultNow, resolveDescribeFn, resolveProjection, } from "./pipeline.js";
|
|
13
|
+
/** The set of nectars already present in the async store (skip re-inheriting these). */
|
|
14
|
+
async function existingNectarSetAsync(store, tenancy) {
|
|
15
|
+
const set = new Set();
|
|
16
|
+
for (const lv of await store.listLatestVersions(tenancy))
|
|
17
|
+
set.add(lv.identity.nectar);
|
|
18
|
+
return set;
|
|
19
|
+
}
|
|
20
|
+
/** Stage 1-3: discover -> pre-check -> bucket against the async store, returning survivors + buckets. */
|
|
21
|
+
async function discoverPrecheckBucketAsync(config, options = {}) {
|
|
22
|
+
const discovery = discoverFiles({
|
|
23
|
+
root: config.root,
|
|
24
|
+
fs: config.fs,
|
|
25
|
+
gitLsFiles: config.gitLsFiles,
|
|
26
|
+
isIgnored: config.isIgnored,
|
|
27
|
+
});
|
|
28
|
+
const prepared = prepareFiles(config.fs, discovery.files);
|
|
29
|
+
const precheck = contentHashPrecheck(prepared, {
|
|
30
|
+
tenancy: config.tenancy,
|
|
31
|
+
projection: resolveProjection(config),
|
|
32
|
+
existingNectars: await existingNectarSetAsync(config.store, config.tenancy),
|
|
33
|
+
nowIso: (config.now ?? defaultNow)(),
|
|
34
|
+
});
|
|
35
|
+
// Apply the resume partition before bucketing (brooding review M4 / EX-3):
|
|
36
|
+
// a `--dry-run` should quote the REMAINING cost, not the full original cost.
|
|
37
|
+
const remaining = [];
|
|
38
|
+
for (const p of precheck.survivors) {
|
|
39
|
+
const existing = await config.store.latestVersionByPath(config.tenancy, p.file.relPath);
|
|
40
|
+
const action = classifyResume(existing?.version, { force: options.force, preparedContentHash: p.contentHash });
|
|
41
|
+
if (action !== "skip")
|
|
42
|
+
remaining.push(p);
|
|
43
|
+
}
|
|
44
|
+
const bucketed = bucketFiles(remaining, config.packOptions);
|
|
45
|
+
return {
|
|
46
|
+
source: discovery.source,
|
|
47
|
+
discoveredCount: discovery.files.length,
|
|
48
|
+
inheritedRows: precheck.inheritedRows,
|
|
49
|
+
survivors: precheck.survivors,
|
|
50
|
+
bucketed,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The `--dry-run` cost preview against the async store (the async twin of
|
|
55
|
+
* {@link planBrood}): discover -> pre-check -> bucket -> estimate. Makes NO LLM
|
|
56
|
+
* call and writes NOTHING (no rows, no projection); it only reads the async
|
|
57
|
+
* store's latest-per-nectar set for the pre-check's already-brooded skip. The
|
|
58
|
+
* bucket counts and estimate reflect only the resumability-remaining
|
|
59
|
+
* survivors (brooding review M4 / EX-3).
|
|
60
|
+
*/
|
|
61
|
+
export async function planBroodAsync(config, options = {}) {
|
|
62
|
+
const { source, discoveredCount, inheritedRows, bucketed } = await discoverPrecheckBucketAsync(config, options);
|
|
63
|
+
const estimate = estimateBroodCost(bucketed);
|
|
64
|
+
return {
|
|
65
|
+
source,
|
|
66
|
+
discoveredCount,
|
|
67
|
+
inheritedCount: inheritedRows.length,
|
|
68
|
+
survivorCount: bucketed.skipBinary.length + bucketed.skipTooLarge.length + bucketed.batchFileCount + bucketed.soloFileCount,
|
|
69
|
+
skipBinaryCount: bucketed.skipBinary.length,
|
|
70
|
+
skipTooLargeCount: bucketed.skipTooLarge.length,
|
|
71
|
+
batchFileCount: bucketed.batchFileCount,
|
|
72
|
+
soloFileCount: bucketed.soloFileCount,
|
|
73
|
+
batchCalls: bucketed.batches.length,
|
|
74
|
+
soloCalls: bucketed.soloFiles.length,
|
|
75
|
+
estimate,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Persist a terminal (skip) row against the async store: mint+insert for fresh, append+touch for re-enqueue. */
|
|
79
|
+
async function persistTerminalAsync(config, now, item, fields) {
|
|
80
|
+
if (item.action === "fresh") {
|
|
81
|
+
const nectar = mintNectar();
|
|
82
|
+
await config.store.insertIdentity(buildIdentity(config.tenancy, now, nectar));
|
|
83
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now, item.prepared, nectar, 0, fields));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const nectar = item.existingNectar;
|
|
87
|
+
const seq = await config.store.nextSeq(nectar);
|
|
88
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now, item.prepared, nectar, seq, fields));
|
|
89
|
+
await config.store.touchIdentity(nectar, now);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The full brooding run against the durable {@link AsyncHiveGraphStore} (the
|
|
94
|
+
* sync/async bridge). Applies resumability, mints, describes, embeds, persists,
|
|
95
|
+
* and regenerates the projection - identical in behavior to {@link runBrood},
|
|
96
|
+
* awaiting the async store throughout. On `dryRun`, delegates to
|
|
97
|
+
* {@link planBroodAsync} and returns without any LLM call or store write.
|
|
98
|
+
*/
|
|
99
|
+
export async function runBroodAsync(config, deps = {}, options = {}) {
|
|
100
|
+
const now = config.now ?? defaultNow;
|
|
101
|
+
if (options.dryRun === true) {
|
|
102
|
+
const plan = await planBroodAsync(config, { force: options.force });
|
|
103
|
+
return {
|
|
104
|
+
...plan,
|
|
105
|
+
dryRun: true,
|
|
106
|
+
skippedResumeCount: 0,
|
|
107
|
+
reenqueueCount: 0,
|
|
108
|
+
freshCount: 0,
|
|
109
|
+
describedCount: 0,
|
|
110
|
+
failedCount: 0,
|
|
111
|
+
projectionPath: null,
|
|
112
|
+
actualUsage: { inputTokens: 0, outputTokens: 0, usd: 0 },
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// ── Stage 1-2: discover + pre-check (writes inherited rows, $0) ──────────────
|
|
116
|
+
const discovery = discoverFiles({
|
|
117
|
+
root: config.root,
|
|
118
|
+
fs: config.fs,
|
|
119
|
+
gitLsFiles: config.gitLsFiles,
|
|
120
|
+
isIgnored: config.isIgnored,
|
|
121
|
+
});
|
|
122
|
+
const prepared = prepareFiles(config.fs, discovery.files);
|
|
123
|
+
const precheck = contentHashPrecheck(prepared, {
|
|
124
|
+
tenancy: config.tenancy,
|
|
125
|
+
projection: resolveProjection(config),
|
|
126
|
+
existingNectars: await existingNectarSetAsync(config.store, config.tenancy),
|
|
127
|
+
nowIso: now(),
|
|
128
|
+
});
|
|
129
|
+
for (const row of precheck.inheritedRows) {
|
|
130
|
+
if ((await config.store.getIdentity(row.identity.nectar)) === undefined) {
|
|
131
|
+
await config.store.insertIdentity(row.identity);
|
|
132
|
+
}
|
|
133
|
+
await config.store.appendVersion(row.version);
|
|
134
|
+
}
|
|
135
|
+
// ── Resumability: partition survivors into skip / re-enqueue / fresh ─────────
|
|
136
|
+
let skippedResumeCount = 0;
|
|
137
|
+
const toBrood = [];
|
|
138
|
+
for (const p of precheck.survivors) {
|
|
139
|
+
const existing = await config.store.latestVersionByPath(config.tenancy, p.file.relPath);
|
|
140
|
+
const action = classifyResume(existing?.version, {
|
|
141
|
+
force: options.force,
|
|
142
|
+
preparedContentHash: p.contentHash,
|
|
143
|
+
});
|
|
144
|
+
if (action === "skip") {
|
|
145
|
+
skippedResumeCount += 1;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (action === "re-enqueue") {
|
|
149
|
+
toBrood.push({
|
|
150
|
+
prepared: p,
|
|
151
|
+
action: "re-enqueue",
|
|
152
|
+
existingNectar: existing?.identity.nectar,
|
|
153
|
+
latestPending: existing?.version.describeStatus === "pending",
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
toBrood.push({ prepared: p, action: "fresh" });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// ── Stage 3: bucket. Skip buckets are terminal writes; batch/solo get described.
|
|
161
|
+
const skipItems = [];
|
|
162
|
+
const describeItems = [];
|
|
163
|
+
for (const item of toBrood) {
|
|
164
|
+
const bucket = classifyBucket(item.prepared);
|
|
165
|
+
if (bucket === "skip-binary" || bucket === "skip-too-large")
|
|
166
|
+
skipItems.push(item);
|
|
167
|
+
else
|
|
168
|
+
describeItems.push(item);
|
|
169
|
+
}
|
|
170
|
+
// Persist the skip buckets (mint nectar / reuse; write a terminal skip row).
|
|
171
|
+
let skipBinaryCount = 0;
|
|
172
|
+
let skipTooLargeCount = 0;
|
|
173
|
+
for (const item of skipItems) {
|
|
174
|
+
const bucket = classifyBucket(item.prepared);
|
|
175
|
+
const status = bucket === "skip-binary" ? "skipped-binary" : "skipped-too-large";
|
|
176
|
+
if (status === "skipped-binary")
|
|
177
|
+
skipBinaryCount += 1;
|
|
178
|
+
else
|
|
179
|
+
skipTooLargeCount += 1;
|
|
180
|
+
await persistTerminalAsync(config, now(), item, {
|
|
181
|
+
title: filenameOf(item.prepared.file.relPath),
|
|
182
|
+
describeStatus: status,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// ── `--limit N`: cap describe-eligible files (the rest resume on a later run).
|
|
186
|
+
const capped = options.limit !== undefined && options.limit >= 0 ? describeItems.slice(0, options.limit) : describeItems;
|
|
187
|
+
// ── Phase A: mint identities + write pending rows for the describe set ───────
|
|
188
|
+
const nectarByPrepared = new Map();
|
|
189
|
+
let freshCount = 0;
|
|
190
|
+
let reenqueueCount = 0;
|
|
191
|
+
for (const item of capped) {
|
|
192
|
+
if (item.action === "fresh") {
|
|
193
|
+
freshCount += 1;
|
|
194
|
+
const nectar = mintNectar();
|
|
195
|
+
await config.store.insertIdentity(buildIdentity(config.tenancy, now(), nectar));
|
|
196
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now(), item.prepared, nectar, 0, { describeStatus: "pending" }));
|
|
197
|
+
nectarByPrepared.set(item.prepared, nectar);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
reenqueueCount += 1;
|
|
201
|
+
const nectar = item.existingNectar;
|
|
202
|
+
if (item.latestPending !== true) {
|
|
203
|
+
const seq = await config.store.nextSeq(nectar);
|
|
204
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now(), item.prepared, nectar, seq, { describeStatus: "pending" }));
|
|
205
|
+
await config.store.touchIdentity(nectar, now());
|
|
206
|
+
}
|
|
207
|
+
nectarByPrepared.set(item.prepared, nectar);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// ── Stage 4-6: describe -> embed -> persist, INCREMENTALLY per batch group
|
|
211
|
+
// and per solo call (NEC-003 / AC-018e.1-4): a chunk's described+failed rows
|
|
212
|
+
// are committed to the store before the next chunk's describe call runs, so
|
|
213
|
+
// a mid-run kill (or a throwing embed provider) leaves every already-
|
|
214
|
+
// completed chunk durable. A transport-level batch failure marks its rows
|
|
215
|
+
// failed with no solo retry, and a truncated batch is halved and retried
|
|
216
|
+
// (NEC-013); the positional-fallback safety lives in `describe.ts` (NEC-014).
|
|
217
|
+
const describe = resolveDescribeFn(deps, capped.length);
|
|
218
|
+
const bucketed = bucketFiles(capped.map((i) => i.prepared), config.packOptions);
|
|
219
|
+
const embedProvider = deps.embedProvider ?? createOffProvider();
|
|
220
|
+
const embedModelId = deps.embedModelId ?? null;
|
|
221
|
+
const preparedByNectar = new Map();
|
|
222
|
+
for (const [prepared, nectar] of nectarByPrepared)
|
|
223
|
+
preparedByNectar.set(nectar, prepared);
|
|
224
|
+
const targetFor = (p) => ({ nectar: nectarByPrepared.get(p), prepared: p });
|
|
225
|
+
let describedCount = 0;
|
|
226
|
+
let failedCount = 0;
|
|
227
|
+
let actualInputTokens = 0;
|
|
228
|
+
let actualOutputTokens = 0;
|
|
229
|
+
function accumulateUsage(usage) {
|
|
230
|
+
if (usage === null)
|
|
231
|
+
return;
|
|
232
|
+
actualInputTokens += usage.inputTokens;
|
|
233
|
+
actualOutputTokens += usage.outputTokens;
|
|
234
|
+
}
|
|
235
|
+
/** Embed one chunk's described payloads and persist them immediately (await against the async store). */
|
|
236
|
+
async function persistDescribedChunk(entries) {
|
|
237
|
+
if (entries.length === 0)
|
|
238
|
+
return;
|
|
239
|
+
const vectors = await embedDescriptions(embedProvider, entries.map((e) => e.payload));
|
|
240
|
+
for (let i = 0; i < entries.length; i++) {
|
|
241
|
+
const e = entries[i];
|
|
242
|
+
const raw = vectors[i] ?? null;
|
|
243
|
+
const embedding = isValidEmbedding(raw) ? raw : null;
|
|
244
|
+
const seq = await config.store.nextSeq(e.nectar);
|
|
245
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now(), e.prepared, e.nectar, seq, {
|
|
246
|
+
title: e.payload.title,
|
|
247
|
+
description: e.payload.description,
|
|
248
|
+
concepts: e.payload.concepts,
|
|
249
|
+
describeStatus: "described",
|
|
250
|
+
describeModel: e.model,
|
|
251
|
+
describedAt: now(),
|
|
252
|
+
embedding,
|
|
253
|
+
embedModel: embedding !== null ? embedModelId : null,
|
|
254
|
+
}));
|
|
255
|
+
await config.store.touchIdentity(e.nectar, now());
|
|
256
|
+
describedCount += 1;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/** Persist a set of nectars as `failed` immediately (re-enqueueable next run / by the enricher). */
|
|
260
|
+
async function persistFailedNectars(nectars) {
|
|
261
|
+
for (const nectar of nectars) {
|
|
262
|
+
const prepared = preparedByNectar.get(nectar);
|
|
263
|
+
if (prepared === undefined)
|
|
264
|
+
continue;
|
|
265
|
+
const seq = await config.store.nextSeq(nectar);
|
|
266
|
+
await config.store.appendVersion(buildVersionRow(config.tenancy, now(), prepared, nectar, seq, { describeStatus: "failed" }));
|
|
267
|
+
await config.store.touchIdentity(nectar, now());
|
|
268
|
+
failedCount += 1;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/** Describe one solo target and persist its outcome before the next solo call is issued (AC-018e.2). */
|
|
272
|
+
async function describeAndPersistSolo(target) {
|
|
273
|
+
const solo = await describeSoloFile(target, describe, options.model);
|
|
274
|
+
accumulateUsage(solo.usage);
|
|
275
|
+
if (solo.payload !== null) {
|
|
276
|
+
await persistDescribedChunk([
|
|
277
|
+
{ nectar: target.nectar, prepared: target.prepared, payload: solo.payload, model: solo.model },
|
|
278
|
+
]);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
await persistFailedNectars([target.nectar]);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Describe one batch group, applying the failure-class retry policy
|
|
286
|
+
* (NEC-013) and the malformed-entry solo retry (spec-preserved), persisting
|
|
287
|
+
* as soon as each outcome is known.
|
|
288
|
+
*/
|
|
289
|
+
async function describeAndPersistGroup(targets) {
|
|
290
|
+
if (targets.length === 0)
|
|
291
|
+
return;
|
|
292
|
+
const result = await describeBatchGroup(targets, describe, { model: options.model });
|
|
293
|
+
accumulateUsage(result.usage);
|
|
294
|
+
if (result.outcome === "transport-failed") {
|
|
295
|
+
await persistFailedNectars(result.failed);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
if (result.outcome === "truncated") {
|
|
299
|
+
if (targets.length === 1) {
|
|
300
|
+
await persistFailedNectars(targets.map((t) => t.nectar));
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const mid = Math.ceil(targets.length / 2);
|
|
304
|
+
await describeAndPersistGroup(targets.slice(0, mid));
|
|
305
|
+
await describeAndPersistGroup(targets.slice(mid));
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
// outcome === "ok": persist the well-formed entries, then solo-retry the
|
|
309
|
+
// malformed ones (per spec), persisting each solo result immediately.
|
|
310
|
+
const describedEntries = [];
|
|
311
|
+
for (const d of result.described) {
|
|
312
|
+
const target = targets.find((t) => t.nectar === d.nectar);
|
|
313
|
+
if (target !== undefined) {
|
|
314
|
+
describedEntries.push({ nectar: d.nectar, prepared: target.prepared, payload: d.payload, model: result.model });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
await persistDescribedChunk(describedEntries);
|
|
318
|
+
for (const nectar of result.failed) {
|
|
319
|
+
const target = targets.find((t) => t.nectar === nectar);
|
|
320
|
+
if (target === undefined) {
|
|
321
|
+
await persistFailedNectars([nectar]);
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
await describeAndPersistSolo(target);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
for (const group of bucketed.batches) {
|
|
328
|
+
await describeAndPersistGroup(group.files.map(targetFor));
|
|
329
|
+
}
|
|
330
|
+
for (const p of bucketed.soloFiles) {
|
|
331
|
+
await describeAndPersistSolo(targetFor(p));
|
|
332
|
+
}
|
|
333
|
+
// ── Stage 7: regenerate the projection ──────────────────────────────────────
|
|
334
|
+
const regenerate = deps.regenerateProjection ??
|
|
335
|
+
(async (store, tenancy, root) => (await rebuildProjectionAsync(store, tenancy, { projectRoot: root })).path);
|
|
336
|
+
const projectionPath = await regenerate(config.store, config.tenancy, config.root);
|
|
337
|
+
const estimate = estimateBroodCost(bucketed);
|
|
338
|
+
return {
|
|
339
|
+
source: discovery.source,
|
|
340
|
+
discoveredCount: discovery.files.length,
|
|
341
|
+
inheritedCount: precheck.inheritedRows.length,
|
|
342
|
+
survivorCount: precheck.survivors.length,
|
|
343
|
+
skipBinaryCount,
|
|
344
|
+
skipTooLargeCount,
|
|
345
|
+
batchFileCount: bucketed.batchFileCount,
|
|
346
|
+
soloFileCount: bucketed.soloFileCount,
|
|
347
|
+
batchCalls: bucketed.batches.length,
|
|
348
|
+
soloCalls: bucketed.soloFiles.length,
|
|
349
|
+
estimate,
|
|
350
|
+
dryRun: false,
|
|
351
|
+
skippedResumeCount,
|
|
352
|
+
reenqueueCount,
|
|
353
|
+
freshCount,
|
|
354
|
+
describedCount,
|
|
355
|
+
failedCount,
|
|
356
|
+
projectionPath,
|
|
357
|
+
actualUsage: {
|
|
358
|
+
inputTokens: actualInputTokens,
|
|
359
|
+
outputTokens: actualOutputTokens,
|
|
360
|
+
usd: usageCostUsd(actualInputTokens, actualOutputTokens),
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=pipeline-async.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-async.js","sourceRoot":"","sources":["../../src/brooding/pipeline-async.ts"],"names":[],"mappings":"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"}
|