ur-agent 1.45.6 → 1.47.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/QUALITY.md +8 -3
  3. package/README.md +67 -13
  4. package/RELEASE.md +9 -6
  5. package/dist/cli.js +73656 -36080
  6. package/docs/A2A.md +180 -0
  7. package/docs/ACP.md +69 -17
  8. package/docs/AGENT_FEATURES.md +64 -7
  9. package/docs/AGENT_TRENDS.md +91 -26
  10. package/docs/AG_UI.md +132 -0
  11. package/docs/CONFIGURATION.md +123 -3
  12. package/docs/DEVELOPMENT.md +1 -0
  13. package/docs/IDE.md +20 -17
  14. package/docs/TROUBLESHOOTING.md +5 -3
  15. package/docs/USAGE.md +34 -4
  16. package/docs/VALIDATION.md +31 -1
  17. package/docs/providers.md +15 -1
  18. package/documentation/app.js +18 -6
  19. package/documentation/index.html +27 -8
  20. package/examples/agent_features.md +18 -0
  21. package/examples/agent_trends.md +5 -0
  22. package/examples/mcp.md +4 -0
  23. package/examples/memory.md +5 -2
  24. package/extensions/jetbrains-ur/README.md +12 -5
  25. package/extensions/jetbrains-ur/build.gradle.kts +22 -6
  26. package/extensions/jetbrains-ur/gradle.properties +1 -0
  27. package/extensions/jetbrains-ur/settings.gradle.kts +4 -0
  28. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/SendSelectionAction.kt +39 -5
  29. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/UrAcpClient.kt +52 -20
  30. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/UrToolWindowFactory.kt +7 -4
  31. package/extensions/jetbrains-ur/src/main/resources/META-INF/plugin.xml +1 -1
  32. package/extensions/vscode-ur-inline-diffs/README.md +6 -2
  33. package/extensions/vscode-ur-inline-diffs/out/extension.js +328 -157
  34. package/extensions/vscode-ur-inline-diffs/package.json +33 -5
  35. package/package.json +70 -56
  36. package/plugins/core/engineering-discipline/skills/reproducible-release/SKILL.md +2 -1
  37. package/plugins/core/github/skills/github-workflow/SKILL.md +2 -1
  38. package/plugins/core/gitlab/skills/gitlab-workflow/SKILL.md +2 -1
  39. package/plugins/core/huggingface/skills/huggingface-workflow/SKILL.md +2 -1
  40. package/plugins/core/miro/skills/miro-workflow/SKILL.md +2 -1
  41. package/plugins/core/obsidian/skills/second-brain/SKILL.md +2 -1
  42. package/plugins/core/powerpoint/skills/deck-craft/SKILL.md +2 -1
  43. package/plugins/core/skill-forge/skills/skill-authoring/SKILL.md +2 -1
  44. package/plugins/core/word/skills/document-craft/SKILL.md +2 -1
