@mccaskie-labs/workbench-config 0.1.29 → 0.1.31
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 +12 -0
- package/capabilities/gateway.json +3 -2
- package/dist/capabilities.gen.d.ts +8 -3
- package/dist/capabilities.gen.js +9 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @mccaskie-labs/workbench-config
|
|
2
2
|
|
|
3
|
+
## 0.1.31
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- The `gateway` manifest lists the `X-Workbench-Keep` request header (kept calls, `docs/spec.md` §2.9), and says what `X-Workbench-Subject` should hold for an app with signed-in users.
|
|
8
|
+
|
|
9
|
+
## 0.1.30
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- The Gateway manifest's `budget_exceeded` now names which cap was reached: a tool's, the environment's or the global ceiling.
|
|
14
|
+
|
|
3
15
|
## 0.1.29
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
{ "name": "Authorization", "required": true, "description": "Bearer <key>. On /anthropic/* the key goes in x-api-key instead, so the official SDK works unchanged" },
|
|
38
38
|
{ "name": "X-Workbench-Job", "required": true, "pattern": "^[a-z0-9._-]{1,64}$", "description": "What the call is for, e.g. article.write. Recorded with usage" },
|
|
39
39
|
{ "name": "X-Workbench-Prompt-Version", "required": false, "description": "The app's prompt version, recorded with usage (audit F17)" },
|
|
40
|
-
{ "name": "X-Workbench-Subject", "required": false, "pattern": "^[a-z0-9_-]+:[^\\s]{1,128}$", "description": "type:id of the thing the call is about" },
|
|
40
|
+
{ "name": "X-Workbench-Subject", "required": false, "pattern": "^[a-z0-9_-]+:[^\\s]{1,128}$", "description": "type:id of the thing the call is about. An app with signed-in users sends user:<its own user id>, never a name, email address or phone number, so a person's kept calls can be found and deleted (spec §2.9)" },
|
|
41
|
+
{ "name": "X-Workbench-Keep", "required": false, "pattern": "^(yes|no)$", "description": "no: keep this AI call's facts but not its text (spec §2.9). A refused call is kept whatever it says. Left out, the project's own setting decides (on by default)" },
|
|
41
42
|
{ "name": "Idempotency-Key", "required": false, "description": "Email only: a repeat within 24 hours returns the stored result" },
|
|
42
43
|
{ "name": "X-Workbench-Env", "required": false, "pattern": "^(development|staging|production)$", "description": "The caller's WORKBENCH_ENV. The packages send it; a key from another environment is then refused with unauthorised" }
|
|
43
44
|
],
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
{ "code": "unauthorised", "http": 401, "retryable": false, "meaning": "No key, a malformed or unknown key, a revoked key, or a key from the wrong environment" },
|
|
55
56
|
{ "code": "forbidden_scope", "http": 403, "retryable": false, "meaning": "The key doesn't carry the scope this endpoint needs" },
|
|
56
57
|
{ "code": "invalid_request", "http": 400, "retryable": false, "meaning": "The body or a required header is missing or malformed" },
|
|
57
|
-
{ "code": "budget_exceeded", "http": 402, "retryable": false, "meaning": "
|
|
58
|
+
{ "code": "budget_exceeded", "http": 402, "retryable": false, "meaning": "An enforced monthly cap is reached: the tool's cap (AI text, AI images, image search or email), the environment's budget or the global ceiling, whichever comes first. The error names it in budget (tool, environment or global) and, for a tool, tool" },
|
|
58
59
|
{ "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
60
|
{ "code": "content_check_unavailable", "http": 503, "retryable": true, "meaning": "The content check couldn't be run, so nothing was returned. Nothing passes unchecked" },
|
|
60
61
|
{ "code": "rate_limited", "http": 429, "retryable": true, "meaning": "Per-key rate limit; it stops runaway loops, budgets limit spend" },
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const MANIFEST_VERSION: "
|
|
1
|
+
export declare const MANIFEST_VERSION: "0f2fa24af1ca";
|
|
2
2
|
export declare const capabilities: {
|
|
3
3
|
readonly ai: {
|
|
4
4
|
readonly $schema: "./schema.json";
|
|
@@ -1203,7 +1203,12 @@ export declare const capabilities: {
|
|
|
1203
1203
|
readonly name: "X-Workbench-Subject";
|
|
1204
1204
|
readonly required: false;
|
|
1205
1205
|
readonly pattern: "^[a-z0-9_-]+:[^\\s]{1,128}$";
|
|
1206
|
-
readonly description: "type:id of the thing the call is about";
|
|
1206
|
+
readonly description: "type:id of the thing the call is about. An app with signed-in users sends user:<its own user id>, never a name, email address or phone number, so a person's kept calls can be found and deleted (spec §2.9)";
|
|
1207
|
+
}, {
|
|
1208
|
+
readonly name: "X-Workbench-Keep";
|
|
1209
|
+
readonly required: false;
|
|
1210
|
+
readonly pattern: "^(yes|no)$";
|
|
1211
|
+
readonly description: "no: keep this AI call's facts but not its text (spec §2.9). A refused call is kept whatever it says. Left out, the project's own setting decides (on by default)";
|
|
1207
1212
|
}, {
|
|
1208
1213
|
readonly name: "Idempotency-Key";
|
|
1209
1214
|
readonly required: false;
|
|
@@ -1263,7 +1268,7 @@ export declare const capabilities: {
|
|
|
1263
1268
|
readonly code: "budget_exceeded";
|
|
1264
1269
|
readonly http: 402;
|
|
1265
1270
|
readonly retryable: false;
|
|
1266
|
-
readonly meaning: "
|
|
1271
|
+
readonly meaning: "An enforced monthly cap is reached: the tool's cap (AI text, AI images, image search or email), the environment's budget or the global ceiling, whichever comes first. The error names it in budget (tool, environment or global) and, for a tool, tool";
|
|
1267
1272
|
}, {
|
|
1268
1273
|
readonly code: "content_refused";
|
|
1269
1274
|
readonly http: 422;
|
package/dist/capabilities.gen.js
CHANGED
|
@@ -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 = "
|
|
3
|
+
export const MANIFEST_VERSION = "0f2fa24af1ca";
|
|
4
4
|
export const capabilities = {
|
|
5
5
|
"ai": {
|
|
6
6
|
"$schema": "./schema.json",
|
|
@@ -1653,7 +1653,13 @@ export const capabilities = {
|
|
|
1653
1653
|
"name": "X-Workbench-Subject",
|
|
1654
1654
|
"required": false,
|
|
1655
1655
|
"pattern": "^[a-z0-9_-]+:[^\\s]{1,128}$",
|
|
1656
|
-
"description": "type:id of the thing the call is about"
|
|
1656
|
+
"description": "type:id of the thing the call is about. An app with signed-in users sends user:<its own user id>, never a name, email address or phone number, so a person's kept calls can be found and deleted (spec §2.9)"
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
"name": "X-Workbench-Keep",
|
|
1660
|
+
"required": false,
|
|
1661
|
+
"pattern": "^(yes|no)$",
|
|
1662
|
+
"description": "no: keep this AI call's facts but not its text (spec §2.9). A refused call is kept whatever it says. Left out, the project's own setting decides (on by default)"
|
|
1657
1663
|
},
|
|
1658
1664
|
{
|
|
1659
1665
|
"name": "Idempotency-Key",
|
|
@@ -1733,7 +1739,7 @@ export const capabilities = {
|
|
|
1733
1739
|
"code": "budget_exceeded",
|
|
1734
1740
|
"http": 402,
|
|
1735
1741
|
"retryable": false,
|
|
1736
|
-
"meaning": "
|
|
1742
|
+
"meaning": "An enforced monthly cap is reached: the tool's cap (AI text, AI images, image search or email), the environment's budget or the global ceiling, whichever comes first. The error names it in budget (tool, environment or global) and, for a tool, tool"
|
|
1737
1743
|
},
|
|
1738
1744
|
{
|
|
1739
1745
|
"code": "content_refused",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mccaskie-labs/workbench-config",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.31",
|
|
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",
|