ur-agent 1.36.1 → 1.37.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.
- package/README.md +28 -15
- package/bin/ur.js +13 -3
- package/dist/cli.js +165 -70
- package/docs/CONFIGURATION.md +2 -0
- package/docs/IDE.md +190 -37
- package/docs/providers.md +2 -0
- package/documentation/index.html +2 -2
- package/extensions/vscode-ur-inline-diffs/README.md +81 -10
- package/extensions/vscode-ur-inline-diffs/media/ur.svg +3 -4
- package/extensions/vscode-ur-inline-diffs/out/extension.js +2571 -0
- package/extensions/vscode-ur-inline-diffs/package.json +214 -8
- package/package.json +2 -2
- package/extensions/vscode-ur-inline-diffs/extension.js +0 -383
package/README.md
CHANGED
|
@@ -178,12 +178,14 @@ placeholder and is hidden from the list.
|
|
|
178
178
|
ur provider list
|
|
179
179
|
ur provider status
|
|
180
180
|
ur provider doctor
|
|
181
|
+
ur provider models [provider] --json
|
|
181
182
|
ur config set provider ollama
|
|
182
183
|
ur config set provider openai-api
|
|
183
184
|
ur config set provider anthropic-api
|
|
184
185
|
ur config set provider gemini-api
|
|
185
186
|
ur config set provider openrouter
|
|
186
187
|
ur config set model qwen3-coder:480b-cloud
|
|
188
|
+
ur provider select-model ollama qwen3-coder:480b-cloud --json
|
|
187
189
|
ur config set base_url http://localhost:11434
|
|
188
190
|
ur config set provider.fallback ollama
|
|
189
191
|
```
|
|
@@ -363,11 +365,17 @@ UR-AGENT uses that hook output instead of the built-in bar.
|
|
|
363
365
|
|
|
364
366
|
### IDE Integration
|
|
365
367
|
|
|
368
|
+
The professional UR IDE integration is the **UR Inline Diffs** VS Code
|
|
369
|
+
extension: a chat panel, inline diff review, an actions panel, an agent
|
|
370
|
+
status card, a searchable command palette, and an agent options panel for VS
|
|
371
|
+
Code, Cursor, and Windsurf. It is bundled inside this repository and
|
|
372
|
+
packaged as a local VSIX when installed from UR-AGENT; the public install
|
|
373
|
+
path does not depend on an unpublished marketplace extension ID. The
|
|
374
|
+
extension never talks to a model provider or network service directly —
|
|
375
|
+
every AI request goes through your local `ur` CLI, same as in a terminal.
|
|
376
|
+
|
|
366
377
|
`ur ide diff` captures review bundles under `.ur/ide/diffs/` so editors can
|
|
367
|
-
show agent diffs without scraping terminal output
|
|
368
|
-
diff extension is bundled inside this repository and packaged as a local VSIX
|
|
369
|
-
when installed from UR-AGENT; the public install path does not depend on an
|
|
370
|
-
unpublished marketplace extension ID.
|
|
378
|
+
show agent diffs without scraping terminal output:
|
|
371
379
|
|
|
372
380
|
```sh
|
|
373
381
|
ur ide diff capture --title "Parser fix"
|
|
@@ -375,27 +383,31 @@ ur ide diff list
|
|
|
375
383
|
ur ide diff show <id>
|
|
376
384
|
```
|
|
377
385
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
386
|
+
In the **Inline Diffs** / **Actions** views you can preview a bundle,
|
|
387
|
+
**Apply** it (a confirmed `git apply`, recorded through `ur ide diff
|
|
388
|
+
approve` — never a silent write or an out-of-vocabulary status), **Reject**
|
|
389
|
+
it, or run **UR: Agent Status**. Chat, editor actions (Explain/Fix/Generate
|
|
390
|
+
Tests), diff review, and the verifier all route through the same CLI
|
|
391
|
+
contract — see the [IDE Guide](docs/IDE.md) for the full feature list.
|
|
382
392
|
|
|
383
393
|
Inspect and configure integration per editor:
|
|
384
394
|
|
|
385
395
|
```sh
|
|
386
|
-
ur ide status # workspace, ACP server, provider/model, plugin count
|
|
396
|
+
ur ide status # workspace, ACP server, provider/model, sandbox/verifier mode, plugin count
|
|
387
397
|
ur ide doctor # pass/warn/fail checks; reports missing config clearly
|
|
388
398
|
ur ide config zed # print the .zed/settings.json ACP block
|
|
389
399
|
ur ide config vscode # VS Code / Cursor / Windsurf setup
|
|
390
400
|
```
|
|
391
401
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
402
|
+
VS Code, Cursor, and Windsurf connect through the UR Inline Diffs extension;
|
|
403
|
+
Zed and ACP-capable Neovim clients connect through the stdio Agent Client
|
|
404
|
+
Protocol. **JetBrains is not implemented in this repository** — no plugin
|
|
405
|
+
ships from here; only detection code for a future one exists. Start an ACP
|
|
406
|
+
surface with:
|
|
395
407
|
|
|
396
408
|
```sh
|
|
397
409
|
ur acp stdio # stdio ACP agent for editors (Zed, Neovim)
|
|
398
|
-
ur acp serve --port 8123 [--debug] # HTTP JSON-RPC server for scripts/clients
|
|
410
|
+
ur acp serve --port 8123 [--debug] # HTTP JSON-RPC server for scripts/clients (not the VS Code chat transport)
|
|
399
411
|
ur acp status
|
|
400
412
|
```
|
|
401
413
|
|
|
@@ -526,8 +538,9 @@ settings, generated indexes, memory, logs, and secrets out of Git.
|
|
|
526
538
|
- `src/services/` contains runtime services for MCP, verification, memory,
|
|
527
539
|
code indexing, safety policy, context manifests, model routing, background
|
|
528
540
|
agents, A2A, analytics, sync, and API integration.
|
|
529
|
-
- `extensions/vscode-ur-inline-diffs/` contains the VS Code
|
|
530
|
-
extension
|
|
541
|
+
- `extensions/vscode-ur-inline-diffs/` contains the professional VS Code IDE
|
|
542
|
+
extension (chat, streaming, inline diff review, actions panel, status
|
|
543
|
+
card, search, and agent options) for VS Code, Cursor, and Windsurf.
|
|
531
544
|
- `plugins/core/` contains first-party marketplace plugins.
|
|
532
545
|
- `plugins/community/` stages contributed plugins.
|
|
533
546
|
- `plugins/examples/` contains plugin templates users can copy.
|
package/bin/ur.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn, spawnSync } from 'node:child_process'
|
|
3
|
-
import { existsSync, readFileSync } from 'node:fs'
|
|
3
|
+
import { existsSync, readFileSync, writeSync } from 'node:fs'
|
|
4
4
|
import { dirname, resolve } from 'node:path'
|
|
5
5
|
import { fileURLToPath } from 'node:url'
|
|
6
6
|
|
|
@@ -101,15 +101,25 @@ const args =
|
|
|
101
101
|
|
|
102
102
|
assertBunAvailable()
|
|
103
103
|
|
|
104
|
+
const shouldPipeChildOutput = !process.stdout.isTTY || !process.stderr.isTTY
|
|
104
105
|
const child = spawn(bun, args, {
|
|
105
106
|
cwd: process.cwd(),
|
|
106
107
|
env: {
|
|
107
108
|
...process.env,
|
|
108
109
|
...(ollamaModel ? { OLLAMA_MODEL: ollamaModel } : {}),
|
|
109
110
|
},
|
|
110
|
-
stdio: 'inherit',
|
|
111
|
+
stdio: shouldPipeChildOutput ? ['inherit', 'pipe', 'pipe'] : 'inherit',
|
|
111
112
|
})
|
|
112
113
|
|
|
114
|
+
if (shouldPipeChildOutput) {
|
|
115
|
+
child.stdout?.on('data', chunk => {
|
|
116
|
+
writeSync(1, chunk)
|
|
117
|
+
})
|
|
118
|
+
child.stderr?.on('data', chunk => {
|
|
119
|
+
writeSync(2, chunk)
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
|
|
113
123
|
child.on('error', error => {
|
|
114
124
|
if (error.code === 'ENOENT') {
|
|
115
125
|
printBunRuntimeError(error.message)
|
|
@@ -120,7 +130,7 @@ child.on('error', error => {
|
|
|
120
130
|
process.exit(1)
|
|
121
131
|
})
|
|
122
132
|
|
|
123
|
-
child.on('
|
|
133
|
+
child.on('close', (code, signal) => {
|
|
124
134
|
if (signal) {
|
|
125
135
|
process.kill(process.pid, signal)
|
|
126
136
|
return
|