package/docs/A2A.md ADDED
@@ -0,0 +1,180 @@
1
+ # Agent2Agent (A2A)
2
+
3
+ UR exposes an opt-in agent-to-agent server with two deliberately distinct API
4
+ surfaces:
5
+
6
+ | Surface | Path | Contract |
7
+ | --- | --- | --- |
8
+ | Agent Card | `/.well-known/agent-card.json` | Strict v1 card by default; send `A2A-Version: 0.3` for the separate v0.3 card |
9
+ | A2A v1 JSON-RPC | `/` or `/a2a/v1/jsonrpc` | ProtoJSON, PascalCase lifecycle methods, `A2A-Version: 1.0` |
10
+ | A2A v1 HTTP+JSON | `/message:send`, `/tasks`, or `/a2a/v1/...` | Versioned REST lifecycle with pagination, artifacts, references, and cancellation |
11
+ | A2A v0.3 JSON-RPC | `/a2a/jsonrpc` | Stable v0.3 binding implemented with the official JavaScript SDK |
12
+ | UR compatibility API | `/a2a/tasks` and `/a2a/tasks/:id` | UR-specific REST-style background-task controls; not an A2A REST binding |
13
+
14
+ The two protocol versions deliberately use separate schemas and handlers. The
15
+ stable SDK remains pinned for v0.3; UR's dependency-free v1 compatibility layer
16
+ translates strict v1 messages and tasks onto the same bounded durable execution
17
+ engine. It is covered by UR tests and the official A2A TCK, but does not claim
18
+ certification by the prerelease JavaScript SDK.
19
+
20
+ ## Start the server
21
+
22
+ Loopback without authentication is allowed for local development:
23
+
24
+ ```sh
25
+ ur a2a serve --port 8765
26
+ ```
27
+
28
+ For authenticated use, keep secrets out of process arguments:
29
+
30
+ ```sh
31
+ UR_A2A_TOKEN='<random-secret>' ur a2a serve --port 8765
32
+ ```
33
+
34
+ An off-loopback bind requires either `UR_A2A_TOKEN` or
35
+ `UR_A2A_DELEGATION_SECRET`. A wildcard bind also requires a reachable external
36
+ base URL so the Agent Card never advertises `0.0.0.0`:
37
+
38
+ ```sh
39
+ UR_A2A_TOKEN='<random-secret>' \
40
+ ur a2a serve --host 0.0.0.0 --port 8765 \
41
+ --public-base-url https://agent.example.com
42
+ ```
43
+
44
+ Terminate TLS at a trusted reverse proxy for non-loopback deployments; bearer
45
+ tokens must not travel over plaintext networks.
46
+
47
+ ## Agent Card and protocol calls
48
+
49
+ Inspect the live card:
50
+
51
+ ```sh
52
+ curl -s http://127.0.0.1:8765/.well-known/agent-card.json
53
+ ```
54
+
55
+ Without a version header, discovery returns the v1 ProtoJSON card with
56
+ `supportedInterfaces` for JSON-RPC, HTTP+JSON, and the legacy v0.3 binding. Use
57
+ `A2A-Version: 0.3` to retrieve the standalone v0.3 SDK card. Both cards report
58
+ the installed UR version, skills, implemented capabilities, and only the
59
+ authentication schemes configured for that server; responses include
60
+ `Vary: A2A-Version`.
61
+
62
+ Send a blocking v1 message over JSON-RPC:
63
+
64
+ ```sh
65
+ curl -s http://127.0.0.1:8765/a2a/v1/jsonrpc \
66
+ -H 'content-type: application/json' \
67
+ -H 'A2A-Version: 1.0' \
68
+ -H "authorization: Bearer $UR_A2A_TOKEN" \
69
+ -d '{
70
+ "jsonrpc":"2.0",
71
+ "id":"request-v1",
72
+ "method":"SendMessage",
73
+ "params":{
74
+ "configuration":{"blocking":true},
75
+ "message":{
76
+ "messageId":"message-v1",
77
+ "role":"ROLE_USER",
78
+ "parts":[{"text":"Review the current diff."}]
79
+ }
80
+ }
81
+ }'
82
+ ```
83
+
84
+ The v1 HTTP+JSON binding accepts `application/a2a+json` and exposes
85
+ `message:send`, task list/get/cancel, continuation, and artifact/reference
86
+ operations at the advertised transport root or under `/a2a/v1`. List cursors
87
+ are opaque and filter-bound. An optional tenant segment, for example
88
+ `/a2a/v1/acme/tasks`, requires a matching `tenant:acme` delegation scope.
89
+
90
+ Send a blocking v0.3 message:
91
+
92
+ ```sh
93
+ curl -s http://127.0.0.1:8765/a2a/jsonrpc \
94
+ -H 'content-type: application/json' \
95
+ -H 'A2A-Version: 0.3' \
96
+ -H "authorization: Bearer $UR_A2A_TOKEN" \
97
+ -d '{
98
+ "jsonrpc":"2.0",
99
+ "id":"request-1",
100
+ "method":"message/send",
101
+ "params":{
102
+ "configuration":{"blocking":true},
103
+ "metadata":{"skill":"coding-agent"},
104
+ "message":{
105
+ "kind":"message",
106
+ "messageId":"message-1",
107
+ "role":"user",
108
+ "parts":[{"kind":"text","text":"Review the current diff."}]
109
+ }
110
+ }
111
+ }'
112
+ ```
113
+
114
+ Set `configuration.blocking` to `false` to receive a working task promptly,
115
+ then call `tasks/get`; use `tasks/cancel` for a nonterminal task. The v0.3
116
+ binding supports `message/send`, `tasks/get`, and `tasks/cancel`. Streaming,
117
+ resubscription, push notifications, and authenticated extended cards are not
118
+ advertised by either card and return protocol errors if requested.
119
+
120
+ `params.metadata.skill` selects an advertised skill; the default is
121
+ `coding-agent`. Requests with an unknown skill are rejected before execution.
122
+ Prompts enter the child process through stdin, and the child uses fail-closed
123
+ `dontAsk` permissions because this network binding has no interactive approval
124
+ bridge.
125
+
126
+ ## Delegation tokens
127
+
128
+ UR delegation tokens are short-lived HMAC-signed capabilities bound to a
129
+ subject, one audience, an expiry, and explicit skill scopes:
130
+
131
+ ```sh
132
+ export UR_A2A_DELEGATION_SECRET='<issuer-secret>'
133
+ TOKEN=$(ur a2a token mint --sub peer-a --aud ur-nexus \
134
+ --scope coding-agent --ttl 900)
135
+ printf '%s\n' "$TOKEN" | ur a2a token verify --token-stdin \
136
+ --aud ur-nexus --scope coding-agent
137
+ ```
138
+
139
+ The HMAC secret belongs only to the trusted issuer. A narrower child token can
140
+ be minted by that issuer, but an untrusted holder cannot attenuate the token
141
+ without the root signing secret. Protocol and compatibility tasks are isolated
142
+ by both delegation subject and skill, including get, continue, reference, and
143
+ cancel operations.
144
+
145
+ ## UR compatibility task API
146
+
147
+ The compatibility API preserves older UR-specific background options:
148
+
149
+ - `POST /a2a/tasks` — submit `{ prompt, skill, mode, worktree, model, maxTurns }`
150
+ - `GET /a2a/tasks` — list tasks visible to the caller
151
+ - `GET /a2a/tasks/:id` — status
152
+ - `GET /a2a/tasks/:id/output` — bounded output metadata and logs
153
+ - `POST /a2a/tasks/:id/cancel` or `DELETE /a2a/tasks/:id` — cancel
154
+
155
+ These routes do not use the A2A wire schema and must not be presented to A2A
156
+ clients as an A2A REST endpoint. `skipPermissions` additionally requires the
157
+ static operator token or a delegation scope of `permissions:bypass`.
158
+
159
+ ## Operational limits
160
+
161
+ The server bounds work with these environment variables:
162
+
163
+ - `UR_A2A_MAX_REQUEST_BYTES` and `UR_A2A_MAX_PROMPT_CHARS`
164
+ - `UR_A2A_MAX_OUTPUT_BYTES`
165
+ - `UR_A2A_MAX_SUBMISSIONS_PER_MINUTE`
166
+ - `UR_A2A_MAX_CONCURRENT_SUBMISSIONS`
167
+ - `UR_A2A_MAX_ACTIVE_TASKS`
168
+ - `UR_A2A_MAX_ACTIVE_TASKS_PER_OWNER`
169
+ - `UR_A2A_TASK_TIMEOUT_MS`
170
+
171
+ Protocol task state and v1 artifacts are persisted with owner, tenant, skill,
172
+ and version metadata under `.ur/a2a/` using owner-only permissions and atomic
173
+ writes. Retrieval, continuation, reference lookup, listing, and cancellation
174
+ all re-check the caller boundary. UR compatibility task state remains under the
175
+ same directory and links to `.ur/background/` output files.
176
+
177
+ References: [A2A v1 specification](https://a2a-protocol.org/latest/specification/),
178
+ [A2A v1 announcement](https://a2a-protocol.org/latest/announcing-1.0/),
179
+ [official JavaScript SDK](https://github.com/a2aproject/a2a-js), and
180
+ [official TCK](https://github.com/a2aproject/a2a-tck).
package/docs/ACP.md CHANGED
@@ -1,13 +1,14 @@
1
- # Agent Communication / Client Protocol (ACP)
1
+ # Agent Client Protocol (ACP)
2
2
 
3
- UR exposes two ACP surfaces:
3
+ UR exposes one native ACP transport and one separate HTTP integration surface:
4
4
 
5
- 1. **Stdio ACP agent** (`ur acp stdio`) — newline-delimited JSON-RPC over stdio,
6
- the protocol Zed and ACP-capable editors speak. Use this for native editor
7
- integration.
8
- 2. **HTTP JSON-RPC server** (`ur acp serve`) — a loopback HTTP endpoint for
9
- scripting, task delegation, and custom clients. This is **not** Zed-style
10
- stdio ACP; use the stdio agent for native ACP editors.
5
+ 1. **Stdio ACP agent** (`ur acp stdio`) — the stable ACP v1 wire protocol over
6
+ newline-delimited JSON-RPC, implemented with the official TypeScript SDK.
7
+ Use this for Zed and other native ACP clients.
8
+ 2. **UR HTTP JSON-RPC compatibility server** (`ur acp serve`) — a separate
9
+ loopback endpoint for scripting, the experimental JetBrains plugin, tool
10
+ calls, and background tasks. It is not an ACP transport binding and is not
11
+ advertised as one.
11
12
 
12
13
  ## Stdio ACP agent
13
14
 
@@ -16,6 +17,8 @@ ur acp stdio
16
17
  ```
17
18
 
18
19
  The editor launches this process and exchanges one JSON-RPC object per line.
20
+ The official SDK owns wire parsing, request concurrency, notification
21
+ semantics, and error envelopes.
19
22
 
20
23
  Methods:
21
24
 
@@ -24,9 +27,16 @@ Methods:
24
27
  | `initialize` | client → agent | `{ protocolVersion, agentCapabilities, authMethods }` |
25
28
  | `authenticate` | client → agent | `{}` (no auth required for local stdio) |
26
29
  | `session/new` | client → agent | `{ sessionId }` |
30
+ | `session/list` | client → agent | returns a 50-item page and opaque, filter-bound cursor |
31
+ | `session/load` | client → agent | restores a session and replays its exact ordered updates |
32
+ | `session/delete` | client → agent | deletes private metadata and history after stopping active work |
33
+ | `session/resume` | client → agent | restores identity without replaying history |
34
+ | `session/close` | client → agent | cancels active work and releases the in-process session |
35
+ | `session/set_mode` | client → agent | selects `default`, `acceptEdits`, or `plan` |
36
+ | `session/set_config_option` | client → agent | selects full tool updates or permission-only updates |
27
37
  | `session/prompt` | client → agent | `{ stopReason }`, with streaming `session/update` notifications |
28
38
  | `session/cancel` | client → agent (notification) | aborts the in-flight prompt |
29
- | `shutdown` | clientagent | `null` |
39
+ | `session/request_permission` | agentclient | asks the user to allow or reject a tool call |
30
40
 
31
41
  During `session/prompt` the agent emits `session/update` notifications:
32
42
 
@@ -38,22 +48,64 @@ During `session/prompt` the agent emits `session/update` notifications:
38
48
  ```
39
49
 
40
50
  `session/prompt` resolves with `{ "stopReason": "end_turn" }` (or `"cancelled"`
41
- if a `session/cancel` arrived). Configure it with `ur ide config zed`.
51
+ if a `session/cancel` arrived). Repeated prompts resume the underlying UR CLI
52
+ conversation for that ACP session. `session/resume` reconnects after an agent
53
+ restart without replay; `session/load` emits the bounded, exact stored update
54
+ sequence before current session information and available commands. UR stores
55
+ the ACP-to-CLI identity, working directory, modes/options, and append-only
56
+ history in private metadata under `~/.ur/acp/sessions/`. Writes are locked,
57
+ atomic, bounded, migration-aware, and fail closed on malformed state. MCP
58
+ credentials are never persisted there. Configure the agent with
59
+ `ur ide config zed`.
60
+
61
+ The stdio surface advertises text and resource-link prompt support, additional
62
+ workspace directories, MCP stdio/HTTP/SSE transports, load/list/delete,
63
+ resume/close, modes, configuration options, and available commands.
64
+ Client-provided MCP configuration is validated, written to a mode-`0600`
65
+ temporary file instead of argv, and removed after each turn. Image, audio, and
66
+ embedded-context capabilities are not advertised.
67
+
68
+ Tool calls that require approval are bridged to the client's native ACP
69
+ permission UI with allow-once, reject, and (when UR supplies a durable rule)
70
+ always-allow choices. Cancellation and client errors fail closed. The prompt is
71
+ sent over stdin rather than argv. Session count, prompt size, output size, and
72
+ runtime are bounded by `UR_ACP_STDIO_MAX_SESSIONS`,
73
+ `UR_ACP_STDIO_MAX_PROMPT_CHARS`, `UR_ACP_STDIO_MAX_OUTPUT_CHARS`, and
74
+ `UR_ACP_STDIO_PROMPT_TIMEOUT_MS`. History additionally enforces per-event,
75
+ event-count, total-byte, and discovery-scan limits.
42
76
 
43
77
  ## HTTP JSON-RPC server
44
78
 
45
79
  ```sh
46
- ur acp serve --host 127.0.0.1 --port 8123 [--token <secret>] [--debug]
80
+ UR_ACP_TOKEN='<secret>' ur acp serve --host 127.0.0.1 --port 8123 [--debug]
47
81
  ur acp status [--json]
48
82
  ur acp stop
49
83
  ```
50
84
 
51
- Binds to loopback only; binding off-loopback requires `--token`. `--debug` logs
52
- each method and outcome to stderr. POST JSON-RPC to `/acp`; `GET /healthz`
53
- returns `{ ok: true }`.
85
+ Binds to loopback by default; binding off-loopback requires a bearer token.
86
+ Prefer `UR_ACP_TOKEN` because command-line secrets may be visible to other
87
+ local processes. `--debug` logs method names and outcomes—not request params or
88
+ secrets—to stderr. POST JSON-RPC to `/acp`; `GET /healthz` returns `{ ok: true }`.
89
+
90
+ Tool calls are schema-validated and pass through the normal permission engine.
91
+ Because the HTTP API has no interactive approval channel, requests that need an
92
+ approval fail closed. Requests, prompts, tool I/O, task submission rate, tool
93
+ call rate, concurrency, retained sessions/tasks, response size, and runtime are
94
+ bounded. A session may select an existing subdirectory of the configured server
95
+ workspace, but cannot escape that root (including through symlinks). Deployments
96
+ can tune these defaults with `UR_ACP_MAX_REQUESTS_PER_MINUTE`,
97
+ `UR_ACP_MAX_CONCURRENT_REQUESTS`, `UR_ACP_MAX_REQUEST_BYTES`,
98
+ `UR_ACP_MAX_RESPONSE_BYTES`, `UR_ACP_MAX_ERROR_CHARS`,
99
+ `UR_ACP_MAX_PROMPT_CHARS`, `UR_ACP_MAX_SESSIONS`,
100
+ `UR_ACP_MAX_ACTIVE_TASKS`, `UR_ACP_MAX_RETAINED_TASKS`,
101
+ `UR_ACP_MAX_TASKS_PER_MINUTE`, `UR_ACP_MAX_CONCURRENT_TASKS`,
102
+ `UR_ACP_MAX_TASK_OUTPUT_BYTES`, `UR_ACP_TASK_TIMEOUT_MS`,
103
+ `UR_ACP_MAX_TOOL_CALLS_PER_MINUTE`, `UR_ACP_MAX_CONCURRENT_TOOL_CALLS`,
104
+ `UR_ACP_TOOL_TIMEOUT_MS`, `UR_ACP_MAX_TOOL_INPUT_CHARS`, and
105
+ `UR_ACP_MAX_TOOL_OUTPUT_CHARS` environment variables.
54
106
 
55
107
  Methods: `initialize` (returns `capabilities` and `workspaceRoot`),
56
- `session/new`, `session/prompt`, `session/cancel`, `tools/list`, `tools/call`,
108
+ `session/new`, `session/prompt`, `session/cancel`, `session/close`, `tools/list`, `tools/call`,
57
109
  `tasks/send` / `tasks/get` / `tasks/cancel`, `ide/diffCapture`, `ide/select`,
58
110
  and `shutdown` (acknowledges, then stops the server).
59
111
 
@@ -75,8 +127,8 @@ curl -s http://127.0.0.1:8123/acp \
75
127
 
76
128
  ## Capabilities and limitations
77
129
 
78
- - The stdio agent streams via `session/update`; token-level granularity depends
79
- on the active provider.
130
+ - The stdio agent streams text deltas via `session/update`; chunk granularity
131
+ depends on the active provider's stream.
80
132
  - The HTTP server returns unary responses (`streaming: false`); use the stdio
81
133
  agent for incremental updates.
82
134
  - Neither surface silently falls back to another provider; dispatch failures are
@@ -9,6 +9,62 @@ 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.47.0 Additions
13
+
14
+ - `ur ag-ui serve` adds a secure AG-UI HTTP/SSE boundary for user-facing
15
+ applications. Official schemas and encoding, truthful capability discovery,
16
+ full text/tool/state lifecycle events, cancellation, exact CORS, bearer
17
+ protection, redacted errors, and independent resource bounds are covered by
18
+ provider-free regression tests.
19
+ - A2A now runs v0.3 and v1 side by side. Strict v1 JSON-RPC and HTTP+JSON
20
+ bindings add version negotiation, tenant isolation, durable tasks and
21
+ artifacts, pagination, continuation, references, and cancellation without
22
+ removing the stable v0.3 SDK path.
23
+ - ACP stdio now implements durable list/load/delete/resume/close, bounded exact
24
+ history replay, modes, configuration options, and available commands in
25
+ addition to streaming prompts, permission requests, MCP servers, and roots.
26
+ - `ur mcp serve-http` exposes the opt-in stateless MCP 2026 compatibility
27
+ surface with Tasks and a self-contained Apps resource. It is loopback-only
28
+ without authentication and enforces request metadata, capability negotiation,
29
+ owner isolation, limits, private persistence, and corrupt-state quarantine.
30
+ - OpenAI users can opt into the Responses transport with
31
+ `ur config set openai_transport responses`. Chat Completions remains the
32
+ default; Responses defaults to `store=false` and supports streaming,
33
+ background polling/cancellation, WebSocket continuation, compaction, and
34
+ deferred tool search through tested provider adapters.
35
+ - OpenTelemetry export is explicit per signal. GenAI inference, agent,
36
+ workflow, tool, memory, duration, token, cache, response,
37
+ time-to-first-chunk, inter-output-chunk latency, and error fields follow
38
+ current semantic conventions, while prompts and tool/memory content stay
39
+ redacted unless the operator
40
+ separately opts in.
41
+ - Agent Skills receive strict open-spec validation and deterministic provenance.
42
+ `ur skill verify|sign|keygen` supports Ed25519 integrity manifests and trusted
43
+ keys; loaded skills are re-hashed immediately before execution. Native
44
+ `.ur/skills/` and standard cross-client `.agents/skills/` project/user roots
45
+ use explicit, deterministic precedence.
46
+ - Project task memory now has per-entry provenance, UUIDs, SHA-256 content
47
+ digests, an append-only hash chain, cross-process locks, private atomic writes,
48
+ and `ur context-pack memory verify|quarantine|rollback` recovery commands.
49
+
50
+ ## v1.46.0 Additions
51
+
52
+ - Native ACP v1 stdio support now uses the official SDK and includes durable
53
+ sessions, resume/close, MCP server configuration, additional roots,
54
+ permission requests, cancellation, and streaming updates. The separate HTTP
55
+ automation API is documented as UR JSON-RPC rather than mislabelled ACP.
56
+ - A2A interoperability now uses the official stable JavaScript SDK for the
57
+ advertised v0.3 JSON-RPC binding, with authenticated discovery, scoped
58
+ delegation, durable tasks, cancellation, and bounded request execution.
59
+ - The VS Code Actions view can safely start, inspect, and cancel background
60
+ tasks, including isolated worktree execution. The JetBrains client now
61
+ propagates cancellation, rejects overlapping prompts, and closes sessions.
62
+ - Background-task state uses locked, atomic, private manifest writes with
63
+ corruption detection, structural limits, and symlink-safe artifact paths.
64
+ - Provider protocol handling, MCP validation, CI supply-chain controls, release
65
+ version checks, and secret-input paths received additional compatibility and
66
+ security coverage.
67
+
12
68
  ## v1.45.6 Additions
13
69
 
14
70
  - Project verification approval is deduplicated per user turn. The agent asks
@@ -41,6 +97,7 @@ ur automation run nightly --dry-run
41
97
  ur automation run-due
42
98
  ur model-doctor
43
99
  ur a2a serve --dry-run
100
+ ur ag-ui serve --help
44
101
  ur bg run "fix the flaky parser test" --worktree --dry-run
45
102
  ur test-first detect
46
103
  ur test-first --dry-run
@@ -181,7 +238,7 @@ components instead of one giant prompt.
181
238
 
182
239
  | Addition | Surface | What it adds |
183
240
  | --- | --- | --- |
184
- | ACP server for IDE extensions | `ur acp serve\|stop\|status` | HTTP+JSON-RPC Agent Communication Protocol server that exposes tool listing, tool calls, task submission, and status for VS Code/Cursor/Zed-like editors. |
241
+ | ACP and IDE transports | `ur acp stdio`; `ur acp serve\|stop\|status` | Official-SDK ACP v1 stdio agent for native ACP editors, plus a distinct UR HTTP JSON-RPC API for tools, tasks, scripts, and the experimental JetBrains plugin. |
185
242
  | Non-interactive pool execution | `ur exec [prompts...]` | Run one or more prompts headlessly with optional concurrency, worktrees, output capture, and dry-run. |
186
243
  | GitHub tool | `GitHub` | PR/issue/repo operations via the `gh` CLI. |
187
244
  | API tool | `Api` | REST HTTP calls with JSON/text output. |
@@ -199,8 +256,8 @@ while keeping them project-local and manifest-backed:
199
256
  | --- | --- | --- |
200
257
  | Agent | `ur`, `ur agents`, `ur crew`, `ur bg`, `ur agent-templates` | `.ur/agents/`, `AGENTS.md`, `UR.md` |
201
258
  | Rules | `ur context-pack scan`, `ur safety`, `/guardrails`, `/hooks` | `AGENTS.md`, `UR.md`, `.cursor/rules/*.mdc`, `.cursorrules`, `.ur/safety-policy.json`, `.ur/guardrails.json`, `.ur/hooks.json` |
202
- | MCP | `ur mcp`, built-in MCP server mode, MCP tools/resources | `.mcp.json`, `.ur/mcp/`, plugin manifests |
203
- | Skills | `/skills`, `/create-skill`, bundled skills, plugin skills | `.ur/skills/`, user skills, plugin skill folders |
259
+ | MCP | `ur mcp`, stdio mode, opt-in MCP 2026 HTTP Tasks/Apps, tools/resources | `.mcp.json`, `.ur/mcp/`, plugin manifests |
260
+ | Skills | `/skills`, `/create-skill`, `ur skill verify\|sign\|keygen`, bundled/plugin skills | `.ur/skills/`, `.agents/skills/`, user skills, plugin skill folders, trusted key store |
204
261
  | CLI | `ur --help`, `ur -p`, `ur exec`, `ur acp`, workflow subcommands | `package.json` scripts, `.ur/project-manifest.json`, `.ur/verify.json` |
205
262
  | Models | `/model`, `ur model-doctor`, model router, Ollama discovery | Ollama endpoint, settings, `OLLAMA_MODEL`, model metadata cache |
206
263
 
@@ -240,7 +297,7 @@ and route model work through the local Ollama-backed UR runtime.
240
297
  | Auto compaction and memory retention | `compaction.autoThreshold`, `ur memory retention` | Configurable context compaction threshold plus TTL/max/decay pruning for `.ur/memory/*.jsonl` |
241
298
  | Code-index auto-reindex | `codeIndex.autoReindex`, `ur code-index watch` | File watcher that rebuilds the local semantic code index after source changes |
242
299
  | Live artifact steering | `ur artifacts comment <id> --feedback ... --task <bg_id>` | Artifact feedback is queued into the linked background task inbox and injected into active stream-json background agents as `priority: "now"` turns |
243
- | Full opt-in A2A task server | `ur a2a serve`, `/a2a/tasks` lifecycle routes | Token/delegation-protected task submission, status, output, and cancel routes backed by local background tasks |
300
+ | Opt-in A2A + compatibility server | `ur a2a serve`, `/a2a/jsonrpc`, `/a2a/v1/*`, `/a2a/tasks` | Negotiated v1 JSON-RPC/HTTP+JSON and stable-SDK v0.3, plus clearly separate protected UR background-task compatibility routes |
244
301
  | IDE inline diff bundles | `ur ide diff capture|list|show|comment|schema`, `extensions/vscode-ur-inline-diffs/` | Editor-readable `.ur/ide/diffs/` manifest, metadata, patch files, comments, plus a native VS Code tree/webview review extension |
245
302
  | Benchmark adapters | `ur eval bench swe-bench|terminal-bench|aider-polyglot` | Imports local benchmark JSON/JSONL exports into UR eval suites without external downloads |
246
303
 
@@ -253,12 +310,12 @@ and route model work through the local Ollama-backed UR runtime.
253
310
  | Model capability report | `ur model-doctor` | Local Ollama model inventory with context length, advertised capabilities, and likely vision/code readiness |
254
311
  | Reusable agent templates | `ur agent-templates install` | Project agents for review, tests, browser QA, docs research, security, release notes, PR fixes, and memory curation |
255
312
  | GitHub agent runner | `.github/workflows/ur.yml` scaffold | Opt-in CI entry point for manual prompts or `/ur` issue comments |
256
- | A2A adapter handoff | `ur a2a serve` | Loopback Agent Card and token-gated task execution endpoint |
313
+ | A2A interoperability | `ur a2a serve` | Version-negotiated strict v1 JSON-RPC/HTTP+JSON plus stable-SDK v0.3, durable tenant-isolated protocol state, and a separate UR compatibility API |
257
314
  | Semantic memory index | `ur semantic-memory build|search` | Local memory index over durable memory, docs, README, and UR instructions |
258
315
  | Claim provenance ledger | `ur claim-ledger add|list|validate` | Maps generated claims to web, file, MCP, tool, or user sources |
259
316
  | Browser replay evals | `ur browser-qa list|validate|run` | Validates replay fixtures and performs lightweight target smoke checks |
260
317
  | Permission and safety policy | `ur safety status|init|check` | Project-aware shell safety checks for destructive operations, sandbox recommendations, permission classes, and secret exfiltration denial |
261
- | Project context pack | `ur context-pack scan|remember|compress` | Architecture manifest, durable task memory, and compressed context summaries based on manifests and instructions |
318
+ | Project context pack | `ur context-pack scan|remember|memory|compress` | Architecture manifest, provenance/hash-chained task memory with verify/quarantine/rollback, and compressed context summaries |
262
319
 
263
320
  ## Design Notes
264
321
 
@@ -268,7 +325,7 @@ tasks, custom agents, memory files, browser workflows, evidence commands, A2A
268
325
  Agent Card export, and local Ollama routing; these surfaces make those
269
326
  capabilities easier to discover and reuse.
270
327
 
271
- Network-facing behavior, such as a full A2A task server or a GitHub bot that can
328
+ Network-facing behavior, such as the opt-in A2A server or a GitHub bot that can
272
329
  push code, should remain explicitly opt-in because it changes the trust and
273
330
  permission boundary.
274
331
 
@@ -1,7 +1,10 @@
1
1
  # Agent Trend Coverage
2
2
 
3
- UR is a local-first terminal coding agent. This page tracks how UR maps to the
4
- current agent platform trends and where future work should go next.
3
+ UR is a provider-flexible, local-first terminal coding agent. This page tracks
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-15 research snapshot**; run
6
+ `ur agent-trends` for the versioned machine-readable report and re-check the
7
+ linked primary sources before acting on prerelease standards.
5
8
 
6
9
  ## Quick Commands
7
10
 
@@ -10,6 +13,7 @@ ur agent-trends
10
13
  ur agent-trends --json
11
14
  ur a2a card
12
15
  ur a2a card --base-url https://example.com
16
+ ur ag-ui serve --help
13
17
  ur agent-features
14
18
  ur agent-features init
15
19
  ur agent-templates install
@@ -66,12 +70,15 @@ Inside an interactive session:
66
70
 
67
71
  | Trend | UR status | Current coverage | Professional next step |
68
72
  | --- | --- | --- | --- |
69
- | Local-first model runtime | Covered | local Ollama app endpoint, local and Ollama Cloud-backed models exposed through that app, model auto-routing | Add model capability reporting for tools, vision, context length, and multimodal readiness |
70
- | MCP tool ecosystem | Covered | `ur mcp`, MCP OAuth/XAA helpers, elicitation, permission checks, shared tool registry | Keep MCP registry/security guidance current as the spec evolves |
71
- | A2A / Agent Card interoperability | Covered | `ur a2a card`, `/a2a-card`, and opt-in `ur a2a serve` with task lifecycle routes and bearer/delegation auth | Track A2A spec changes and keep the server disabled unless explicitly started |
73
+ | Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
74
+ | MCP tool ecosystem | Covered | `ur mcp`, MCP OAuth/XAA/elicitation, fail-closed bounded stdio tools, and the opt-in stateless MCP 2026 HTTP adapter | Track the final 2026 spec/SDK and add independent-client fixtures before promoting the adapter |
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
+ | 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
+ | 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 |
72
78
  | Durable workflows and checkpoints | Covered | resume, rewind, `ur bg` background runs, optional worktrees/PRs, cron/workflow internals, file restore | Publish a checkpointed workflow format for repeated automations |
73
79
  | Multi-agent orchestration | Covered | built-in planning, exploration, verification, and general-purpose agents; custom agents | Document reusable team patterns and role selection |
74
- | Long-term memory | Covered | `/remember`, `/forget`, `.ur/memory`, semantic memory, research notes, team memory, consolidation, `ur memory retention` | Tune retention defaults from real long-run telemetry |
80
+ | Long-term memory | Partial | Existing memory/retrieval plus a provenance-rich SHA-256 project task-memory chain with private atomic writes, verification, quarantine, and rollback | Extend the same deletion and integrity guarantees to team, semantic, embedding, and legacy stores |
81
+ | 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 |
75
82
  | 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 |
76
83
  | 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 |
77
84
  | 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 |
@@ -79,18 +86,20 @@ Inside an interactive session:
79
86
  | 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 |
80
87
  | Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks, WebSearch, WebFetch, risky-action approval | Add more release fixtures with screenshots and replay assertions |
81
88
  | Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers | Add claim-to-source mapping for web/MCP answers |
82
- | Evals and observability | Covered | verifier gates, `.ur/verify.json`, `/verify`, `/trace`, OpenTelemetry hooks, release checks, eval dashboard, benchmark adapters | Publish benchmark numbers from local reproducible suites |
89
+ | Evals and observability | Partial | verifier gates, `.ur/verify.json`, `/verify`, `/trace`, OpenTelemetry hooks, replayable evals, dashboard, benchmark adapters | Grade complete trajectories in CI and publish versioned pass rates by category |
90
+ | 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 |
83
91
  | 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 |
84
- | 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 injection cases |
85
- | Agent identity and delegated authorization | Covered | MCP OAuth/XAA helpers, A2A bearer/delegation tokens, local trust boundaries, permission rules | Keep delegated scopes narrow and auditable |
92
+ | 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 |
93
+ | Agent identity and delegated authorization | Covered | MCP OAuth/XAA helpers, issuer-minted A2A bearer/delegation tokens, subject/audience/expiry/skill binding, local trust boundaries, permission rules | Keep delegated scopes narrow and auditable; HMAC child-token narrowing remains issuer-side |
86
94
  | Multimodal workflows | Partial | `/image`, `/video`, `/youtube`, `/voice`, browser workflows | Add model-aware multimodal capability reporting for local Ollama setups |
87
95
  | 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 |
88
96
  | 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 |
89
97
  | Best-of-N agent judging | Covered | `ur arena` runs N agents per task in isolated worktrees and judges diffs with the self-review gate; winner is selectable/appliable | Add an optional model judge alongside the deterministic scorer |
90
98
  | Self-healing CI | Covered | `ur ci-loop` reports its resolved cwd, preserves assertion/stack context, stops no-test configuration failures before invoking a fixer, and re-runs real failures with bounded retries; commits/pushes require explicit flags and are self-review gated | Wire to `ur trigger` so a failed CI webhook can explicitly launch the loop |
91
99
  | Verifiable artifacts | Covered | `ur artifacts` records plans/diffs/test-runs with approve/reject/feedback under `.ur/artifacts/`; comments steer active background agents through stream-json inbox injection | Attach browser-QA screenshots and link artifacts to claim-ledger entries |
92
- | Native IDE review | Covered | `ur ide diff` writes `.ur/ide/diffs/` bundles and `extensions/vscode-ur-inline-diffs/` provides a VS Code tree/webview/comment surface | Add JetBrains packaging if demand appears |
93
- | ACP / IDE agent server | Covered | `ur acp serve|stop|status` exposes an HTTP+JSON-RPC agent server so VS Code/Cursor/Zed extensions can list tools, call tools, and submit tasks | Ship reference editor extensions |
100
+ | 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
+ | 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
+ | 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 |
94
103
  | External tool integration | Covered | Built-in `GitHub`, `Api`, `Browser`, `Docker`, `TestRunner`, and `Database` tools complement existing file-system, terminal, web, and MCP tools | Add richer output parsing and error recovery |
95
104
 
96
105
  ## v1.13.9 Direct CLI Surfaces
@@ -111,18 +120,59 @@ ur artifacts capture-tests --command "bun test"
111
120
 
112
121
  ## A2A Position
113
122
 
114
- UR exports an Agent Card so other tools can discover what UR is and what it can
115
- do. `ur a2a serve` is the opt-in task server: it exposes health, Agent Card,
116
- task submission, task listing, task status, output, and cancellation routes. It
117
- refuses off-loopback binds unless bearer or delegation authentication is
118
- configured, and task execution stays backed by local UR background tasks.
123
+ `ur a2a serve` keeps the official stable JavaScript SDK's v0.3 JSON-RPC binding
124
+ at `/a2a/jsonrpc` and adds separate strict v1 ProtoJSON JSON-RPC and HTTP+JSON
125
+ bindings. `/.well-known/agent-card.json` returns the v1 card by default and the
126
+ v0.3 card for `A2A-Version: 0.3`; `Vary` prevents cache confusion. The v1
127
+ routes provide durable tasks/artifacts, pagination, continuation, references,
128
+ cancellation, and tenant isolation. Streaming and push notifications are not
129
+ advertised.
130
+
131
+ The existing `/a2a/tasks` submission/list/status/output/cancel routes are a
132
+ separate **UR compatibility API**, not an A2A REST binding. They remain useful
133
+ for UR background-task options such as worktrees and bounded turns. On these
134
+ routes, `skipPermissions` is rejected unless the caller uses the static
135
+ operator token or a token that grants `permissions:bypass`; the official A2A
136
+ runner always uses fail-closed `dontAsk` permissions.
137
+
138
+ The server refuses unauthenticated off-loopback binds and requires
139
+ `--public-base-url` for wildcard binds so discovery never advertises
140
+ `0.0.0.0`. Prefer `UR_A2A_TOKEN` and `UR_A2A_DELEGATION_SECRET` over argv
141
+ secrets. Request size, prompt size, output size, submission rate, concurrent
142
+ submissions, and active tasks are bounded by `UR_A2A_*` settings. UR's v1
143
+ compatibility layer is covered by the official TCK while the JavaScript SDK's
144
+ v1 line remains prerelease; the stable v0.3 path therefore stays available
145
+ during the negotiated migration.
119
146
 
120
147
  ## Model Runtime Position
121
148
 
122
- UR intentionally sends model requests only to the local Ollama app. If that app
123
- exposes local models or Ollama Cloud-backed models, UR treats them the same way:
124
- as models available through the local Ollama endpoint. This keeps provider
125
- configuration out of UR and avoids direct model API key handling.
149
+ UR is local-first, not local-only. Ollama supports private on-device execution;
150
+ direct adapters support OpenAI, Anthropic, Gemini, OpenRouter, and compatible
151
+ endpoints; subscription adapters use the provider's authenticated CLI. Provider
152
+ and model selection are explicit, credentials are resolved through the
153
+ credential layer, and the optional fallback setting is diagnostic advice rather
154
+ than an automatic provider switch.
155
+
156
+ ## v1.47 Frontier Priorities
157
+
158
+ The `1.46.0` frontier set is implemented in `1.47.0`. A second free/open-source
159
+ scan after the version bump also closed AG-UI frontend interoperability,
160
+ cross-client `.agents/skills/` discovery, and the latest OpenTelemetry
161
+ `invoke_workflow`/streaming-chunk latency gap. The remaining ordered backlog keeps
162
+ prerelease protocols opt-in and focuses on evidence and trust:
163
+
164
+ 1. Adopt final MCP 2026 and stable A2A v1 SDK artifacts when published, while
165
+ preserving dual-stack negotiation and independent-client fixtures.
166
+ 2. Add A2A signed-card verification, streaming/resubscription, and push only
167
+ with authenticated end-to-end conformance tests.
168
+ 3. Extend task-memory provenance, deletion proofs, quarantine, and rollback to
169
+ every team, semantic, embedding-backed, and legacy memory store.
170
+ 4. Turn trajectory graders for tool choice, handoffs, policy compliance,
171
+ recovery, and outcome quality into versioned CI regression gates.
172
+ 5. Require registry attestations, dependency review, revocation, and update
173
+ transparency before one-command community skill/plugin installation.
174
+ 6. Enforce claim-to-source links for final web/MCP answers and complete Windows
175
+ OS-sandbox parity.
126
176
 
127
177
  ## Source And Trust Policy
128
178
 
@@ -141,13 +191,28 @@ Professional answer requirements:
141
191
 
142
192
  ## References
143
193
 
144
- - OpenAI Agents SDK: https://openai.github.io/openai-agents-python/
145
- - OpenAI Agents SDK tracing: https://openai.github.io/openai-agents-python/tracing/
194
+ - OpenAI Responses background mode: https://developers.openai.com/api/docs/guides/background
195
+ - OpenAI Responses WebSocket mode: https://developers.openai.com/api/docs/guides/websocket-mode
196
+ - OpenAI Responses compaction: https://developers.openai.com/api/docs/guides/compaction
197
+ - OpenAI deferred tool search: https://developers.openai.com/api/docs/guides/tools-tool-search
198
+ - OpenAI agent evals: https://developers.openai.com/api/docs/guides/agent-evals
146
199
  - Model Context Protocol: https://modelcontextprotocol.io/docs/getting-started/intro
147
- - MCP elicitation specification: https://modelcontextprotocol.io/specification/2025-06-18/client/elicitation
200
+ - MCP 2026-07-28 release candidate: https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/
201
+ - MCP Tasks extension: https://tasks.extensions.modelcontextprotocol.io/
202
+ - MCP Apps extension: https://apps.extensions.modelcontextprotocol.io/
203
+ - ACP v1 schema: https://agentclientprotocol.com/protocol/v1/schema
148
204
  - A2A protocol specification: https://a2a-protocol.org/latest/specification/
205
+ - A2A JavaScript SDK: https://github.com/a2aproject/a2a-js
206
+ - Agent Skills specification: https://agentskills.io/specification
207
+ - Agent Skills integration guide: https://agentskills.io/client-implementation/adding-skills-support
208
+ - AG-UI documentation: https://docs.ag-ui.com/
209
+ - AG-UI reference implementation: https://github.com/ag-ui-protocol/ag-ui
210
+ - OpenTelemetry GenAI semantic conventions: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/
211
+ - OpenTelemetry GenAI metrics: https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/gen-ai/gen-ai-metrics.md
212
+ - OWASP AI Agent Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html
213
+ - OWASP Agent Memory Guard: https://owasp.org/www-project-agent-memory-guard/
149
214
  - LangGraph overview: https://docs.langchain.com/oss/python/langgraph/overview
150
- - OpenAI computer use guide: https://platform.openai.com/docs/guides/tools-computer-use
215
+ - OpenAI computer use guide: https://developers.openai.com/api/docs/guides/tools-computer-use
151
216
  - Ollama docs: https://docs.ollama.com/
152
- - MCP authorization specification: https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization
153
- - MCP security best practices: https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices
217
+ - MCP authorization specification: https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization
218
+ - MCP security best practices: https://modelcontextprotocol.io/specification/2025-11-25/basic/security_best_practices