ur-agent 1.47.0 → 1.48.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 +31 -0
- package/README.md +36 -16
- package/dist/cli.js +20418 -11591
- package/docs/AGENT_FEATURES.md +46 -0
- package/docs/AGENT_TRENDS.md +26 -21
- package/docs/CONFIGURATION.md +7 -2
- package/docs/FRONTIER_AGENT_FEATURES.md +210 -0
- package/docs/USAGE.md +44 -9
- package/docs/VALIDATION.md +62 -1
- package/documentation/app.js +100 -29
- package/documentation/index.html +58 -2
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +4 -2
package/docs/AGENT_FEATURES.md
CHANGED
|
@@ -9,6 +9,52 @@ reproducible autonomous software engineering agent: every substantial task can
|
|
|
9
9
|
be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
|
|
10
10
|
spec as the durable source of truth and command evidence as the success gate.
|
|
11
11
|
|
|
12
|
+
## v1.48.0 Additions
|
|
13
|
+
|
|
14
|
+
- `ur cloud --runner managed` persists remote environment/session lifecycle,
|
|
15
|
+
cursor reconciliation, bounded output, explicit remote branches, cancellation,
|
|
16
|
+
and idempotent steering. Only PASS results with safe review branches are
|
|
17
|
+
eligible; all eligible results receive deterministic ranks rather than an
|
|
18
|
+
unverified comparative-quality score. Cancellation wins over a concurrent
|
|
19
|
+
session start. The authenticated A2A compatibility task API exposes the same
|
|
20
|
+
owner-isolated steering boundary for mobile clients.
|
|
21
|
+
- `ur learn playbooks` mines repeated proof-backed run shapes behind a Wilson
|
|
22
|
+
confidence floor, rejects unsafe/secret-like traces, and requires explicit
|
|
23
|
+
approval before materializing a normal validated workflow. Disabling verifies
|
|
24
|
+
that workflow and moves it to the private disabled archive.
|
|
25
|
+
- Project task memory accepts content-digested file and run citations plus
|
|
26
|
+
explicit user/web citations. Resolution revalidates freshness and excludes
|
|
27
|
+
rejected, superseded, stale, or missing evidence by default.
|
|
28
|
+
- `ur agent-ci` runs untrusted event tasks in detached worktrees with actor
|
|
29
|
+
policy, read-only GitHub permissions, scrubbed code subprocesses, bounded
|
|
30
|
+
redacted output, exact NUL-delimited path policy, pre/post verification-state
|
|
31
|
+
binding, and a post-check hash-addressed patch for a separate publish decision.
|
|
32
|
+
- Eval cases capture redacted control-flow trajectories and grade tool choice,
|
|
33
|
+
order, success, repetition, failures, permission denials, and turns. `ur eval
|
|
34
|
+
gate` makes those scores and outcome/cost/duration regressions enforceable.
|
|
35
|
+
- `ur desktop-qa` drives bounded Electron fixtures and attaches teardown-safe,
|
|
36
|
+
masked screenshots, hashes, diagnostics, and reports to the artifact review
|
|
37
|
+
surface. Raw video/trace evidence is available only without selector
|
|
38
|
+
redaction; incompatible fixtures fail validation. Attachment sources reject
|
|
39
|
+
symlinks and unsafe MIME types download as sandboxed octet streams.
|
|
40
|
+
- `/btw` is now a durable, private, hash-chained side chat with
|
|
41
|
+
create/continue/list/show/rename/close lifecycle and cancellation, while every
|
|
42
|
+
fork remains one-turn and tool-free.
|
|
43
|
+
- `ur workspace` enrolls canonical repository identities, validates a
|
|
44
|
+
dependency DAG, serializes writers per repository, uses isolated worktrees,
|
|
45
|
+
resumes private state, runs repository gates, and emits PR/rollback plans
|
|
46
|
+
without executing them.
|
|
47
|
+
- `ur arena` now has deterministic, model, and hybrid judges. Only
|
|
48
|
+
proof-backed, verification-passing, safety-eligible candidates reach the
|
|
49
|
+
strict anonymous judge schema; oversized full diffs are excluded rather than
|
|
50
|
+
partially judged, and apply requires the original clean base.
|
|
51
|
+
- Background, managed-cloud, A2A/mobile, artifacts, evals, and the standard CLI
|
|
52
|
+
share bounded/idempotent control, nonzero CI failure semantics, private state,
|
|
53
|
+
and reviewable evidence.
|
|
54
|
+
|
|
55
|
+
See [Frontier Agent Workflows](FRONTIER_AGENT_FEATURES.md) for commands and
|
|
56
|
+
trust boundaries.
|
|
57
|
+
|
|
12
58
|
## v1.47.0 Additions
|
|
13
59
|
|
|
14
60
|
- `ur ag-ui serve` adds a secure AG-UI HTTP/SSE boundary for user-facing
|
package/docs/AGENT_TRENDS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
UR is a provider-flexible, local-first terminal coding agent. This page tracks
|
|
4
4
|
how UR maps to current agent-platform trends and where future work should go
|
|
5
|
-
next. The factual comparison below is a **2026-07-
|
|
5
|
+
next. The factual comparison below is a **2026-07-26 research snapshot**; run
|
|
6
6
|
`ur agent-trends` for the versioned machine-readable report and re-check the
|
|
7
7
|
linked primary sources before acting on prerelease standards.
|
|
8
8
|
|
|
@@ -75,18 +75,23 @@ Inside an interactive session:
|
|
|
75
75
|
| MCP Tasks and MCP Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-http` | Reconcile final extension schemas and broaden client interoperability tests |
|
|
76
76
|
| A2A / Agent Card interoperability | Covered | Stable-SDK v0.3 plus strict v1 ProtoJSON JSON-RPC/HTTP+JSON, negotiated cards, tenant isolation, durable artifacts, and TCK coverage | Adopt the stable v1 SDK when released; add signed-card verification and streaming only with truthful end-to-end tests |
|
|
77
77
|
| AG-UI agent-to-frontend interoperability | Covered | Official-schema HTTP/SSE adapter, truthful capabilities, ordered state/text/tool events, cancellation, exact CORS, bounded requests/output, and loopback-or-bearer security | Add independent frontend fixtures before advertising optional interrupts, binary/WebSocket transport, or client tools |
|
|
78
|
-
| Durable workflows and checkpoints | Covered | resume, rewind, `ur bg
|
|
78
|
+
| Durable workflows and checkpoints | Covered | resume, rewind, steerable `ur bg`/managed-cloud runs, optional worktrees/PRs, cron/workflow internals, file restore, and resumable multi-repo DAG state | Add authenticated cross-machine checkpoint replication |
|
|
79
|
+
| Managed cloud workers | Covered | `ur cloud --runner managed` persists remote session IDs/cursors/branches, reconciles lifecycle, accepts idempotent steering, deterministically ranks only PASS results with safe review branches, and never silently merges | Add provider-neutral managed-runner adapters behind the same lifecycle |
|
|
80
|
+
| Mobile agent steering | Covered | authenticated owner-isolated A2A compatibility task messages plus bounded background/cloud steering and cancellation | Add push notifications without widening delegated scopes |
|
|
81
|
+
| Durable side chats | Covered | private hash-chained `/btw` create/continue/list/show/rename/close history with tool-free one-turn forks and cancellation | Add optional encrypted export/import |
|
|
82
|
+
| Multi-repository coordination | Covered | canonical repository/remote identity, dependency DAGs, one writer per repo, isolated worktrees, resume, verification, and explicit PR/rollback plans | Add forge-neutral stacked-review adapters without automatic publishing |
|
|
83
|
+
| Self-learning playbooks | Covered | proof-backed candidates, confidence floor, unsafe-trace rejection, explicit approval/rejection/disable, and standard workflow execution | Add drift detection and approval renewal when evidence changes materially |
|
|
79
84
|
| Multi-agent orchestration | Covered | built-in planning, exploration, verification, and general-purpose agents; custom agents | Document reusable team patterns and role selection |
|
|
80
|
-
| Long-term memory | Partial | Existing
|
|
85
|
+
| Long-term memory | Partial | Existing retrieval plus a provenance-rich SHA-256 task-memory chain, file/run/user/web citations, freshness resolution, private atomic writes, quarantine, and rollback | Extend citation/deletion/integrity guarantees to semantic, embedding, and legacy stores |
|
|
81
86
|
| Portable Agent Skills | Covered | Native and `.agents/skills/` project/user discovery, strict validation, deterministic tree/permission digests, Ed25519 signing, trusted keys, and invocation-time integrity checks | Require registry attestations and dependency review before community one-command installation |
|
|
82
87
|
| Semantic codebase retrieval | Covered | local embedding-based code index (`ur code-index`), opt-in `CodeSearch` tool, incremental re-index, auto-reindex watcher, Ollama embeddings | Add richer symbol-aware ranking |
|
|
83
88
|
| Reliable repo editing | Covered | `ur repo-edit` builds a file/symbol index, performs AST-aware JS/TS identifier rename planning, previews patches before writing, and applies multi-file edits transactionally with rollback on syntax or check failure | Extend AST edits beyond identifier rename into import moves and signature-aware refactors |
|
|
84
89
|
| Permission and safety policy | Covered | `ur safety`, `.ur/safety-policy.json`, pre-Bash safety evaluation, read/write/execute/network command classes, destructive-command approval, sandbox recommendations, and secret exfiltration denial | Record sandbox attestation in every risky command's evidence trail |
|
|
85
90
|
| Project context management | Covered | `ur context-pack`, `.ur/project-manifest.json`, `.ur/context/*`, Project DNA, instruction files, verify gates, and task memory for decisions/constraints/commands/diffs | Feed the generated project manifest into subagent prompt selection and verifier gate choice |
|
|
86
91
|
| AGENTS.md interoperability | Covered | `AGENTS.md` loaded as runtime project context (before `UR.md`), plus imported by the `/init` command | Keep aligned as the AGENTS.md spec evolves |
|
|
87
|
-
| Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks,
|
|
88
|
-
| Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers | Add
|
|
89
|
-
| Evals and observability |
|
|
92
|
+
| Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks, plus bounded Electron desktop fixtures with assertions, teardown, masked screenshots, and optional raw video/trace only when selector redaction is disabled | Add OS-native non-Electron fixtures behind equally testable drivers |
|
|
93
|
+
| Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers, and task-memory citations with digest freshness | Add authenticated reopening for user citations and explicit network refresh for web/MCP citations |
|
|
94
|
+
| Evals and observability | Covered | isolated eval worktrees, redacted structured trajectories, policy/outcome/cost/duration CI gates, reliability reports, dashboards, benchmark adapters, and OpenTelemetry | Publish opt-in signed versioned pass-rate snapshots by category |
|
|
90
95
|
| Standard GenAI telemetry | Covered | Explicit OTLP/console exporters; GenAI inference, agent/workflow, tool, memory, token, cache, response, latency, streaming time-to-first-chunk/inter-output-chunk, and error semantics; content off by default | Add trajectory policy graders and cross-provider dashboards without increasing content capture/cardinality |
|
|
91
96
|
| Test-first execution | Covered | `ur test-first` detects compile/test/lint commands, stores failure traces, retries through a fix agent, and installs detected commands into `.ur/verify.json` for edit-time gates | Add per-package command plans for large monorepos |
|
|
92
97
|
| Security and prompt-injection resistance | Covered | allow/ask/deny permissions, shell safety analysis, secret scan, untrusted web-content guidance, OS-level execution sandbox (macOS Seatbelt, Linux bubblewrap) | Continuously test web/MCP/repository/skill/memory injection, confused-deputy, and tool-abuse cases |
|
|
@@ -94,9 +99,9 @@ Inside an interactive session:
|
|
|
94
99
|
| Multimodal workflows | Partial | `/image`, `/video`, `/youtube`, `/voice`, browser workflows | Add model-aware multimodal capability reporting for local Ollama setups |
|
|
95
100
|
| Spec-driven development | Covered | `ur spec` scaffolds requirements/design/tasks under `.ur/specs/`, tracks phase/approvals, and runs the Spec Kit / Kiro task list one task at a time | Add bidirectional sync with an external `specs/` directory |
|
|
96
101
|
| Capability-aware model escalation | Covered | `ur escalate` selects fast/oracle tiers from `model-doctor`, runs routine work fast, and auto-escalates hard/failed work to the strong local model | Learn per-model success rates to tune the difficulty threshold |
|
|
97
|
-
| Best-of-N agent judging | Covered | `ur arena`
|
|
98
|
-
| Self-healing CI | Covered | `ur ci
|
|
99
|
-
| Verifiable artifacts | Covered |
|
|
102
|
+
| Best-of-N agent judging | Covered | `ur arena` verifies isolated candidates, gates safety eligibility, and supports deterministic, strict anonymous model, or hybrid judging with clean-base apply | Calibrate judge agreement across local/provider model families |
|
|
103
|
+
| Self-healing and agentic CI | Covered | bounded repair loops plus `ur agent-ci` actor policy, isolated worktrees, credential separation, safe event ingestion, redacted/hash-addressed artifacts, and separate publishing | Add forge-neutral workflow compilers with the same trust split |
|
|
104
|
+
| Verifiable artifacts | Covered | plans/diffs/tests plus hashed screenshot attachments and privacy-compatible optional video/trace attachments, approve/reject/feedback, local previews, and steering links | Link every QA attachment directly to claim-ledger entries |
|
|
100
105
|
| Native IDE review | Covered | `ur ide diff` bundles, a VS Code tree/webview/comment surface with background task controls, and a buildable JetBrains ACP client with cancellation | Add signed marketplace packaging and keep behavior parity covered in editor-host integration tests |
|
|
101
106
|
| ACP / IDE agent server | Covered | Official-SDK ACP v1 with durable list/load/delete/resume/close, exact replay, modes, config options, commands, permissions, MCP, roots, streaming, and cancellation | Add editor-host interoperability fixtures before expanding optional UX capabilities |
|
|
102
107
|
| Provider-native durable inference | Covered | Chat Completions remains default; opt-in Responses adds SSE, background polling/cancel, WebSocket continuation, compaction, deferred tools, and `store=false` | Generalize explicit provider capability discovery without silently emulating native features |
|
|
@@ -153,26 +158,26 @@ and model selection are explicit, credentials are resolved through the
|
|
|
153
158
|
credential layer, and the optional fallback setting is diagnostic advice rather
|
|
154
159
|
than an automatic provider switch.
|
|
155
160
|
|
|
156
|
-
## v1.
|
|
161
|
+
## v1.48 Frontier Priorities
|
|
157
162
|
|
|
158
|
-
The `1.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
+
The `1.48.0` work closes the managed-worker, steering, learned-playbook,
|
|
164
|
+
cited-memory, Agentic CI, trajectory-grading, desktop-QA, durable-side-chat,
|
|
165
|
+
multi-repository, and model-judge gaps from the 2026-07-26 scan. The remaining
|
|
166
|
+
ordered backlog keeps prerelease protocols opt-in and focuses on evidence and
|
|
167
|
+
trust:
|
|
163
168
|
|
|
164
169
|
1. Adopt final MCP 2026 and stable A2A v1 SDK artifacts when published, while
|
|
165
170
|
preserving dual-stack negotiation and independent-client fixtures.
|
|
166
171
|
2. Add A2A signed-card verification, streaming/resubscription, and push only
|
|
167
172
|
with authenticated end-to-end conformance tests.
|
|
168
|
-
3. Extend task-memory
|
|
169
|
-
every
|
|
170
|
-
4.
|
|
171
|
-
|
|
173
|
+
3. Extend task-memory citations, deletion proofs, quarantine, and rollback to
|
|
174
|
+
every semantic, embedding-backed, and legacy memory store.
|
|
175
|
+
4. Publish opt-in, signed, versioned trajectory/outcome pass-rate snapshots and
|
|
176
|
+
calibrate model-judge agreement without capturing prompt/tool content.
|
|
172
177
|
5. Require registry attestations, dependency review, revocation, and update
|
|
173
178
|
transparency before one-command community skill/plugin installation.
|
|
174
|
-
6.
|
|
175
|
-
OS-sandbox parity.
|
|
179
|
+
6. Reopen authenticated user citations, explicitly refresh web/MCP citations,
|
|
180
|
+
enforce final claim-to-source links, and complete Windows OS-sandbox parity.
|
|
176
181
|
|
|
177
182
|
## Source And Trust Policy
|
|
178
183
|
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -437,7 +437,10 @@ ur context-pack remember --decision "Use package scripts before ad hoc commands"
|
|
|
437
437
|
ur context-pack remember --constraint "Do not expose secret values"
|
|
438
438
|
ur context-pack remember --command "bun run typecheck"
|
|
439
439
|
ur context-pack remember --diff "Safety policy wired into Bash permission checks"
|
|
440
|
+
ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
|
|
440
441
|
ur context-pack memory verify
|
|
442
|
+
ur context-pack memory revalidate
|
|
443
|
+
ur context-pack memory search --query "streaming"
|
|
441
444
|
ur context-pack memory quarantine
|
|
442
445
|
ur context-pack memory rollback --to <entry-id>
|
|
443
446
|
ur context-pack compress
|
|
@@ -451,8 +454,10 @@ Generated files:
|
|
|
451
454
|
other manifests.
|
|
452
455
|
- `.ur/context/architecture.md` — human-readable architecture summary.
|
|
453
456
|
- `.ur/context/task-memory.jsonl` — private, append-only decisions,
|
|
454
|
-
constraints, commands, diffs, and notes with explicit provenance,
|
|
455
|
-
a SHA-256 content/hash chain.
|
|
457
|
+
constraints, commands, diffs, and notes with explicit provenance, optional
|
|
458
|
+
file/run/user/web citations, UUIDs, and a SHA-256 content/hash chain. File
|
|
459
|
+
and run citations are digest-revalidated; stale and superseded entries are
|
|
460
|
+
excluded from normal resolution. Legacy entries are anchored when the chain
|
|
456
461
|
starts rather than silently rewritten.
|
|
457
462
|
- `.ur/context/compressed.md` — compressed task context summary.
|
|
458
463
|
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Frontier Agent Workflows
|
|
2
|
+
|
|
3
|
+
UR 1.48 adds ten production-oriented agent capabilities. They are designed
|
|
4
|
+
around explicit trust boundaries: no command in this document silently
|
|
5
|
+
publishes, deploys, pushes, opens a pull request, or bypasses permissions.
|
|
6
|
+
|
|
7
|
+
## Managed cloud workers and steering
|
|
8
|
+
|
|
9
|
+
Run verified best-of-N worktrees locally, or launch multiple isolated
|
|
10
|
+
candidates in a managed UR environment:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
ur cloud environments
|
|
14
|
+
ur cloud run "fix the parser race" --runner managed --environment <id> --attempts 3
|
|
15
|
+
ur cloud sync
|
|
16
|
+
ur cloud show <task-id>
|
|
17
|
+
ur cloud logs <task-id> --tail 200
|
|
18
|
+
ur cloud steer <task-id> --message "preserve the public API" --request-id review-1
|
|
19
|
+
ur cloud cancel <task-id>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Managed session IDs, cursors, branches, bounded output, and idempotent steering
|
|
23
|
+
receipts survive CLI restarts in the private cloud-task manifest. Managed mode
|
|
24
|
+
does not claim comparative quality judging: after every candidate terminates,
|
|
25
|
+
UR deterministically ranks candidates that returned PASS with a safe, nonempty
|
|
26
|
+
review branch and reports the first eligible branch as the selection. UR never
|
|
27
|
+
fetches or merges it automatically. Cancellation remains terminal when a
|
|
28
|
+
remote session finishes starting concurrently. Local background agents
|
|
29
|
+
support the same bounded steering pattern:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
ur bg steer <task-id> --message "also cover the timeout case" --request-id timeout-1
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Authenticated A2A compatibility tasks expose owner-isolated mobile steering at
|
|
36
|
+
`POST /a2a/tasks/<id>/messages` (or `/steer`) with:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{"message":"run the focused regression test","requestId":"mobile-1"}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The task must belong to the authenticated caller and be backed by a running
|
|
43
|
+
background agent. Messages are size-bounded, terminal tasks reject new input,
|
|
44
|
+
and repeated request IDs are deduplicated.
|
|
45
|
+
|
|
46
|
+
## Evidence-backed learned playbooks
|
|
47
|
+
|
|
48
|
+
UR can mine repeated, verified run trajectories into candidates:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
ur learn playbooks mine --min-runs 3
|
|
52
|
+
ur learn playbooks list --status candidate
|
|
53
|
+
ur learn playbooks show <id>
|
|
54
|
+
ur learn playbooks approve <id> --name parser-repair
|
|
55
|
+
ur learn playbooks run <id> --max-concurrency 2
|
|
56
|
+
ur learn playbooks reject <id> --reason "insufficient coverage"
|
|
57
|
+
ur learn playbooks disable <id>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Candidates require successful command evidence and a confidence floor. Unsafe,
|
|
61
|
+
secret-like, publishing, deployment, or destructive trajectories are excluded.
|
|
62
|
+
Promotion is always explicit. Approval materializes a normal validated workflow;
|
|
63
|
+
rejected candidates cannot later be approved. Disabling verifies that the
|
|
64
|
+
promoted workflow is unchanged, moves it to a private
|
|
65
|
+
`.ur/learning/disabled/*.yaml.disabled` archive, and prevents future runs.
|
|
66
|
+
|
|
67
|
+
## Citation-validated shared memory
|
|
68
|
+
|
|
69
|
+
Task memory can cite project files, run artifacts, user messages, and web
|
|
70
|
+
sources:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
ur context-pack remember --decision "Keep the parser streaming" \
|
|
74
|
+
--cite-file src/parser.ts --lines 20:48
|
|
75
|
+
ur context-pack remember --note "Regression passed" \
|
|
76
|
+
--cite-run <run-id>:manifest.json
|
|
77
|
+
ur context-pack remember --constraint "Keep the public API" \
|
|
78
|
+
--cite-user <session-id>:<message-id>
|
|
79
|
+
ur context-pack remember --note "Protocol requirement" \
|
|
80
|
+
--cite-web https://example.com/spec
|
|
81
|
+
ur context-pack memory revalidate
|
|
82
|
+
ur context-pack memory search --query "parser streaming"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
File excerpts and run artifacts carry captured SHA-256 digests. Resolution
|
|
86
|
+
excludes rejected, superseded, missing, and stale entries by default and emits
|
|
87
|
+
bounded source labels suitable for prompts. User and web citations remain
|
|
88
|
+
explicitly unverifiable until their source is reopened; UR does not make a
|
|
89
|
+
network request merely because memory was searched.
|
|
90
|
+
|
|
91
|
+
## Agentic CI and trajectory gates
|
|
92
|
+
|
|
93
|
+
Create a policy and a pinned, read-only GitHub workflow:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
ur agent-ci init default
|
|
97
|
+
ur agent-ci validate default
|
|
98
|
+
ur agent-ci workflow default --force
|
|
99
|
+
ur agent-ci run default --event "$GITHUB_EVENT_PATH" \
|
|
100
|
+
--event-name "$GITHUB_EVENT_NAME" --output-dir "$RUNNER_TEMP/ur-agentic-ci"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The agent job checks out a trusted base without persisted credentials, accepts
|
|
104
|
+
issue comments only from configured repository associations, consumes event
|
|
105
|
+
JSON from a file rather than shell source, scrubs code-subprocess secrets, and
|
|
106
|
+
runs in a detached worktree. It emits a bounded, hash-addressed patch, redacted
|
|
107
|
+
check tails, and a manifest. Path policy uses exact NUL-delimited Git records,
|
|
108
|
+
so control characters cannot alter parsing and rename sources remain visible
|
|
109
|
+
as removals. UR hashes staged, unstaged, tracked/untracked, and index-visibility
|
|
110
|
+
state before and after checks. Any mutation blocks and suppresses the patch;
|
|
111
|
+
otherwise the post-check patch is bound to `verificationStateSha256`.
|
|
112
|
+
Publishing belongs in a separate trusted job or a human review step.
|
|
113
|
+
|
|
114
|
+
Eval cases may declare structured trajectory rules in `expect.trajectory`,
|
|
115
|
+
including required, forbidden, ordered, and successfully completed tools;
|
|
116
|
+
tool-call, failure, repetition, permission-denial, and turn limits. Captured
|
|
117
|
+
events retain control-flow metadata only—never prompts, paths, tool input,
|
|
118
|
+
tool output, or assistant text.
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
ur eval run starter
|
|
122
|
+
ur eval gate starter --min-pass-rate 1 --min-trajectory-score 0.9
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Eval cases use detached worktrees by default. `--no-isolate` is an explicit
|
|
126
|
+
opt-out. A requested gate fails closed when its metric is unavailable.
|
|
127
|
+
|
|
128
|
+
## Desktop application QA
|
|
129
|
+
|
|
130
|
+
Desktop QA drives Electron applications through bounded declarative fixtures:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
ur desktop-qa init
|
|
134
|
+
ur desktop-qa validate .ur/desktop-qa/fixtures/smoke.json
|
|
135
|
+
ur desktop-qa doctor
|
|
136
|
+
ur desktop-qa run .ur/desktop-qa/fixtures/smoke.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Fixtures support click, fill, key press, select, checkbox, wait, text/visibility
|
|
140
|
+
assertions, and screenshots. Every run closes the application, redacts
|
|
141
|
+
secret-like diagnostics, and records bounded evidence with hashes and a JSON
|
|
142
|
+
report. Selector redaction is applied to screenshots as an opaque mask. Because
|
|
143
|
+
raw video and trace data cannot guarantee that mask, fixtures with
|
|
144
|
+
`redactSelectors` must disable both `recording.video` and `recording.trace` or
|
|
145
|
+
validation fails closed. A failed assertion exits non-zero, making the command
|
|
146
|
+
suitable for CI. Attachment persistence copies only bounded regular
|
|
147
|
+
non-symlink files. The loopback viewer serves a small image/video allow-list
|
|
148
|
+
inline; every other type becomes an octet-stream download with private/no-store
|
|
149
|
+
and sandbox headers.
|
|
150
|
+
|
|
151
|
+
## Durable side chats
|
|
152
|
+
|
|
153
|
+
`/btw` now keeps private, hash-chained side-chat history outside the repository:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
/btw Why does this parser use a sentinel?
|
|
157
|
+
/btw continue <chat-id> What invariant does it protect?
|
|
158
|
+
/btw list
|
|
159
|
+
/btw show <chat-id>
|
|
160
|
+
/btw rename <chat-id> Parser notes
|
|
161
|
+
/btw close <chat-id>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Each invocation is still a one-turn, tool-free fork, so the main task continues
|
|
165
|
+
independently. History, individual turns, chat count, and storage size are
|
|
166
|
+
bounded; cancellation reaches the forked request.
|
|
167
|
+
|
|
168
|
+
## Multi-repository coordination
|
|
169
|
+
|
|
170
|
+
Define repositories and a dependency DAG, then run one writer per repository
|
|
171
|
+
in isolated worktrees:
|
|
172
|
+
|
|
173
|
+
```sh
|
|
174
|
+
ur workspace init checkout
|
|
175
|
+
ur workspace add checkout api ../api --base main --verify "bun test"
|
|
176
|
+
ur workspace add checkout web ../web --base main --verify "bun test"
|
|
177
|
+
ur workspace task checkout api-contract --repo api \
|
|
178
|
+
--prompt "add the checkout response field"
|
|
179
|
+
ur workspace task checkout web-client --repo web \
|
|
180
|
+
--prompt "consume the checkout response field" --depends-on api-contract
|
|
181
|
+
ur workspace validate checkout
|
|
182
|
+
ur workspace run checkout --max-concurrency 4
|
|
183
|
+
ur workspace verify checkout
|
|
184
|
+
ur workspace pr-plan checkout
|
|
185
|
+
ur workspace rollback-plan checkout
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Enrollment pins each canonical repository root and a hash of its remote
|
|
189
|
+
identity. The durable run state refuses resume after the specification changes.
|
|
190
|
+
Tasks with dependencies wait; tasks targeting the same repository serialize.
|
|
191
|
+
PR and rollback commands are plans only. Every repository retains its own base
|
|
192
|
+
branch, while cross-repository dependencies determine review order.
|
|
193
|
+
|
|
194
|
+
## Verified model-judged best-of-N
|
|
195
|
+
|
|
196
|
+
Arena candidates are eligible only after a proof-backed `PASS`, a non-empty
|
|
197
|
+
bounded diff, safety review, and all configured verification commands:
|
|
198
|
+
|
|
199
|
+
```sh
|
|
200
|
+
ur arena "repair the cache race" --agents 3 \
|
|
201
|
+
--judge hybrid --judge-model <model> \
|
|
202
|
+
--verify "bun run typecheck" --verify "bun test"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
`deterministic`, `model`, and `hybrid` modes are supported. The model judge sees
|
|
206
|
+
bounded, secret-redacted, anonymous candidate material and must return a strict
|
|
207
|
+
schema referring only to eligible candidate IDs. A candidate whose full
|
|
208
|
+
redacted diff exceeds the judge bound is excluded rather than partially judged.
|
|
209
|
+
Invalid judge output yields no winner. `--apply` additionally requires the
|
|
210
|
+
original clean worktree and exact base commit to remain unchanged.
|
package/docs/USAGE.md
CHANGED
|
@@ -221,16 +221,22 @@ ur context-pack remember --preference "Use bun test over jest"
|
|
|
221
221
|
ur context-pack remember --accepted "Use p-map for bounded concurrency" --scope project
|
|
222
222
|
ur context-pack remember --rejected "Switch to esbuild" --alternative-to "Keep bun bundle"
|
|
223
223
|
ur context-pack remember --attempt "Tried Deno runtime" --status superseded
|
|
224
|
+
ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
|
|
224
225
|
ur context-pack memory verify
|
|
226
|
+
ur context-pack memory revalidate
|
|
227
|
+
ur context-pack memory search --query "streaming"
|
|
225
228
|
ur context-pack memory quarantine
|
|
226
229
|
ur context-pack memory rollback --to <entry-id>
|
|
227
230
|
ur context-pack compress
|
|
228
231
|
```
|
|
229
232
|
|
|
230
|
-
New entries carry explicit source provenance
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
New entries carry explicit source provenance, optional file/run/user/web
|
|
234
|
+
citations, and form a SHA-256 hash chain. File and run citations are rechecked
|
|
235
|
+
against captured content digests; stale and superseded memory is excluded from
|
|
236
|
+
normal resolution. Reads fail closed on malformed or tampered state.
|
|
237
|
+
`quarantine` preserves the complete original privately and restores the
|
|
238
|
+
verified prefix; `rollback` preserves a backup before truncating to the
|
|
239
|
+
requested entry.
|
|
234
240
|
|
|
235
241
|
## Lifecycle hooks
|
|
236
242
|
|
|
@@ -273,7 +279,16 @@ UR includes slash commands and CLI subcommands for common workflows:
|
|
|
273
279
|
- `ur agents` to list configured agents
|
|
274
280
|
- `ur agent-trends` to inspect coverage for current agent technology trends
|
|
275
281
|
- `ur a2a card` to print UR's Agent Card metadata for A2A discovery
|
|
276
|
-
- `ur bg ...` to run detached local background agents
|
|
282
|
+
- `ur bg ...` to run and idempotently steer detached local background agents
|
|
283
|
+
with optional worktrees and PRs
|
|
284
|
+
- `ur cloud ...` to run, synchronize, steer, and cancel local or managed
|
|
285
|
+
best-of-N workers; managed selection requires explicit `PASS` plus a safe
|
|
286
|
+
review branch and never fetches or merges it
|
|
287
|
+
- `ur agent-ci ...` to generate and run a policy-gated isolated CI agent that
|
|
288
|
+
emits only a post-check, state-bound patch and manifest
|
|
289
|
+
- `ur workspace ...` to coordinate dependency-aware changes across repositories
|
|
290
|
+
- `ur learn playbooks ...` to mine and explicitly approve reusable workflows
|
|
291
|
+
- `/btw ...` to create or continue private durable tool-free side chats
|
|
277
292
|
- `ur repo-edit ...` to index the repo, plan AST-aware renames, preview patches, and apply with rollback
|
|
278
293
|
- `ur safety ...` to inspect project shell safety policy and preview command risk
|
|
279
294
|
- `ur context-pack ...` to summarize architecture and persist project memory (decisions, constraints, commands, diffs, architecture, preferences, attempts, accepted, rejected)
|
|
@@ -284,18 +299,24 @@ UR includes slash commands and CLI subcommands for common workflows:
|
|
|
284
299
|
- `ur memory retention ...` to prune project-local memory by TTL, max entries, and decay
|
|
285
300
|
- `ur spec ...` to scaffold requirements, design, and tasks, run a spec task list, and verify with strict proof gates
|
|
286
301
|
- `ur escalate ...` to plan, run, or ask an oracle model for hard tasks
|
|
287
|
-
- `ur arena ...` to
|
|
302
|
+
- `ur arena ...` to verify multiple isolated candidates and select a winner
|
|
303
|
+
with deterministic, model, or hybrid judging; oversized full diffs are
|
|
304
|
+
excluded from model judging
|
|
288
305
|
- `ur test-first ...` to detect compile/test/lint commands, store failure traces, and install after-edit gates
|
|
289
306
|
- `ur ci-loop ...` to run tests in an explicit working directory, repair real
|
|
290
307
|
failures, and rerun with a bounded loop. A "No tests found" result stops
|
|
291
308
|
after one attempt and reports how to correct `--cwd`.
|
|
292
|
-
- `ur artifacts ...` to capture reviewable diffs, test runs, notes,
|
|
309
|
+
- `ur artifacts ...` to capture reviewable diffs, test runs, notes, feedback,
|
|
310
|
+
and bounded non-symlink attachments with safe download headers/MIME fallback
|
|
293
311
|
- `ur ide diff ...` to capture editor-readable inline diff bundles
|
|
294
312
|
- `ur acp stdio` for the official-SDK ACP v1 editor transport with durable
|
|
295
313
|
list/load/delete/resume, modes, config options, and commands; and
|
|
296
314
|
`ur acp serve|stop|status` for the separate UR HTTP JSON-RPC API
|
|
297
315
|
- `ur exec ...` to run prompts in non-interactive mode with optional concurrency
|
|
298
|
-
- `ur eval run ...` to run
|
|
316
|
+
- `ur eval run ...` to run isolated cases, grade redacted tool trajectories,
|
|
317
|
+
and capture execution metrics
|
|
318
|
+
- `ur eval gate ...` to enforce pass, trajectory, test, cost, duration, and
|
|
319
|
+
regression thresholds
|
|
299
320
|
- `ur eval report ...` to show a saved report or write a single-suite dashboard
|
|
300
321
|
- `ur eval dashboard` to generate the local HTML dashboard across all reports
|
|
301
322
|
- `ur eval bench ...` to import local SWE-bench, Terminal-Bench, or Aider Polyglot exports
|
|
@@ -314,6 +335,8 @@ UR includes slash commands and CLI subcommands for common workflows:
|
|
|
314
335
|
- `ur model-doctor` and `ur model-route ...` to inspect local Ollama models and pick one by capability fit
|
|
315
336
|
- `ur local-first` to report readiness for offline/no-cloud environments
|
|
316
337
|
- `ur browser-qa ...` to validate and smoke-run browser QA replay fixtures
|
|
338
|
+
- `ur desktop-qa ...` to run Electron fixtures with hashed masked screenshots;
|
|
339
|
+
raw video/trace requires selector redaction to be disabled
|
|
317
340
|
- `ur trigger ...` to parse GitHub/Slack webhook payloads and optionally launch a headless run
|
|
318
341
|
- `ur agent-templates ...`, `ur agent-task ...`, `ur agent-inspect`, `ur agent-features`, and `ur agent-trends` for agent template, PR handoff, timeline, and coverage utilities
|
|
319
342
|
- `ur role-mode ...` to install built-in Architect, Code, Debug, and Ask role modes
|
|
@@ -330,6 +353,10 @@ Source checkouts print
|
|
|
330
353
|
`Development build detected. To update, pull latest source or install from npm.`
|
|
331
354
|
instead of attempting to mutate the checkout.
|
|
332
355
|
|
|
356
|
+
See [Frontier Agent Workflows](FRONTIER_AGENT_FEATURES.md) for the complete
|
|
357
|
+
managed-worker, steering, learned-playbook, cited-memory, Agentic CI,
|
|
358
|
+
trajectory, desktop-QA, side-chat, multi-repository, and arena trust model.
|
|
359
|
+
|
|
333
360
|
## Status bar
|
|
334
361
|
|
|
335
362
|
Interactive sessions include a compact bottom status bar when stdout is a real
|
|
@@ -368,7 +395,9 @@ ur spec init demo --goal "1. add a utils.add function 2. add a test"
|
|
|
368
395
|
ur spec run demo --all --dry-run
|
|
369
396
|
ur spec run demo --all --kernel
|
|
370
397
|
ur spec verify demo --kernel
|
|
371
|
-
ur arena "implement a debounce helper" --agents
|
|
398
|
+
ur arena "implement a debounce helper" --agents 3 --judge hybrid --verify "bun test"
|
|
399
|
+
ur agent-ci init default
|
|
400
|
+
ur cloud run "fix the parser race" --runner managed --attempts 3
|
|
372
401
|
ur escalate run "refactor the cache layer" --force-oracle --dry-run
|
|
373
402
|
ur test-first detect
|
|
374
403
|
ur test-first --dry-run
|
|
@@ -383,7 +412,9 @@ ur safety check --command "rm -rf build"
|
|
|
383
412
|
ur context-pack scan
|
|
384
413
|
ur context-pack remember --constraint "Run command evidence before claiming success"
|
|
385
414
|
ur context-pack remember --accepted "Use p-map for concurrency" --scope project
|
|
415
|
+
ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
|
|
386
416
|
ur context-pack memory verify
|
|
417
|
+
ur context-pack memory revalidate
|
|
387
418
|
ur context-pack compress
|
|
388
419
|
UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
|
|
389
420
|
ur acp serve --port 8123
|
|
@@ -391,6 +422,9 @@ ur exec "add tests for the parser" --concurrency 4 --json
|
|
|
391
422
|
ur ci-loop --command "bun test" --cwd . --dry-run
|
|
392
423
|
ur artifacts capture-diff
|
|
393
424
|
ur bg run "fix the flaky parser test" --worktree --dry-run
|
|
425
|
+
ur learn playbooks mine --min-runs 3
|
|
426
|
+
ur workspace init checkout
|
|
427
|
+
ur desktop-qa validate .ur/desktop-qa/fixtures/smoke.json
|
|
394
428
|
ur worktree list
|
|
395
429
|
ur worktree clean --dry-run
|
|
396
430
|
ur repo-edit index
|
|
@@ -401,6 +435,7 @@ ur ide diff capture --title "Working tree review"
|
|
|
401
435
|
ur eval bench list
|
|
402
436
|
ur eval run starter --dry-run --json
|
|
403
437
|
ur eval run starter --metrics --json
|
|
438
|
+
ur eval gate starter --min-pass-rate 1 --min-trajectory-score 0.9
|
|
404
439
|
ur eval report starter --dashboard
|
|
405
440
|
ur eval dashboard
|
|
406
441
|
ur crew create parser-crew --goal "fix the flaky parser test" --decompose --dry-run
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,7 +19,7 @@ You need:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
ur --version
|
|
22
|
-
# expected for this release: "1.
|
|
22
|
+
# expected for this release: "1.48.0 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## 0.1 First-workspace model selection (1.45.4)
|
|
@@ -179,6 +179,67 @@ bun run release:check
|
|
|
179
179
|
bun run package:check
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
+
## 0.7 Frontier agent workflow gates
|
|
183
|
+
|
|
184
|
+
These deterministic suites use temporary repositories, fake managed-cloud
|
|
185
|
+
clients, injected runners, and mock desktop drivers. They make no paid model
|
|
186
|
+
calls:
|
|
187
|
+
|
|
188
|
+
```sh
|
|
189
|
+
bun test test/cloudDesktopQa.test.ts
|
|
190
|
+
bun test test/learnedPlaybooks.test.ts test/memoryCitations.test.ts
|
|
191
|
+
bun test test/agenticCi.test.ts test/trajectoryCapture.test.ts
|
|
192
|
+
bun test test/sideChats.test.ts test/workspaceCoordinator.test.ts
|
|
193
|
+
bun test test/arenaModelJudge.test.ts
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Expected coverage:
|
|
197
|
+
|
|
198
|
+
- Managed cloud fan-out selects only completed candidates with explicit
|
|
199
|
+
`PASS` and safe non-empty review branches. Ordering is deterministic and
|
|
200
|
+
never fetches or merges a branch. Cancellation remains terminal even when a
|
|
201
|
+
remote session finishes starting concurrently.
|
|
202
|
+
- Cloud, local-background, and owner-scoped A2A steering reject terminal or
|
|
203
|
+
foreign tasks, bound message/receipt storage, and deduplicate request IDs
|
|
204
|
+
before delivery.
|
|
205
|
+
- Learned playbooks require proof-backed safe evidence and explicit approval.
|
|
206
|
+
Rejection is terminal; disable verifies the promoted workflow, moves it to
|
|
207
|
+
the private disabled archive, and prevents execution.
|
|
208
|
+
- Cited memory revalidates file excerpts and run artifacts by digest, excludes
|
|
209
|
+
stale/missing entries by default, and leaves user/web sources explicitly
|
|
210
|
+
unverifiable without reopening them.
|
|
211
|
+
- Agentic CI treats event text as data, uses a read-only pinned workflow,
|
|
212
|
+
isolates credentials, checks deletion/rename-source and path policy using
|
|
213
|
+
exact NUL-delimited Git metadata, and emits only a bounded hash-addressed
|
|
214
|
+
patch plus its manifest. A passing verification command that changes staged,
|
|
215
|
+
unstaged, untracked, or index-visible state must block and emit no patch.
|
|
216
|
+
- Trajectory capture retains control-flow metadata only. Requested trajectory
|
|
217
|
+
or report metrics fail closed when absent or below the configured gate.
|
|
218
|
+
- Desktop QA tears down on every path, masks configured screenshot selectors,
|
|
219
|
+
and refuses raw video or trace recording whenever selector redaction is
|
|
220
|
+
configured. Artifact evidence rejects symlink sources and normalizes unsafe
|
|
221
|
+
MIME declarations to a safe type; downloads use a bounded store path,
|
|
222
|
+
no-store/sandbox headers, a small safe inline allow-list, and octet-stream
|
|
223
|
+
fallback.
|
|
224
|
+
- Side chats survive reload, validate their hash chain, stay tool-free and
|
|
225
|
+
bounded, and reject continuation after close.
|
|
226
|
+
- Workspace coordination validates remote identity and the dependency DAG,
|
|
227
|
+
permits independent repositories to run concurrently, serializes one writer
|
|
228
|
+
per repository, refuses changed-spec resume, and produces PR/rollback plans
|
|
229
|
+
without executing them.
|
|
230
|
+
- Arena model/hybrid judging sees only bounded, redacted, anonymous eligible
|
|
231
|
+
candidates; an oversized full diff is excluded rather than partially judged,
|
|
232
|
+
invalid decisions yield no winner, and apply requires the original clean
|
|
233
|
+
base.
|
|
234
|
+
|
|
235
|
+
Check the public documentation surfaces after any contract change:
|
|
236
|
+
|
|
237
|
+
```sh
|
|
238
|
+
bun test test/docsCommands.test.ts test/docsCoverage.test.ts
|
|
239
|
+
node --check documentation/app.js
|
|
240
|
+
bun run lint
|
|
241
|
+
```
|
|
242
|
+
|
|
182
243
|
## 1. Marketplace tree resolves
|
|
183
244
|
|
|
184
245
|
In a fresh interactive session:
|