@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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `describe_model` audit seam (PRD-010b).
|
|
3
|
+
*
|
|
4
|
+
* Stamps which model produced a description on a `hive_graph_versions` row and
|
|
5
|
+
* computes which rows `brood --force --model <new>` must reset to `pending` before
|
|
6
|
+
* re-description (AC-3). The CLI verb itself is owned by PRD-007; this module is
|
|
7
|
+
* the pure field logic the integrator wires.
|
|
8
|
+
*/
|
|
9
|
+
import type { DescribeStatus, HiveGraphVersionRow } from "../hive-graph/model.js";
|
|
10
|
+
/** The three skip statuses that `--force` must not reset (AC-3). */
|
|
11
|
+
export declare const SKIPPED_DESCRIBE_STATUSES: readonly DescribeStatus[];
|
|
12
|
+
/** True when a row's describe status is one of the brooding skip outcomes. */
|
|
13
|
+
export declare function isSkippedDescribeStatus(status: DescribeStatus): boolean;
|
|
14
|
+
/** Structured description payload returned by the Portkey call (brooding/enricher). */
|
|
15
|
+
export interface DescriptionPayload {
|
|
16
|
+
readonly title: string;
|
|
17
|
+
readonly description: string;
|
|
18
|
+
readonly concepts: string;
|
|
19
|
+
}
|
|
20
|
+
/** Field patch applied when a row transitions to `describe_status = 'described'`. */
|
|
21
|
+
export interface DescribeModelStamp {
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly description: string;
|
|
24
|
+
readonly concepts: string;
|
|
25
|
+
readonly describeModel: string;
|
|
26
|
+
readonly describeStatus: "described";
|
|
27
|
+
readonly describedAt: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build the audit-stamping patch for a freshly described row (AC-4).
|
|
31
|
+
* `modelId` is the resolved target model for the run (explicit override or activeModel).
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildDescribeModelStamp(payload: DescriptionPayload, modelId: string, describedAt: string): DescribeModelStamp;
|
|
34
|
+
/** Minimal row shape {@link resetForRedescribe} needs. */
|
|
35
|
+
export interface RedescribeRow {
|
|
36
|
+
readonly nectar: string;
|
|
37
|
+
readonly contentHash: string;
|
|
38
|
+
readonly describeStatus: DescribeStatus;
|
|
39
|
+
}
|
|
40
|
+
/** One row reset by `brood --force --model <new>`. */
|
|
41
|
+
export interface RedescribeReset {
|
|
42
|
+
readonly nectar: string;
|
|
43
|
+
readonly contentHash: string;
|
|
44
|
+
readonly describeStatus: "pending";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Given version rows, return the subset that `--force` resets to `pending` (AC-3):
|
|
48
|
+
* every non-skipped row, regardless of prior `described` / `failed` / `pending` state.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resetForRedescribe(rows: readonly RedescribeRow[]): RedescribeReset[];
|
|
51
|
+
/** Apply a describe stamp onto a full version row (immutable return for tests/adapters). */
|
|
52
|
+
export declare function applyDescribeModelStamp(row: HiveGraphVersionRow, stamp: DescribeModelStamp): HiveGraphVersionRow;
|
|
53
|
+
//# sourceMappingURL=describe-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-model.d.ts","sourceRoot":"","sources":["../../src/portkey/describe-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElF,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,EAAE,SAAS,cAAc,EAI9D,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAMvE;AAED,uFAAuF;AACvF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,CASpB;AAED,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,eAAe,EAAE,CAWpF;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,kBAAkB,GACxB,mBAAmB,CAUrB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** The three skip statuses that `--force` must not reset (AC-3). */
|
|
2
|
+
export const SKIPPED_DESCRIBE_STATUSES = [
|
|
3
|
+
"skipped-too-large",
|
|
4
|
+
"skipped-binary",
|
|
5
|
+
"skipped-deleted",
|
|
6
|
+
];
|
|
7
|
+
/** True when a row's describe status is one of the brooding skip outcomes. */
|
|
8
|
+
export function isSkippedDescribeStatus(status) {
|
|
9
|
+
return (status === "skipped-too-large" ||
|
|
10
|
+
status === "skipped-binary" ||
|
|
11
|
+
status === "skipped-deleted");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build the audit-stamping patch for a freshly described row (AC-4).
|
|
15
|
+
* `modelId` is the resolved target model for the run (explicit override or activeModel).
|
|
16
|
+
*/
|
|
17
|
+
export function buildDescribeModelStamp(payload, modelId, describedAt) {
|
|
18
|
+
return {
|
|
19
|
+
title: payload.title,
|
|
20
|
+
description: payload.description,
|
|
21
|
+
concepts: payload.concepts,
|
|
22
|
+
describeModel: modelId,
|
|
23
|
+
describeStatus: "described",
|
|
24
|
+
describedAt,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Given version rows, return the subset that `--force` resets to `pending` (AC-3):
|
|
29
|
+
* every non-skipped row, regardless of prior `described` / `failed` / `pending` state.
|
|
30
|
+
*/
|
|
31
|
+
export function resetForRedescribe(rows) {
|
|
32
|
+
const resets = [];
|
|
33
|
+
for (const row of rows) {
|
|
34
|
+
if (isSkippedDescribeStatus(row.describeStatus))
|
|
35
|
+
continue;
|
|
36
|
+
resets.push({
|
|
37
|
+
nectar: row.nectar,
|
|
38
|
+
contentHash: row.contentHash,
|
|
39
|
+
describeStatus: "pending",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return resets;
|
|
43
|
+
}
|
|
44
|
+
/** Apply a describe stamp onto a full version row (immutable return for tests/adapters). */
|
|
45
|
+
export function applyDescribeModelStamp(row, stamp) {
|
|
46
|
+
return {
|
|
47
|
+
...row,
|
|
48
|
+
title: stamp.title,
|
|
49
|
+
description: stamp.description,
|
|
50
|
+
concepts: stamp.concepts,
|
|
51
|
+
describeModel: stamp.describeModel,
|
|
52
|
+
describeStatus: stamp.describeStatus,
|
|
53
|
+
describedAt: stamp.describedAt,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=describe-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-model.js","sourceRoot":"","sources":["../../src/portkey/describe-model.ts"],"names":[],"mappings":"AAUA,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAA8B;IAClE,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,CACL,MAAM,KAAK,mBAAmB;QAC9B,MAAM,KAAK,gBAAgB;QAC3B,MAAM,KAAK,iBAAiB,CAC7B,CAAC;AACJ,CAAC;AAmBD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA2B,EAC3B,OAAe,EACf,WAAmB;IAEnB,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,WAAW;QAC3B,WAAW;KACZ,CAAC;AACJ,CAAC;AAgBD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA8B;IAC/D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,SAAS;QAC1D,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,cAAc,EAAE,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CACrC,GAAwB,EACxB,KAAyB;IAEzB,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portkey gateway request headers and endpoint constants (PRD-010a).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors honeycomb's shared header builder and base URL so nectar reaches
|
|
5
|
+
* the same gateway wire shape without importing honeycomb in-process (ADR-0002).
|
|
6
|
+
* Canonical reference: `honeycomb/src/daemon/runtime/inference/transport-portkey.ts`
|
|
7
|
+
* (`PORTKEY_BASE_URL`, `PORTKEY_CHAT_COMPLETIONS_URL`, `buildPortkeyHeaders`).
|
|
8
|
+
*/
|
|
9
|
+
/** The Portkey gateway base host. Confirmed vs Portkey docs at honeycomb build time. */
|
|
10
|
+
export declare const PORTKEY_BASE_URL: "https://api.portkey.ai/v1";
|
|
11
|
+
/** The Portkey OpenAI-compatible chat-completions endpoint. */
|
|
12
|
+
export declare const PORTKEY_CHAT_COMPLETIONS_URL: "https://api.portkey.ai/v1/chat/completions";
|
|
13
|
+
/**
|
|
14
|
+
* The Portkey OpenAI-compatible embeddings endpoint (decision #30 / PRD-014b).
|
|
15
|
+
* The chat, rerank, and embeddings transports all hang off {@link PORTKEY_BASE_URL};
|
|
16
|
+
* the ONE difference from the chat path is `/embeddings` vs `/chat/completions`.
|
|
17
|
+
* The Cohere-via-Portkey embed transport (`src/embeddings/cohere-portkey.ts`)
|
|
18
|
+
* posts here. Confirm the live gateway still advertises this path before first
|
|
19
|
+
* opt-in use (the decision doc flags it as a mechanical check).
|
|
20
|
+
*/
|
|
21
|
+
export declare const PORTKEY_EMBEDDINGS_URL: "https://api.portkey.ai/v1/embeddings";
|
|
22
|
+
/** Header carrying the resolved Portkey API key (never logged or echoed). */
|
|
23
|
+
export declare const PORTKEY_API_KEY_HEADER: "x-portkey-api-key";
|
|
24
|
+
/** Header carrying the `portkey.config` / virtual-key id (non-secret). */
|
|
25
|
+
export declare const PORTKEY_CONFIG_HEADER: "x-portkey-config";
|
|
26
|
+
/**
|
|
27
|
+
* Build the Portkey request headers shared by chat and future rerank/embed transports.
|
|
28
|
+
* `apiKey` is placed ONLY in the auth header; `configId` is the non-secret config id.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildPortkeyHeaders(apiKey: string, configId: string): Record<string, string>;
|
|
31
|
+
//# sourceMappingURL=headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/portkey/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,EAAG,2BAAoC,CAAC;AAErE,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,8CAAkD,CAAC;AAE5F;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,wCAA4C,CAAC;AAEhF,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,EAAG,mBAA4B,CAAC;AAEnE,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portkey gateway request headers and endpoint constants (PRD-010a).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors honeycomb's shared header builder and base URL so nectar reaches
|
|
5
|
+
* the same gateway wire shape without importing honeycomb in-process (ADR-0002).
|
|
6
|
+
* Canonical reference: `honeycomb/src/daemon/runtime/inference/transport-portkey.ts`
|
|
7
|
+
* (`PORTKEY_BASE_URL`, `PORTKEY_CHAT_COMPLETIONS_URL`, `buildPortkeyHeaders`).
|
|
8
|
+
*/
|
|
9
|
+
/** The Portkey gateway base host. Confirmed vs Portkey docs at honeycomb build time. */
|
|
10
|
+
export const PORTKEY_BASE_URL = "https://api.portkey.ai/v1";
|
|
11
|
+
/** The Portkey OpenAI-compatible chat-completions endpoint. */
|
|
12
|
+
export const PORTKEY_CHAT_COMPLETIONS_URL = `${PORTKEY_BASE_URL}/chat/completions`;
|
|
13
|
+
/**
|
|
14
|
+
* The Portkey OpenAI-compatible embeddings endpoint (decision #30 / PRD-014b).
|
|
15
|
+
* The chat, rerank, and embeddings transports all hang off {@link PORTKEY_BASE_URL};
|
|
16
|
+
* the ONE difference from the chat path is `/embeddings` vs `/chat/completions`.
|
|
17
|
+
* The Cohere-via-Portkey embed transport (`src/embeddings/cohere-portkey.ts`)
|
|
18
|
+
* posts here. Confirm the live gateway still advertises this path before first
|
|
19
|
+
* opt-in use (the decision doc flags it as a mechanical check).
|
|
20
|
+
*/
|
|
21
|
+
export const PORTKEY_EMBEDDINGS_URL = `${PORTKEY_BASE_URL}/embeddings`;
|
|
22
|
+
/** Header carrying the resolved Portkey API key (never logged or echoed). */
|
|
23
|
+
export const PORTKEY_API_KEY_HEADER = "x-portkey-api-key";
|
|
24
|
+
/** Header carrying the `portkey.config` / virtual-key id (non-secret). */
|
|
25
|
+
export const PORTKEY_CONFIG_HEADER = "x-portkey-config";
|
|
26
|
+
/**
|
|
27
|
+
* Build the Portkey request headers shared by chat and future rerank/embed transports.
|
|
28
|
+
* `apiKey` is placed ONLY in the auth header; `configId` is the non-secret config id.
|
|
29
|
+
*/
|
|
30
|
+
export function buildPortkeyHeaders(apiKey, configId) {
|
|
31
|
+
return {
|
|
32
|
+
[PORTKEY_API_KEY_HEADER]: apiKey,
|
|
33
|
+
[PORTKEY_CONFIG_HEADER]: configId,
|
|
34
|
+
"content-type": "application/json",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/portkey/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wFAAwF;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAAoC,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,gBAAgB,mBAA4B,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,gBAAgB,aAAsB,CAAC;AAEhF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,QAAgB;IAClE,OAAO;QACL,CAAC,sBAAsB,CAAC,EAAE,MAAM;QAChC,CAAC,qBAAqB,CAAC,EAAE,QAAQ;QACjC,cAAc,EAAE,kBAAkB;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type PortkeyEnabled } from "./config.js";
|
|
2
|
+
/** Sane completion ceiling when the caller omits `maxTokens`. */
|
|
3
|
+
export declare const PORTKEY_DEFAULT_MAX_TOKENS: 4096;
|
|
4
|
+
/** HTTP statuses that trigger a bounded retry (429 rate limit + transient 5xx). */
|
|
5
|
+
export declare const PORTKEY_RETRYABLE_STATUSES: Set<number>;
|
|
6
|
+
/** Maximum attempts including the first POST (DEFAULT - confirm before implementation). */
|
|
7
|
+
export declare const PORTKEY_MAX_ATTEMPTS: 3;
|
|
8
|
+
/** Backoff between retryable failures in ms (DEFAULT - confirm before implementation). */
|
|
9
|
+
export declare const PORTKEY_RETRY_BACKOFF_MS: 250;
|
|
10
|
+
/**
|
|
11
|
+
* Per-attempt request timeout (ms), mirroring `hive-graph/deeplake-transport.ts`'s
|
|
12
|
+
* `DEFAULT_TRANSPORT_TIMEOUT_MS` AbortController pattern: an unresponsive gateway
|
|
13
|
+
* aborts rather than hanging the caller indefinitely. Solo describe calls use
|
|
14
|
+
* this default; batch calls request the raised {@link PORTKEY_BATCH_REQUEST_TIMEOUT_MS}.
|
|
15
|
+
*/
|
|
16
|
+
export declare const PORTKEY_REQUEST_TIMEOUT_MS: 15000;
|
|
17
|
+
/**
|
|
18
|
+
* Per-attempt timeout for a BATCH describe call (NEC-013 / AC-018f.4). A batch
|
|
19
|
+
* completion is roughly 20K input tokens and multi-K output tokens
|
|
20
|
+
* (`brooding-technical-specification.md`), for which the 15s solo timeout is
|
|
21
|
+
* tight enough to produce a systematic all-failed-then-solo-storm path; solo
|
|
22
|
+
* calls (one small-to-medium file) keep {@link PORTKEY_REQUEST_TIMEOUT_MS}.
|
|
23
|
+
*/
|
|
24
|
+
export declare const PORTKEY_BATCH_REQUEST_TIMEOUT_MS: 60000;
|
|
25
|
+
export interface ChatMessage {
|
|
26
|
+
readonly role: "system" | "user" | "assistant";
|
|
27
|
+
readonly content: string;
|
|
28
|
+
}
|
|
29
|
+
export interface PortkeyUsage {
|
|
30
|
+
readonly inputTokens: number;
|
|
31
|
+
readonly outputTokens: number;
|
|
32
|
+
readonly cacheReadInputTokens: number;
|
|
33
|
+
}
|
|
34
|
+
export interface DescribeViaPortkeyResult {
|
|
35
|
+
readonly content: string;
|
|
36
|
+
readonly model: string;
|
|
37
|
+
readonly usage: PortkeyUsage;
|
|
38
|
+
/**
|
|
39
|
+
* The gateway's `choices[0].finish_reason` (e.g. `"stop"`, `"length"`), or
|
|
40
|
+
* `null` when absent/unparseable. `"length"` means the completion was
|
|
41
|
+
* truncated by the token cap (NEC-013 / AC-018f.3) - distinct from a
|
|
42
|
+
* malformed-but-complete response.
|
|
43
|
+
*/
|
|
44
|
+
readonly finishReason: string | null;
|
|
45
|
+
}
|
|
46
|
+
export interface DescribeViaPortkeyRequest {
|
|
47
|
+
readonly messages: readonly ChatMessage[];
|
|
48
|
+
/** Explicit model wins over configured `activeModel` (AC-2). */
|
|
49
|
+
readonly model?: string;
|
|
50
|
+
readonly maxTokens?: number;
|
|
51
|
+
/** Per-attempt timeout override (ms); defaults to {@link PORTKEY_REQUEST_TIMEOUT_MS} when omitted. */
|
|
52
|
+
readonly timeoutMs?: number;
|
|
53
|
+
}
|
|
54
|
+
/** Injectable fetch seam (mirrors honeycomb's `FetchLike`). */
|
|
55
|
+
export type PortkeyFetch = (url: string, init: {
|
|
56
|
+
method: string;
|
|
57
|
+
headers: Record<string, string>;
|
|
58
|
+
body: string;
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
}) => Promise<{
|
|
61
|
+
ok: boolean;
|
|
62
|
+
status: number;
|
|
63
|
+
text(): Promise<string>;
|
|
64
|
+
}>;
|
|
65
|
+
export interface DescribeViaPortkeyDeps {
|
|
66
|
+
readonly portkey: PortkeyEnabled;
|
|
67
|
+
readonly fetch?: PortkeyFetch;
|
|
68
|
+
readonly url?: string;
|
|
69
|
+
readonly maxAttempts?: number;
|
|
70
|
+
readonly retryBackoffMs?: number;
|
|
71
|
+
/** Per-attempt request timeout (ms) before the attempt aborts (default {@link PORTKEY_REQUEST_TIMEOUT_MS}). */
|
|
72
|
+
readonly timeoutMs?: number;
|
|
73
|
+
/** Injectable sleep for deterministic retry tests. */
|
|
74
|
+
sleep?(ms: number): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Typed failure from {@link describeViaPortkey}. The message is a short status
|
|
78
|
+
* string only; the API key is never included.
|
|
79
|
+
*/
|
|
80
|
+
export declare class PortkeyTransportError extends Error {
|
|
81
|
+
readonly statusCode: number;
|
|
82
|
+
constructor(statusCode: number, message: string);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* POST a chat-completions request through Portkey and return the joined assistant text.
|
|
86
|
+
* Resolves the model as: explicit arg > configured `activeModel` > `gemini-2.5-flash`.
|
|
87
|
+
*/
|
|
88
|
+
export declare function describeViaPortkey(request: DescribeViaPortkeyRequest, deps: DescribeViaPortkeyDeps): Promise<DescribeViaPortkeyResult>;
|
|
89
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/portkey/transport.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,iEAAiE;AACjE,eAAO,MAAM,0BAA0B,EAAG,IAAa,CAAC;AAExD,mFAAmF;AACnF,eAAO,MAAM,0BAA0B,aAAqC,CAAC;AAE7E,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C,0FAA0F;AAC1F,eAAO,MAAM,wBAAwB,EAAG,GAAY,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAG,KAAe,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,EAAG,KAAe,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sGAAsG;IACtG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,+DAA+D;AAC/D,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC1F,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+GAA+G;IAC/G,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAChB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKhD;AAkED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,EAClC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAmEnC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portkey chat-completions client for nectar description calls (PRD-010a).
|
|
3
|
+
*
|
|
4
|
+
* POSTs the OpenAI-compatible chat body to {@link PORTKEY_CHAT_COMPLETIONS_URL}
|
|
5
|
+
* with headers from {@link buildPortkeyHeaders}. Mirrors honeycomb's error mapping
|
|
6
|
+
* (status string only, never body or key) and usage surfacing (including cached
|
|
7
|
+
* read tokens when Portkey reports them). Bounded retry on 429/5xx follows the
|
|
8
|
+
* same "retry once on transient failure" discipline as `deeplake-heal.ts` (one
|
|
9
|
+
* heal-then-retry path), extended here to a small cap for rate limits.
|
|
10
|
+
*/
|
|
11
|
+
import { buildPortkeyHeaders, PORTKEY_CHAT_COMPLETIONS_URL, } from "./headers.js";
|
|
12
|
+
import { DEFAULT_ACTIVE_MODEL } from "./config.js";
|
|
13
|
+
/** Sane completion ceiling when the caller omits `maxTokens`. */
|
|
14
|
+
export const PORTKEY_DEFAULT_MAX_TOKENS = 4096;
|
|
15
|
+
/** HTTP statuses that trigger a bounded retry (429 rate limit + transient 5xx). */
|
|
16
|
+
export const PORTKEY_RETRYABLE_STATUSES = new Set([429, 500, 502, 503, 504]);
|
|
17
|
+
/** Maximum attempts including the first POST (DEFAULT - confirm before implementation). */
|
|
18
|
+
export const PORTKEY_MAX_ATTEMPTS = 3;
|
|
19
|
+
/** Backoff between retryable failures in ms (DEFAULT - confirm before implementation). */
|
|
20
|
+
export const PORTKEY_RETRY_BACKOFF_MS = 250;
|
|
21
|
+
/**
|
|
22
|
+
* Per-attempt request timeout (ms), mirroring `hive-graph/deeplake-transport.ts`'s
|
|
23
|
+
* `DEFAULT_TRANSPORT_TIMEOUT_MS` AbortController pattern: an unresponsive gateway
|
|
24
|
+
* aborts rather than hanging the caller indefinitely. Solo describe calls use
|
|
25
|
+
* this default; batch calls request the raised {@link PORTKEY_BATCH_REQUEST_TIMEOUT_MS}.
|
|
26
|
+
*/
|
|
27
|
+
export const PORTKEY_REQUEST_TIMEOUT_MS = 15_000;
|
|
28
|
+
/**
|
|
29
|
+
* Per-attempt timeout for a BATCH describe call (NEC-013 / AC-018f.4). A batch
|
|
30
|
+
* completion is roughly 20K input tokens and multi-K output tokens
|
|
31
|
+
* (`brooding-technical-specification.md`), for which the 15s solo timeout is
|
|
32
|
+
* tight enough to produce a systematic all-failed-then-solo-storm path; solo
|
|
33
|
+
* calls (one small-to-medium file) keep {@link PORTKEY_REQUEST_TIMEOUT_MS}.
|
|
34
|
+
*/
|
|
35
|
+
export const PORTKEY_BATCH_REQUEST_TIMEOUT_MS = 60_000;
|
|
36
|
+
/**
|
|
37
|
+
* Typed failure from {@link describeViaPortkey}. The message is a short status
|
|
38
|
+
* string only; the API key is never included.
|
|
39
|
+
*/
|
|
40
|
+
export class PortkeyTransportError extends Error {
|
|
41
|
+
statusCode;
|
|
42
|
+
constructor(statusCode, message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = "PortkeyTransportError";
|
|
45
|
+
this.statusCode = statusCode;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function defaultSleep(ms) {
|
|
49
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
50
|
+
}
|
|
51
|
+
function resolveModel(explicit, activeModel) {
|
|
52
|
+
if (explicit !== undefined && explicit.trim() !== "")
|
|
53
|
+
return explicit;
|
|
54
|
+
if (activeModel.trim() !== "")
|
|
55
|
+
return activeModel;
|
|
56
|
+
return DEFAULT_ACTIVE_MODEL;
|
|
57
|
+
}
|
|
58
|
+
function parseUsage(raw) {
|
|
59
|
+
if (typeof raw !== "object" || raw === null) {
|
|
60
|
+
return { inputTokens: 0, outputTokens: 0, cacheReadInputTokens: 0 };
|
|
61
|
+
}
|
|
62
|
+
const u = raw;
|
|
63
|
+
const inputTokens = typeof u.prompt_tokens === "number" && Number.isFinite(u.prompt_tokens) ? u.prompt_tokens : 0;
|
|
64
|
+
const outputTokens = typeof u.completion_tokens === "number" && Number.isFinite(u.completion_tokens) ? u.completion_tokens : 0;
|
|
65
|
+
const cached = u.prompt_tokens_details?.cached_tokens;
|
|
66
|
+
const cacheReadInputTokens = typeof cached === "number" && Number.isFinite(cached) ? cached : 0;
|
|
67
|
+
return { inputTokens, outputTokens, cacheReadInputTokens };
|
|
68
|
+
}
|
|
69
|
+
function joinChoiceContent(choices) {
|
|
70
|
+
if (!Array.isArray(choices))
|
|
71
|
+
return "";
|
|
72
|
+
return choices
|
|
73
|
+
.map((choice) => {
|
|
74
|
+
if (typeof choice !== "object" || choice === null)
|
|
75
|
+
return "";
|
|
76
|
+
const message = choice.message;
|
|
77
|
+
const content = message?.content;
|
|
78
|
+
return typeof content === "string" ? content : "";
|
|
79
|
+
})
|
|
80
|
+
.filter((part) => part.length > 0)
|
|
81
|
+
.join("");
|
|
82
|
+
}
|
|
83
|
+
/** The first choice's `finish_reason` (e.g. `"stop"` / `"length"`), or `null` when absent. */
|
|
84
|
+
function firstFinishReason(choices) {
|
|
85
|
+
if (!Array.isArray(choices) || choices.length === 0)
|
|
86
|
+
return null;
|
|
87
|
+
const first = choices[0];
|
|
88
|
+
if (typeof first !== "object" || first === null)
|
|
89
|
+
return null;
|
|
90
|
+
const reason = first.finish_reason;
|
|
91
|
+
return typeof reason === "string" ? reason : null;
|
|
92
|
+
}
|
|
93
|
+
function parseChatResponse(raw) {
|
|
94
|
+
if (typeof raw !== "object" || raw === null) {
|
|
95
|
+
throw new PortkeyTransportError(502, "portkey transport: malformed gateway response");
|
|
96
|
+
}
|
|
97
|
+
const body = raw;
|
|
98
|
+
return {
|
|
99
|
+
content: joinChoiceContent(body.choices),
|
|
100
|
+
usage: parseUsage(body.usage),
|
|
101
|
+
finishReason: firstFinishReason(body.choices),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* POST a chat-completions request through Portkey and return the joined assistant text.
|
|
106
|
+
* Resolves the model as: explicit arg > configured `activeModel` > `gemini-2.5-flash`.
|
|
107
|
+
*/
|
|
108
|
+
export async function describeViaPortkey(request, deps) {
|
|
109
|
+
const doFetch = deps.fetch ?? globalThis.fetch.bind(globalThis);
|
|
110
|
+
const url = deps.url ?? PORTKEY_CHAT_COMPLETIONS_URL;
|
|
111
|
+
const maxAttempts = deps.maxAttempts ?? PORTKEY_MAX_ATTEMPTS;
|
|
112
|
+
const retryBackoffMs = deps.retryBackoffMs ?? PORTKEY_RETRY_BACKOFF_MS;
|
|
113
|
+
// Per-call request.timeoutMs (e.g. the raised batch-call value) wins over the
|
|
114
|
+
// deps-level override, which wins over the solo default (AC-018f.4).
|
|
115
|
+
const timeoutMs = request.timeoutMs ?? deps.timeoutMs ?? PORTKEY_REQUEST_TIMEOUT_MS;
|
|
116
|
+
const sleep = deps.sleep ?? defaultSleep;
|
|
117
|
+
const model = resolveModel(request.model, deps.portkey.activeModel);
|
|
118
|
+
const body = JSON.stringify({
|
|
119
|
+
model,
|
|
120
|
+
max_tokens: request.maxTokens ?? PORTKEY_DEFAULT_MAX_TOKENS,
|
|
121
|
+
messages: request.messages.map((m) => ({ role: m.role, content: m.content })),
|
|
122
|
+
});
|
|
123
|
+
const headers = buildPortkeyHeaders(deps.portkey.apiKey, deps.portkey.configId);
|
|
124
|
+
let lastStatus = 503;
|
|
125
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
126
|
+
let res;
|
|
127
|
+
const controller = new AbortController();
|
|
128
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
129
|
+
try {
|
|
130
|
+
res = await doFetch(url, { method: "POST", headers, body, signal: controller.signal });
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
lastStatus = 503;
|
|
134
|
+
if (attempt < maxAttempts) {
|
|
135
|
+
await sleep(retryBackoffMs * attempt);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
// Our own abort on `timeoutMs` surfaces as an AbortError here, same as any other
|
|
139
|
+
// network fault; never include the response body (it could echo a credential).
|
|
140
|
+
const detail = err instanceof Error ? err.name : "network error";
|
|
141
|
+
throw new PortkeyTransportError(503, `portkey transport: request failed (${detail})`);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
}
|
|
146
|
+
if (!res.ok) {
|
|
147
|
+
lastStatus = res.status;
|
|
148
|
+
if (attempt < maxAttempts && PORTKEY_RETRYABLE_STATUSES.has(res.status)) {
|
|
149
|
+
await sleep(retryBackoffMs * attempt);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
throw new PortkeyTransportError(res.status, `portkey transport: gateway returned status ${res.status}`);
|
|
153
|
+
}
|
|
154
|
+
let raw;
|
|
155
|
+
try {
|
|
156
|
+
const text = await res.text();
|
|
157
|
+
raw = text.length > 0 ? JSON.parse(text) : null;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
throw new PortkeyTransportError(502, "portkey transport: malformed gateway response");
|
|
161
|
+
}
|
|
162
|
+
const parsed = parseChatResponse(raw);
|
|
163
|
+
return { content: parsed.content, model, usage: parsed.usage, finishReason: parsed.finishReason };
|
|
164
|
+
}
|
|
165
|
+
throw new PortkeyTransportError(lastStatus, `portkey transport: gateway returned status ${lastStatus}`);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/portkey/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable projection document types and canonical serialization (PRD-011a).
|
|
3
|
+
*
|
|
4
|
+
* The JSON shape matches `library/knowledge/private/data/portable-registry.md`
|
|
5
|
+
* § The file format. `content_hash` values are bare lowercase sha256 hex (64
|
|
6
|
+
* chars), aligned to `hive-graph/hash.ts`, not a `sha256-` prefixed form.
|
|
7
|
+
*/
|
|
8
|
+
/** Current projection schema version. Old daemons refuse to load a higher value. */
|
|
9
|
+
export declare const PROJECTION_SCHEMA_VERSION = 1;
|
|
10
|
+
/** Default path relative to the project root (decision #31). */
|
|
11
|
+
export declare const DEFAULT_PROJECTION_REL_PATH = ".honeycomb/nectars.json";
|
|
12
|
+
/** Default generator string when none is supplied. */
|
|
13
|
+
export declare const DEFAULT_GENERATOR = "honeycomb-nectar@0.0.1";
|
|
14
|
+
export interface ProjectionProject {
|
|
15
|
+
readonly org_id: string;
|
|
16
|
+
readonly workspace_id: string;
|
|
17
|
+
readonly project_id: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ProjectionFileEntry {
|
|
20
|
+
readonly content_hash: string;
|
|
21
|
+
readonly path: string;
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly description: string;
|
|
24
|
+
readonly concepts: readonly string[];
|
|
25
|
+
readonly describe_model: string;
|
|
26
|
+
readonly described_at: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ProjectionDerivedEntry {
|
|
29
|
+
readonly from_nectar: string;
|
|
30
|
+
readonly fork_content_hash: string;
|
|
31
|
+
}
|
|
32
|
+
export interface PortableProjection {
|
|
33
|
+
readonly version: number;
|
|
34
|
+
readonly generated_at: string;
|
|
35
|
+
readonly generator: string;
|
|
36
|
+
readonly project: ProjectionProject;
|
|
37
|
+
readonly files: Readonly<Record<string, ProjectionFileEntry>>;
|
|
38
|
+
readonly derived: Readonly<Record<string, ProjectionDerivedEntry>>;
|
|
39
|
+
}
|
|
40
|
+
/** Syntactic check: 64 lowercase hex chars, no prefix (PRD-011b / hash.ts). */
|
|
41
|
+
export declare function isValidContentHash(value: string): boolean;
|
|
42
|
+
/** Parse JSON text into an unknown value; throws on invalid JSON. */
|
|
43
|
+
export declare function parseProjectionJson(text: string): unknown;
|
|
44
|
+
/**
|
|
45
|
+
* Deterministic JSON bytes: stable key order at every object level so two
|
|
46
|
+
* generations from the same store state differ only in `generated_at` (AC-7).
|
|
47
|
+
*/
|
|
48
|
+
export declare function canonicalSerialize(doc: PortableProjection): string;
|
|
49
|
+
/** Strip `generated_at` for byte-identical comparisons (AC-7). */
|
|
50
|
+
export declare function canonicalSerializeExceptGeneratedAt(doc: PortableProjection): string;
|
|
51
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/projection/format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;CACpE;AAID,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAsCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAmBlE;AAED,kEAAkE;AAClE,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAGnF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable projection document types and canonical serialization (PRD-011a).
|
|
3
|
+
*
|
|
4
|
+
* The JSON shape matches `library/knowledge/private/data/portable-registry.md`
|
|
5
|
+
* § The file format. `content_hash` values are bare lowercase sha256 hex (64
|
|
6
|
+
* chars), aligned to `hive-graph/hash.ts`, not a `sha256-` prefixed form.
|
|
7
|
+
*/
|
|
8
|
+
/** Current projection schema version. Old daemons refuse to load a higher value. */
|
|
9
|
+
export const PROJECTION_SCHEMA_VERSION = 1;
|
|
10
|
+
/** Default path relative to the project root (decision #31). */
|
|
11
|
+
export const DEFAULT_PROJECTION_REL_PATH = ".honeycomb/nectars.json";
|
|
12
|
+
/** Default generator string when none is supplied. */
|
|
13
|
+
export const DEFAULT_GENERATOR = "honeycomb-nectar@0.0.1";
|
|
14
|
+
const SHA256_HEX = /^[0-9a-f]{64}$/;
|
|
15
|
+
/** Syntactic check: 64 lowercase hex chars, no prefix (PRD-011b / hash.ts). */
|
|
16
|
+
export function isValidContentHash(value) {
|
|
17
|
+
return SHA256_HEX.test(value);
|
|
18
|
+
}
|
|
19
|
+
/** Parse JSON text into an unknown value; throws on invalid JSON. */
|
|
20
|
+
export function parseProjectionJson(text) {
|
|
21
|
+
return JSON.parse(text);
|
|
22
|
+
}
|
|
23
|
+
function quoteString(s) {
|
|
24
|
+
return JSON.stringify(s);
|
|
25
|
+
}
|
|
26
|
+
function serializeStringArray(arr) {
|
|
27
|
+
return `[${arr.map((v) => quoteString(v)).join(",")}]`;
|
|
28
|
+
}
|
|
29
|
+
function serializeFileEntry(entry) {
|
|
30
|
+
const parts = [
|
|
31
|
+
`"content_hash":${quoteString(entry.content_hash)}`,
|
|
32
|
+
`"path":${quoteString(entry.path)}`,
|
|
33
|
+
`"title":${quoteString(entry.title)}`,
|
|
34
|
+
`"description":${quoteString(entry.description)}`,
|
|
35
|
+
`"concepts":${serializeStringArray(entry.concepts)}`,
|
|
36
|
+
`"describe_model":${quoteString(entry.describe_model)}`,
|
|
37
|
+
`"described_at":${quoteString(entry.described_at)}`,
|
|
38
|
+
];
|
|
39
|
+
return `{${parts.join(",")}}`;
|
|
40
|
+
}
|
|
41
|
+
function serializeDerivedEntry(entry) {
|
|
42
|
+
return `{${[
|
|
43
|
+
`"from_nectar":${quoteString(entry.from_nectar)}`,
|
|
44
|
+
`"fork_content_hash":${quoteString(entry.fork_content_hash)}`,
|
|
45
|
+
].join(",")}}`;
|
|
46
|
+
}
|
|
47
|
+
function serializeProject(project) {
|
|
48
|
+
return `{${[
|
|
49
|
+
`"org_id":${quoteString(project.org_id)}`,
|
|
50
|
+
`"workspace_id":${quoteString(project.workspace_id)}`,
|
|
51
|
+
`"project_id":${quoteString(project.project_id)}`,
|
|
52
|
+
].join(",")}}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Deterministic JSON bytes: stable key order at every object level so two
|
|
56
|
+
* generations from the same store state differ only in `generated_at` (AC-7).
|
|
57
|
+
*/
|
|
58
|
+
export function canonicalSerialize(doc) {
|
|
59
|
+
const fileKeys = Object.keys(doc.files).sort();
|
|
60
|
+
const filesBody = fileKeys
|
|
61
|
+
.map((k) => `${quoteString(k)}:${serializeFileEntry(doc.files[k])}`)
|
|
62
|
+
.join(",");
|
|
63
|
+
const derivedKeys = Object.keys(doc.derived).sort();
|
|
64
|
+
const derivedBody = derivedKeys
|
|
65
|
+
.map((k) => `${quoteString(k)}:${serializeDerivedEntry(doc.derived[k])}`)
|
|
66
|
+
.join(",");
|
|
67
|
+
return `{${[
|
|
68
|
+
`"version":${doc.version}`,
|
|
69
|
+
`"generated_at":${quoteString(doc.generated_at)}`,
|
|
70
|
+
`"generator":${quoteString(doc.generator)}`,
|
|
71
|
+
`"project":${serializeProject(doc.project)}`,
|
|
72
|
+
`"files":{${filesBody}}`,
|
|
73
|
+
`"derived":{${derivedBody}}`,
|
|
74
|
+
].join(",")}}\n`;
|
|
75
|
+
}
|
|
76
|
+
/** Strip `generated_at` for byte-identical comparisons (AC-7). */
|
|
77
|
+
export function canonicalSerializeExceptGeneratedAt(doc) {
|
|
78
|
+
const without = { ...doc, generated_at: "1970-01-01T00:00:00.000Z" };
|
|
79
|
+
return canonicalSerialize(without);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/projection/format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,gEAAgE;AAChE,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAErE,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAgC1D,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAsB;IAClD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA0B;IACpD,MAAM,KAAK,GAAG;QACZ,kBAAkB,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;QACnD,UAAU,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,WAAW,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACrC,iBAAiB,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACjD,cAAc,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpD,oBAAoB,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QACvD,kBAAkB,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;KACpD,CAAC;IACF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA6B;IAC1D,OAAO,IAAI;QACT,iBAAiB,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACjD,uBAAuB,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;KAC9D,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA0B;IAClD,OAAO,IAAI;QACT,YAAY,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzC,kBAAkB,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACrD,gBAAgB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAwB,CAAC,EAAE,CAAC;SAC1F,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,WAAW;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAA2B,CAAC,EAAE,CAAC;SAClG,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI;QACT,aAAa,GAAG,CAAC,OAAO,EAAE;QAC1B,kBAAkB,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;QACjD,eAAe,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC3C,aAAa,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5C,YAAY,SAAS,GAAG;QACxB,cAAc,WAAW,GAAG;KAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,mCAAmC,CAAC,GAAuB;IACzE,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,0BAA0B,EAAE,CAAC;IACrE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|