ur-agent 1.84.4 → 1.84.5

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.
@@ -164,6 +164,25 @@ default `auto`/`standard` values add no premium request. Explicit request-level
164
164
  provider preferences still win. Set either performance threshold to `auto` to
165
165
  remove it and return to OpenRouter's own routing data.
166
166
 
167
+ Direct Anthropic requests preserve UR's prompt-cache breakpoints using
168
+ Anthropic's supported cache-control shape. Streaming requests also set
169
+ `eager_input_streaming: true` on user-defined tools, so large tool arguments
170
+ arrive as Claude generates them instead of waiting for server-side buffering.
171
+ Both behaviors use Anthropic's documented native fields and require no setting.
172
+
173
+ Anthropic fast mode is a separate, premium research-preview tier. It is off by
174
+ default and can be requested explicitly:
175
+
176
+ ```sh
177
+ ur config set anthropic.speed fast # standard | fast
178
+ ```
179
+
180
+ UR adds `speed: "fast"` and Anthropic's required
181
+ `fast-mode-2026-02-01` beta only for Claude Opus 5 and Opus 4.8. The account
182
+ must be enabled by Anthropic. Other Claude models remain on standard speed;
183
+ UR does not send a field the selected model does not support. Return to normal
184
+ billing with `ur config set anthropic.speed standard`.
185
+
167
186
  `provider.fallback` is diagnostic recovery metadata, not automatic routing.
168
187
  When the active provider fails, `ur provider doctor` shows the configured
169
188
  recovery command; changing providers remains an explicit user action.
@@ -263,14 +282,21 @@ UNSLOTH_API_KEY=...
263
282
 
264
283
  NVIDIA NIM defaults to `https://integrate.api.nvidia.com/v1`, discovers the
265
284
  connected account's models live, and accepts a provider-scoped override for an
266
- enterprise or self-hosted NIM. On NVIDIA's hosted endpoint, UR intersects the
267
- broad `/v1/models` feed with the key's ACTIVE NVCF function inventory and omits
268
- non-agent utility endpoints; a configured NIM gateway uses its own model feed
269
- without contacting NVIDIA's hosted control plane. Generic `openai-compatible` authentication is
285
+ enterprise or self-hosted NIM. On NVIDIA's hosted endpoint, UR treats the
286
+ documented `/v1/models` response as authoritative and omits non-agent utility
287
+ endpoints. It does not narrow hosted models using the separate NVCF deployment
288
+ inventory; a configured NIM gateway uses its own model feed. Generic
289
+ `openai-compatible` authentication is
270
290
  optional: `ur connect openai-compatible` or the picker's `K` key stores a
271
291
  credential when the chosen gateway needs one, without breaking anonymous
272
292
  local endpoints.
273
293
 
294
+ The broader Build web page includes download-only NIMs; those are not valid
295
+ hosted choices unless the authenticated `/v1/models` endpoint returns them.
296
+ For the hosted service, UR focuses NVIDIA's documented fastest 30B agent model,
297
+ `nvidia/nemotron-3.5-lightning-30b-a3b`, first. Its thinking toggle maps to
298
+ NVIDIA's model-specific `chat_template_kwargs.enable_thinking` field.
299
+
274
300
  Unsloth is an inference-provider integration only. Start Unsloth Studio and
275
301
  load the model outside UR, connect its generated key with `ur connect unsloth`,
