ur-agent 1.46.0 → 1.47.1

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.
@@ -107,6 +107,28 @@ GEMINI_API_KEY=...
107
107
  OPENROUTER_API_KEY=...
108
108
  ```
109
109
 
110
+ ### OpenAI Responses transport
111
+
112
+ OpenAI uses Chat Completions unless the Responses transport is selected
113
+ explicitly:
114
+
115
+ ```sh
116
+ ur config set openai_transport responses
117
+ ur config set responses.store false
118
+ ur config set responses.compact_threshold 20000
119
+ ur config set responses.tool_search hosted
120
+ ```
121
+
122
+ Supported safe settings are `chat-completions|responses`, boolean
123
+ `responses.store`, an integer compaction threshold of at least 1,000 tokens,
124
+ and `off|hosted` tool search. Responses defaults to `store=false`, no server
125
+ compaction, and no deferred tool search. Background and WebSocket state is kept
126
+ under `.ur/openai-responses/` with private atomic writes; identifiers, status,
127
+ model, mode, and cursors are the only plaintext durable fields. To retain an
128
+ opaque compacted window, set `UR_OPENAI_RESPONSES_STATE_KEY` to exactly 32
129
+ bytes encoded as 64 hexadecimal characters or base64. Without that key UR
130
+ refuses to persist compacted context.
131
+
110
132
  ### Reconfiguring the Ollama host
111
133
 
112
134
  The endpoint can be changed from UR in three ways, in order of precedence:
@@ -415,6 +437,9 @@ ur context-pack remember --decision "Use package scripts before ad hoc commands"
415
437
  ur context-pack remember --constraint "Do not expose secret values"
416
438
  ur context-pack remember --command "bun run typecheck"
417
439
  ur context-pack remember --diff "Safety policy wired into Bash permission checks"
440
+ ur context-pack memory verify
441
+ ur context-pack memory quarantine
442
+ ur context-pack memory rollback --to <entry-id>
418
443
  ur context-pack compress
419
444
  ```
420
445
 
@@ -425,8 +450,10 @@ Generated files:
425
450
  `.ur/safety-policy.json`, MCP config, editor settings, workflow files, and
426
451
  other manifests.
427
452
  - `.ur/context/architecture.md` — human-readable architecture summary.
428
- - `.ur/context/task-memory.jsonl` — decisions, constraints, commands, diffs,
429
- and notes.
453
+ - `.ur/context/task-memory.jsonl` — private, append-only decisions,
454
+ constraints, commands, diffs, and notes with explicit provenance, UUIDs, and
455
+ a SHA-256 content/hash chain. Legacy entries are anchored when the chain
456
+ starts rather than silently rewritten.
430
457
  - `.ur/context/compressed.md` — compressed task context summary.
431
458
 
432
459
  Two related slash commands:
@@ -448,6 +475,7 @@ ur mcp get <name>
448
475
  ur mcp add-json <name> '<json>'
449
476
  ur mcp remove <name>
450
477
  ur mcp serve
