ur-agent 1.84.1 → 1.84.2

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 CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.84.2
4
+
5
+ - Added NVIDIA NIM as a real UR-native provider for build.nvidia.com. It uses
6
+ NVIDIA's hosted `https://integrate.api.nvidia.com/v1` default, live model
7
+ discovery, Bearer authentication from `NVIDIA_API_KEY` or `ur connect
8
+ nvidia-nim`, configurable provider-scoped endpoints, streaming, tool calls,
9
+ multimodal input, NIM token counting with a local-estimate fallback, and an
10
+ optional live smoke target. Only NVIDIA-documented per-model effort ladders
11
+ are overlaid; future/unknown models do not inherit Ultra.
12
+ - Made authentication fully usable on the generic `openai-compatible`
13
+ provider. `/connect openai-compatible` stores its optional key, and the
14
+ `/model` screen now exposes `K API key` to add or replace one without making
15
+ anonymous local endpoints key-required. Stored endpoints and credentials
16
+ remain provider-scoped across switches.
17
+ - Added a real GNU-compatible `timeout` command inside UR's spawned macOS
18
+ shell when neither native `timeout` nor Homebrew `gtimeout` is available.
19
+ It uses the Bash tool's current Node/Bun runtime, supervises an isolated
20
+ process group, supports the common GNU duration/signal/kill-after flags, and
21
+ returns status 124 on expiry. The Bash prompt now prefers its native
22
+ millisecond timeout field, while generated Linux-style commands remain
23
+ executable on macOS instead of failing with `command not found: timeout`.
24
+ - Made image-bearing tool results portable across every UR-native provider.
25
+ OpenAI Chat Completions, OpenRouter, NVIDIA NIM, LM Studio, llama.cpp, vLLM, Unsloth,
26
+ and generic compatible endpoints keep a textual `role: tool` result and send
27
+ the image bytes in the immediately following multimodal user turn; Gemini
28
+ nests the image parts in its function response; OpenAI Responses, Anthropic,
29
+ and Ollama retain their native rich-result paths. Added a provider matrix and
30
+ real shell deadline regressions so screenshots are neither rejected nor
31
+ silently discarded.
32
+
3
33
  ## 1.84.1
4
34
 
5
35
  - Made dynamic reasoning discovery capability-truthful across local and
package/README.md CHANGED
@@ -288,6 +288,7 @@ ur config set provider openai-api
288
288
  ur config set provider anthropic-api
289
289
  ur config set provider gemini-api
290
290
  ur config set provider openrouter
291
+ ur config set provider nvidia-nim
291
292
  ur config set provider unsloth
292
293
  ur config set model qwen2.5-coder:7b
293
294
  ur provider select-model ollama qwen2.5-coder:7b --json
@@ -304,7 +305,7 @@ select the recovery provider explicitly with `ur config set provider <id>`.
304
305
  provider before the URL to configure it without switching first, for example
305
306
  `ur config set base_url llama.cpp http://localhost:9931/v1`. UR remembers each
306
307
  provider's address independently, so switching among Ollama, LM Studio,
307
- llama.cpp, vLLM, Unsloth, or another compatible endpoint restores that
308
+ llama.cpp, vLLM, Unsloth, NVIDIA NIM, or another compatible endpoint restores that
308
309
  provider's last URL automatically. Existing single-URL settings are migrated
309
310
  to the previously active provider on the first provider switch or scoped
310
311
  base-URL write.
@@ -328,7 +329,7 @@ when `UR_OPENAI_RESPONSES_STATE_KEY` contains a 32-byte encryption key. Return
328
329
  to the default with `ur config set openai_transport chat-completions`.
329
330
 
330
331
  Provider config accepts canonical IDs and common aliases. Examples:
