ur-agent 1.65.8 → 1.65.10

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.8 (UR-Nexus)"
22
+ # expected for this release: "1.65.10 (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.8</p>
48
+ <p class="eyebrow">Version 1.65.10</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.8"
10
+ version = "1.65.10"
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.8",
5
+ "version": "1.65.10",
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.8",
3
+ "version": "1.65.10",
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",
@@ -55,6 +55,32 @@ users don't call tools directly.
55
55
  | `EnterWorktree` / `ExitWorktree` | Move the session into/out of an isolated git worktree (worktree mode) | "Do this in a scratch worktree" |
56
56
  | `SendUserMessage` | KAIROS/KAIROS_BRIEF build-only mid-turn brief; not present in the standard npm build | — |
57
57
 
58
+ Task tracking and plan mode are separate state machines. Creating an ordered
59
+ `TaskCreate`/`TodoWrite` list does not enter plan mode; `ExitPlanMode` is valid
60
+ only after `EnterPlanMode` (or `/plan`) has successfully made the active mode
61
+ `plan`. Plan approval may change that mode before permission-edited input is
62
+ revalidated; the executor labels that second validation as post-permission so
63
+ the already-validated exit can finish, while new out-of-mode calls still fail.
64
+
65
+ For non-trivial work, the task list uses one record per cohesive outcome with
66
+ an observable done check rather than one omnibus record. Genuine single-outcome
67
+ work remains one task; files, commands, and tiny mechanical steps are not
68
+ artificial task boundaries. Dependency edges represent only real ordering
69
+ constraints. Mutually independent tasks with no conflicting shared mutations
70
+ can be delegated together, while dependent or conflicting work stays
71
+ sequential.
72
+
73
+ Task IDs remain strings in storage and tool output. Model inputs for
74
+ `TaskCreate` dependencies and `TaskGet`/`TaskUpdate` identifiers may also use a
75
+ positive safe-integer JSON number; the tool boundary normalizes it to the
76
+ canonical decimal string. Zero, negative, fractional, non-finite, Boolean, and
77
+ precision-losing numeric IDs are rejected.
78
+
79
+ Task-gate recovery names the tracking surface that is actually present:
80
+ interactive Task V2 sessions use `TaskCreate`, while default headless sessions
81
+ use `TodoWrite`. It never instructs a model to recover by calling a tool absent
82
+ from that runtime.
83
+
58
84
  ## Multi-agent tools
59
85
 
60
86
  The table below separates the ordinary Agent/Skill tools from coordination
@@ -117,3 +143,9 @@ File Edit/Write/NotebookEdit require the exact content snapshot the model read,
117
143
  not only a modification timestamp. Full and ranged reads are compared at the
118
144
  final write boundary, preventing same-timestamp external replacements from
119
145
  being overwritten.
146
+
147
+ `Edit` remains fail-closed rather than applying a fuzzy replacement to similar
148
+ code. When an exact contiguous `old_string` is absent, its bounded error points
149
+ to a verified matching line when one exists and tells the model to re-read that
150
+ region, use a smaller current 2–4-line anchor, split distant HTML/CSS/JavaScript
151
+ sections, and never retry the unchanged call.
@@ -15,7 +15,31 @@ The main agent can spawn subagents. Built-in agent types
15
15
  | `verification` | verifies a change actually works (used by `/verify`) |
16
16
  | `statusline-setup` | configures the status line |
17
17
  | `ur-code-guide` | answers UR/SDK/API questions |
18
- | `Explore`, `Plan` | read-only search and planning agents, available only in builds compiled with `BUILTIN_EXPLORE_PLAN_AGENTS` and when their runtime gate is enabled; the standard npm bundle does not compile that feature |
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
+
20
+ Ordinary `Agent` subagents do not require experimental Teams/swarm mode.
21
+ Approved-plan handoff checks the actual tool pool, agent-type allowlist, live
22
+ `Agent(type)` deny rules, and active built-in definitions. It can fan out
23
+ independent ready tasks only when a selectable implementation worker remains.
24
+ The Teams gate applies only to named teammates, team files/mailboxes, and
25
+ `TeamCreate`/`TeamDelete`.
26
+
27
+ While the parent is in plan mode, only the exact active built-in `Explore` and
28
+ `Plan` definitions may pass the task-list gate as read-only delegations.
29
+ Plan prompts apply the same type allowlist and live deny rules as the eventual
30
+ `Agent` call, so they do not advertise a planning worker that policy will
31
+ reject.
32
+ Custom agents reusing those names, generic agents, teammates, background
33
+ launches, custom working directories, and worktree launches remain mutating and
34
+ task-gated. `TeamCreate` and `TeamDelete` also reject plan mode explicitly;
35
+ team lifecycle state starts only after the plan is approved.
36
+
37
+ In the standard bundle, `Explore` and `Plan` receive only `Glob`, `Grep`, and
38
+ `Read`, use `dontAsk` permission mode, and have a second runtime boundary that
39
+ rejects any operation classified as mutating even if an actionable task or
40
+ inherited allow rule exists. Ant-native embedded-search builds substitute
41
+ read-only Bash `find`/`grep` access for the dedicated search tools; the same
42
+ runtime mutation boundary remains in force.
19
43
 