478
+ UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
451
479
  ```
452
480
 
453
481
  MCP servers may execute code or access external services. Only enable servers you trust, and keep credentials out of committed config.
@@ -459,6 +487,15 @@ adjusted with `UR_MCP_MAX_CALLS_PER_MINUTE`,
459
487
  `UR_MCP_MAX_CONCURRENT_CALLS`, `UR_MCP_TOOL_TIMEOUT_MS`,
460
488
  `UR_MCP_MAX_INPUT_CHARS`, and `UR_MCP_MAX_OUTPUT_CHARS`.
461
489
 
490
+ `serve-http` is a separate, opt-in MCP 2026-07-28 compatibility surface at
491
+ `POST /mcp`. It is stateless at the transport layer and exposes capability-
492
+ negotiated Tasks and a self-contained overview App backed by UR's real MCP
493
+ tool registry. Every call must supply matching protocol/method/name metadata.
494
+ Off-loopback binds require `UR_MCP_HTTP_TOKEN`; browser clients also require an
495
+ exact `--allow-origin`. HTTP request, rate, concurrency, task-retention, and
496
+ runtime limits use the `UR_MCP_HTTP_*` prefix. Durable task state is private,
497
+ owner-isolated, bounded, atomic, and quarantined if corrupt.
498
+
462
499
  ## Background Agents
463
500
 
464
501
  Detached `ur bg` task state is stored under `.ur/background/`. Manifest updates
@@ -476,17 +513,27 @@ For native editor integration, `ur acp stdio` implements stable Agent Client
476
513
  Protocol v1 through the official SDK. Its resource controls use the
477
514
  `UR_ACP_STDIO_*` prefix. It supports client-provided MCP stdio/HTTP/SSE
478
515
  servers, additional workspace roots, native permission requests, cancellation,
479
- and persistent `session/resume`; see the [ACP Guide](ACP.md).
516
+ and persistent list/load/delete/resume/close with exact history replay, modes,
517
+ config options, and available commands; see the [ACP Guide](ACP.md).
480
518
 
481
519
  `ur acp serve` is a separate UR HTTP JSON-RPC API. Set `UR_ACP_TOKEN` instead
482
520
  of putting its bearer token in argv. Request, task, and tool limits use the
483
521
  `UR_ACP_*` prefix.
484
522
 
485
- `ur a2a serve` exposes the stable official-SDK A2A v0.3 JSON-RPC binding and a
486
- separate UR compatibility task API. Use `UR_A2A_TOKEN` for a static operator
487
- token or `UR_A2A_DELEGATION_SECRET` for issuer-minted scoped tokens. Limits use
488
- the `UR_A2A_*` prefix. See the [A2A Guide](A2A.md) for endpoints, proxy setup,
489
- scope isolation, and the A2A v1 migration status.
523
+ `ur a2a serve` exposes strict v1 JSON-RPC and HTTP+JSON bindings alongside the
524
+ stable official-SDK v0.3 JSON-RPC binding and a separate UR compatibility task
525
+ API. Use `UR_A2A_TOKEN` for a static operator token or
526
+ `UR_A2A_DELEGATION_SECRET` for issuer-minted skill/tenant-scoped tokens. Limits
527
+ use the `UR_A2A_*` prefix. See the [A2A Guide](A2A.md) for endpoints, protocol
528
+ negotiation, proxy setup, and isolation.
529
+
530
+ `ur ag-ui serve` exposes an opt-in AG-UI HTTP/SSE adapter at `POST /ag-ui`,
531
+ with capability discovery at `GET /ag-ui/capabilities`. It binds to loopback by
532
+ default; off-loopback binds require `UR_AG_UI_TOKEN`, and browser clients must
533
+ be listed with exact `--allow-origin` values. Request, rate, concurrency,
534
+ runtime, and output controls use the `UR_AG_UI_*` prefix. Unsupported client
535
+ tools, multimodal/encrypted input, interrupts, and unimplemented transports are
536
+ rejected rather than silently ignored. See the [AG-UI Guide](AG_UI.md).
490
537
 
491
538
  ## Plugins and Skills
492
539
 
@@ -499,7 +546,43 @@ ur plugin update <plugin>
499
546
  ur plugin disable <plugin>
500
547
  ```
501
548
 
502
- Skills can be stored in `.ur/skills/` for project-specific workflows or in `~/.ur/skills/` for personal workflows.
549
+ Skills can be stored in `.ur/skills/` for project-specific workflows or in
550
+ `~/.ur/skills/` for personal workflows. UR also discovers the cross-client
551
+ `.agents/skills/` and `~/.agents/skills/` locations from the Agent Skills
552
+ integration guide. At an equal scope, native `.ur` skills win; project skills
553
+ win over user skills, and nearer project roots win over parent roots.
554
+
555
+ Portable `SKILL.md` directories are validated against the Agent Skills
556
+ frontmatter contract and receive deterministic content and permission digests.
557
+ Inspect and sign them with:
558
+
559
+ ```sh
560
+ ur skill verify <name-or-directory> [--require-trusted] [--json]
561
+ ur skill keygen <key-id> [--out <private-key.pem>]
562
+ ur skill sign <name-or-directory> --key <private-key.pem> --key-id <key-id>
563
+ ```
564
+
565
+ Set `UR_SKILLS_STRICT_SPEC=true` to reject spec-invalid file skills and
566
+ `UR_SKILLS_REQUIRE_TRUSTED_SIGNATURE=true` to require a verified key at load
567
+ and invocation. `UR_SKILL_TRUSTED_KEYS_FILE` can override the private trusted
568
+ key store (normally under the UR config directory). Signed skills cannot
569
+ contain symlinks and are re-hashed immediately before every invocation.
570
+
571
+ ## OpenTelemetry
572
+
573
+ No telemetry exporter is enabled by default. Configure each signal with the
574
+ standard `OTEL_TRACES_EXPORTER`, `OTEL_METRICS_EXPORTER`, and
575
+ `OTEL_LOGS_EXPORTER` variables; supported values are `otlp`, `console`, or
576
+ `none`. OTLP uses HTTP/protobuf and the standard
577
+ `OTEL_EXPORTER_OTLP[_<SIGNAL>]_ENDPOINT` variables. UR validates endpoints,
578
+ protocols, and export intervals before registering providers.
579
+
580
+ GenAI spans and metrics cover inference, agent/workflow invocation, tools, memory,
581
+ duration, token/cache usage, response identity, finish reason, time to first
582
+ chunk, and bounded error type. Content is excluded unless
583
+ `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true`; use
584
+ `UR_OTEL_GENAI_PROVIDER` only when a gateway hides the provider identity.
585
+ `OTEL_SDK_DISABLED=true` disables the SDK globally.
503
586
 
504
587
  ## Secrets
505
588
 
package/docs/USAGE.md CHANGED
@@ -128,12 +128,23 @@ ur config set provider openai-compatible
128
128
  ur config set model <model>
129
129
  ur config set base_url <url>
130
130
  ur config set provider.fallback ollama
131
+ ur config set openai_transport responses
132
+ ur config set responses.store false
133
+ ur config set responses.compact_threshold 20000
134
+ ur config set responses.tool_search hosted
131
135
  ```
132
136
 
133
137
  `provider.fallback` only controls the recovery suggestion printed by provider
134
138
  diagnostics. UR does not switch or retry across providers automatically; use
135
139
  `ur config set provider <id>` after reviewing the failure.
136
140
 
141
+ The OpenAI API continues to use Chat Completions by default. Selecting
142
+ `openai_transport responses` opts into Responses semantic streaming,
143
+ background/poll/cancel support, WebSocket continuation, server compaction, and
144
+ deferred tool search. Remote storage is off by default. Local state contains
145
+ only bounded identifiers/status/cursors unless a 32-byte
146
+ `UR_OPENAI_RESPONSES_STATE_KEY` is supplied for AES-256-GCM compacted context.
147
+
137
148
  In the interactive app, `/model` chooses a provider first and then a model from
138
149
  that provider only. The saved pair controls the runtime backend for the next
139
150
  agent request. There is no cross-provider fallback: OpenAI API does not fall
@@ -210,9 +221,17 @@ ur context-pack remember --preference "Use bun test over jest"
210
221
  ur context-pack remember --accepted "Use p-map for bounded concurrency" --scope project
211
222
  ur context-pack remember --rejected "Switch to esbuild" --alternative-to "Keep bun bundle"
212
223
  ur context-pack remember --attempt "Tried Deno runtime" --status superseded
224
+ ur context-pack memory verify
225
+ ur context-pack memory quarantine
226
+ ur context-pack memory rollback --to <entry-id>
213
227
  ur context-pack compress
214
228
  ```
215
229
 
230
+ New entries carry explicit source provenance and form a SHA-256 hash chain.
231
+ Reads fail closed on malformed or tampered state. `quarantine` preserves the
232
+ complete original privately and restores the verified prefix; `rollback`
233
+ preserves a backup before truncating to the requested entry.
234
+
216
235
  ## Lifecycle hooks
217
236
 
218
237
  UR supports lifecycle hook events that fire around agent actions. Hooks are configured in `.ur/hooks.json` or `UR.md` frontmatter and receive JSON payloads.
@@ -244,7 +263,10 @@ UR includes slash commands and CLI subcommands for common workflows:
244
263
 
245
264
  - `/help` or `ur --help` for command discovery
246
265
  - `ur connect ...` to connect provider accounts (subscription login or stored API key)
247
- - `ur mcp ...` to configure MCP servers
266
+ - `ur mcp ...` to configure MCP servers, run the stdio server, or start the
267
+ opt-in stateless MCP 2026 Tasks/Apps adapter with `ur mcp serve-http`
268
+ - `ur ag-ui serve` to expose the secure AG-UI HTTP/SSE adapter to an explicitly
269
+ allowed user-facing application
248
270
  - `ur plugin ...` to manage plugins and marketplaces. Marketplace plugins can
249
271
  add MCP tools, commands, executable skills, templates, validators, language
250
272
  adapters, LSP servers, agents, hooks, and output styles.
@@ -257,7 +279,8 @@ UR includes slash commands and CLI subcommands for common workflows:
257
279
  - `ur context-pack ...` to summarize architecture and persist project memory (decisions, constraints, commands, diffs, architecture, preferences, attempts, accepted, rejected)
258
280
  - `ur code-index watch` to keep the local semantic code index fresh
259
281
  - `ur code-index repo build` to build a richer semantic repo index (files, symbols, calls, tests, docs, configs)
260
- - `ur skill init ...` and `ur skill run ...` for executable skill workflows
282
+ - `ur skill init|run ...` for executable skill workflows, plus
283
+ `ur skill verify|sign|keygen` for strict provenance and Ed25519 trust
261
284
  - `ur memory retention ...` to prune project-local memory by TTL, max entries, and decay
262
285
  - `ur spec ...` to scaffold requirements, design, and tasks, run a spec task list, and verify with strict proof gates
263
286
  - `ur escalate ...` to plan, run, or ask an oracle model for hard tasks
@@ -268,7 +291,9 @@ UR includes slash commands and CLI subcommands for common workflows:
268
291
  after one attempt and reports how to correct `--cwd`.
