ur-agent 1.65.11 → 1.65.13
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/CHANGELOG.md +36 -0
- package/dist/cli.js +1118 -493
- package/docs/VALIDATION.md +1 -1
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
- package/technical/04-tools.md +52 -8
- package/technical/05-providers-and-models.md +9 -6
- package/technical/09-multi-agent.md +12 -4
- package/technical/README.md +1 -1
package/docs/VALIDATION.md
CHANGED
package/documentation/index.html
CHANGED
|
@@ -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.65.
|
|
48
|
+
<p class="eyebrow">Version 1.65.13</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>
|
|
@@ -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.65.
|
|
5
|
+
"version": "1.65.13",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
package/technical/04-tools.md
CHANGED
|
@@ -92,6 +92,33 @@ redirection, backgrounding, sandbox overrides, and permission-time rewrites to
|
|
|
92
92
|
mutating commands fail closed. The preview command remains a Bash side effect
|
|
93
93
|
and still follows normal permission, sandbox, and plan-worker rules.
|
|
94
94
|
|
|
95
|
+
Syntax verification has the same task-gate-only separation. A strictly parsed
|
|
96
|
+
`node --check <single-file>` or the bounded HTML checker that reads one file,
|
|
97
|
+
constructs but never invokes its first `<script>` body, and prints only a fixed
|
|
98
|
+
syntax result may run after a task-free one-shot Write. Generic `node -e`,
|
|
99
|
+
additional statements or invocation, mismatched files, flags, redirects,
|
|
100
|
+
expansion, backgrounding, sandbox overrides, and permission-time rewrites do
|
|
101
|
+
not qualify. Node remains non-read-only for Bash permission and sandbox
|
|
102
|
+
purposes, so this compatibility path cannot become a general execution bypass.
|
|
103
|
+
|
|
104
|
+
Task completion also protects that lifecycle boundary. When the final
|
|
105
|
+
actionable `in_progress` task has a successful `Write`/`Edit`/`MultiEdit`/
|
|
106
|
+
`NotebookEdit` after its recorded start but no later successful inspection,
|
|
107
|
+
runtime, test, shell, or delegated-check result, `TaskUpdate(completed)` is
|
|
108
|
+
soft-deferred: it returns a non-error explanation and leaves the same task
|
|
109
|
+
`in_progress`. The model verifies and retries completion instead of creating a
|
|
110
|
+
duplicate task or discovering an all-terminal dead end on the next corrective
|
|
111
|
+
Edit. The guard is evidence-based and conservative: missing/compacted history,
|
|
112
|
+
non-file work, and intermediate tasks are not guessed into a deferred state.
|
|
113
|
+
|
|
114
|
+
Live plan mode also treats setup of the exact current session plan artifact as
|
|
115
|
+
planning infrastructure rather than implementation. `Write` creates the plan
|
|
116
|
+
file's parent automatically, but weak models may first emit `mkdir -p` for that
|
|
117
|
+
exact parent or the bounded `ls ... || mkdir -p ... && ls ...` check. Only those
|
|
118
|
+
exact-path shapes bypass the task-list requirement; Bash permission and sandbox
|
|
119
|
+
checks still apply, and a hook rewrite, sibling path, extra command, expansion,
|
|
120
|
+
background launch, or sandbox override fails closed at the final boundary.
|
|
121
|
+
|
|
95
122
|
`AskUserQuestion` exposes a request-only model schema: one top-level
|
|
96
123
|
`questions` array with 1–4 complete question objects, each containing
|
|
97
124
|
`question`, a header of at most 12 characters, and 2–8 labeled choices.
|
|
@@ -99,7 +126,24 @@ Descriptions are optional and are never fabricated from labels. The runtime
|
|
|
99
126
|
accepts only lossless compatibility forms such as string choices and recognized
|
|
100
127
|
question-text aliases; it does not turn arbitrary prose or flat option rows into
|
|
101
128
|
invented questions. More than four blocking decisions are asked in later
|
|
102
|
-
rounds.
|
|
129
|
+
rounds. The sole presentation-only repair compacts a safe explicit header of at
|
|
130
|
+
most 500 characters to one bounded first-word chip when it exceeds 12
|
|
131
|
+
characters. The question, options, labels, descriptions, previews, metadata,
|
|
132
|
+
and selection mode remain byte-for-byte unchanged. Control/ANSI-bearing or
|
|
133
|
+
grossly oversized headers still fail validation.
|
|
134
|
+
|
|
135
|
+
One narrow end-turn recovery exists for weak models that clearly attempted this
|
|
136
|
+
tool but failed to emit a native call. On an interactive main-agent turn with
|
|
137
|
+
no existing tool use, the runtime may recover either one canonical
|
|
138
|
+
`questions` object at the very end of a reasoning block that explicitly says
|
|
139
|
+
to invoke `AskUserQuestion`, or one standalone Markdown decision menu with
|
|
140
|
+
exactly one bold question, 2–8 bold labeled options with descriptions, and a
|
|
141
|
+
terminal instruction to select an option. The recovered object must pass the
|
|
142
|
+
live `AskUserQuestion` schema unchanged except for that same deterministic
|
|
143
|
+
UI-header compaction before the normal tool executor opens the UI. JSON repair,
|
|
144
|
+
question/choice truncation, duplicate/ambiguous candidates, casual “A or B?”
|
|
145
|
+
prose, examples, incomplete menus, background workers, headless sessions, and
|
|
146
|
+
unavailable/disabled tools all fail closed.
|
|
103
147
|
|
|
104
148
|
Answers and annotations are not model input fields. They are accepted only
|
|
105
149
|
during post-permission validation after the interactive UI has returned one
|
|
@@ -180,10 +224,10 @@ the intended file.
|
|
|
180
224
|
|
|
181
225
|
`Edit` remains fail-closed rather than applying a fuzzy replacement to similar
|
|
182
226
|
code. When an exact contiguous `old_string` is absent, its bounded error points
|
|
183
|
-
to
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
fail.
|
|
227
|
+
to the most distinctive verified matching line when one exists, rather than an
|
|
228
|
+
unrelated generic delimiter, and tells the model to re-read that region, use a
|
|
229
|
+
smaller current 2–4-line anchor, split distant HTML/CSS/JavaScript sections, and
|
|
230
|
+
never retry the unchanged call. One narrow idempotent case returns success
|
|
231
|
+
without writing: a non-`replace_all` deletion-only edit whose `new_string` is
|
|
232
|
+
already present uniquely and whose larger `old_string` is absent. General
|
|
233
|
+
stale, fuzzy, empty-replacement, and ambiguous matches still fail.
|
|
@@ -111,15 +111,18 @@ ur --discover-ollama # scan the LAN for Ollama servers (ollamaDiscovery.ts)
|
|
|
111
111
|
search, and bounded private cursor state. Compacted context persistence
|
|
112
112
|
requires a 32-byte `UR_OPENAI_RESPONSES_STATE_KEY`.
|
|
113
113
|
- `ollama.ts` selects timeouts from explicit request options, then
|
|
114
|
-
`API_TIMEOUT_MS`, then runtime defaults.
|
|
115
|
-
use 120 seconds; local models
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
`API_TIMEOUT_MS`, then runtime defaults. Remote sessions and ordinary
|
|
115
|
+
`:cloud` models use 120 seconds; local models and Kimi K2.7 Cloud use 300
|
|
116
|
+
seconds because large Kimi coding turns can legitimately take longer than
|
|
117
|
+
two minutes before completing. The same model-aware value is applied while
|
|
118
|
+
waiting for `/api/chat` response headers and as the absolute deadline in
|
|
119
|
+
`readOllamaChunks`.
|
|
118
120
|
- `ur.ts` identifies an Ollama Cloud runtime from both the selected provider and
|
|
119
121
|
the `:cloud` suffix. It disables shared automatic request retries for that
|
|
120
|
-
route, applies the same
|
|
122
|
+
route, applies the same model-aware bound to any permitted non-streaming
|
|
121
123
|
fallback, and skips fallback entirely when the Ollama stream deadline itself
|
|
122
|
-
caused the failure. Explicit `API_TIMEOUT_MS` remains authoritative
|
|
124
|
+
caused the failure. Explicit `API_TIMEOUT_MS` remains authoritative, and
|
|
125
|
+
remote-session safety keeps its 120-second ceiling.
|
|
123
126
|
|
|
124
127
|
## Capability-aware routing
|
|
125
128
|
|
|
@@ -149,6 +149,11 @@ use legacy `TodoWrite` by default, or Task V2 when
|
|
|
149
149
|
- Dependencies block transition or claim until prerequisites are complete.
|
|
150
150
|
- Actionable `pending` or `in_progress` entries open the gate; completed and
|
|
151
151
|
internal entries do not.
|
|
152
|
+
- The last actionable `in_progress` task cannot be terminalized immediately
|
|
153
|
+
after a recorded file mutation with no later successful observable check.
|
|
154
|
+
`TaskUpdate` soft-defers that completion and keeps the same task actionable;
|
|
155
|
+
it does not infer or auto-create a replacement task. A later successful
|
|
156
|
+
inspection/runtime/test/delegated check allows the explicit completion retry.
|
|
152
157
|
- Reads remain unrestricted. Ordinary mutations have a default allowance of
|
|
153
158
|
three preceding tool calls, counted by tool call rather than message.
|
|
154
159
|
Delegation and child mutations always require an actionable parent task.
|
|
@@ -159,10 +164,13 @@ use legacy `TodoWrite` by default, or Task V2 when
|
|
|
159
164
|
exempt so the agent can repair the plan.
|
|
160
165
|
- Creating or updating the exact current-session plan-mode Markdown file is
|
|
161
166
|
also exempt: that file is the planning artifact, not an ordinary workspace
|
|
162
|
-
change.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
change. A bounded Bash bootstrap may only create/check that file's exact
|
|
168
|
+
parent (`mkdir -p`, optionally guarded by the known `ls` pattern); this
|
|
169
|
+
compatibility path remains subject to Bash permission and sandbox checks.
|
|
170
|
+
The exemption and live actionable-task state are re-evaluated at the final
|
|
171
|
+
execution boundary after permission-hook input rewrites. Sibling paths,
|
|
172
|
+
general plans-directory commands, added shell operations, and the filename
|
|
173
|
+
alone outside live plan mode are not exempt.
|
|
166
174
|
- Configure the behavior at
|
|
167
175
|
`tasks.requireBeforeChanges.{enabled,freeReads}`.
|
|
168
176
|
|
package/technical/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UR-Nexus — Technical Specifications
|
|
2
2
|
|
|
3
|
-
> Audited against the executable source and tests for `ur-agent` v1.65.
|
|
3
|
+
> Audited against the executable source and tests for `ur-agent` v1.65.13.
|
|
4
4
|
> Command, tool, flag, provider, and setting claims are checked against the
|
|
5
5
|
> implementation rather than copied from product prose. Release validation
|
|
6
6
|
> keeps this version synchronized and packages the complete `technical/`
|