276
302
  then select a model discovered from `http://localhost:8888/v1` (or your
@@ -212,19 +212,34 @@ custom `base_url` scoped to that provider.
212
212
 
213
213
  ### NVIDIA lists a model but inference returns `Function … Not found for account`
214
214
 
215
- - Cause: NVIDIA's hosted `/v1/models` feed can contain a function that is no
216
- longer ACTIVE for the connected account.
215
+ - Cause: NVIDIA's hosted `/v1/models` feed can change, or a listed model's
216
+ backing function can become unavailable for the connected account.
217
217
  - Fix: upgrade UR, run `ur provider doctor nvidia-nim`, then open `/model` and
218
- press `Ctrl+R`. Hosted discovery now intersects `/v1/models` with NVIDIA's
219
- authenticated ACTIVE function inventory and excludes non-agent utility
220
- endpoints. A definitive runtime 404 also removes that model from the current
221
- endpoint-scoped session catalog.
218
+ press `Ctrl+R`. Hosted discovery uses NVIDIA's documented `/v1/models`
219
+ endpoint and excludes non-agent utility endpoints. It does not intersect the
220
+ catalog with the separate NVCF deployment-function inventory. A definitive
221
+ runtime 404 removes only that model from the current endpoint-scoped session
222
+ catalog until the next explicit refresh.
222
223
  - Privacy: UR does not display or retain the internal NVIDIA function UUID and
223
224
  account identifier from this error response.
224
225
 
225
- If `account_models` fails, reconnect a current build.nvidia.com key with
226
+ If `chat_models` fails, reconnect a current build.nvidia.com key with
226
227
  `ur connect nvidia-nim`. A configured enterprise/self-hosted NIM endpoint is
227
- validated only against that gateway and does not use NVIDIA's hosted inventory.
228
+ validated only against that gateway's own `/models` response.
229
+
230
+ ### A provider says the previous answer was empty after successful tool calls
231
+
232
+ Some OpenAI-compatible models scope generated tool-call IDs to one response
233
+ and reuse values such as `TaskCreate:0` on a later response. Older UR releases
234
+ mistook the later completed pair for transcript corruption, removed it before
235
+ the next API request, and could make the model believe that the user sent an
236
+ empty continuation.
237
+
238
+ Upgrade UR and retry the turn. UR now canonicalizes only later, independently
239
+ completed call/result pairs before provider dispatch. Same-message duplicates,
240
+ unmatched calls, and orphaned results still go through normal transcript
241
+ repair. The saved transcript remains faithful to the provider response; only
242
+ the API-bound copy receives conversation-unique IDs.
228
243
 
229
244
  ### `The provider reported that model … reached its per-response output boundary`
230
245
 
package/docs/USAGE.md CHANGED
@@ -190,6 +190,19 @@ features and are effective only for models that OpenRouter supports. Append
190
190
  `:nitro`, `:floor`, or `:exacto` to an OpenRouter model ID for its native
191
191
  throughput-, price-, or tool-quality-first virtual route.
192
192
 
193
+ Direct Anthropic sessions preserve prompt-cache breakpoints and stream large
194
+ tool arguments with Anthropic's per-tool `eager_input_streaming` control.
195
+ Accounts admitted to Anthropic's premium fast-mode research preview can opt in
196
+ for its supported Opus models:
197
+
198
+ ```sh
199
+ ur config set anthropic.speed fast
200
+ ```
201
+
202
+ UR sends that tier only to Claude Opus 5 and Opus 4.8; all other Claude models
203
+ remain on standard speed. Use `ur config set anthropic.speed standard` to turn
204
+ the premium tier off.
205
+
193
206
  `provider.fallback` only controls the recovery suggestion printed by provider
194
207
  diagnostics. UR does not switch or retry across providers automatically; use
195
208
  `ur config set provider <id>` after reviewing the failure.
@@ -258,9 +271,14 @@ NVIDIA NIM uses the build.nvidia.com key and hosted
258
271
  `https://integrate.api.nvidia.com/v1` endpoint by default. Connect it with
259
272
  `ur connect nvidia-nim`; use `ur config set base_url nvidia-nim <url>` for a
260
273
  different NIM deployment. For the hosted endpoint, `/model` shows only models
261
- that occur in both NVIDIA's `/v1/models` feed and the connected account's
262
- ACTIVE function inventory; utility endpoints such as embeddings, guards, and
263
- parsers are excluded. A custom NIM gateway retains its own independent catalog.
274
+ returned by NVIDIA's authoritative `/v1/models` feed, excluding non-agent
275
+ utility endpoints such as embeddings, guards, and parsers. NVCF deployment
276
+ functions are a separate API and do not narrow this hosted catalog. A custom
277
+ NIM gateway retains its own independent catalog.
278
+ Download-only cards from the Build web catalog are not inserted into the
279
+ hosted picker. NVIDIA's live `nemotron-3.5-lightning-30b-a3b` endpoint is
280
+ focused first as its documented fastest 30B agent model; Left/Right controls
281
+ that model's advertised on/off thinking switch.
264
282
  On the `/model` model screen, `K` adds or replaces a
265
283
  provider API key and `E` edits its endpoint. This also makes optional
266
284
  authentication practical for generic OpenAI-compatible gateways.
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.84.4 (UR-Nexus)"
22
+ # expected for this release: "1.84.5 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -122,6 +122,20 @@ fallback/threshold settings must use OpenRouter's snake-case wire keys;
122
122
  validate against the discovered base model and inherit its context, output,
123
123
  tool, and reasoning metadata.
124
124
 
125
+ For direct Anthropic, inspect one streaming request with tools. Valid
126
+ `cache_control` markers must remain while URHQ-only `scope` is absent, each user
127
+ tool must include `eager_input_streaming: true`, and no legacy fine-grained
128
+ streaming beta header is required. Then run:
129
+
130
+ ```sh
131
+ ur config set anthropic.speed fast
132
+ ```
133
+
134
+ Opus 5/4.8 must receive `speed="fast"` and
135
+ `anthropic-beta: fast-mode-2026-02-01`; Sonnet, Fable, Haiku, and unsupported
136
+ Opus versions must receive neither. A non-stream response must retain
137
+ `usage.speed`.
138
+
125
139
  Deterministic coverage:
126
140
 
127
141
  ```sh
@@ -129,9 +143,15 @@ bun test test/providerPickerPresentation.test.ts \
129
143
  test/openRouterEffort.test.ts test/providerModelDiscovery.test.ts \
130
144
  test/secondaryModelFallback.test.ts test/providerToolCalls.test.ts \
131
145
  test/providerContextWindow.test.ts test/outputLimitRecovery.test.ts \
132
- test/usageAccounting.test.ts test/providerRouting.test.ts
146
+ test/usageAccounting.test.ts test/providerRouting.test.ts \
147
+ test/reusedToolUseIds.test.ts
133
148
  ```
134
149
 
150
+ The repeated-ID fixture contains two sequential completed calls that both
151
+ arrive as `TaskCreate:0`. Both call/results must survive the provider-bound
152
+ history pass with the later pair renamed deterministically; same-message or
153
+ unmatched duplicates must remain visible to corruption repair.
154
+
135
155
  ### 0.0.0a Provider output-boundary continuation (1.84.4)
136
156
 
137
157
  Use a provider fixture that returns `max_tokens`/`length` after non-empty
@@ -241,10 +261,11 @@ NVIDIA NIM, Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and generic OpenAI-comp
241
261
  request shapes.
242
262
 
243
263
  The NVIDIA fixture also verifies hosted/default and overridden endpoints,
244
- Bearer discovery, intersection with account-active NVCF functions, removal of
245
- retired and non-agent models, selected-model doctor diagnostics, redaction of
246
- internal NVIDIA account/function IDs, endpoint-scoped invalidation, native
247
- dispatch, documented effort aliases, and no Ultra on an unknown model. In
264
+ Bearer discovery from NVIDIA's authoritative `/v1/models` endpoint, removal
265
+ of non-agent utility models, selected-model doctor diagnostics, redaction of
266
+ internal NVIDIA account/function IDs, endpoint-scoped runtime invalidation,
267
+ native dispatch, the preferred Lightning endpoint and its model-scoped
268
+ `enable_thinking` switch, documented effort aliases, and no Ultra on an unknown model. In
248
269
  `/model`, select `openai-compatible` and verify `K` can
249
270
  add or replace its optional key while `E` continues to edit only its endpoint.
250
271
 
package/docs/providers.md CHANGED
@@ -273,6 +273,29 @@ remain authoritative. See OpenRouter's
273
273
  [provider routing](https://openrouter.ai/docs/guides/routing/provider-selection),
274
274
  [Auto Exacto](https://openrouter.ai/docs/guides/routing/auto-exacto), and
275
275
  [prompt caching](https://openrouter.ai/docs/guides/best-practices/prompt-caching).
276
+
277
+ Direct Anthropic requests retain supported prompt-cache breakpoints and enable
278
+ per-tool `eager_input_streaming` on streaming turns. This reduces repeated
279
+ prefill work and avoids waiting for a complete large tool argument before its
280
+ deltas arrive. Anthropic's premium fast tier remains explicit:
281
+
282
+ ```sh
283
+ ur config set anthropic.speed fast
284
+ ```
285
+
286
+ UR sends `speed: "fast"` with the `fast-mode-2026-02-01` beta only for Claude
287
+ Opus 5 and Opus 4.8, and retains `usage.speed` so accounting can distinguish the
288
+ tier actually served. Enabled account access is still required. Unsupported
289
+ models stay on standard speed. See Anthropic's
290
+ [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching),
291
+ [fine-grained tool streaming](https://platform.claude.com/docs/en/agents-and-tools/tool-use/fine-grained-tool-streaming),
292
+ and [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode).
293
+
294
+ UR uses only provider-documented acceleration controls. OpenAI Responses
295
+ already has native streaming and WebSocket continuation; Gemini 2.5+ implicit
296
+ caching is automatic. Google's Priority tier requires the Interactions API and
297
+ is not a valid `generateContent` option. NVIDIA NIM and local servers publish
298
+ no universal OpenRouter-style routing field, so UR does not invent one.
276
299
  API-key entry for
277
300
  OpenAI, Claude, Gemini, OpenRouter, NVIDIA NIM, and authenticated compatible
278
301
  endpoints is a single aligned masked row; the key is stored in the OS keychain
@@ -284,8 +307,9 @@ OpenAI-compatible endpoints may remain anonymous.
284
307
 
285
308
  UR uses each provider's non-generating count endpoint when one covers the full
286
309
  request: OpenAI Responses input tokens, Anthropic Messages token counting,
287
- Gemini `countTokens`, llama.cpp chat input tokens, and vLLM/NVIDIA NIM Messages
288
- token counting. Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
310
+ Gemini `countTokens`, llama.cpp chat input tokens, and vLLM Messages token
311
+ counting. NVIDIA's hosted NIM API has no documented token-count route;
312
+ NVIDIA NIM, Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
289
313
  provider-wire local estimate because those runtimes do not share a dependable
290
314
  preflight tokenizer for complete chat history plus tools. UR never launches a
291
315
  hidden completion for token counting. If a native count call is unavailable,
@@ -427,7 +451,7 @@ ur config set provider anthropic-api
427
451
  | --- | --- | --- |
428
452
  | API providers (openai-api, anthropic-api, gemini-api) | Live discovery from the provider's `/models` endpoint using your connected key (curated fallback until connected) | live |
429
453
  | OpenRouter | Live `/models` discovery with an endpoint-scoped five-minute cache; Ctrl+R forces a fresh request with no stale fallback | live/cache |
430
- | NVIDIA NIM | Hosted: live `/models` intersected with the connected account's ACTIVE NVCF functions, then restricted to agent/chat endpoints. Configured NIM gateway: its own live `/models` catalog | live |
454
+ | NVIDIA NIM | Hosted: authoritative live `/models`, restricted to agent/chat endpoints. Configured NIM gateway: its own live `/models` catalog | live |
431
455
  | Local/server providers (ollama, lmstudio, llama.cpp, vllm, unsloth) | Dynamic discovery from the selected provider endpoint | live |
432
456
  | OpenAI-compatible | Dynamic discovery from configured endpoint | live |
433
457
  | Subscription CLIs (codex-cli, claude-code-cli, gemini-cli, antigravity-cli) | Curated list (the official CLIs expose no models API); first-class in `/model`, dispatched via the official CLI. External CLI behavior depends on the vendor CLI. Log in with `ur auth <provider>` | static |
@@ -664,28 +688,38 @@ ur provider doctor nvidia-nim
664
688
  ur config set base_url nvidia-nim https://nim-gateway.example/v1
665
689
  ```
666
690
 
667
- The default is `https://integrate.api.nvidia.com/v1`. NVIDIA's hosted
668
- `/v1/models` response can be broader than the functions that the connected
669
- account can actually invoke. UR therefore intersects it with the authenticated
670
- NVCF `GET /v2/nvcf/functions` inventory, keeps only `ACTIVE` matches, and
671
- removes embedding, guard, parser, translation, reward, and similar non-agent
672
- endpoints. A custom enterprise or self-hosted NIM remains independent and uses
691
+ The default is `https://integrate.api.nvidia.com/v1`. NVIDIA documents
692
+ `/v1/models` as the management endpoint for models available for inference, so
693
+ UR uses that authenticated response as the live hosted catalog. It removes
694
+ embedding, guard, parser, translation, reward, and similar non-agent endpoints,
695
+ but does not intersect the result with NVCF's separate deployment-function
696
+ inventory. A custom enterprise or self-hosted NIM remains independent and uses
673
697
  only that configured gateway's `/models` response.
674
698
 
675
- UR calls `/models`, `/chat/completions`, and, when available, `/messages/count_tokens`; native
676
- count failure falls back to a provider-wire estimate and never launches a
677
- hidden completion. Streaming, standard tool calls, and image input use the
699
+ The Build web catalog also contains download-only NIMs. UR does not add those
700
+ cards to the hosted picker: only IDs returned by the authenticated hosted
701
+ `/v1/models` endpoint can appear. UR focuses
702
+ `nvidia/nemotron-3.5-lightning-30b-a3b` first because NVIDIA documents it as
703
+ its fastest 30B model for long-running agents. Left/Right can turn that exact
704
+ model's thinking off/on through NVIDIA's documented
705
+ `chat_template_kwargs.enable_thinking`; other NIM models receive only their
706
+ own advertised reasoning contract.
707
+
708
+ UR calls `/models` and `/chat/completions`. It counts NVIDIA requests with a
709
+ provider-wire local estimate instead of first calling the unsupported hosted
710
+ `/messages/count_tokens` route, and never launches a hidden completion.
711
+ Streaming, standard tool calls, and image input use the
678
712
  same OpenAI-compatible adapter. Vision and tools remain model-dependent. For
679
713
  documented Nemotron coding-agent models, UR includes NVIDIA's
680
714
  `force_nonempty_content` template option when tools are present. See NVIDIA's
681
715
  [NIM LLM API reference](https://docs.api.nvidia.com/nim/reference/llm-apis)
682
- and [NVCF API scope reference](https://docs.nvidia.com/nvcf/api#scope-reference).
716
+ and [NIM endpoint guide](https://docs.nvidia.com/nim/large-language-models/latest/tutorials.html).
683
717
 
684
- `ur provider doctor nvidia-nim` verifies both the hosted catalog and the
685
- selected model against the account-active inventory. If NVIDIA retires a
686
- function after selection, UR redacts NVIDIA's internal function/account IDs,
687
- removes that model from the current endpoint-scoped session catalog, and asks
688
- the user to select an active model. `Ctrl+R` explicitly retries discovery.
718
+ `ur provider doctor nvidia-nim` verifies the hosted catalog and selected model
719
+ against the live `/v1/models` response. If NVIDIA rejects a listed model after
720
+ selection, UR redacts NVIDIA's internal function/account IDs, removes that
721
+ model from the current endpoint-scoped session catalog, and asks the user to
722
+ select another model. `Ctrl+R` explicitly retries discovery.
689
723
 
690
724
  Local/server providers use their normal endpoints:
691
725
 
@@ -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.84.4</p>
48
+ <p class="eyebrow">Version 1.84.5</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>
@@ -172,8 +172,9 @@ ur config set provider unsloth
172
172
  ur config set model qwen3-coder:480b-cloud
173
173
  ur config set provider.fallback ollama
174
174
  ur config set openai_transport responses
175
- ur config set responses.store false</code></pre>
176
- <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Each configurable provider keeps its own <code>base_url</code>, so switching among Ollama, LM Studio, llama.cpp, vLLM, Unsloth, NVIDIA NIM, and API gateways restores the matching address. NVIDIA NIM uses live discovery from build.nvidia.com's official OpenAI-compatible API. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Unsloth is an authenticated inference provider only.</p>
175
+ ur config set responses.store false
176
+ ur config set anthropic.speed fast</code></pre>
177
+ <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Each configurable provider keeps its own <code>base_url</code>, so switching among Ollama, LM Studio, llama.cpp, vLLM, Unsloth, NVIDIA NIM, and API gateways restores the matching address. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Direct Anthropic preserves prompt-cache breakpoints, streams tool inputs with its per-tool control, and enables the documented premium fast tier only when explicitly configured for a supported model. Unsloth is an authenticated inference provider only.</p>
177
178
  </article>
178
179
  <article>
179
180
  <h3>Capability-driven reasoning effort</h3>
@@ -195,7 +196,7 @@ ur --model kimi-k3:cloud --effort high
195
196
  ur config set provider nvidia-nim
196
197
  ur config set base_url nvidia-nim https://integrate.api.nvidia.com/v1
197
198
  /model # K API key · E endpoint</code></pre>
198
- <p>NVIDIA NIM is a UR-native provider with live models, streaming, tools, images, configurable endpoints, and only NVIDIA-documented effort ladders. Generic OpenAI-compatible endpoints can also store an optional dedicated key; anonymous endpoints remain valid.</p>
199
+ <p>NVIDIA NIM is a UR-native provider with live models, streaming, tools, images, configurable endpoints, and only NVIDIA-documented effort ladders. Its authenticated hosted <code>/v1/models</code> response is authoritative: UR filters utility endpoints but does not narrow the catalog through the unrelated NVCF deployment inventory, and download-only Build cards are not presented as hosted endpoints. Nemotron 3.5 Lightning is preferred when live and receives its documented on/off thinking field; unknown models inherit no fabricated effort. Generic OpenAI-compatible endpoints can store an optional dedicated key, while anonymous endpoints remain valid.</p>
199
200
  </article>
200
201
  <article>
201
202
  <h3>Portable shell deadlines</h3>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.84.4"
10
+ version = "1.84.5"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -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.84.4",
5
+ "version": "1.84.5",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.84.4",
3
+ "version": "1.84.5",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",