269
292
  - `ur artifacts ...` to capture reviewable diffs, test runs, notes, and feedback
270
293
  - `ur ide diff ...` to capture editor-readable inline diff bundles
271
- - `ur acp stdio` for the official-SDK Agent Client Protocol v1 editor transport, and `ur acp serve|stop|status` for the separate UR HTTP JSON-RPC API
294
+ - `ur acp stdio` for the official-SDK ACP v1 editor transport with durable
295
+ list/load/delete/resume, modes, config options, and commands; and
296
+ `ur acp serve|stop|status` for the separate UR HTTP JSON-RPC API
272
297
  - `ur exec ...` to run prompts in non-interactive mode with optional concurrency
273
298
  - `ur eval run ...` to run a suite, grade results, and capture execution metrics
274
299
  - `ur eval report ...` to show a saved report or write a single-suite dashboard
@@ -292,7 +317,9 @@ UR includes slash commands and CLI subcommands for common workflows:
292
317
  - `ur trigger ...` to parse GitHub/Slack webhook payloads and optionally launch a headless run
293
318
  - `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
294
319
  - `ur role-mode ...` to install built-in Architect, Code, Debug, and Ask role modes
295
- - `ur a2a ...` for Agent Card metadata, issuer-signed delegation tokens, the stable A2A v0.3 JSON-RPC binding, and UR compatibility task routes
320
+ - `ur a2a ...` for negotiated v1 JSON-RPC/HTTP+JSON, the stable v0.3 SDK
321
+ binding, scoped delegation tokens, durable protocol state, and separate UR
322
+ compatibility task routes
296
323
  - `ur sdk ...` to scaffold TS/Python headless SDK examples
297
324
  - `ur doctor` to inspect CLI health
298
325
  - `ur update` or `ur upgrade` to check for updates
@@ -347,6 +374,7 @@ ur test-first detect
347
374
  ur test-first --dry-run
348
375
  ur skill init security-review
349
376
  ur skill run security-review "src/auth.ts"
377
+ ur skill verify security-review --require-trusted
350
378
  ur code-index repo build
351
379
  ur code-index repo search "rate limiter"
352
380
  ur test-first install
@@ -355,7 +383,9 @@ ur safety check --command "rm -rf build"
355
383
  ur context-pack scan
356
384
  ur context-pack remember --constraint "Run command evidence before claiming success"
357
385
  ur context-pack remember --accepted "Use p-map for concurrency" --scope project
386
+ ur context-pack memory verify
358
387
  ur context-pack compress
388
+ UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
359
389
  ur acp serve --port 8123
360
390
  ur exec "add tests for the parser" --concurrency 4 --json
361
391
  ur ci-loop --command "bun test" --cwd . --dry-run
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.46.0 (UR-Nexus)"
22
+ # expected for this release: "1.47.1 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -84,6 +84,8 @@ Expected:
84
84
  - `context-pack scan` writes `.ur/project-manifest.json` and
85
85
  `.ur/context/architecture.md`.
86
86
  - `remember` appends task memory entries under `.ur/context/task-memory.jsonl`.
87
+ - `ur context-pack memory verify` reports a valid integrity chain. Tamper tests
88
+ must use a disposable copy; quarantine and rollback preserve private backups.
87
89
  - `compress` writes `.ur/context/compressed.md`.
88
90
 
89
91
  ## 0.3 Test-first execution loop (1.18.0)
@@ -149,6 +151,34 @@ ur --ollama-host http://localhost:11434 -p "say hi"
149
151
  ur --settings '{"ollama":{"host":"http://localhost:11434"}}' -p "say hi"
150
152
  ```
151
153
 
154
+ ## 0.6 v1.47 protocol, provenance, and telemetry gates
155
+
156
+ These deterministic tests use local fixtures, fake transports, and mock
157
+ exporters. They do not require a paid provider account or make paid model calls:
158
+
159
+ ```sh
160
+ bun test test/acpStdio.test.ts test/a2aV1.test.ts test/mcp2026.test.ts
161
+ bun test test/openaiResponses.test.ts test/genAiTelemetry.test.ts
162
+ bun test test/agUi.test.ts test/skillCommand.test.ts
163
+ bun test test/skillProvenance.test.ts test/taskMemoryIntegrity.test.ts
164
+ ```
165
+
166
+ Expected: ACP lifecycle/replay, A2A dual-stack isolation, MCP Tasks/Apps,
167
+ Responses HTTP/SSE/WebSocket/background behavior, OpenTelemetry redaction,
168
+ AG-UI lifecycle/security, `.agents/skills/` precedence, Ed25519 skill trust,
169
+ and task-memory quarantine/rollback all pass. Then run:
170
+
171
+ ```sh
172
+ bun run typecheck
173
+ bun run lint
174
+ bun test
175
+ bun run build
176
+ bun run secrets:scan
177
+ bun run dependencies:audit
178
+ bun run release:check
179
+ bun run package:check
180
+ ```
181
+
152
182
  ## 1. Marketplace tree resolves
