ur-agent 1.45.3 → 1.45.5

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.
@@ -9,6 +9,15 @@ reproducible autonomous software engineering agent: every substantial task can
9
9
  be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
10
10
  spec as the durable source of truth and command evidence as the success gate.
11
11
 
12
+ ## v1.45.5 Additions
13
+
14
+ - Ollama Cloud requests have bounded response-header and streaming phases and
15
+ do not amplify a deliberate stream timeout through fallback retries. Local
16
+ model timing and explicit timeout overrides are unchanged.
17
+ - The verifier now recognizes terminal promises such as "Let me create it
18
+ now" or "I will run the tests now" and requires the corresponding successful
19
+ mutation or Bash call before the turn may complete.
20
+
12
21
  ## Commands
13
22
 
14
23
  ```sh
@@ -81,6 +90,24 @@ The optional `provider.fallback` value is used only to print an explicit
81
90
  recovery recommendation in provider diagnostics. It never silently or
82
91
  automatically changes the active provider.
83
92
 
93
+ ## v1.45.4 Additions
94
+
95
+ - Fresh workspaces require a provider/model choice before their first
96
+ interactive session and persist the validated pair locally.
97
+ - Fresh headless workspaces fail before model execution unless a model is
98
+ supplied explicitly or by workspace/managed configuration.
99
+ - Resume, initialization-only, and explicit model paths remain uninterrupted;
100
+ AutoApprove behavior is unchanged.
101
+
102
+ ## v1.45.3 Additions
103
+
104
+ | Addition | Surface | What it adds |
105
+ | --- | --- | --- |
106
+ | Deterministic slash registry | `src/commands.ts`, `test/commandRegistryIntegrity.test.ts` | Resolves bundled, plugin, project, workflow, and built-in commands by explicit source priority; rejects duplicate canonical tokens, removes only conflicting aliases, validates every lazy loader, and keeps the technical command catalog complete. |
107
+ | Unified sandbox command | `/sandbox [status\|check\|init\|eval\|exclude]` | One interactive slash command now owns both the settings UI and text subcommands; the shell-facing `ur sandbox` implementation is shared rather than separately registered. |
108
+ | Actionable CI cwd handling | `ur ci-loop --cwd <path>` | Reports the absolute execution directory, retains assertion and stack context, and stops "No tests found" after one attempt without wasting a fix-agent run. |
109
+ | Explicit worktree completion | `/debug-v2`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`, `/batch` | Keeps changes local, asks before the final full suite, and never commits, pushes, or opens a PR unless separately requested. |
110
+
84
111
  ## v1.25.x Additions
85
112
 
86
113
  | Addition | Surface | What it adds |
@@ -286,7 +313,7 @@ ur escalate plan "debug the race condition in the scheduler"
286
313
  ur escalate run "refactor the cache layer" --force-oracle
287
314
  ur escalate oracle "is this lock-free queue correct?"
288
315
  ur arena "implement the rate limiter" --agents 3 --apply
289
- ur ci-loop --command "bun test" --max-attempts 3
316
+ ur ci-loop --command "bun test" --cwd . --max-attempts 3
290
317
  ur artifacts capture-diff
291
318
  ur artifacts capture-tests --command "bun test"
292
319
  ur artifacts approve 1
@@ -48,7 +48,7 @@ ur context-pack remember --decision "Use manifest commands first"
48
48
  ur context-pack compress
49
49
  ur acp serve --port 8123
50
50
  ur exec "add tests for the parser" --concurrency 4 --json
51
- ur ci-loop --command "bun test" --dry-run
51
+ ur ci-loop --command "bun test" --cwd . --dry-run
52
52
  ur artifacts capture-diff
53
53
  ur artifacts capture-tests --command "bun test"
54
54
  ur claim-ledger validate
@@ -87,7 +87,7 @@ Inside an interactive session:
87
87
  | Spec-driven development | Covered | `ur spec` scaffolds requirements/design/tasks under `.ur/specs/`, tracks phase/approvals, and runs the Spec Kit / Kiro task list one task at a time | Add bidirectional sync with an external `specs/` directory |
88
88
  | Capability-aware model escalation | Covered | `ur escalate` selects fast/oracle tiers from `model-doctor`, runs routine work fast, and auto-escalates hard/failed work to the strong local model | Learn per-model success rates to tune the difficulty threshold |
89
89
  | Best-of-N agent judging | Covered | `ur arena` runs N agents per task in isolated worktrees and judges diffs with the self-review gate; winner is selectable/appliable | Add an optional model judge alongside the deterministic scorer |
