@robota-sdk/agent-session 3.0.0-beta.85 → 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 CHANGED
@@ -1,5 +1,44 @@
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
+
33
+ ## 3.0.0-beta.86
34
+
35
+ ### Patch Changes
36
+
37
+ - @robota-sdk/agent-core@3.0.0-beta.86
38
+ - @robota-sdk/agent-file-authority@3.0.0-beta.86
39
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.86
40
+ - @robota-sdk/agent-interface-session@3.0.0-beta.86
41
+
3
42
  ## 3.0.0-beta.85
4
43
 
5
44
  ### Minor Changes
@@ -149,7 +188,7 @@
149
188
  The tool reaches only files inside the workspace whose path does not look like it holds secrets
150
189
  (`.env*`, `~/.ssh`, keys and credentials), and it does not exist in a turn a peer's message started.
151
190
  - The receiving operator approves every file. A received file is kept as an inert copy (mode 0600)
152
- under `~/.robota/peer-files/<sender>/`. It is never run and never placed in the model's context.
191
+ under `$PRODUCT_USER_STATE_DIR/peer-files/<sender>/`. It is never run and never placed in the model's context.
153
192
  The conversation is told only its name, size and sha256. A name that leaves that directory is
154
193
  refused, a symbolic link is never written through, and nothing is overwritten.
155
194
  - Transfers travel on a channel of their own (a separate connection on this host, a separate data
@@ -432,7 +471,7 @@
432
471
  with an advisor. Sending history to a destination (provider type and endpoint host) the main model
433
472
  does not already use needs a one-time consent per destination, kept in the user settings file; a
434
473
  refusal is remembered for the session. The organization's `allowedProviders` applies, and
435
- `ROBOTA_DISABLE_ADVISOR=1` turns it off completely. In-process subagents inherit the advisor, bound
474
+ `PRODUCT_DISABLE_ADVISOR=1` turns it off completely. In-process subagents inherit the advisor, bound
436
475
  to their own conversation; child-process subagents do not get it.
437
476
 
438
477
  **`@robota-sdk/agent-framework` is `major` for one reason: `ICommandHostSessionAccess` gains a
@@ -487,8 +526,8 @@
487
526
  construction alongside `allow` and `deny`.
488
527
  - **Never auto-approved, bypass included:** removing a critical path with `rm`/`rmdir` (the root, a
489
528
  top-level directory, home, the working directory or a parent), and a modify-class write into
490
- `.git`, `.robota`, `.claude`, `.agents`, `.mcp.json`, `.gitconfig`, `.npmrc` or a shell rc file.
491
- Files inside an isolated worktree (`.robota/worktrees/<name>/…`) are ordinary files. With no
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
492
531
  approver attached, an ask is a denial.
493
532
  - **A ceiling is checked before bypass and before any ask.** A subagent's `inherit-allowlist` ceiling
494
533
  is now the parent's _effective_ rules, read live at spawn: settings, preset lists and command
@@ -608,7 +647,7 @@
608
647
  the session-owned compaction trigger unchanged to PreCompact, PostCompact, logging, and callbacks.
609
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:
610
649
 
611
- - `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the Robota agent config (`buildRobota`), making the core seam reachable from the consuming layer.
650
+ - `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the agent configuration factory, making the core seam reachable from the consuming layer.
612
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.
613
652
  - `agent-cli`: the default command set registers `/compact`, so end users regain the actionable hint.
614
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.
@@ -851,7 +890,7 @@
851
890
  ### Patch Changes
852
891
 
853
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.
854
- - DQ-AUDIT-006 — error/observability hygiene: replace raw `throw new Error()` on core-service and provider hot paths with typed `RobotaError` 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.
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.
855
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).
856
895
  - Updated dependencies
857
896
  - Updated dependencies
@@ -867,7 +906,7 @@
867
906
 
868
907
  - **Preset system (PRESET-001~017):** new `@robota-sdk/agent-preset` package layering framework
869
908
  assembly options into named, selectable profiles (`default`, `autonomous-builder`, `careful-reviewer`,
870
- `neutral-executor`) plus user-authored external presets loaded from `~/.robota/presets/*.json`.
909
+ `neutral-executor`) plus user-authored external presets loaded from `$PRODUCT_USER_STATE_DIR/presets/*.json`.
871
910
  - **Live preset switching:** `/preset` command (list + active marker + switch) and a TUI active-preset
872
911
  display. Switching live re-applies permission posture, model/effort, persona, command-module
873
912
  selection, parallel-subagents gating, and a self-verification system-prompt section via the single
@@ -998,7 +1037,7 @@
998
1037
 
999
1038
  ### Patch Changes
1000
1039
 
1001
- - Refresh package docs and robota.io content for the beta 57 feature set.
1040
+ - Refresh package docs and Robota.io content for the beta 57 feature set.
1002
1041
  - Updated dependencies
1003
1042
  - @robota-sdk/agent-core@3.0.0-beta.58
1004
1043
 
@@ -1391,7 +1430,7 @@
1391
1430
 
1392
1431
  - Refactor examples and improve resource management
1393
1432
  - Simplified examples from 18+ files to 4 core examples (basic conversation, tool calling, multi-providers, advanced features)
1394
- - Added proper resource cleanup with `robota.close()` method to prevent hanging processes
1433
+ - Added proper resource cleanup with `Robota.close()` method to prevent hanging processes
1395
1434
  - Implemented `ToolProviderManager.close()` for proper tool provider cleanup
1396
1435
  - Added BaseAIProvider abstract class with common functionality for all AI providers
1397
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 `Robota` agent from
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 `Robota` with permissions, hooks, compaction, logging and persistence |
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 Robota
191
+ ## Session vs ConversationAgent
192
192
 
193
- - **`Robota`** (`agent-core`): the raw agent — conversation, tools and plugins. No permissions, no
193
+ - **`ConversationAgent`** (`agent-core`): the raw agent — conversation, tools and plugins. No permissions, no
194
194
  hooks.
195
- - **`Session`** (this package): `Robota` plus permissions, hooks, compaction, logging and
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` — the `Robota` agent, permissions, hooks and core types
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
- Robota is dual-licensed under the [GNU AGPL-3.0](../../LICENSE) or a [commercial license](../../COMMERCIAL.md). See [LICENSING.md](../../LICENSING.md).
256
+ This package is dual-licensed under the [GNU AGPL-3.0](../../LICENSE) or a [commercial license](../../COMMERCIAL.md). See [LICENSING.md](../../LICENSING.md).