ur-agent 1.83.2 → 1.84.0

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.
@@ -192,6 +192,12 @@ provider values. Ultra appears only when metadata advertises `ultra`, `max`,
192
192
  exactly. Models that top out at `high`, boolean-thinking models, and unknown
193
193
  capabilities omit Ultra. See [Reasoning effort](providers.md#reasoning-effort).
194
194
 
195
+ Boolean-thinking models on runtimes with a native toggle expose a two-state
196
+ control instead: Left selects off, Right selects on, and `t` toggles in
197
+ `/model`; `/thinking on|off|status` is the direct command. This updates the live
198
+ session and `alwaysThinkingEnabled`. Generic OpenAI-compatible transports do
199
+ not receive an invented boolean field.
200
+
195
201
  The same provider-first picker is mandatory on the first interactive run in a
196
202
  workspace with no model in `.ur/settings.json` or `.ur/settings.local.json`.
197
203
  The result is validated and written to the gitignored local settings file.
@@ -719,6 +725,7 @@ Plugins can add commands, tools, and skills:
719
725
 
720
726
  ```sh
721
727
  ur plugin list
728
+ ur plugin marketplace add npm:@scope/catalog@latest
722
729
  ur plugin search [query] [--capability <name>] [--marketplace <name>] [--installed] [--json]
723
730
  ur plugin show <name-or-name@marketplace> [--json]
724
731
  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.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -82,6 +82,10 @@ 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
+ an Ollama model that advertises boolean thinking without a 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
85
89
  llama.cpp, verify focus requests
86
90
  `/props?model=<focused-id>` and that a template reporting
87
91
  `supports_reasoning_effort: false` has no graded selector. Open the OpenAI API or Claude
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,8 +182,14 @@ 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 only boolean thinking and
186
+ its runtime has a real native on/off mapping, UR does not invent a graded effort
187
+ selector. Use `/thinking on|off` directly;
188
+ in `/model`, Left selects off, Right selects on, and `t` toggles. A graded
189
+ `/effort` request on that model enables boolean thinking while clearly reporting
190
+ that the requested level was not sent.
191
+ Generic OpenAI-compatible endpoints have no universal boolean thinking field,
192
+ so metadata alone does not make this toggle appear and UR sends no invented parameter.
187
193
  `ultra` is UR's visible beyond-high ceiling selector. It is selectable only
188
194
  when the provider/model advertises `ultra`, `max`, `xhigh`, or an explicit
189
195
  provider-authored equivalent. UR shows the native mapping (for example,
@@ -192,11 +198,21 @@ whose graded ladder tops out at `high`, boolean thinking, or unknown capability
192
198
  labels such as `deep` still require an explicit provider alias because UR
193
199
  cannot infer their rank.
194
200
 
201
+ For an unknown or newly released model, UR waits for provider-authored model
202
+ metadata or a supported model-scoped probe before adding thinking parameters.
203
+ If the provider does not establish support, thinking stays off for request
204
+ shaping; UR does not optimistically send an unknown parameter and treat an API
205
+ error as capability discovery. Boolean thinking metadata enables the thinking
206
+ toggle only and never invents a graded effort ladder. On OpenRouter, UR sends
207
+ the provider-default `reasoning.enabled` control, or the exact token budget when
208
+ the model advertises `supports_max_tokens`.
209
+
195
210
  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,
211
+ sends the resolved control through native `think`. A generic `thinking`
212
+ capability means boolean thinking only. GPT-OSS uses Ollama's documented
213
+ `low|medium|high` ladder and does not expose Ultra. Other graded ladders and
214
+ Ultra aliases are used only when the endpoint explicitly returns them in model
215
+ reasoning metadata. Direct OpenAI,
200
216
  Anthropic, and Gemini models use curated model-specific ladders from their
201
217
  official documentation; live discovery rows are merged with those contracts.
202
218
  See [Ollama thinking](https://docs.ollama.com/capabilities/thinking),
@@ -205,8 +221,10 @@ See [Ollama thinking](https://docs.ollama.com/capabilities/thinking),
205
221
  and [Gemini thinking](https://ai.google.dev/gemini-api/docs/thinking).
206
222
 
207
223
  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
224
+ Left/Right to move through the capability-backed selectors UR can map to a
225
+ graded model's native levels, or to choose off/on for a boolean-thinking model
226
+ when its runtime has a native two-state mapping, then Enter to apply the model
227
+ and reasoning control together. OpenRouter's live catalog
210
228
  shows pricing tier, context size, tool capability, reasoning capability, and
211
229
  the full, untruncated model ID immediately below the focused entry. Opening the
212
230
  OpenRouter catalog reuses its endpoint-scoped five-minute cache; Ctrl+R forces
@@ -218,6 +236,18 @@ provider prompt-cache markers. Explicit routing preferences and the `:nitro`,
218
236
  OpenAI, Claude, Gemini, and OpenRouter is a single aligned masked row; the key
219
237
  is stored in the OS keychain flow and is never written to settings.
220
238
 
239
+ ### Token counting
240
+
241
+ UR uses each provider's non-generating count endpoint when one covers the full
242
+ request: OpenAI Responses input tokens, Anthropic Messages token counting,
243
+ Gemini `countTokens`, llama.cpp chat input tokens, and vLLM Messages token
244
+ counting. Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
245
+ provider-wire local estimate because those runtimes do not share a dependable
246
+ preflight tokenizer for complete chat history plus tools. UR never launches a
247
+ hidden completion for token counting. If a native count call is unavailable,
248
+ file and MCP size checks retain the local estimate rather than disabling their
249
+ limits.
250
+
221
251
  For llama.cpp, `/v1/models` metadata is preserved when the server supplies it.
222
252
  Because stock llama.cpp exposes chat-template effort support per loaded model,
223
253
  UR also resolves the model currently under the Up/Down cursor through
@@ -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 provider-native boolean thinking, 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.0</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 boolean thinking · 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>, boolean-thinking models, and unknown capabilities do not get Ultra. For boolean-thinking models 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. 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.0"
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.0",
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.0",
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",