ur-agent 1.65.10 → 1.65.11
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 +27 -0
- package/dist/cli.js +803 -530
- 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 +40 -2
- package/technical/12-security-sandbox-stability.md +17 -0
- 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.11</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.11",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
package/technical/04-tools.md
CHANGED
|
@@ -61,6 +61,10 @@ only after `EnterPlanMode` (or `/plan`) has successfully made the active mode
|
|
|
61
61
|
`plan`. Plan approval may change that mode before permission-edited input is
|
|
62
62
|
revalidated; the executor labels that second validation as post-permission so
|
|
63
63
|
the already-validated exit can finish, while new out-of-mode calls still fail.
|
|
64
|
+
`ExitPlanMode` is exempt from the implementation task-list gate because it is
|
|
65
|
+
the approval/control transition that precedes implementation. Its own plan-mode
|
|
66
|
+
validation remains authoritative, so the exemption does not make a stale
|
|
67
|
+
second exit valid.
|
|
64
68
|
|
|
65
69
|
For non-trivial work, the task list uses one record per cohesive outcome with
|
|
66
70
|
an observable done check rather than one omnibus record. Genuine single-outcome
|
|
@@ -79,7 +83,32 @@ precision-losing numeric IDs are rejected.
|
|
|
79
83
|
Task-gate recovery names the tracking surface that is actually present:
|
|
80
84
|
interactive Task V2 sessions use `TaskCreate`, while default headless sessions
|
|
81
85
|
use `TodoWrite`. It never instructs a model to recover by calling a tool absent
|
|
82
|
-
from that runtime.
|
|
86
|
+
from that runtime. Runtime inspection tracks actionable and total user tasks
|
|
87
|
+
separately: an all-terminal list is reported truthfully and the model is told
|
|
88
|
+
to reopen or create the cohesive remaining task. Real Edit/Bash mutations stay
|
|
89
|
+
gated. One simple `open <loopback-http(s)-URL>` Bash preview is exempt only
|
|
90
|
+
from the task-list gate; remote/file URLs, flags, shell composition, expansion,
|
|
91
|
+
redirection, backgrounding, sandbox overrides, and permission-time rewrites to
|
|
92
|
+
mutating commands fail closed. The preview command remains a Bash side effect
|
|
93
|
+
and still follows normal permission, sandbox, and plan-worker rules.
|
|
94
|
+
|
|
95
|
+
`AskUserQuestion` exposes a request-only model schema: one top-level
|
|
96
|
+
`questions` array with 1–4 complete question objects, each containing
|
|
97
|
+
`question`, a header of at most 12 characters, and 2–8 labeled choices.
|
|
98
|
+
Descriptions are optional and are never fabricated from labels. The runtime
|
|
99
|
+
accepts only lossless compatibility forms such as string choices and recognized
|
|
100
|
+
question-text aliases; it does not turn arbitrary prose or flat option rows into
|
|
101
|
+
invented questions. More than four blocking decisions are asked in later
|
|
102
|
+
rounds.
|
|
103
|
+
|
|
104
|
+
Answers and annotations are not model input fields. They are accepted only
|
|
105
|
+
during post-permission validation after the interactive UI has returned one
|
|
106
|
+
non-empty answer for every question; an unchanged generic approval cannot
|
|
107
|
+
produce a successful “user answered” result. The UI uses prototype-safe records,
|
|
108
|
+
provides a real custom `Other` path for both ordinary and preview questions,
|
|
109
|
+
and does not count selecting `Other` itself as an answer. HTML-configured
|
|
110
|
+
previews are escaped into an inert preformatted-text wrapper rather than
|
|
111
|
+
executed as model-provided markup.
|
|
83
112
|
|
|
84
113
|
## Multi-agent tools
|
|
85
114
|
|
|
@@ -144,8 +173,17 @@ not only a modification timestamp. Full and ranged reads are compared at the
|
|
|
144
173
|
final write boundary, preventing same-timestamp external replacements from
|
|
145
174
|
being overwritten.
|
|
146
175
|
|
|
176
|
+
`Write` requires `file_path` and the complete literal `content` in the same
|
|
177
|
+
structured call. Prose outside the call is never treated as file content, and a
|
|
178
|
+
missing-content failure states that no file was written instead of fabricating
|
|
179
|
+
the intended file.
|
|
180
|
+
|
|
147
181
|
`Edit` remains fail-closed rather than applying a fuzzy replacement to similar
|
|
148
182
|
code. When an exact contiguous `old_string` is absent, its bounded error points
|
|
149
183
|
to a verified matching line when one exists and tells the model to re-read that
|
|
150
184
|
region, use a smaller current 2–4-line anchor, split distant HTML/CSS/JavaScript
|
|
151
|
-
sections, and never retry the unchanged call.
|
|
185
|
+
sections, and never retry the unchanged call. One narrow idempotent case returns
|
|
186
|
+
success without writing: a non-`replace_all` deletion-only edit whose
|
|
187
|
+
`new_string` is already present uniquely and whose larger `old_string` is
|
|
188
|
+
absent. General stale, fuzzy, empty-replacement, and ambiguous matches still
|
|
189
|
+
fail.
|
|
@@ -38,6 +38,23 @@ feature. Its AI-classified `auto` mode is therefore source-only. The accepted
|
|
|
38
38
|
`permissions.classifierPermissionsEnabled` schema field is not read by a
|
|
39
39
|
shipped enforcement path and must not be treated as an active control.
|
|
40
40
|
|
|
41
|
+
Tools that require user interaction are semantically validated again after the
|
|
42
|
+
permission decision even when their input signature did not change. This keeps
|
|
43
|
+
an unchanged generic approval or hook allow-result from being mistaken for the
|
|
44
|
+
interaction result.
|
|
45
|
+
For `AskUserQuestion`, model requests cannot supply `answers` or `annotations`;
|
|
46
|
+
post-permission execution requires an exact, complete, non-empty answer map.
|
|
47
|
+
Question-keyed UI state uses null-prototype records and own-property checks, so
|
|
48
|
+
model-controlled names such as `constructor` or `__proto__` cannot become
|
|
49
|
+
inherited answers or mutate the record prototype. The tool rejects those
|
|
50
|
+
reserved question names at its outer schema as an additional boundary.
|
|
51
|
+
|
|
52
|
+
Model-provided Ask previews are never trusted as executable HTML. When an SDK
|
|
53
|
+
selects the HTML preview format, the runtime escapes raw input into one inert
|
|
54
|
+
`<pre data-ur-preview="text">…</pre>` wrapper and validates that wrapper before
|
|
55
|
+
interaction. Scripts, event handlers, URL attributes, style injection, and
|
|
56
|
+
closing-tag escapes remain text rather than active markup.
|
|
57
|
+
|
|
41
58
|
Bash adds command parsing, command-injection checks, dangerous-pattern
|
|
42
59
|
classification, project safety policy, path validation, and sandbox-aware
|
|
43
60
|
permission decisions. `UR_CODE_DISABLE_COMMAND_INJECTION_CHECK` weakens one of
|
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.11.
|
|
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/`
|