ur-agent 1.85.0 → 1.85.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/CHANGELOG.md +21 -0
- package/README.md +22 -1
- package/dist/cli.js +399 -114
- package/docs/CONFIGURATION.md +22 -0
- package/docs/TROUBLESHOOTING.md +29 -0
- package/docs/USAGE.md +18 -1
- package/docs/VALIDATION.md +13 -1
- package/docs/providers.md +21 -4
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/docs/CONFIGURATION.md
CHANGED
|
@@ -172,6 +172,22 @@ Anthropic's supported cache-control shape. Streaming requests also set
|
|
|
172
172
|
arrive as Claude generates them instead of waiting for server-side buffering.
|
|
173
173
|
Both behaviors use Anthropic's documented native fields and require no setting.
|
|
174
174
|
|
|
175
|
+
An Anthropic identity-linked API key can act across more than one workspace and
|
|
176
|
+
requires `anthropic-workspace-id` on every API call. Set its non-secret Console
|
|
177
|
+
workspace ID once:
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
ur config set anthropic.workspace_id wrkspc_...
|
|
181
|
+
# environment-only alternative
|
|
182
|
+
export ANTHROPIC_WORKSPACE_ID=wrkspc_...
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The selected ID is applied consistently to `/v1/models`, `/v1/messages`,
|
|
186
|
+
streaming messages, `/v1/messages/count_tokens`, and provider diagnostics.
|
|
187
|
+
Workspace-scoped keys need no extra setting. Clear the saved value with
|
|
188
|
+
`ur config set anthropic.workspace_id auto`. When adding a key and workspace
|
|
189
|
+
together, use `ur connect anthropic-api --workspace-id wrkspc_...`.
|
|
190
|
+
|
|
175
191
|
Anthropic fast mode is a separate, premium research-preview tier. It is off by
|
|
176
192
|
default and can be requested explicitly:
|
|
177
193
|
|
|
@@ -273,6 +289,7 @@ it in the environment when you explicitly choose API mode:
|
|
|
273
289
|
OPENAI_API_KEY=...
|
|
274
290
|
OPENAI_COMPATIBLE_API_KEY=...
|
|
275
291
|
ANTHROPIC_API_KEY=...
|
|
292
|
+
ANTHROPIC_WORKSPACE_ID=wrkspc_... # identity-linked Anthropic keys only
|
|
276
293
|
GEMINI_API_KEY=...
|
|
277
294
|
OPENROUTER_API_KEY=...
|
|
278
295
|
NVIDIA_API_KEY=...
|
|
@@ -335,6 +352,11 @@ opaque compacted window, set `UR_OPENAI_RESPONSES_STATE_KEY` to exactly 32
|
|
|
335
352
|
bytes encoded as 64 hexadecimal characters or base64. Without that key UR
|
|
336
353
|
refuses to persist compacted context.
|
|
337
354
|
|
|
355
|
+
HTTP 429 remains retryable for real transient rate limits. Machine-readable
|
|
356
|
+
account, billing, and exhausted-quota failures such as `billing_not_active` and
|
|
357
|
+
`insufficient_quota` are permanent for the unchanged request, so UR reports
|
|
358
|
+
them immediately instead of spending the retry window in `requesting`.
|
|
359
|
+
|
|
338
360
|
### Reconfiguring the Ollama host
|
|
339
361
|
|
|
340
362
|
The endpoint can be changed from UR in four ways, in order of precedence:
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -211,6 +211,35 @@ from `OPENAI_API_KEY`. NVIDIA Agentic/Special use one key stored with
|
|
|
211
211
|
`ur connect nvidia-nim` or `ur connect nvidia-special`; Agentic keeps any
|
|
212
212
|
custom `base_url` scoped to that provider.
|
|
213
213
|
|
|
214
|
+
### Anthropic says `anthropic-workspace-id is required`
|
|
215
|
+
|
|
216
|
+
- Cause: the API key is identity-linked and can act across workspaces. Anthropic
|
|
217
|
+
requires the target workspace on model discovery and every runtime request.
|
|
218
|
+
- Fix: copy the `wrkspc_...` ID from Claude Console → Settings → Workspaces,
|
|
219
|
+
then configure it and re-run doctor. The workspace ID is not the API key.
|
|
220
|
+
|
|
221
|
+
```sh
|
|
222
|
+
ur config set anthropic.workspace_id wrkspc_...
|
|
223
|
+
ur provider doctor anthropic-api
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
`ANTHROPIC_WORKSPACE_ID` is the environment-only alternative. If the key was
|
|
227
|
+
created inside one workspace and is already workspace-scoped, no header is
|
|
228
|
+
needed. `auto` clears an incorrect saved selection. UR cannot safely infer the
|
|
229
|
+
Default Workspace ID because Anthropic omits that workspace from its list API.
|
|
230
|
+
|
|
231
|
+
### OpenAI stays on `requesting` and then reports a billing 429
|
|
232
|
+
|
|
233
|
+
- Cause: older retry classification treated every HTTP 429 as a temporary rate
|
|
234
|
+
limit. OpenAI also uses 429 for permanent request-state failures such as
|
|
235
|
+
`billing_not_active` and `insufficient_quota`.
|
|
236
|
+
- Current behavior: UR reads the machine error code, reports permanent account
|
|
237
|
+
or billing failures immediately, and still retries genuine transient rate
|
|
238
|
+
limits. The same rule applies to Chat Completions and Responses.
|
|
239
|
+
- Fix for `billing_not_active`: activate API billing for the project/account or
|
|
240
|
+
connect a key belonging to an active billed project. Changing models or
|
|
241
|
+
transports cannot activate the account.
|
|
242
|
+
|
|
214
243
|
### NVIDIA lists a model but inference returns `Function … Not found for account`
|
|
215
244
|
|
|
216
245
|
- Cause: the card is documented by NVIDIA, but its backing function is not
|
package/docs/USAGE.md
CHANGED
|
@@ -186,6 +186,7 @@ ur config set openrouter.preferred_min_throughput 40
|
|
|
186
186
|
ur config set openrouter.preferred_max_latency 3
|
|
187
187
|
ur config set openrouter.service_tier priority
|
|
188
188
|
ur config set openrouter.speed fast
|
|
189
|
+
ur config set anthropic.workspace_id wrkspc_...
|
|
189
190
|
```
|
|
190
191
|
|
|
191
192
|
`auto` is the recommended default. `priority`/`fast` are optional paid upstream
|
|
@@ -195,6 +196,17 @@ throughput-, price-, or tool-quality-first virtual route.
|
|
|
195
196
|
|
|
196
197
|
Direct Anthropic sessions preserve prompt-cache breakpoints and stream large
|
|
197
198
|
tool arguments with Anthropic's per-tool `eager_input_streaming` control.
|
|
199
|
+
If Anthropic identifies the key as identity-linked, select the Console
|
|
200
|
+
workspace before refreshing models or sending a turn:
|
|
201
|
+
|
|
202
|
+
```sh
|
|
203
|
+
ur config set anthropic.workspace_id wrkspc_...
|
|
204
|
+
# or: export ANTHROPIC_WORKSPACE_ID=wrkspc_...
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The selection is shared by discovery, doctor, inference, streaming, and token
|
|
208
|
+
counting. Workspace-scoped keys require no extra value; use
|
|
209
|
+
`ur config set anthropic.workspace_id auto` to clear it.
|
|
198
210
|
Accounts admitted to Anthropic's premium fast-mode research preview can opt in
|
|
199
211
|
for its supported Opus models:
|
|
200
212
|
|
|
@@ -216,6 +228,9 @@ background/poll/cancel support, WebSocket continuation, server compaction, and
|
|
|
216
228
|
deferred tool search. Remote storage is off by default. Local state contains
|
|
217
229
|
only bounded identifiers/status/cursors unless a 32-byte
|
|
218
230
|
`UR_OPENAI_RESPONSES_STATE_KEY` is supplied for AES-256-GCM compacted context.
|
|
231
|
+
Permanent billing/account 429s are shown immediately on both OpenAI transports;
|
|
232
|
+
UR retries only responses that can plausibly succeed without configuration or
|
|
233
|
+
billing changes.
|
|
219
234
|
|
|
220
235
|
In the interactive app, `/model` chooses a provider first and then a model from
|
|
221
236
|
that provider only. The saved pair controls the runtime backend for the next
|
|
@@ -249,7 +264,9 @@ and `antigravity-cli` (`agy`) are subscription CLI providers.
|
|
|
249
264
|
API modes are explicit. Keys are read from a key stored via
|
|
250
265
|
`ur connect <provider>` (OS keychain) or from the environment variables
|
|
251
266
|
`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`,
|
|
252
|
-
`OPENROUTER_API_KEY`, `NVIDIA_API_KEY`, and `UNSLOTH_API_KEY`.
|
|
267
|
+
`OPENROUTER_API_KEY`, `NVIDIA_API_KEY`, and `UNSLOTH_API_KEY`.
|
|
268
|
+
`ANTHROPIC_WORKSPACE_ID` selects a workspace for identity-linked Anthropic
|
|
269
|
+
keys. Subscription CLIs are optional, never required
|
|
253
270
|
dependencies, and never used as a silent fallback. UR-Nexus never scrapes
|
|
254
271
|
browser sessions, extracts OAuth tokens, or bypasses provider restrictions.
|
|
255
272
|
OpenAI-compatible local or cloud endpoints use `base_url` plus `model`.
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,7 +19,7 @@ You need:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
ur --version
|
|
22
|
-
# expected for this release: "1.85.
|
|
22
|
+
# expected for this release: "1.85.1 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### 0.0 Redteam mode and Reverse Skills (1.81.0)
|
|
@@ -136,6 +136,18 @@ Opus 5/4.8 must receive `speed="fast"` and
|
|
|
136
136
|
Opus versions must receive neither. A non-stream response must retain
|
|
137
137
|
`usage.speed`.
|
|
138
138
|
|
|
139
|
+
With an identity-linked test key, first omit the workspace. Discovery and
|
|
140
|
+
doctor must preserve Anthropic's `anthropic-workspace-id is required` detail
|
|
141
|
+
and show the `anthropic.workspace_id` fix. Then configure a `wrkspc_...` value
|
|
142
|
+
and verify the same header on model pagination, streaming/non-streaming
|
|
143
|
+
Messages, and token counting. A workspace-scoped key must remain valid with no
|
|
144
|
+
workspace setting.
|
|
145
|
+
|
|
146
|
+
For OpenAI retry classification, mock a 429 `billing_not_active` streaming body
|
|
147
|
+
and verify exactly one transport call plus the provider's actionable message.
|
|
148
|
+
A 429 `rate_limit_exceeded` fixture must remain retryable. The deterministic
|
|
149
|
+
coverage is in `test/providerReliability.test.ts`.
|
|
150
|
+
|
|
139
151
|
Deterministic coverage:
|
|
140
152
|
|
|
141
153
|
```sh
|
package/docs/providers.md
CHANGED
|
@@ -34,7 +34,7 @@ multimodal input, external CLI boundary, and sandbox scope:
|
|
|
34
34
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
35
35
|
| Subscription | subscription | subscription-placeholder | no | no | no | n/a | n/a (no runtime) | `subscription:unconfigured` | independent subscription runtime only |
|
|
36
36
|
| OpenAI API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:openai` | `OPENAI_API_KEY` |
|
|
37
|
-
| Claude API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:anthropic` | `ANTHROPIC_API_KEY` |
|
|
37
|
+
| Claude API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:anthropic` | `ANTHROPIC_API_KEY`; identity-linked keys also select `ANTHROPIC_WORKSPACE_ID` |
|
|
38
38
|
| Gemini API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:gemini` | `GEMINI_API_KEY` |
|
|
39
39
|
| OpenRouter | API/router | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:openrouter` | `OPENROUTER_API_KEY` |
|
|
40
40
|
| NVIDIA Agentic | hosted/server API | UR-native | no | yes | yes | model-dependent | UR Bash/File sandbox | `api:nvidia-nim` | `NVIDIA_API_KEY`; public per-card endpoints or configurable NIM gateway |
|
|
@@ -173,6 +173,8 @@ explicit opt-in to the native Responses adapter; it defaults to `store=false`
|
|
|
173
173
|
and supports semantic streaming, background polling/cancellation, WebSocket
|
|
174
174
|
continuation, server compaction, and deferred tool search. It does not change
|
|
175
175
|
OpenAI-compatible, OpenRouter, local, or subscription-CLI providers.
|
|
176
|
+
Both transports fail immediately for machine-readable permanent account or
|
|
177
|
+
billing 429s; ordinary transient rate limits still honor provider retry timing.
|
|
176
178
|
|
|
177
179
|
## Provider-scoped model selection
|
|
178
180
|
|
|
@@ -281,7 +283,18 @@ remain authoritative. See OpenRouter's
|
|
|
281
283
|
Direct Anthropic requests retain supported prompt-cache breakpoints and enable
|
|
282
284
|
per-tool `eager_input_streaming` on streaming turns. This reduces repeated
|
|
283
285
|
prefill work and avoids waiting for a complete large tool argument before its
|
|
284
|
-
deltas arrive.
|
|
286
|
+
deltas arrive.
|
|
287
|
+
|
|
288
|
+
Identity-linked Anthropic keys additionally need a workspace selection. UR
|
|
289
|
+
accepts `provider.anthropic.workspaceId` through
|
|
290
|
+
`ur config set anthropic.workspace_id wrkspc_...` or
|
|
291
|
+
`ANTHROPIC_WORKSPACE_ID`, validates the `wrkspc_` resource ID, partitions the
|
|
292
|
+
model cache by workspace, and sends `anthropic-workspace-id` on model
|
|
293
|
+
discovery, doctor, message, streaming, and token-count requests. A provider
|
|
294
|
+
400 that names this requirement is preserved with the exact configuration fix
|
|
295
|
+
instead of being reduced to an unverifiable model-list failure.
|
|
296
|
+
|
|
297
|
+
Anthropic's premium fast tier remains explicit:
|
|
285
298
|
|
|
286
299
|
```sh
|
|
287
300
|
ur config set anthropic.speed fast
|
|
@@ -291,6 +304,8 @@ UR sends `speed: "fast"` with the `fast-mode-2026-02-01` beta only for Claude
|
|
|
291
304
|
Opus 5 and Opus 4.8, and retains `usage.speed` so accounting can distinguish the
|
|
292
305
|
tier actually served. Enabled account access is still required. Unsupported
|
|
293
306
|
models stay on standard speed. See Anthropic's
|
|
307
|
+
[authentication](https://platform.claude.com/docs/en/manage-claude/authentication),
|
|
308
|
+
[workspace management](https://platform.claude.com/docs/en/manage-claude/workspaces),
|
|
294
309
|
[prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching),
|
|
295
310
|
[fine-grained tool streaming](https://platform.claude.com/docs/en/agents-and-tools/tool-use/fine-grained-tool-streaming),
|
|
296
311
|
and [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode).
|
|
@@ -480,7 +495,8 @@ provider's successful live catalog remains authoritative for that account.
|
|
|
480
495
|
|
|
481
496
|
**API providers** require environment variable with API key:
|
|
482
497
|
- `openai-api` — requires `OPENAI_API_KEY`
|
|
483
|
-
- `anthropic-api` — requires `ANTHROPIC_API_KEY
|
|
498
|
+
- `anthropic-api` — requires `ANTHROPIC_API_KEY`; identity-linked keys also
|
|
499
|
+
select `ANTHROPIC_WORKSPACE_ID` (or saved `anthropic.workspace_id`)
|
|
484
500
|
- `gemini-api` — requires `GEMINI_API_KEY`
|
|
485
501
|
- `openrouter` — requires `OPENROUTER_API_KEY`
|
|
486
502
|
- `nvidia-nim` / `nvidia-special` — share `NVIDIA_API_KEY`; Agentic's enterprise endpoint is configurable, while Special routes each public model to its card-specific contract
|
|
@@ -656,6 +672,7 @@ API providers require explicit user selection and environment keys:
|
|
|
656
672
|
OPENAI_API_KEY=...
|
|
657
673
|
OPENAI_COMPATIBLE_API_KEY=...
|
|
658
674
|
ANTHROPIC_API_KEY=...
|
|
675
|
+
ANTHROPIC_WORKSPACE_ID=wrkspc_... # identity-linked Anthropic keys only
|
|
659
676
|
GEMINI_API_KEY=...
|
|
660
677
|
OPENROUTER_API_KEY=...
|
|
661
678
|
NVIDIA_API_KEY=...
|
|
@@ -803,7 +820,7 @@ Required variables:
|
|
|
803
820
|
| NVIDIA Agentic | `NVIDIA_API_KEY`, `NVIDIA_MODEL` | `NVIDIA_BASE_URL` (defaults to `https://integrate.api.nvidia.com/v1`) |
|
|
804
821
|
| OpenAI | `OPENAI_API_KEY`, `OPENAI_MODEL` | `OPENAI_BASE_URL` |
|
|
805
822
|
| OpenRouter | `OPENROUTER_API_KEY`, `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` |
|
|
806
|
-
| Anthropic | `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL` | `ANTHROPIC_BASE_URL` |
|
|
823
|
+
| Anthropic | `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL` | `ANTHROPIC_BASE_URL`; `ANTHROPIC_WORKSPACE_ID` for identity-linked keys |
|
|
807
824
|
| Gemini | `GEMINI_API_KEY`, `GEMINI_MODEL` | `GEMINI_BASE_URL` |
|
|
808
825
|
| Ollama | `OLLAMA_MODEL` | `OLLAMA_BASE_URL` or `OLLAMA_HOST`; `OLLAMA_API_KEY` when required |
|
|
809
826
|
| LM Studio | `LMSTUDIO_BASE_URL`, `LMSTUDIO_MODEL` | `LMSTUDIO_API_KEY` |
|
package/documentation/index.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<main id="content" class="content">
|
|
46
46
|
<header class="topbar">
|
|
47
47
|
<div>
|
|
48
|
-
<p class="eyebrow">Version 1.85.
|
|
48
|
+
<p class="eyebrow">Version 1.85.1</p>
|
|
49
49
|
<h1>UR-Nexus Documentation</h1>
|
|
50
50
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
51
51
|
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ur-inline-diffs",
|
|
3
3
|
"displayName": "UR Inline Diffs",
|
|
4
4
|
"description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
|
|
5
|
-
"version": "1.85.
|
|
5
|
+
"version": "1.85.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED