ur-agent 1.30.5 → 1.31.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.
@@ -81,7 +81,7 @@ ur upgrade
81
81
 
82
82
  | Addition | Surface | What it adds |
83
83
  | --- | --- | --- |
84
- | Legal multi-provider connectivity | `ur provider list\|status\|doctor`, `ur config set provider ...`, `ur auth chatgpt\|claude\|gemini\|antigravity` for bridge diagnostics | API-key providers and local/OpenAI-compatible runtimes are UR-native. Subscription CLIs are optional external app bridges blocked from normal runtime unless explicitly enabled. UR stores only safe non-secret preferences and never scrapes browser sessions, extracts OAuth tokens, reads hidden provider auth files, bypasses provider restrictions, or proxies consumer web sessions as APIs. |
84
+ | Legal multi-provider connectivity | `ur provider list\|status\|doctor`, `ur config set provider ...`, bridge diagnostics only when explicitly enabled | API-key providers and local/OpenAI-compatible runtimes are UR-native. Subscription access is visible but unavailable unless a real independent backend exists; UR does not expose fake subscription models. External app bridges are blocked from normal runtime unless explicitly enabled. UR stores only safe non-secret preferences and never scrapes browser sessions, extracts OAuth tokens, reads hidden provider auth files, bypasses provider restrictions, or proxies consumer web sessions as APIs. |
85
85
  | Provider-aware status bar | Interactive bottom status bar, `src/components/StatusLine.tsx`, `src/utils/statusBar.ts` | Shows only important runtime state: active provider, selected model, mode, git branch, active task state, checks/build state when known, and update availability. Hidden in CI, dumb terminals, and non-interactive mode; custom status-line hooks still override it. |
86
86
  | Clean update checks | `ur upgrade`, `ur update`, `src/cli/update.ts` | Detects development/source checkouts and prints a short pull-or-install message instead of attempting self-mutation. npm-installed builds compare the local version with `ur-agent` on npm and print update, latest, registry failure, and malformed-response states without stale planning text. |
87
87
  | Bundled IDE extension install | `extensions/vscode-ur-inline-diffs/`, `src/utils/ide.ts`, `ur ide diff` | Public VS Code install now packages the repo's bundled inline-diffs extension as a local VSIX instead of trying an unpublished marketplace ID. The extension remains local-only and reviews `.ur/ide/diffs` bundles from the current workspace. |
package/docs/USAGE.md CHANGED
@@ -115,6 +115,11 @@ back to Ollama, Claude API does not fall back to Claude Code, and local/server
115
115
  providers do not leak cloud model lists. Use `ur provider status` to inspect the
116
116
  active provider, model, access type, and runtime backend.
117
117
 
118
+ The default provider list keeps subscription access visible as `subscription`,
119
+ but it is marked unavailable unless a real independent subscription runtime is
120
+ configured. UR does not list fake subscription models and does not call provider
121
+ apps by default.
122
+
118
123
  Provider values accept canonical IDs and common aliases. For example,
119
124
  `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `ollama`,
120
125
  `lmstudio`, `llama.cpp`, and `vllm` are normal UR-native runtime providers.
@@ -124,12 +129,11 @@ opt-in is enabled.
124
129
 
125
130
  API modes are explicit and read keys only from environment variables:
126
131
  `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, and
127
- `OPENROUTER_API_KEY`. Codex CLI, Claude Code, Gemini CLI, and Antigravity are
128
- external app bridges, not required dependencies; they are blocked from normal
129
- runtime selection unless `UR_ENABLE_EXTERNAL_APP_PROVIDERS=1` is set. UR-AGENT
130
- never scrapes browser sessions, extracts OAuth tokens, or bypasses provider
131
- restrictions. OpenAI-compatible local or cloud endpoints use `base_url` plus
132
- `model`.
132
+ `OPENROUTER_API_KEY`. Provider app bridges are not required dependencies; they
133
+ are blocked from normal runtime selection unless
134
+ `UR_ENABLE_EXTERNAL_APP_PROVIDERS=1` is set. UR-AGENT never scrapes browser
135
+ sessions, extracts OAuth tokens, or bypasses provider restrictions.
136
+ OpenAI-compatible local or cloud endpoints use `base_url` plus `model`.
133
137
 
134
138
  Use `/model` in an interactive session to select provider first and model
135
139
  second. OpenAI API, Claude API, Gemini API, OpenRouter, Ollama, and
@@ -249,7 +253,7 @@ Interactive sessions include a compact bottom status bar when stdout is a real
249
253
  terminal:
250
254
 
251
255
  ```text
252
- Ollama | llama3 | ask | main | update 1.30.5 available
256
+ Ollama | llama3 | ask | main | update 1.30.6 available
253
257
  ```
254
258
 
255
259
  The bar is not rendered in non-interactive mode, CI, dumb terminals, or
package/docs/providers.md CHANGED
@@ -26,6 +26,7 @@ variables only when the user explicitly selects API mode.
26
26
 
27
27
  | Provider | Access type | Runtime kind | Runtime backend | Legal path |
28
28
  | --- | --- | --- | --- | --- |
29
+ | Subscription | subscription | unavailable until configured | `subscription:unconfigured` | independent subscription runtime only |
29
30
  | OpenAI API | API | UR-native | `api:openai` | `OPENAI_API_KEY` |
30
31
  | Claude API | API | UR-native | `api:anthropic` | `ANTHROPIC_API_KEY` |
31
32
  | Gemini API | API | UR-native | `api:gemini` | `GEMINI_API_KEY` |
@@ -34,10 +35,7 @@ variables only when the user explicitly selects API mode.
34
35
  | LM Studio | local/server | UR-native | `openai-compatible:lmstudio` | local OpenAI-compatible server |
35
36
  | llama.cpp | local/server | UR-native | `openai-compatible:llama.cpp` | local OpenAI-compatible server |
36
37
  | vLLM | local/server | UR-native | `openai-compatible:vllm` | OpenAI-compatible server |
37
- | Codex CLI | subscription | external app bridge | `subscription-cli:codex` | official Codex CLI login |
38
- | Claude Code | subscription | external app bridge | `subscription-cli:claude-code` | official Claude Code login |
39
- | Gemini CLI | subscription | external app bridge | `subscription-cli:gemini` | official Gemini Code Assist login |
40
- | Antigravity | subscription | external app bridge | `subscription-cli:antigravity` | official Antigravity login, where supported |
38
+ | External app bridges | subscription | opt-in diagnostics | `subscription-cli:*` | disabled unless explicitly enabled |
41
39
 
42
40
  ## Commands
43
41
 
@@ -62,7 +60,7 @@ ur config set provider.fallback ollama
62
60
 
63
61
  ## Provider-scoped model selection
64
62
 
65
- UR-AGENT shows providers first, then only models available for the selected provider. This prevents incompatible model/provider pairs and keeps API-key, local/server, and external app bridge model lists separate.
63
+ UR-AGENT shows providers first, then only models available for the selected provider. This prevents incompatible model/provider pairs and keeps API-key, local/server, subscription, and external app bridge model lists separate. The generic `subscription` entry has no models unless a real independent subscription runtime is configured; UR does not list fake subscription models.
66
64
 
67
65
  ## Runtime provider routing
68
66
 
@@ -75,6 +73,9 @@ through that provider's backend:
75
73
  they delegate turns to another agent app. If deliberately enabled with
76
74
  `UR_ENABLE_EXTERNAL_APP_PROVIDERS=1`, failures still remain provider-scoped
77
75
  and never fall back to Ollama.
76
+ - **Subscription** access is visible but blocked when no independent
77
+ subscription backend exists. It does not expose fake UR model IDs and does not
78
+ call external provider apps by default.
78
79
 
79
80
  The selected provider determines:
80
81
  - Which backend receives your requests
@@ -196,6 +197,33 @@ ur config set provider anthropic-api
196
197
  - Claude API and Claude Code are separate providers
197
198
  - Gemini API and Gemini CLI are separate providers
198
199
 
200
+ ### Connecting accounts (`ur connect` / `/connect`)
201
+
202
+ Connect a provider once from inside UR (or a terminal). The connection persists,
203
+ so you do not repeat it each session:
204
+
205
+ ```sh
206
+ ur connect status # connection state for every provider
207
+ ur connect codex-cli # subscription: launches the official login (Codex/Claude/Gemini)
208
+ echo "$OPENAI_API_KEY" | ur connect openai-api # API: store a key (from stdin, not shell history)
209
+ ur connect openai-api --key <KEY> # API: store a key explicitly
210
+ ur connect logout openai-api # clear a stored key
211
+ ```
212
+
213
+ - **Subscription providers** (`codex-cli`, `claude-code-cli`, `gemini-cli`,
214
+ `antigravity-cli`) connect through their official CLI login using your own
215
+ account; the session is persisted by that CLI. UR never scrapes or copies
216
+ those tokens.
217
+ - **API providers** (`openai-api`, `anthropic-api`, `gemini-api`, `openrouter`)
218
+ store the key in your OS keychain (macOS Keychain, with an encrypted file
219
+ fallback) — the same secure store UR uses for its own credentials. At runtime
220
+ a stored key is used first, then the provider's environment variable, so
221
+ setting the env var still works and never gets overwritten.
222
+
223
+ If you select a provider that is not connected, UR shows a connect prompt in
224
+ `/model` and the runtime fails clearly with the exact `ur connect <provider>`
225
+ command instead of silently switching providers.
226
+
199
227
  ### Validation
200
228
 
201
229
  When you set a model that is incompatible with the current provider, UR-AGENT shows an error:
