@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 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nectar's registry entry in doctor's daemon registry (PRD-003c).
|
|
3
|
+
*
|
|
4
|
+
* nectar becomes a supervised daemon by appending ONE entry to doctor's
|
|
5
|
+
* registry file (`~/.honeycomb/doctor.daemons.json`, the schema PRD-004a
|
|
6
|
+
* specifies, mirrored read-side in `doctor/src/registry.ts`). That entry
|
|
7
|
+
* carries nectar's `healthUrl`, `pidPath`, `probeIntervalMs`, `startupGraceMs`,
|
|
8
|
+
* and restart thresholds. At the next doctor boot, doctor reads the
|
|
9
|
+
* registry and spawns one supervisor instance for nectar alongside honeycomb
|
|
10
|
+
* and hive.
|
|
11
|
+
*
|
|
12
|
+
* Registration is a FILE EDIT at install time (PRD-003c "Registration mechanics"),
|
|
13
|
+
* never a runtime call: this module does not restart doctor, does not open an
|
|
14
|
+
* HTTP connection, and does not hot-reload anything. It is idempotent - re-running
|
|
15
|
+
* the installer replaces nectar's own entry (keyed by `name: "nectar"`)
|
|
16
|
+
* rather than appending a duplicate, and every other daemon's entry is preserved
|
|
17
|
+
* byte-for-byte apart from array position.
|
|
18
|
+
*
|
|
19
|
+
* A PRESENT-but-malformed registry file fails loudly (this module never silently
|
|
20
|
+
* clobbers a broken file it cannot safely parse), mirroring doctor's own
|
|
21
|
+
* fail-loud posture for a malformed registry (`doctor/src/registry.ts`).
|
|
22
|
+
* PRD-017a deliberately does NOT change this posture to match doctor's own
|
|
23
|
+
* fail-soft posture for a malformed registry read - the two are intentionally
|
|
24
|
+
* different (this writer refuses to clobber a broken install-time file; a
|
|
25
|
+
* malformed registry read is doctor's own runtime concern, not this one).
|
|
26
|
+
*
|
|
27
|
+
* **Known race (PRD-018j / NEC-032).** Concurrent installs of two products
|
|
28
|
+
* (for example nectar and hive) perform read-modify-write with no serialization;
|
|
29
|
+
* one entry can be lost. Writes are atomic (temp file plus rename) and preserve
|
|
30
|
+
* unknown top-level keys, but the read-modify-write window itself is not locked.
|
|
31
|
+
*
|
|
32
|
+
* PRD-017a extends this entry with `telemetryDbPath`: the absolute path to
|
|
33
|
+
* nectar's runtime telemetry SQLite database (`telemetry/db.ts`,
|
|
34
|
+
* `~/.honeycomb/telemetry/nectar.sqlite` by default), per doctor's
|
|
35
|
+
* `ADR-0002-service-registration-static-registry-plus-runtime-sqlite.md`. It is
|
|
36
|
+
* derived from `config.pidFilePath`'s directory (the same resolved runtime dir
|
|
37
|
+
* `healthUrl`/`pidPath` already come from), so a test-overridden runtime dir
|
|
38
|
+
* (`NECTAR_RUNTIME_DIR` / `resolveConfig({ runtimeDir })`) keeps every
|
|
39
|
+
* per-daemon artifact - pid, lock, and now telemetry DB - colocated, with no
|
|
40
|
+
* separate `~` round-trip needed here (same rationale as `healthUrl`/`pidPath`).
|
|
41
|
+
*
|
|
42
|
+
* Built-ins only: node:fs, node:os, node:path.
|
|
43
|
+
*/
|
|
44
|
+
import type { RuntimeConfig } from "./config.js";
|
|
45
|
+
/** The daemon name nectar registers itself under. */
|
|
46
|
+
export declare const NECTAR_DAEMON_NAME: "nectar";
|
|
47
|
+
/**
|
|
48
|
+
* Who restarts nectar. PRD-018a (NEC-030) decides the OS service unit is the
|
|
49
|
+
* single restart authority: doctor probes health and reports, but does not spawn
|
|
50
|
+
* or restart nectar when an OS unit is installed. `nectar install` installs an
|
|
51
|
+
* always-restart OS unit (`service/index.ts`), so the registry entry it writes
|
|
52
|
+
* marks restarts as externally owned. Two contending restart authorities would,
|
|
53
|
+
* via NEC-002, have each losing attempt destroy the winner's lock.
|
|
54
|
+
*/
|
|
55
|
+
export declare const NECTAR_RESTART_POLICY: "external";
|
|
56
|
+
export type RestartPolicy = typeof NECTAR_RESTART_POLICY;
|
|
57
|
+
/**
|
|
58
|
+
* One registry entry, matching the schema doctor's registry loader parses
|
|
59
|
+
* (PRD-004a / `doctor/src/registry.ts`).
|
|
60
|
+
*/
|
|
61
|
+
export interface DoctorRegistryEntry {
|
|
62
|
+
readonly name: string;
|
|
63
|
+
readonly healthUrl: string;
|
|
64
|
+
readonly pidPath: string;
|
|
65
|
+
readonly probeIntervalMs: number;
|
|
66
|
+
readonly startupGraceMs: number;
|
|
67
|
+
readonly restartGiveUpThreshold: number;
|
|
68
|
+
readonly restartCooldownMs: number;
|
|
69
|
+
/**
|
|
70
|
+
* Who owns restarting nectar (PRD-018a NEC-030). `"external"` marks the OS
|
|
71
|
+
* service unit as the single restart authority, so doctor observes health but
|
|
72
|
+
* does not spawn/restart nectar. Optional in the type only so a pre-PRD-018a
|
|
73
|
+
* entry a test constructs by hand still type-checks; `buildNectarRegistryEntry`
|
|
74
|
+
* always populates it.
|
|
75
|
+
*/
|
|
76
|
+
readonly restartPolicy?: RestartPolicy;
|
|
77
|
+
/**
|
|
78
|
+
* The absolute path to nectar's runtime telemetry SQLite database
|
|
79
|
+
* (PRD-017a), so doctor knows where to poll (read-only) for check-in
|
|
80
|
+
* status, metrics, and logs. Optional in the type only so a pre-PRD-017
|
|
81
|
+
* entry a test constructs by hand still type-checks; `buildNectarRegistryEntry`
|
|
82
|
+
* always populates it.
|
|
83
|
+
*/
|
|
84
|
+
readonly telemetryDbPath?: string;
|
|
85
|
+
}
|
|
86
|
+
/** doctor's per-daemon defaults nectar's entry resolves to (PRD-003c table). */
|
|
87
|
+
export declare const DEFAULT_PROBE_INTERVAL_MS = 30000;
|
|
88
|
+
export declare const DEFAULT_STARTUP_GRACE_MS = 60000;
|
|
89
|
+
export declare const DEFAULT_RESTART_GIVE_UP_THRESHOLD = 3;
|
|
90
|
+
export declare const DEFAULT_RESTART_COOLDOWN_MS = 5000;
|
|
91
|
+
/** Thrown when a PRESENT registry file cannot be safely parsed/edited. */
|
|
92
|
+
export declare class DoctorRegistryError extends Error {
|
|
93
|
+
constructor(message: string);
|
|
94
|
+
}
|
|
95
|
+
/** The default registry file location, alongside the other `~/.honeycomb` artifacts. */
|
|
96
|
+
export declare function defaultDoctorRegistryPath(home?: string): string;
|
|
97
|
+
/**
|
|
98
|
+
* Build nectar's registry entry from its resolved {@link RuntimeConfig}
|
|
99
|
+
* (PRD-003c table): `healthUrl`/`pidPath` come from nectar's own runtime
|
|
100
|
+
* config (already home-expanded, so no `~` round-trip is needed here); the
|
|
101
|
+
* remaining fields are doctor's per-daemon defaults unless overridden.
|
|
102
|
+
*
|
|
103
|
+
* `telemetryDbPath` (PRD-017a) defaults to `<runtimeDir>/telemetry/nectar.sqlite`,
|
|
104
|
+
* where `runtimeDir` is `pidFilePath`'s own directory - the same resolved
|
|
105
|
+
* runtime dir every other per-daemon artifact already lives under, so a
|
|
106
|
+
* test-overridden runtime dir keeps pid/lock/telemetry colocated automatically.
|
|
107
|
+
*/
|
|
108
|
+
export declare function buildNectarRegistryEntry(config: Pick<RuntimeConfig, "host" | "port" | "pidFilePath">, overrides?: Partial<Pick<DoctorRegistryEntry, "probeIntervalMs" | "startupGraceMs" | "restartGiveUpThreshold" | "restartCooldownMs" | "telemetryDbPath">>): DoctorRegistryEntry;
|
|
109
|
+
export interface RegisterWithDoctorOptions {
|
|
110
|
+
/** nectar's runtime config (supplies healthUrl + pidPath). */
|
|
111
|
+
readonly config: Pick<RuntimeConfig, "host" | "port" | "pidFilePath">;
|
|
112
|
+
/** Override the registry file path (default: {@link defaultDoctorRegistryPath}). */
|
|
113
|
+
readonly registryPath?: string;
|
|
114
|
+
/** Override the entry's per-daemon fields (default: doctor's built-in defaults). */
|
|
115
|
+
readonly overrides?: Partial<Pick<DoctorRegistryEntry, "probeIntervalMs" | "startupGraceMs" | "restartGiveUpThreshold" | "restartCooldownMs" | "telemetryDbPath">>;
|
|
116
|
+
}
|
|
117
|
+
export interface RegisterWithDoctorResult {
|
|
118
|
+
/** The path the registry file was written to. */
|
|
119
|
+
readonly registryPath: string;
|
|
120
|
+
/** The entry that was written for nectar. */
|
|
121
|
+
readonly entry: DoctorRegistryEntry;
|
|
122
|
+
/** True when the registry file did not exist and was created fresh. */
|
|
123
|
+
readonly created: boolean;
|
|
124
|
+
/** True when an existing nectar entry was replaced (idempotent re-install). */
|
|
125
|
+
readonly replaced: boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Append (or idempotently replace) nectar's entry in doctor's registry
|
|
129
|
+
* file (PRD-003c US-003c.1). Every OTHER daemon's entry is preserved unchanged.
|
|
130
|
+
* Does NOT restart doctor and does NOT touch anything besides this one file -
|
|
131
|
+
* the entry takes effect at doctor's next natural boot (PRD-003c Non-Goals).
|
|
132
|
+
*/
|
|
133
|
+
export declare function registerWithDoctor(options: RegisterWithDoctorOptions): RegisterWithDoctorResult;
|
|
134
|
+
//# sourceMappingURL=doctor-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-registry.d.ts","sourceRoot":"","sources":["../src/doctor-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,EAAG,QAAiB,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAG,UAAmB,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,OAAO,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,0EAA0E;AAC1E,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,EAC5D,SAAS,GAAE,OAAO,CAChB,IAAI,CACF,mBAAmB,EACnB,iBAAiB,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,iBAAiB,CAC1G,CACG,GACL,mBAAmB,CAcrB;AA+ED,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC;IACtE,oFAAoF;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,mBAAmB,EACnB,iBAAiB,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,iBAAiB,CAC1G,CACF,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAY1B"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nectar's registry entry in doctor's daemon registry (PRD-003c).
|
|
3
|
+
*
|
|
4
|
+
* nectar becomes a supervised daemon by appending ONE entry to doctor's
|
|
5
|
+
* registry file (`~/.honeycomb/doctor.daemons.json`, the schema PRD-004a
|
|
6
|
+
* specifies, mirrored read-side in `doctor/src/registry.ts`). That entry
|
|
7
|
+
* carries nectar's `healthUrl`, `pidPath`, `probeIntervalMs`, `startupGraceMs`,
|
|
8
|
+
* and restart thresholds. At the next doctor boot, doctor reads the
|
|
9
|
+
* registry and spawns one supervisor instance for nectar alongside honeycomb
|
|
10
|
+
* and hive.
|
|
11
|
+
*
|
|
12
|
+
* Registration is a FILE EDIT at install time (PRD-003c "Registration mechanics"),
|
|
13
|
+
* never a runtime call: this module does not restart doctor, does not open an
|
|
14
|
+
* HTTP connection, and does not hot-reload anything. It is idempotent - re-running
|
|
15
|
+
* the installer replaces nectar's own entry (keyed by `name: "nectar"`)
|
|
16
|
+
* rather than appending a duplicate, and every other daemon's entry is preserved
|
|
17
|
+
* byte-for-byte apart from array position.
|
|
18
|
+
*
|
|
19
|
+
* A PRESENT-but-malformed registry file fails loudly (this module never silently
|
|
20
|
+
* clobbers a broken file it cannot safely parse), mirroring doctor's own
|
|
21
|
+
* fail-loud posture for a malformed registry (`doctor/src/registry.ts`).
|
|
22
|
+
* PRD-017a deliberately does NOT change this posture to match doctor's own
|
|
23
|
+
* fail-soft posture for a malformed registry read - the two are intentionally
|
|
24
|
+
* different (this writer refuses to clobber a broken install-time file; a
|
|
25
|
+
* malformed registry read is doctor's own runtime concern, not this one).
|
|
26
|
+
*
|
|
27
|
+
* **Known race (PRD-018j / NEC-032).** Concurrent installs of two products
|
|
28
|
+
* (for example nectar and hive) perform read-modify-write with no serialization;
|
|
29
|
+
* one entry can be lost. Writes are atomic (temp file plus rename) and preserve
|
|
30
|
+
* unknown top-level keys, but the read-modify-write window itself is not locked.
|
|
31
|
+
*
|
|
32
|
+
* PRD-017a extends this entry with `telemetryDbPath`: the absolute path to
|
|
33
|
+
* nectar's runtime telemetry SQLite database (`telemetry/db.ts`,
|
|
34
|
+
* `~/.honeycomb/telemetry/nectar.sqlite` by default), per doctor's
|
|
35
|
+
* `ADR-0002-service-registration-static-registry-plus-runtime-sqlite.md`. It is
|
|
36
|
+
* derived from `config.pidFilePath`'s directory (the same resolved runtime dir
|
|
37
|
+
* `healthUrl`/`pidPath` already come from), so a test-overridden runtime dir
|
|
38
|
+
* (`NECTAR_RUNTIME_DIR` / `resolveConfig({ runtimeDir })`) keeps every
|
|
39
|
+
* per-daemon artifact - pid, lock, and now telemetry DB - colocated, with no
|
|
40
|
+
* separate `~` round-trip needed here (same rationale as `healthUrl`/`pidPath`).
|
|
41
|
+
*
|
|
42
|
+
* Built-ins only: node:fs, node:os, node:path.
|
|
43
|
+
*/
|
|
44
|
+
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
45
|
+
import { homedir } from "node:os";
|
|
46
|
+
import { basename, dirname, join } from "node:path";
|
|
47
|
+
import { TELEMETRY_DB_FILE_NAME, TELEMETRY_DIR_NAME } from "./telemetry/db.js";
|
|
48
|
+
/** The daemon name nectar registers itself under. */
|
|
49
|
+
export const NECTAR_DAEMON_NAME = "nectar";
|
|
50
|
+
/**
|
|
51
|
+
* Who restarts nectar. PRD-018a (NEC-030) decides the OS service unit is the
|
|
52
|
+
* single restart authority: doctor probes health and reports, but does not spawn
|
|
53
|
+
* or restart nectar when an OS unit is installed. `nectar install` installs an
|
|
54
|
+
* always-restart OS unit (`service/index.ts`), so the registry entry it writes
|
|
55
|
+
* marks restarts as externally owned. Two contending restart authorities would,
|
|
56
|
+
* via NEC-002, have each losing attempt destroy the winner's lock.
|
|
57
|
+
*/
|
|
58
|
+
export const NECTAR_RESTART_POLICY = "external";
|
|
59
|
+
/** doctor's per-daemon defaults nectar's entry resolves to (PRD-003c table). */
|
|
60
|
+
export const DEFAULT_PROBE_INTERVAL_MS = 30_000;
|
|
61
|
+
export const DEFAULT_STARTUP_GRACE_MS = 60_000;
|
|
62
|
+
export const DEFAULT_RESTART_GIVE_UP_THRESHOLD = 3;
|
|
63
|
+
export const DEFAULT_RESTART_COOLDOWN_MS = 5_000;
|
|
64
|
+
/** Thrown when a PRESENT registry file cannot be safely parsed/edited. */
|
|
65
|
+
export class DoctorRegistryError extends Error {
|
|
66
|
+
constructor(message) {
|
|
67
|
+
super(message);
|
|
68
|
+
this.name = "DoctorRegistryError";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** The default registry file location, alongside the other `~/.honeycomb` artifacts. */
|
|
72
|
+
export function defaultDoctorRegistryPath(home = homedir()) {
|
|
73
|
+
return join(home, ".honeycomb", "doctor.daemons.json");
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build nectar's registry entry from its resolved {@link RuntimeConfig}
|
|
77
|
+
* (PRD-003c table): `healthUrl`/`pidPath` come from nectar's own runtime
|
|
78
|
+
* config (already home-expanded, so no `~` round-trip is needed here); the
|
|
79
|
+
* remaining fields are doctor's per-daemon defaults unless overridden.
|
|
80
|
+
*
|
|
81
|
+
* `telemetryDbPath` (PRD-017a) defaults to `<runtimeDir>/telemetry/nectar.sqlite`,
|
|
82
|
+
* where `runtimeDir` is `pidFilePath`'s own directory - the same resolved
|
|
83
|
+
* runtime dir every other per-daemon artifact already lives under, so a
|
|
84
|
+
* test-overridden runtime dir keeps pid/lock/telemetry colocated automatically.
|
|
85
|
+
*/
|
|
86
|
+
export function buildNectarRegistryEntry(config, overrides = {}) {
|
|
87
|
+
const runtimeDir = dirname(config.pidFilePath);
|
|
88
|
+
return {
|
|
89
|
+
name: NECTAR_DAEMON_NAME,
|
|
90
|
+
healthUrl: `http://${config.host}:${config.port}/health`,
|
|
91
|
+
pidPath: config.pidFilePath,
|
|
92
|
+
probeIntervalMs: overrides.probeIntervalMs ?? DEFAULT_PROBE_INTERVAL_MS,
|
|
93
|
+
startupGraceMs: overrides.startupGraceMs ?? DEFAULT_STARTUP_GRACE_MS,
|
|
94
|
+
restartGiveUpThreshold: overrides.restartGiveUpThreshold ?? DEFAULT_RESTART_GIVE_UP_THRESHOLD,
|
|
95
|
+
restartCooldownMs: overrides.restartCooldownMs ?? DEFAULT_RESTART_COOLDOWN_MS,
|
|
96
|
+
// PRD-018a NEC-030: the OS service unit is the single restart authority.
|
|
97
|
+
restartPolicy: NECTAR_RESTART_POLICY,
|
|
98
|
+
telemetryDbPath: overrides.telemetryDbPath ?? join(runtimeDir, TELEMETRY_DIR_NAME, TELEMETRY_DB_FILE_NAME),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function isRecord(value) {
|
|
102
|
+
return value !== null && typeof value === "object";
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Read the registry file's raw `daemons` array. A PRESENT-but-malformed file
|
|
106
|
+
* (unparseable JSON, not an object, or a `daemons` field that is not an array)
|
|
107
|
+
* throws {@link DoctorRegistryError} rather than being silently overwritten -
|
|
108
|
+
* a real misconfiguration must not be clobbered by an installer.
|
|
109
|
+
*/
|
|
110
|
+
function readExistingRegistry(registryPath) {
|
|
111
|
+
let contents;
|
|
112
|
+
try {
|
|
113
|
+
contents = readFileSync(registryPath, "utf8");
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (error.code === "ENOENT") {
|
|
117
|
+
return { fileExisted: false, root: {}, daemons: [] };
|
|
118
|
+
}
|
|
119
|
+
throw new DoctorRegistryError(`could not read the doctor registry at ${registryPath}: ${error instanceof Error ? error.message : "unknown"}`);
|
|
120
|
+
}
|
|
121
|
+
let parsed;
|
|
122
|
+
try {
|
|
123
|
+
parsed = JSON.parse(contents);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new DoctorRegistryError(`the doctor registry at ${registryPath} is not valid JSON: ${error instanceof Error ? error.message : "unknown"}`);
|
|
127
|
+
}
|
|
128
|
+
if (!isRecord(parsed)) {
|
|
129
|
+
throw new DoctorRegistryError(`the doctor registry at ${registryPath} must be a JSON object with a "daemons" array`);
|
|
130
|
+
}
|
|
131
|
+
const daemons = parsed.daemons;
|
|
132
|
+
if (daemons === undefined)
|
|
133
|
+
return { fileExisted: true, root: { ...parsed }, daemons: [] };
|
|
134
|
+
if (!Array.isArray(daemons)) {
|
|
135
|
+
throw new DoctorRegistryError(`the doctor registry at ${registryPath} has a non-array "daemons" field`);
|
|
136
|
+
}
|
|
137
|
+
return { fileExisted: true, root: { ...parsed }, daemons };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Serialize and write the registry atomically (temp + rename in the same
|
|
141
|
+
* directory), mirroring `projection/write.ts:56-73`.
|
|
142
|
+
*/
|
|
143
|
+
function writeRegistryAtomic(registryPath, root) {
|
|
144
|
+
const dir = dirname(registryPath);
|
|
145
|
+
mkdirSync(dir, { recursive: true });
|
|
146
|
+
const baseName = basename(registryPath);
|
|
147
|
+
const tmpPath = join(dir, `.${baseName}.${process.pid}.${Date.now()}.tmp`);
|
|
148
|
+
// Known limitation (PRD-018j / NEC-032): concurrent installs of two products
|
|
149
|
+
// perform read-modify-write with no serialization; one entry can be lost.
|
|
150
|
+
writeFileSync(tmpPath, `${JSON.stringify(root, null, 2)}\n`, "utf8");
|
|
151
|
+
renameSync(tmpPath, registryPath);
|
|
152
|
+
}
|
|
153
|
+
/** True iff a raw (unvalidated) registry entry names nectar. */
|
|
154
|
+
function isNectarEntry(raw) {
|
|
155
|
+
return isRecord(raw) && raw.name === NECTAR_DAEMON_NAME;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Append (or idempotently replace) nectar's entry in doctor's registry
|
|
159
|
+
* file (PRD-003c US-003c.1). Every OTHER daemon's entry is preserved unchanged.
|
|
160
|
+
* Does NOT restart doctor and does NOT touch anything besides this one file -
|
|
161
|
+
* the entry takes effect at doctor's next natural boot (PRD-003c Non-Goals).
|
|
162
|
+
*/
|
|
163
|
+
export function registerWithDoctor(options) {
|
|
164
|
+
const registryPath = options.registryPath ?? defaultDoctorRegistryPath();
|
|
165
|
+
const entry = buildNectarRegistryEntry(options.config, options.overrides);
|
|
166
|
+
const { fileExisted, root, daemons: existing } = readExistingRegistry(registryPath);
|
|
167
|
+
const replaced = existing.some(isNectarEntry);
|
|
168
|
+
const kept = existing.filter((raw) => !isNectarEntry(raw));
|
|
169
|
+
const updatedRoot = { ...root, daemons: [...kept, entry] };
|
|
170
|
+
writeRegistryAtomic(registryPath, updatedRoot);
|
|
171
|
+
return { registryPath, entry, created: !fileExisted, replaced };
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=doctor-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-registry.js","sourceRoot":"","sources":["../src/doctor-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type FetchLike, type SleepFn } from "./http.js";
|
|
2
|
+
import type { EmbedProvider } from "./provider.js";
|
|
3
|
+
/** SIGNED OFF 2026-07-02 (decision #30): the Cohere embed model the opt-in targets. Config-overridable. */
|
|
4
|
+
export declare const DEFAULT_COHERE_EMBED_MODEL: "embed-v4.0";
|
|
5
|
+
/**
|
|
6
|
+
* SIGNED OFF 2026-07-02 (decision #30): the requested output dimension. 768 keeps
|
|
7
|
+
* the opt-in on the fixed 768-dim contract; the guard discards anything else.
|
|
8
|
+
* Config-overridable. (Cohere's documented Matryoshka set for embed-v4.0 is
|
|
9
|
+
* [256, 512, 1024, 1536]; if the gateway ignores 768 the guard degrades to BM25.
|
|
10
|
+
* See the module report.)
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_COHERE_OUTPUT_DIMENSION: 768;
|
|
13
|
+
/** HTTP statuses that trigger a bounded retry (429 rate limit + transient 5xx), matching the chat transport. */
|
|
14
|
+
export declare const COHERE_RETRYABLE_STATUSES: ReadonlySet<number>;
|
|
15
|
+
/** Maximum attempts including the first POST (mirrors `src/portkey/transport.ts`'s `PORTKEY_MAX_ATTEMPTS`). */
|
|
16
|
+
export declare const DEFAULT_COHERE_MAX_ATTEMPTS: 3;
|
|
17
|
+
/** Backoff between retryable failures in ms (mirrors `src/portkey/transport.ts`'s backoff). */
|
|
18
|
+
export declare const DEFAULT_COHERE_RETRY_BACKOFF_MS: 250;
|
|
19
|
+
/**
|
|
20
|
+
* Per-attempt request timeout (ms), mirroring `deeplake-transport.ts`'s
|
|
21
|
+
* `DEFAULT_TRANSPORT_TIMEOUT_MS` AbortController pattern: an unresponsive gateway
|
|
22
|
+
* aborts rather than hanging the embed path indefinitely (fail-soft, AC-4).
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_COHERE_REQUEST_TIMEOUT_MS: 15000;
|
|
25
|
+
/** The resolved Cohere-via-Portkey config. `apiKey`/`configId` are `null` when Portkey is not keyed. */
|
|
26
|
+
export interface CohereEmbeddingsConfig {
|
|
27
|
+
/** The Cohere embed model id (default {@link DEFAULT_COHERE_EMBED_MODEL}). Config-overridable (AC-2). */
|
|
28
|
+
readonly model: string;
|
|
29
|
+
/** The requested output dimension (default {@link DEFAULT_COHERE_OUTPUT_DIMENSION}). Config-overridable (AC-2). */
|
|
30
|
+
readonly outputDimension: number;
|
|
31
|
+
/** The resolved Portkey API key, or `null` when unkeyed (then embed fails soft to nulls). */
|
|
32
|
+
readonly apiKey: string | null;
|
|
33
|
+
/** The `portkey.config` / virtual-key id, or `null` when unset. */
|
|
34
|
+
readonly configId: string | null;
|
|
35
|
+
/** The endpoint URL (default {@link PORTKEY_EMBEDDINGS_URL}); overridable for a fake-fetch test. */
|
|
36
|
+
readonly url: string;
|
|
37
|
+
/** Max attempts including the first POST. */
|
|
38
|
+
readonly maxAttempts: number;
|
|
39
|
+
/** Backoff between retryable failures (ms). */
|
|
40
|
+
readonly retryBackoffMs: number;
|
|
41
|
+
/** Per-attempt request timeout (ms) before the attempt aborts (default {@link DEFAULT_COHERE_REQUEST_TIMEOUT_MS}). */
|
|
42
|
+
readonly requestTimeoutMs: number;
|
|
43
|
+
}
|
|
44
|
+
/** Construction deps for {@link createCoherePortkeyProvider}; fetch + sleep are injectable for tests. */
|
|
45
|
+
export interface CoherePortkeyDeps {
|
|
46
|
+
/** The `fetch` implementation; defaults to `globalThis.fetch`. Tests inject a fake (no network). */
|
|
47
|
+
readonly fetch?: FetchLike;
|
|
48
|
+
/** The backoff sleep; a test passes a no-op so retry paths run without real time. */
|
|
49
|
+
readonly sleep?: SleepFn;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse the embeddings response into one vector (or `null`) per input index,
|
|
53
|
+
* defensively. Primary shape is Portkey's OpenAI-compatible
|
|
54
|
+
* `{ data: [{ embedding: number[], index }] }`; a Cohere-native
|
|
55
|
+
* `{ embeddings: number[][] }` or `{ embeddings: { float: number[][] } }` body is
|
|
56
|
+
* tolerated as a fallback. Anything else yields all-nulls. Never throws. The
|
|
57
|
+
* per-vector dimension is NOT checked here — the guard owns that (AC-3).
|
|
58
|
+
*/
|
|
59
|
+
export declare function parseEmbeddingsResponse(raw: string, count: number): (number[] | null)[];
|
|
60
|
+
/**
|
|
61
|
+
* Build the Cohere-via-Portkey embeddings {@link EmbedProvider} (PRD-014b). A
|
|
62
|
+
* batch is sent as ONE POST reusing the rerank transport's auth pattern; the body
|
|
63
|
+
* carries the config model id + `output_dimension` (AC-2). Every failure resolves
|
|
64
|
+
* to nulls for the batch (fail-soft, AC-4); the key is never logged or thrown.
|
|
65
|
+
*/
|
|
66
|
+
export declare function createCoherePortkeyProvider(config: CohereEmbeddingsConfig, deps?: CoherePortkeyDeps): EmbedProvider;
|
|
67
|
+
//# sourceMappingURL=cohere-portkey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere-portkey.d.ts","sourceRoot":"","sources":["../../src/embeddings/cohere-portkey.ts"],"names":[],"mappings":"AA+BA,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,2GAA2G;AAC3G,eAAO,MAAM,0BAA0B,EAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,EAAG,GAAY,CAAC;AAE5D,gHAAgH;AAChH,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAsC,CAAC;AAEjG,+GAA+G;AAC/G,eAAO,MAAM,2BAA2B,EAAG,CAAU,CAAC;AAEtD,+FAA+F;AAC/F,eAAO,MAAM,+BAA+B,EAAG,GAAY,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,EAAG,KAAe,CAAC;AAEjE,wGAAwG;AACxG,MAAM,WAAW,sBAAsB;IACrC,yGAAyG;IACzG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mHAAmH;IACnH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oGAAoG;IACpG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sHAAsH;IACtH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,yGAAyG;AACzG,MAAM,WAAW,iBAAiB;IAChC,oGAAoG;IACpG,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAOD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAyCvF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,EAC9B,IAAI,GAAE,iBAAsB,GAC3B,aAAa,CAsDf"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cohere-via-Portkey embeddings transport (PRD-014b — the operator opt-in).
|
|
3
|
+
*
|
|
4
|
+
* Modeled on honeycomb's shipped Cohere-rerank-via-Portkey transport
|
|
5
|
+
* (`honeycomb/src/daemon/runtime/recall/rerank-portkey.ts`): it reuses the SAME
|
|
6
|
+
* `x-portkey-api-key` + `x-portkey-config` auth pair (via
|
|
7
|
+
* {@link buildPortkeyHeaders}) and the SAME gateway host; the ONE difference is
|
|
8
|
+
* the path — `/v1/embeddings` ({@link PORTKEY_EMBEDDINGS_URL}) instead of
|
|
9
|
+
* `/v1/rerank` — and the request/response shape.
|
|
10
|
+
*
|
|
11
|
+
* ── Model + dimension are config, not hardcoded (decision #30) ───────────────
|
|
12
|
+
* The opt-in targets Cohere `embed-v4.0` with `output_dimension: 768` so it
|
|
13
|
+
* produces contract-valid 768-dim vectors instead of guard-discarded 1024-dim
|
|
14
|
+
* ones. Both the model id and the output dimension are config values
|
|
15
|
+
* ({@link CohereEmbeddingsConfig}); recall's 768-dim guard (`guard.ts`) stays as
|
|
16
|
+
* the backstop for whatever the gateway actually returns.
|
|
17
|
+
*
|
|
18
|
+
* ── Fail-soft is the cardinal rule (AC-4 / US-014b.3) ────────────────────────
|
|
19
|
+
* EVERY failure path — Portkey not keyed, a network/transport error, a non-2xx
|
|
20
|
+
* gateway status, or a malformed body — resolves to `null` for the affected
|
|
21
|
+
* texts, NEVER a throw into the caller's hot path. A bounded retry covers 429 +
|
|
22
|
+
* transient 5xx (the same statuses the sibling chat transport retries); the
|
|
23
|
+
* bound is exhausted to nulls rather than thrown.
|
|
24
|
+
*
|
|
25
|
+
* ── The secret-never-logged invariant (US-014b.3) ────────────────────────────
|
|
26
|
+
* The resolved key is placed ONLY in the `x-portkey-api-key` header (via
|
|
27
|
+
* {@link buildPortkeyHeaders}) and is NEVER included in a returned value, a log
|
|
28
|
+
* line, or an error. On any failure the response body is not read into a message
|
|
29
|
+
* (it could echo a credential).
|
|
30
|
+
*/
|
|
31
|
+
import { buildPortkeyHeaders, PORTKEY_EMBEDDINGS_URL } from "../portkey/headers.js";
|
|
32
|
+
import { defaultFetch, defaultSleep } from "./http.js";
|
|
33
|
+
/** SIGNED OFF 2026-07-02 (decision #30): the Cohere embed model the opt-in targets. Config-overridable. */
|
|
34
|
+
export const DEFAULT_COHERE_EMBED_MODEL = "embed-v4.0";
|
|
35
|
+
/**
|
|
36
|
+
* SIGNED OFF 2026-07-02 (decision #30): the requested output dimension. 768 keeps
|
|
37
|
+
* the opt-in on the fixed 768-dim contract; the guard discards anything else.
|
|
38
|
+
* Config-overridable. (Cohere's documented Matryoshka set for embed-v4.0 is
|
|
39
|
+
* [256, 512, 1024, 1536]; if the gateway ignores 768 the guard degrades to BM25.
|
|
40
|
+
* See the module report.)
|
|
41
|
+
*/
|
|
42
|
+
export const DEFAULT_COHERE_OUTPUT_DIMENSION = 768;
|
|
43
|
+
/** HTTP statuses that trigger a bounded retry (429 rate limit + transient 5xx), matching the chat transport. */
|
|
44
|
+
export const COHERE_RETRYABLE_STATUSES = new Set([429, 500, 502, 503, 504]);
|
|
45
|
+
/** Maximum attempts including the first POST (mirrors `src/portkey/transport.ts`'s `PORTKEY_MAX_ATTEMPTS`). */
|
|
46
|
+
export const DEFAULT_COHERE_MAX_ATTEMPTS = 3;
|
|
47
|
+
/** Backoff between retryable failures in ms (mirrors `src/portkey/transport.ts`'s backoff). */
|
|
48
|
+
export const DEFAULT_COHERE_RETRY_BACKOFF_MS = 250;
|
|
49
|
+
/**
|
|
50
|
+
* Per-attempt request timeout (ms), mirroring `deeplake-transport.ts`'s
|
|
51
|
+
* `DEFAULT_TRANSPORT_TIMEOUT_MS` AbortController pattern: an unresponsive gateway
|
|
52
|
+
* aborts rather than hanging the embed path indefinitely (fail-soft, AC-4).
|
|
53
|
+
*/
|
|
54
|
+
export const DEFAULT_COHERE_REQUEST_TIMEOUT_MS = 15_000;
|
|
55
|
+
/** All-nulls result of length `n` (the fail-soft shape, built in one place). */
|
|
56
|
+
function allNull(n) {
|
|
57
|
+
return new Array(n).fill(null);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parse the embeddings response into one vector (or `null`) per input index,
|
|
61
|
+
* defensively. Primary shape is Portkey's OpenAI-compatible
|
|
62
|
+
* `{ data: [{ embedding: number[], index }] }`; a Cohere-native
|
|
63
|
+
* `{ embeddings: number[][] }` or `{ embeddings: { float: number[][] } }` body is
|
|
64
|
+
* tolerated as a fallback. Anything else yields all-nulls. Never throws. The
|
|
65
|
+
* per-vector dimension is NOT checked here — the guard owns that (AC-3).
|
|
66
|
+
*/
|
|
67
|
+
export function parseEmbeddingsResponse(raw, count) {
|
|
68
|
+
let body;
|
|
69
|
+
try {
|
|
70
|
+
body = raw.length > 0 ? JSON.parse(raw) : null;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return allNull(count);
|
|
74
|
+
}
|
|
75
|
+
if (typeof body !== "object" || body === null)
|
|
76
|
+
return allNull(count);
|
|
77
|
+
const out = allNull(count);
|
|
78
|
+
const asFinite = (v) => Array.isArray(v) && v.every((n) => typeof n === "number" && Number.isFinite(n)) ? v : null;
|
|
79
|
+
// Primary: OpenAI-compatible `data: [{ embedding, index }]`.
|
|
80
|
+
const data = body.data;
|
|
81
|
+
if (Array.isArray(data)) {
|
|
82
|
+
data.forEach((entry, i) => {
|
|
83
|
+
if (typeof entry !== "object" || entry === null)
|
|
84
|
+
return;
|
|
85
|
+
const e = entry;
|
|
86
|
+
const idx = typeof e.index === "number" && Number.isInteger(e.index) ? e.index : i;
|
|
87
|
+
if (idx < 0 || idx >= count)
|
|
88
|
+
return;
|
|
89
|
+
out[idx] = asFinite(e.embedding);
|
|
90
|
+
});
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
// Fallback: Cohere-native `embeddings: number[][]` or `embeddings: { float: number[][] }`.
|
|
94
|
+
const embeddings = body.embeddings;
|
|
95
|
+
const rows = Array.isArray(embeddings)
|
|
96
|
+
? embeddings
|
|
97
|
+
: typeof embeddings === "object" && embeddings !== null && Array.isArray(embeddings.float)
|
|
98
|
+
? (embeddings.float)
|
|
99
|
+
: null;
|
|
100
|
+
if (rows !== null) {
|
|
101
|
+
rows.forEach((row, i) => {
|
|
102
|
+
if (i < count)
|
|
103
|
+
out[i] = asFinite(row);
|
|
104
|
+
});
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
return allNull(count);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build the Cohere-via-Portkey embeddings {@link EmbedProvider} (PRD-014b). A
|
|
111
|
+
* batch is sent as ONE POST reusing the rerank transport's auth pattern; the body
|
|
112
|
+
* carries the config model id + `output_dimension` (AC-2). Every failure resolves
|
|
113
|
+
* to nulls for the batch (fail-soft, AC-4); the key is never logged or thrown.
|
|
114
|
+
*/
|
|
115
|
+
export function createCoherePortkeyProvider(config, deps = {}) {
|
|
116
|
+
const doFetch = deps.fetch ?? defaultFetch();
|
|
117
|
+
const sleep = deps.sleep ?? defaultSleep;
|
|
118
|
+
return {
|
|
119
|
+
kind: "cohere",
|
|
120
|
+
async embed(texts) {
|
|
121
|
+
if (texts.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
// Not keyed -> fail soft to nulls (no POST). A missing key is a misconfiguration, not a crash (AC-4).
|
|
124
|
+
if (config.apiKey === null || config.configId === null)
|
|
125
|
+
return allNull(texts.length);
|
|
126
|
+
const headers = buildPortkeyHeaders(config.apiKey, config.configId);
|
|
127
|
+
// The embeddings body (decision #30): the config model id + `output_dimension`, both overridable (AC-2).
|
|
128
|
+
const body = JSON.stringify({
|
|
129
|
+
model: config.model,
|
|
130
|
+
input: [...texts],
|
|
131
|
+
output_dimension: config.outputDimension,
|
|
132
|
+
});
|
|
133
|
+
for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {
|
|
134
|
+
let res;
|
|
135
|
+
const controller = new AbortController();
|
|
136
|
+
const timer = setTimeout(() => controller.abort(), config.requestTimeoutMs);
|
|
137
|
+
try {
|
|
138
|
+
res = await doFetch(config.url, { method: "POST", headers, body, signal: controller.signal });
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Network/transport failure, or our own abort on `requestTimeoutMs` (an unresponsive
|
|
142
|
+
// gateway) -> retry within the bound, else fail soft to nulls. Never surface the error
|
|
143
|
+
// (it could carry a body/key); only the fail-soft nulls escape.
|
|
144
|
+
if (attempt < config.maxAttempts) {
|
|
145
|
+
await sleep(config.retryBackoffMs * attempt);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
return allNull(texts.length);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
clearTimeout(timer);
|
|
152
|
+
}
|
|
153
|
+
if (!res.ok) {
|
|
154
|
+
// A non-2xx gateway status: retry the retryable ones within the bound, else fail soft. Never
|
|
155
|
+
// read the body into a message (it could echo a credential).
|
|
156
|
+
if (attempt < config.maxAttempts && COHERE_RETRYABLE_STATUSES.has(res.status)) {
|
|
157
|
+
await sleep(config.retryBackoffMs * attempt);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
return allNull(texts.length);
|
|
161
|
+
}
|
|
162
|
+
// A 2xx: parse defensively. A malformed body fails soft to nulls (the gateway was reachable,
|
|
163
|
+
// the body was just unusable) rather than throwing.
|
|
164
|
+
const text = await res.text().catch(() => "");
|
|
165
|
+
return parseEmbeddingsResponse(text, texts.length);
|
|
166
|
+
}
|
|
167
|
+
return allNull(texts.length);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=cohere-portkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere-portkey.js","sourceRoot":"","sources":["../../src/embeddings/cohere-portkey.ts"],"names":[],"mappings":"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"}
|