@robota-sdk/agent-ui-web 3.0.0-beta.99 → 3.0.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.
Files changed (2) hide show
  1. package/CHANGELOG.md +410 -1
  2. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,414 @@
1
1
  # @robota-sdk/agent-ui-web
2
2
 
3
+ ## 3.0.1
4
+ ### Patch Changes
5
+
6
+ - @robota-sdk/agent-interface-command@3.0.1
7
+ - @robota-sdk/agent-interface-execution@3.0.1
8
+ - @robota-sdk/agent-interface-session@3.0.1
9
+ - @robota-sdk/agent-interface-transport@3.0.1
10
+ - @robota-sdk/agent-transport@3.0.1
11
+
12
+ ## 3.0.0
13
+ ### Major Changes
14
+
15
+ - 7b72344: Every client can offer the session's commands and skills and show its status. The GUI uses them as a
16
+ desktop-style composer.
17
+
18
+ - `agent-interface-session` is **`major` because `IInteractiveSession` gains required members**:
19
+ `ISessionCommands.listSkills()` and a `statusRead` capability, `getStatusSnapshot()`. The snapshot
20
+ holds session, model, permission mode, effort, context and goal. An external implementation stops
21
+ compiling until it adds both.
22
+ - `agent-transport` is **`major` for the same reason on `IProtocolSession`**. It also gains the wire
23
+ messages `get-commands` → `commands` and `get-status` → `session_status`. Both are reads that the
24
+ observe role may send.
25
+ - `agent-interface-command` gains `ICommandSkillListEntry`, moved from `agent-framework`, which
26
+ re-exports it unchanged.
27
+ - `agent-ui-web` is **`major` because its state changes shape**:
28
+ - A command's outcome and a finished turn's tool calls are now conversation entries: `messages` is
29
+ `TConversationEntry[]`.
30
+ - The `uiIntentNotices` list, `dismissUiIntentNotice`, `applyUiIntentEvent`,
31
+ `removeUiIntentNotice` and `IUiIntentNotice` are removed. An intent now answers with an info
32
+ line in the conversation.
33
+ - Session notices keep only `session-error` and `protocol-error`.
34
+ - The state gains `commandCatalog` and `sessionStatus`.
35
+ - `agent-command` registers `/theme` and `/keybindings` even without a terminal. They then answer
36
+ that they belong to the configured CLI terminal, instead of being unknown.
37
+ - `agent-framework`:
38
+ - `InteractiveSession.getStatusSnapshot()`.
39
+ - The main-thread row previews the last chat message instead of the last record's type.
40
+ - `agent-cli` serves the full GUI web app, renamed from `agent-cli-web` to `agent-gui-web`, on
41
+ `robota --serve --open`.
42
+ - 6ae3f28: A served runtime can list its workspace's sessions, start a new one and switch to another without the
43
+ process or any client connection restarting. The GUI shows them in a sessions sidebar.
44
+
45
+ - `agent-interface-session` is **`major`** for two reasons:
46
+ - It adds `ISessionListing`, `ISessionDirectory` and `ISessionSwitchedEvent`.
47
+ - `IInteractiveSessionEvents` gains a required `session_switched` event. An exhaustive map over the
48
+ event names stops compiling until it classifies the new event.
49
+ - `agent-transport` is **`major`** for the same kind of reason:
50
+ - It adds the wire messages `list-sessions` → `sessions`/`sessions_error`, `new-session`,
51
+ `switch-session`, and the broadcast `session_switched`.
52
+ - It adds a `sessionDirectory` handler option. A refusal to switch comes back as a
53
+ `protocol_error` carrying the reason.
54
+ - An exhaustive map over message types must add the new variants.
55
+ - `agent-transport-ws` passes a configured `sessionDirectory` to every connection.
56
+ - `agent-framework` is **`major` because `IRuntimeHostHandle.session` is now a `SessionSlot`**, not the
57
+ `InteractiveSession`, and `bindTransports` receives the slot.
58
+ - The slot is an `IInteractiveSession` that forwards to the current session. Members outside that
59
+ interface are read through `host.session.current`, which changes on a switch.
60
+ - Adds `InteractiveSession.whenInitialized()`.
61
+ - Exports `listUnreadableSessions`.
62
+ - `agent-ui-web` is **`major`**:
63
+ - `IWsSessionState` gains session listing state and actions.
64
+ - It adds a `SessionSidebar`.
65
+ - `/resume` opens the sidebar.
66
+ - `agent-cli`: `robota --serve` provides the session directory, and refuses a switch that would lose
67
+ work in progress. External-event grants belong to the run: a switch reopens them on the new session,
68
+ as the TUI already does.
69
+ - External-event grant history (spent tokens, rate windows, revocations) belongs to the run. The new
70
+ option `externalEventGrantHistory` (from `createExternalEventGrantHistory()`) is shared by every
71
+ session that a served runtime or the TUI builds. A session switch therefore replays no spent token
72
+ and resets no rate limit. The TUI previously had this gap when it switched sessions.
73
+
74
+ ### Minor Changes
75
+
76
+ - 9ecffed: `robota daemon start | status | stop | unlock` runs one long-lived runtime per workspace for clients to attach to.
77
+
78
+ - **What a daemon is.** A supervised session marked as the workspace's daemon.
79
+ - Its control socket answers `connect` with the loopback WebSocket address, and only to a caller that names the daemon's current start.
80
+ - The token never touches disk or argv. The daemon removes it from its own environment, so its tools do not inherit it.
81
+ - **Starting.** `daemon start --json` prints one line, `{"id","url"}`, for a client host to read.
82
+ - Starts in one workspace take turns through a lock.
83
+ - A lock left behind by a start that is gone is never removed automatically. The start refuses and names `robota daemon unlock`.
84
+ - A daemon that cannot hand over its address fails its start and is not left running.
85
+ - **The desktop app attaches** to the workspace daemon and starts one only when none is running.
86
+ - Closing the window leaves the daemon running.
87
+ - If the daemon stops while the window is open, the window says so and offers Reconnect.
88
+ - **`agent-ui-web`.** The WebSocket session client reports when its retries are exhausted (`onGiveUp`, and `onConnectionLost` in `useWsSession`).
89
+ - 57f57f5: A daemon keeps several sessions live, and each client is bound to its own: one client's switch moves
90
+ only that client.
91
+
92
+ - `agent-interface-session`: `ISessionBinder`/`ISessionBinding`, the session-change refusal codes with
93
+ `isSessionChangeRefusal`, and listing rows that may say `live` and `clients`.
94
+ - `agent-framework`: `SessionPool` and `SessionChangeRefusal`.
95
+ - `agent-transport` (**major**): a new server frame, `session_change_failed`, which an exhaustive
96
+ consumer must handle. A refused `new-session` or `switch-session` now answers with it, carrying a
97
+ `code`, instead of `protocol_error`; both requests take an optional `requestId` that it echoes.
98
+ - `agent-transport-ws`: the `sessionBinder` option binds each connection to its own session and
99
+ releases the binding when the connection closes.
100
+ - `agent-cli`: `robota --serve` and the daemon keep up to four sessions live. Each WebSocket client and
101
+ attached terminal is bound to its own session; leaving a busy session is no longer refused, and only
102
+ the last driver of a session with a pending prompt is kept from leaving it. Grants and the supervised
103
+ name stay on the runtime's first session, and its reported activity covers every live session.
104
+ - `agent-ui-web`: a refused new or switch shows the host's reason as a notice (an older host's
105
+ `protocol_error` still does); the session sidebar marks live sessions and counts the other clients
106
+ on each; after a reconnect to a host that keeps sessions live, the GUI returns to the session it was on.
107
+ - `agent-ui-terminal`: an attached terminal shows why a switch was refused, and the picker's switch
108
+ stays pending until the host answers; the session picker marks live sessions and their clients.
109
+ - 9721162: The command catalog says who runs a command, and which surfaces can run it.
110
+
111
+ - **`agent-interface-command` (major).**
112
+ - Adds `TCommandRunner` (`'runtime' | 'client'`) and `TCommandSurface` (`'terminal' | 'gui'`).
113
+ - `ICommand` gains optional `runner` and `surfaces`.
114
+ - `ICommandListEntry` gains optional `surfaces` and a **required** `runner`. An implementation of `listCommands()`, or any code that constructs an `ICommandListEntry`, must now emit `runner`; a command that declares none gets `'runtime'`.
115
+ - **`agent-framework` (minor).**
116
+ - `ISystemCommand` gains optional `runner` and `surfaces`, and the command listing carries both.
117
+ - An undeclared runner resolves to `'runtime'`.
118
+ - `SessionTerminalHandoffGate` is exported for a terminal client that hands its own terminal to a command.
119
+ - **`agent-command` (minor).**
120
+ - `/shell`, `/editor`, `/theme` and `/keybindings` declare `runner: 'client'` and `surfaces: ['terminal']`.
121
+ - `createTerminalClientCommands()` builds the same four commands, from the same execute functions, for a terminal client to run itself. The set follows the preset's module selection.
122
+ - **`agent-ui-web` (minor).** The `/` menu marks a command that runs in the terminal with a "terminal" badge.
123
+ - 227ff3a: The GUI session surface (desktop app, `robota --serve --open`) is redesigned as a calm desktop app: readable
124
+ type in a bundled Pretendard, monospace only for code and paths, surfaces separated by tone instead of
125
+ outlines, and light and dark themes that follow the system. Agent replies read as prose, your messages sit
126
+ in bubbles, tool calls are single quiet lines, and the composer carries the model, mode and effort. The
127
+ permission prompt now shows what the tool was asked to run, and the title bar names the current session.
128
+ - f8a8a4d: The GUI surface's design now applies inside an `agent-ui` scope that each of its root components opens,
129
+ so an app with design tokens of its own can embed the surface without either overriding the other. Such
130
+ an app imports `@robota-sdk/agent-ui-web/styles/surface.css` into its Tailwind entry; a page that is only
131
+ the surface keeps importing `styles/theme.css` and puts `agent-ui` on its `<html>`. `ProductMark` and
132
+ `ProductWordmark` are exported. The browser remote client (`RemoteClient`) follows the same design, with
133
+ its pairing states centred on the page.
134
+ - 29486da: A lost connection no longer drops a typed message or takes the person out of their session. While the
135
+ transport is not `connected`, the composer keeps its draft and Send explains why it cannot submit
136
+ ("Not connected"). A banner above the conversation — never a full-screen replacement — says "Connection
137
+ lost. Reconnecting…" while retries continue, and once they give up either offers a working Reconnect
138
+ (a host that can restart the runtime) or says how to reopen the page (a browser served by
139
+ `robota --serve --open`). A desktop Reconnect remembers the session the person was in and returns to it
140
+ once the restart's reload reconnects.
141
+ - e8d70ac: A first run finds a provider, instead of a dead end. `robota --serve` (and the daemon it starts) no
142
+ longer refuses when no provider is configured: it starts in setup mode, and the GUI's conversation area
143
+ shows a "Connect a model provider to start" panel with a "Set up provider" button in place of the
144
+ composer. Answering it configures and swaps in the first provider live, with no restart. A startup
145
+ failure now says why — `robota daemon start --json` and the desktop app's fatal screen report the
146
+ child's own reason instead of a generic "readiness channel closed", and the fatal screen gets a Try
147
+ again button. `trust status --json` and the desktop trust dialog list only sources whose state trust
148
+ would actually change, instead of naming one this platform could not determine; the dialog shows one
149
+ sentence and a collapsed Details section. `robota --serve --open` in an untrusted folder now asks at
150
+ the terminal (trust it, start Restricted, or quit) when someone is there to ask, instead of refusing
151
+ outright.
152
+ - 0ba247b: A tool result can now carry a view its source declared (an MCP app), and a surface can invoke a
153
+ runtime tool through the session's permission gate with a prompt. This is the contract and wiring
154
+ layer: nothing produces a view yet, and the GUI does not yet host one.
155
+
156
+ - `agent-core` — `IToolResult.view` carries an `IToolAppView` (source, `ui://` resource, mime type,
157
+ HTML, structured content, callable tools, the call's input). `view` is now a typed key of
158
+ `IToolResult`, so an extension that already used a `view` key with another type must rename it.
159
+ The view is display data: it never enters model context or the size that decides a spill, and a
160
+ result replaced by its reference keeps it.
161
+ - `agent-interface-session` — `invokeRuntimeTool` takes `permissionInteraction` (`'interactive'` or
162
+ the default `'deny'`), a `driverId` (a host that attributes prompts names it as the requester) and
163
+ an `executionId` its events carry. A finished model call's `tool_end` names its view with
164
+ `IToolState.appView` (`viewId`, source, resource), and the new
165
+ `ISessionToolAppViews.readToolAppView(viewId)` reads the document. A permission handler may take
166
+ `{ signal }`, and aborting it withdraws the prompt.
167
+ - `agent-session` — a direct call asks a person only when its caller says so, and the handler is
168
+ given the call's own signal; the tool end event carries the view, never in the logged result data.
169
+ - `agent-framework` — the view of a model's call is kept under a `viewId` the session mints, in a
170
+ bounded per-session store (16 views, 4 MiB each, 16 MiB in all, measured on the whole serialized
171
+ view), and read on demand, so the document never rides `tool_end` to every surface, never enters
172
+ the recorded history, and a repeated provider tool-call id cannot overwrite another turn's view.
173
+ A malformed view is dropped. A direct call keeps and names no view, recognised by the id it was
174
+ started with. A submission or agent wakeup that arrives while a direct call holds the session is
175
+ queued behind it, as during a turn, instead of refused. A direct call acting for a driver
176
+ attributes its permission prompt and tool events to that driver, and aborting its signal withdraws
177
+ an open prompt from every surface.
178
+ - `agent-transport` — a driving connection sends `call-app-tool` (answered by `app_tool_result`) and
179
+ `read-app-view` (answered by `app_view`). A call names its view and reaches only the tools that
180
+ view's source declared; a call or read that decodes but cannot be served answers `protocol_error`
181
+ echoing the `requestId`, while an observer's attempt is refused like any non-read. A call still
182
+ waiting on its prompt is cancelled when its connection goes away (for the resume bridge, when the
183
+ bridge is disposed). `maxFrameBytes` bounds an app answer to what a carrier's channel carries;
184
+ the WebRTC carrier uses a history page's worth. `IProtocolSession` now includes the runtime-tool
185
+ and app-view roles.
186
+ - `agent-ui-web` — the two new server messages are recorded as not rendered until the app-view host
187
+ consumes them.
188
+
189
+ An implementation of `IInteractiveSession` or `IProtocolSession` outside this repository must add
190
+ `readToolAppView` (and, for `IProtocolSession`, `listRuntimeTools` and `invokeRuntimeTool`); the
191
+ members are required so a host cannot silently lack them.
192
+ - fbb287d: Show a finished MCP tool call's app in an opaque frame with a source-bound JSON-RPC bridge. App callbacks use the session's view authority and permission prompt. Session changes and frame disposal reject pending local requests.
193
+
194
+ Hosts can provide a sandbox URL through `SessionSurface`. The web GUI serves a separate sandbox document with content restrictions and `Connection-Allowlist` enforcement. App execution requires Chromium 158 or newer and native network isolation; other browsers and hosts without the response policy show an unavailable message and retain the text result. A surface without a sandbox URL never reads the app document.
195
+ - 1e3f91a: CMD-004 Phase 2 Stage E (breaking, beta line): the legacy `TCommandEffect` union and
196
+ `ICommandResult.effects` are DELETED. Commands emit the split contract directly —
197
+ `hostActions` (session-executed via `ICommandHostAdapters`; works headless and remote) and
198
+ `uiIntents` (requester-routed `ui_intent` session events with UI-neutral `show-*` names).
199
+ Final carriers for the former notification effects: `session_renamed` and the new
200
+ `history_cleared` are BROADCAST session events (forwarded to every WS surface, folded by the
201
+ TUI transcript/title and the GUI reducer's new `sessionName`/transcript-reset state);
202
+ `session-execution-started` rides `result.data.sessionExecution`; the plugin-registry refresh
203
+ rides `result.data.pluginRegistryReloaded`. A mechanical grep floor
204
+ (`command-effect-grep-floor.test.ts`) keeps `tui-requested`/`TCommandEffect`/`effects:` out of
205
+ every `packages/*/src` production tree.
206
+ - c402d98: Expose a separate product-bound CLI entry and desktop/native host helpers for npm-only consumer applications. Publish the product configuration and browser client contracts needed by those applications.
207
+
208
+ ### Patch Changes
209
+
210
+ - 9721162: A key typed just as a prompt appears no longer answers it: in the terminal UI the permission prompt, and in the web UI both the permission and the ask dock.
211
+
212
+ - **`agent-ui-terminal`:** the permission prompt ignores its keys for a short pause after it appears (`PERMISSION_PROMPT_ARM_DELAY_MS`). While it waits it shows "keys answer in a moment" and no selection cursor. In screen-reader mode, a number typed during the pause, or typed for the previous request, is not kept for a later Enter.
213
+ - **`agent-ui-web`:** the docked permission or ask prompt waits a short pause (`PROMPT_ARM_DELAY_MS`) before it takes focus, so keys typed during that pause stay in the composer. While it waits it says so. A mouse click on a button answers at once, and Esc still denies or cancels; Enter or Space on a focused button waits like any other key, and a button focused to answer one prompt hands focus back to the dock when the next appears.
214
+ - 6e6b06b: A wire client can now render the whole session the way the in-process terminal UI does: the full
215
+ history, the context window as it changes, when the history changes, and where each turn came from.
216
+
217
+ - `agent-interface-session` is **`major`**: `ISessionConversationRead` gains a required
218
+ `getFullHistory()`. Any implementation of it, or of `IInteractiveSession`, must add it.
219
+ - `agent-transport` is **`major`**:
220
+ - It adds `get-history { fromIndex? }` → `history { startIndex, total, entries }`. The history
221
+ crosses one bounded page at a time (at most 256 KiB of entries; a single larger entry is sent
222
+ alone), from `fromIndex` (default 0), so no reply grows with the session. The client asks for
223
+ the next page after the previous one arrived. Entries are `IWireHistoryEntry`: a history entry
224
+ with an ISO 8601 `timestamp`. An observer may send it.
225
+ - `complete` and `interrupted` carry the turn's result without the session's history
226
+ (`TWireExecutionResult`); a client reads the history with `get-history`.
227
+ - It adds `get-prompts`: the host sends the permission and ask prompts still open as the
228
+ `permission_request` / `ask_request` frames that asked them, for a client that attached later.
229
+ An observer may not send it.
230
+ - `pending` gains an optional `pendingCount`: a host sends it when it knows how many prompts are
231
+ queued, and a client that gets none counts the prompt it shows. The host sends `pending` in
232
+ reply to a `submit` once it has taken the prompt, so a prompt queued behind a running turn shows
233
+ as queued.
234
+ - `command` takes an optional `requestId`, which the host echoes on the command's
235
+ `command_result` or `protocol_error`.
236
+ - The session's `context_update` is pushed as the `context` frame that `get-context` answers with.
237
+ - `compact`, `skill_activation` and `memory_event` push the new `history_changed`; the client
238
+ reads the history again.
239
+ - `turn_source` is pushed as the new `turn_source` frame.
240
+ - An exhaustive map over `TClientMessage` or `TServerMessage` types must add the new variants,
241
+ and `IProtocolSession` now requires `getFullHistory()`.
242
+ - `agent-transport-http` is **`major`** only because `IHttpTransportSession` includes the conversation
243
+ read role, so a session handed to it must now provide `getFullHistory()`.
244
+ - `agent-framework`: `SessionSlot` forwards `getFullHistory()` to the current session.
245
+ - `agent-ui-web` receives the new frames and does not render them.
246
+ - 09e7e21: **An MCP server's form-mode elicitation during a tool call becomes a Robota ask prompt.**
247
+
248
+ `@robota-sdk/agent-mcp` opens a session with `elicitation: true` to declare form-mode elicitation and
249
+ answer it: a request the server raises while a tool call is in flight (a server→client
250
+ `elicitation/create` on the legacy era, an `input_required` round on 2026-07-28) is put to a person
251
+ through that call's ask port (`IMCPToolCallOptions.ask`, which the discovered tool fills from
252
+ `IToolExecutionContext.ask`) as one question titled with the configured server id and carrying the
253
+ server's message as one bounded line, with Respond and Decline, then one question per field
254
+ (choices, multi-select, yes/no, or free text validated against the field and re-asked once). The
255
+ answer continues the same call; the re-sent `tools/call` that carries it is the protocol's
256
+ continuation, not a replay, and a prompt is withdrawn when its call ends (an abort, or the call's
257
+ own timeout) — when the last in-flight call to that server ends, if there are several, since a
258
+ request names none of them. A request outside an in-flight call, or during a call that has no ask port, is
259
+ declined; a dismissal, a failing port or a second rejected answer cancels; a field named like a
260
+ credential is shown unmasked with a warning. URL mode is not offered. Without the opt-in nothing
261
+ changes: no capability is declared and an `input_required` result still closes the carrier. An
262
+ embedded request of another kind (sampling, roots) or more rounds than the client allows closes the
263
+ carrier as `input_required` does; an embedded elicitation the client refuses on its face (URL mode,
264
+ a malformed form) fails the call and leaves the carrier open.
265
+
266
+ `@robota-sdk/agent-cli` turns the opt-in on for the interactive terminal and the serve host driven by
267
+ the desktop app or the web GUI, which show the prompt, and leaves it off for print mode and for the
268
+ two serve-runtime hosts with no prompt surface, `mcp serve` and the ACP editor agent.
269
+
270
+ `@robota-sdk/agent-ui-web` renders an ask with `maxSelect` above 1 as a multi-select: options toggle
271
+ (click or 1–9), Submit answers with the ticked values once `minSelect` is met, and a toggle beyond
272
+ `maxSelect` is ignored, as in the terminal.
273
+ - c207a31: Keep automatic compaction aligned with the active model and pending input, preserve provider usage when estimating new context, and keep summary text out of the response stream. Display live context changes and successful automatic compaction in the shared app interface.
274
+ - df02568: Local OpenAI-compatible servers can be set up without saving a placeholder API key. Explicit credentials and environment references remain effective for authenticated servers and connection tests. Optional credentials are managed through the user-only provider edit command.
275
+ - 7d9cc66: Restore actual interactive tool observations, identities and outcomes from persisted event history.
276
+ Show denied calls as failed in live and restored GUI conversation views.
277
+ - Updated dependencies [9c19c50]
278
+ - Updated dependencies [5307f8a]
279
+ - Updated dependencies [b462ee7]
280
+ - Updated dependencies [37b4bd7]
281
+ - Updated dependencies [50d2c9f]
282
+ - Updated dependencies [724fabb]
283
+ - Updated dependencies [d877de2]
284
+ - Updated dependencies [d61e159]
285
+ - Updated dependencies [bfe8ed5]
286
+ - Updated dependencies [a5961c9]
287
+ - Updated dependencies [af2f2ad]
288
+ - Updated dependencies [3038eb7]
289
+ - Updated dependencies [c7f9203]
290
+ - Updated dependencies [18b52cc]
291
+ - Updated dependencies [7b72344]
292
+ - Updated dependencies [6ae3f28]
293
+ - Updated dependencies [57f57f5]
294
+ - Updated dependencies [ba822c1]
295
+ - Updated dependencies [9721162]
296
+ - Updated dependencies [6e6b06b]
297
+ - Updated dependencies [57280bf]
298
+ - Updated dependencies [18c0d5c]
299
+ - Updated dependencies [193a0bc]
300
+ - Updated dependencies [9a01e78]
301
+ - Updated dependencies [e8d70ac]
302
+ - Updated dependencies [2c612ba]
303
+ - Updated dependencies [3427887]
304
+ - Updated dependencies [c967c57]
305
+ - Updated dependencies [60f3965]
306
+ - Updated dependencies [115e104]
307
+ - Updated dependencies [04719a9]
308
+ - Updated dependencies [04a6de4]
309
+ - Updated dependencies [0ba247b]
310
+ - Updated dependencies [4c5148e]
311
+ - Updated dependencies [0116a29]
312
+ - Updated dependencies [e82215f]
313
+ - Updated dependencies [52b7346]
314
+ - Updated dependencies [9db63ee]
315
+ - Updated dependencies [b078afa]
316
+ - Updated dependencies [2ebff01]
317
+ - Updated dependencies [9db63ee]
318
+ - Updated dependencies [2ebff01]
319
+ - Updated dependencies [4772067]
320
+ - Updated dependencies [0f98419]
321
+ - Updated dependencies [64ba748]
322
+ - Updated dependencies [d312755]
323
+ - Updated dependencies [c207a31]
324
+ - Updated dependencies [3244fb8]
325
+ - Updated dependencies [1e3f91a]
326
+ - Updated dependencies [4f3c075]
327
+ - Updated dependencies [7669851]
328
+ - Updated dependencies [7d9cc66]
329
+ - Updated dependencies [4b76cfa]
330
+ - Updated dependencies [07b627f]
331
+ - Updated dependencies [dfb9b15]
332
+ - Updated dependencies [9665c6e]
333
+ - Updated dependencies [44393be]
334
+ - Updated dependencies [c7fa299]
335
+ - Updated dependencies [5134b3b]
336
+ - Updated dependencies [7911a7d]
337
+ - Updated dependencies [7d9cc66]
338
+ - Updated dependencies [9c6a8db]
339
+ - Updated dependencies [7d9cc66]
340
+ - Updated dependencies [5c5ff23]
341
+ - Updated dependencies [9814afc]
342
+ - Updated dependencies [9c6a8db]
343
+ - @robota-sdk/agent-interface-execution@3.0.0
344
+ - @robota-sdk/agent-interface-command@3.0.0
345
+ - @robota-sdk/agent-interface-session@3.0.0
346
+ - @robota-sdk/agent-interface-transport@3.0.0
347
+ - @robota-sdk/agent-transport@3.0.0
348
+
349
+ ## 3.0.0-beta.106
350
+ ### Patch Changes
351
+
352
+ - @robota-sdk/agent-interface-command@3.0.0-beta.106
353
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.106
354
+ - @robota-sdk/agent-interface-session@3.0.0-beta.106
355
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.106
356
+ - @robota-sdk/agent-transport@3.0.0-beta.106
357
+
358
+ ## 3.0.0-beta.105
359
+ ### Patch Changes
360
+
361
+ - @robota-sdk/agent-interface-command@3.0.0-beta.105
362
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.105
363
+ - @robota-sdk/agent-interface-session@3.0.0-beta.105
364
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.105
365
+ - @robota-sdk/agent-transport@3.0.0-beta.105
366
+
367
+ ## 3.0.0-beta.104
368
+ ### Patch Changes
369
+
370
+ - @robota-sdk/agent-interface-command@3.0.0-beta.104
371
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.104
372
+ - @robota-sdk/agent-interface-session@3.0.0-beta.104
373
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.104
374
+ - @robota-sdk/agent-transport@3.0.0-beta.104
375
+
376
+ ## 3.0.0-beta.103
377
+ ### Patch Changes
378
+
379
+ - @robota-sdk/agent-interface-command@3.0.0-beta.103
380
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.103
381
+ - @robota-sdk/agent-interface-session@3.0.0-beta.103
382
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.103
383
+ - @robota-sdk/agent-transport@3.0.0-beta.103
384
+
385
+ ## 3.0.0-beta.102
386
+ ### Patch Changes
387
+
388
+ - @robota-sdk/agent-interface-command@3.0.0-beta.102
389
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.102
390
+ - @robota-sdk/agent-interface-session@3.0.0-beta.102
391
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.102
392
+ - @robota-sdk/agent-transport@3.0.0-beta.102
393
+
394
+ ## 3.0.0-beta.101
395
+ ### Patch Changes
396
+
397
+ - @robota-sdk/agent-interface-command@3.0.0-beta.101
398
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.101
399
+ - @robota-sdk/agent-interface-session@3.0.0-beta.101
400
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.101
401
+ - @robota-sdk/agent-transport@3.0.0-beta.101
402
+
403
+ ## 3.0.0-beta.100
404
+ ### Patch Changes
405
+
406
+ - @robota-sdk/agent-interface-command@3.0.0-beta.100
407
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.100
408
+ - @robota-sdk/agent-interface-session@3.0.0-beta.100
409
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.100
410
+ - @robota-sdk/agent-transport@3.0.0-beta.100
411
+
3
412
  ## 3.0.0-beta.99
4
413
  ### Patch Changes
5
414
 
@@ -34,7 +443,7 @@
34
443
  ### Minor Changes
35
444
 
36
445
  - fbb287d: Show a finished MCP tool call's app in an opaque frame with a source-bound JSON-RPC bridge. App callbacks use the session's view authority and permission prompt. Session changes and frame disposal reject pending local requests.
37
-
446
+
38
447
  Hosts can provide a sandbox URL through `SessionSurface`. The web GUI serves a separate sandbox document with content restrictions and `Connection-Allowlist` enforcement. App execution requires Chromium 158 or newer and native network isolation; other browsers and hosts without the response policy show an unavailable message and retain the text result. A surface without a sandbox URL never reads the app document.
39
448
 
40
449
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robota-sdk/agent-ui-web",
3
- "version": "3.0.0-beta.99",
3
+ "version": "3.0.1",
4
4
  "description": "Browser-safe React session presentation, wire reducer, WebSocket client and runtime-host contract for consumer-owned agent renderers.",
5
5
  "license": "AGPL-3.0-only OR LicenseRef-Commercial",
6
6
  "type": "module",
@@ -58,11 +58,11 @@
58
58
  "pretendard": "^1.3.9",
59
59
  "react-markdown": "^10.1.0",
60
60
  "remark-gfm": "^4.0.1",
61
- "@robota-sdk/agent-interface-command": "3.0.0-beta.99",
62
- "@robota-sdk/agent-interface-execution": "3.0.0-beta.99",
63
- "@robota-sdk/agent-interface-session": "3.0.0-beta.99",
64
- "@robota-sdk/agent-interface-transport": "3.0.0-beta.99",
65
- "@robota-sdk/agent-transport": "3.0.0-beta.99"
61
+ "@robota-sdk/agent-interface-command": "3.0.1",
62
+ "@robota-sdk/agent-interface-session": "3.0.1",
63
+ "@robota-sdk/agent-transport": "3.0.1",
64
+ "@robota-sdk/agent-interface-transport": "3.0.1",
65
+ "@robota-sdk/agent-interface-execution": "3.0.1"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "react": ">=18"