90
- | Self-healing CI | Covered | `ur ci-loop` runs a command, summarizes failures, invokes a fix agent, and re-runs with bounded retries; commits/pushes are self-review gated | Wire to `ur trigger` so a failed CI webhook auto-launches the loop |
90
+ | Self-healing CI | Covered | `ur ci-loop` reports its resolved cwd, preserves assertion/stack context, stops no-test configuration failures before invoking a fixer, and re-runs real failures with bounded retries; commits/pushes require explicit flags and are self-review gated | Wire to `ur trigger` so a failed CI webhook can explicitly launch the loop |
91
91
  | Verifiable artifacts | Covered | `ur artifacts` records plans/diffs/test-runs with approve/reject/feedback under `.ur/artifacts/`; comments steer active background agents through stream-json inbox injection | Attach browser-QA screenshots and link artifacts to claim-ledger entries |
92
92
  | Native IDE review | Covered | `ur ide diff` writes `.ur/ide/diffs/` bundles and `extensions/vscode-ur-inline-diffs/` provides a VS Code tree/webview/comment surface | Add JetBrains packaging if demand appears |
93
93
  | ACP / IDE agent server | Covered | `ur acp serve|stop|status` exposes an HTTP+JSON-RPC agent server so VS Code/Cursor/Zed extensions can list tools, call tools, and submit tasks | Ship reference editor extensions |
@@ -105,7 +105,7 @@ ur spec run demo --all --dry-run
105
105
  ur arena "implement a debounce helper" --agents 2 --dry-run
106
106
  ur escalate run "refactor the cache layer" --force-oracle --dry-run
107
107
  ur test-first --dry-run
108
- ur ci-loop --command "bun test" --dry-run
108
+ ur ci-loop --command "bun test" --cwd . --dry-run
109
109
  ur artifacts capture-tests --command "bun test"
110
110
  ```
111
111
 
@@ -77,6 +77,15 @@ incompatible saved model instead of silently carrying it across providers. The
77
77
  saved provider/model pair controls the runtime backend for the next agent
78
78
  request; Ollama is only used when `ollama` is the selected provider.
79
79
 
80
+ The same provider-first picker is mandatory on the first interactive run in a
81
+ workspace with no model in `.ur/settings.json` or `.ur/settings.local.json`.
82
+ The result is validated and written to the gitignored local settings file.
83
+ User-global and built-in model defaults do not silently select a model for a
84
+ new folder. `--model`, `OLLAMA_MODEL`, `UR_MODEL`, agent configuration,
85
+ `--settings`, managed settings, and resumed sessions are deliberate selections
86
+ and therefore do not open the startup picker. Fresh `-p` runs without one of
87
+ those inputs fail with an actionable message before making a model request.
88
+
80
89
  Use this to inspect the active runtime path:
81
90
 
82
91
  ```sh
@@ -127,8 +136,8 @@ UR_MODEL=qwen2.5-coder:7b
127
136
  ```
128
137
 
129
138
  `OLLAMA_MODEL` selects the model name and takes precedence over `UR_MODEL` only
130
- for Ollama runtime sessions. If neither is set, UR lets its Ollama router choose
131
- from the model list advertised by the configured Ollama app.
139
+ for Ollama runtime sessions. If neither is set and the workspace has no saved
140
+ model, interactive startup asks and headless startup requires `--model`.
132
141
 
133
142
  ### Discovering LAN Ollama servers
134
143
 
@@ -56,6 +56,11 @@ context.
56
56
 
57
57
  The GitHub install path uses the bundled launcher in `dist/cli.js`, so `bun run bundle` must be run before packaging or pushing a release. `bun run release:check` verifies that `package.json`, `bunfig.toml`, the bundle, docs, and `node ./bin/ur.js --version` agree. The GitHub workflow keeps production bundle, release, package, and global-install checks behind the Bun test step; do not publish, tag, or push release artifacts until that workflow is green.
58
58
 
59
+ For a patch release, keep the version synchronized in `package.json`,
60
+ `bunfig.toml`, the VS Code extension manifest, the JetBrains Gradle build,
61
+ `documentation/index.html`, `technical/README.md`, and `CHANGELOG.md`. Rebuild
62
+ `dist/cli.js` after changing the version.
63
+
59
64
  ## Build
60
65
 
61
66
  ```sh
