@robota-sdk/agent-subagent-runner 3.0.0-beta.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,897 @@
1
+ # @robota-sdk/agent-subagent-runner
2
+
3
+ ## 3.0.0-beta.100
4
+ ### Patch Changes
5
+
6
+ - @robota-sdk/agent-core@3.0.0-beta.100
7
+ - @robota-sdk/agent-executor@3.0.0-beta.100
8
+ - @robota-sdk/agent-framework@3.0.0-beta.100
9
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.100
10
+ - @robota-sdk/agent-process@3.0.0-beta.100
11
+
12
+ ## 3.0.0-beta.99
13
+ ### Patch Changes
14
+
15
+ - @robota-sdk/agent-core@3.0.0-beta.99
16
+ - @robota-sdk/agent-executor@3.0.0-beta.99
17
+ - @robota-sdk/agent-framework@3.0.0-beta.99
18
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.99
19
+ - @robota-sdk/agent-process@3.0.0-beta.99
20
+
21
+ ## 3.0.0-beta.98
22
+ ### Patch Changes
23
+
24
+ - @robota-sdk/agent-core@3.0.0-beta.98
25
+ - @robota-sdk/agent-executor@3.0.0-beta.98
26
+ - @robota-sdk/agent-framework@3.0.0-beta.98
27
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.98
28
+ - @robota-sdk/agent-process@3.0.0-beta.98
29
+
30
+ ## 3.0.0-beta.97
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [c207a31]
34
+ - Updated dependencies [9b4f63b]
35
+ - Updated dependencies [7911a7d]
36
+ - Updated dependencies [23a30cd]
37
+ - @robota-sdk/agent-core@3.0.0-beta.97
38
+ - @robota-sdk/agent-framework@3.0.0-beta.97
39
+ - @robota-sdk/agent-executor@3.0.0-beta.97
40
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.97
41
+ - @robota-sdk/agent-process@3.0.0-beta.97
42
+
43
+ ## 3.0.0-beta.96
44
+ ### Patch Changes
45
+
46
+ - @robota-sdk/agent-core@3.0.0-beta.96
47
+ - @robota-sdk/agent-executor@3.0.0-beta.96
48
+ - @robota-sdk/agent-framework@3.0.0-beta.96
49
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.96
50
+ - @robota-sdk/agent-process@3.0.0-beta.96
51
+
52
+ ## 3.0.0-beta.95
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies [60f3965]
56
+ - Updated dependencies [115e104]
57
+ - Updated dependencies [04719a9]
58
+ - Updated dependencies [04a6de4]
59
+ - Updated dependencies [0ba247b]
60
+ - Updated dependencies [02053ec]
61
+ - @robota-sdk/agent-framework@3.0.0-beta.95
62
+ - @robota-sdk/agent-core@3.0.0-beta.95
63
+ - @robota-sdk/agent-executor@3.0.0-beta.95
64
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.95
65
+ - @robota-sdk/agent-process@3.0.0-beta.95
66
+
67
+ ## 3.0.0-beta.94
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [e079992]
71
+ - Updated dependencies [e706b43]
72
+ - @robota-sdk/agent-framework@3.0.0-beta.94
73
+ - @robota-sdk/agent-core@3.0.0-beta.94
74
+ - @robota-sdk/agent-executor@3.0.0-beta.94
75
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.94
76
+ - @robota-sdk/agent-process@3.0.0-beta.94
77
+
78
+ ## 3.0.0-beta.93
79
+ ### Patch Changes
80
+
81
+ - Release the integrated provider credential isolation and consumer runtime and interaction composition updates.
82
+ - Updated dependencies
83
+ - @robota-sdk/agent-core@3.0.0-beta.93
84
+ - @robota-sdk/agent-executor@3.0.0-beta.93
85
+ - @robota-sdk/agent-framework@3.0.0-beta.93
86
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.93
87
+ - @robota-sdk/agent-process@3.0.0-beta.93
88
+
89
+ ## 3.0.0-beta.92
90
+ ### Patch Changes
91
+
92
+ - Updated dependencies
93
+ - @robota-sdk/agent-core@3.0.0-beta.92
94
+ - @robota-sdk/agent-framework@3.0.0-beta.92
95
+ - @robota-sdk/agent-executor@3.0.0-beta.92
96
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.92
97
+ - @robota-sdk/agent-process@3.0.0-beta.92
98
+
99
+ ## 3.0.0-beta.91
100
+ ### Patch Changes
101
+
102
+ - Updated dependencies [bad976f]
103
+ - @robota-sdk/agent-framework@3.0.0-beta.91
104
+ - @robota-sdk/agent-core@3.0.0-beta.91
105
+ - @robota-sdk/agent-executor@3.0.0-beta.91
106
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.91
107
+ - @robota-sdk/agent-process@3.0.0-beta.91
108
+
109
+ ## 3.0.0-beta.90
110
+ ### Patch Changes
111
+
112
+ - 7116367: Credentials the runtime holds for itself no longer reach the commands it runs.
113
+
114
+ - `agent-cli` — once a workspace's settings are admitted, every variable a provider profile or
115
+ definition names as its credential (`$ENV:` references, and defaults such as `OPENAI_API_KEY`)
116
+ leaves the process environment, so tools, hooks, background shells, a skill's `!` commands and
117
+ the environment an MCP header helper inherits no longer carry it, a hosted worker's broker token
118
+ included (a variable an MCP definition references explicitly still resolves); the provider keeps
119
+ authenticating from the startup snapshot. A user or managed settings layer can let
120
+ commands see one with `"commandEnvAllow": ["NAME"]`; project settings cannot. With the OS sandbox
121
+ on, confined commands can no longer read `settings.json`, `credentials/`, `mcp-credentials/` or
122
+ `remote-host-identity.json` under the user state directory. **Behavior change:** a command that
123
+ relied on inheriting a provider key now needs the opt-in, and a host embedding `startCli` finds
124
+ those variables gone from its own `process.env` afterwards — a later in-process call must pass them
125
+ in its `environment`.
126
+ - `agent-framework` — the settings schema gains `commandEnvAllow`; `checkSettingsDocument` and
127
+ `buildProviderProfilesSnapshot` take an optional environment map to resolve `$ENV:` references
128
+ against instead of the live process environment.
129
+ - `agent-command` — provider startup checks credentials against the host's environment snapshot.
130
+ - `agent-tools` — `OsSandboxClient` takes `hiddenPaths`, always hidden from confined commands and
131
+ not changeable by sandbox settings.
132
+ - `agent-subagent-runner` — a child-process subagent removes its provider credential variable from
133
+ its own environment once its provider is built, unless the start payload says the owner opted it in
134
+ (`keepProviderCredential`).
135
+ - `dag-node-instant-node` — prompt nodes accept an env resolver (`createPromptBackedNodeDefinition`'s
136
+ third argument, `rehydrateInstantNode`'s `resolveEnv`) for their `$ENV:` credential default.
137
+ - `agent-command-workflows` — `/workflows create` and `/workflows run` resolve prompt-node credentials
138
+ from the host's environment snapshot.
139
+ - Updated dependencies [7116367]
140
+ - Updated dependencies [5bb675a]
141
+ - @robota-sdk/agent-framework@3.0.0-beta.90
142
+ - @robota-sdk/agent-core@3.0.0-beta.90
143
+ - @robota-sdk/agent-executor@3.0.0-beta.90
144
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.90
145
+ - @robota-sdk/agent-process@3.0.0-beta.90
146
+
147
+ ## 3.0.0-beta.89
148
+ ### Patch Changes
149
+
150
+ - @robota-sdk/agent-framework@3.0.0-beta.89
151
+ - @robota-sdk/agent-core@3.0.0-beta.89
152
+ - @robota-sdk/agent-executor@3.0.0-beta.89
153
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.89
154
+ - @robota-sdk/agent-process@3.0.0-beta.89
155
+
156
+ ## 3.0.0-beta.88
157
+
158
+ ### Patch Changes
159
+
160
+ - @robota-sdk/agent-framework@3.0.0-beta.88
161
+ - @robota-sdk/agent-core@3.0.0-beta.88
162
+ - @robota-sdk/agent-executor@3.0.0-beta.88
163
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.88
164
+ - @robota-sdk/agent-process@3.0.0-beta.88
165
+
166
+ ## 3.0.0-beta.87
167
+
168
+ ### Patch Changes
169
+
170
+ - Release the migrated Robota product with its public SDK namespace, robota command, compatible SDK exports, internal product configuration, and verified CLI startup and delivery corrections.
171
+ - 7d9cc66: Pass the child execution root and restored sandbox to hook composition. The stock CLI explicitly refuses command and HTTP hooks for separate task workers whose hook capabilities are unavailable, instead of executing those hooks on the host.
172
+ - Updated dependencies
173
+ - Updated dependencies [66af868]
174
+ - Updated dependencies [7d9cc66]
175
+ - Updated dependencies [7d9cc66]
176
+ - Updated dependencies [7d9cc66]
177
+ - Updated dependencies [7d9cc66]
178
+ - Updated dependencies [7d9cc66]
179
+ - Updated dependencies [7d9cc66]
180
+ - Updated dependencies [7d9cc66]
181
+ - Updated dependencies [7d9cc66]
182
+ - Updated dependencies [7d9cc66]
183
+ - Updated dependencies [7d9cc66]
184
+ - Updated dependencies [7d9cc66]
185
+ - Updated dependencies [7d9cc66]
186
+ - Updated dependencies [7d9cc66]
187
+ - Updated dependencies [7d9cc66]
188
+ - Updated dependencies [7d9cc66]
189
+ - Updated dependencies [7d9cc66]
190
+ - Updated dependencies [7d9cc66]
191
+ - Updated dependencies [7d9cc66]
192
+ - Updated dependencies [7d9cc66]
193
+ - @robota-sdk/agent-core@3.0.0-beta.87
194
+ - @robota-sdk/agent-executor@3.0.0-beta.87
195
+ - @robota-sdk/agent-framework@3.0.0-beta.87
196
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.87
197
+ - @robota-sdk/agent-process@3.0.0-beta.87
198
+
199
+ ## 3.0.0-beta.86
200
+
201
+ ### Patch Changes
202
+
203
+ - @robota-sdk/agent-core@3.0.0-beta.86
204
+ - @robota-sdk/agent-executor@3.0.0-beta.86
205
+ - @robota-sdk/agent-framework@3.0.0-beta.86
206
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.86
207
+ - @robota-sdk/agent-process@3.0.0-beta.86
208
+
209
+ ## 3.0.0-beta.85
210
+
211
+ ### Patch Changes
212
+
213
+ - 2e07cad: A subagent and a fork-context skill now start in the permission mode their parent is in at that
214
+ moment. The runtime used to hand them the mode it was built with, so after a switch to `plan` a
215
+ subagent the model started, or a skill it ran in a fork, still ran in the earlier mode and could
216
+ edit. `IInProcessSubagentRunnerDeps` gains the optional `getParentPermissionMode`, which the session
217
+ wires to its live mode; the in-process and child-process runners read it at spawn and fall back to
218
+ `permissionMode` when it is absent.
219
+
220
+ In plan mode the model can no longer run `/workflows create` or `/workflows build`: both save to
221
+ the project, and `create` also runs the workflow. The user can still run them by hand.
222
+
223
+ - Updated dependencies [4e11579]
224
+ - Updated dependencies [41cca13]
225
+ - Updated dependencies [193a0bc]
226
+ - Updated dependencies [54e2848]
227
+ - Updated dependencies [3c1967f]
228
+ - Updated dependencies [ada3841]
229
+ - Updated dependencies [5093a30]
230
+ - Updated dependencies [5684612]
231
+ - Updated dependencies [6ee8725]
232
+ - Updated dependencies [6072e9a]
233
+ - Updated dependencies [94b2c87]
234
+ - Updated dependencies [3ab2eca]
235
+ - Updated dependencies [2e07cad]
236
+ - @robota-sdk/agent-framework@3.0.0-beta.85
237
+ - @robota-sdk/agent-core@3.0.0-beta.85
238
+ - @robota-sdk/agent-executor@3.0.0-beta.85
239
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.85
240
+ - @robota-sdk/agent-process@3.0.0-beta.85
241
+
242
+ ## 3.0.0-beta.84
243
+
244
+ ### Patch Changes
245
+
246
+ - 9c6a8db: A background agent's tool call that needs approval now reaches a person instead of being refused
247
+ automatically. The child process asks the parent session's own approver, identified as a background
248
+ agent naming its task, and parks the call until an answer arrives; cancelling the task dismisses any
249
+ still-parked ask immediately rather than leaving it outstanding. A parent with no approver attached
250
+ (print mode, a truly headless run) still fails every such call closed, the same default as before.
251
+
252
+ An agent task's result and its background-task-workspace entry now report how many of its tool calls
253
+ were refused and why (denied by a person, no approver attached, the approver itself failed, or the
254
+ task ended before an attached approver answered) — present only when at least one call was refused, so
255
+ a task that finished as it always did carries no new field.
256
+
257
+ A workspace entry for a `/loop`-managed iteration now carries a stable `loopId`, so a surface can stop
258
+ the loop itself rather than only cancelling its disposable wake timer, and a snapshot can include a
259
+ self-paced loop summary for an iteration that has no background-task entry of its own yet.
260
+
261
+ - Updated dependencies [9f46375]
262
+ - Updated dependencies [e8d70ac]
263
+ - Updated dependencies [9c6a8db]
264
+ - Updated dependencies [9c6a8db]
265
+ - @robota-sdk/agent-core@3.0.0-beta.84
266
+ - @robota-sdk/agent-framework@3.0.0-beta.84
267
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.84
268
+ - @robota-sdk/agent-executor@3.0.0-beta.84
269
+ - @robota-sdk/agent-process@3.0.0-beta.84
270
+
271
+ ## 3.0.0-beta.83
272
+
273
+ ### Minor Changes
274
+
275
+ - e8779c9: A subagent consults the sandbox its shell tools run under, as its parent does. With
276
+ `autoAllowBashIfSandboxed` on, a confined command the subagent's gate leaves to the mode now runs
277
+ without a prompt. Before, a `context: fork` skill asked for approval, and a print run refused it.
278
+ An Agent-tool subagent in `auto` mode sent a command allowed by a broad rule like `Bash(npm *)` to
279
+ its classifier instead. A background policy's ceiling is still checked first: nothing outside it
280
+ runs.
281
+
282
+ - `agent-framework` (minor): `createSubagentSession` takes a `commandSandbox` option. The fork and the
283
+ in-process runner derive it from the parent's sandbox, the instance their inherited tools run
284
+ under. `sandboxApprovalFor` is exported.
285
+ - `agent-subagent-runner` (minor): `ISubagentWorkerComposition` takes an optional `createSandbox`. The
286
+ worker builds that sandbox once and hands the same instance to `createTools` and to the session.
287
+ - `agent-cli` (patch): Robota's worker composition builds the OS sandbox through `createSandbox`, so
288
+ a child-process subagent approves what its parent approves.
289
+
290
+ - 122e82b: A child-process subagent confines and approves commands with its parent's sandbox settings as they
291
+ stand when it starts. Before, it read its root's settings files, so a `/sandbox` change made in the
292
+ session did not reach it. `/sandbox` changes the live sandbox and only the user settings file, which
293
+ project settings outrank. A worktree child also missed the parent's untracked local settings.
294
+
295
+ - `agent-subagent-runner` (minor): the runner factory takes `parentSandboxSettings`, read at each
296
+ spawn. The start payload carries it, the IPC guard checks it is a record, and the worker hands it to
297
+ `createSandbox` as `parentSettings`.
298
+ - `agent-cli` (patch): Robota sends its live sandbox's settings, and a child builds its sandbox from
299
+ them. It refuses settings it cannot read rather than falling back to the files.
300
+
301
+ - 0368058: A running child-process subagent follows a `/sandbox` change made in its parent session. Before, it
302
+ kept the settings it started with until it ended, so a long-running `auto`-mode subagent went on
303
+ auto-approving confined commands after the user turned auto-allow off.
304
+
305
+ - `agent-tools` (minor): `OsSandboxClient.watchSettings(watcher)` reports each `configure`, until
306
+ its returned function is called.
307
+ - `agent-subagent-runner` (minor): the runner factory takes `watchParentSandboxSettings`, and
308
+ forwards each change to every running child as a `sandbox_settings` message. It watches before
309
+ reading the start payload, so no change is lost while a child starts, and stops when the child
310
+ exits or fails to start. A composed sandbox may define `applyParentSettings`. The worker applies
311
+ each change through it. On settings it cannot take, it aborts the run, lets a running command
312
+ finish, and ends the run with that error.
313
+ - `agent-cli` (patch): Robota watches its live sandbox, and a child applies each change to the
314
+ instance its tools and approval read.
315
+
316
+ ### Patch Changes
317
+
318
+ - 57280bf: Every published package now declares `"engines": { "node": ">=22.12.0" }`. Before, 27 of the 38
319
+ packages declared no floor (`agent-core`, `agent-tools` and every provider among them),
320
+ `agent-session` and `agent-file-authority` declared `>=20.19.0`, and the other nine declared
321
+ `>=22.0.0`, so a consumer on Node 20 saw at most a warning from a transitive dependency.
322
+
323
+ Why 22.12: `agent-cli` and `agent-ui-terminal` need Node 22 through `ink` 7, and the CommonJS entries
324
+ of `agent-tools` and its dependents, `agent-transport`/`node` and its dependents, and
325
+ `agent-ui-terminal` `require()` ESM-only dependencies (`p-limit`, `jose`, `chalk`), which Node 22
326
+ supports unflagged only from 22.12. `engines` is advisory unless the consumer enables `engine-strict`.
327
+
328
+ No code changes: `tsdown` now reads `node22.12.0` as its build target from the field.
329
+
330
+ - 18c0d5c: Every published package now exports `./package.json`, so `require('<package>/package.json')` and
331
+ `import('<package>/package.json', { with: { type: 'json' } })` work instead of failing with
332
+ `ERR_PACKAGE_PATH_NOT_EXPORTED`, and each tarball now ships the package's `CHANGELOG.md`.
333
+ - Updated dependencies [3c81769]
334
+ - Updated dependencies [724fabb]
335
+ - Updated dependencies [997f2fb]
336
+ - Updated dependencies [bfe8ed5]
337
+ - Updated dependencies [e689c8e]
338
+ - Updated dependencies [4241fc5]
339
+ - Updated dependencies [4f49d14]
340
+ - Updated dependencies [7b72344]
341
+ - Updated dependencies [6ae3f28]
342
+ - Updated dependencies [9721162]
343
+ - Updated dependencies [be0e53c]
344
+ - Updated dependencies [57f57f5]
345
+ - Updated dependencies [ba822c1]
346
+ - Updated dependencies [9721162]
347
+ - Updated dependencies [6e6b06b]
348
+ - Updated dependencies [7d77ce4]
349
+ - Updated dependencies [8bd5fac]
350
+ - Updated dependencies [57280bf]
351
+ - Updated dependencies [5033dd9]
352
+ - Updated dependencies [18c0d5c]
353
+ - Updated dependencies [dbd888d]
354
+ - Updated dependencies [1887e54]
355
+ - Updated dependencies [caaab20]
356
+ - Updated dependencies [f01868f]
357
+ - Updated dependencies [e8779c9]
358
+ - Updated dependencies [5a0ee96]
359
+ - @robota-sdk/agent-framework@3.0.0-beta.83
360
+ - @robota-sdk/agent-core@3.0.0-beta.83
361
+ - @robota-sdk/agent-executor@3.0.0-beta.83
362
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.83
363
+ - @robota-sdk/agent-process@3.0.0-beta.83
364
+
365
+ ## 3.0.0-beta.82
366
+
367
+ ### Patch Changes
368
+
369
+ - Updated dependencies [c7f9203]
370
+ - @robota-sdk/agent-core@3.0.0-beta.82
371
+ - @robota-sdk/agent-framework@3.0.0-beta.82
372
+ - @robota-sdk/agent-executor@3.0.0-beta.82
373
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.82
374
+ - @robota-sdk/agent-process@3.0.0-beta.82
375
+
376
+ ## 3.0.0-beta.81
377
+
378
+ ### Patch Changes
379
+
380
+ - Updated dependencies [3038eb7]
381
+ - Updated dependencies [02b7452]
382
+ - Updated dependencies [ec5e477]
383
+ - Updated dependencies [007fd90]
384
+ - Updated dependencies [18b52cc]
385
+ - Updated dependencies [9843fe6]
386
+ - @robota-sdk/agent-core@3.0.0-beta.81
387
+ - @robota-sdk/agent-framework@3.0.0-beta.81
388
+ - @robota-sdk/agent-executor@3.0.0-beta.81
389
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.81
390
+ - @robota-sdk/agent-process@3.0.0-beta.81
391
+
392
+ ## 3.0.0-beta.80
393
+
394
+ ### Major Changes
395
+
396
+ - 807d161: **BREAKING — ARCH-010: the execution root is a required contract field, and the containment guard now fails closed.**
397
+
398
+ The file-tool containment guard was fail-open: with no root configured it answered "allowed". A tool
399
+ built with no `cwd` therefore had no boundary — measured, a `Read` constructed that way returned the
400
+ contents of `/etc/hostname` — and the child-process subagent worker called `createDefaultTools()` with
401
+ no argument at all, so subagents got exactly that. Three independent auditors found three different
402
+ symptoms of this one missing field.
403
+
404
+ **Removed — seven context-free tool singletons.** `readTool`, `writeTool`, `editTool`, `globTool`,
405
+ `grepTool`, `shellTool`, `bashTool` are gone from `@robota-sdk/agent-tools`. A module-level instance is
406
+ bound at import time and can carry no containment root, so after the guard was inverted they could only
407
+ refuse everything.
408
+
409
+ Migrate to the factory of the same name, passing the directory the tool is allowed to work in:
410
+
411
+ ```ts
412
+ // before
413
+ import { readTool, globTool } from '@robota-sdk/agent-tools';
414
+ const tools = [readTool, globTool];
415
+
416
+ // after
417
+ import { createReadTool, createGlobTool } from '@robota-sdk/agent-tools';
418
+ const cwd = process.cwd(); // or the workspace this agent is scoped to
419
+ const tools = [createReadTool({ cwd }), createGlobTool({ cwd })];
420
+ ```
421
+
422
+ `webFetchTool`, `webSearchTool` and `askUserQuestionTool` are unchanged — they touch no filesystem, so
423
+ there is no root to contain them by.
424
+
425
+ **`cwd` is now REQUIRED** on `ISandboxToolOptions`, `IContainedBuiltinToolOptions` (and everything
426
+ extending them), `ICreateDefaultToolsOptions`, `ISessionOptions` and `ISubagentOptions`. The `= {}`
427
+ default parameter was removed from every builtin factory — that default was the mechanism by which
428
+ "forgot the root" was legal. `new Session({...})` without `cwd` no longer compiles, and also throws at
429
+ construction, because a required field is only required to a TypeScript caller.
430
+
431
+ **`Session` no longer reads `process.cwd()`.** It uses the root it was given, and `getCwd()` exposes it
432
+ so a fork or subagent asks the session instead of re-deriving a root that can disagree with it.
433
+
434
+ **Behavioural change even for callers that already passed a root**: a tool that somehow reaches the
435
+ guard with no root now REFUSES with an explicit error ("no containment root is configured … this is an
436
+ assembly bug, not a path problem") instead of allowing the access.
437
+
438
+ - 0c07176: **BREAKING — ARCH-021: child-process subagents compose the PRODUCT's surface, not imported defaults.**
439
+
440
+ The child-process worker built its surface from `createDefaultProviderDefinitions()` and `createDefaultTools()` — a fixed six-vendor registry and the framework's default tool tier — while the composition root had already handed the runner the fully composed surface and the runner dropped it. So a product's custom providers and pack-contributed tools reached an **in-process** subagent and not a **child-process** one, and ARCH-006's landed invariant "every tool Robota runs comes from a pack" was **false in the child**: dropping a pack did not drop its tools.
441
+
442
+ This is the second finding at that line. ARCH-010 — judged BLOCKER, a subagent `Read` returning `/etc/hostname` — patched one argument there and left the reconstruction standing.
443
+
444
+ ```ts
445
+ // the port: what the product composes, stated by the composition root
446
+ export interface ISubagentWorkerComposition {
447
+ createTools(context: { readonly cwd: string }): IToolWithEventService[];
448
+ readonly providerDefinitions: readonly IProviderDefinition[];
449
+ }
450
+
451
+ export function runSubagentWorkerMain(composition: ISubagentWorkerComposition): void;
452
+ ```
453
+
454
+ **Why a recipe and not a broker.** A composition cannot be projected across a process boundary because it is _code_: `createProvider` is a function and a tool carries `execute`. The two sound answers are to proxy the instances or to stop expressing the contract as instances. Proxying loses on containment — a proxied tool executes in the **parent**, bound to the parent's checkout, while a worktree-isolated child's execution root is a different directory — and a prior-art sweep found **no specification that defines a per-call working root for a proxied tool invocation** (MCP roots are session-scoped and pull-based). So the recipe crosses and the child builds an equivalent surface at its own root, which is what every comparable product does.
455
+
456
+ **Per package, classified against each barrel:**
457
+
458
+ - **`agent-subagent-runner` (major)** — `runSubagentWorkerMain` gains a **required** parameter; `ISubagentWorkerComposition` is added to the barrel; `ISubagentWorkerReadyMessage` gains `composedToolNames?`; and the `@robota-sdk/agent-provider-defaults` **dependency edge is removed**.
459
+ - **`agent-cli` (patch)** — composition-root wiring plus one new internal `product/` module; no barrel change.
460
+
461
+ **The structural guarantee reaches one axis, and the document says so.** Deleting the manifest edge makes the **provider** axis a compile error, because that package solely owns `createDefaultProviderDefinitions`. The **tool** axis cannot be cut the same way: `createDefaultTools` is barrel-exported by `agent-framework`, which this package must keep for `createSubagentSession`. That axis is held by a new `harness:scan` check instead — and it is the axis with the failure history, so claiming compile-time enforcement across both would have been an overclaim exactly where it matters. The cause (no defaults-aggregator leaf for the tool surface) is tracked as ARCH-035.
462
+
463
+ **Fail closed on what a recipe cannot reproduce.** A recipe carries anything that is a pure function of (execution root, serialized payload, ambient durable state) — not a live, unrepeatable handle. Today that is `sandboxClient`, and it is reachable with public code (`E2BSandboxClient` and `InMemorySandboxClient` are both on `agent-tools`' barrel). The composition root now **refuses** to select the child-process runner in that case, naming the capability, rather than yielding a sandboxed parent with a host-tool child. Projection is tracked as ARCH-033.
464
+
465
+ **Verified per run, not by construction.** The child declares its composed tool names in `ready`, so the built binary can be asked what it actually composed. Measured on the real artifact: `["Shell","Bash","Read","Write","Edit","Glob","Grep","WebFetch","WebSearch","AskUserQuestion"]` — `pack-coding`'s surface, from the product's own packs.
466
+
467
+ **Also filed rather than folded in:** ARCH-034 (in-process and child-process subagents get different tool surfaces), ARCH-036 (`deps.builtInAgents` is dropped by the child-process path), SEC-009 (`apiKey` rides in the IPC start payload; comparable products use the child's environment).
468
+
469
+ - 4772067: **BREAKING — ARCH-031: the subagent seam is derived from its transport SSOT instead of copied.**
470
+
471
+ One field family — what a subagent job IS — was declared three times as independent shapes and carried
472
+ between them by six hand-written object literals that nothing checked for totality. A field added to
473
+ either side had to be hand-copied at every hop, and a miss compiled clean as a silent no-op. TYPE-003
474
+ named this cause and derived one hop; the next two changes each dropped a field at a hop it had skipped
475
+ (CORE-025's permission policy, and ANALYTICS-001's `usage`, dropped in the very commit that added it).
476
+
477
+ ```ts
478
+ // now, in @robota-sdk/agent-interface-transport
479
+ export type ISubagentSpawnRequest = Omit<IAgentBackgroundTaskRequest, 'kind'>;
480
+ export type ISubagentJobResult = Omit<IBackgroundTaskResult, 'kind' | 'exitCode' | 'signalCode'>;
481
+ ```
482
+
483
+ All four projections collapse to spreads. `parentTaskId` and `providerProfile` now reach the runner
484
+ because they exist on the source, not because someone remembered them.
485
+
486
+ **Per package, classified against each barrel:**
487
+
488
+ - **`agent-executor` (major)** — the barrel loses `ISubagentSpawnRequest` and `ISubagentJobResult` (they
489
+ moved to their owner; re-publishing them here would be a pass-through re-export). `ISubagentJobStart`
490
+ and `ISubagentJobHandle` rename `jobId` → `taskId`, `ISubagentJobStart` gains `worktree?`, and
491
+ `ISubagentWorktreePrepareRequest` renames `jobId` → `taskId`.
492
+ - **`agent-framework` (major)** — the barrel loses eleven type-only re-exports of `agent-executor`-owned
493
+ types. They carried zero runtime values, so they bought none of the assembly convenience a runtime
494
+ facade exists for, while making one field family look like it had three owners. Separately,
495
+ `ISpawnAgentTaskRequest.permissionPolicy` goes optional → **required**.
496
+ - **`agent-subagent-runner` (major)** — `ISubagentWorkerStartPayload` renames `jobId` → `taskId` and gains
497
+ `worktree?`. This package is not in the item's declared `area:`; the audit that caught it is the reason
498
+ it is here.
499
+ - **`agent-interface-transport` (minor)** — two new barrel exports; nothing removed or renamed.
500
+ - **`agent-core` (minor)** — **two** new barrel exports. `DEFAULT_BACKGROUND_PERMISSION_POLICY` is the
501
+ intended one; collapsing the hand-listed permissions block to `export *` also surfaced
502
+ `clearRegisteredToolArgumentKeys`, which the old list had omitted. It is documented as public rather
503
+ than re-narrowed — a barrel that cannot fall out of step with its owner is the point of the collapse.
504
+ Nothing was removed: all nine previously-listed permission types remain on the barrel.
505
+ - **`agent-cli` (patch)** — migrated as the only in-repo implementer of `ISubagentWorktreeAdapter`; no
506
+ barrel change.
507
+
508
+ **`permissionPolicy` is now required at the spawn boundary**, and its default is one exported constant
509
+ owned by the permission SSOT. It was previously applied as `?? 'inherit-allowlist'` in the middle of a
510
+ projection, in **two** packages independently, with nothing keeping them equal — a security-relevant value
511
+ whose default was declared twice. Every spawn site now states its own policy.
512
+
513
+ **The worktree identity moved to the runner envelope.** It is runner-produced — the worktree does not
514
+ exist when a caller builds a request — so it rides on `ISubagentJobStart.worktree` and crosses the IPC
515
+ boundary there. The runner no longer also rewrites `request.cwd`, which had given ARCH-010's execution-root
516
+ rule two carriers that could disagree. `branchName` **relocated rather than being deleted**: it has no
517
+ reader in this repository today, and for a library that is not a reason to drop a legitimate contract.
518
+
519
+ **Renames are consistent across the SPI** (`type` → `agentType`, `jobId` → `taskId`) rather than applied to
520
+ one shape, which would have left two names for one identifier in a single file. The IPC validator's
521
+ string-literal keys are now typed against the contract, so the next rename is a compile error instead of a
522
+ runtime rejection of every start payload.
523
+
524
+ - 6fab98f: **BREAKING — DIST-006: the built `robota` binary could not spawn a subagent at all.**
525
+
526
+ `/agent run` failed on every distributed build with `Subagent worker exited before result: exit code 1`. The child's real stderr was `Cannot find module '…/agent-cli/dist/node/child-process-subagent-worker.js'`. `getDefaultSubagentWorkerPath()` resolved the worker relative to its own `import.meta.url`; INFRA-028 bundles every workspace package into `agent-cli/dist/node/bin.js`, so at runtime that directory is **agent-cli's** dist, where the worker was never emitted. It worked from source, which is why nothing caught it.
527
+
528
+ **Second occurrence of one cause.** `agent-subagent-runner/tsdown.config.ts` already carried a comment naming this exact failure: _"Without this entry the file never existed, so the child-process subagent silently failed from any dist build."_ That fix put the worker next to its OWN package's bundle; bundling then moved the resolver's notion of "next to me" one package along.
529
+
530
+ **The defect was the function, not the missing file.** `getDefaultSubagentWorkerPath()` answered _"where is my worker file on disk?"_ from a library that cannot know — the answer is a property of the packaging step. Emitting the file where the resolver looks would have fixed **one of three shipped artifacts**: the npm bundle, but not the Bun single-file binaries published on every tag, nor the Electron desktop sidecar that embeds them. A compiled single-file executable has no sibling directory to emit into.
531
+
532
+ ```ts
533
+ // removed — a question no library can answer
534
+ export function getDefaultSubagentWorkerPath(): string;
535
+
536
+ // now: the composition root states how to start a copy of ITSELF
537
+ export interface ISubagentWorkerEntry {
538
+ readonly execPath: string;
539
+ readonly args: readonly string[];
540
+ readonly execArgv?: readonly string[];
541
+ }
542
+ ```
543
+
544
+ `IChildProcessSubagentRunnerOptions.workerPath` → **`workerEntry`**, and the runner `spawn`s `execPath args… --__agent-subagent-worker` instead of forking a module path. `robota`'s own entry enters worker mode through the new `runSubagentWorkerMain()`, so **there is no second artifact and no path to get wrong**. The one seam satisfies all three shapes: a bundled Node build names the file it is executing, a `tsx` source run names the same and adds `--import tsx`, and a compiled binary names _nothing_ — `process.execPath` is the binary, and re-executing it re-enters its embedded entry.
545
+
546
+ **Per package, classified against each barrel:**
547
+
548
+ - **`agent-subagent-runner` (major)** — the barrel loses `getDefaultSubagentWorkerPath` (deleted, not renamed) and gains `SUBAGENT_WORKER_MODE_FLAG`, `isSubagentWorkerModeArgv`, `runSubagentWorkerMain`, `ISubagentWorkerEntry`. `IChildProcessSubagentRunnerOptions` renames `workerPath` → `workerEntry` and drops `execArgv` — it now has exactly one owner, on the entry descriptor. The separate `child-process-subagent-worker` bundle entry is gone.
549
+ - **`agent-cli` (patch)** — composition-root wiring only; no barrel change.
550
+
551
+ **Two things this also repairs, both found in review:**
552
+
553
+ - **The child's stderr was discarded** (`stdio: [..., 'ignore', 'ipc']`), so a worker that died before its first IPC message reported only an exit code. That is why occurrence #2 had to be diagnosed by hand. It is now captured, bounded, and appended to the error, making the next occurrence self-reporting.
554
+ - **A source run executed the BUILT worker, not the source worker**, because package `exports` resolve to `dist`. `resolveExecArgv`'s `--import tsx` branch was therefore dead code. Self-fork names the entry actually running, so source runs finally run source.
555
+
556
+ **Verified against the artifacts, not from source:** the built `dist/node/bin.js` and a real `bun --compile` single-file binary each complete the worker IPC handshake (`{type:'ready'}`), each refuse a hand-typed flag with no IPC channel (exit 2, "Silence is not success" — measured on both), and the shipped bundle no longer contains the string `child-process-subagent-worker.js` — there is nothing left to look for.
557
+
558
+ ### Minor Changes
559
+
560
+ - 9c19c50: `/fork [name] [--same-dir]` copies the live conversation into a background session.
561
+
562
+ The session writes a copy of its own record under a fresh id — messages, system prompt, tool schemas
563
+ and full history, and deliberately not the sandbox snapshot, goal, plan or branch — then spawns a
564
+ background job carrying only `resumeSessionId`. The child restores that record itself, so no
565
+ conversation crosses the child-process boundary and the worker start payload's key set is unchanged.
566
+ The background panel gains an `attach` control that switches the terminal onto the forked session; it
567
+ is a view switch, never a merge, and a missing record or a terminal task is refused with the task's
568
+ own status.
569
+
570
+ **`@robota-sdk/agent-framework` is `major` for one reason: `ICommandHostSessionAccess` gains a
571
+ required member.** `forkSession({ name? })` is not optional, so an external implementation of that
572
+ role port stops compiling until it adds the method. Every other change in this set is additive:
573
+
574
+ - `agent-interface-execution` — `TExecutionControl` gains `'attach'`.
575
+ - `agent-interface-command` — `TCommandUiIntent` gains `{ type: 'switch-session'; sessionId }`.
576
+ - `agent-subagent-runner` — `ISubagentWorkerComposition` gains the optional `openSessionStore`, and
577
+ the worker resumes a record when the job names one. A composition that registers no store and
578
+ receives no `resumeSessionId` behaves exactly as before.
579
+ - `agent-framework` also gains the fork-record builder, `SessionTurnMemory`, and
580
+ `IAgentBackgroundTaskRequest.resumeSessionId?`; `loadSessionRecord` now returns
581
+ `restoredSystemPrompt`, which makes a record field that was written and never read take effect on
582
+ restore.
583
+ - `agent-executor`, `agent-command`, `agent-transport-tui`, `agent-cli` — the spawn input, the
584
+ `/fork` module and the attach control that carry it to the surface.
585
+
586
+ - 1698be4: A child-process subagent can no longer send the parent's provider credential to a different
587
+ endpoint.
588
+
589
+ - **Before spawning a child**, the parent compares every environment variable that decides where
590
+ the provider connects or which credential it sends. If the child's environment differs, the job
591
+ is refused before the credential leaves the parent. The error names the variable, never its
592
+ value. The variables compared are:
593
+ - the proxy and TLS variables;
594
+ - the variables the provider's SDK reads, such as `OPENAI_BASE_URL`, `ANTHROPIC_AUTH_TOKEN` and
595
+ the Vertex settings;
596
+ - the credential's own variable.
597
+ - **The child** repeats the check before it builds its provider. It builds that provider from the
598
+ parent's effective connection exactly: it no longer fills in a base URL, options or a default
599
+ credential from its own registry, and a credential reference that resolves to nothing is refused.
600
+ - **Where the effective connection comes from:** the parent applies its own definition defaults
601
+ (base URL, options). `profileName` is sent only when it names the connection actually sent.
602
+ - **New contracts:**
603
+ - `IProviderDefinition.destinationEnvironment`, declared by every built-in provider.
604
+ - `createProviderFromExactProfile`, `connectionEnvironmentNames`,
605
+ `findConnectionEnvironmentDivergence`, `sealConnectionEnvironment`,
606
+ `verifyConnectionEnvironment` and `TRANSPORT_ENVIRONMENT`.
607
+ - The start payload's `connectionCheck`.
608
+ - The child-process runner's `providerDefinitions` option, now required: a provider with no
609
+ definition there is refused, because its connection cannot be checked.
610
+
611
+ - 7937c19: Split the `@robota-sdk/agent-provider` monolith into SDK-aligned leaf packages (ARCH-PROVIDER-002 Stage A). The single package that hard-bundled all three vendor SDKs (`@anthropic-ai/sdk`, `openai`, `@google/genai`) is **removed** and replaced by per-vendor leaves, each depending only on `@robota-sdk/agent-core` + its one SDK: `@robota-sdk/agent-provider-anthropic`, `@robota-sdk/agent-provider-openai`, `@robota-sdk/agent-provider-openai-compatible` (DeepSeek/Qwen/Gemma over the shared OpenAI-compatible base), `@robota-sdk/agent-provider-gemini` (+ a `./google` entry), and `@robota-sdk/agent-provider-bytedance` (media/video `IVideoGenerationProvider`). The aggregated `createDefaultProviderDefinitions()` now lives in the new `@robota-sdk/agent-builtin-providers` leaf.
612
+
613
+ Migration: replace `@robota-sdk/agent-provider/<vendor>` imports with the corresponding `@robota-sdk/agent-provider-<vendor>` package (`/deepseek`, `/qwen`, `/gemma` → `@robota-sdk/agent-provider-openai-compatible`; `/google` → `@robota-sdk/agent-provider-gemini/google`), and import `createDefaultProviderDefinitions` from `@robota-sdk/agent-builtin-providers`. Consumers now pull only the vendor SDK(s) they actually use.
614
+
615
+ - c6c56a6: Move the concrete `GitWorktreeIsolationAdapter` (git CLI + filesystem I/O) out of the reusable
616
+ `@robota-sdk/agent-executor` runtime-primitives package into the `@robota-sdk/agent-cli` composition
617
+ root, restoring the executor's "creates no Git worktrees" boundary (ARL-02 / ARCH-FIX-024, INFRA-031).
618
+
619
+ **Breaking (`@robota-sdk/agent-subagent-runner`):** `worktreeAdapter` is now a **required** option on
620
+ `createChildProcessSubagentRunnerFactory` / `IChildProcessSubagentRunnerOptions`. The concrete git
621
+ default (`createGitWorktreeIsolationAdapter()`) has been removed — inject the adapter at the composition
622
+ root. `@robota-sdk/agent-executor` no longer exports `GitWorktreeIsolationAdapter`,
623
+ `createGitWorktreeIsolationAdapter`, or `IGitWorktreeIsolationAdapterOptions` (the
624
+ `ISubagentWorktreeAdapter` port and `WorktreeSubagentRunner` remain). CLI runtime behavior is unchanged.
625
+
626
+ ### Patch Changes
627
+
628
+ - f336838: One permission evaluation order for every caller. The interactive session, background tasks and
629
+ subagents used to run two different resolvers, so the same call could be decided differently
630
+ depending on who made it. They now share `evaluatePermission`, and a background policy only adds a
631
+ ceiling, an ask-everything flag and the task's own lists to it:
632
+
633
+ deny → caller ceiling → unevaluable deny (ask) → never-auto-approve set (ask) → ask-everything →
634
+ bypassPermissions → allow → mode.
635
+
636
+ - **`ask` rules.** `permissions.ask` patterns always ask, in every mode including
637
+ `bypassPermissions`. They are matched per command like a deny rule, and are validated at
638
+ construction alongside `allow` and `deny`.
639
+ - **Never auto-approved, bypass included:** removing a critical path with `rm`/`rmdir` (the root, a
640
+ top-level directory, home, the working directory or a parent), and a modify-class write into
641
+ `.git`, `.Robota`, `.claude`, `.agents`, `.mcp.json`, `.gitconfig`, `.npmrc` or a shell rc file.
642
+ Files inside an isolated worktree (`$PRODUCT_PROJECT_STATE_DIR/worktrees/<name>/…`) are ordinary files. With no
643
+ approver attached, an ask is a denial.
644
+ - **A ceiling is checked before bypass and before any ask.** A subagent's `inherit-allowlist` ceiling
645
+ is now the parent's _effective_ rules, read live at spawn: settings, preset lists and command
646
+ auto-allows. It used to be the raw settings file. An unevaluable deny under a policy now asks,
647
+ like everywhere else, where it used to deny outright; with no approver it is still a denial.
648
+ - **Settings layers union `permissions.allow`**, as they already did `deny`. A checked-in project
649
+ file no longer silently discards the user's allow list.
650
+ - **Print mode, `createQuery()` and headless sessions default to `default` mode**, not
651
+ `bypassPermissions`. They have no approver, so a call that would ask is denied. Pass
652
+ `--permission-mode` / `permissionMode: 'bypassPermissions'` explicitly for unattended runs.
653
+
654
+ **Breaking:**
655
+ - `@robota-sdk/agent-core` removes `resolvePermissionByPolicy` and `TPermissionPolicyDecision` in
656
+ favour of `projectPermissionPolicy` plus `evaluatePermission`'s new `context` argument.
657
+ - `@robota-sdk/agent-framework` changes the settings merge rule for `permissions.allow`, and the
658
+ default permission mode of `createQuery()` and headless sessions.
659
+
660
+ - 4f3c075: Assemble complete, verified package generations before switching build output; preserve the previous generation on build failure and pack only verified regular-file images. Include copied CLI web assets in affected-build ordering and artifact transfer. Preserve the CLI version in managed build paths. Public runtime contracts remain compatible (patch).
661
+ - Updated dependencies [9c19c50]
662
+ - Updated dependencies [7b6234c]
663
+ - Updated dependencies [5307f8a]
664
+ - Updated dependencies [b462ee7]
665
+ - Updated dependencies [08a9bd6]
666
+ - Updated dependencies [818f0c8]
667
+ - Updated dependencies [4eea54b]
668
+ - Updated dependencies [30e5e50]
669
+ - Updated dependencies [bb4696a]
670
+ - Updated dependencies [1698be4]
671
+ - Updated dependencies [9368d00]
672
+ - Updated dependencies [d4189b9]
673
+ - Updated dependencies [9edae52]
674
+ - Updated dependencies [4078a72]
675
+ - Updated dependencies [4c73a0b]
676
+ - Updated dependencies [af2f2ad]
677
+ - Updated dependencies [267af5f]
678
+ - Updated dependencies [196a900]
679
+ - Updated dependencies [f336838]
680
+ - Updated dependencies [34e50f0]
681
+ - Updated dependencies [722e88a]
682
+ - Updated dependencies [a5cc36e]
683
+ - Updated dependencies [d23c848]
684
+ - Updated dependencies [b70fa3d]
685
+ - Updated dependencies [2711ec6]
686
+ - Updated dependencies [4dd45cc]
687
+ - Updated dependencies [4c5148e]
688
+ - Updated dependencies [37af5dc]
689
+ - Updated dependencies [807d161]
690
+ - Updated dependencies [fec722f]
691
+ - Updated dependencies [e82215f]
692
+ - Updated dependencies [52b7346]
693
+ - Updated dependencies [2ebff01]
694
+ - Updated dependencies [2ebff01]
695
+ - Updated dependencies [2d3b2c0]
696
+ - Updated dependencies [b078afa]
697
+ - Updated dependencies [2d3b2c0]
698
+ - Updated dependencies [baa6863]
699
+ - Updated dependencies [2d3b2c0]
700
+ - Updated dependencies [3a8876b]
701
+ - Updated dependencies [4772067]
702
+ - Updated dependencies [7b85767]
703
+ - Updated dependencies [0f98419]
704
+ - Updated dependencies [64ba748]
705
+ - Updated dependencies [9fbab1b]
706
+ - Updated dependencies [d312755]
707
+ - Updated dependencies [a009f5b]
708
+ - Updated dependencies [1e3f91a]
709
+ - Updated dependencies [4f3c075]
710
+ - Updated dependencies [475e085]
711
+ - Updated dependencies [e477440]
712
+ - Updated dependencies [9dcb5da]
713
+ - Updated dependencies [a95ca85]
714
+ - Updated dependencies [b6d14ce]
715
+ - Updated dependencies [0382a51]
716
+ - Updated dependencies [93d061d]
717
+ - Updated dependencies [39554a1]
718
+ - Updated dependencies [d28430a]
719
+ - Updated dependencies [bed26ea]
720
+ - Updated dependencies [fe48835]
721
+ - Updated dependencies [1e40b5b]
722
+ - Updated dependencies [c6c56a6]
723
+ - Updated dependencies [4b76cfa]
724
+ - Updated dependencies [d9bd9ec]
725
+ - Updated dependencies [8865acf]
726
+ - Updated dependencies [90e7a10]
727
+ - Updated dependencies [fcb0da3]
728
+ - Updated dependencies [07b627f]
729
+ - Updated dependencies [d0de5b2]
730
+ - Updated dependencies [9665c6e]
731
+ - Updated dependencies [44393be]
732
+ - Updated dependencies [c7fa299]
733
+ - Updated dependencies [5134b3b]
734
+ - Updated dependencies [dd444c1]
735
+ - Updated dependencies [1f57e7f]
736
+ - Updated dependencies [833afe1]
737
+ - Updated dependencies [d6b9404]
738
+ - Updated dependencies [7863b16]
739
+ - Updated dependencies [fde558e]
740
+ - Updated dependencies [db5c439]
741
+ - Updated dependencies [4a01a87]
742
+ - Updated dependencies [cbee54e]
743
+ - Updated dependencies [9814afc]
744
+ - Updated dependencies [242a644]
745
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.80
746
+ - @robota-sdk/agent-framework@3.0.0-beta.80
747
+ - @robota-sdk/agent-executor@3.0.0-beta.80
748
+ - @robota-sdk/agent-core@3.0.0-beta.80
749
+ - @robota-sdk/agent-process@3.0.0-beta.80
750
+
751
+ ## 3.0.0-beta.79
752
+
753
+ ### Patch Changes
754
+
755
+ - @robota-sdk/agent-core@3.0.0-beta.79
756
+ - @robota-sdk/agent-executor@3.0.0-beta.79
757
+ - @robota-sdk/agent-framework@3.0.0-beta.79
758
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.79
759
+ - @robota-sdk/agent-provider@3.0.0-beta.79
760
+
761
+ ## 3.0.0-beta.78
762
+
763
+ ### Patch Changes
764
+
765
+ - Updated dependencies [6f308d1]
766
+ - @robota-sdk/agent-core@3.0.0-beta.78
767
+ - @robota-sdk/agent-provider@3.0.0-beta.78
768
+ - @robota-sdk/agent-executor@3.0.0-beta.78
769
+ - @robota-sdk/agent-framework@3.0.0-beta.78
770
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.78
771
+
772
+ ## 3.0.0-beta.77
773
+
774
+ ### Patch Changes
775
+
776
+ - Updated dependencies
777
+ - @robota-sdk/agent-core@3.0.0-beta.77
778
+ - @robota-sdk/agent-process@3.0.0-beta.77
779
+ - @robota-sdk/agent-executor@3.0.0-beta.77
780
+ - @robota-sdk/agent-framework@3.0.0-beta.77
781
+ - @robota-sdk/agent-interface-transport@3.0.0-beta.77
782
+ - @robota-sdk/agent-provider@3.0.0-beta.77
783
+
784
+ ## 3.0.0-beta.76
785
+
786
+ ### Patch Changes
787
+
788
+ - Updated dependencies
789
+ - Updated dependencies [c0a6287]
790
+ - Updated dependencies [9df3a88]
791
+ - Updated dependencies
792
+ - Updated dependencies
793
+ - Updated dependencies [576af62]
794
+ - @robota-sdk/agent-core@3.0.0-beta.76
795
+ - @robota-sdk/agent-framework@3.0.0-beta.76
796
+ - @robota-sdk/agent-provider@3.0.0-beta.76
797
+ - @robota-sdk/agent-executor@3.0.0-beta.76
798
+
799
+ ## 3.0.0-beta.75
800
+
801
+ ### Patch Changes
802
+
803
+ - Updated dependencies
804
+ - @robota-sdk/agent-framework@3.0.0-beta.75
805
+ - @robota-sdk/agent-core@3.0.0-beta.75
806
+ - @robota-sdk/agent-executor@3.0.0-beta.75
807
+ - @robota-sdk/agent-provider@3.0.0-beta.75
808
+
809
+ ## 3.0.0-beta.74
810
+
811
+ ### Patch Changes
812
+
813
+ - Updated dependencies
814
+ - @robota-sdk/agent-framework@3.0.0-beta.74
815
+ - @robota-sdk/agent-core@3.0.0-beta.74
816
+ - @robota-sdk/agent-executor@3.0.0-beta.74
817
+ - @robota-sdk/agent-provider@3.0.0-beta.74
818
+
819
+ ## 3.0.0-beta.73
820
+
821
+ ### Patch Changes
822
+
823
+ - @robota-sdk/agent-core@3.0.0-beta.73
824
+ - @robota-sdk/agent-executor@3.0.0-beta.73
825
+ - @robota-sdk/agent-framework@3.0.0-beta.73
826
+ - @robota-sdk/agent-provider@3.0.0-beta.73
827
+
828
+ ## 3.0.0-beta.72
829
+
830
+ ### Patch Changes
831
+
832
+ - Updated dependencies
833
+ - @robota-sdk/agent-framework@3.0.0-beta.72
834
+ - @robota-sdk/agent-core@3.0.0-beta.72
835
+ - @robota-sdk/agent-executor@3.0.0-beta.72
836
+ - @robota-sdk/agent-provider@3.0.0-beta.72
837
+
838
+ ## 3.0.0-beta.71
839
+
840
+ ### Patch Changes
841
+
842
+ - fix(context): unify token estimation to single SSOT — status bar and /context list now use the same serialized JSON estimate
843
+ - Updated dependencies
844
+ - @robota-sdk/agent-core@3.0.0-beta.71
845
+ - @robota-sdk/agent-executor@3.0.0-beta.71
846
+ - @robota-sdk/agent-framework@3.0.0-beta.71
847
+ - @robota-sdk/agent-provider@3.0.0-beta.71
848
+
849
+ ## 3.0.0-beta.70
850
+
851
+ ### Patch Changes
852
+
853
+ - Updated dependencies
854
+ - @robota-sdk/agent-framework@3.0.0-beta.70
855
+ - @robota-sdk/agent-core@3.0.0-beta.70
856
+ - @robota-sdk/agent-executor@3.0.0-beta.70
857
+ - @robota-sdk/agent-provider@3.0.0-beta.70
858
+
859
+ ## 3.0.0-beta.69
860
+
861
+ ### Patch Changes
862
+
863
+ - Updated dependencies
864
+ - @robota-sdk/agent-framework@3.0.0-beta.69
865
+ - @robota-sdk/agent-core@3.0.0-beta.69
866
+ - @robota-sdk/agent-executor@3.0.0-beta.69
867
+ - @robota-sdk/agent-provider@3.0.0-beta.69
868
+
869
+ ## 3.0.0-beta.68
870
+
871
+ ### Patch Changes
872
+
873
+ - @robota-sdk/agent-core@3.0.0-beta.68
874
+ - @robota-sdk/agent-executor@3.0.0-beta.68
875
+ - @robota-sdk/agent-framework@3.0.0-beta.68
876
+ - @robota-sdk/agent-provider@3.0.0-beta.68
877
+
878
+ ## 3.0.0-beta.67
879
+
880
+ ### Patch Changes
881
+
882
+ - CLIR: agent-cli layer separation, agent-framework interactive session improvements, subagent runner fix, TUI interface README
883
+ - Updated dependencies
884
+ - @robota-sdk/agent-framework@3.0.0-beta.67
885
+ - @robota-sdk/agent-core@3.0.0-beta.67
886
+ - @robota-sdk/agent-executor@3.0.0-beta.67
887
+ - @robota-sdk/agent-provider@3.0.0-beta.67
888
+
889
+ ## 3.0.0-beta.66
890
+
891
+ ### Patch Changes
892
+
893
+ - Updated dependencies
894
+ - @robota-sdk/agent-framework@3.0.0-beta.66
895
+ - @robota-sdk/agent-core@3.0.0-beta.66
896
+ - @robota-sdk/agent-executor@3.0.0-beta.66
897
+ - @robota-sdk/agent-provider@3.0.0-beta.66