20
44
  Custom agents:
21
45
  - `/agents` — interactive management UI.
@@ -30,7 +54,7 @@ Custom agents:
30
54
  `/role-mode install architect|code|debug|ask` installs the four classic role modes as
31
55
  scoped agents.
32
56
 
33
- When present, read-only `Explore`/`Plan` agents omit the UR.md hierarchy only
57
+ Read-only `Explore`/`Plan` agents omit the UR.md hierarchy only
34
58
  when the default-on `tengu_slim_subagent_agentmd` gate remains enabled and the
35
59
  caller did not explicitly provide user context (token saving; see
36
60
  `loadAgentsDir.ts`).
@@ -105,6 +129,21 @@ Interactive sessions use the canonical Task V2 tools. Print/headless sessions
105
129
  use legacy `TodoWrite` by default, or Task V2 when
106
130
  `UR_CODE_ENABLE_TASKS=1`. Both feed the same mutation gate:
107
131
 
132
+ - Approved non-trivial plans are translated into a complete task graph before
133
+ workspace changes: one task record per cohesive outcome with its own
134
+ observable completion check. Separate deliverables are not hidden in one
135
+ umbrella item, while files, tool calls, and tiny mechanical steps are not
136
+ artificial task boundaries.
137
+ - Independent Task V2 records are created together (up to the eight-call
138
+ prompt batch limit), then real dependency edges are added once task IDs are
139
+ known. Default headless sessions instead write the complete outcome list
140
+ through `TodoWrite`; approval handoff detects this capability rather than
141
+ naming unavailable Task V2 tools. When an actual built-in implementation
142
+ worker is active, ready tasks without conflicting shared mutations launch in
143
+ waves of up to eight with bounded scope, acceptance checks, and dependency
144
+ inputs. Dependent or conflicting writes stay sequential, and the lead
145
+ verifies worker evidence before completion. An exposed `Agent` tool with no
146
+ selectable implementation worker is not advertised as delegation support.
108
147
  - Task IDs are ordered numerically (`1, 2, 10`), with non-numeric external IDs
109
148
  sorted stably after numeric IDs.
110
149
  - Dependencies block transition or claim until prerequisites are complete.
@@ -113,15 +152,26 @@ use legacy `TodoWrite` by default, or Task V2 when
113
152
  - Reads remain unrestricted. Ordinary mutations have a default allowance of
114
153
  three preceding tool calls, counted by tool call rather than message.
115
154
  Delegation and child mutations always require an actionable parent task.
155
+ The sole delegation exception is a foreground built-in `Explore` or `Plan`
156
+ call during live plan mode; those agents omit workspace-editing and nested
157
+ delegation tools and remain subject to their child permission checks.
116
158
  - An unreadable task store fails closed. Task create/update/list/get tools stay
117
159
  exempt so the agent can repair the plan.
160
+ - Creating or updating the exact current-session plan-mode Markdown file is
161
+ also exempt: that file is the planning artifact, not an ordinary workspace
162
+ change. The exemption and live actionable-task state are re-evaluated at the
163
+ final execution boundary after permission-hook input rewrites; sibling files
164
+ and the plans directory are not exempt, and the filename alone is not exempt
165
+ outside live plan mode.
118
166
  - Configure the behavior at
119
167
  `tasks.requireBeforeChanges.{enabled,freeReads}`.
120
168
 