@@ -56,7 +56,7 @@ const featureGroups = [
56
56
  {
57
57
  title: 'Providers and auth',
58
58
  tags: ['subscription', 'API', 'local', 'status bar'],
59
- text: 'UR-native API/local/OpenAI-compatible runtimes, optional external app bridge diagnostics, provider doctor checks, non-secret config, fallback hints, and provider-aware status-bar output.',
59
+ text: 'UR-native API/local/OpenAI-compatible runtimes, visible-but-unavailable subscription access when no independent backend exists, optional external app bridge diagnostics, provider doctor checks, non-secret config, fallback hints, and provider-aware status-bar output.',
60
60
  commands: ['ur provider list', 'ur provider status', 'ur provider doctor agy', 'ur config set provider openai-api', 'ur config set provider ollama'],
61
61
  },
62
62
  {
@@ -170,7 +170,7 @@ const commands = [
170
170
  name: 'auth',
171
171
  category: 'Ops',
172
172
  aliases: [],
173
- summary: 'Launch official subscription CLI login flows for ChatGPT/Codex, Claude Code, Gemini CLI, and Antigravity where supported.',
173
+ summary: 'Launch optional external app bridge login flows only when those bridge diagnostics are explicitly enabled.',
174
174
  examples: ['ur auth chatgpt', 'ur auth claude', 'ur auth gemini', 'ur auth antigravity'],
175
175
  },
176
176
  {
@@ -590,8 +590,8 @@ const examples = [
590
590
  },
591
591
  {
592
592
  title: 'Provider setup',
593
- text: 'Inspect legal provider paths, choose a local provider, and keep fallback explicit.',
594
- code: 'ur provider list\nur provider doctor agy\nur config set provider openai-api\nur config set provider ollama\nur config set model qwen3-coder:480b-cloud\nur config set provider.fallback ollama',
593
+ text: 'Inspect legal provider paths, choose a local/API provider, and keep fallback explicit.',
594
+ code: 'ur provider list\nur provider doctor subscription\nur config set provider openai-api\nur config set provider ollama\nur config set model qwen3-coder:480b-cloud\nur config set provider.fallback ollama',
595
595
  },
596
596
  {
597
597
  title: 'PR handoff with self-review',
@@ -44,7 +44,7 @@
44
44
  <main id="content" class="content">
45
45
  <header class="topbar">
46
46
  <div>
47
- <p class="eyebrow">Version 1.30.5</p>
47
+ <p class="eyebrow">Version 1.30.6</p>
48
48
  <h1>UR-AGENT Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-AGENT.</p>
50
50
  </div>
@@ -63,7 +63,7 @@
63
63
  <div class="stat-grid">
64
64
  <article>
65
65
  <strong>Local-first runtime</strong>
66
- <span>Use local Ollama/OpenAI-compatible runtimes for private and offline work, or explicitly select official subscription/API provider paths.</span>
66
+ <span>Use local Ollama/OpenAI-compatible runtimes for private and offline work, or explicitly select configured API provider paths. Subscription access stays visible but unavailable when no independent backend exists.</span>
67
67
  </article>
68
68
  <article>
69
69
  <strong>Interactive and headless</strong>
@@ -79,7 +79,7 @@
79
79
  </article>
80
80
  <article>
81
81
  <strong>Legal provider routing</strong>
82
- <span><code>ur provider</code>, <code>ur auth</code>, and safe <code>ur config set</code> commands select official subscription, API, and local providers without storing secrets.</span>
82
+ <span><code>ur provider</code> and safe <code>ur config set</code> commands select API, local, server, or configured subscription providers without storing secrets.</span>
83
83
  </article>
84
84
  <article>
85
85
  <strong>Reliable repo editing</strong>
@@ -146,7 +146,7 @@ ur auth claude
146
146
  ur auth gemini
147
147
  ur auth antigravity
148
148
  ur provider doctor agy</code></pre>
149
- <p>Codex CLI, Claude Code CLI, Gemini CLI, and Antigravity are optional external app bridges. UR checks CLI presence and official login status without reading hidden credential files, but normal runtime selection uses API, local, or OpenAI-compatible providers unless <code>UR_ENABLE_EXTERNAL_APP_PROVIDERS=1</code> is set.</p>
149
+ <p>External app bridges are optional diagnostics only. Normal runtime selection uses API, local, OpenAI-compatible, or a real configured subscription backend; the generic subscription entry does not expose fake models and stays unavailable when no independent backend exists.</p>
150
150
  </article>
151
151
  <article>
152
152
  <h3>API and local providers</h3>
@@ -159,7 +159,7 @@ ur config set provider.fallback ollama</code></pre>
159
159
  </article>
160
160
  <article>
161
161
  <h3>Status bar and updates</h3>
162
- <pre><code>Ollama | llama3 | ask | main | update 1.30.5 available</code></pre>
162
+ <pre><code>Ollama | llama3 | ask | main | update 1.30.6 available</code></pre>
163
163
  <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 non-interactive mode.</p>
164
164
  </article>
165
165
  </div>
@@ -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.30.5",
5
+ "version": "1.30.6",
6
6
  "publisher": "ur-agent",
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.30.5",
3
+ "version": "1.31.0",
4
4
  "description": "UR-AGENT — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",