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.
- package/CHANGELOG.md +37 -0
- package/dist/cli.js +621 -260
- 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 +32 -0
- package/technical/09-multi-agent.md +58 -5
- package/technical/11-integrations.md +4 -3
- package/technical/README.md +2 -2
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.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>
|
|
@@ -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.10",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
package/technical/04-tools.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
122
|
-
tool result
|
|
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
|
|
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
|
|
145
|
-
the current transcript and hands the
|
|
146
|
-
Desktop app;
|
|
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
|
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.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**:
|
|
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).
|