zuplo 7.9.9 → 7.9.12

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.
@@ -53,11 +53,13 @@ project. Add the block for your approach, then restart Claude Code.
53
53
 
54
54
  - `ANTHROPIC_BASE_URL` is your gateway URL _without_ `/v1`. Claude Code appends
55
55
  `/v1/messages`.
56
- - Set every `ANTHROPIC_*_MODEL` variable and every `modelOverrides` entry.
57
- Claude Code's built-in model names have no prefix. The variables map the
58
- `opus`, `sonnet`, `haiku`, and `fable` aliases;
56
+ - Set every `ANTHROPIC_*_MODEL` variable. Claude Code's built-in model names
57
+ have no prefix, and the variables map the `opus`, `sonnet`, `haiku`, and
58
+ `fable` aliases to your provider's prefixed model IDs.
59
+ - To select an exact model ID, such as `--model claude-fable-5-1`, add a
59
60
  [`modelOverrides`](https://code.claude.com/docs/en/model-config#override-model-ids-per-version)
60
- maps exact IDs; the `/model` picker can select either.
61
+ entry that maps it to the prefixed ID, as the examples do for Fable. Add one
62
+ entry for each exact ID you use.
61
63
  - The [Model Filtering](../../policies/ai-gateway-model-filtering-inbound.mdx)
62
64
  policy on the User App or the app controls which models you can use.
63
65
 
@@ -82,10 +84,6 @@ use the app's API key and API URL instead.
82
84
  "ANTHROPIC_DEFAULT_FABLE_MODEL": "anthropic/claude-fable-5-1"
83
85
  },
84
86
  "modelOverrides": {
85
- "claude-opus-5": "anthropic/claude-opus-5",
86
- "claude-opus-5-5": "anthropic/claude-opus-5-5",
87
- "claude-sonnet-5": "anthropic/claude-sonnet-5",
88
- "claude-haiku-4-5-20251001": "anthropic/claude-haiku-4-5-20251001",
89
87
  "claude-fable-5-1": "anthropic/claude-fable-5-1"
90
88
  }
91
89
  }
@@ -162,10 +160,6 @@ In the **JSON** editor:
162
160
  "ANTHROPIC_DEFAULT_FABLE_MODEL": "anthropic/claude-fable-5-1"
163
161
  },
164
162
  "modelOverrides": {
165
- "claude-opus-5": "anthropic/claude-opus-5",
166
- "claude-opus-5-5": "anthropic/claude-opus-5-5",
167
- "claude-sonnet-5": "anthropic/claude-sonnet-5",
168
- "claude-haiku-4-5-20251001": "anthropic/claude-haiku-4-5-20251001",
169
163
  "claude-fable-5-1": "anthropic/claude-fable-5-1"
170
164
  }
171
165
  }
@@ -189,11 +183,11 @@ Zuplo Portal.
189
183
 
190
184
  ## Troubleshooting
191
185
 
192
- | Error | Fix |
193
- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
194
- | `400` `model must use "providerName/model"` | The selected model has no provider prefix. Check `ANTHROPIC_MODEL`, or the picker entry's `modelOverrides` mapping. Restart after editing. |
195
- | `403` `This User App route requires a personal API key issued for this User App` | With a personal key: the key is missing, wrong, from another project, or not sent as `Authorization: Bearer`. Create a key on **Home** and use the Gateway URL from the same project. |
196
- | `401` `Invalid Authorization Scheme` | `authScheme` still has its `Bearer` default. Set an explicit empty value. |
197
- | `401` `Header configured by options.authHeader is missing` | Claude Code didn't send `zp-gateway-api-key`. Check `ANTHROPIC_CUSTOM_HEADERS`. |
198
- | `401` `credentialPassthrough requires a non-empty Authorization header` | Claude Code isn't signed in. Run `claude` and use `/login`. |
199
- | An authentication error from Anthropic | Anthropic rejected the forwarded login. Sign in to Claude Code again. |
186
+ | Error | Fix |
187
+ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
188
+ | `400` `model must use "providerName/model"` | The selected model has no provider prefix. Check `ANTHROPIC_MODEL` and the other `ANTHROPIC_*_MODEL` variables. If you select an exact model ID, add a `modelOverrides` entry for it. Restart after editing. |
189
+ | `403` `This User App route requires a personal API key issued for this User App` | With a personal key: the key is missing, wrong, from another project, or not sent as `Authorization: Bearer`. Create a key on **Home** and use the Gateway URL from the same project. |
190
+ | `401` `Invalid Authorization Scheme` | `authScheme` still has its `Bearer` default. Set an explicit empty value. |
191
+ | `401` `Header configured by options.authHeader is missing` | Claude Code didn't send `zp-gateway-api-key`. Check `ANTHROPIC_CUSTOM_HEADERS`. |
192
+ | `401` `credentialPassthrough requires a non-empty Authorization header` | Claude Code isn't signed in. Run `claude` and use `/login`. |
193
+ | An authentication error from Anthropic | Anthropic rejected the forwarded login. Sign in to Claude Code again. |
@@ -31,6 +31,42 @@ sidebar_label: source upgrade
31
31
  usage="$0 source upgrade [options]"