153
183
 
154
184
  In a fresh interactive session:
package/docs/providers.md CHANGED
@@ -105,12 +105,22 @@ ur config set model <model>
105
105
  ur provider select-model <provider> <model> --json
106
106
  ur config set base_url <url>
107
107
  ur config set provider.fallback ollama
108
+ ur config set openai_transport responses
109
+ ur config set responses.store false
110
+ ur config set responses.compact_threshold 20000
111
+ ur config set responses.tool_search hosted
108
112
  ```
109
113
 
110
114
  The fallback setting is a recovery hint for `ur provider doctor`; it does not
111
115
  route a failed request to another provider. Review the failure and use
112
116
  `ur config set provider <id>` to switch explicitly.
113
117
 
118
+ OpenAI API uses Chat Completions by default. `openai_transport responses` is an
119
+ explicit opt-in to the native Responses adapter; it defaults to `store=false`
120
+ and supports semantic streaming, background polling/cancellation, WebSocket
121
+ continuation, server compaction, and deferred tool search. It does not change
122
+ OpenAI-compatible, OpenRouter, local, or subscription-CLI providers.
123
+
114
124
  ## Provider-scoped model selection
115
125
 
116
126
  UR-Nexus shows providers first, then only models available for the selected provider. This prevents incompatible model/provider pairs and keeps API-key, local/server, subscription, and external app bridge model lists separate. The generic `subscription` entry has no models unless a real independent subscription runtime is configured; UR does not list fake subscription models.
@@ -120,7 +130,7 @@ UR-Nexus shows providers first, then only models available for the selected prov
120
130
  When you select a UR-native provider and model, every agent request is routed
121
131
  through that provider's backend:
122
132
 
123
- - **API providers** make direct HTTP calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions`; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter uses its OpenAI-compatible chat endpoint.
133
+ - **API providers** make direct HTTP calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions` by default or `/v1/responses` when explicitly selected; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter uses its OpenAI-compatible chat endpoint.
124
134
  - **Local/server providers** connect to the configured local or OpenAI-compatible endpoint (`/v1/chat/completions` for LM Studio, llama.cpp and vLLM; the native tags/chat API for Ollama)
125
135
  - **Subscription CLI providers** (Codex CLI, Claude Code, Gemini CLI,
126
136
  Antigravity) dispatch the turn through the vendor's official CLI using your
@@ -49,9 +49,9 @@ const featureGroups = [
49
49
  },
50
50
  {
51
51
  title: 'Interoperability',
52
- tags: ['MCP', 'plugins', 'A2A', 'SDK'],
53
- text: 'MCP servers, plugin marketplaces for skills, templates, validators, language adapters, A2A Agent Card and task server, delegation tokens, and a TypeScript SDK wrapper around headless UR.',
54
- commands: ['ur mcp', 'ur plugin', 'ur a2a', 'ur sdk'],
52
+ tags: ['MCP', 'plugins', 'A2A', 'AG-UI', 'SDK'],
53
+ text: 'MCP servers, plugin marketplaces, native and cross-client Agent Skills, ACP editor transport, A2A Agent Card/task bindings, a secure AG-UI frontend stream, delegation tokens, and a TypeScript SDK wrapper around headless UR.',
54
+ commands: ['ur mcp', 'ur plugin', 'ur acp', 'ur a2a', 'ur ag-ui', 'ur sdk'],
55
55
  },
56
56
  {
57
57
  title: 'Providers and auth',
@@ -86,16 +86,23 @@ const commands = [
86
86
  name: 'acp',
87
87
  category: 'Interop',
88
88
  aliases: [],
89
- summary: 'Agent Communication Protocol server for IDE extensions: serve, stop, and status.',
90
- examples: ['ur acp serve --port 8123', 'ur acp status --json', 'ur acp stop'],
89
+ summary: 'Run official-SDK ACP v1 over stdio, or manage the distinct UR HTTP JSON-RPC API used by bundled IDE integrations.',
90
+ examples: ['ur acp stdio', 'ur acp serve --port 8123', 'ur acp status --json'],
91
91
  },
92
92
  {
93
93
  name: 'a2a',
94
94
  category: 'Interop',
95
95
  aliases: [],
96
- summary: 'A2A interoperability utilities: Agent Card, local task server, and delegation tokens.',
96
+ summary: 'Run negotiated strict A2A v1 JSON-RPC/HTTP+JSON beside the stable-SDK v0.3 binding, or inspect cards and delegation tokens.',
97
97
  examples: ['ur a2a card', 'ur a2a serve --dry-run', 'ur a2a token mint --secret "$UR_A2A_DELEGATION_SECRET" --scope coding,review'],
98
98
  },
99
+ {
100
+ name: 'ag-ui',
101
+ category: 'Interop',
102
+ aliases: [],
103
+ summary: 'Start the secure AG-UI HTTP/SSE adapter for user-facing applications with official events and truthful capability discovery.',
104
+ examples: ['ur ag-ui serve', 'ur ag-ui serve --allow-origin https://app.example', 'UR_AG_UI_TOKEN="$TOKEN" ur ag-ui serve --host 0.0.0.0'],
105
+ },
99
106
  {
100
107
  name: 'bg',
101
108
  category: 'Agent Platform',
@@ -718,6 +725,11 @@ const examples = [
718
725
  text: 'Expose Agent Card discovery and token-gated task execution.',
719
726
  code: 'ur a2a card\nur a2a serve --host 127.0.0.1 --port 8765 --dry-run',
720
727
  },
728
+ {
729
+ title: 'AG-UI frontend stream',
730
+ text: 'Expose the official-schema SSE adapter on loopback, or require a bearer token and exact browser origin for network use.',
731
+ code: 'ur ag-ui serve\nUR_AG_UI_TOKEN="$TOKEN" ur ag-ui serve --host 0.0.0.0 --allow-origin https://app.example',
732
+ },
721
733
  {
722
734
  title: 'Delegated A2A token',
723
735
  text: 'Mint an attenuated token scoped to selected skills.',
@@ -44,7 +44,7 @@
44
44
  <main id="content" class="content">
45
45
  <header class="topbar">
46
46
  <div>
47
- <p class="eyebrow">Version 1.46.0</p>
47
+ <p class="eyebrow">Version 1.47.1</p>
48
48
  <h1>UR-Nexus Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
50
50
  </div>
@@ -71,7 +71,7 @@
71
71
  </article>
72
72
  <article>
73
73
  <strong>Agent platform</strong>
74
- <span>Workflows, patterns, crews, goals, evals, memory, knowledge, A2A, provenance, and templates are first-class commands.</span>
74
+ <span>Workflows, patterns, crews, goals, evals, memory, knowledge, ACP, A2A, AG-UI, provenance, and templates are first-class commands.</span>
75
75
  </article>
76
76
  <article>
77
77
  <strong>Plugin marketplace</strong>
@@ -158,12 +158,14 @@ ur provider doctor agy</code></pre>
158
158
  ur config set provider openai-api
159
159
  ur config set base_url http://localhost:11434/v1
160
160
  ur config set model qwen3-coder:480b-cloud
161
- ur config set provider.fallback ollama</code></pre>
162
- <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Local providers include Ollama, LM Studio, llama.cpp, and vLLM.</p>
161
+ ur config set provider.fallback ollama
162
+ ur config set openai_transport responses
163
+ ur config set responses.store false</code></pre>
164
+ <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Local providers include Ollama, LM Studio, llama.cpp, and vLLM.</p>
163
165
  </article>
164
166
  <article>
165
167
  <h3>Status bar and updates</h3>
166
- <pre><code>Ollama | llama3 | ask | main | update 1.46.0 available</code></pre>
168
+ <pre><code>Ollama | llama3 | ask | main | update 1.47.1 available</code></pre>
167
169
  <p>The interactive status bar shows only important runtime state: provider, model, mode, branch, active tasks, checks status when known, and update availability. It is hidden in CI, dumb terminals, and print mode.</p>
168
170
  </article>
169
171
  <article>
@@ -298,13 +300,14 @@ ur test-first install</code></pre>
298
300
  ur safety check --command "rm -rf build"
299
301
  ur context-pack scan
300
302
  ur context-pack remember --decision "Use manifest commands first"
303
+ ur context-pack memory verify
301
304
  ur context-pack compress</code></pre>
302
305
  </article>
303
306
 
304
307
  <article>
305
308
  <h3>Start the ACP server and run a prompt pool</h3>
306
309
  <ol>
307
- <li>Start the Agent Communication Protocol server for IDE extensions.</li>
310
+ <li>Start the Agent Client Protocol server for IDE extensions.</li>
308
311
  <li>Run one or more prompts in non-interactive mode with concurrency.</li>
309
312
  <li>Capture per-prompt outputs to a directory.</li>
310
313
  </ol>
@@ -314,6 +317,18 @@ ur exec "add tests for the parser" --concurrency 4 --json
314
317
  ur exec --file prompts.jsonl --output-dir ./outputs --dry-run</code></pre>
315
318
  </article>
316
319
 
320
+ <article>
321
+ <h3>Connect a user-facing app with AG-UI</h3>
322
+ <ol>
323
+ <li>Start the official-schema HTTP/SSE adapter on loopback.</li>
324
+ <li>Inspect its truthful capability document.</li>
325
+ <li>For browser or network use, require a bearer token and exact allowed origin.</li>
326
+ </ol>
327
+ <pre><code>ur ag-ui serve
328
+ curl http://127.0.0.1:8977/ag-ui/capabilities
329
+ UR_AG_UI_TOKEN="$TOKEN" ur ag-ui serve --host 0.0.0.0 --allow-origin https://app.example</code></pre>
330
+ </article>
331
+
317
332
  <article>
318
333
  <h3>Use a multi-agent pattern</h3>
319
334
  <ol>
@@ -477,8 +492,9 @@ ur safety check --command "rm -rf build"</code></pre>
477
492
  <h3>Project context</h3>
478
493
  <pre><code>ur context-pack scan
479
494
  ur context-pack remember --constraint "Run command evidence before success claims"
495
+ ur context-pack memory verify
480
496
  ur context-pack compress</code></pre>
481
- <p>Context packs summarize architecture from manifests and preserve task decisions, constraints, commands, and diffs under <code>.ur/context</code>.</p>
497
+ <p>Context packs summarize architecture and preserve provenance-rich, hash-chained task memory under <code>.ur/context</code>, with verification, quarantine, and rollback recovery.</p>
482
498
  </article>
483
499
  <article>
484
500
  <h3>Verifier</h3>
@@ -493,9 +509,12 @@ UR_VERIFIER_AUTO_SUBAGENT=1</code></pre>
493
509
  <h3>MCP and plugins</h3>
494
510
  <pre><code>ur mcp list
495
511
  ur mcp add-json local-tools '{"command":"node","args":["server.js"]}'
512
+ ur mcp serve-http --port 8976
513
+ ur skill verify &lt;name-or-directory&gt;
514
+ ur ag-ui serve --help
496
515
  ur plugin list
497
516
  ur plugin install &lt;plugin&gt;</code></pre>
498
- <p>MCP servers and marketplace plugins expand tools, executable skills, templates, validators, language adapters, and review workflows. Treat them as trusted code.</p>
517
+ <p>The opt-in stateless MCP HTTP adapter exposes negotiated Tasks and Apps. Portable skills load from native and cross-client roots with strict validation and Ed25519 provenance. AG-UI provides a bounded, opt-in frontend stream. Treat MCP servers and plugins as trusted code.</p>
499
518
  </article>
500
519
  <article>
501
520
  <h3>IDE inline diffs</h3>
@@ -56,6 +56,7 @@ ur safety check --command "rm -rf build"
56
56
  ur context-pack scan
57
57
  ur context-pack remember --decision "Use package scripts before ad hoc commands"
58
58
  ur context-pack remember --constraint "Never expose secret values"
59
+ ur context-pack memory verify
59
60
  ur context-pack compress
60
61
  ```
