ur-agent 1.83.2 → 1.84.1

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.
@@ -182,15 +182,25 @@ entry. Its endpoint-scoped catalog is reused for five minutes, while Ctrl+R
182
182
  forces an immediate live refresh; a failed forced refresh never silently
183
183
  displays cached entries. API-provider secret
184
184
  entry stays on one masked row and stores the value through the keychain flow.
185
- Ollama and llama.cpp capabilities are loaded lazily for the focused model from
186
- `/api/show` and `/props`, respectively, so the arrow selector reflects the
187
- actual model rather than a provider-wide guess.
185
+ Ollama, llama.cpp, and vLLM capabilities are loaded lazily for the focused
186
+ model from `/api/show`, `/props`, and `/server_info?config_format=json`,
187
+ respectively, so the arrow selector reflects live runtime evidence rather than
188
+ a provider-wide guess. llama.cpp's current boolean support flag does not name
189
+ accepted levels, while a configured vLLM reasoning parser exposes its
190
+ documented `minimal→none|low|medium|high` mapping.
188
191
 
189
192
  The effort row contains only capability-backed selectors UR can map to native
190
193
  provider values. Ultra appears only when metadata advertises `ultra`, `max`,
191
194
  `xhigh`, or an explicit alias; mappings such as `ultra→max` are shown and sent
