@mccaskie-labs/workbench-config 0.1.9 → 0.1.11

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @mccaskie-labs/workbench-config
2
2
 
3
+ ## 0.1.11
4
+
5
+ ### Patch Changes
6
+
7
+ - The Gateway's error list gains `content_refused` (422) and `content_check_unavailable` (503) for the Workbench content rules (`docs/spec.md` §2.7).
8
+
9
+ ## 0.1.10
10
+
11
+ ### Patch Changes
12
+
13
+ - `gateway.budget-enforced` describes the development key's US$0 enforce budget (changed 11 November 2026, `docs/phase-4-plan.md` §3 Q10), with a cost hint of US$0, since the call is refused before any spend.
14
+
3
15
  ## 0.1.9
4
16
 
5
17
  ### Patch Changes
@@ -55,6 +55,8 @@
55
55
  { "code": "forbidden_scope", "http": 403, "retryable": false, "meaning": "The key doesn't carry the scope this endpoint needs" },
56
56
  { "code": "invalid_request", "http": 400, "retryable": false, "meaning": "The body or a required header is missing or malformed" },
57
57
  { "code": "budget_exceeded", "http": 402, "retryable": false, "meaning": "The environment's enforced monthly budget, or the global ceiling, is reached" },
58
+ { "code": "content_refused", "http": 422, "retryable": false, "meaning": "The Workbench content rules refuse what was sent (stage input) or what the vendor made (stage output). The error names the rule, the stage and the rules version, never the content. A vendor's own safety block is reported the same way, with rule vendor" },
59
+ { "code": "content_check_unavailable", "http": 503, "retryable": true, "meaning": "The content check couldn't be run, so nothing was returned. Nothing passes unchecked" },
58
60
  { "code": "rate_limited", "http": 429, "retryable": true, "meaning": "Per-key rate limit; it stops runaway loops, budgets limit spend" },
59
61
  { "code": "not_available", "http": 501, "retryable": false, "meaning": "Not built yet, e.g. bulk email" },
60
62
  { "code": "upstream_error", "http": 502, "retryable": true, "meaning": "The vendor failed after the Gateway's retries" },
@@ -75,7 +77,7 @@
75
77
  { "id": "gateway.wrong-scope", "half": "runtime", "expect": "refused_as_expected", "refusal": "forbidden_scope", "cost_hint_usd": 0 },
76
78
  { "id": "gateway.wrong-environment", "half": "runtime", "expect": "refused_as_expected", "refusal": "unauthorised", "cost_hint_usd": 0 },
77
79
  { "id": "gateway.revoked-key", "half": "runtime", "expect": "refused_as_expected", "refusal": "unauthorised", "cost_hint_usd": 0, "note": "Stops within 60 seconds of revocation" },
78
- { "id": "gateway.budget-enforced", "half": "runtime", "expect": "refused_as_expected", "refusal": "budget_exceeded", "cost_hint_usd": 0.01, "note": "Uses the development key's US$0.01 enforce budget (docs/phase-4-plan.md §3 Q10)" },
80
+ { "id": "gateway.budget-enforced", "half": "runtime", "expect": "refused_as_expected", "refusal": "budget_exceeded", "cost_hint_usd": 0, "note": "Uses the development key's US$0 enforce budget, so it is refused before any spend (docs/phase-4-plan.md §3 Q10)" },
79
81
  { "id": "gateway.no-vendor-keys.scan", "half": "runtime", "expect": "pass", "cost_hint_usd": 0, "note": "Manual: grep of the repo and cf_worker_secret_list show only WORKBENCH_GATEWAY_* secrets" }
80
82
  ]
81
83
  }