121
- The prompt contract tells the model to update each task after observing its
122
- tool result. Runtime dependencies and mutation gating enforce ordering and
169
+ The prompt contract, plan-file structure, plan-agent output, approval handoff,
170
+ task-tool result, and gate recovery text all reinforce the same decomposition
171
+ and worker rules. Runtime dependencies and mutation gating enforce ordering and
123
172
  plan presence; they cannot prove that an arbitrary natural-language task is
124
- semantically complete. Workflows and crews add stricter verdict rules where a
173
+ semantically complete, so the gate deliberately does not require a fake
174
+ minimum task count. Workflows and crews add stricter verdict rules where a
125
175
  machine-checkable execution boundary exists.
126
176
 
127
177
  ## Task routing
@@ -216,6 +266,9 @@ to false.
216
266
  `TeamDelete`, `SendMessage`, `InProcessTeammateTask`, and the
217
267
  `TeammateIdle` hook. `--agent-teams` is registered only in ant builds, so it
218
268
  is not a supported external CLI flag.
269
+ - Team creation and deletion are unavailable while plan mode is active. Use the
270
+ standard read-only `Explore`/`Plan` subagents for parallel planning, then
271
+ create an implementation team after approval.
219
272
  - Coordinator mode (`UR_CODE_COORDINATOR_MODE=1`) is additionally behind the
220
273
  compile-time `COORDINATOR_MODE` feature. The standard npm bundle does not
221
274
  include it; setting the environment variable there has no effect.
@@ -141,9 +141,10 @@ launch Playwright, evaluate fixture assertions, or replay browser interactions.
141
141
  launch a headless `ur -p` run; it is not a resident webhook listener.
142
142
  - `/install-slack-app` only opens the Slack Marketplace installation page and
143
143
  records the click locally.
144
- - `/desktop` (alias `/app`) is conditional on macOS or x64 Windows. It flushes
145
- the current transcript and hands the session to an installed compatible UR
146
- Desktop app; otherwise it offers the platform download.
144
+ - `/desktop` (alias `/app`) is registered only on macOS or x64 Windows. On
145
+ those supported platforms it flushes the current transcript and hands the
146
+ session to an installed compatible UR Desktop app; if the app is missing or
147
+ outdated, it offers the matching platform download.
147
148
  - `/session` (alias `/remote`) is visible only when the current runtime is
148
149
  already in remote mode. It displays the existing remote-session URL; it does
149
150
  not create a remote session. `/remote-env` additionally requires a
@@ -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.8.
3
+ > Audited against the executable source and tests for `ur-agent` v1.65.10.
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/`
@@ -37,7 +37,7 @@ in this release, so it is not advertised as an available backend.
37
37
  - **Package**: `ur-agent`, binary `ur` (`bin/ur.js` → `dist/cli.js`, bundled from `src/entrypoints/cli.tsx`).
38
38
  - **Runtime**: the npm binary uses a Node ≥ 18.18 launcher and requires Bun ≥ 1.3 for the bundled CLI; the TUI uses React 19 and the vendored Ink fork in `src/ink`.
39
39
  - **Local-first**: default model backend is the local Ollama runtime (`http://localhost:11434`); `--offline` disables all cloud paths.
40
- - **Registered commands at this release**: 168 bundled registry entries, 161 visible entries, 237 visible slash invocation tokens, and 70 rows in `ur --help`; fast-path lifecycle/server commands are documented separately in doc 02. User/project skills, installed plugins, workflows, and MCP prompts are additive and normalized by source priority.
40
+ - **Registered commands at this release**: 167 platform-neutral bundled registry entries, 160 visible entries, and 235 visible slash invocation tokens. macOS and x64 Windows add `/desktop` (`/app`) for totals of 168, 161, and 237. There are 70 rows in `ur --help`; fast-path lifecycle/server commands are documented separately in doc 02. User/project skills, installed plugins, workflows, and MCP prompts are additive and normalized by source priority.
41
41
  - **Registered tools**: the built-in pool is assembled per session from `src/tools.ts:getAllBaseTools()` and then filtered by runtime, mode, settings, permissions, and availability. Doc 04 enumerates the public built-ins and every supported gate; connected MCP tools are additive.
42
42
  - **Feature flags**: compile-time `feature(...)` gates (`bun:bundle`) dead-code-eliminate internal-only surfaces from external builds; `USER_TYPE=ant` gates internal commands.
43
43
  - **Project state**: lives under `.ur/` in each repo (artifacts, specs, workflows, guardrails, safety policy, knowledge, memory index, devcontainer config, tools, index).