@cleocode/core 2026.9.22 → 2026.9.23
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/dist/build-provenance.json +6 -0
- package/dist/decide/audit.d.ts +7 -1
- package/dist/decide/audit.d.ts.map +1 -1
- package/dist/decide/audit.js.map +1 -1
- package/dist/decide/client.d.ts +46 -4
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +328 -33
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +28 -4
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +50 -12
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/index.d.ts +10 -4
- package/dist/decide/index.d.ts.map +1 -1
- package/dist/decide/index.js +10 -4
- package/dist/decide/index.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +100 -8
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +402 -55
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +97 -20
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +180 -28
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/provider-state.d.ts +89 -0
- package/dist/decide/provider-state.d.ts.map +1 -0
- package/dist/decide/provider-state.js +134 -0
- package/dist/decide/provider-state.js.map +1 -0
- package/dist/decide/provider.d.ts +26 -5
- package/dist/decide/provider.d.ts.map +1 -1
- package/dist/decide/provider.js.map +1 -1
- package/dist/decide/providers.d.ts +58 -0
- package/dist/decide/providers.d.ts.map +1 -0
- package/dist/decide/providers.js +69 -0
- package/dist/decide/providers.js.map +1 -0
- package/dist/decide/site.d.ts +2 -2
- package/dist/decide/site.d.ts.map +1 -1
- package/dist/decide/site.js +2 -0
- package/dist/decide/site.js.map +1 -1
- package/dist/decide/sites/list.d.ts +46 -0
- package/dist/decide/sites/list.d.ts.map +1 -0
- package/dist/decide/sites/list.js +206 -0
- package/dist/decide/sites/list.js.map +1 -0
- package/dist/decide/sites/registry.d.ts +130 -0
- package/dist/decide/sites/registry.d.ts.map +1 -0
- package/dist/decide/sites/registry.js +375 -0
- package/dist/decide/sites/registry.js.map +1 -0
- package/dist/decide/spend.d.ts +196 -0
- package/dist/decide/spend.d.ts.map +1 -0
- package/dist/decide/spend.js +387 -0
- package/dist/decide/spend.js.map +1 -0
- package/dist/decide/wizard.d.ts +53 -0
- package/dist/decide/wizard.d.ts.map +1 -0
- package/dist/decide/wizard.js +144 -0
- package/dist/decide/wizard.js.map +1 -0
- package/dist/docs/docs-audit.d.ts.map +1 -1
- package/dist/docs/docs-audit.js +1 -2
- package/dist/docs/docs-audit.js.map +1 -1
- package/dist/docs/export-document.js +775 -415
- package/dist/docs/export-document.js.map +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init/scaffold-workflows.d.ts.map +1 -1
- package/dist/init/scaffold-workflows.js +6 -3
- package/dist/init/scaffold-workflows.js.map +1 -1
- package/dist/init/upgrade-workflows.d.ts.map +1 -1
- package/dist/init/upgrade-workflows.js +6 -3
- package/dist/init/upgrade-workflows.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/llm/plugin-facade.js +886 -526
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/decision-contradiction.d.ts +3 -3
- package/dist/memory/decision-contradiction.d.ts.map +1 -1
- package/dist/memory/decision-contradiction.js +4 -3
- package/dist/memory/decision-contradiction.js.map +1 -1
- package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
- package/dist/memory/graph-memory-bridge.js +2 -0
- package/dist/memory/graph-memory-bridge.js.map +1 -1
- package/dist/memory/observation-type-decision.d.ts +2 -2
- package/dist/memory/observation-type-decision.d.ts.map +1 -1
- package/dist/memory/observation-type-decision.js +3 -2
- package/dist/memory/observation-type-decision.js.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.d.ts +111 -0
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +230 -2
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
- package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
- package/dist/nexus/migrations/M-split-graph.js +4 -0
- package/dist/nexus/migrations/M-split-graph.js.map +1 -1
- package/dist/nexus/store.d.ts.map +1 -1
- package/dist/nexus/store.js +2 -0
- package/dist/nexus/store.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +13 -8
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/plan.d.ts.map +1 -1
- package/dist/orchestrate/plan.js +3 -0
- package/dist/orchestrate/plan.js.map +1 -1
- package/dist/orchestration/lead-rollup.js +14 -2
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/owner-decision-readiness.d.ts +2 -2
- package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -1
- package/dist/orchestration/owner-decision-readiness.js +3 -2
- package/dist/orchestration/owner-decision-readiness.js.map +1 -1
- package/dist/orchestration/validate-spawn.d.ts.map +1 -1
- package/dist/orchestration/validate-spawn.js +2 -0
- package/dist/orchestration/validate-spawn.js.map +1 -1
- package/dist/project-scope.d.ts +16 -0
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +38 -2
- package/dist/project-scope.js.map +1 -1
- package/dist/release/github-pr.d.ts.map +1 -1
- package/dist/release/github-pr.js +2 -1
- package/dist/release/github-pr.js.map +1 -1
- package/dist/routing/capability-matrix.d.ts.map +1 -1
- package/dist/routing/capability-matrix.js +7 -0
- package/dist/routing/capability-matrix.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +895 -535
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +23 -62
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +6 -1
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +5 -2
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts +28 -0
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +51 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +13 -10
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +15 -10
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/llm.js +1 -1
- package/dist/setup/sections/llm.js.map +1 -1
- package/dist/setup/sections/system-one.d.ts +28 -0
- package/dist/setup/sections/system-one.d.ts.map +1 -0
- package/dist/setup/sections/system-one.js +53 -0
- package/dist/setup/sections/system-one.js.map +1 -0
- package/dist/setup/wizard.d.ts +15 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js +15 -0
- package/dist/setup/wizard.js.map +1 -1
- package/dist/skills/prune-bundled.d.ts +40 -1
- package/dist/skills/prune-bundled.d.ts.map +1 -1
- package/dist/skills/prune-bundled.js +117 -1
- package/dist/skills/prune-bundled.js.map +1 -1
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +2 -0
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/backup-pack.js +1 -1
- package/dist/store/backup-pack.js.map +1 -1
- package/dist/store/backup.d.ts +15 -1
- package/dist/store/backup.d.ts.map +1 -1
- package/dist/store/backup.js +18 -2
- package/dist/store/backup.js.map +1 -1
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +3 -0
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +2 -0
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/cross-db-cleanup.js +2 -0
- package/dist/store/cross-db-cleanup.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +13 -2
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.js +3 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +37 -3
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +2 -0
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/nexus-sqlite.d.ts.map +1 -1
- package/dist/store/nexus-sqlite.js +3 -0
- package/dist/store/nexus-sqlite.js.map +1 -1
- package/dist/store/open-cleo-db.d.ts.map +1 -1
- package/dist/store/open-cleo-db.js +3 -0
- package/dist/store/open-cleo-db.js.map +1 -1
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +2 -0
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +2 -0
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -1
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/ports/domain-binding.d.ts.map +1 -1
- package/dist/store/ports/domain-binding.js +5 -0
- package/dist/store/ports/domain-binding.js.map +1 -1
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +2 -0
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.js +7 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite-native.d.ts.map +1 -1
- package/dist/store/sqlite-native.js +1 -0
- package/dist/store/sqlite-native.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +5 -0
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/worktree-build-guard.d.ts +191 -0
- package/dist/store/worktree-build-guard.d.ts.map +1 -0
- package/dist/store/worktree-build-guard.js +486 -0
- package/dist/store/worktree-build-guard.js.map +1 -0
- package/dist/store/worktree-isolation-guard.d.ts +27 -0
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +67 -1
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +2 -0
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/backup.d.ts +6 -2
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +6 -3
- package/dist/system/backup.js.map +1 -1
- package/dist/task-tools/index.d.ts +4 -2
- package/dist/task-tools/index.d.ts.map +1 -1
- package/dist/task-tools/index.js +3 -2
- package/dist/task-tools/index.js.map +1 -1
- package/dist/task-tools/score-task-priority.d.ts +93 -18
- package/dist/task-tools/score-task-priority.d.ts.map +1 -1
- package/dist/task-tools/score-task-priority.js +193 -81
- package/dist/task-tools/score-task-priority.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +5 -1
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +21 -3
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/analyze.d.ts +29 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +45 -34
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
- package/dist/tasks/backfill-child-projections.js +4 -1
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +16 -3
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/command-line.d.ts +54 -0
- package/dist/tasks/command-line.d.ts.map +1 -0
- package/dist/tasks/command-line.js +151 -0
- package/dist/tasks/command-line.js.map +1 -0
- package/dist/tasks/component-pr.d.ts.map +1 -1
- package/dist/tasks/component-pr.js +97 -12
- package/dist/tasks/component-pr.js.map +1 -1
- package/dist/tasks/delete.d.ts.map +1 -1
- package/dist/tasks/delete.js +20 -0
- package/dist/tasks/delete.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts +3 -3
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +4 -3
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.d.ts +29 -0
- package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +40 -0
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/engine-wrap.d.ts +1 -1
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +1 -1
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/evidence.d.ts +2 -0
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +30 -4
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +48 -12
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/ops.d.ts +1 -0
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/ranking-audit.d.ts +122 -0
- package/dist/tasks/ranking-audit.d.ts.map +1 -0
- package/dist/tasks/ranking-audit.js +193 -0
- package/dist/tasks/ranking-audit.js.map +1 -0
- package/dist/tasks/task-analyze.d.ts.map +1 -1
- package/dist/tasks/task-analyze.js +19 -32
- package/dist/tasks/task-analyze.js.map +1 -1
- package/dist/tasks/task-next.d.ts +44 -2
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +80 -102
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/task-ops.d.ts +1 -1
- package/dist/tasks/task-ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.js +1 -1
- package/dist/tasks/task-ops.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +7 -1
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +24 -10
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/update.d.ts +8 -2
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +28 -1
- package/dist/tasks/update.js.map +1 -1
- package/dist/telemetry/sqlite.d.ts.map +1 -1
- package/dist/telemetry/sqlite.js +2 -0
- package/dist/telemetry/sqlite.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +2 -2
- package/dist/validation/doctor/checks.js.map +1 -1
- package/package.json +14 -14
- package/schemas/config.schema.json +13 -0
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +5 -1
package/dist/decide/jev-wire.js
CHANGED
|
@@ -21,8 +21,25 @@
|
|
|
21
21
|
* `{ score: <expected level>, probabilities: { level: p }, confidence }`.
|
|
22
22
|
* Score probabilities are keyed by level text (or, defensively, by 0-based
|
|
23
23
|
* index) and re-aligned to the question's `criteria` order.
|
|
24
|
-
* - Errors
|
|
25
|
-
*
|
|
24
|
+
* - Errors, per the layahost OpenAPI 1.0.0 (test fixture
|
|
25
|
+
* `__tests__/fixtures/layahost-openapi.trimmed.json`): 401, 402, 422, 429,
|
|
26
|
+
* 503, each with a Jev-style body `{detail:{error_type,message}}`. 402, and a
|
|
27
|
+
* 429 whose `error_type` is `insufficient_quota` (empty balance), are credit
|
|
28
|
+
* exhaustion (`insufficient_credits`), never `unauthorized` and never a rate
|
|
29
|
+
* limit. 503 is `overloaded` (with `retry-after`). The error body is read,
|
|
30
|
+
* size-capped, to classify.
|
|
31
|
+
* UNVERIFIED tolerant extras (in the provider docs, not the OpenAPI): a 403
|
|
32
|
+
* `key_limit_exceeded` (the key's monthly limit, NOT a credential failure;
|
|
33
|
+
* any other 403 is `unauthorized`) and a 529 (`overloaded`).
|
|
34
|
+
* - Cost (T12664, `jev-wire/2`): `meta.cost_micros` (in the OpenAPI) and
|
|
35
|
+
* `meta.checkpoint` (in the OpenAPI); `meta.cost_usd` is still read.
|
|
36
|
+
* UNVERIFIED tolerant extras (docs only, not the OpenAPI): the
|
|
37
|
+
* `x-layahost-cost-micros` and `x-layahost-balance-micros` headers. A plain
|
|
38
|
+
* Jev host sends none of them and keeps working.
|
|
39
|
+
* - Extensions, gated by {@link JevProviderOptions.capabilities} (detected by
|
|
40
|
+
* {@link detectJevCapabilities} from `/v1/usage` and `/v1/templates`
|
|
41
|
+
* responses, never from the host name): the `lang` and `cache` request
|
|
42
|
+
* fields, `POST /v1/systemone/batch` and `GET /v1/usage`.
|
|
26
43
|
*
|
|
27
44
|
* - Model: the provider's OpenAPI marks `SystemOneRequest.model` REQUIRED and
|
|
28
45
|
* documents no server-side default for `/v1/systemone` (the `laya-auto`
|
|
@@ -39,7 +56,7 @@
|
|
|
39
56
|
* @task T12490
|
|
40
57
|
* @epic T12486
|
|
41
58
|
*/
|
|
42
|
-
import { decisionAnswerSchema, } from '@cleocode/contracts';
|
|
59
|
+
import { decisionAnswerSchema, JEV_MINIMUM_CAPABILITIES, } from '@cleocode/contracts';
|
|
43
60
|
import { z } from 'zod';
|
|
44
61
|
import { MAX_RATE_LIMIT_COOLDOWN_MS } from './budget.js';
|
|
45
62
|
import { DecisionProviderError, } from './provider.js';
|
|
@@ -48,8 +65,38 @@ import { decideFetch } from './transport.js';
|
|
|
48
65
|
const SYSTEMONE_PATH = '/v1/systemone';
|
|
49
66
|
/** Path of the model-listing endpoint, relative to the base URL. */
|
|
50
67
|
const MODELS_PATH = '/v1/models';
|
|
51
|
-
/**
|
|
52
|
-
|
|
68
|
+
/** Path of the batch endpoint (layahost extension). */
|
|
69
|
+
const BATCH_PATH = '/v1/systemone/batch';
|
|
70
|
+
/** Path of the usage endpoint (layahost extension). */
|
|
71
|
+
const USAGE_PATH = '/v1/usage';
|
|
72
|
+
/** Path of the template listing (layahost extension). */
|
|
73
|
+
const TEMPLATES_PATH = '/v1/templates';
|
|
74
|
+
/** Header carrying the call's cost in integer micro-dollars. UNVERIFIED: in the provider docs, not its OpenAPI. */
|
|
75
|
+
export const COST_MICROS_HEADER = 'x-layahost-cost-micros';
|
|
76
|
+
/** Header carrying the account balance in integer micro-dollars. UNVERIFIED: in the provider docs, not its OpenAPI. */
|
|
77
|
+
export const BALANCE_MICROS_HEADER = 'x-layahost-balance-micros';
|
|
78
|
+
/** Byte cap on an error body read to classify a failure. */
|
|
79
|
+
const MAX_ERROR_BODY_BYTES = 8 * 1024;
|
|
80
|
+
/** Byte cap on a usage or template listing body. */
|
|
81
|
+
const MAX_EXTENSION_BODY_BYTES = 64 * 1024;
|
|
82
|
+
/**
|
|
83
|
+
* Capabilities of a provider that answers `GET /v1/usage` (layahost): batch
|
|
84
|
+
* of 64 requests / 256 questions, usage, cache control, lang hint, cost in
|
|
85
|
+
* micros. Templates are added only when `/v1/templates` lists them.
|
|
86
|
+
*/
|
|
87
|
+
export const LAYAHOST_EXTENSION_CAPABILITIES = {
|
|
88
|
+
...JEV_MINIMUM_CAPABILITIES,
|
|
89
|
+
batch: { maxRequests: 64, maxQuestions: 256 },
|
|
90
|
+
usage: true,
|
|
91
|
+
cacheControl: true,
|
|
92
|
+
langHint: true,
|
|
93
|
+
reportsCost: 'micros',
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Adapter identity + version; part of every cache key so a mapping change
|
|
97
|
+
* invalidates the cache. `/2`: cost micros, balance and checkpoint are read.
|
|
98
|
+
*/
|
|
99
|
+
export const JEV_ADAPTER_VERSION = 'jev-wire/2';
|
|
53
100
|
/** Loose schema for one wire answer; extra fields (e.g. `legend`) are tolerated. */
|
|
54
101
|
const jevAnswerSchema = z.looseObject({
|
|
55
102
|
type: z.string().optional(),
|
|
@@ -69,6 +116,8 @@ const jevResponseSchema = z.looseObject({
|
|
|
69
116
|
request_id: z.string().optional(),
|
|
70
117
|
latency_ms: z.number().optional(),
|
|
71
118
|
cost_usd: z.number().nonnegative().optional(),
|
|
119
|
+
cost_micros: z.number().int().nonnegative().optional(),
|
|
120
|
+
checkpoint: z.string().min(1).optional(),
|
|
72
121
|
cached: z.boolean().optional(),
|
|
73
122
|
})
|
|
74
123
|
.optional(),
|
|
@@ -76,10 +125,15 @@ const jevResponseSchema = z.looseObject({
|
|
|
76
125
|
/**
|
|
77
126
|
* Map a contract request to the `/v1/systemone` wire body.
|
|
78
127
|
*
|
|
128
|
+
* `lang` and `cache` are sent only when `capabilities` says the provider
|
|
129
|
+
* honours them; the default (Jev minimum) sends neither, so a plain Jev host
|
|
130
|
+
* sees exactly the Jev body.
|
|
131
|
+
*
|
|
79
132
|
* @param req - Provider-neutral request.
|
|
133
|
+
* @param capabilities - The provider's capabilities. Default: the Jev minimum.
|
|
80
134
|
* @returns The JSON body to POST.
|
|
81
135
|
*/
|
|
82
|
-
export function toJevSystemOneBody(req) {
|
|
136
|
+
export function toJevSystemOneBody(req, capabilities = JEV_MINIMUM_CAPABILITIES) {
|
|
83
137
|
const questions = {};
|
|
84
138
|
for (const [name, q] of Object.entries(req.questions)) {
|
|
85
139
|
if (q.type === 'noul') {
|
|
@@ -97,8 +151,17 @@ export function toJevSystemOneBody(req) {
|
|
|
97
151
|
...(req.model !== undefined ? { model: req.model } : {}),
|
|
98
152
|
state: req.state,
|
|
99
153
|
questions,
|
|
154
|
+
...(capabilities.langHint === true && req.lang !== undefined ? { lang: req.lang } : {}),
|
|
155
|
+
...(capabilities.cacheControl === true && req.cache !== undefined ? { cache: req.cache } : {}),
|
|
100
156
|
};
|
|
101
157
|
}
|
|
158
|
+
/** Integer micro-dollars from a header value, or undefined when absent or malformed. */
|
|
159
|
+
function microsHeader(value) {
|
|
160
|
+
if (value === null || value === undefined || !/^-?\d+$/.test(value.trim()))
|
|
161
|
+
return undefined;
|
|
162
|
+
const n = Number(value.trim());
|
|
163
|
+
return Number.isSafeInteger(n) ? n : undefined;
|
|
164
|
+
}
|
|
102
165
|
/** Index of the largest value; ties resolve to the lowest index. */
|
|
103
166
|
function argmax(values) {
|
|
104
167
|
let best = 0;
|
|
@@ -163,7 +226,7 @@ function mapAnswer(name, question, wire) {
|
|
|
163
226
|
* @param latencyMs - Measured wall-clock latency of the call.
|
|
164
227
|
* @returns The outcome, with `source: 'provider'`.
|
|
165
228
|
*/
|
|
166
|
-
export function fromJevSystemOneResponse(req, body, latencyMs) {
|
|
229
|
+
export function fromJevSystemOneResponse(req, body, latencyMs, headers = {}) {
|
|
167
230
|
const parsed = jevResponseSchema.safeParse(body);
|
|
168
231
|
if (!parsed.success)
|
|
169
232
|
throw invalid('response body does not match the systemone shape');
|
|
@@ -182,7 +245,10 @@ export function fromJevSystemOneResponse(req, body, latencyMs) {
|
|
|
182
245
|
answers[name] = checked.data;
|
|
183
246
|
}
|
|
184
247
|
const requestId = wire.meta?.request_id;
|
|
185
|
-
const
|
|
248
|
+
const costMicros = wire.meta?.cost_micros ?? nonNegative(microsHeader(headers.costMicros));
|
|
249
|
+
const costUsd = wire.meta?.cost_usd ?? (costMicros !== undefined ? costMicros / 1e6 : undefined);
|
|
250
|
+
const balanceMicros = microsHeader(headers.balanceMicros);
|
|
251
|
+
const checkpoint = wire.meta?.checkpoint;
|
|
186
252
|
const inputTokens = wire.usage?.input_tokens;
|
|
187
253
|
return {
|
|
188
254
|
answers,
|
|
@@ -190,9 +256,15 @@ export function fromJevSystemOneResponse(req, body, latencyMs) {
|
|
|
190
256
|
latencyMs,
|
|
191
257
|
...(requestId ? { requestId } : {}),
|
|
192
258
|
...(costUsd !== undefined ? { costUsd } : {}),
|
|
259
|
+
...(costMicros !== undefined ? { costMicros } : {}),
|
|
260
|
+
...(balanceMicros !== undefined ? { balanceMicros } : {}),
|
|
261
|
+
...(checkpoint ? { checkpoint } : {}),
|
|
193
262
|
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
194
263
|
};
|
|
195
264
|
}
|
|
265
|
+
function nonNegative(n) {
|
|
266
|
+
return n !== undefined && n >= 0 ? n : undefined;
|
|
267
|
+
}
|
|
196
268
|
/**
|
|
197
269
|
* Parse a `retry-after` header (delta seconds or HTTP date) into milliseconds,
|
|
198
270
|
* capped at {@link MAX_RATE_LIMIT_COOLDOWN_MS}.
|
|
@@ -223,24 +295,74 @@ export function parseRetryAfterMs(header, now = Date.now()) {
|
|
|
223
295
|
return undefined;
|
|
224
296
|
return Math.round(Math.min(ms, MAX_RATE_LIMIT_COOLDOWN_MS));
|
|
225
297
|
}
|
|
226
|
-
/**
|
|
227
|
-
function
|
|
228
|
-
const
|
|
298
|
+
/** The provider's `error_type` from an error body (`{detail:{error_type}}` or `{error:{type}}`). */
|
|
299
|
+
export function errorTypeOf(body) {
|
|
300
|
+
const field = (o, key) => o !== null && typeof o === 'object' && key in o ? Reflect.get(o, key) : undefined;
|
|
301
|
+
const pick = (v) => (typeof v === 'string' ? v : undefined);
|
|
302
|
+
return (pick(field(field(body, 'detail'), 'error_type')) ??
|
|
303
|
+
pick(field(field(body, 'error'), 'type')) ??
|
|
304
|
+
pick(field(body, 'error_type')));
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Classify a non-2xx response.
|
|
308
|
+
*
|
|
309
|
+
* @param status - HTTP status.
|
|
310
|
+
* @param retryAfterMs - Parsed `retry-after`, when present.
|
|
311
|
+
* @param errorType - The body's `error_type`, when readable.
|
|
312
|
+
* @returns The provider error.
|
|
313
|
+
*/
|
|
314
|
+
export function errorForStatus(status, retryAfterMs, errorType) {
|
|
315
|
+
const message = `decision provider returned HTTP ${status}${errorType ? ` (${errorType})` : ''}`;
|
|
316
|
+
const withRetry = { status, ...(retryAfterMs !== undefined ? { retryAfterMs } : {}) };
|
|
317
|
+
if (status === 403 && errorType === 'key_limit_exceeded') {
|
|
318
|
+
return new DecisionProviderError('key_limit_exceeded', "the key's monthly decision limit is reached", { status });
|
|
319
|
+
}
|
|
229
320
|
if (status === 401 || status === 403) {
|
|
230
321
|
return new DecisionProviderError('unauthorized', message, { status });
|
|
231
322
|
}
|
|
232
323
|
if (status === 402)
|
|
233
324
|
return new DecisionProviderError('insufficient_credits', message, { status });
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
325
|
+
// An empty balance answers 429 insufficient_quota (OpenAPI): credit
|
|
326
|
+
// exhaustion, not a rate limit — backing off for a minute cannot fix it.
|
|
327
|
+
if (status === 429 && errorType === 'insufficient_quota') {
|
|
328
|
+
return new DecisionProviderError('insufficient_credits', message, { status });
|
|
329
|
+
}
|
|
330
|
+
if (status === 429)
|
|
331
|
+
return new DecisionProviderError('rate_limited', message, withRetry);
|
|
332
|
+
if (status === 503 || status === 529) {
|
|
333
|
+
return new DecisionProviderError('overloaded', message, withRetry);
|
|
239
334
|
}
|
|
240
335
|
if (status >= 500)
|
|
241
336
|
return new DecisionProviderError('server_error', message, { status });
|
|
242
337
|
return new DecisionProviderError('invalid_request', message, { status });
|
|
243
338
|
}
|
|
339
|
+
/** Read a failed response's body (size-capped) and classify it. Never throws a non-provider error. */
|
|
340
|
+
async function errorForResponse(response) {
|
|
341
|
+
const retryAfterMs = parseRetryAfterMs(response.headers.get('retry-after'));
|
|
342
|
+
let errorType;
|
|
343
|
+
try {
|
|
344
|
+
errorType = errorTypeOf(JSON.parse(await readBoundedText(response, MAX_ERROR_BODY_BYTES)));
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
await response.body?.cancel().catch(() => undefined);
|
|
348
|
+
}
|
|
349
|
+
return errorForStatus(response.status, retryAfterMs, errorType);
|
|
350
|
+
}
|
|
351
|
+
/** Map a provider `error_type` string (batch items) to an error kind. */
|
|
352
|
+
function kindForErrorType(status, errorType) {
|
|
353
|
+
if (status !== undefined)
|
|
354
|
+
return errorForStatus(status, undefined, errorType).kind;
|
|
355
|
+
if (errorType === 'insufficient_credits' || errorType === 'insufficient_quota') {
|
|
356
|
+
return 'insufficient_credits';
|
|
357
|
+
}
|
|
358
|
+
if (errorType === 'key_limit_exceeded')
|
|
359
|
+
return 'key_limit_exceeded';
|
|
360
|
+
if (errorType === 'rate_limit_error')
|
|
361
|
+
return 'rate_limited';
|
|
362
|
+
if (errorType === 'overloaded_error')
|
|
363
|
+
return 'overloaded';
|
|
364
|
+
return 'invalid_response';
|
|
365
|
+
}
|
|
244
366
|
/** Join a base URL and an absolute endpoint path, tolerating a trailing slash on the base. */
|
|
245
367
|
function endpointUrl(baseUrl, path) {
|
|
246
368
|
return `${baseUrl.replace(/\/+$/, '')}${path}`;
|
|
@@ -262,52 +384,279 @@ function endpointUrl(baseUrl, path) {
|
|
|
262
384
|
export function createJevProvider(connection, opts = {}) {
|
|
263
385
|
const doFetch = opts.fetch ?? decideFetch;
|
|
264
386
|
const now = opts.now ?? (() => performance.now());
|
|
265
|
-
|
|
387
|
+
const capabilities = opts.capabilities ?? JEV_MINIMUM_CAPABILITIES;
|
|
388
|
+
const withModel = (req) => req.model === undefined && connection.model ? { ...req, model: connection.model } : req;
|
|
389
|
+
/** POST/GET with auth; network failures become provider errors. */
|
|
390
|
+
async function send(path, init, signal) {
|
|
391
|
+
try {
|
|
392
|
+
return await doFetch(endpointUrl(connection.baseUrl, path), {
|
|
393
|
+
method: init.method,
|
|
394
|
+
headers: {
|
|
395
|
+
authorization: `Bearer ${connection.apiKey}`,
|
|
396
|
+
accept: 'application/json',
|
|
397
|
+
...(init.body !== undefined ? { 'content-type': 'application/json' } : {}),
|
|
398
|
+
},
|
|
399
|
+
...(init.body !== undefined ? { body: init.body } : {}),
|
|
400
|
+
signal,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
catch (err) {
|
|
404
|
+
const cause = err instanceof Error ? err : undefined;
|
|
405
|
+
if (signal.aborted) {
|
|
406
|
+
throw new DecisionProviderError('aborted', 'decision request aborted', { cause });
|
|
407
|
+
}
|
|
408
|
+
throw new DecisionProviderError('network', 'decision request failed before a response', {
|
|
409
|
+
cause,
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
/** Parse a 2xx JSON body; a non-JSON body is `invalid_response` (or `aborted`). */
|
|
414
|
+
async function jsonBody(response, signal) {
|
|
415
|
+
try {
|
|
416
|
+
return await response.json();
|
|
417
|
+
}
|
|
418
|
+
catch (err) {
|
|
419
|
+
if (signal.aborted) {
|
|
420
|
+
throw new DecisionProviderError('aborted', 'decision request aborted', {
|
|
421
|
+
cause: err instanceof Error ? err : undefined,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
throw invalid('response body is not JSON');
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const provider = {
|
|
428
|
+
capabilities: () => capabilities,
|
|
266
429
|
async decide(req, signal) {
|
|
267
430
|
const started = now();
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
431
|
+
const response = await send(SYSTEMONE_PATH, { method: 'POST', body: JSON.stringify(toJevSystemOneBody(withModel(req), capabilities)) }, signal);
|
|
432
|
+
if (!response.ok)
|
|
433
|
+
throw await errorForResponse(response);
|
|
434
|
+
const body = await jsonBody(response, signal);
|
|
435
|
+
return fromJevSystemOneResponse(req, body, Math.max(0, now() - started), {
|
|
436
|
+
costMicros: response.headers.get(COST_MICROS_HEADER),
|
|
437
|
+
balanceMicros: response.headers.get(BALANCE_MICROS_HEADER),
|
|
438
|
+
});
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
if (capabilities.batch) {
|
|
442
|
+
const limits = capabilities.batch;
|
|
443
|
+
provider.decideBatch = async (reqs, signal) => {
|
|
444
|
+
const questions = reqs.reduce((n, r) => n + Object.keys(r.questions).length, 0);
|
|
445
|
+
if (reqs.length === 0)
|
|
446
|
+
return [];
|
|
447
|
+
if (reqs.length > limits.maxRequests || questions > limits.maxQuestions) {
|
|
448
|
+
throw new DecisionProviderError('invalid_request', `batch of ${reqs.length} requests / ${questions} questions exceeds ${limits.maxRequests} / ${limits.maxQuestions}`);
|
|
282
449
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
450
|
+
const started = now();
|
|
451
|
+
const response = await send(BATCH_PATH, {
|
|
452
|
+
method: 'POST',
|
|
453
|
+
body: JSON.stringify({
|
|
454
|
+
requests: reqs.map((r) => toJevSystemOneBody(withModel(r), capabilities)),
|
|
455
|
+
}),
|
|
456
|
+
}, signal);
|
|
457
|
+
if (!response.ok)
|
|
458
|
+
throw await errorForResponse(response);
|
|
459
|
+
const parsed = jevBatchSchema.safeParse(await jsonBody(response, signal));
|
|
460
|
+
if (!parsed.success)
|
|
461
|
+
throw invalid('batch response does not match the batch shape');
|
|
462
|
+
// OpenAPI: `{ responses: [{ index, status, body: SystemOneResponse }], request_id }`.
|
|
463
|
+
// Items are placed by `index`, never by array position.
|
|
464
|
+
const byIndex = new Map();
|
|
465
|
+
for (const item of parsed.data.responses) {
|
|
466
|
+
if (item.index < 0 || item.index >= reqs.length || byIndex.has(item.index)) {
|
|
467
|
+
throw invalid(`batch item index ${item.index} is out of range or repeated`);
|
|
287
468
|
}
|
|
288
|
-
|
|
289
|
-
cause,
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
if (!response.ok) {
|
|
293
|
-
// Drain the body so the connection can be reused; its content is not needed.
|
|
294
|
-
await response.body?.cancel().catch(() => undefined);
|
|
295
|
-
throw errorForStatus(response.status, parseRetryAfterMs(response.headers.get('retry-after')));
|
|
469
|
+
byIndex.set(item.index, item);
|
|
296
470
|
}
|
|
471
|
+
const latencyMs = Math.max(0, now() - started);
|
|
472
|
+
return reqs.map((req, index) => {
|
|
473
|
+
const item = byIndex.get(index);
|
|
474
|
+
if (!item)
|
|
475
|
+
return { ok: false, errorKind: 'invalid_response' };
|
|
476
|
+
if (item.status < 200 || item.status >= 300) {
|
|
477
|
+
return {
|
|
478
|
+
ok: false,
|
|
479
|
+
status: item.status,
|
|
480
|
+
errorKind: kindForErrorType(item.status, errorTypeOf(item.body)),
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
try {
|
|
484
|
+
// Cost comes from the item body's `meta` (OpenAPI SystemOneResponse).
|
|
485
|
+
return { ok: true, outcome: fromJevSystemOneResponse(req, item.body, latencyMs) };
|
|
486
|
+
}
|
|
487
|
+
catch (err) {
|
|
488
|
+
return {
|
|
489
|
+
ok: false,
|
|
490
|
+
status: item.status,
|
|
491
|
+
errorKind: err instanceof DecisionProviderError ? err.kind : 'invalid_response',
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
if (capabilities.usage) {
|
|
498
|
+
provider.usage = async (signal) => {
|
|
499
|
+
const response = await send(`${USAGE_PATH}?days=30`, { method: 'GET' }, signal);
|
|
500
|
+
if (!response.ok)
|
|
501
|
+
throw await errorForResponse(response);
|
|
297
502
|
let body;
|
|
298
503
|
try {
|
|
299
|
-
body = await response
|
|
504
|
+
body = JSON.parse(await readBoundedText(response, MAX_EXTENSION_BODY_BYTES));
|
|
300
505
|
}
|
|
301
506
|
catch (err) {
|
|
302
|
-
if (
|
|
303
|
-
throw
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
507
|
+
if (err instanceof DecisionProviderError)
|
|
508
|
+
throw err;
|
|
509
|
+
throw invalid('usage response is not JSON');
|
|
510
|
+
}
|
|
511
|
+
return parseJevUsage(body);
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
return provider;
|
|
515
|
+
}
|
|
516
|
+
/** One `/v1/systemone/batch` item (OpenAPI): its request index, HTTP status and body. */
|
|
517
|
+
const jevBatchItemSchema = z.looseObject({
|
|
518
|
+
index: z.number().int(),
|
|
519
|
+
status: z.number().int(),
|
|
520
|
+
body: z.unknown(),
|
|
521
|
+
});
|
|
522
|
+
/** The `/v1/systemone/batch` response (OpenAPI). */
|
|
523
|
+
const jevBatchSchema = z.looseObject({
|
|
524
|
+
responses: z.array(jevBatchItemSchema),
|
|
525
|
+
request_id: z.string().optional(),
|
|
526
|
+
});
|
|
527
|
+
/**
|
|
528
|
+
* Loose schema for `GET /v1/usage`. The OpenAPI types the body only as an
|
|
529
|
+
* object ("Balance, plan and daily usage of the account"): every field name
|
|
530
|
+
* below (`balance.micros`, `balance.decisions_left`, `plan`, `plan.period_end`,
|
|
531
|
+
* `totals`) is UNVERIFIED, taken from the provider's prose docs, and parsed
|
|
532
|
+
* tolerantly — an absent or differently named field is simply not reported.
|
|
533
|
+
*/
|
|
534
|
+
const jevUsageSchema = z.looseObject({
|
|
535
|
+
balance: z
|
|
536
|
+
.looseObject({
|
|
537
|
+
micros: z.number().int().optional(),
|
|
538
|
+
decisions_left: z.number().int().nonnegative().optional(),
|
|
539
|
+
})
|
|
540
|
+
.optional(),
|
|
541
|
+
plan: z
|
|
542
|
+
.union([
|
|
543
|
+
z.string(),
|
|
544
|
+
z.looseObject({ name: z.string().optional(), period_end: z.string().optional() }),
|
|
545
|
+
])
|
|
546
|
+
.optional(),
|
|
547
|
+
totals: z
|
|
548
|
+
.looseObject({
|
|
549
|
+
decisions: z.number().int().nonnegative().optional(),
|
|
550
|
+
cost_micros: z.number().int().nonnegative().optional(),
|
|
551
|
+
})
|
|
552
|
+
.optional(),
|
|
553
|
+
});
|
|
554
|
+
/**
|
|
555
|
+
* Map a `GET /v1/usage` body onto {@link DecisionProviderUsage}. Unknown or
|
|
556
|
+
* malformed fields are dropped, never guessed.
|
|
557
|
+
*
|
|
558
|
+
* @param body - Parsed JSON.
|
|
559
|
+
* @returns The usage fields the body carried.
|
|
560
|
+
*/
|
|
561
|
+
export function parseJevUsage(body) {
|
|
562
|
+
const parsed = jevUsageSchema.safeParse(body);
|
|
563
|
+
if (!parsed.success)
|
|
564
|
+
throw invalid('usage response does not match the usage shape');
|
|
565
|
+
const u = parsed.data;
|
|
566
|
+
const plan = typeof u.plan === 'string' ? u.plan : u.plan?.name;
|
|
567
|
+
const periodEnd = typeof u.plan === 'object' ? u.plan?.period_end : undefined;
|
|
568
|
+
const totals = u.totals
|
|
569
|
+
? {
|
|
570
|
+
...(u.totals.decisions !== undefined ? { decisions: u.totals.decisions } : {}),
|
|
571
|
+
...(u.totals.cost_micros !== undefined ? { costMicros: u.totals.cost_micros } : {}),
|
|
572
|
+
}
|
|
573
|
+
: undefined;
|
|
574
|
+
return {
|
|
575
|
+
...(u.balance?.micros !== undefined ? { balanceMicros: u.balance.micros } : {}),
|
|
576
|
+
...(u.balance?.decisions_left !== undefined ? { decisionsLeft: u.balance.decisions_left } : {}),
|
|
577
|
+
...(plan ? { plan } : {}),
|
|
578
|
+
...(periodEnd ? { periodEnd } : {}),
|
|
579
|
+
...(totals && Object.keys(totals).length > 0 ? { totals } : {}),
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* `GET /v1/templates` (OpenAPI): `{ templates: [{ template, name, description,
|
|
584
|
+
* type, options, example }] }`. `template` is the id a request names; `name`
|
|
585
|
+
* is only a display label.
|
|
586
|
+
*/
|
|
587
|
+
const jevTemplatesSchema = z.looseObject({
|
|
588
|
+
templates: z.array(z.looseObject({ template: z.string() })),
|
|
589
|
+
});
|
|
590
|
+
/**
|
|
591
|
+
* Detect what a Jev-compatible host supports beyond the Jev minimum, from its
|
|
592
|
+
* responses only (spec §2.2: never from the host name).
|
|
593
|
+
*
|
|
594
|
+
* - `GET /v1/usage` answers 2xx with at least one usage field → the layahost extensions
|
|
595
|
+
* ({@link LAYAHOST_EXTENSION_CAPABILITIES}).
|
|
596
|
+
* - `GET /v1/templates` answers 2xx with names → `templates`.
|
|
597
|
+
* - Anything else (404, error, timeout) → the Jev minimum. Never throws.
|
|
598
|
+
*
|
|
599
|
+
* Both endpoints count toward the provider's rate limit, so callers cache the
|
|
600
|
+
* result (`cleo decide status` refreshes it at most every 10 minutes).
|
|
601
|
+
*
|
|
602
|
+
* @param connection - Base URL + API key.
|
|
603
|
+
* @param signal - Aborts both probes.
|
|
604
|
+
* @param opts - Injectable `fetch`.
|
|
605
|
+
* @returns The detected capabilities and, when read, the usage.
|
|
606
|
+
*/
|
|
607
|
+
export async function detectJevCapabilities(connection, signal, opts = {}) {
|
|
608
|
+
const probe = createJevProvider({ ...connection }, { ...opts, capabilities: LAYAHOST_EXTENSION_CAPABILITIES });
|
|
609
|
+
let usage;
|
|
610
|
+
try {
|
|
611
|
+
if (!probe.usage)
|
|
612
|
+
return { capabilities: JEV_MINIMUM_CAPABILITIES };
|
|
613
|
+
usage = await probe.usage(signal);
|
|
614
|
+
// A 2xx that carries no usage field (a catch-all proxy, a different API)
|
|
615
|
+
// proves nothing: treat it as the Jev minimum.
|
|
616
|
+
if (Object.keys(usage).length === 0)
|
|
617
|
+
return { capabilities: JEV_MINIMUM_CAPABILITIES };
|
|
618
|
+
}
|
|
619
|
+
catch (err) {
|
|
620
|
+
// A key limit or credit stop still proves the endpoint exists.
|
|
621
|
+
if (err instanceof DecisionProviderError &&
|
|
622
|
+
(err.kind === 'key_limit_exceeded' || err.kind === 'insufficient_credits')) {
|
|
623
|
+
return { capabilities: LAYAHOST_EXTENSION_CAPABILITIES, error: err };
|
|
624
|
+
}
|
|
625
|
+
return {
|
|
626
|
+
capabilities: JEV_MINIMUM_CAPABILITIES,
|
|
627
|
+
...(err instanceof DecisionProviderError ? { error: err } : {}),
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
let templates;
|
|
631
|
+
try {
|
|
632
|
+
const doFetch = opts.fetch ?? decideFetch;
|
|
633
|
+
const response = await doFetch(endpointUrl(connection.baseUrl, TEMPLATES_PATH), {
|
|
634
|
+
method: 'GET',
|
|
635
|
+
headers: { authorization: `Bearer ${connection.apiKey}`, accept: 'application/json' },
|
|
636
|
+
signal,
|
|
637
|
+
});
|
|
638
|
+
if (response.ok) {
|
|
639
|
+
const parsed = jevTemplatesSchema.safeParse(JSON.parse(await readBoundedText(response, MAX_EXTENSION_BODY_BYTES)));
|
|
640
|
+
if (parsed.success) {
|
|
641
|
+
templates = parsed.data.templates
|
|
642
|
+
.map((x) => x.template)
|
|
643
|
+
.filter((id) => isValidDecisionModelName(id))
|
|
644
|
+
.slice(0, 64);
|
|
308
645
|
}
|
|
309
|
-
|
|
646
|
+
}
|
|
647
|
+
else {
|
|
648
|
+
await response.body?.cancel().catch(() => undefined);
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
templates = undefined;
|
|
653
|
+
}
|
|
654
|
+
return {
|
|
655
|
+
capabilities: {
|
|
656
|
+
...LAYAHOST_EXTENSION_CAPABILITIES,
|
|
657
|
+
...(templates && templates.length > 0 ? { templates } : {}),
|
|
310
658
|
},
|
|
659
|
+
usage,
|
|
311
660
|
};
|
|
312
661
|
}
|
|
313
662
|
/**
|
|
@@ -390,10 +739,8 @@ export async function listJevModels(connection, signal, opts = {}) {
|
|
|
390
739
|
const kind = signal.aborted ? 'aborted' : 'network';
|
|
391
740
|
throw new DecisionProviderError(kind, `model listing failed (${kind})`, { cause });
|
|
392
741
|
}
|
|
393
|
-
if (!response.ok)
|
|
394
|
-
await response
|
|
395
|
-
throw errorForStatus(response.status, parseRetryAfterMs(response.headers.get('retry-after')));
|
|
396
|
-
}
|
|
742
|
+
if (!response.ok)
|
|
743
|
+
throw await errorForResponse(response);
|
|
397
744
|
let body;
|
|
398
745
|
try {
|
|
399
746
|
body = JSON.parse(await readBoundedText(response, MAX_MODELS_RESPONSE_BYTES));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jev-wire.js","sourceRoot":"","sources":["../../src/decide/jev-wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jev-wire.js","sourceRoot":"","sources":["../../src/decide/jev-wire.ts"],"names":[],"mappings":"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"}
|