331
- `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `ollama`,
332
+ `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim` (`NVIDIA Build`), `ollama`,
332
333
  `lmstudio`, `LM Studio`, `llama.cpp`, `vllm`, `unsloth` (`Unsloth Studio`), and the subscription CLIs
333
334
  `codex-cli` (`chatgpt`), `claude-code-cli` (`claude`), `gemini-cli` (`gemini`),
334
335
  and `antigravity-cli` (`agy`). Use quotes for shell values with spaces.
@@ -348,6 +349,7 @@ ur connect logout openai-api # clear a stored key
348
349
  | Claude API | API key | UR-native | `ANTHROPIC_API_KEY` or `ur connect anthropic-api` |
349
350
  | Gemini API | API key | UR-native | `GEMINI_API_KEY` or `ur connect gemini-api` |
350
351
  | OpenRouter | API/router | UR-native | `OPENROUTER_API_KEY` or `ur connect openrouter` |
352
+ | NVIDIA NIM | hosted/server API | UR-native | `NVIDIA_API_KEY` or `ur connect nvidia-nim`; configurable `base_url` |
351
353
  | Ollama | local/server | UR-native | configurable local, LAN, or hosted endpoint; optional `OLLAMA_API_KEY` |
352
354
  | LM Studio | local/server | UR-native | configurable endpoint; optional `LMSTUDIO_API_KEY` |
353
355
  | llama.cpp | local/server | UR-native | configurable endpoint; optional `LLAMA_CPP_API_KEY` |
@@ -370,7 +372,7 @@ In the interactive app, `/model` is a two-step, provider-first picker:
370
372
  by source: `live` (discovered from the endpoint), `cache` (last discovery),
371
373
  `static` (predefined), or `unavailable` after a failed discovery with no
372
374
  fallback. Local/server providers (Ollama, LM Studio,
373
- llama.cpp, vLLM, Unsloth) and OpenAI-compatible endpoints are discovered live; API
375
+ llama.cpp, vLLM, Unsloth) and OpenAI-compatible endpoints, including NVIDIA NIM, are discovered live; API
374
376
  providers use live discovery from their `/models` endpoint once a key is
375
377
  connected (with a curated fallback list before that). Subscription CLIs show
376
378
  their curated model list because the official CLIs expose no models API. The
@@ -420,7 +422,7 @@ In the interactive app, `/model` is a two-step, provider-first picker:
420
422
  provider's address untouched.
421
423
 
422
424
  Model lists never cross providers: OpenAI API, Claude API, Gemini API,
423
- OpenRouter, Ollama, and OpenAI-compatible local/server endpoints are separate
425
+ OpenRouter, NVIDIA NIM, Ollama, and OpenAI-compatible local/server endpoints are separate
424
426
  access paths. API keys, local runtimes, and subscription logins are not
425
427
  interchangeable. The provider/model pair is validated before it is saved and
426
428
  again before every request; changing provider clears an incompatible model.
@@ -437,8 +439,9 @@ identity line in the system prompt reflects it too:
437
439
  - **API** providers call each service in its native wire format — Anthropic
438
440
  `x-api-key` + `anthropic-version` on `/v1/messages`, OpenAI `Bearer` on
439
441
  `/v1/chat/completions` by default or `/v1/responses` when explicitly
440
- selected, Gemini `x-goog-api-key` on `:generateContent`, and OpenRouter on its
441
- OpenAI-compatible chat endpoint.
442
+ selected, Gemini `x-goog-api-key` on `:generateContent`, OpenRouter on its
443
+ OpenAI-compatible chat endpoint, and NVIDIA NIM on its official hosted or
444
+ user-selected OpenAI-compatible endpoint.
442
445
  - **Local/server** providers call the configured endpoint (`/v1/chat/completions`
443
446
  for LM Studio/llama.cpp/vLLM/Unsloth; the native API for Ollama). Unsloth is
444
447
  provider-only: UR never starts, installs, updates, trains, or loads models in
@@ -454,6 +457,15 @@ identity line in the system prompt reflects it too:
454
457
  subscription backend is configured, `/model` marks it unavailable and asks you
455
458
  to choose a connected local, server, or API provider.
456
459
 
460
+ Image-bearing tool results use each UR-native provider's valid multimodal wire
461
+ shape. OpenAI Chat Completions, OpenRouter, NVIDIA NIM, LM Studio, llama.cpp,
462
+ vLLM, Unsloth, and generic compatible endpoints keep the tool response textual and
463
+ place its image in the immediately following user turn; Gemini nests the image
464
+ parts in its function response; OpenAI Responses, Anthropic, and Ollama use their
465
+ native rich-result forms. The selected model must still support vision.
466
+ External subscription CLIs remain text-only because their official prompt
467
+ interfaces do not expose a portable binary-image channel.
468
+
457
469
  Ollama is used only when Ollama is selected. There is no silent cross-provider
458
470
  fallback: if dispatch fails, UR reports the selected provider, model, and runtime
459
471
  backend. Use `ur provider status` (or `ur provider doctor <id>`) to inspect the