ur-agent 1.65.12 → 1.65.14

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.
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.65.12 (UR-Nexus)"
22
+ # expected for this release: "1.65.14 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -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.12</p>
48
+ <p class="eyebrow">Version 1.65.14</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>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.65.12"
10
+ version = "1.65.14"
11
11
 
12
12
  repositories {
13
13
  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.65.12",
5
+ "version": "1.65.14",
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.65.12",
3
+ "version": "1.65.14",
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",
@@ -74,6 +74,29 @@ constraints. Mutually independent tasks with no conflicting shared mutations
74
74
  can be delegated together, while dependent or conflicting work stays
75
75
  sequential.
76
76
 
77
+ The proactive model lifecycle is explicit:
78
+ `TaskCreate` → inspect successful result → `TaskUpdate(in_progress)` → inspect
79
+ successful result → `Write`/`Edit`/mutating `Bash`/worker. Task setup and its
80
+ dependent mutation are never one parallel batch. A feature-rich one-file build
81
+ is non-trivial even if implementation uses one `Write`; classification follows
82
+ the requested outcomes and verification burden, not the file or tool-call
83
+ count. Approved-plan handoffs require task creation as their next
84
+ state-changing action, and Ollama/Kimi receives the same ordered rule in its
85
+ compact tool-discipline section. If earlier tasks are all terminal, the model
86
+ must create a new cohesive outcome or reopen the relevant task before new
87
+ workspace work.
88
+
89
+ The runtime gate accepts an actionable `pending` or `in_progress` record; the
90
+ stricter model-facing sequence keeps status truthful before work begins.
91
+ `TodoWrite` is the equivalent single-call setup in legacy/headless pools, with
92
+ the selected item already `in_progress`. Partial Task V2 exposure never masks
93
+ an available `TodoWrite`. Bare/simple, REPL-simple, coordinator, custom-agent,
94
+ and override-prompt paths retain a usable planner and capability-aware task
95
+ contract, so the gate never instructs those modes to call a missing tool.
96
+ If a user explicitly filters every planner from a custom tool pool, runtime
97
+ fails closed and tells the user to enable Task V2/`TodoWrite` or explicitly
98
+ disable the gate; it never tells the model to call a tool that is absent.
99
+
77
100
  Task IDs remain strings in storage and tool output. Model inputs for
78
101
  `TaskCreate` dependencies and `TaskGet`/`TaskUpdate` identifiers may also use a
79
102
  positive safe-integer JSON number; the tool boundary normalizes it to the
@@ -92,6 +115,24 @@ redirection, backgrounding, sandbox overrides, and permission-time rewrites to
92
115
  mutating commands fail closed. The preview command remains a Bash side effect
93
116
  and still follows normal permission, sandbox, and plan-worker rules.
94
117
 
118
+ Control-plane operations that establish or tear down tracking cannot depend on
119
+ an already-actionable task: `TeamCreate`, `TeamDelete`, `TaskStop`/`KillShell`,
120
+ and structured team shutdown/plan-response messages are narrow task-gate
121
+ exceptions. Their own schemas, mode checks, active-member checks, and normal
122
+ permissions remain authoritative. Loading a `Skill` and taking a desktop
123
+ screenshot are read-only wrappers; downstream skill actions, desktop
124
+ click/type, API/database/browser/MCP mutations, and future tools classified
125
+ state-changing at runtime remain task-gated.
126
+
127
+ Syntax verification has the same task-gate-only separation. A strictly parsed
128
+ `node --check <single-file>` or the bounded HTML checker that reads one file,
129
+ constructs but never invokes its first `<script>` body, and prints only a fixed
130
+ syntax result may run after a task-free one-shot Write. Generic `node -e`,
131
+ additional statements or invocation, mismatched files, flags, redirects,
132
+ expansion, backgrounding, sandbox overrides, and permission-time rewrites do
133
+ not qualify. Node remains non-read-only for Bash permission and sandbox
134
+ purposes, so this compatibility path cannot become a general execution bypass.
135
+
95
136
  Task completion also protects that lifecycle boundary. When the final
96
137
  actionable `in_progress` task has a successful `Write`/`Edit`/`MultiEdit`/
97
138
  `NotebookEdit` after its recorded start but no later successful inspection,
@@ -117,7 +158,11 @@ Descriptions are optional and are never fabricated from labels. The runtime
117
158
  accepts only lossless compatibility forms such as string choices and recognized
118
159
  question-text aliases; it does not turn arbitrary prose or flat option rows into
119
160
  invented questions. More than four blocking decisions are asked in later
120
- rounds.
161
+ rounds. The sole presentation-only repair compacts a safe explicit header of at
162
+ most 500 characters to one bounded first-word chip when it exceeds 12
163
+ characters. The question, options, labels, descriptions, previews, metadata,
164
+ and selection mode remain byte-for-byte unchanged. Control/ANSI-bearing or
165
+ grossly oversized headers still fail validation.
121
166
 
122
167
  One narrow end-turn recovery exists for weak models that clearly attempted this
123
168
  tool but failed to emit a native call. On an interactive main-agent turn with
@@ -126,10 +171,11 @@ no existing tool use, the runtime may recover either one canonical
126
171
  to invoke `AskUserQuestion`, or one standalone Markdown decision menu with
127
172
  exactly one bold question, 2–8 bold labeled options with descriptions, and a
128
173
  terminal instruction to select an option. The recovered object must pass the
129
- live `AskUserQuestion` schema unchanged before the normal tool executor opens
130
- the UI. JSON repair, truncation, duplicate/ambiguous candidates, casual “A or
131
- B?” prose, examples, incomplete menus, background workers, headless sessions,
132
- and unavailable/disabled tools all fail closed.
174
+ live `AskUserQuestion` schema unchanged except for that same deterministic
175
+ UI-header compaction before the normal tool executor opens the UI. JSON repair,
176
+ question/choice truncation, duplicate/ambiguous candidates, casual “A or B?”
177
+ prose, examples, incomplete menus, background workers, headless sessions, and
178
+ unavailable/disabled tools all fail closed.
133
179
 
134
180
  Answers and annotations are not model input fields. They are accepted only
135
181
  during post-permission validation after the interactive UI has returned one
@@ -18,6 +18,13 @@ The main agent can spawn subagents. Built-in agent types
18
18
  | `Explore`, `Plan` | built-in read-only search and planning agents; registered in the standard npm bundle so plan-mode instructions never advertise missing worker types |
19
19
 
20
20
  Ordinary `Agent` subagents do not require experimental Teams/swarm mode.
21
+ Every ordinary worker launch does require successful task setup and an
22
+ `in_progress` parent task first; the exact built-in read-only `Explore`/`Plan`
23
+ plan-mode path below is the only exception. Coordinator mode exposes Task V2
24
+ tools (or `TodoWrite` in a legacy pool) instead of directing workers through an
25
+ unsatisfiable gate. Independent tasks may launch in one worker wave only after
26
+ their task records exist and the tasks actually launching are marked
27
+ `in_progress`.
21
28
  Approved-plan handoff checks the actual tool pool, agent-type allowlist, live
22
29
  `Agent(type)` deny rules, and active built-in definitions. It can fan out
23
30
  independent ready tasks only when a selectable implementation worker remains.
@@ -33,6 +40,10 @@ Custom agents reusing those names, generic agents, teammates, background
33
40
  launches, custom working directories, and worktree launches remain mutating and
34
41
  task-gated. `TeamCreate` and `TeamDelete` also reject plan mode explicitly;
35
42
  team lifecycle state starts only after the plan is approved.
43
+ Outside plan mode, team creation/deletion, structured shutdown responses, and
44
+ emergency `TaskStop` are task-control transitions exempt from the workspace
45
+ task gate so team bootstrap and teardown cannot deadlock. Their tool-specific
46
+ validation still applies, including refusing deletion while members are active.
36
47
 
37
48
  In the standard bundle, `Explore` and `Plan` receive only `Glob`, `Grep`, and
38
49
  `Read`, use `dontAsk` permission mode, and have a second runtime boundary that
@@ -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.12.
3
+ > Audited against the executable source and tests for `ur-agent` v1.65.14.
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/`