@@ -73,6 +78,7 @@ only the root README. Check:
73
78
  - `CHANGELOG.md`
74
79
  - `docs/`
75
80
  - `documentation/`
81
+ - `technical/`
76
82
  - `examples/`
77
83
  - extension and plugin README files when the feature affects them
78
84
 
@@ -80,6 +86,11 @@ For top-level commands, also update the static documentation site command data
80
86
  in `documentation/app.js` and any relevant tutorial section in
81
87
  `documentation/index.html`.
82
88
 
89
+ For slash-command changes, update `technical/03-slash-commands.md` and run
90
+ `bun test test/commandRegistryIntegrity.test.ts`. That test verifies unique
91
+ canonical names and aliases, non-empty descriptions, loadable implementations,
92
+ and coverage of every visible shipped command in the technical reference.
93
+
83
94
  For command surfaces that write `.ur/` state, update configuration and
84
95
  validation docs with the generated files and cleanup expectations.
85
96
 
@@ -182,12 +182,13 @@ ur sandbox check
182
182
  gates.
183
183
 
184
184
  ```sh
185
- ur ci-loop --command "bun test" --max-attempts 3
185
+ ur ci-loop --command "bun test" --cwd . --max-attempts 3
186
186
  ur test-first detect
187
187
  ```
188
188
 
189
189
  If the runner says "No tests found", check the working directory printed by
190
- the result and run from the test root or pass it explicitly:
190
+ the result and run from the test root or pass it explicitly. This configuration
191
+ failure stops after the first attempt and does not invoke a fix agent:
191
192
 
192
193
  ```sh
193
194
  ur ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3
package/docs/USAGE.md CHANGED
@@ -8,6 +8,13 @@ UR is a terminal agent. Running `ur` opens an interactive session in the current
8
8
  ur
9
9
  ```
10
10
 
11
+ On the first interactive run in a folder without a workspace model, UR opens
12
+ the provider-first model picker before the REPL. A validated choice is saved to
13
+ `.ur/settings.local.json` and reused in that workspace. A global user model is
14
+ not silently copied into new folders. Shared `.ur/settings.json`, managed,
15
+ `--settings`, agent, CLI, environment, and resumed-session choices remain
16
+ explicit inputs and skip this one-time picker.
17
+
11
18
  Use interactive mode for iterative coding, debugging, research, and repository exploration. The session can read project instructions, use tools, call slash commands, and keep resumable conversation history.
12
19
 
13
20
  Useful options:
@@ -29,9 +36,13 @@ UR also accepts custom "Other" answers when the dialog includes one.
29
36
  Print mode is useful for scripts and shell pipelines:
30
37
 
31
38
  ```sh
32
- ur -p "write a changelog entry for the current diff"
39
+ ur -p --model qwen2.5-coder:7b "write a changelog entry for the current diff"
33
40
  ```
34
41
 
42
+ In a fresh workspace without a configured model, print mode exits before any
43
+ model request and tells the caller to pass `--model <model>` or run interactive
44
+ setup. This keeps automation deterministic instead of selecting a default.
45
+
35
46
  Output formats:
36
47
 
37
48
  ```sh
@@ -57,8 +68,9 @@ in this order:
57
68
  1. `OLLAMA_MODEL`
58
69
  2. `UR_MODEL`
59
70
 
60
- If neither variable is set and `ollama` is the selected provider, UR lets its
61
- Ollama router choose from the models exposed by your local Ollama app.
71
+ If neither variable is set, a fresh workspace requires an interactive choice.
72
+ After the provider/model pair has been stored locally, that exact pair is used
73
+ for subsequent sessions.
62
74
 
63
75
  You can also choose the model for a single session:
64
76
 
@@ -88,6 +100,12 @@ use `ollama.host` in settings if you want plain `ur` to default to a LAN host.
88
100
  Models exposed by the chosen Ollama app are valid, including local models and
89
101
  Ollama Cloud-backed models.
90
102
 
103
+ Ollama Cloud models use a 120-second default bound for both response-header
104
+ waiting and stream consumption. A deliberate stream deadline is returned
105
+ directly instead of being replayed through the non-streaming fallback. Local
106
+ Ollama models keep the five-minute default. Set `API_TIMEOUT_MS` to explicitly
107
+ override either default for the current process.
108
+
91
109
  UR-Nexus also has explicit provider commands for legal access paths:
92
110
 
93
111
  ```sh
@@ -241,7 +259,9 @@ UR includes slash commands and CLI subcommands for common workflows:
241
259
  - `ur escalate ...` to plan, run, or ask an oracle model for hard tasks