192
- exactly. Models that top out at `high`, boolean-thinking models, and unknown
193
- capabilities omit Ultra. See [Reasoning effort](providers.md#reasoning-effort).
195
+ exactly. Models that top out at `high`, models without an advertised
196
+ beyond-high value, and unknown capabilities omit Ultra. See
197
+ [Reasoning effort](providers.md#reasoning-effort).
198
+
199
+ Boolean-thinking models on runtimes with a native toggle expose a two-state
200
+ control instead: Left selects off, Right selects on, and `t` toggles in
201
+ `/model`; `/thinking on|off|status` is the direct command. This updates the live
202
+ session and `alwaysThinkingEnabled`. Generic OpenAI-compatible transports do
203
+ not receive an invented boolean field.
194
204
 
195
205
  The same provider-first picker is mandatory on the first interactive run in a
196
206
  workspace with no model in `.ur/settings.json` or `.ur/settings.local.json`.
@@ -719,6 +729,7 @@ Plugins can add commands, tools, and skills:
719
729
 
720
730
  ```sh
721
731
  ur plugin list
732
+ ur plugin marketplace add npm:@scope/catalog@latest
722
733
  ur plugin search [query] [--capability <name>] [--marketplace <name>] [--installed] [--json]
723
734
  ur plugin show <name-or-name@marketplace> [--json]
724
735
  ur plugin install <plugin>
package/docs/USAGE.md CHANGED
@@ -349,6 +349,10 @@ UR includes slash commands and CLI subcommands for common workflows:
349
349
  `ur plugin search [query]` for ranked cross-catalog discovery and
350
350
  `ur plugin show <name@marketplace>` to inspect provenance and capabilities
351
351
  before installation.
352
+ Add an npm-hosted catalog with
353
+ `ur plugin marketplace add npm:@scope/catalog@latest`; npm sources respect
354
+ the user's registry/authentication configuration and are refreshed with the
355
+ normal marketplace update command.
352
356
  - `ur agents` to list configured agents
353
357
  - `ur agent-trends` to inspect coverage for current agent technology trends
354
358
  - `ur a2a card` to print legacy Agent Card metadata, or
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.83.2 (UR-Nexus)"
22
+ # expected for this release: "1.84.1 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -82,11 +82,18 @@ between models that top out at high, xhigh, max, and native-ultra models; the le
82
82
  selected ceiling must update immediately. Models that top out at high must omit Ultra, while
83
83
  xhigh/max entries must show `ultra→xhigh` or `ultra→max`, and the
84
84
  confirmation must match `/effort status` and the request wire value. For
85
- llama.cpp, verify focus requests
86
- `/props?model=<focused-id>` and that a template reporting
87
- `supports_reasoning_effort: false` has no graded selector. Open the OpenAI API or Claude
88
- API connection flow and verify the masked `API key` label and entry remain on
89
- one horizontal row.
85
+ an Ollama model that advertises thinking without a model-specific ladder, verify that
86
+ Left selects off, Right selects on, `t` toggles, and `/effort max` reports that
87
+ max was not sent while enabling `think: true`; `/thinking off` must produce
88
+ `think: false`. For
89
+ llama.cpp, verify focus requests `/props?model=<focused-id>` and that both an
90
+ unsupported template and a bare `supports_reasoning_effort: true` flag have no
91
+ graded selector unless exact levels are also returned. For vLLM, verify one
92
+ focus request to `/server_info?config_format=json`; a non-empty reasoning parser
93
+ must expose `minimal→none`, `low`, `medium`, and `high`, serialize
94
+ `minimal` as `reasoning_effort: "none"`, and omit Ultra. Open the OpenAI API or
95
+ Claude API connection flow and verify the masked `API key` label and entry
96
+ remain on one horizontal row.
90
97
 
91
98
  Then ask UR to research a current topic with WebSearch and WebFetch. Expected:
92
99
  the auxiliary request stays on the active OpenRouter model, no `modelH` error
package/docs/plugins.md CHANGED
@@ -51,6 +51,50 @@ ur --plugin-dir ./plugins/community/my-plugin
51
51
  Plugins are loaded from local UR-Nexus paths first. Network marketplace installs
52
52
  remain explicit user actions and are subject to plugin policy checks.
53
53
 
54
+ ## Marketplace sources
55
+
56
+ UR accepts GitHub shorthand, Git URLs, direct marketplace JSON URLs, npm
57
+ packages, local files/directories, and inline settings manifests. Add an npm
58
+ marketplace with the explicit `npm:` prefix:
59
+
60
+ ```sh
61
+ ur plugin marketplace add npm:acme-ur-marketplace
62
+ ur plugin marketplace add npm:@acme/ur-marketplace@latest
63
+ ur plugin marketplace add npm:@acme/ur-marketplace@^2.0.0
64
+ ur plugin marketplace update <marketplace-name>
65
+ ```
66
+
67
+ The package must ship `.ur-plugin/marketplace.json`. An omitted version follows
68
+ the registry's `latest` dist-tag; a version, semver range, or another dist-tag
69
+ can be supplied after the package name, using npm's
70
+ [package-spec syntax](https://docs.npmjs.com/cli/v11/using-npm/package-spec/).
71
+ Refreshing the marketplace re-resolves
72
+ that selector. UR uses the installed npm client, so standard `.npmrc`
73
+ authentication, scoped registries, proxies, and registry settings continue to
74
+ work. Package lifecycle scripts are disabled during marketplace download, and
75
+ only the requested package—not its staging dependency tree—is retained.
76
+
77
+ For a private registry selected in project or user settings:
78
+
79
+ ```json
80
+ {
81
+ "extraKnownMarketplaces": {
82
+ "acme": {
83
+ "source": {
84
+ "source": "npm",
85
+ "package": "@acme/ur-marketplace",
86
+ "version": "^2.0.0",
87
+ "registry": "https://registry.example.com"
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ After an install, removal, or external registry-file change,
95
+ `/reload-plugins` clears both plugin discovery caches and the installed-plugin
96
+ snapshot before reloading.
97
+
54
98
  ## Manifest reference
55
99
 
56
100
  A plugin is a directory containing `.ur-plugin/plugin.json`. UR uses a
package/docs/providers.md CHANGED
@@ -182,31 +182,65 @@ For OpenRouter, UR preserves the live `/models` reasoning metadata and sends
182
182
  the unified `reasoning.effort` request. OpenAI-compatible servers receive the
183
183
  resolved value as `reasoning_effort`. The command confirmation, status
184
184
  indicator, active-work spinner, SDK settings response, and provider request all
185
- use the same resolved value. If a provider advertises only boolean thinking,
186
- UR does not invent a graded effort selector.
185
+ use the same resolved value. If a provider advertises thinking without a
186
+ model-specific graded ladder and its runtime has a real native on/off mapping,
187
+ UR does not invent a graded effort
188
+ selector. Use `/thinking on|off` directly;
189
+ in `/model`, Left selects off, Right selects on, and `t` toggles. A graded
190
+ `/effort` request on that model enables boolean thinking while clearly reporting
191
+ that the requested level was not sent.
192
+ Generic OpenAI-compatible endpoints have no universal boolean thinking field,
193
+ so metadata alone does not make this toggle appear and UR sends no invented parameter.
187
194
  `ultra` is UR's visible beyond-high ceiling selector. It is selectable only
188
195
  when the provider/model advertises `ultra`, `max`, `xhigh`, or an explicit
189
196
  provider-authored equivalent. UR shows the native mapping (for example,
190
197
  `ultra→max`) and sends that exact wire value; it never enables Ultra for a model
191
- whose graded ladder tops out at `high`, boolean thinking, or unknown capability metadata. Arbitrary
198
+ whose graded ladder tops out at `high`, lacks an advertised beyond-high value,
199
+ or has unknown capability metadata. Arbitrary
192
200
  labels such as `deep` still require an explicit provider alias because UR
193
201
  cannot infer their rank.
194
202
 
203
+ For an unknown or newly released model, UR waits for provider-authored model
204
+ metadata or a supported model-scoped probe before adding thinking parameters.
205
+ If the provider does not establish support, thinking stays off for request
206
+ shaping; UR does not optimistically send an unknown parameter and treat an API
207
+ error as capability discovery. Boolean thinking metadata enables the thinking
208
+ toggle only and never invents a graded effort ladder. On OpenRouter, UR sends
209
+ the provider-default `reasoning.enabled` control, or the exact token budget when
210
+ the model advertises `supports_max_tokens`.
211
+
195
212
  For Ollama, UR lazily reads the focused model's `/api/show` capabilities and
196
- sends the selected level through native `think`. Kimi K3 uses
197
- `low|high|max` and therefore exposes Ultra as `ultra→max`; GPT-OSS uses
198
- `low|medium|high` and does not expose Ultra; other models advertising
199
- `thinking` use Ollama's current `low|medium|high|max` contract. Direct OpenAI,
213
+ sends the resolved control through native `think`. A generic `thinking`
214
+ capability proves thinking support but does not identify a model-specific
215
+ graded ladder; UR therefore exposes the verified native on/off control without
216
+ claiming that the model cannot also support levels. GPT-OSS uses Ollama's documented
217
+ `low|medium|high` ladder and does not expose Ultra. Other graded ladders and
218
+ Ultra aliases are used only when the endpoint explicitly returns them in model
219
+ reasoning metadata.
220
+
221
+ For vLLM, UR lazily reads the non-generating
222
+ `/server_info?config_format=json` endpoint for the focused model. A configured
223
+ reasoning parser establishes vLLM's documented Chat Completions contract:
224
+ `none|low|medium|high`, displayed as `minimal→none|low|medium|high` and sent
225
+ through `reasoning_effort`. This discovery never launches a completion and
226
+ does not add Ultra. A richer provider-authored model record can add exact
227
+ levels or aliases. For llama.cpp, `/props` can establish that the active chat
228
+ template consumes reasoning effort, but the current capability flag does not
229
+ publish its finite accepted values; UR does not fabricate a ladder from that
230
+ boolean. Direct OpenAI,
200
231
  Anthropic, and Gemini models use curated model-specific ladders from their
201
232
  official documentation; live discovery rows are merged with those contracts.
202
233
  See [Ollama thinking](https://docs.ollama.com/capabilities/thinking),
203
234
  [OpenAI model guidance](https://developers.openai.com/api/docs/guides/latest-model),
204
235
  [Claude effort](https://platform.claude.com/docs/en/build-with-claude/effort),
205
- and [Gemini thinking](https://ai.google.dev/gemini-api/docs/thinking).
236
+ [Gemini thinking](https://ai.google.dev/gemini-api/docs/thinking), and
237
+ [vLLM reasoning outputs](https://docs.vllm.ai/en/latest/features/reasoning_outputs/).
206
238
 
207
239
  The provider-first `/model` picker supports the same control directly: use
208
- Left/Right to move through the capability-backed selectors UR can map to the focused model's native levels,
209
- then Enter to apply the model and effort together. OpenRouter's live catalog
240
+ Left/Right to move through the capability-backed selectors UR can map to a
241
+ graded model's native levels, or to choose off/on for a boolean-thinking model
242
+ when its runtime has a native two-state mapping, then Enter to apply the model
243
+ and reasoning control together. OpenRouter's live catalog
210
244
  shows pricing tier, context size, tool capability, reasoning capability, and
211
245
  the full, untruncated model ID immediately below the focused entry. Opening the
212
246
  OpenRouter catalog reuses its endpoint-scoped five-minute cache; Ctrl+R forces
@@ -218,13 +252,26 @@ provider prompt-cache markers. Explicit routing preferences and the `:nitro`,
218
252
  OpenAI, Claude, Gemini, and OpenRouter is a single aligned masked row; the key
219
253
  is stored in the OS keychain flow and is never written to settings.
220
254
 
255
+ ### Token counting
256
+
257
+ UR uses each provider's non-generating count endpoint when one covers the full
258
+ request: OpenAI Responses input tokens, Anthropic Messages token counting,
259
+ Gemini `countTokens`, llama.cpp chat input tokens, and vLLM Messages token
260
+ counting. Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
261
+ provider-wire local estimate because those runtimes do not share a dependable
262
+ preflight tokenizer for complete chat history plus tools. UR never launches a
263
+ hidden completion for token counting. If a native count call is unavailable,
264
+ file and MCP size checks retain the local estimate rather than disabling their
265
+ limits.
266
+
221
267
  For llama.cpp, `/v1/models` metadata is preserved when the server supplies it.
222
- Because stock llama.cpp exposes chat-template effort support per loaded model,
223
268
  UR also resolves the model currently under the Up/Down cursor through
224
- `/props?model=<id>`. Left/Right is enabled only after that focused template
225
- advertises `supports_reasoning_effort`; the selected value is then sent
226
- unchanged in `reasoning_effort`. This works with llama.cpp router/cluster mode
227
- and does not assume that port 8080 limits UR to one worker.
269
+ `/props?model=<id>`. `supports_reasoning_effort` establishes template support,
270
+ but current llama.cpp does not expose the accepted value set through that flag,
271
+ so it does not by itself enable Left/Right. Exact effort metadata from the
272
+ model endpoint still enables the corresponding selectors and is sent unchanged
273
+ as `reasoning_effort`. This works with llama.cpp router/cluster mode and does
274
+ not assume that port 8080 limits UR to one worker.
228
275
 
229
276
  ### Provider-aware research calls
230
277
 
@@ -69,7 +69,7 @@ const featureGroups = [
69
69
  title: 'Providers and auth',
70
70
  tags: ['subscription', 'API', 'local', 'effort', 'status bar'],
71
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'],
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'],
73
73
  },
74
74
  {
75
75
  title: 'Security and operations',
@@ -85,7 +85,7 @@ const commands = [
85
85
  category: 'Core',
86
86
  aliases: [],
87
87
  summary: 'Start an interactive session; a fresh workspace must choose and locally persist a validated provider/model pair first.',
88
- examples: ['ur', 'ur --model kimi-k3:cloud --effort ultra', 'ur --continue', 'ur --resume'],
88
+ examples: ['ur', 'ur --model gpt-5.6-sol --effort ultra', 'ur --continue', 'ur --resume'],
89
89
  },
90
90
  {
91
91
  name: 'ur -p',
@@ -378,8 +378,8 @@ const commands = [
378
378
  name: 'plugin',
379
379
  category: 'Interop',
380
380
  aliases: ['plugins'],
381
- summary: 'Manage UR plugins and marketplaces for MCP tools, skills, templates, validators, language adapters, LSP servers, agents, hooks, output styles, and commands.',
382
- examples: ['ur plugin search git', 'ur plugin search --capability skills --json', 'ur plugin show github@ur-plugins-official', 'ur plugin list', 'ur plugin install hello@ur-plugins-official', 'ur plugin update <plugin>'],
381
+ summary: 'Manage UR plugins and GitHub, Git, URL, npm, local, or settings-backed marketplaces for MCP tools, skills, templates, validators, language adapters, LSP servers, agents, hooks, output styles, and commands.',
382
+ examples: ['ur plugin marketplace add npm:@scope/catalog@latest', 'ur plugin search git', 'ur plugin search --capability skills --json', 'ur plugin show github@ur-plugins-official', 'ur plugin list', 'ur plugin install hello@ur-plugins-official', 'ur plugin update <plugin>'],
383
383
  },
384
384
  {
385
385
  name: 'provider',
@@ -547,8 +547,8 @@ const slashGroups = [
547
547
  },
548
548
  {
549
549
  title: 'Models, tools, and interop',
550
- items: ['/model', '/provider', '/effort', '/fast', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/skill', '/sdk', '/a2a-card'],
551
- text: 'Pick providers and models, cycle only capability-backed effort selectors that map to provider-native values, inspect capabilities, manage MCP/plugin extensions, browse prompt skills with /skills, run executable workflows with /skill, and expose interop surfaces.',
550
+ items: ['/model', '/provider', '/effort', '/thinking', '/fast', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/skill', '/sdk', '/a2a-card'],
551
+ text: 'Pick providers and models, cycle only capability-backed effort selectors or a verified provider-native thinking toggle, inspect capabilities, manage MCP/plugin extensions, browse prompt skills with /skills, run executable workflows with /skill, and expose interop surfaces.',
552
552
  },
553
553
  {
554
554
  title: 'Security operations',
@@ -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.83.2</p>
48
+ <p class="eyebrow">Version 1.84.1</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>
@@ -76,7 +76,7 @@
76
76
  </article>
77
77
  <article>
78
78
  <strong>Plugin marketplace</strong>
79
- <span>Plugins can add MCP tools, skills, templates, validators, language adapters, LSP servers, agents, hooks, and output styles.</span>
79
+ <span>GitHub, Git, URL, npm, local, and settings-backed catalogs can add MCP tools, skills, templates, validators, language adapters, LSP servers, agents, hooks, and output styles.</span>
80
80
  </article>
81
81
  <article>
82
82
  <strong>Legal provider routing</strong>
@@ -100,7 +100,7 @@
100
100
  </article>
101
101
  <article>
102
102
  <strong>Deterministic commands</strong>
103
- <span>The external runtime exposes 172 commands and 253 unique slash tokens; registry tests reject ambiguous names, broken loaders, and undocumented visible commands.</span>
103
+ <span>The external runtime exposes a source-derived command catalog; registry tests reject ambiguous names, broken loaders, undocumented visible aliases, and documented commands without implementations.</span>
104
104
  </article>
105
105
  <article>
106
106
  <strong>Safety and context</strong>
@@ -177,9 +177,10 @@ ur config set responses.store false</code></pre>
177
177
  <article>
178
178
  <h3>Capability-driven reasoning effort</h3>
179
179
  <pre><code>/effort ultra
180
+ /thinking on
180
181
  ur --model kimi-k3:cloud --effort high
181
- /model # Up/Down model · Left/Right effort · Enter apply</code></pre>
182
- <p>The normalized vocabulary is <code>minimal</code>, <code>low</code>, <code>medium</code>, <code>high</code>, <code>xhigh</code>, <code>max</code>, and <code>ultra</code>; <code>/effort auto</code> clears an explicit choice. UR lists only capability-backed selectors it can map to the focused model's provider-native levels. <code>max</code> resolves to the highest supported non-Ultra tier. Ultra appears only for native <code>ultra</code>, advertised <code>max</code>/<code>xhigh</code>, or an explicit provider alias; the picker shows translations such as <code>ultra→max</code> and sends that exact provider value. Models that top out at <code>high</code>, boolean-thinking models, and unknown capabilities do not get Ultra.</p>
182
+ /model # Up/Down model · Left/Right effort or thinking on/off · Enter apply</code></pre>
183
+ <p>The normalized vocabulary is <code>minimal</code>, <code>low</code>, <code>medium</code>, <code>high</code>, <code>xhigh</code>, <code>max</code>, and <code>ultra</code>; <code>/effort auto</code> clears an explicit choice. UR lists only capability-backed selectors it can map to the focused model's provider-native levels. <code>max</code> resolves to the highest supported non-Ultra tier. Ultra appears only for native <code>ultra</code>, advertised <code>max</code>/<code>xhigh</code>, or an explicit provider alias; the picker shows translations such as <code>ultra→max</code> and sends that exact provider value. Models that top out at <code>high</code>, lack an advertised beyond-high value, or have unknown capabilities do not get Ultra. For models with thinking but no advertised graded ladder on runtimes with a native toggle, Left selects off, Right selects on, and <code>t</code> toggles; <code>/thinking on|off</code> is the direct control. A graded <code>/effort</code> request on such a model enables thinking while reporting that no graded value was sent. Focused vLLM models use non-generating <code>/server_info</code> discovery for the documented <code>minimal→none|low|medium|high</code> mapping; llama.cpp's bare support flag creates no invented ladder. Generic OpenAI-compatible runtimes receive no invented boolean field.</p>
183
184
  </article>
184
185
  <article>
185
186
  <h3>OpenRouter responsive routing</h3>
@@ -189,7 +190,7 @@ ur --model kimi-k3:cloud --effort high
189
190
  </article>
190
191
  <article>
191
192
  <h3>Status bar and updates</h3>
192
- <pre><code>Ollama | llama3 | ask | main | update 1.83.2 available</code></pre>
193
+ <pre><code>Ollama | llama3 | ask | main | update available</code></pre>
193
194
  <p>The interactive status bar shows only important runtime state: provider, model, mode, branch, active tasks, checks status when known, and update availability. It is hidden in CI, dumb terminals, and print mode.</p>
194
195
  </article>
195
196
  <article>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.83.2"
10
+ version = "1.84.1"
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.83.2",
5
+ "version": "1.84.1",
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.83.2",
3
+ "version": "1.84.1",
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",