@robota-sdk/agent-ui-web 0.0.0-stage → 3.0.0-beta.94

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 (75) hide show
  1. package/CHANGELOG.md +409 -0
  2. package/LICENSE +661 -0
  3. package/README.md +19 -2
  4. package/dist/browser/index.d.ts +715 -0
  5. package/dist/browser/index.d.ts.map +1 -0
  6. package/dist/browser/index.js +7923 -0
  7. package/dist/browser/index.js.map +1 -0
  8. package/dist/node/index.cjs +7973 -0
  9. package/dist/node/index.d.cts +715 -0
  10. package/dist/node/index.d.cts.map +1 -0
  11. package/dist/node/index.d.ts +715 -0
  12. package/dist/node/index.d.ts.map +1 -0
  13. package/dist/node/index.js +7923 -0
  14. package/dist/node/index.js.map +1 -0
  15. package/docs/README.md +62 -0
  16. package/docs/SPEC.md +124 -0
  17. package/package.json +99 -3
  18. package/src/client/runtime-host.ts +84 -0
  19. package/src/client/ws-session-client.ts +131 -0
  20. package/src/clipboard.ts +81 -0
  21. package/src/components/AgentActivityPanel.tsx +371 -0
  22. package/src/components/AgentSwitcherSheet.tsx +93 -0
  23. package/src/components/Brand.tsx +33 -0
  24. package/src/components/Composer.tsx +685 -0
  25. package/src/components/ConversationView.tsx +772 -0
  26. package/src/components/Dialog.tsx +230 -0
  27. package/src/components/DiffLines.tsx +81 -0
  28. package/src/components/ExecutionDetailSheet.tsx +142 -0
  29. package/src/components/HelpSheet.tsx +104 -0
  30. package/src/components/PermissionPrompt.tsx +661 -0
  31. package/src/components/PersonalUsageDashboard.tsx +39 -0
  32. package/src/components/PersonalUsageDashboardDetails.tsx +368 -0
  33. package/src/components/PersonalUsageDashboardSections.tsx +250 -0
  34. package/src/components/PopupMenu.tsx +166 -0
  35. package/src/components/ProjectPanel.tsx +268 -0
  36. package/src/components/SessionMonitor.tsx +180 -0
  37. package/src/components/SessionSidebar.tsx +429 -0
  38. package/src/components/SessionSurface.tsx +455 -0
  39. package/src/components/SessionSurfaceChrome.tsx +316 -0
  40. package/src/components/SettingsFields.tsx +159 -0
  41. package/src/components/SettingsGeneralSection.tsx +49 -0
  42. package/src/components/SettingsMcpSection.tsx +157 -0
  43. package/src/components/SettingsPermissionsSection.tsx +137 -0
  44. package/src/components/SettingsPluginsSection.tsx +165 -0
  45. package/src/components/SettingsProvidersSection.tsx +211 -0
  46. package/src/components/SettingsScreen.tsx +340 -0
  47. package/src/components/StatusControls.tsx +294 -0
  48. package/src/components/composer-attachments.ts +246 -0
  49. package/src/components/personal-usage-dashboard-types.ts +26 -0
  50. package/src/driver-labels.ts +88 -0
  51. package/src/execution-entry-status.ts +55 -0
  52. package/src/goal-view.ts +19 -0
  53. package/src/hooks/command-menu.ts +65 -0
  54. package/src/hooks/excluded-commands.ts +52 -0
  55. package/src/hooks/prompt-state.ts +83 -0
  56. package/src/hooks/server-message-handling.ts +92 -0
  57. package/src/hooks/session-client-types.ts +329 -0
  58. package/src/hooks/ui-intent-state.ts +74 -0
  59. package/src/hooks/use-agent-switcher-state.ts +125 -0
  60. package/src/hooks/use-execution-detail.ts +118 -0
  61. package/src/hooks/use-media-query.ts +27 -0
  62. package/src/hooks/use-model-list.ts +45 -0
  63. package/src/hooks/use-personal-usage.ts +138 -0
  64. package/src/hooks/use-project-panel.ts +117 -0
  65. package/src/hooks/use-schedules-state.ts +92 -0
  66. package/src/hooks/use-session-directory.ts +202 -0
  67. package/src/hooks/use-settings-state.ts +115 -0
  68. package/src/hooks/useSessionClient.ts +991 -0
  69. package/src/index.ts +66 -0
  70. package/src/product-identity.tsx +26 -0
  71. package/src/schedule-view.ts +92 -0
  72. package/src/styles/surface.css +231 -0
  73. package/src/styles/surface.css.d.mts +1 -0
  74. package/src/styles/theme.css +38 -0
  75. package/src/styles/theme.css.d.mts +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,409 @@