242
260
  - `ur arena ...` to run multiple agents on the same task and select a winner
243
261
  - `ur test-first ...` to detect compile/test/lint commands, store failure traces, and install after-edit gates
244
- - `ur ci-loop ...` to run tests, repair failures, and rerun with a bounded loop
262
+ - `ur ci-loop ...` to run tests in an explicit working directory, repair real
263
+ failures, and rerun with a bounded loop. A "No tests found" result stops
264
+ after one attempt and reports how to correct `--cwd`.
245
265
  - `ur artifacts ...` to capture reviewable diffs, test runs, notes, and feedback
246
266
  - `ur ide diff ...` to capture editor-readable inline diff bundles
247
267
  - `ur acp ...` to start/stop/status the Agent Communication Protocol server for IDE extensions
@@ -334,7 +354,7 @@ ur context-pack remember --accepted "Use p-map for concurrency" --scope project
334
354
  ur context-pack compress
335
355
  ur acp serve --port 8123
336
356
  ur exec "add tests for the parser" --concurrency 4 --json
337
- ur ci-loop --command "bun test" --dry-run
357
+ ur ci-loop --command "bun test" --cwd . --dry-run
338
358
  ur artifacts capture-diff
339
359
  ur bg run "fix the flaky parser test" --worktree --dry-run
340
360
  ur worktree list
@@ -19,10 +19,42 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected: the version from package.json, e.g. "1.35.1 (UR-Nexus)"
22
+ # expected for this release: "1.45.5 (UR-Nexus)"
23
23
  ```
24
24
 
25
- ## 0.1 Permission safety and context pack (1.19.0)
25
+ ## 0.1 First-workspace model selection (1.45.4)
26
+
27
+ In a new temporary directory, run `ur`. Expected: before the REPL appears, UR
28
+ opens the provider-first picker. After selecting a connected provider and one
29
+ of its models, `.ur/settings.local.json` contains both `provider.active` and
30
+ the selected model. A second `ur` run in the same directory reuses that local
31
+ pair without showing the startup picker.
32
+
33
+ Before making the interactive choice, the equivalent headless command must
34
+ exit non-zero without contacting a model:
35
+
36
+ ```sh
37
+ ur -p "say hi"
38
+ ```
39
+
40
+ Expected: `No model has been selected for this workspace`. Supplying
41
+ `--model <model>`, `OLLAMA_MODEL`, or `UR_MODEL` bypasses the gate for that run.
42
+
43
+ ### 0.1.1 Ollama Cloud latency containment (1.45.5)
44
+
45
+ Run the deterministic regression coverage:
46
+
47
+ ```sh
48
+ bun test test/ollamaTimeout.test.ts
49
+ ```
50
+
51
+ Expected: the cloud-model timeout, override-precedence, stream-deadline, and
52
+ fallback-suppression cases pass. A model ending in `:cloud` defaults to 120
53
+ seconds for response headers and streaming; a local model retains 300 seconds.
54
+ `API_TIMEOUT_MS` wins over both. When a cloud stream reaches its deliberate
55
+ deadline, the request fails once instead of starting a non-streaming replay.
56
+
57
+ ## 0.2 Permission safety and context pack (1.19.0)
26
58
 
27
59
  In a project checkout:
28
60
 
@@ -47,7 +79,7 @@ Expected:
47
79
  - `remember` appends task memory entries under `.ur/context/task-memory.jsonl`.
48
80
  - `compress` writes `.ur/context/compressed.md`.
49
81
 
50
- ## 0.2 Test-first execution loop (1.18.0)
82
+ ## 0.3 Test-first execution loop (1.18.0)
51
83
 
52
84
  In a project checkout:
53
85
 
@@ -74,7 +106,7 @@ ur test-first --max-attempts 1
74
106
  Expected: a non-zero command creates a log under
75
107
  `.ur/test-first/traces/`, and the command reports `exhausted`, not `passed`.
76
108
 
77
- ## 0.3 Reliable repo editing (1.17.0)
109
+ ## 0.4 Reliable repo editing (1.17.0)
78
110
 
79
111
  In a disposable checkout:
80
112
 
@@ -92,7 +124,7 @@ Expected:
92
124
  - If the check command exits non-zero, every touched file is restored and the
93
125
  JSON result reports `"rolledBack": true`.
94
126
 
95
- ## 0.4 Network Ollama discovery (1.16.0)
127
+ ## 0.5 Network Ollama discovery (1.16.0)
96
128
 
97
129
  With at least one other Ollama server reachable on your LAN:
98
130
 
@@ -168,6 +200,11 @@ Expected:
168
200
  UR_VERIFIER_MODE=strict ur # default, false claim rejected
169
201
  ```
