ur-agent 1.84.1 → 1.84.3
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 +38 -0
- package/README.md +18 -6
- package/dist/cli.js +319 -106
- package/docs/AGENT_TRENDS.md +2 -2
- package/docs/CONFIGURATION.md +25 -6
- package/docs/TROUBLESHOOTING.md +6 -0
- package/docs/USAGE.md +11 -4
- package/docs/VALIDATION.md +24 -1
- package/docs/providers.md +58 -6
- package/documentation/app.js +2 -2
- package/documentation/index.html +22 -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/AGENT_TRENDS.md
CHANGED
|
@@ -80,7 +80,7 @@ Inside an interactive session:
|
|
|
80
80
|
|
|
81
81
|
| Trend | UR status | Current coverage | Professional next step |
|
|
82
82
|
| --- | --- | --- | --- |
|
|
83
|
-
| Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
|
|
83
|
+
| Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
|
|
84
84
|
| Model Context Protocol ecosystem | Covered | Stable TypeScript SDK v2 split client/server/core runtime; `ur mcp`, OAuth/XAA, fail-closed bounded tools, final `input_required` continuation, all workspace roots with change notifications, and the opt-in stateless web server | Broaden independent-client interoperability fixtures |
|
|
85
85
|
| Protocol Tasks and Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-web` | Broaden independent-client interoperability fixtures |
|
|
86
86
|
| A2A / Agent Card interoperability | Covered | Stable official v1.1 SDK, native ProtoJSON JSON-RPC/HTTP+JSON, SSE streaming, task resubscription, authenticated push delivery with validated destinations, negotiated cards, tenant isolation, durable artifacts, and explicit v0.3 compatibility | Broaden independent-client/TCK fixtures; keep gRPC and extended cards unadvertised until deployed and tested |
|
|
@@ -168,7 +168,7 @@ compatibility transport rather than relabeling either wire schema.
|
|
|
168
168
|
## Model Runtime Position
|
|
169
169
|
|
|
170
170
|
UR is local-first, not local-only. Ollama supports private on-device execution;
|
|
171
|
-
direct adapters support OpenAI, Anthropic, Gemini, OpenRouter, and compatible
|
|
171
|
+
direct adapters support OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and compatible
|
|
172
172
|
endpoints; subscription adapters use the provider's authenticated CLI. Provider
|
|
173
173
|
and model selection are explicit, credentials are resolved through the
|
|
174
174
|
credential layer, and the optional fallback setting is diagnostic advice rather
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -88,7 +88,7 @@ receives general-purpose tools through this path.
|
|
|
88
88
|
|
|
89
89
|
UR-Nexus supports official provider access paths only:
|
|
90
90
|
|
|
91
|
-
- Explicit API providers: OpenAI, Anthropic, Gemini, OpenRouter, and
|
|
91
|
+
- Explicit API providers: OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and
|
|
92
92
|
OpenAI-compatible endpoints.
|
|
93
93
|
- Local/server providers: Ollama, LM Studio, llama.cpp, vLLM, and Unsloth OpenAI-compatible
|
|
94
94
|
server mode.
|
|
@@ -132,6 +132,7 @@ ur config set provider openai-api
|
|
|
132
132
|
ur config set provider anthropic-api
|
|
133
133
|
ur config set provider gemini-api
|
|
134
134
|
ur config set provider openrouter
|
|
135
|
+
ur config set provider nvidia-nim
|
|
135
136
|
ur config set provider openai-compatible
|
|
136
137
|
ur config set provider unsloth
|
|
137
138
|
ur provider doctor agy
|
|
@@ -147,7 +148,7 @@ When the active provider fails, `ur provider doctor` shows the configured
|
|
|
147
148
|
recovery command; changing providers remains an explicit user action.
|
|
148
149
|
|
|
149
150
|
Provider values accept canonical IDs and common aliases. Examples:
|
|
150
|
-
`openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `ollama`,
|
|
151
|
+
`openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim` (`NVIDIA Build`), `ollama`,
|
|
151
152
|
`lmstudio`, `LM Studio`, `llama.cpp`, `vllm`, `unsloth` (`Unsloth Studio`), and the subscription CLI
|
|
152
153
|
providers `codex-cli` (`chatgpt`), `claude-code-cli` (`claude`), `gemini-cli`
|
|
153
154
|
(`gemini`), and `antigravity-cli` (`agy`). Values with spaces should be quoted
|
|
@@ -162,21 +163,22 @@ saved provider/model pair controls the runtime backend for the next agent
|
|
|
162
163
|
request; Ollama is only used when `ollama` is the selected provider.
|
|
163
164
|
|
|
164
165
|
The configured `base_url` is provider-scoped. Setting an address while vLLM is
|
|
165
|
-
active does not replace the saved Ollama, llama.cpp, or
|
|
166
|
+
active does not replace the saved Ollama, llama.cpp, Unsloth, or NVIDIA NIM address;
|
|
166
167
|
returning to any provider restores its own URL. Legacy `provider.baseUrl`
|
|
167
168
|
settings are migrated to the old active provider on the first provider switch
|
|
168
169
|
or scoped base-URL write.
|
|
169
170
|
To configure a provider that is not active, use
|
|
170
171
|
`ur config set base_url <provider> <url>`; the success message names the target
|
|
171
172
|
provider. This applies to direct API providers and gateways (OpenAI, Anthropic,
|
|
172
|
-
Gemini, and
|
|
173
|
+
Gemini, OpenRouter, and NVIDIA NIM) as well as local/server providers; built-in vendor URLs
|
|
173
174
|
are fallbacks only. Discovery, doctor output, and request dispatch all resolve
|
|
174
175
|
the same per-provider override. `/model` also opens an endpoint field when a
|
|
175
176
|
disconnected local/server provider is selected.
|
|
176
177
|
|
|
177
178
|
In the model step, Up/Down browses, Left/Right changes the focused model's
|
|
178
|
-
supported effort level, Enter confirms, Ctrl+R refreshes the catalog,
|
|
179
|
-
|
|
179
|
+
supported effort level, Enter confirms, Ctrl+R refreshes the catalog, `E`
|
|
180
|
+
edits the provider endpoint, `K` adds or replaces its API key, and Esc returns
|
|
181
|
+
to providers. OpenRouter entries show pricing tier, context size,
|
|
180
182
|
tool/reasoning capability, compact names, and the exact ID for the focused
|
|
181
183
|
entry. Its endpoint-scoped catalog is reused for five minutes, while Ctrl+R
|
|
182
184
|
forces an immediate live refresh; a failed forced refresh never silently
|
|
@@ -230,6 +232,7 @@ OPENAI_COMPATIBLE_API_KEY=...
|
|
|
230
232
|
ANTHROPIC_API_KEY=...
|
|
231
233
|
GEMINI_API_KEY=...
|
|
232
234
|
OPENROUTER_API_KEY=...
|
|
235
|
+
NVIDIA_API_KEY=...
|
|
233
236
|
OLLAMA_API_KEY=... # optional for authenticated Ollama gateways
|
|
234
237
|
LMSTUDIO_API_KEY=... # optional when required by the endpoint
|
|
235
238
|
LLAMA_CPP_API_KEY=... # optional when required by the endpoint
|
|
@@ -237,6 +240,13 @@ VLLM_API_KEY=... # optional when required by the endpoint
|
|
|
237
240
|
UNSLOTH_API_KEY=...
|
|
238
241
|
```
|
|
239
242
|
|
|
243
|
+
NVIDIA NIM defaults to `https://integrate.api.nvidia.com/v1`, discovers the
|
|
244
|
+
connected account's models live, and accepts a provider-scoped override for an
|
|
245
|
+
enterprise or self-hosted NIM. Generic `openai-compatible` authentication is
|
|
246
|
+
optional: `ur connect openai-compatible` or the picker's `K` key stores a
|
|
247
|
+
credential when the chosen gateway needs one, without breaking anonymous
|
|
248
|
+
local endpoints.
|
|
249
|
+
|
|
240
250
|
Unsloth is an inference-provider integration only. Start Unsloth Studio and
|
|
241
251
|
load the model outside UR, connect its generated key with `ur connect unsloth`,
|
|
242
252
|
then select a model discovered from `http://localhost:8888/v1` (or your
|
|
@@ -504,6 +514,15 @@ before the agent can declare the task complete. A failing command surfaces
|
|
|
504
514
|
to the model as a structured reminder with the command name and the trimmed
|
|
505
515
|
stdout/stderr.
|
|
506
516
|
|
|
517
|
+
## Shell command deadlines
|
|
518
|
+
|
|
519
|
+
Set the Bash tool's `timeout` input in milliseconds for a whole-command
|
|
520
|
+
deadline. If a generated command uses the common Linux form `timeout 60 cmd`,
|
|
521
|
+
UR also makes that command work on macOS: it uses Homebrew `gtimeout` when
|
|
522
|
+
installed, otherwise supplies an in-process compatibility implementation with
|
|
523
|
+
process-group cleanup and GNU-style status 124 on expiry. No package install or
|
|
524
|
+
shell-profile change is required. Native Linux `timeout` remains untouched.
|
|
525
|
+
|
|
507
526
|
## Project Safety Policy
|
|
508
527
|
|
|
509
528
|
`ur safety` exposes the project shell safety policy:
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -200,10 +200,16 @@ ur provider doctor <provider-id>
|
|
|
200
200
|
curl http://localhost:11434/api/tags # Ollama
|
|
201
201
|
curl http://localhost:1234/v1/models # LM Studio (llama.cpp: 8080, vLLM: 8000)
|
|
202
202
|
curl -H "Authorization: Bearer $UNSLOTH_API_KEY" http://localhost:8888/v1/models
|
|
203
|
+
curl -H "Authorization: Bearer $NVIDIA_API_KEY" https://integrate.api.nvidia.com/v1/models
|
|
203
204
|
ur connect openai-api # store an API key securely
|
|
204
205
|
ur provider doctor
|
|
205
206
|
```
|
|
206
207
|
|
|
208
|
+
For an authenticated generic gateway, run `ur connect openai-compatible` or
|
|
209
|
+
press `K` on its `/model` screen; the key is optional and stored separately
|
|
210
|
+
from `OPENAI_API_KEY`. NVIDIA NIM uses `ur connect nvidia-nim` and keeps any
|
|
211
|
+
custom `base_url` scoped to that provider.
|
|
212
|
+
|
|
207
213
|
### Unsloth is selected but unavailable
|
|
208
214
|
|
|
209
215
|
- Likely cause: Studio is not running, no model is loaded, its generated API
|
package/docs/USAGE.md
CHANGED
|
@@ -207,7 +207,7 @@ Use `ur provider status` or `ur provider doctor <provider>` to see provider
|
|
|
207
207
|
kind, external CLI usage, native tool/streaming support, and the boundary text.
|
|
208
208
|
|
|
209
209
|
Provider values accept canonical IDs and common aliases. For example,
|
|
210
|
-
`openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `ollama`,
|
|
210
|
+
`openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim`, `ollama`,
|
|
211
211
|
`lmstudio`, `llama.cpp`, `vllm`, and `unsloth` are UR-native runtime providers, and
|
|
212
212
|
`codex-cli` (`chatgpt`), `claude-code-cli` (`claude`), `gemini-cli` (`gemini`),
|
|
213
213
|
and `antigravity-cli` (`agy`) are subscription CLI providers.
|
|
@@ -215,7 +215,7 @@ and `antigravity-cli` (`agy`) are subscription CLI providers.
|
|
|
215
215
|
API modes are explicit. Keys are read from a key stored via
|
|
216
216
|
`ur connect <provider>` (OS keychain) or from the environment variables
|
|
217
217
|
`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`,
|
|
218
|
-
`OPENROUTER_API_KEY`, and `UNSLOTH_API_KEY`. Subscription CLIs are optional, never required
|
|
218
|
+
`OPENROUTER_API_KEY`, `NVIDIA_API_KEY`, and `UNSLOTH_API_KEY`. Subscription CLIs are optional, never required
|
|
219
219
|
dependencies, and never used as a silent fallback. UR-Nexus never scrapes
|
|
220
220
|
browser sessions, extracts OAuth tokens, or bypasses provider restrictions.
|
|
221
221
|
OpenAI-compatible local or cloud endpoints use `base_url` plus `model`.
|
|
@@ -224,7 +224,7 @@ and is inference-only: UR does not manage Unsloth and disables its server-side
|
|
|
224
224
|
tools while retaining standard function calls inside UR's guarded tool loop.
|
|
225
225
|
|
|
226
226
|
UR stores `base_url` per provider. You can set different addresses for
|
|
227
|
-
Ollama, LM Studio, llama.cpp, vLLM, and
|
|
227
|
+
Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and NVIDIA NIM once, then switch providers without
|
|
228
228
|
re-entering any of them. `ur config get base_url` reports the active provider's
|
|
229
229
|
saved scoped override when one exists; use `ur provider status` or
|
|
230
230
|
`ur provider doctor <provider>` to inspect the effective endpoint.
|
|
@@ -233,10 +233,17 @@ without making it active first. The `/model` picker offers the same endpoint
|
|
|
233
233
|
entry flow for a disconnected local/server provider.
|
|
234
234
|
|
|
235
235
|
Use `/model` in an interactive session to select provider first and model
|
|
236
|
-
second. OpenAI API, Claude API, Gemini API, OpenRouter, Ollama, and
|
|
236
|
+
second. OpenAI API, Claude API, Gemini API, OpenRouter, NVIDIA NIM, Ollama, and
|
|
237
237
|
OpenAI-compatible endpoints stay separate; a subscription login does not grant
|
|
238
238
|
API-key access, and an API key does not grant subscription CLI access.
|
|
239
239
|
|
|
240
|
+
NVIDIA NIM uses the build.nvidia.com key and hosted
|
|
241
|
+
`https://integrate.api.nvidia.com/v1` endpoint by default. Connect it with
|
|
242
|
+
`ur connect nvidia-nim`; use `ur config set base_url nvidia-nim <url>` for a
|
|
243
|
+
different NIM deployment. On the `/model` model screen, `K` adds or replaces a
|
|
244
|
+
provider API key and `E` edits its endpoint. This also makes optional
|
|
245
|
+
authentication practical for generic OpenAI-compatible gateways.
|
|
246
|
+
|
|
240
247
|
## Project Instructions
|
|
241
248
|
|
|
242
249
|
Add a `UR.md` file to the repository root for team-shared instructions. UR loads it as project context.
|
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.3 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### 0.0 Redteam mode and Reverse Skills (1.81.0)
|
|
@@ -179,6 +179,29 @@ file. Expected: UR asks once whether to run the detected compile/test/lint
|
|
|
179
179
|
commands. After answering, the same approval question is not shown again. A
|
|
180
180
|
separate user task that edits files may ask once for its own verification.
|
|
181
181
|
|
|
182
|
+
### 0.1.3 Portable deadlines and provider tool images (1.84.2)
|
|
183
|
+
|
|
184
|
+
Run the deterministic adapter and shell coverage:
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
bun test test/bashCommandExecution.test.ts \
|
|
188
|
+
test/providerNvidiaNim.test.ts \
|
|
189
|
+
test/providerMultimodal.test.ts \
|
|
190
|
+
test/openaiResponses.test.ts \
|
|
191
|
+
test/ollamaToolResultImages.test.ts
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Expected: macOS can execute `timeout 0.1 …` without GNU coreutils and reports
|
|
195
|
+
124 when the deadline expires. Image-bearing tool results retain their text and
|
|
196
|
+
image bytes across OpenAI Chat/Responses, Anthropic, Gemini, OpenRouter,
|
|
197
|
+
NVIDIA NIM, Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and generic OpenAI-compatible
|
|
198
|
+
request shapes.
|
|
199
|
+
|
|
200
|
+
The NVIDIA fixture also verifies hosted/default and overridden endpoints,
|
|
201
|
+
Bearer discovery, native dispatch, documented effort aliases, and no Ultra on
|
|
202
|
+
an unknown model. In `/model`, select `openai-compatible` and verify `K` can
|
|
203
|
+
add or replace its optional key while `E` continues to edit only its endpoint.
|
|
204
|
+
|
|
182
205
|
## 0.2 Permission safety and context pack (1.19.0)
|
|
183
206
|
|
|
184
207
|
In a project checkout:
|
package/docs/providers.md
CHANGED
|
@@ -37,6 +37,7 @@ multimodal input, external CLI boundary, and sandbox scope:
|
|
|
37
37
|
| Claude API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:anthropic` | `ANTHROPIC_API_KEY` |
|
|
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
|
+
| NVIDIA NIM | hosted/server API | UR-native | no | yes | yes | model-dependent | UR Bash/File sandbox | `api:nvidia-nim` | `NVIDIA_API_KEY`; configurable NIM endpoint |
|
|
40
41
|
| OpenAI-compatible | server/API | UR-native | no | yes | yes | endpoint-dependent | UR Bash/File sandbox | `openai-compatible` | optional `OPENAI_COMPATIBLE_API_KEY`; never reuses `OPENAI_API_KEY` |
|
|
41
42
|
| Ollama | local/server | UR-native | no | yes | yes | yes* | UR Bash/File sandbox | `ollama` | configured local, LAN, or hosted endpoint; optional `OLLAMA_API_KEY` |
|
|
42
43
|
| LM Studio | local/server | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `openai-compatible:lmstudio` | configured endpoint; optional `LMSTUDIO_API_KEY` |
|
|
@@ -69,6 +70,17 @@ or `ollama show <model>`.
|
|
|
69
70
|
official CLI, so image blocks are not forwarded, and UR-native tool/streaming/
|
|
70
71
|
sandbox guarantees stop at UR-run tools and final UR output.
|
|
71
72
|
|
|
73
|
+
All UR-native adapters preserve images returned by tools without putting image
|
|
74
|
+
content into a wire field that rejects it. Anthropic keeps the image inside its
|
|
75
|
+
native `tool_result`; OpenAI Responses uses rich function-call output; Gemini
|
|
76
|
+
nests `inlineData` in the matching function response; Ollama uses the
|
|
77
|
+
following native user message; and OpenAI Chat Completions, OpenRouter, NVIDIA
|
|
78
|
+
NIM, LM Studio, llama.cpp, vLLM, Unsloth, and generic compatible endpoints emit the
|
|
79
|
+
required textual `role: tool` message followed immediately by a multimodal
|
|
80
|
+
`role: user` message. This preserves tool-call ordering and every image byte.
|
|
81
|
+
It does not turn a text-only model into a vision model: select a model whose
|
|
82
|
+
live provider metadata or runtime supports image input.
|
|
83
|
+
|
|
72
84
|
Tool search (deferred tool loading) is disabled on every provider above. It
|
|
73
85
|
depends on `tool_reference` content blocks being expanded into tool definitions
|
|
74
86
|
by the API, which is a URHQ-native beta feature with no equivalent on a local
|
|
@@ -149,7 +161,7 @@ migrated to the previously active provider on the first provider switch or
|
|
|
149
161
|
scoped base-URL write.
|
|
150
162
|
|
|
151
163
|
The override is not limited to local runtimes. OpenAI API, Anthropic API,
|
|
152
|
-
Gemini API, and
|
|
164
|
+
Gemini API, OpenRouter, and NVIDIA NIM can each target a separate compatible gateway using
|
|
153
165
|
the same command. Their official URLs are defaults, not hardcoded dispatch
|
|
154
166
|
destinations; model discovery and inference use the selected provider's saved
|
|
155
167
|
URL. Subscription CLI providers remain vendor-managed and do not accept a base
|
|
@@ -200,6 +212,12 @@ or has unknown capability metadata. Arbitrary
|
|
|
200
212
|
labels such as `deep` still require an explicit provider alias because UR
|
|
201
213
|
cannot infer their rank.
|
|
202
214
|
|
|
215
|
+
NVIDIA NIM is live-discovery first. UR enriches a discovered model only when
|
|
216
|
+
NVIDIA's current model API reference documents that exact model's
|
|
217
|
+
`reasoning_effort` values. Documented `none` appears as Minimal and `max`
|
|
218
|
+
appears as Ultra while the request preserves NVIDIA's wire values. An unknown
|
|
219
|
+
NIM model never inherits an invented graded ladder.
|
|
220
|
+
|
|
203
221
|
For an unknown or newly released model, UR waits for provider-authored model
|
|
204
222
|
metadata or a supported model-scoped probe before adding thinking parameters.
|
|
205
223
|
If the provider does not establish support, thinking stays off for request
|
|
@@ -249,15 +267,18 @@ forced refresh fails. Interactive requests default to OpenRouter's latency
|
|
|
249
267
|
sorting, promote UR's stable session ID for sticky routing, and preserve safe
|
|
250
268
|
provider prompt-cache markers. Explicit routing preferences and the `:nitro`,
|
|
251
269
|
`:floor`, and `:exacto` model variants remain authoritative. API-key entry for
|
|
252
|
-
OpenAI, Claude, Gemini,
|
|
253
|
-
is
|
|
270
|
+
OpenAI, Claude, Gemini, OpenRouter, NVIDIA NIM, and authenticated compatible
|
|
271
|
+
endpoints is a single aligned masked row; the key is stored in the OS keychain
|
|
272
|
+
flow and is never written to settings. On the model screen, `K` adds or
|
|
273
|
+
replaces the selected HTTP provider's key and `E` edits its endpoint. Generic
|
|
274
|
+
OpenAI-compatible endpoints may remain anonymous.
|
|
254
275
|
|
|
255
276
|
### Token counting
|
|
256
277
|
|
|
257
278
|
UR uses each provider's non-generating count endpoint when one covers the full
|
|
258
279
|
request: OpenAI Responses input tokens, Anthropic Messages token counting,
|
|
259
|
-
Gemini `countTokens`, llama.cpp chat input tokens, and vLLM Messages
|
|
260
|
-
counting. Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
|
|
280
|
+
Gemini `countTokens`, llama.cpp chat input tokens, and vLLM/NVIDIA NIM Messages
|
|
281
|
+
token counting. Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
|
|
261
282
|
provider-wire local estimate because those runtimes do not share a dependable
|
|
262
283
|
preflight tokenizer for complete chat history plus tools. UR never launches a
|
|
263
284
|
hidden completion for token counting. If a native count call is unavailable,
|
|
@@ -288,7 +309,7 @@ error, not a successful `Did 0 searches` result.
|
|
|
288
309
|
When you select a UR-native provider and model, every agent request is routed
|
|
289
310
|
through that provider's backend:
|
|
290
311
|
|
|
291
|
-
- **API providers** make direct HTTP calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions` by default or `/v1/responses` when explicitly selected; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter
|
|
312
|
+
- **API providers** make direct HTTP calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions` by default or `/v1/responses` when explicitly selected; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter and NVIDIA NIM use their OpenAI-compatible chat endpoints.
|
|
292
313
|
- **Local/server providers** connect to the configured local or OpenAI-compatible endpoint (`/v1/chat/completions` for LM Studio, llama.cpp and vLLM; the native tags/chat API for Ollama)
|
|
293
314
|
- **Subscription CLI providers** (Codex CLI, Claude Code, Gemini CLI,
|
|
294
315
|
Antigravity) dispatch the turn through the vendor's official CLI using your
|
|
@@ -399,6 +420,7 @@ ur config set provider anthropic-api
|
|
|
399
420
|
| --- | --- | --- |
|
|
400
421
|
| 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 |
|
|
401
422
|
| 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 | Live `/models` discovery from the hosted or configured NIM endpoint; no stale offline model catalog | live |
|
|
402
424
|
| Local/server providers (ollama, lmstudio, llama.cpp, vllm, unsloth) | Dynamic discovery from the selected provider endpoint | live |
|
|
403
425
|
| OpenAI-compatible | Dynamic discovery from configured endpoint | live |
|
|
404
426
|
| 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 |
|
|
@@ -425,6 +447,7 @@ provider's successful live catalog remains authoritative for that account.
|
|
|
425
447
|
- `anthropic-api` — requires `ANTHROPIC_API_KEY`
|
|
426
448
|
- `gemini-api` — requires `GEMINI_API_KEY`
|
|
427
449
|
- `openrouter` — requires `OPENROUTER_API_KEY`
|
|
450
|
+
- `nvidia-nim` — requires `NVIDIA_API_KEY` for build.nvidia.com; endpoint is configurable
|
|
428
451
|
|
|
429
452
|
**Local/server providers** require local runtime or endpoint:
|
|
430
453
|
- `ollama` — configurable local, LAN, or hosted Ollama server
|
|
@@ -557,6 +580,7 @@ Provider config and doctor commands accept canonical IDs and common aliases:
|
|
|
557
580
|
| `anthropic-api` | `anthropic`, `claude api` |
|
|
558
581
|
| `gemini-api` | `gemini api`, `google gemini api` |
|
|
559
582
|
| `openrouter` | `openrouter api` |
|
|
583
|
+
| `nvidia-nim` | `nvidia`, `NVIDIA Build`, `nvidia api`, `nim` |
|
|
560
584
|
| `openai-compatible` | `compatible`, `openai compatible` |
|
|
561
585
|
| `ollama` | `ollama local` |
|
|
562
586
|
| `lmstudio` | `LM Studio`, `lm-studio` |
|
|
@@ -597,6 +621,7 @@ OPENAI_COMPATIBLE_API_KEY=...
|
|
|
597
621
|
ANTHROPIC_API_KEY=...
|
|
598
622
|
GEMINI_API_KEY=...
|
|
599
623
|
OPENROUTER_API_KEY=...
|
|
624
|
+
NVIDIA_API_KEY=...
|
|
600
625
|
OLLAMA_API_KEY=... # optional for authenticated Ollama gateways
|
|
601
626
|
LMSTUDIO_API_KEY=... # optional when the endpoint requires it
|
|
602
627
|
LLAMA_CPP_API_KEY=... # optional when the endpoint requires it
|
|
@@ -616,6 +641,32 @@ ur config set model local-model-name
|
|
|
616
641
|
`OPENAI_API_KEY`; selecting an arbitrary compatible base URL never forwards
|
|
617
642
|
the OpenAI credential to that host.
|
|
618
643
|
|
|
644
|
+
The compatible provider's key is optional and provider-scoped. Add or replace
|
|
645
|
+
it with `ur connect openai-compatible`, `/connect openai-compatible`, or `K`
|
|
646
|
+
in the `/model` model screen. Anonymous endpoints continue to work without it.
|
|
647
|
+
|
|
648
|
+
### NVIDIA NIM / build.nvidia.com
|
|
649
|
+
|
|
650
|
+
NVIDIA NIM is a UR-native, OpenAI-compatible provider with live discovery:
|
|
651
|
+
|
|
652
|
+
```sh
|
|
653
|
+
echo "$NVIDIA_API_KEY" | ur connect nvidia-nim
|
|
654
|
+
ur config set provider nvidia-nim
|
|
655
|
+
ur provider doctor nvidia-nim
|
|
656
|
+
# Optional self-hosted/enterprise gateway:
|
|
657
|
+
ur config set base_url nvidia-nim https://nim-gateway.example/v1
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
The default is `https://integrate.api.nvidia.com/v1`. UR calls `/models`,
|
|
661
|
+
`/chat/completions`, and, when available, `/messages/count_tokens`; native
|
|
662
|
+
count failure falls back to a provider-wire estimate and never launches a
|
|
663
|
+
hidden completion. Streaming, standard tool calls, and image input use the
|
|
664
|
+
same OpenAI-compatible adapter. Vision and tools remain model-dependent. For
|
|
665
|
+
documented Nemotron coding-agent models, UR includes NVIDIA's
|
|
666
|
+
`force_nonempty_content` template option when tools are present. See NVIDIA's
|
|
667
|
+
[NIM LLM API reference](https://docs.api.nvidia.com/nim/reference/llm-apis)
|
|
668
|
+
and [NIM function-calling API](https://docs.nvidia.com/nim/large-language-models/latest/function-calling.html).
|
|
669
|
+
|
|
619
670
|
Local/server providers use their normal endpoints:
|
|
620
671
|
|
|
621
672
|
- Ollama: `http://localhost:11434`
|
|
@@ -672,6 +723,7 @@ Required variables:
|
|
|
672
723
|
| --- | --- | --- |
|
|
673
724
|
| OpenAI-compatible | `OPENAI_COMPATIBLE_BASE_URL`, `OPENAI_COMPATIBLE_MODEL` | `OPENAI_COMPATIBLE_API_KEY` |
|
|
674
725
|
| Unsloth | `UNSLOTH_API_KEY`, `UNSLOTH_MODEL` | `UNSLOTH_BASE_URL` (defaults to `http://localhost:8888/v1`) |
|
|
726
|
+
| NVIDIA NIM | `NVIDIA_API_KEY`, `NVIDIA_MODEL` | `NVIDIA_BASE_URL` (defaults to `https://integrate.api.nvidia.com/v1`) |
|
|
675
727
|
| OpenAI | `OPENAI_API_KEY`, `OPENAI_MODEL` | `OPENAI_BASE_URL` |
|
|
676
728
|
| OpenRouter | `OPENROUTER_API_KEY`, `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` |
|
|
677
729
|
| Anthropic | `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL` | `ANTHROPIC_BASE_URL` |
|
package/documentation/app.js
CHANGED
|
@@ -68,8 +68,8 @@ const featureGroups = [
|
|
|
68
68
|
{
|
|
69
69
|
title: 'Providers and auth',
|
|
70
70
|
tags: ['subscription', 'API', 'local', 'effort', 'status bar'],
|
|
71
|
-
text: 'UR-native API/local/OpenAI-compatible runtimes, provider-scoped endpoints, provider-only Unsloth inference, capability-driven reasoning effort, responsive OpenRouter routing, first-class subscription CLI providers dispatched through the official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
|
|
72
|
-
commands: ['ur provider list', 'ur provider status', 'ur provider doctor agy', 'ur connect status', 'ur config set provider openai-api', 'ur config set provider ollama', 'ur config set base_url llama.cpp http://localhost:9931/v1', '/effort ultra', '/thinking on'],
|
|
71
|
+
text: 'UR-native API/local/OpenAI-compatible runtimes, provider-scoped endpoints, live NVIDIA NIM and provider-only Unsloth inference, optional compatible-gateway keys, capability-driven reasoning effort, responsive OpenRouter routing, first-class subscription CLI providers dispatched through the official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
|
|
72
|
+
commands: ['ur provider list', 'ur provider status', 'ur provider doctor agy', 'ur connect status', 'ur config set provider nvidia-nim', 'ur config set provider openai-api', 'ur config set provider ollama', 'ur config set base_url llama.cpp http://localhost:9931/v1', '/effort ultra', '/thinking on'],
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
title: 'Security and operations',
|
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.3</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>
|
|
@@ -165,6 +165,7 @@ ur provider doctor agy</code></pre>
|
|
|
165
165
|
<h3>API and local providers</h3>
|
|
166
166
|
<pre><code>ur config set provider openai-compatible
|
|
167
167
|
ur config set provider openai-api
|
|
168
|
+
ur config set provider nvidia-nim
|
|
168
169
|
ur config set base_url ollama http://localhost:11434
|
|
169
170
|
ur config set base_url llama.cpp http://localhost:9931/v1
|
|
170
171
|
ur config set provider unsloth
|
|
@@ -172,7 +173,7 @@ ur config set model qwen3-coder:480b-cloud
|
|
|
172
173
|
ur config set provider.fallback ollama
|
|
173
174
|
ur config set openai_transport responses
|
|
174
175
|
ur config set responses.store false</code></pre>
|
|
175
|
-
<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, and API gateways restores the matching address. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Unsloth is an authenticated inference provider only.</p>
|
|
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>
|
|
176
177
|
</article>
|
|
177
178
|
<article>
|
|
178
179
|
<h3>Capability-driven reasoning effort</h3>
|
|
@@ -188,6 +189,25 @@ ur --model kimi-k3:cloud --effort high
|
|
|
188
189
|
/model # cached catalog; Ctrl+R forces live refresh</code></pre>
|
|
189
190
|
<p>The endpoint-scoped model catalog is reused for five minutes, while forced refresh never substitutes stale data. Interactive requests prefer OpenRouter latency routing, a stable session ID, and provider-authored prompt-cache markers; explicit routing preferences and model variants still win.</p>
|
|
190
191
|
</article>
|
|
192
|
+
<article>
|
|
193
|
+
<h3>NVIDIA NIM and compatible API keys</h3>
|
|
194
|
+
<pre><code>ur connect nvidia-nim
|
|
195
|
+
ur config set provider nvidia-nim
|
|
196
|
+
ur config set base_url nvidia-nim https://integrate.api.nvidia.com/v1
|
|
197
|
+
/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
|
+
</article>
|
|
200
|
+
<article>
|
|
201
|
+
<h3>Portable shell deadlines</h3>
|
|
202
|
+
<pre><code>timeout 60 long-command
|
|
203
|
+
# or use the Bash tool timeout field in milliseconds</code></pre>
|
|
204
|
+
<p>Generated Linux-style timeout commands also work on macOS. UR uses Homebrew <code>gtimeout</code> when present or supplies a process-group-aware compatibility command with status 124 on expiry; it does not modify your shell profile.</p>
|
|
205
|
+
</article>
|
|
206
|
+
<article>
|
|
207
|
+
<h3>Tool images across providers</h3>
|
|
208
|
+
<pre><code>Computer screenshot → tool result → vision model</code></pre>
|
|
209
|
+
<p>Every UR-native provider preserves image-bearing tool output in its valid wire shape. OpenRouter, NVIDIA NIM, and other Chat-Completions backends keep the tool result textual and send the image in the next multimodal user turn; Gemini, OpenAI Responses, Anthropic, and Ollama use their native rich forms. Vision still depends on the selected model.</p>
|
|
210
|
+
</article>
|
|
191
211
|
<article>
|
|
192
212
|
<h3>Status bar and updates</h3>
|
|
193
213
|
<pre><code>Ollama | llama3 | ask | main | update available</code></pre>
|
|
@@ -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.3",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED