ur-agent 1.84.0 → 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,51 @@
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
+
33
+ ## 1.84.1
34
+
35
+ - Made dynamic reasoning discovery capability-truthful across local and
36
+ OpenAI-compatible providers. vLLM now uses its non-generating server-info
37
+ contract to expose `minimal→none|low|medium|high` only when a reasoning
38
+ parser is configured, and the adapter serializes all provider-authored effort
39
+ aliases rather than translating Ultra alone. llama.cpp records its template
40
+ support flag without fabricating a finite level set that the endpoint does
41
+ not publish.
42
+ - Refined Ollama's thinking presentation: a generic `thinking` capability now
43
+ reports thinking support and UR's verified native on/off control without
44
+ claiming the model supports only booleans. Exact graded levels and Ultra
45
+ remain model-scoped and provider-advertised. Added provider-matrix, discovery,
46
+ picker, command-message, and request-wire regression coverage and synchronized
47
+ the public site, user guides, validation guide, and technical specification.
48
+
3
49
  ## 1.84.0
4
50
 
5
51
  - Added production npm marketplace sources with scoped-package and version
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
@@ -379,7 +381,8 @@ In the interactive app, `/model` is a two-step, provider-first picker:
379
381
  In the model catalog, use **Up/Down** to browse. For graded models, the effort row updates to
380
382
  the focused model's capability-backed selectors; use **Left/Right** to cycle
381
383
  only values UR can map to provider-native levels before pressing Enter. For
382
- boolean-thinking models on runtimes with a native two-state mapping (currently
384
+ models with thinking but no advertised graded ladder on runtimes with a native
385
+ two-state mapping (currently
383
386
  Ollama and direct Anthropic), Left selects off, Right selects on, and `t`
384
387
  toggles. The same state is available directly through `/thinking on|off`.
385
388
  Generic OpenAI-compatible runtimes never receive an invented boolean field.
@@ -387,14 +390,21 @@ In the interactive app, `/model` is a two-step, provider-first picker:
387
390
  beyond-high ceiling selector. It appears only when the provider/model
388
391
  advertises `ultra`, `max`, `xhigh`, or an explicit equivalent, and the row
389
392
  shows the exact mapping (for example, `ultra→max`). Models whose graded
390
- ladder tops out at `high`, plus boolean-thinking models, do not get Ultra. A generic
393
+ ladder tops out at `high`, plus models without an advertised beyond-high
394
+ value, do not get Ultra. A generic
391
395
  `max` request resolves visibly to that model's highest supported non-Ultra tier
392
396
  (commonly `max`, `xhigh`, or `high`), and that resolved value is sent to the provider. llama.cpp models
393
397
  are checked lazily through their model-scoped `/props` capability while the
394
- cursor moves. Ollama models are checked through `/api/show`; its `thinking`
395
- capability enables boolean thinking without inventing a graded ladder.
396
- If `/effort max` or another graded request is used for a boolean-only model,
397
- UR enables thinking but reports that no graded level was sent.
398
+ cursor moves. Because current llama.cpp reports support but not the accepted
399
+ level names, that flag alone does not create a graded selector. vLLM is
400
+ checked lazily through `/server_info?config_format=json`; a configured
401
+ reasoning parser enables its documented `none|low|medium|high` Chat
402
+ Completions contract (`minimal→none`) without inventing Ultra. Ollama models
403
+ are checked through `/api/show`; a generic `thinking` capability establishes
404
+ thinking support but not a model-specific ladder, so UR uses Ollama's native
405
+ on/off control unless the endpoint supplies exact levels.
406
+ If `/effort max` or another graded request is used for such a model, UR
407
+ enables thinking but reports that no graded level was sent.
398
408
  GPT-OSS uses its documented `low|medium|high` values, while any other graded
399
409
  values or Ultra aliases must be explicitly present in provider metadata.
400
410
  The resolved value is sent through Ollama's native `think` field. OpenRouter additionally
@@ -412,7 +422,7 @@ In the interactive app, `/model` is a two-step, provider-first picker:
412
422
  provider's address untouched.
413
423
 
414
424
  Model lists never cross providers: OpenAI API, Claude API, Gemini API,
415
- OpenRouter, Ollama, and OpenAI-compatible local/server endpoints are separate
425
+ OpenRouter, NVIDIA NIM, Ollama, and OpenAI-compatible local/server endpoints are separate
416
426
  access paths. API keys, local runtimes, and subscription logins are not
417
427
  interchangeable. The provider/model pair is validated before it is saved and
418
428
  again before every request; changing provider clears an incompatible model.
@@ -429,8 +439,9 @@ identity line in the system prompt reflects it too:
429
439
  - **API** providers call each service in its native wire format — Anthropic
430
440
  `x-api-key` + `anthropic-version` on `/v1/messages`, OpenAI `Bearer` on
431
441
  `/v1/chat/completions` by default or `/v1/responses` when explicitly
432
- selected, Gemini `x-goog-api-key` on `:generateContent`, and OpenRouter on its
433
- 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.
434
445
  - **Local/server** providers call the configured endpoint (`/v1/chat/completions`
435
446
  for LM Studio/llama.cpp/vLLM/Unsloth; the native API for Ollama). Unsloth is
436
447
  provider-only: UR never starts, installs, updates, trains, or loads models in
@@ -446,6 +457,15 @@ identity line in the system prompt reflects it too:
446
457
  subscription backend is configured, `/model` marks it unavailable and asks you
447
458
  to choose a connected local, server, or API provider.
448
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
+
449
469
  Ollama is used only when Ollama is selected. There is no silent cross-provider
450
470
  fallback: if dispatch fails, UR reports the selected provider, model, and runtime
451
471
  backend. Use `ur provider status` (or `ur provider doctor <id>`) to inspect the