1
+ # @robota-sdk/agent-ui-web
2
+
3
+ ## 3.0.0-beta.94
4
+ ### Patch Changes
5
+
6
+ - @robota-sdk/agent-interface-session@3.0.0-beta.94
7
+ - @robota-sdk/agent-transport@3.0.0-beta.94
8
+ - @robota-sdk/agent-interface-command@3.0.0-beta.94
9
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.94
10
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.94
11
+
12
+ ## 3.0.0-beta.93
13
+ ### Minor Changes
14
+
15
+ - 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.
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.93
21
+ - @robota-sdk/agent-interface-command@3.0.0-beta.93
22
+ - @robota-sdk/agent-interface-session@3.0.0-beta.93
23
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.93
24
+ - @robota-sdk/agent-transport@3.0.0-beta.93
25
+
26
+ ## 3.0.0-beta.92
27
+ ### Patch Changes
28
+
29
+ - 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.
30
+ - @robota-sdk/agent-interface-command@3.0.0-beta.92
31
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.92
32
+ - @robota-sdk/agent-interface-session@3.0.0-beta.92
33
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.92
34
+ - @robota-sdk/agent-transport@3.0.0-beta.92
35
+
36
+ ## 3.0.0-beta.91
37
+ ### Patch Changes
38
+
39
+ - @robota-sdk/agent-interface-command@3.0.0-beta.91
40
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.91
41
+ - @robota-sdk/agent-interface-session@3.0.0-beta.91
42
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.91
43
+ - @robota-sdk/agent-transport@3.0.0-beta.91
44
+
45
+ ## 3.0.0-beta.90
46
+ ### Patch Changes
47
+
48
+ - @robota-sdk/agent-interface-command@3.0.0-beta.90
49
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.90
50
+ - @robota-sdk/agent-interface-session@3.0.0-beta.90
51
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.90
52
+ - @robota-sdk/agent-transport@3.0.0-beta.90
53
+
54
+ ## 3.0.0-beta.89
55
+ ### Patch Changes
56
+
57
+ - Updated dependencies [3427887]
58
+ - @robota-sdk/agent-transport@3.0.0-beta.89
59
+ - @robota-sdk/agent-interface-command@3.0.0-beta.89
60
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.89
61
+ - @robota-sdk/agent-interface-session@3.0.0-beta.89
62
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.89
63
+
64
+ ## 3.0.0-beta.88
65
+
66
+ ### Patch Changes
67
+
68
+ - @robota-sdk/agent-interface-command@3.0.0-beta.88
69
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.88
70
+ - @robota-sdk/agent-interface-session@3.0.0-beta.88
71
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.88
72
+ - @robota-sdk/agent-transport@3.0.0-beta.88
73
+
74
+ ## 3.0.0-beta.87
75
+
76
+ ### Patch Changes
77
+
78
+ - 7d9cc66: Restore actual interactive tool observations, identities and outcomes from persisted event history.
79
+ Show denied calls as failed in live and restored GUI conversation views.
80
+ - Updated dependencies
81
+ - Updated dependencies [7d9cc66]
82
+ - Updated dependencies [7d9cc66]
83
+ - Updated dependencies [7d9cc66]
84
+ - @robota-sdk/agent-interface-command@3.0.0-beta.87
85
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.87
86
+ - @robota-sdk/agent-interface-session@3.0.0-beta.87
87
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.87
88
+ - @robota-sdk/agent-transport@3.0.0-beta.87
89
+
90
+ ## 3.0.0-beta.86
91
+
92
+ ### Patch Changes
93
+
94
+ - @robota-sdk/agent-interface-command@3.0.0-beta.86
95
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.86
96
+ - @robota-sdk/agent-interface-session@3.0.0-beta.86
97
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.86
98
+ - @robota-sdk/agent-transport@3.0.0-beta.86
99
+
100
+ ## 3.0.0-beta.85
101
+
102
+ ### Patch Changes
103
+
104
+ - Updated dependencies [193a0bc]
105
+ - Updated dependencies [9a01e78]
106
+ - @robota-sdk/agent-interface-command@3.0.0-beta.85
107
+ - @robota-sdk/agent-transport@3.0.0-beta.85
108
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.85
109
+ - @robota-sdk/agent-interface-session@3.0.0-beta.85
110
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.85
111
+
112
+ ## 3.0.0-beta.84
113
+
114
+ ### Minor Changes
115
+
116
+ - 29486da: A lost connection no longer drops a typed message or takes the person out of their session. While the
117
+ transport is not `connected`, the composer keeps its draft and Send explains why it cannot submit
118
+ ("Not connected"). A banner above the conversation — never a full-screen replacement — says "Connection
119
+ lost. Reconnecting…" while retries continue, and once they give up either offers a working Reconnect
120
+ (a host that can restart the runtime) or says how to reopen the page (a browser served by
121
+ `robota --serve --open`). A desktop Reconnect remembers the session the person was in and returns to it
122
+ once the restart's reload reconnects.
123
+ - e8d70ac: A first run finds a provider, instead of a dead end. `robota --serve` (and the daemon it starts) no
124
+ longer refuses when no provider is configured: it starts in setup mode, and the GUI's conversation area
125
+ shows a "Connect a model provider to start" panel with a "Set up provider" button in place of the
126
+ composer. Answering it configures and swaps in the first provider live, with no restart. A startup
127
+ failure now says why — `robota daemon start --json` and the desktop app's fatal screen report the
128
+ child's own reason instead of a generic "readiness channel closed", and the fatal screen gets a Try
129
+ again button. `trust status --json` and the desktop trust dialog list only sources whose state trust
130
+ would actually change, instead of naming one this platform could not determine; the dialog shows one
131
+ sentence and a collapsed Details section. `robota --serve --open` in an untrusted folder now asks at
132
+ the terminal (trust it, start Restricted, or quit) when someone is there to ask, instead of refusing
133
+ outright.
134
+
135
+ ### Patch Changes
136
+
137
+ - Updated dependencies [e8d70ac]
138
+ - Updated dependencies [9c6a8db]
139
+ - Updated dependencies [9c6a8db]
140
+ - @robota-sdk/agent-interface-session@3.0.0-beta.84
141
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.84
142
+ - @robota-sdk/agent-transport@3.0.0-beta.84
143
+ - @robota-sdk/agent-interface-command@3.0.0-beta.84
144
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.84
145
+
146
+ ## 3.0.0-beta.83
147
+
148
+ ### Major Changes
149
+
150
+ - 7b72344: Every client can offer the session's commands and skills and show its status. The GUI uses them as a
151
+ desktop-style composer.
152
+
153
+ - `agent-interface-session` is **`major` because `IInteractiveSession` gains required members**:
154
+ `ISessionCommands.listSkills()` and a `statusRead` capability, `getStatusSnapshot()`. The snapshot
155
+ holds session, model, permission mode, effort, context and goal. An external implementation stops
156
+ compiling until it adds both.
157
+ - `agent-transport` is **`major` for the same reason on `IProtocolSession`**. It also gains the wire
158
+ messages `get-commands` → `commands` and `get-status` → `session_status`. Both are reads that the
159
+ observe role may send.
160
+ - `agent-interface-command` gains `ICommandSkillListEntry`, moved from `agent-framework`, which
161
+ re-exports it unchanged.
162
+ - `agent-ui-web` is **`major` because its state changes shape**:
163
+ - A command's outcome and a finished turn's tool calls are now conversation entries: `messages` is
164
+ `TConversationEntry[]`.
165
+ - The `uiIntentNotices` list, `dismissUiIntentNotice`, `applyUiIntentEvent`,
166
+ `removeUiIntentNotice` and `IUiIntentNotice` are removed. An intent now answers with an info
167
+ line in the conversation.
168
+ - Session notices keep only `session-error` and `protocol-error`.
169
+ - The state gains `commandCatalog` and `sessionStatus`.
170
+ - `agent-command` registers `/theme` and `/keybindings` even without a terminal. They then answer
171
+ that they belong to the Robota terminal, instead of being unknown.
172
+ - `agent-framework`:
173
+ - `InteractiveSession.getStatusSnapshot()`.
174
+ - The main-thread row previews the last chat message instead of the last record's type.
175
+ - `agent-cli` serves the full GUI web app, renamed from `agent-cli-web` to `agent-gui-web`, on
176
+ `robota --serve --open`.
177
+
178
+ - 6ae3f28: A served runtime can list its workspace's sessions, start a new one and switch to another without the
179
+ process or any client connection restarting. The GUI shows them in a sessions sidebar.
180
+
181
+ - `agent-interface-session` is **`major`** for two reasons:
182
+ - It adds `ISessionListing`, `ISessionDirectory` and `ISessionSwitchedEvent`.
183
+ - `IInteractiveSessionEvents` gains a required `session_switched` event. An exhaustive map over the
184
+ event names stops compiling until it classifies the new event.
185
+ - `agent-transport` is **`major`** for the same kind of reason:
186
+ - It adds the wire messages `list-sessions` → `sessions`/`sessions_error`, `new-session`,
187
+ `switch-session`, and the broadcast `session_switched`.
188
+ - It adds a `sessionDirectory` handler option. A refusal to switch comes back as a
189
+ `protocol_error` carrying the reason.
190
+ - An exhaustive map over message types must add the new variants.
191
+ - `agent-transport-ws` passes a configured `sessionDirectory` to every connection.
192
+ - `agent-framework` is **`major` because `IRuntimeHostHandle.session` is now a `SessionSlot`**, not the
193
+ `InteractiveSession`, and `bindTransports` receives the slot.
194
+ - The slot is an `IInteractiveSession` that forwards to the current session. Members outside that
195
+ interface are read through `host.session.current`, which changes on a switch.
196
+ - Adds `InteractiveSession.whenInitialized()`.
197
+ - Exports `listUnreadableSessions`.
198
+ - `agent-ui-web` is **`major`**:
199
+ - `IWsSessionState` gains session listing state and actions.
200
+ - It adds a `SessionSidebar`.
201
+ - `/resume` opens the sidebar.
202
+ - `agent-cli`: `robota --serve` provides the session directory, and refuses a switch that would lose
203
+ work in progress. External-event grants belong to the run: a switch reopens them on the new session,
204
+ as the TUI already does.
205
+ - External-event grant history (spent tokens, rate windows, revocations) belongs to the run. The new
206
+ option `externalEventGrantHistory` (from `createExternalEventGrantHistory()`) is shared by every
207
+ session that a served runtime or the TUI builds. A session switch therefore replays no spent token
208
+ and resets no rate limit. The TUI previously had this gap when it switched sessions.
209
+
210
+ ### Minor Changes
211
+
212
+ - 9ecffed: `robota daemon start | status | stop | unlock` runs one long-lived runtime per workspace for clients to attach to.
213
+
214
+ - **What a daemon is.** A supervised session marked as the workspace's daemon.
215
+ - Its control socket answers `connect` with the loopback WebSocket address, and only to a caller that names the daemon's current start.
216
+ - The token never touches disk or argv. The daemon removes it from its own environment, so its tools do not inherit it.
217
+ - **Starting.** `daemon start --json` prints one line, `{"id","url"}`, for a client host to read.
218
+ - Starts in one workspace take turns through a lock.
219
+ - A lock left behind by a start that is gone is never removed automatically. The start refuses and names `robota daemon unlock`.
220
+ - A daemon that cannot hand over its address fails its start and is not left running.
221
+ - **The desktop app attaches** to the workspace daemon and starts one only when none is running.
222
+ - Closing the window leaves the daemon running.
223
+ - If the daemon stops while the window is open, the window says so and offers Reconnect.
224
+ - **`agent-ui-web`.** The WebSocket session client reports when its retries are exhausted (`onGiveUp`, and `onConnectionLost` in `useWsSession`).
225
+
226
+ - 57f57f5: A daemon keeps several sessions live, and each client is bound to its own: one client's switch moves
227
+ only that client.
228
+
229
+ - `agent-interface-session`: `ISessionBinder`/`ISessionBinding`, the session-change refusal codes with
230
+ `isSessionChangeRefusal`, and listing rows that may say `live` and `clients`.
231
+ - `agent-framework`: `SessionPool` and `SessionChangeRefusal`.
232
+ - `agent-transport` (**major**): a new server frame, `session_change_failed`, which an exhaustive
233
+ consumer must handle. A refused `new-session` or `switch-session` now answers with it, carrying a
234
+ `code`, instead of `protocol_error`; both requests take an optional `requestId` that it echoes.
235
+ - `agent-transport-ws`: the `sessionBinder` option binds each connection to its own session and
236
+ releases the binding when the connection closes.
237
+ - `agent-cli`: `robota --serve` and the daemon keep up to four sessions live. Each WebSocket client and
238
+ attached terminal is bound to its own session; leaving a busy session is no longer refused, and only
239
+ the last driver of a session with a pending prompt is kept from leaving it. Grants and the supervised
240
+ name stay on the runtime's first session, and its reported activity covers every live session.
241
+ - `agent-ui-web`: a refused new or switch shows the host's reason as a notice (an older host's
242
+ `protocol_error` still does); the session sidebar marks live sessions and counts the other clients
243
+ on each; after a reconnect to a host that keeps sessions live, the GUI returns to the session it was on.
244
+ - `agent-ui-terminal`: an attached terminal shows why a switch was refused, and the picker's switch
245
+ stays pending until the host answers; the session picker marks live sessions and their clients.
246
+
247
+ - 9721162: The command catalog says who runs a command, and which surfaces can run it.
248
+
249
+ - **`agent-interface-command` (major).**
250
+ - Adds `TCommandRunner` (`'runtime' | 'client'`) and `TCommandSurface` (`'terminal' | 'gui'`).
251
+ - `ICommand` gains optional `runner` and `surfaces`.
252
+ - `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'`.
253
+ - **`agent-framework` (minor).**
254
+ - `ISystemCommand` gains optional `runner` and `surfaces`, and the command listing carries both.
255
+ - An undeclared runner resolves to `'runtime'`.
256
+ - `SessionTerminalHandoffGate` is exported for a terminal client that hands its own terminal to a command.
257
+ - **`agent-command` (minor).**
258
+ - `/shell`, `/editor`, `/theme` and `/keybindings` declare `runner: 'client'` and `surfaces: ['terminal']`.
259
+ - `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.
260
+ - **`agent-ui-web` (minor).** The `/` menu marks a command that runs in the terminal with a "terminal" badge.
261
+
262
+ - 227ff3a: The GUI session surface (desktop app, `robota --serve --open`) is redesigned as a calm desktop app: readable
263
+ type in a bundled Pretendard, monospace only for code and paths, surfaces separated by tone instead of
264
+ outlines, and light and dark themes that follow the system. Agent replies read as prose, your messages sit
265
+ in bubbles, tool calls are single quiet lines, and the composer carries the model, mode and effort. The
266
+ permission prompt now shows what the tool was asked to run, and the title bar names the current session.
267
+ - f8a8a4d: The GUI surface's design now applies inside a `agent-ui` scope that each of its root components opens,
268
+ so an app with design tokens of its own can embed the surface without either overriding the other. Such
269
+ an app imports `@robota-sdk/agent-ui-web/styles/surface.css` into its Tailwind entry; a page that is only
270
+ the surface keeps importing `styles/theme.css` and puts `agent-ui` on its `<html>`. `ProductMark` and
271
+ `ProductWordmark` are exported. The browser remote client (`RemoteClient`) follows the same design, with
272
+ its pairing states centred on the page.
273
+
274
+ ### Patch Changes
275
+
276
+ - 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.
277
+
278
+ - **`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.
279
+ - **`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.
280
+
281
+ - 6e6b06b: A wire client can now render the whole session the way the in-process terminal UI does: the full
282
+ history, the context window as it changes, when the history changes, and where each turn came from.
283
+
284
+ - `agent-interface-session` is **`major`**: `ISessionConversationRead` gains a required
285
+ `getFullHistory()`. Any implementation of it, or of `IInteractiveSession`, must add it.
286
+ - `agent-transport` is **`major`**:
287
+ - It adds `get-history { fromIndex? }` → `history { startIndex, total, entries }`. The history
288
+ crosses one bounded page at a time (at most 256 KiB of entries; a single larger entry is sent
289
+ alone), from `fromIndex` (default 0), so no reply grows with the session. The client asks for
290
+ the next page after the previous one arrived. Entries are `IWireHistoryEntry`: a history entry
291
+ with an ISO 8601 `timestamp`. An observer may send it.
292
+ - `complete` and `interrupted` carry the turn's result without the session's history
293
+ (`TWireExecutionResult`); a client reads the history with `get-history`.
294
+ - It adds `get-prompts`: the host sends the permission and ask prompts still open as the
295
+ `permission_request` / `ask_request` frames that asked them, for a client that attached later.
296
+ An observer may not send it.
297
+ - `pending` gains an optional `pendingCount`: a host sends it when it knows how many prompts are
298
+ queued, and a client that gets none counts the prompt it shows. The host sends `pending` in
299
+ reply to a `submit` once it has taken the prompt, so a prompt queued behind a running turn shows
300
+ as queued.
301
+ - `command` takes an optional `requestId`, which the host echoes on the command's
302
+ `command_result` or `protocol_error`.
303
+ - The session's `context_update` is pushed as the `context` frame that `get-context` answers with.
304
+ - `compact`, `skill_activation` and `memory_event` push the new `history_changed`; the client
305
+ reads the history again.
306
+ - `turn_source` is pushed as the new `turn_source` frame.
307
+ - An exhaustive map over `TClientMessage` or `TServerMessage` types must add the new variants,
308
+ and `IProtocolSession` now requires `getFullHistory()`.
309
+ - `agent-transport-http` is **`major`** only because `IHttpTransportSession` includes the conversation
310
+ read role, so a session handed to it must now provide `getFullHistory()`.
311
+ - `agent-framework`: `SessionSlot` forwards `getFullHistory()` to the current session.
312
+ - `agent-ui-web` receives the new frames and does not render them.
313
+
314
+ - Updated dependencies [724fabb]
315
+ - Updated dependencies [d877de2]
316
+ - Updated dependencies [d61e159]
317
+ - Updated dependencies [bfe8ed5]
318
+ - Updated dependencies [7b72344]
319
+ - Updated dependencies [6ae3f28]
320
+ - Updated dependencies [57f57f5]
321
+ - Updated dependencies [ba822c1]
322
+ - Updated dependencies [9721162]
323
+ - Updated dependencies [6e6b06b]
324
+ - Updated dependencies [57280bf]
325
+ - Updated dependencies [18c0d5c]
326
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.83
327
+ - @robota-sdk/agent-transport@3.0.0-beta.83
328
+ - @robota-sdk/agent-interface-session@3.0.0-beta.83
329
+ - @robota-sdk/agent-interface-command@3.0.0-beta.83
330
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.83
331
+
332
+ ## 3.0.0-beta.82
333
+
334
+ ### Patch Changes
335
+
336
+ - Updated dependencies [c7f9203]
337
+ - @robota-sdk/agent-transport@3.0.0-beta.82
338
+ - @robota-sdk/agent-interface-command@3.0.0-beta.82
339
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.82
340
+ - @robota-sdk/agent-interface-session@3.0.0-beta.82
341
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.82
342
+
343
+ ## 3.0.0-beta.81
344
+
345
+ ### Patch Changes
346
+
347
+ - Updated dependencies [3038eb7]
348
+ - Updated dependencies [18b52cc]
349
+ - @robota-sdk/agent-interface-session@3.0.0-beta.81
350
+ - @robota-sdk/agent-interface-command@3.0.0-beta.81
351
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.81
352
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.81
353
+ - @robota-sdk/agent-transport@3.0.0-beta.81
354
+
355
+ ## 3.0.0-beta.80
356
+
357
+ ### Minor Changes
358
+
359
+ - 1e3f91a: CMD-004 Phase 2 Stage E (breaking, beta line): the legacy `TCommandEffect` union and
360
+ `ICommandResult.effects` are DELETED. Commands emit the split contract directly —
361
+ `hostActions` (session-executed via `ICommandHostAdapters`; works headless and remote) and
362
+ `uiIntents` (requester-routed `ui_intent` session events with UI-neutral `show-*` names).
363
+ Final carriers for the former notification effects: `session_renamed` and the new
364
+ `history_cleared` are BROADCAST session events (forwarded to every WS surface, folded by the
365
+ TUI transcript/title and the GUI reducer's new `sessionName`/transcript-reset state);
366
+ `session-execution-started` rides `result.data.sessionExecution`; the plugin-registry refresh
367
+ rides `result.data.pluginRegistryReloaded`. A mechanical grep floor
368
+ (`command-effect-grep-floor.test.ts`) keeps `tui-requested`/`TCommandEffect`/`effects:` out of
369
+ every `packages/*/src` production tree.
370
+
371
+ ### Patch Changes
372
+
373
+ - Updated dependencies [9c19c50]
374
+ - Updated dependencies [5307f8a]
375
+ - Updated dependencies [b462ee7]
376
+ - Updated dependencies [37b4bd7]
377
+ - Updated dependencies [50d2c9f]
378
+ - Updated dependencies [a5961c9]
379
+ - Updated dependencies [af2f2ad]
380
+ - Updated dependencies [4c5148e]
381
+ - Updated dependencies [0116a29]
382
+ - Updated dependencies [e82215f]
383
+ - Updated dependencies [52b7346]
384
+ - Updated dependencies [9db63ee]
385
+ - Updated dependencies [b078afa]
386
+ - Updated dependencies [2ebff01]
387
+ - Updated dependencies [9db63ee]
388
+ - Updated dependencies [2ebff01]
389
+ - Updated dependencies [4772067]
390
+ - Updated dependencies [0f98419]
391
+ - Updated dependencies [64ba748]
392
+ - Updated dependencies [d312755]
393
+ - Updated dependencies [3244fb8]
394
+ - Updated dependencies [1e3f91a]
395
+ - Updated dependencies [4f3c075]
396
+ - Updated dependencies [7669851]
397
+ - Updated dependencies [4b76cfa]
398
+ - Updated dependencies [07b627f]
399
+ - Updated dependencies [9665c6e]
400
+ - Updated dependencies [44393be]
401
+ - Updated dependencies [c7fa299]
402
+ - Updated dependencies [5134b3b]
403
+ - Updated dependencies [5c5ff23]
404
+ - Updated dependencies [9814afc]
405
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.80
406
+ - @robota-sdk/agent-interface-command@3.0.0-beta.80
407
+ - @robota-sdk/agent-interface-session@3.0.0-beta.80
408
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.80
409
+ - @robota-sdk/agent-transport@3.0.0-beta.80