ur-agent 1.65.13 → 1.66.0
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 +58 -0
- package/dist/cli.js +535 -309
- 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 +39 -0
- package/technical/06-configuration.md +21 -0
- package/technical/07-memory-and-context.md +29 -1
- package/technical/09-multi-agent.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.
|
|
48
|
+
<p class="eyebrow">Version 1.66.0</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.
|
|
5
|
+
"version": "1.66.0",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
package/technical/04-tools.md
CHANGED
|
@@ -74,12 +74,42 @@ 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
|
|
80
103
|
canonical decimal string. Zero, negative, fractional, non-finite, Boolean, and
|
|
81
104
|
precision-losing numeric IDs are rejected.
|
|
82
105
|
|
|
106
|
+
The Kimi/Ollama compatibility parser applies the same task schema instead of a
|
|
107
|
+
smaller parallel implementation. A clearly delimited bare `TaskCreate` object
|
|
108
|
+
may contain `blocks`, `blockedBy`, `addBlocks`, or `addBlockedBy`; a bare
|
|
109
|
+
`TaskUpdate` accepts the live terminal `failed` and `skipped` statuses as well
|
|
110
|
+
as numeric IDs. IDs are normalized to canonical strings, while unknown fields,
|
|
111
|
+
invalid IDs/statuses, ambiguous prose, and unavailable tools fail closed.
|
|
112
|
+
|
|
83
113
|
Task-gate recovery names the tracking surface that is actually present:
|
|
84
114
|
interactive Task V2 sessions use `TaskCreate`, while default headless sessions
|
|
85
115
|
use `TodoWrite`. It never instructs a model to recover by calling a tool absent
|
|
@@ -92,6 +122,15 @@ redirection, backgrounding, sandbox overrides, and permission-time rewrites to
|
|
|
92
122
|
mutating commands fail closed. The preview command remains a Bash side effect
|
|
93
123
|
and still follows normal permission, sandbox, and plan-worker rules.
|
|
94
124
|
|
|
125
|
+
Control-plane operations that establish or tear down tracking cannot depend on
|
|
126
|
+
an already-actionable task: `TeamCreate`, `TeamDelete`, `TaskStop`/`KillShell`,
|
|
127
|
+
and structured team shutdown/plan-response messages are narrow task-gate
|
|
128
|
+
exceptions. Their own schemas, mode checks, active-member checks, and normal
|
|
129
|
+
permissions remain authoritative. Loading a `Skill` and taking a desktop
|
|
130
|
+
screenshot are read-only wrappers; downstream skill actions, desktop
|
|
131
|
+
click/type, API/database/browser/MCP mutations, and future tools classified
|
|
132
|
+
state-changing at runtime remain task-gated.
|
|
133
|
+
|
|
95
134
|
Syntax verification has the same task-gate-only separation. A strictly parsed
|
|
96
135
|
`node --check <single-file>` or the bounded HTML checker that reads one file,
|
|
97
136
|
constructs but never invokes its first `<script>` body, and prints only a fixed
|
|
@@ -105,6 +105,27 @@ Fan-out limits clamp rather than disable: out-of-range, negative and
|
|
|
105
105
|
non-numeric values fall back to the default or the ceiling, so a settings file
|
|
106
106
|
cannot switch the governor off.
|
|
107
107
|
|
|
108
|
+
### Global app compaction controls
|
|
109
|
+
|
|
110
|
+
`autoCompactEnabled` and `compaction.autoThreshold` are global app controls
|
|
111
|
+
managed by `/config` or the `Config` tool and persisted in the global UR
|
|
112
|
+
configuration (`~/.ur.json`, or `.config.json` in a legacy UR config home).
|
|
113
|
+
They are not keys in the project `settings.json` schema.
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
autoCompactEnabled = true
|
|
117
|
+
compaction.autoThreshold = 80
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The threshold accepts an inclusive percentage from 50 through 95. It is
|
|
121
|
+
applied to the effective model context window and retains a 3,000-token manual
|
|
122
|
+
compaction reserve. `UR_AUTOCOMPACT_PCT_OVERRIDE` has higher precedence for
|
|
123
|
+
the current process; `DISABLE_AUTO_COMPACT` or `DISABLE_COMPACT` disables the
|
|
124
|
+
proactive trigger. `/context` and the prompt notification report an
|
|
125
|
+
approximate percentage left to this same resolved threshold; the active query
|
|
126
|
+
may free additional context through bounded pruning immediately before the
|
|
127
|
+
trigger.
|
|
128
|
+
|
|
108
129
|
Rule syntax: `ToolName` (blanket) or `ToolName(specifier)` — e.g. `Bash(npm run *)`,
|
|
109
130
|
`Edit(src/**)`, `mcp__server__tool`. Managed via `/permissions` UI as well.
|
|
110
131
|
|
|
@@ -104,12 +104,40 @@ rollback preserve a private copy of the full original before replacement.
|
|
|
104
104
|
|---|---|
|
|
105
105
|
| Visualize usage | `/context` (colored grid); `/files` is an ant-only command and is absent from the standard npm CLI |
|
|
106
106
|
| Manual compaction | `/compact [focus instructions]` |
|
|
107
|
-
| Auto-compaction | `src/services/compact` — triggers
|
|
107
|
+
| Auto-compaction | `src/services/compact` — triggers at one canonical model-aware threshold; `DISABLE_AUTO_COMPACT` env disables; PreCompact/PostCompact hooks fire |
|
|
108
108
|
| Context collapse | `src/services/contextCollapse` and `CtxInspect` are behind the compile-time `CONTEXT_COLLAPSE` feature, which the standard npm bundle does not include |
|
|
109
109
|
| Micro-compaction | session-memory compact (`sessionMemoryCompact.ts`): force on with `ENABLE_UR_CODE_SM_COMPACT=1`, force off with `DISABLE_UR_CODE_SM_COMPACT=1`; otherwise both `tengu_session_memory` and `tengu_sm_compact` runtime gates must be on |
|
|
110
110
|
| Clear | `/clear` (aliases `/reset`, `/new`) |
|
|
111
111
|
| Read caps | Read tool truncates large files/lines; `/read`, `/analyze`, `/summarize` for deliberate loads |
|
|
112
112
|
|
|
113
|
+
The effective context window always stays positive, including for small local
|
|
114
|
+
models. By default proactive compaction reserves a scaled output buffer (up to
|
|
115
|
+
20,000 tokens) plus a 13,000-token compact/manual safety band. The global
|
|
116
|
+
`compaction.autoThreshold` setting can instead select 50–95% of the effective
|
|
117
|
+
window while retaining a 3,000-token manual reserve;
|
|
118
|
+
`UR_AUTOCOMPACT_PCT_OVERRIDE` is the explicit environment override. Trigger
|
|
119
|
+
logic, prompt notifications, `/context`, and the SDK all use this same
|
|
120
|
+
threshold and estimated live usage, including messages added after the last
|
|
121
|
+
provider response.
|
|
122
|
+
|
|
123
|
+
When proactive auto-compaction is active, the prompt notification and
|
|
124
|
+
`/context` show a clamped approximate 0–100% value remaining until the actual
|
|
125
|
+
trigger, with separate warning and final-error bands. The estimate uses the
|
|
126
|
+
same live token counter, while the query may conservatively improve it by
|
|
127
|
+
snipping or pruning immediately before the trigger. Reactive-compaction and
|
|
128
|
+
context-collapse modes own their thresholds and therefore do not display a
|
|
129
|
+
misleading proactive countdown. A successful compaction suppresses the stale
|
|
130
|
+
pre-compact warning.
|
|
131
|
+
|
|
132
|
+
Full, partial, and session-memory compaction restore the authoritative live
|
|
133
|
+
task state after the boundary. Task V2 snapshots retain exact IDs, statuses,
|
|
134
|
+
owners, and dependency edges; legacy TodoWrite snapshots retain order and
|
|
135
|
+
status. The snapshot is bounded to 64 actionable-first records and an
|
|
136
|
+
estimated 6,000-token budget. If more exist, the model is required to call
|
|
137
|
+
`TaskList` before task mutation rather than guessing omitted IDs. Compact
|
|
138
|
+
boundaries also permanently consume the task-gate's initial trivial-call
|
|
139
|
+
allowance so compaction cannot reopen an implementation bypass.
|
|
140
|
+
|
|
113
141
|
## Repo wiki & map
|
|
114
142
|
|
|
115
143
|
```
|
|
@@ -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
|
|
@@ -173,6 +184,12 @@ use legacy `TodoWrite` by default, or Task V2 when
|
|
|
173
184
|
alone outside live plan mode are not exempt.
|
|
174
185
|
- Configure the behavior at
|
|
175
186
|
`tasks.requireBeforeChanges.{enabled,freeReads}`.
|
|
187
|
+
- Full, partial, and session-memory compaction restore the live task board as
|
|
188
|
+
an authoritative bounded snapshot, including exact Task V2 IDs, statuses,
|
|
189
|
+
owners, and dependency edges. In-process workers do not run a second private
|
|
190
|
+
compaction algorithm: they use the same `runAgent` query-loop policy,
|
|
191
|
+
feature gates, session-memory-first behavior, threshold, circuit breaker,
|
|
192
|
+
and compact-boundary handling as the main agent.
|
|
176
193
|
|
|
177
194
|
The prompt contract, plan-file structure, plan-agent output, approval handoff,
|
|
178
195
|
task-tool result, and gate recovery text all reinforce the same decomposition
|
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.
|
|
3
|
+
> Audited against the executable source and tests for `ur-agent` v1.66.0.
|
|
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/`
|