32
32
  >
33
33
 
34
+ ## Upgrade a source-controlled AI Gateway
35
+
36
+ Preview missing AI Gateway v2 endpoints and policies from the template bundled
37
+ with your CLI:
38
+
39
+ ```bash
40
+ zuplo source upgrade --type ai-gateway
41
+ ```
42
+
43
+ Preview shows proposed additions and a diff without changing files. Review the
44
+ output, commit or stash local changes, then apply:
45
+
46
+ ```bash
47
+ zuplo source upgrade --type ai-gateway --apply
48
+ ```
49
+
50
+ Applying requires the latest stable CLI, compatible installed project
51
+ dependencies, an online release check, and a clean Git working tree. The CLI
52
+ asks for confirmation; automation must explicitly pass `--apply --prompt=false`.
53
+
54
+ Existing endpoints and policies are preserved. If any addition conflicts or
55
+ cannot be verified, nothing is applied. Use the printed definitions for a manual
56
+ upgrade, reviewing authentication and policy order before adding routes.
57
+
58
+ Review and test the resulting changes before committing and deploying. The
59
+ command does not install dependencies or deploy your gateway.
60
+
61
+ ### Recovery
62
+
63
+ The CLI prints the backup directory containing originals and `journal.json`.
64
+ If interrupted, inspect the journal and restore the originals before retrying;
65
+ an interrupted upgrade can leave partially updated files.
66
+
67
+ Without `--type ai-gateway`, the command retains its existing project-scaffolding
68
+ behavior. You can also select that behavior explicitly with `--type api`.
69
+
34
70
  </CliCommand>
35
71
 
36
72
  ## Global options
@@ -0,0 +1,35 @@
1
+ ## Upgrade a source-controlled AI Gateway
2
+
3
+ Preview missing AI Gateway v2 endpoints and policies from the template bundled
4
+ with your CLI:
5
+
6
+ ```bash
7
+ zuplo source upgrade --type ai-gateway
8
+ ```
9
+
10
+ Preview shows proposed additions and a diff without changing files. Review the
11
+ output, commit or stash local changes, then apply:
12
+
13
+ ```bash
14
+ zuplo source upgrade --type ai-gateway --apply
15
+ ```
16
+
17
+ Applying requires the latest stable CLI, compatible installed project
18
+ dependencies, an online release check, and a clean Git working tree. The CLI
19
+ asks for confirmation; automation must explicitly pass `--apply --prompt=false`.
20
+
21
+ Existing endpoints and policies are preserved. If any addition conflicts or
22
+ cannot be verified, nothing is applied. Use the printed definitions for a manual
23
+ upgrade, reviewing authentication and policy order before adding routes.
24
+
25
+ Review and test the resulting changes before committing and deploying. The
26
+ command does not install dependencies or deploy your gateway.
27
+
28
+ ### Recovery
29
+
30
+ The CLI prints the backup directory containing originals and `journal.json`.
31
+ If interrupted, inspect the journal and restore the originals before retrying;
32
+ an interrupted upgrade can leave partially updated files.
33
+
34
+ Without `--type ai-gateway`, the command retains its existing project-scaffolding
35
+ behavior. You can also select that behavior explicitly with `--type api`.
@@ -422,6 +422,8 @@ Extensions that can be applied to tag categories:
422
422
 
