@robota-sdk/agent-session 3.0.0-beta.86 → 3.0.0-beta.87
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 +39 -9
- package/README.md +7 -7
- package/dist/node/index.cjs +10 -9
- package/dist/node/index.d.cts +17 -10
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.ts +17 -10
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +10 -9
- package/dist/node/index.js.map +1 -1
- package/package.json +13 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @robota-sdk/agent-session
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.87
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7d9cc66: Preserve an explicitly supplied host tool scheduling policy through session assembly and CLI presentation modes, retaining permission admission and conservative handling of undeclared resources.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 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.
|
|
12
|
+
- 7d9cc66: Retain typed resource and audio observations alongside structured tool results through history, durable receipts, recovery, size admission, and session persistence. Preserve opaque resource references without fetching them, project embedded text and explicit unsupported binary/audio diagnostics into provider requests and compaction transcripts, and validate persisted observation shapes on reload.
|
|
13
|
+
- 7d9cc66: Retain registered tool source attribution in observations and preserve ordered outcome receipts independently of conversation summaries.
|
|
14
|
+
- 7d9cc66: Retain mixed tool observations alongside structured results through live session events and history
|
|
15
|
+
display. The shared app renderer previews inline raster images and keeps resource URIs inert, with
|
|
16
|
+
explicit diagnostics for unsupported media instead of silently dropping it.
|
|
17
|
+
- 7d9cc66: Retain registered attribution on refused and interrupted call receipts without replacing the source of actual or recovered settlements, and project undispatched registered calls into live and restored presentation history.
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- Updated dependencies [66af868]
|
|
20
|
+
- Updated dependencies [7d9cc66]
|
|
21
|
+
- Updated dependencies [7d9cc66]
|
|
22
|
+
- Updated dependencies [7d9cc66]
|
|
23
|
+
- Updated dependencies [7d9cc66]
|
|
24
|
+
- Updated dependencies [7d9cc66]
|
|
25
|
+
- Updated dependencies [7d9cc66]
|
|
26
|
+
- Updated dependencies [7d9cc66]
|
|
27
|
+
- Updated dependencies [7d9cc66]
|
|
28
|
+
- @robota-sdk/agent-core@3.0.0-beta.87
|
|
29
|
+
- @robota-sdk/agent-file-authority@3.0.0-beta.87
|
|
30
|
+
- @robota-sdk/agent-interface-execution@3.0.0-beta.87
|
|
31
|
+
- @robota-sdk/agent-interface-session@3.0.0-beta.87
|
|
32
|
+
|
|
3
33
|
## 3.0.0-beta.86
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
|
@@ -158,7 +188,7 @@
|
|
|
158
188
|
The tool reaches only files inside the workspace whose path does not look like it holds secrets
|
|
159
189
|
(`.env*`, `~/.ssh`, keys and credentials), and it does not exist in a turn a peer's message started.
|
|
160
190
|
- The receiving operator approves every file. A received file is kept as an inert copy (mode 0600)
|
|
161
|
-
under
|
|
191
|
+
under `$PRODUCT_USER_STATE_DIR/peer-files/<sender>/`. It is never run and never placed in the model's context.
|
|
162
192
|
The conversation is told only its name, size and sha256. A name that leaves that directory is
|
|
163
193
|
refused, a symbolic link is never written through, and nothing is overwritten.
|
|
164
194
|
- Transfers travel on a channel of their own (a separate connection on this host, a separate data
|
|
@@ -441,7 +471,7 @@
|
|
|
441
471
|
with an advisor. Sending history to a destination (provider type and endpoint host) the main model
|
|
442
472
|
does not already use needs a one-time consent per destination, kept in the user settings file; a
|
|
443
473
|
refusal is remembered for the session. The organization's `allowedProviders` applies, and
|
|
444
|
-
`
|
|
474
|
+
`PRODUCT_DISABLE_ADVISOR=1` turns it off completely. In-process subagents inherit the advisor, bound
|
|
445
475
|
to their own conversation; child-process subagents do not get it.
|
|
446
476
|
|
|
447
477
|
**`@robota-sdk/agent-framework` is `major` for one reason: `ICommandHostSessionAccess` gains a
|
|
@@ -496,8 +526,8 @@
|
|
|
496
526
|
construction alongside `allow` and `deny`.
|
|
497
527
|
- **Never auto-approved, bypass included:** removing a critical path with `rm`/`rmdir` (the root, a
|
|
498
528
|
top-level directory, home, the working directory or a parent), and a modify-class write into
|
|
499
|
-
`.git`, `.
|
|
500
|
-
Files inside an isolated worktree (
|
|
529
|
+
`.git`, `.Robota`, `.claude`, `.agents`, `.mcp.json`, `.gitconfig`, `.npmrc` or a shell rc file.
|
|
530
|
+
Files inside an isolated worktree (`$PRODUCT_PROJECT_STATE_DIR/worktrees/<name>/…`) are ordinary files. With no
|
|
501
531
|
approver attached, an ask is a denial.
|
|
502
532
|
- **A ceiling is checked before bypass and before any ask.** A subagent's `inherit-allowlist` ceiling
|
|
503
533
|
is now the parent's _effective_ rules, read live at spawn: settings, preset lists and command
|
|
@@ -617,7 +647,7 @@
|
|
|
617
647
|
the session-owned compaction trigger unchanged to PreCompact, PostCompact, logging, and callbacks.
|
|
618
648
|
- 4b76cfa: NEUT-005 (wave 2): restore an actionable context-capacity hint at the surface tier, neutrally. The zero-dependency `agent-core` layer emits a product-neutral hard-capacity notice and exposes the `IAgentConfig.contextCapacityHint` seam (wave 1). This wave wires that seam end-to-end without baking product vocabulary into a neutral library:
|
|
619
649
|
|
|
620
|
-
- `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the
|
|
650
|
+
- `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the agent configuration factory, making the core seam reachable from the consuming layer.
|
|
621
651
|
- `agent-framework`: new `deriveContextCapacityHint(commandModules)` derives the concrete remediation wording from the surface's OWN registered command set (names a registered `compact` command → `"Run /compact and retry."`; `undefined` when none, leaving the neutral core default). It is applied automatically in interactive session assembly across the TUI, print, and `--serve` surfaces.
|
|
622
652
|
- `agent-cli`: the default command set registers `/compact`, so end users regain the actionable hint.
|
|
623
653
|
- `agent-interface-transport`: reworded the `'allow-project'` permission comment so it no longer hardcodes a storage path (the location is owned by the consuming layer), matching the `agent-session` twin.
|
|
@@ -860,7 +890,7 @@
|
|
|
860
890
|
### Patch Changes
|
|
861
891
|
|
|
862
892
|
- DQ-AUDIT-002 — consolidate duplicated domain data onto single owners: one model-pricing SSOT in agent-core (`MODEL_PRICES`/`lookupModelPrice`/`calculateModelCost`/`estimateBlendedCostPer1000`) consumed by agent-command and agent-plugin (drops two embedded/stale price tables); the `len/4` token estimator replaced by core `CONTEXT_ESTIMATE_CHARS_PER_TOKEN`; TUI `TContextState` derived from core `IContextWindowState`; dead pass-through re-exports removed from agent-session.
|
|
863
|
-
- DQ-AUDIT-006 — error/observability hygiene: replace raw `throw new Error()` on core-service and provider hot paths with typed `
|
|
893
|
+
- DQ-AUDIT-006 — error/observability hygiene: replace raw `throw new Error()` on core-service and provider hot paths with typed `AgentRuntimeError` subclasses (`ConfigurationError`/`ValidationError`) so error-handling can branch on category/recoverable; surface fire-and-forget hook failures via `logger.warn` instead of silent `.catch(() => {})`; wire the error-handling plugin's `totalRetries`/`successfulRecoveries` stats to real counters.
|
|
864
894
|
- 576af62: Fix `ConfigurationError: Agent must be fully initialized before changing model configuration` when running `/preset` (or any live model re-apply) on a fresh interactive session before the first message. The Robota agent initialized lazily on the first `run()`, but `setModel` requires full initialization. `Session.applyModelOptions` now awaits the new idempotent `Robota.ensureReady()` before `setModel`, and the preset live-switch path (`applyPresetToSession` → `executePresetCommand`) is async end-to-end. Adds a real cold-session regression test (no mocked Robota).
|
|
865
895
|
- Updated dependencies
|
|
866
896
|
- Updated dependencies
|
|
@@ -876,7 +906,7 @@
|
|
|
876
906
|
|
|
877
907
|
- **Preset system (PRESET-001~017):** new `@robota-sdk/agent-preset` package layering framework
|
|
878
908
|
assembly options into named, selectable profiles (`default`, `autonomous-builder`, `careful-reviewer`,
|
|
879
|
-
`neutral-executor`) plus user-authored external presets loaded from
|
|
909
|
+
`neutral-executor`) plus user-authored external presets loaded from `$PRODUCT_USER_STATE_DIR/presets/*.json`.
|
|
880
910
|
- **Live preset switching:** `/preset` command (list + active marker + switch) and a TUI active-preset
|
|
881
911
|
display. Switching live re-applies permission posture, model/effort, persona, command-module
|
|
882
912
|
selection, parallel-subagents gating, and a self-verification system-prompt section via the single
|
|
@@ -1007,7 +1037,7 @@
|
|
|
1007
1037
|
|
|
1008
1038
|
### Patch Changes
|
|
1009
1039
|
|
|
1010
|
-
- Refresh package docs and
|
|
1040
|
+
- Refresh package docs and Robota.io content for the beta 57 feature set.
|
|
1011
1041
|
- Updated dependencies
|
|
1012
1042
|
- @robota-sdk/agent-core@3.0.0-beta.58
|
|
1013
1043
|
|
|
@@ -1400,7 +1430,7 @@
|
|
|
1400
1430
|
|
|
1401
1431
|
- Refactor examples and improve resource management
|
|
1402
1432
|
- Simplified examples from 18+ files to 4 core examples (basic conversation, tool calling, multi-providers, advanced features)
|
|
1403
|
-
- Added proper resource cleanup with `
|
|
1433
|
+
- Added proper resource cleanup with `Robota.close()` method to prevent hanging processes
|
|
1404
1434
|
- Implemented `ToolProviderManager.close()` for proper tool provider cleanup
|
|
1405
1435
|
- Added BaseAIProvider abstract class with common functionality for all AI providers
|
|
1406
1436
|
- Updated package.json scripts and README documentation for better user experience
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @robota-sdk/agent-session
|
|
2
2
|
|
|
3
|
-
Session lifecycle for the Robota SDK. A `Session` wraps a `
|
|
3
|
+
Session lifecycle for the Robota SDK. A `Session` wraps a `ConversationAgent` agent from
|
|
4
4
|
`@robota-sdk/agent-core` and adds permission-gated tool execution, lifecycle hooks, context-window
|
|
5
5
|
tracking, conversation compaction, session logs and optional persistence.
|
|
6
6
|
|
|
@@ -161,7 +161,7 @@ This API alone does not provide arbitrary-effect recovery or durable Roundtable
|
|
|
161
161
|
|
|
162
162
|
| Export | Kind | Description |
|
|
163
163
|
| ------------------------------------------------------------------------------------------------------------ | ------------------- | ---------------------------------------------------------------------------------------- |
|
|
164
|
-
| `Session` | Class | Wraps `
|
|
164
|
+
| `Session` | Class | Wraps `ConversationAgent` with permissions, hooks, compaction, logging and persistence |
|
|
165
165
|
| `ISessionOptions`, `ISessionRunOptions`, `ISessionShutdownOptions` | Types | Constructor, run and shutdown options |
|
|
166
166
|
| `SessionBusyError`, `TurnClaim` | Classes | The refusal of a concurrent turn, and the identity of the running turn |
|
|
167
167
|
| `PermissionEnforcer` | Class | Tool permission checks, hook execution and output truncation |
|
|
@@ -188,11 +188,11 @@ This API alone does not provide arbitrary-effect recovery or durable Roundtable
|
|
|
188
188
|
|
|
189
189
|
`IContextWindowState` (the `getContextState()` result) is exported by `@robota-sdk/agent-core`.
|
|
190
190
|
|
|
191
|
-
## Session vs
|
|
191
|
+
## Session vs ConversationAgent
|
|
192
192
|
|
|
193
|
-
- **`
|
|
193
|
+
- **`ConversationAgent`** (`agent-core`): the raw agent — conversation, tools and plugins. No permissions, no
|
|
194
194
|
hooks.
|
|
195
|
-
- **`Session`** (this package): `
|
|
195
|
+
- **`Session`** (this package): `ConversationAgent` plus permissions, hooks, compaction, logging and
|
|
196
196
|
persistence. `@robota-sdk/agent-framework` builds its sessions from it.
|
|
197
197
|
|
|
198
198
|
## Persistence
|
|
@@ -241,7 +241,7 @@ checks the conversion on disposable files without touching your sessions.
|
|
|
241
241
|
|
|
242
242
|
## Dependencies
|
|
243
243
|
|
|
244
|
-
- `@robota-sdk/agent-core` —
|
|
244
|
+
- `@robota-sdk/agent-core` — `ConversationAgent`, permissions, hooks and core types
|
|
245
245
|
- `@robota-sdk/agent-interface-session` — the session record and store contracts
|
|
246
246
|
- `@robota-sdk/agent-interface-execution` — background task contracts stored in the session record
|
|
247
247
|
- `@robota-sdk/agent-file-authority` — bounded, root-relative file reads for log payloads
|
|
@@ -253,4 +253,4 @@ checks the conversion on disposable files without touching your sessions.
|
|
|
253
253
|
|
|
254
254
|
## License
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
This package is dual-licensed under the [GNU AGPL-3.0](../../LICENSE) or a [commercial license](../../COMMERCIAL.md). See [LICENSING.md](../../LICENSING.md).
|