@@ -1,4 +1,4 @@
1
- export declare const MANIFEST_VERSION: "ffb5a8a16ad1";
1
+ export declare const MANIFEST_VERSION: "debb0b3db404";
2
2
  export declare const capabilities: {
3
3
  readonly ai: {
4
4
  readonly $schema: "./schema.json";
@@ -935,6 +935,16 @@ export declare const capabilities: {
935
935
  readonly http: 402;
936
936
  readonly retryable: false;
937
937
  readonly meaning: "The environment's enforced monthly budget, or the global ceiling, is reached";
938
+ }, {
939
+ readonly code: "content_refused";
940
+ readonly http: 422;
941
+ readonly retryable: false;
942
+ readonly meaning: "The Workbench content rules refuse what was sent (stage input) or what the vendor made (stage output). The error names the rule, the stage and the rules version, never the content. A vendor's own safety block is reported the same way, with rule vendor";
943
+ }, {
944
+ readonly code: "content_check_unavailable";
945
+ readonly http: 503;
946
+ readonly retryable: true;
947
+ readonly meaning: "The content check couldn't be run, so nothing was returned. Nothing passes unchecked";
938
948
  }, {
939
949
  readonly code: "rate_limited";
940
950
  readonly http: 429;
@@ -1034,8 +1044,8 @@ export declare const capabilities: {
1034
1044
  readonly half: "runtime";
1035
1045
  readonly expect: "refused_as_expected";
1036
1046
  readonly refusal: "budget_exceeded";
1037
- readonly cost_hint_usd: 0.01;
1038
- readonly note: "Uses the development key's US$0.01 enforce budget (docs/phase-4-plan.md §3 Q10)";
1047
+ readonly cost_hint_usd: 0;
1048
+ readonly note: "Uses the development key's US$0 enforce budget, so it is refused before any spend (docs/phase-4-plan.md §3 Q10)";
1039
1049
  }, {
1040
1050
  readonly id: "gateway.no-vendor-keys.scan";
1041
1051
  readonly half: "runtime";
@@ -1,6 +1,6 @@
1
1
  // Generated by `npm run capabilities:build` from capabilities/*.json. Do not edit.
2
2
  // check:capabilities fails in Checks when this file is stale.
3
- export const MANIFEST_VERSION = "ffb5a8a16ad1";
3
+ export const MANIFEST_VERSION = "debb0b3db404";
4
4
  export const capabilities = {
5
5
  "ai": {
6
6
  "$schema": "./schema.json",
@@ -1253,6 +1253,18 @@ export const capabilities = {
1253
1253
  "retryable": false,
1254
1254
  "meaning": "The environment's enforced monthly budget, or the global ceiling, is reached"
1255
1255
  },
1256
+ {
1257
+ "code": "content_refused",
1258
+ "http": 422,
1259
+ "retryable": false,
1260
+ "meaning": "The Workbench content rules refuse what was sent (stage input) or what the vendor made (stage output). The error names the rule, the stage and the rules version, never the content. A vendor's own safety block is reported the same way, with rule vendor"
1261
+ },
1262
+ {
1263
+ "code": "content_check_unavailable",
1264
+ "http": 503,
1265
+ "retryable": true,
1266
+ "meaning": "The content check couldn't be run, so nothing was returned. Nothing passes unchecked"
1267
+ },
1256
1268
  {
1257
1269
  "code": "rate_limited",
1258
1270
  "http": 429,
@@ -1370,8 +1382,8 @@ export const capabilities = {
1370
1382
  "half": "runtime",
1371
1383
  "expect": "refused_as_expected",
1372
1384
  "refusal": "budget_exceeded",
1373
- "cost_hint_usd": 0.01,
1374
- "note": "Uses the development key's US$0.01 enforce budget (docs/phase-4-plan.md §3 Q10)"
1385
+ "cost_hint_usd": 0,
1386
+ "note": "Uses the development key's US$0 enforce budget, so it is refused before any spend (docs/phase-4-plan.md §3 Q10)"
1375
1387
  },
1376
1388
  {
1377
1389
  "id": "gateway.no-vendor-keys.scan",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mccaskie-labs/workbench-config",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "Workbench app configuration: WORKBENCH_ENV, typed variables that fail by name, secrets that are never printed, and the capabilities manifest.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",