170
202
 
203
+ Also prompt the model to end with `Let me create index.html now.` while
204
+ forbidding tool calls. Strict mode must inject a correction and continue rather
205
+ than accepting the promise as completion. Conditional text such as `If you
206
+ approve, I'll create it` must not trigger this gate.
207
+
171
208
  ## 3. L1 loop detector fires
172
209
 
173
210
  ```text
@@ -292,6 +329,9 @@ ur artifacts capture-tests --command "bun test"
292
329
  ```
293
330
 
294
331
  Expected: no `unknown option` or `too many arguments` parser errors.
332
+ The CI-loop result should include the resolved working directory. If that
333
+ directory has no matching tests, the run should stop after its first attempt
334
+ with `--cwd` guidance and must not launch a fix agent.
295
335
 
296
336
  ## What to do if any step fails
297
337
 
package/docs/providers.md CHANGED
@@ -431,6 +431,13 @@ Local/server providers use their normal endpoints:
431
431
  - llama.cpp server mode: `http://localhost:8080/v1`
432
432
  - vLLM server mode: `http://localhost:8000/v1`
433
433
 
434
+ Ollama models whose names end in `:cloud` use a 120-second default for the
435
+ response-header phase and a 120-second total stream deadline. UR does not
436
+ automatically replay a cloud request after that stream deadline, preventing a
437
+ bounded failure from expanding into the shared non-streaming fallback and
438
+ retry chain. Local Ollama models retain the five-minute default. A positive
439
+ `API_TIMEOUT_MS` or explicit request timeout overrides these defaults.
440
+
434
441
  ## Optional Live Provider Smoke
435
442
 
436
443
  `bun run provider:smoke` runs optional live checks only for providers with the