61
62
 
@@ -90,3 +91,20 @@ Run the opt-in A2A server on loopback:
90
91
  ur a2a serve --dry-run
91
92
  curl http://127.0.0.1:8765/healthz
92
93
  ```
94
+
95
+ Inspect signed skills and the stateless MCP adapter:
96
+
97
+ ```sh
98
+ ur skill verify <name-or-directory>
99
+ ur mcp serve-http --help
100
+ ```
101
+
102
+ Inspect the provider-free AG-UI surface and cross-client skill discovery:
103
+
104
+ ```sh
105
+ ur ag-ui serve --help
106
+ ur skill verify <name-or-directory>
107
+ ```
108
+
109
+ Portable skills may be placed in `.agents/skills/<name>/SKILL.md`; project
110
+ skills override user skills, and native `.ur/skills/` wins at the same scope.
@@ -3,11 +3,16 @@
3
3
  - Run `ur agent-trends` for a human-readable coverage report.
4
4
  - Run `ur agent-trends --json` when another tool needs structured coverage data.
5
5
  - Run `ur a2a card` to print UR's Agent Card metadata for A2A discovery.
6
+ - Run `ur ag-ui serve --help` to inspect the user-facing HTTP/SSE adapter
7
+ without starting a model call.
6
8
  - Run `ur test-first --dry-run` to preview the detected compile/test/lint
7
9
  evidence loop for the current project.
8
10
  - Run `ur safety check --command "rm -rf build"` to preview command permission
9
11
  class, destructive approval, and sandbox posture.
10
12
  - Run `ur context-pack scan` and `ur context-pack compress` to preserve
11
13
  manifest-derived architecture context and task memory.
14
+ - Run `ur context-pack memory verify`, `ur skill verify <name>`, and
15
+ `ur mcp serve-http --help`, and `ur ag-ui serve --help` to inspect the v1.47 integrity and protocol
16
+ surfaces without making a paid model call.
12
17
  - Use `/agent-trends` inside a session before planning upgrades to local
13
18
  runtime, MCP, A2A, memory, browser, eval, identity, or provenance workflows.
package/examples/mcp.md CHANGED
@@ -5,3 +5,7 @@
5
5
  their tools into the registry and runs them through the same approval +
6
6
  evidence-ledger path as built-in tools (so MCP calls appear in `/evidence`).
7
7
  - Risky MCP tools require approval before they run.
8
+ - `ur mcp serve` exposes the fail-closed stdio server. The separate
9
+ `UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http` command starts the opt-in
10
+ stateless MCP 2026 HTTP surface with negotiated Tasks and a self-contained
11
+ App; off-loopback use requires bearer authentication.
@@ -9,7 +9,10 @@
9
9
  `.ur/context/architecture.md` from package scripts, instruction files,
10
10
  `.ur/verify.json`, and safety config.
11
11
  - `ur context-pack remember --decision|--constraint|--command|--diff|--note`
12
- appends durable task memory to `.ur/context/task-memory.jsonl`; `compress`
13
- writes `.ur/context/compressed.md`.
12
+ appends provenance-rich, hash-chained task memory to
13
+ `.ur/context/task-memory.jsonl`; `ur context-pack memory verify|quarantine`
14
+ checks or repairs a corrupt tail, `memory rollback --to <entry-id>` preserves
15
+ a private backup before truncation, and `compress` writes
16
+ `.ur/context/compressed.md`.
14
17
  - `/ur-init` scaffolds the `.ur/` asset folder (docs, superpowers, brainstorming,
15
18
  memory, prompts).
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.46.0"
10
+ version = "1.47.1"
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.46.0",
5
+ "version": "1.47.1",
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.46.0",
3
+ "version": "1.47.1",
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",
@@ -71,7 +71,9 @@
71
71
  "prepack": "bun run release:check"
72
72
  },
73
73
  "overrides": {
74
- "fast-uri": "3.1.3",
74
+ "@hono/node-server": "2.0.11",
75
+ "body-parser": "2.3.0",
76
+ "fast-uri": "3.1.4",
75
77
  "form-data": "4.0.6",
76
78
  "hono": "4.12.30",
77
79
  "ip-address": "10.2.0",
@@ -79,6 +81,8 @@
79
81
  },
80
82
  "dependencies": {
81
83
  "@a2a-js/sdk": "0.3.14",
84
+ "@ag-ui/core": "0.0.57",
85
+ "@ag-ui/encoder": "0.0.57",
82
86
  "diff2html": "^3.4.56",
83
87
  "playwright-core": "^1.61.1",
84
88
  "sharp": "^0.35.3"
@@ -93,6 +97,9 @@
93
97
  "@opentelemetry/api": "1.9.1",
94
98
  "@opentelemetry/api-logs": "0.220.0",
95
99
  "@opentelemetry/core": "2.9.0",
100
+ "@opentelemetry/exporter-logs-otlp-http": "0.220.0",
101
+ "@opentelemetry/exporter-metrics-otlp-http": "0.220.0",
102
+ "@opentelemetry/exporter-trace-otlp-http": "0.220.0",
96
103
  "@opentelemetry/resources": "2.9.0",
97
104
  "@opentelemetry/sdk-logs": "0.220.0",
98
105
  "@opentelemetry/sdk-metrics": "2.9.0",
@@ -1,5 +1,6 @@
1
1
  ---
2
- name: Reproducible Release
2
+ name: reproducible-release
3
+ display-name: Reproducible Release
3
4
  description: Use when preparing a UR-style engineering change for release. Enforces spec -> plan -> patch -> test -> verify -> document -> benchmark -> reproduce, with explicit command evidence and rollback notes.
4
5
  version: 0.1.0
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
- name: GitHub Workflow
2
+ name: github-workflow
3
+ display-name: GitHub Workflow
3
4
  description: Reference for operating GitHub safely from an agent — the official MCP server toolsets, gh CLI cheatsheet, token scopes, pull-request etiquette, and guardrails. Use when reviewing or creating PRs, triaging issues, or inspecting CI on GitHub.
4
5
  version: 0.1.0
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
- name: GitLab Workflow
2
+ name: gitlab-workflow
3
+ display-name: GitLab Workflow
3
4
  description: Reference for operating GitLab from an agent — the official MCP server transport and prerequisites, glab CLI cheatsheet, token scopes, merge-request etiquette, pipeline triage, and guardrails. Use when reviewing or creating MRs, triaging issues, or inspecting CI/CD on GitLab.
4
5
  version: 0.1.0
5
6
  ---