423
423
  - `x-zudoku-collapsed`: Control initial collapsed state of a tag category (default: `true`)
424
424
  - `x-zudoku-collapsible`: Control if a tag category can be collapsed (default: `true`)
425
+ - `x-zudoku-seo`: Set the page title and meta description of a tag's page without changing its
426
+ sidebar label or heading. See [`x-zudoku-seo`](../openapi-extensions/x-zudoku-seo)
425
427
 
426
428
  Example:
427
429
 
@@ -29,3 +29,8 @@ tags:
29
29
 
30
30
  Without `x-displayName`, the sidebar would show `ai-ops` and `user-mgmt`. With it, the sidebar
31
31
  displays `AI Operations` and `User Management` instead.
32
+
33
+ ## Related
34
+
35
+ - [`x-zudoku-seo`](./x-zudoku-seo) — set a different browser title and meta description for the
36
+ tag's page
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: x-zudoku-seo
3
+ sidebar_icon: search
4
+ ---
5
+
6
+ Use `x-zudoku-seo` to set the browser title and meta description of a tag's page without changing
7
+ the label shown in the sidebar or the page heading. This is useful when several tags share the same
8
+ [`x-displayName`](./x-display-name) but should still have unique titles for search engines.
9
+
10
+ ## Location
11
+
12
+ The extension is added at the **Tag Object** level.
13
+
14
+ | Option | Type | Description |
15
+ | ------------- | -------- | ----------------------------------------------------------------------------- |
16
+ | `title` | `string` | Page title used in the `<title>` tag. Replaces `<tag name> - <API title>`. |
17
+ | `description` | `string` | Content of the `<meta name="description">` tag. Replaces the tag description. |
18
+
19
+ Both properties are optional. Anything not set falls back to the default behavior. If
20
+ [`metadata.title`](/dev-portal/zudoku/configuration/overview#metadata) is a template string (e.g.
21
+ `%s - My Company`), it is still applied to the title.
22
+
23
+ The title and description are rendered on the server, so they are part of the prerendered HTML and
24
+ visible to crawlers without running JavaScript.
25
+
26
+ ## Example
27
+
28
+ ```yaml
29
+ tags:
30
+ - name: location-key-daily
31
+ x-displayName: Location Key
32
+ x-zudoku-seo:
33
+ title: Daily Forecasts by Location Key - Core Weather
34
+ description: Daily forecasts for a location key, up to 15 days ahead.
35
+ - name: location-key-hourly
36
+ x-displayName: Location Key
37
+ x-zudoku-seo:
38
+ title: Hourly Forecasts by Location Key - Core Weather
39
+ description: Hourly forecasts for a location key, up to 240 hours ahead.
40
+ ```
41
+
42
+ Both tags show `Location Key` in the sidebar and as the page heading, but each page has its own
43
+ browser title and description.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zuplo",
3
- "version": "7.9.9",
3
+ "version": "7.9.12",
4
4
  "type": "module",
5
5
  "description": "The official Zuplo CLI for local development and platform management",
6
6
  "homepage": "https://zuplo.com/docs/cli/overview",
@@ -32,9 +32,9 @@
32
32
  "zuplo": "zuplo.js"
33
33
  },
34
34
  "dependencies": {
35
- "@zuplo/cli": "7.9.9",
36
- "@zuplo/core": "7.9.9",
37
- "@zuplo/runtime": "7.9.9",
38
- "@zuplo/test": "7.9.9"
35
+ "@zuplo/cli": "7.9.12",
36
+ "@zuplo/core": "7.9.12",
37
+ "@zuplo/runtime": "7.9.12",
38
+ "@zuplo/test": "7.9.12"
39
39
  }
40
40
  }