@@ -2,7 +2,7 @@ const featureGroups = [
2
2
  {
3
3
  title: 'Core agent runtime',
4
4
  tags: ['interactive', 'headless', 'models'],
5
- text: 'Interactive terminal sessions, one-shot print mode, JSON and stream-json output, resumable conversations, custom agents, model routing, local runtimes, and legal provider adapters.',
5
+ text: 'Interactive terminal sessions with first-workspace provider/model selection, deterministic one-shot print mode, JSON and stream-json output, resumable conversations, custom agents, model routing, local runtimes, and legal provider adapters.',
6
6
  commands: ['ur', 'ur -p', 'ur --resume', 'ur --continue', 'ur --model <model>', 'ur provider'],
7
7
  },
8
8
  {
@@ -72,15 +72,15 @@ const commands = [
72
72
  name: 'ur',
73
73
  category: 'Core',
74
74
  aliases: [],
75
- summary: 'Start an interactive UR-Nexus session in the current workspace.',
75
+ summary: 'Start an interactive session; a fresh workspace must choose and locally persist a validated provider/model pair first.',
76
76
  examples: ['ur', 'ur --model qwen3-coder:480b-cloud', 'ur --continue', 'ur --resume'],
77
77
  },
78
78
  {
79
79
  name: 'ur -p',
80
80
  category: 'Core',
81
81
  aliases: ['--print'],
82
- summary: 'Run one prompt headlessly and exit. This is the base mode for scripts, CI, evals, triggers, SDK calls, and A2A tasks.',
83
- examples: ['ur -p "Summarize this repository"', 'ur -p --output-format json "Review the current diff"', 'ur -p --json-schema \'{"type":"object"}\' "Return structured output"'],
82
+ summary: 'Run one prompt headlessly and exit. Fresh workspaces require an explicit or workspace-configured model instead of loading a default.',
83
+ examples: ['ur -p --model qwen3-coder:480b-cloud "Summarize this repository"', 'ur -p --model qwen3-coder:480b-cloud --output-format json "Review the current diff"', 'ur -p --model qwen3-coder:480b-cloud --json-schema \'{"type":"object"}\' "Return structured output"'],
84
84
  },
85
85
  {
86
86
  name: 'acp',
@@ -191,8 +191,8 @@ const commands = [
191
191
  name: 'ci-loop',
192
192
  category: 'Automation',
193
193
  aliases: ['heal'],
194
- summary: 'Run a build or test command, summarize failures, invoke a fix agent, and rerun with a bounded retry budget.',
195
- examples: ['ur ci-loop --command "bun test" --dry-run', 'ur ci-loop --command "bun test" --max-attempts 3', 'ur ci-loop --from-log failure.log --dry-run', 'ur ci-loop --command "bun test" --commit'],
194
+ summary: 'Run a build or test command in an explicit working directory, preserve useful failure context, and rerun real failures with a bounded fix budget. No-test configuration failures stop immediately.',
195
+ examples: ['ur ci-loop --command "bun test" --cwd . --dry-run', 'ur ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3', 'ur ci-loop --from-log failure.log --cwd . --dry-run', 'ur ci-loop --command "bun test" --cwd . --json'],
196
196
  },
197
197
  {
198
198
  name: 'context-pack',
@@ -264,13 +264,6 @@ const commands = [
264
264
  summary: 'Track persistent long-horizon objectives with notes, linked workflows, and resumable execution.',
265
265
  examples: ['ur goal add release-docs --objective "Ship professional docs" --workflow docs', 'ur goal note release-docs --note "Command reference drafted"', 'ur goal resume release-docs --dry-run', 'ur goal done release-docs'],
266
266
  },
267
- {
268
- name: 'update',
269
- category: 'Ops',
270
- aliases: ['upgrade'],
271
- summary: 'Check npm for UR-Nexus updates.',
272
- examples: ['ur update', 'ur upgrade'],
273
- },
274
267
  {
275
268
  name: 'connect',
276
269
  category: 'Providers',
@@ -432,6 +425,41 @@ const commands = [
432
425
  summary: 'Parse GitHub, Slack, or generic webhook payloads and optionally launch a headless UR run.',
433
426
  examples: ['ur trigger parse --file payload.json --source github', 'ur trigger run --file payload.json --keyword /ur --dry-run', 'ur trigger run --file slack.json --max-turns 8'],
434
427
  },
428
+ {
429
+ name: 'audit',
430
+ category: 'Verification',
431
+ aliases: [],
432
+ summary: 'Export the hash-chained project audit trail or verify it for tampering.',
433
+ examples: ['ur audit export --format jsonl', 'ur audit export --format csv --out audit.csv', 'ur audit verify'],
434
+ },
435
+ {
436
+ name: 'cloud',
437
+ category: 'Agent Platform',
438
+ aliases: [],
439
+ summary: 'Run detached best-of-N tasks, inspect their results, and explicitly apply a selected winner.',
440
+ examples: ['ur cloud run "speed up parser" --attempts 3', 'ur cloud list', 'ur cloud show <id>', 'ur cloud apply <id>'],
441
+ },
442
+ {
443
+ name: 'recipe',
444
+ category: 'Automation',
445
+ aliases: ['recipes'],
446
+ summary: 'Create and run structured-output playbooks whose child result must satisfy the recipe schema.',
447
+ examples: ['ur recipe init triage', 'ur recipe list', 'ur recipe run triage "login returns 500"'],
448
+ },
449
+ {
450
+ name: 'thread',
451
+ category: 'Sessions',
452
+ aliases: ['threads'],
453
+ summary: 'Share a session transcript through the local artifacts server or list shared threads.',
454
+ examples: ['ur thread share', 'ur thread list', 'ur thread share <session-id>'],
455
+ },
456
+ {
457
+ name: 'wiki',
458
+ category: 'Knowledge',
459
+ aliases: ['repo-wiki'],
460
+ summary: 'Generate a living repository wiki and map, inspect status, or install its maintenance hook.',
461
+ examples: ['ur wiki generate', 'ur wiki map', 'ur wiki status', 'ur wiki install-hook'],
462
+ },
435
463
  {
436
464
  name: 'update',
437
465
  category: 'Ops',
@@ -472,7 +500,7 @@ const slashGroups = [
472
500
  {
473
501
  title: 'Agent skills',
474
502
  items: ['/debug-v2', '/refactor', '/paper-implementation', '/benchmark', '/security-review', '/dockerize', '/latex-paper', '/simplify', '/debug'],
475
- text: 'Bundled slash skills that dispatch focused agent work in isolated git worktrees with clean commits and PR output.',
503
+ text: 'Bundled slash skills that dispatch focused work in isolated git worktrees, keep changes local, ask before the final full suite, and publish only after a separate explicit request.',
476
504
  },
477
505
  {
478
506
  title: 'Memory and evidence',
@@ -486,8 +514,8 @@ const slashGroups = [
486
514
  },
487
515
  {
488
516
  title: 'Models, tools, and interop',
489
- items: ['/model', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/sdk', '/a2a-card'],
490
- text: 'Pick models, inspect capabilities, escalate to oracle models, manage MCP/plugin extensions, and expose interop surfaces.',
517
+ items: ['/model', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/skill', '/sdk', '/a2a-card'],
518
+ text: 'Pick models, inspect capabilities, manage MCP/plugin extensions, browse prompt skills with /skills, run executable workflows with /skill, and expose interop surfaces.',
491
519
  },
492
520
  {
493
521
  title: 'Security operations',
@@ -502,7 +530,7 @@ const slashGroups = [
502
530
  {
503
531
  title: 'Preferences and environment',
504
532
  items: ['/config', '/permissions', '/sandbox', '/mode', '/theme', '/vim', '/terminal-setup', '/usage', '/ide'],
505
- text: 'Configure permissions, sandboxing, UI preferences, IDE integration, and runtime environment details.',
533
+ text: 'Configure permissions and UI preferences; /sandbox combines its interactive settings with status, check, init, eval, and exclude operations.',
506
534
  },
507
535
  ];
508
536
 
@@ -662,8 +690,8 @@ const examples = [
662
690
  },
663
691
  {
664
692
  title: 'Self-healing CI',
665
- text: 'Run a test command, summarize failures, attempt a bounded fix loop, and rerun.',
666
- code: 'ur ci-loop --command "bun test" --dry-run\nur ci-loop --command "bun test" --max-attempts 3',
693
+ text: 'Run in an explicit cwd, preserve useful assertion and stack context, and attempt a bounded fix loop only for actionable failures.',
694
+ code: 'ur ci-loop --command "bun test" --cwd . --dry-run\nur ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3',
667
695
  },
668
696
  {
669
697
  title: 'Test-first command evidence',
@@ -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.45.3</p>
47
+ <p class="eyebrow">Version 1.45.5</p>
48
48
  <h1>UR-Nexus Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
50
50
  </div>
@@ -89,6 +89,10 @@
89
89
  <strong>Test-first execution</strong>
90
90
  <span><code>ur test-first</code> detects compile/test/lint commands, stores failure traces, and installs edit-time verifier gates.</span>
91
91
  </article>
92
+ <article>
93
+ <strong>Deterministic commands</strong>
94
+ <span>The external runtime exposes 150 commands and 217 unique slash tokens; registry tests reject ambiguous names, broken loaders, and undocumented visible commands.</span>
95
+ </article>
92
96
  <article>
93
97
  <strong>Safety and context</strong>
94
98
  <span><code>ur safety</code> evaluates command risk. <code>ur context-pack</code> writes architecture context and task memory.</span>
@@ -122,13 +126,13 @@ ur --model qwen3-coder:480b-cloud</code></pre>
122
126
  <article class="step">
123
127
  <span>3</span>
124
128
  <h3>Run once in scripts</h3>
125
- <pre><code>ur -p "Summarize this repository"
126
- ur -p --output-format json "Review the current diff"</code></pre>
129
+ <pre><code>ur -p --model qwen3-coder:480b-cloud "Summarize this repository"
130
+ ur -p --model qwen3-coder:480b-cloud --output-format json "Review the current diff"</code></pre>
127
131
  </article>
128
132
  </div>
129
133
  <div class="callout">
130
134
  <strong>Runtime requirement</strong>
131
- <p>UR expects Bun. For local-first work, run a local Ollama app/server at <code>http://localhost:11434/api</code>. Set <code>OLLAMA_MODEL</code> or <code>UR_MODEL</code> to force a model route.</p>
135
+ <p>UR expects Bun. On the first interactive run in a workspace, choose a provider and model; UR validates and saves the pair locally before starting the session. Fresh print-mode workspaces require <code>--model</code> or another explicit model source.</p>
132
136
  </div>
133
137
  </section>
134
138
 
@@ -159,9 +163,14 @@ ur config set provider.fallback ollama</code></pre>
159
163
  </article>
160
164
  <article>
161
165
  <h3>Status bar and updates</h3>
162
- <pre><code>Ollama | llama3 | ask | main | update 1.37.3 available</code></pre>
166
+ <pre><code>Ollama | llama3 | ask | main | update 1.45.5 available</code></pre>
163
167
  <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>
164
168
  </article>
169
+ <article>
170
+ <h3>Ollama Cloud latency bounds</h3>
171
+ <pre><code>API_TIMEOUT_MS=120000 ur</code></pre>
172
+ <p>Cloud-tagged Ollama models default to bounded response-header and streaming phases. A stream deadline is surfaced directly instead of starting a non-streaming retry chain. Local models retain their longer default, and <code>API_TIMEOUT_MS</code> remains an explicit override.</p>
173
+ </article>
165
174
  </div>
166
175
  </section>
167
176
 
@@ -396,13 +405,14 @@ ur arena "fix the parser" --agents 3 --apply</code></pre>
396
405
  <article>
397
406
  <h3>Repair failing CI in a bounded loop</h3>
398
407
  <ol>
399
- <li>Run the build or test command.</li>
400
- <li>Summarize the failure and launch a fix attempt.</li>
408
+ <li>Run the build or test command in the printed working directory.</li>
409
+ <li>Preserve the assertion and stack context, then launch a fix attempt only for an actionable failure.</li>
401
410
  <li>Rerun until the command passes or the retry budget is exhausted.</li>
402
411
  </ol>
403
- <pre><code>ur ci-loop --command "bun test" --dry-run
404
- ur ci-loop --command "bun test" --max-attempts 3
405
- ur ci-loop --from-log failure.log --dry-run</code></pre>
412
+ <p>A <code>No tests found</code> result stops after the first attempt and points to <code>--cwd</code>; it does not invoke a fix agent.</p>
413
+ <pre><code>ur ci-loop --command "bun test" --cwd . --dry-run
414
+ ur ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3
415
+ ur ci-loop --from-log failure.log --cwd . --dry-run</code></pre>
406
416
  </article>
407
417
 
408
418
  <article>
@@ -453,7 +463,7 @@ ur artifacts approve 1</code></pre>
453
463
  <pre><code>OLLAMA_MODEL=qwen3-coder:480b-cloud ur
454
464
  UR_MODEL=qwen3-coder:480b-cloud ur
455
465
  ur --model qwen2.5-coder:latest</code></pre>
456
- <p><code>OLLAMA_MODEL</code> wins over <code>UR_MODEL</code>. Without either, UR routes from local Ollama model inventory.</p>
466
+ <p><code>OLLAMA_MODEL</code> wins over <code>UR_MODEL</code>. Without an explicit or workspace model, interactive startup opens the provider/model picker and fresh print mode exits before model execution.</p>
457
467
  </article>
458
468
  <article>
459
469
  <h3>Permissions</h3>
@@ -476,7 +486,7 @@ ur context-pack compress</code></pre>
476
486
  UR_VERIFIER_MODE=loose
477
487
  UR_VERIFIER_MODE=off
478
488
  UR_VERIFIER_AUTO_SUBAGENT=1</code></pre>
479
- <p>L1 gates catch false done claims and loops. <code>/verify</code> manually runs deeper verification.</p>
489
+ <p>L1 gates catch false done claims, immediate-action promises that end without their tool call, and loops. <code>/verify</code> manually runs deeper verification.</p>
480
490
  <p>Interactive users can set <code>"verifier": { "askBeforeGates": true }</code> in <code>.ur/settings.json</code> (or via <code>ur config set verifier.askBeforeGates true</code>) to have UR ask before running project test/typecheck/lint gates after a task, instead of running them automatically. Default is <code>false</code> (auto-run gates).</p>
481
491
  </article>
482
492
  <article>
@@ -554,6 +564,12 @@ ur agent-inspect --file session.jsonl
554
564
  ur artifacts list
555
565
  ur eval report starter
556
566
  ur claim-ledger validate</code></pre>
567
+ </article>
568
+ <article>
569
+ <h3>CI loop reports no tests</h3>
570
+ <p>Use the working directory printed in the result. The loop stops after one attempt because changing code cannot repair a test-discovery cwd error.</p>
571
+ <pre><code>ur ci-loop --command "bun test" --cwd . --max-attempts 3
572
+ ur ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3</code></pre>
557
573
  </article>
558
574
  <article>
559
575
  <h3>New agent-platform command is missing</h3>
@@ -5,7 +5,7 @@ plugins {
5
5
  }
6
6
 
7
7
  group = "dev.urnexus"
8
- version = "1.45.3"
8
+ version = "1.45.5"
9
9
 
10
10
  repositories {
11
11
  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.45.3",
5
+ "version": "1.45.5",
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.45.3",
3
+ "version": "1.45.5",
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",