ur-agent 1.84.3 → 1.84.4
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 +37 -0
- package/README.md +28 -3
- package/dist/cli.js +600 -236
- package/docs/CONFIGURATION.md +25 -1
- package/docs/TROUBLESHOOTING.md +33 -0
- package/docs/USAGE.md +22 -1
- package/docs/VALIDATION.md +50 -4
- package/docs/providers.md +28 -8
- package/documentation/index.html +2 -2
- 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
|
@@ -143,6 +143,27 @@ ur config set base_url <url>
|
|
|
143
143
|
ur config set base_url <provider> <url>
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
+
OpenRouter's default `auto` policy keeps its current Auto Exacto ordering for
|
|
147
|
+
tool turns and prioritizes end-to-end throughput for ordinary text turns.
|
|
148
|
+
Every performance choice is explicit and editable:
|
|
149
|
+
|
|
150
|
+
```sh
|
|
151
|
+
ur config set openrouter.routing auto # auto | throughput | latency | price
|
|
152
|
+
ur config set openrouter.allow_fallbacks true # true | false | auto
|
|
153
|
+
ur config set openrouter.require_parameters true # true | false | auto
|
|
154
|
+
ur config set openrouter.preferred_min_throughput 40
|
|
155
|
+
ur config set openrouter.preferred_max_latency 3
|
|
156
|
+
ur config set openrouter.service_tier priority # auto | default | flex | priority | fast
|
|
157
|
+
ur config set openrouter.speed fast # standard | fast
|
|
158
|
+
ur config set model <openrouter-model>:nitro # or :floor / :exacto
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Thresholds are preferences, not exclusions. `priority` and `fast` can increase
|
|
162
|
+
price and apply only where OpenRouter advertises upstream support; their
|
|
163
|
+
default `auto`/`standard` values add no premium request. Explicit request-level
|
|
164
|
+
provider preferences still win. Set either performance threshold to `auto` to
|
|
165
|
+
remove it and return to OpenRouter's own routing data.
|
|
166
|
+
|
|
146
167
|
`provider.fallback` is diagnostic recovery metadata, not automatic routing.
|
|
147
168
|
When the active provider fails, `ur provider doctor` shows the configured
|
|
148
169
|
recovery command; changing providers remains an explicit user action.
|
|
@@ -242,7 +263,10 @@ UNSLOTH_API_KEY=...
|
|
|
242
263
|
|
|
243
264
|
NVIDIA NIM defaults to `https://integrate.api.nvidia.com/v1`, discovers the
|
|
244
265
|
connected account's models live, and accepts a provider-scoped override for an
|
|
245
|
-
enterprise or self-hosted NIM.
|
|
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
|
|
246
270
|
optional: `ur connect openai-compatible` or the picker's `K` key stores a
|
|
247
271
|
credential when the chosen gateway needs one, without breaking anonymous
|
|
248
272
|
local endpoints.
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -210,6 +210,39 @@ press `K` on its `/model` screen; the key is optional and stored separately
|
|
|
210
210
|
from `OPENAI_API_KEY`. NVIDIA NIM uses `ur connect nvidia-nim` and keeps any
|
|
211
211
|
custom `base_url` scoped to that provider.
|
|
212
212
|
|
|
213
|
+
### NVIDIA lists a model but inference returns `Function … Not found for account`
|
|
214
|
+
|
|
215
|
+
- Cause: NVIDIA's hosted `/v1/models` feed can contain a function that is no
|
|
216
|
+
longer ACTIVE for the connected account.
|
|
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.
|
|
222
|
+
- Privacy: UR does not display or retain the internal NVIDIA function UUID and
|
|
223
|
+
account identifier from this error response.
|
|
224
|
+
|
|
225
|
+
If `account_models` fails, reconnect a current build.nvidia.com key with
|
|
226
|
+
`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
|
+
|
|
229
|
+
### `The provider reported that model … reached its per-response output boundary`
|
|
230
|
+
|
|
231
|
+
This is not an input-context overflow and does not mean UR counted the text
|
|
232
|
+
incorrectly. The provider ended the generation with its `max_tokens`/`length`
|
|
233
|
+
finish reason on a response chunk whose boundary was the displayed value. The
|
|
234
|
+
normal query loop silently continues from the exact cutoff with no fixed total
|
|
235
|
+
continuation ceiling while every capped response adds novel work. It stops only
|
|
236
|
+
after two consecutive empty or replayed capped responses, which indicates a
|
|
237
|
+
stalled model loop rather than a long task.
|
|
238
|
+
|
|
239
|
+
`UR_CODE_MAX_OUTPUT_TOKENS` changes only the per-response chunk, up to the
|
|
240
|
+
model's discovered limit; it does not impose or remove a total task limit.
|
|
241
|
+
Cloud requests use a practical chunk so routers retain fast endpoint choices,
|
|
242
|
+
and local runtimes use a smaller reservation to avoid unnecessary KV-memory
|
|
243
|
+
allocation. If the stalled-loop message appears, inspect the prompt/model for
|
|
244
|
+
repetition before retrying.
|
|
245
|
+
|
|
213
246
|
### Unsloth is selected but unavailable
|
|
214
247
|
|
|
215
248
|
- Likely cause: Studio is not running, no model is loaded, its generated API
|
package/docs/USAGE.md
CHANGED
|
@@ -173,6 +173,23 @@ ur config set responses.compact_threshold 20000
|
|
|
173
173
|
ur config set responses.tool_search hosted
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
+
For OpenRouter, UR preserves Auto Exacto on tool turns and uses throughput
|
|
177
|
+
routing on non-tool turns. Tune that provider without hardcoded endpoints or
|
|
178
|
+
request patches:
|
|
179
|
+
|
|
180
|
+
```sh
|
|
181
|
+
ur config set openrouter.routing auto
|
|
182
|
+
ur config set openrouter.preferred_min_throughput 40
|
|
183
|
+
ur config set openrouter.preferred_max_latency 3
|
|
184
|
+
ur config set openrouter.service_tier priority
|
|
185
|
+
ur config set openrouter.speed fast
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
`auto` is the recommended default. `priority`/`fast` are optional paid upstream
|
|
189
|
+
features and are effective only for models that OpenRouter supports. Append
|
|
190
|
+
`:nitro`, `:floor`, or `:exacto` to an OpenRouter model ID for its native
|
|
191
|
+
throughput-, price-, or tool-quality-first virtual route.
|
|
192
|
+
|
|
176
193
|
`provider.fallback` only controls the recovery suggestion printed by provider
|
|
177
194
|
diagnostics. UR does not switch or retry across providers automatically; use
|
|
178
195
|
`ur config set provider <id>` after reviewing the failure.
|
|
@@ -240,7 +257,11 @@ API-key access, and an API key does not grant subscription CLI access.
|
|
|
240
257
|
NVIDIA NIM uses the build.nvidia.com key and hosted
|
|
241
258
|
`https://integrate.api.nvidia.com/v1` endpoint by default. Connect it with
|
|
242
259
|
`ur connect nvidia-nim`; use `ur config set base_url nvidia-nim <url>` for a
|
|
243
|
-
different NIM deployment.
|
|
260
|
+
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.
|
|
264
|
+
On the `/model` model screen, `K` adds or replaces a
|
|
244
265
|
provider API key and `E` edits its endpoint. This also makes optional
|
|
245
266
|
authentication practical for generic OpenAI-compatible gateways.
|
|
246
267
|
|
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.84.
|
|
22
|
+
# expected for this release: "1.84.4 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### 0.0 Redteam mode and Reverse Skills (1.81.0)
|
|
@@ -72,7 +72,7 @@ changes must remain blocked. The deterministic regressions are:
|
|
|
72
72
|
bun test test/taskListGate.test.ts test/toolExecutionFinalInput.test.ts
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
### 0.0.0 OpenRouter research routing and provider UI (
|
|
75
|
+
### 0.0.0 OpenRouter research routing and provider UI (routing updated 1.84.4)
|
|
76
76
|
|
|
77
77
|
Connect OpenRouter, run `/model`, select OpenRouter, and verify that its model
|
|
78
78
|
step shows catalog freshness plus pricing/context/tool/reasoning details. Focus
|
|
@@ -100,15 +100,58 @@ the auxiliary request stays on the active OpenRouter model, no `modelH` error
|
|
|
100
100
|
appears, a real provider search count is shown, and a response that did not
|
|
101
101
|
perform a search fails clearly instead of saying `Did 0 searches`.
|
|
102
102
|
|
|
103
|
+
Inspect the OpenRouter request body. A turn containing tools must not contain a
|
|
104
|
+
default `provider.sort`, leaving Auto Exacto active; a text-only request must
|
|
105
|
+
contain `provider.sort="throughput"`. Both retain the stable `session_id`.
|
|
106
|
+
Then verify explicit controls and native virtual variants:
|
|
107
|
+
|
|
108
|
+
```sh
|
|
109
|
+
ur config set openrouter.routing latency
|
|
110
|
+
ur config set openrouter.allow_fallbacks true
|
|
111
|
+
ur config set openrouter.require_parameters true
|
|
112
|
+
ur config set openrouter.preferred_min_throughput 40
|
|
113
|
+
ur config set openrouter.preferred_max_latency 3
|
|
114
|
+
ur config set openrouter.service_tier priority
|
|
115
|
+
ur config set openrouter.speed fast
|
|
116
|
+
ur config set model <discovered-openrouter-model>:nitro
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The forced routing value must appear on both tool and non-tool requests;
|
|
120
|
+
fallback/threshold settings must use OpenRouter's snake-case wire keys;
|
|
121
|
+
`priority`/`fast` must appear only when explicitly selected. `:nitro` must
|
|
122
|
+
validate against the discovered base model and inherit its context, output,
|
|
123
|
+
tool, and reasoning metadata.
|
|
124
|
+
|
|
103
125
|
Deterministic coverage:
|
|
104
126
|
|
|
105
127
|
```sh
|
|
106
128
|
bun test test/providerPickerPresentation.test.ts \
|
|
107
129
|
test/openRouterEffort.test.ts test/providerModelDiscovery.test.ts \
|
|
108
130
|
test/secondaryModelFallback.test.ts test/providerToolCalls.test.ts \
|
|
131
|
+
test/providerContextWindow.test.ts test/outputLimitRecovery.test.ts \
|
|
109
132
|
test/usageAccounting.test.ts test/providerRouting.test.ts
|
|
110
133
|
```
|
|
111
134
|
|
|
135
|
+
### 0.0.0a Provider output-boundary continuation (1.84.4)
|
|
136
|
+
|
|
137
|
+
Use a provider fixture that returns `max_tokens`/`length` after non-empty
|
|
138
|
+
partial output. UR must withhold the intermediate API error, add a continuation
|
|
139
|
+
turn that requests only novel work from the exact cutoff, and continue for more
|
|
140
|
+
than three responses while every response progresses. The original prompt,
|
|
141
|
+
tool state, and completed output remain in context. Two consecutive empty or
|
|
142
|
+
exact-replay capped responses must stop with the stalled-loop diagnostic.
|
|
143
|
+
|
|
144
|
+
The per-request `max_tokens` value remains bounded by live/static model
|
|
145
|
+
metadata. A model with a 128K advertised output ceiling uses a practical 32K
|
|
146
|
+
default response chunk; `UR_CODE_MAX_OUTPUT_TOKENS` may raise that chunk to
|
|
147
|
+
128K, but neither value creates a total task-output ceiling. Local/user-hosted
|
|
148
|
+
runtimes use their conservative 4K reservation and the same continuation path.
|
|
149
|
+
|
|
150
|
+
```sh
|
|
151
|
+
bun test test/outputLimitRecovery.test.ts \
|
|
152
|
+
test/providerRequestTuning.test.ts test/providerContextWindow.test.ts
|
|
153
|
+
```
|
|
154
|
+
|
|
112
155
|
### 0.0.1 Unavailable Ollama tools recover (1.80.7)
|
|
113
156
|
|
|
114
157
|
With an Ollama model, ask for research that mentions WebSearch. If WebSearch is
|
|
@@ -198,8 +241,11 @@ NVIDIA NIM, Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and generic OpenAI-comp
|
|
|
198
241
|
request shapes.
|
|
199
242
|
|
|
200
243
|
The NVIDIA fixture also verifies hosted/default and overridden endpoints,
|
|
201
|
-
Bearer discovery,
|
|
202
|
-
|
|
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
|
|
248
|
+
`/model`, select `openai-compatible` and verify `K` can
|
|
203
249
|
add or replace its optional key while `E` continues to edit only its endpoint.
|
|
204
250
|
|
|
205
251
|
## 0.2 Permission safety and context pack (1.19.0)
|
package/docs/providers.md
CHANGED
|
@@ -263,10 +263,17 @@ shows pricing tier, context size, tool capability, reasoning capability, and
|
|
|
263
263
|
the full, untruncated model ID immediately below the focused entry. Opening the
|
|
264
264
|
OpenRouter catalog reuses its endpoint-scoped five-minute cache; Ctrl+R forces
|
|
265
265
|
the current `/models` endpoint and never substitutes a cached list when that
|
|
266
|
-
forced refresh fails.
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
forced refresh fails. Tool requests preserve OpenRouter Auto Exacto so its live
|
|
267
|
+
throughput, tool-call reliability, and benchmark signals choose the route;
|
|
268
|
+
non-tool requests default to throughput sorting rather than TTFT-only latency
|
|
269
|
+
sorting. UR promotes its stable session ID for prompt-cache affinity while
|
|
270
|
+
retaining router fallback. Explicit request preferences, the `openrouter.*`
|
|
271
|
+
configuration controls, and the `:nitro`, `:floor`, and `:exacto` model variants
|
|
272
|
+
remain authoritative. See OpenRouter's
|
|
273
|
+
[provider routing](https://openrouter.ai/docs/guides/routing/provider-selection),
|
|
274
|
+
[Auto Exacto](https://openrouter.ai/docs/guides/routing/auto-exacto), and
|
|
275
|
+
[prompt caching](https://openrouter.ai/docs/guides/best-practices/prompt-caching).
|
|
276
|
+
API-key entry for
|
|
270
277
|
OpenAI, Claude, Gemini, OpenRouter, NVIDIA NIM, and authenticated compatible
|
|
271
278
|
endpoints is a single aligned masked row; the key is stored in the OS keychain
|
|
272
279
|
flow and is never written to settings. On the model screen, `K` adds or
|
|
@@ -420,7 +427,7 @@ ur config set provider anthropic-api
|
|
|
420
427
|
| --- | --- | --- |
|
|
421
428
|
| 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 |
|
|
422
429
|
| OpenRouter | Live `/models` discovery with an endpoint-scoped five-minute cache; Ctrl+R forces a fresh request with no stale fallback | live/cache |
|
|
423
|
-
| NVIDIA NIM |
|
|
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 |
|
|
424
431
|
| Local/server providers (ollama, lmstudio, llama.cpp, vllm, unsloth) | Dynamic discovery from the selected provider endpoint | live |
|
|
425
432
|
| OpenAI-compatible | Dynamic discovery from configured endpoint | live |
|
|
426
433
|
| 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 |
|
|
@@ -657,15 +664,28 @@ ur provider doctor nvidia-nim
|
|
|
657
664
|
ur config set base_url nvidia-nim https://nim-gateway.example/v1
|
|
658
665
|
```
|
|
659
666
|
|
|
660
|
-
The default is `https://integrate.api.nvidia.com/v1`.
|
|
661
|
-
`/
|
|
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
|
|
673
|
+
only that configured gateway's `/models` response.
|
|
674
|
+
|
|
675
|
+
UR calls `/models`, `/chat/completions`, and, when available, `/messages/count_tokens`; native
|
|
662
676
|
count failure falls back to a provider-wire estimate and never launches a
|
|
663
677
|
hidden completion. Streaming, standard tool calls, and image input use the
|
|
664
678
|
same OpenAI-compatible adapter. Vision and tools remain model-dependent. For
|
|
665
679
|
documented Nemotron coding-agent models, UR includes NVIDIA's
|
|
666
680
|
`force_nonempty_content` template option when tools are present. See NVIDIA's
|
|
667
681
|
[NIM LLM API reference](https://docs.api.nvidia.com/nim/reference/llm-apis)
|
|
668
|
-
and [
|
|
682
|
+
and [NVCF API scope reference](https://docs.nvidia.com/nvcf/api#scope-reference).
|
|
683
|
+
|
|
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.
|
|
669
689
|
|
|
670
690
|
Local/server providers use their normal endpoints:
|
|
671
691
|
|
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.84.
|
|
48
|
+
<p class="eyebrow">Version 1.84.4</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>
|
|
@@ -187,7 +187,7 @@ ur --model kimi-k3:cloud --effort high
|
|
|
187
187
|
<h3>OpenRouter responsive routing</h3>
|
|
188
188
|
<pre><code>ur config set provider openrouter
|
|
189
189
|
/model # cached catalog; Ctrl+R forces live refresh</code></pre>
|
|
190
|
-
<p>The endpoint-scoped model catalog is reused for five minutes, while forced refresh never substitutes stale data.
|
|
190
|
+
<p>The endpoint-scoped model catalog is reused for five minutes, while forced refresh never substitutes stale data. Tool turns preserve OpenRouter Auto Exacto for live throughput and tool-call reliability; non-tool turns prefer end-to-end throughput. Stable session affinity keeps prompt caches warm, while configurable routing preferences and the <code>:nitro</code>, <code>:floor</code>, and <code>:exacto</code> variants remain authoritative.</p>
|
|
191
191
|
</article>
|
|
192
192
|
<article>
|
|
193
193
|
<h3>NVIDIA NIM and compatible API keys</h3>
|
|
@@ -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.
|
|
5
|
+
"version": "1.84.4",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED