@robota-sdk/agent-framework 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 +98 -19
- package/README.md +55 -10
- package/dist/node/{createInteractiveRuntime-BhC0t5ec.d.ts → createInteractiveRuntime-BMLlR29T.d.ts} +512 -313
- package/dist/node/createInteractiveRuntime-BMLlR29T.d.ts.map +1 -0
- package/dist/node/{createInteractiveRuntime-BnvMAmtV.d.cts → createInteractiveRuntime-CHR5gjdl.d.cts} +512 -313
- package/dist/node/createInteractiveRuntime-CHR5gjdl.d.cts.map +1 -0
- package/dist/node/index.cjs +26 -24
- package/dist/node/index.d.cts +43 -9
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.ts +42 -8
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +26 -24
- package/dist/node/index.js.map +1 -1
- package/dist/node/interactive-CT4ca0_q.cjs +130 -0
- package/dist/node/interactive-DZfVMwYx.js +131 -0
- package/dist/node/interactive-DZfVMwYx.js.map +1 -0
- package/dist/node/testing/index.cjs +2 -2
- package/dist/node/testing/index.d.cts +4 -4
- package/dist/node/testing/index.d.ts +3 -3
- package/dist/node/testing/index.js +2 -2
- package/dist/node/testing/index.js.map +1 -1
- package/package.json +29 -29
- package/dist/node/createInteractiveRuntime-BhC0t5ec.d.ts.map +0 -1
- package/dist/node/createInteractiveRuntime-BnvMAmtV.d.cts.map +0 -1
- package/dist/node/interactive-Ci_de-jv.js +0 -128
- package/dist/node/interactive-Ci_de-jv.js.map +0 -1
- package/dist/node/interactive-D5LjaQmC.cjs +0 -127
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,84 @@
|
|
|
1
1
|
# @robota-sdk/agent-framework
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.87
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7d9cc66: Keep host-declared inline human controls reachable during active turns. Plugin disable and uninstall can withdraw future dispatch without changing model invocation or host command policy.
|
|
8
|
+
- 7d9cc66: Expose declarative contribution descriptors for installed bundles and resolved MCP sources,
|
|
9
|
+
including source generations, host capability requirements and compatibility diagnostics.
|
|
10
|
+
Revalidate MCP approval, source identity and workspace trust before new dispatch, preserving
|
|
11
|
+
outcomes of calls already started and refusing retained tools after shutdown.
|
|
12
|
+
- 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.
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 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.
|
|
17
|
+
- 7d9cc66: Load declared JSON and inline bundle MCP configurations with selected-source containment, ordered whole-server replacement and file provenance. Route packaged servers through normal CLI/app MCP startup with namespaced identities, existing trust/approval/authority gates, disable overlays and value-free compatibility diagnostics.
|
|
18
|
+
- 7d9cc66: Load external name-only plugin manifests without inventing optional metadata. Select the recorded
|
|
19
|
+
installed source instead of the lexically last cached directory, refusing invalid, missing or
|
|
20
|
+
ambiguous revisions. Check the installed identity as well as the manifest name for disablement.
|
|
21
|
+
- 7d9cc66: Add user-only project memory topic correction and forgetting, prevent automatic restoration after restart, refresh retained startup context, and reconcile semantic recall with current durable source content.
|
|
22
|
+
- 7d9cc66: Allow consumer eval metrics to require a perfect outcome independently of aggregate scores, and reject interrupted runs as successful evaluations.
|
|
23
|
+
- 7d9cc66: Add explicit MCP Skills selection, bounded supervisor access and persistent host content consent.
|
|
24
|
+
Users can inspect verified instructions, approve the exact content fingerprint and withdraw consent;
|
|
25
|
+
models can discover metadata only. Consent stays separate from server admission and model-turn activation.
|
|
26
|
+
- 7d9cc66: Route discovered MCP Skills through the shared skill command runtime with lazy verified content, source-bound invocation names, current user consent and execution-owned activation cleanup. Keep remote shell expressions inert and defer queued user skill reads until their own turn executes.
|
|
27
|
+
- 7d9cc66: Restore actual interactive tool observations, identities and outcomes from persisted event history.
|
|
28
|
+
Show denied calls as failed in live and restored GUI conversation views.
|
|
29
|
+
- 7d9cc66: Retain registered tool source attribution in observations and preserve ordered outcome receipts independently of conversation summaries.
|
|
30
|
+
- 7d9cc66: Expose verified skill supporting resources only within their owning turn or fork, using the current host consent and manifest.
|
|
31
|
+
- 7d9cc66: Retain mixed tool observations alongside structured results through live session events and history
|
|
32
|
+
display. The shared app renderer previews inline raster images and keeps resource URIs inert, with
|
|
33
|
+
explicit diagnostics for unsupported media instead of silently dropping it.
|
|
34
|
+
- 7d9cc66: Observe scheduler queue intervals separately from pre-dispatch admission, permission and tool work.
|
|
35
|
+
Preserve valid duration totals when live trace detail is bounded, reporting invalid evidence explicitly
|
|
36
|
+
through content-free console and OTLP traces without altering dispatch, recovery or settlement.
|
|
37
|
+
- Updated dependencies
|
|
38
|
+
- Updated dependencies [66af868]
|
|
39
|
+
- Updated dependencies [7d9cc66]
|
|
40
|
+
- Updated dependencies [7d9cc66]
|
|
41
|
+
- Updated dependencies [7d9cc66]
|
|
42
|
+
- Updated dependencies [7d9cc66]
|
|
43
|
+
- Updated dependencies [7d9cc66]
|
|
44
|
+
- Updated dependencies [7d9cc66]
|
|
45
|
+
- Updated dependencies [7d9cc66]
|
|
46
|
+
- Updated dependencies [7d9cc66]
|
|
47
|
+
- Updated dependencies [7d9cc66]
|
|
48
|
+
- Updated dependencies [7d9cc66]
|
|
49
|
+
- Updated dependencies [7d9cc66]
|
|
50
|
+
- @robota-sdk/agent-core@3.0.0-beta.87
|
|
51
|
+
- @robota-sdk/agent-executor@3.0.0-beta.87
|
|
52
|
+
- @robota-sdk/agent-file-authority@3.0.0-beta.87
|
|
53
|
+
- @robota-sdk/agent-interface-analytics@3.0.0-beta.87
|
|
54
|
+
- @robota-sdk/agent-interface-command@3.0.0-beta.87
|
|
55
|
+
- @robota-sdk/agent-interface-execution@3.0.0-beta.87
|
|
56
|
+
- @robota-sdk/agent-interface-session@3.0.0-beta.87
|
|
57
|
+
- @robota-sdk/agent-interface-session-mobility@3.0.0-beta.87
|
|
58
|
+
- @robota-sdk/agent-interface-transport@3.0.0-beta.87
|
|
59
|
+
- @robota-sdk/agent-roundtable@3.0.0-beta.87
|
|
60
|
+
- @robota-sdk/agent-session@3.0.0-beta.87
|
|
61
|
+
- @robota-sdk/agent-tool-defaults@3.0.0-beta.87
|
|
62
|
+
- @robota-sdk/agent-tools@3.0.0-beta.87
|
|
63
|
+
|
|
64
|
+
## 3.0.0-beta.86
|
|
65
|
+
|
|
66
|
+
### Patch Changes
|
|
67
|
+
|
|
68
|
+
- @robota-sdk/agent-core@3.0.0-beta.86
|
|
69
|
+
- @robota-sdk/agent-executor@3.0.0-beta.86
|
|
70
|
+
- @robota-sdk/agent-file-authority@3.0.0-beta.86
|
|
71
|
+
- @robota-sdk/agent-interface-analytics@3.0.0-beta.86
|
|
72
|
+
- @robota-sdk/agent-interface-command@3.0.0-beta.86
|
|
73
|
+
- @robota-sdk/agent-interface-execution@3.0.0-beta.86
|
|
74
|
+
- @robota-sdk/agent-interface-session@3.0.0-beta.86
|
|
75
|
+
- @robota-sdk/agent-interface-session-mobility@3.0.0-beta.86
|
|
76
|
+
- @robota-sdk/agent-interface-transport@3.0.0-beta.86
|
|
77
|
+
- @robota-sdk/agent-roundtable@3.0.0-beta.86
|
|
78
|
+
- @robota-sdk/agent-session@3.0.0-beta.86
|
|
79
|
+
- @robota-sdk/agent-tool-defaults@3.0.0-beta.86
|
|
80
|
+
- @robota-sdk/agent-tools@3.0.0-beta.86
|
|
81
|
+
|
|
3
82
|
## 3.0.0-beta.85
|
|
4
83
|
|
|
5
84
|
### Minor Changes
|
|
@@ -257,7 +336,7 @@
|
|
|
257
336
|
- Session notices keep only `session-error` and `protocol-error`.
|
|
258
337
|
- The state gains `commandCatalog` and `sessionStatus`.
|
|
259
338
|
- `agent-command` registers `/theme` and `/keybindings` even without a terminal. They then answer
|
|
260
|
-
that they belong to the
|
|
339
|
+
that they belong to the Robota terminal, instead of being unknown.
|
|
261
340
|
- `agent-framework`:
|
|
262
341
|
- `InteractiveSession.getStatusSnapshot()`.
|
|
263
342
|
- The main-thread row previews the last chat message instead of the last record's type.
|
|
@@ -268,7 +347,7 @@
|
|
|
268
347
|
|
|
269
348
|
- **`agent-framework`:** `supportsWorkspaceProjectMutation(platform?)` tells a host in advance whether project writes can be proven to stay under the trusted root. The project writer uses the same answer, so the two cannot disagree.
|
|
270
349
|
- **`agent-cli`:**
|
|
271
|
-
- Where project writes cannot be proven safe, a trusted workspace keeps its sessions in the user session store (
|
|
350
|
+
- Where project writes cannot be proven safe, a trusted workspace keeps its sessions in the user session store (`$PRODUCT_USER_STATE_DIR/sessions`). They are listed for that workspace by their working directory, so `/resume`, the sessions sidebar, `--continue` and `robota session list` find them. Nothing is written under the project root.
|
|
272
351
|
- Before this, every save in a trusted git workspace on macOS was refused, and those surfaces listed nothing.
|
|
273
352
|
- Linux keeps trusted sessions in the project, as before.
|
|
274
353
|
- `robota session list`, `robota usage` and `robota session analyze` report such sessions as user sessions, never as project sessions.
|
|
@@ -389,7 +468,7 @@
|
|
|
389
468
|
stays inside the project (every platform but Linux), none is composed: a checkpoint could be
|
|
390
469
|
neither saved nor restored there.
|
|
391
470
|
- `agent-command` (patch): where a session has no checkpoints, `/rewind` says why: a restricted
|
|
392
|
-
workspace is told to run `robota trust --yes` and restart
|
|
471
|
+
workspace is told to run `robota trust --yes` and restart Robota, and a host that cannot write
|
|
393
472
|
the project safely says so. `/rewind list` reports this as a failed command instead of throwing.
|
|
394
473
|
- `agent-framework` (minor): a checkpoint operation on a session without a store throws
|
|
395
474
|
`EditCheckpointsUnavailableError`, whose `reason` is `host-cannot-write-project`,
|
|
@@ -424,7 +503,7 @@
|
|
|
424
503
|
under. `sandboxApprovalFor` is exported.
|
|
425
504
|
- `agent-subagent-runner` (minor): `ISubagentWorkerComposition` takes an optional `createSandbox`. The
|
|
426
505
|
worker builds that sandbox once and hands the same instance to `createTools` and to the session.
|
|
427
|
-
- `agent-cli` (patch):
|
|
506
|
+
- `agent-cli` (patch): Robota's worker composition builds the OS sandbox through `createSandbox`, so
|
|
428
507
|
a child-process subagent approves what its parent approves.
|
|
429
508
|
|
|
430
509
|
### Patch Changes
|
|
@@ -569,7 +648,7 @@
|
|
|
569
648
|
The tool reaches only files inside the workspace whose path does not look like it holds secrets
|
|
570
649
|
(`.env*`, `~/.ssh`, keys and credentials), and it does not exist in a turn a peer's message started.
|
|
571
650
|
- The receiving operator approves every file. A received file is kept as an inert copy (mode 0600)
|
|
572
|
-
under
|
|
651
|
+
under `$PRODUCT_USER_STATE_DIR/peer-files/<sender>/`. It is never run and never placed in the model's context.
|
|
573
652
|
The conversation is told only its name, size and sha256. A name that leaves that directory is
|
|
574
653
|
refused, a symbolic link is never written through, and nothing is overwritten.
|
|
575
654
|
- Transfers travel on a channel of their own (a separate connection on this host, a separate data
|
|
@@ -702,9 +781,9 @@
|
|
|
702
781
|
session on an earlier version cannot confirm, so its messages are refused; both sessions need this
|
|
703
782
|
version to message each other.
|
|
704
783
|
|
|
705
|
-
- ec5e477: Add a credential store port (`ICredentialStore` in `agent-core`) and keep the CLI's secrets behind it: the OS keychain through the optional `@napi-rs/keyring` binding (macOS Keychain, Windows Credential Manager, Linux Secret Service), else an owner-only file under
|
|
784
|
+
- ec5e477: Add a credential store port (`ICredentialStore` in `agent-core`) and keep the CLI's secrets behind it: the OS keychain through the optional `@napi-rs/keyring` binding (macOS Keychain, Windows Credential Manager, Linux Secret Service), else an owner-only file under `$PRODUCT_USER_STATE_DIR/credentials`. The backend is chosen at first use, recorded, and named by `/remote-control status`; a recorded keychain that stops working fails closed instead of degrading to the file.
|
|
706
785
|
|
|
707
|
-
The remote-control host identity key moves into the store. The old
|
|
786
|
+
The remote-control host identity key moves into the store. The old `$PRODUCT_USER_STATE_DIR/remote-host-identity.json` may have been copied by backups or dotfile sync, so it is not carried over: on the first run after upgrading a new host key is generated, the old file is removed, and the operator is told once that trusted devices must pair again.
|
|
708
787
|
|
|
709
788
|
- 18b52cc: Built-in commands are offered to the model deliberately, each described for the model, and never
|
|
710
789
|
with a trust, credential or permission-widening action.
|
|
@@ -855,7 +934,7 @@
|
|
|
855
934
|
with an advisor. Sending history to a destination (provider type and endpoint host) the main model
|
|
856
935
|
does not already use needs a one-time consent per destination, kept in the user settings file; a
|
|
857
936
|
refusal is remembered for the session. The organization's `allowedProviders` applies, and
|
|
858
|
-
`
|
|
937
|
+
`PRODUCT_DISABLE_ADVISOR=1` turns it off completely. In-process subagents inherit the advisor, bound
|
|
859
938
|
to their own conversation; child-process subagents do not get it.
|
|
860
939
|
|
|
861
940
|
**`@robota-sdk/agent-framework` is `major` for one reason: `ICommandHostSessionAccess` gains a
|
|
@@ -892,8 +971,8 @@
|
|
|
892
971
|
construction alongside `allow` and `deny`.
|
|
893
972
|
- **Never auto-approved, bypass included:** removing a critical path with `rm`/`rmdir` (the root, a
|
|
894
973
|
top-level directory, home, the working directory or a parent), and a modify-class write into
|
|
895
|
-
`.git`, `.
|
|
896
|
-
Files inside an isolated worktree (
|
|
974
|
+
`.git`, `.Robota`, `.claude`, `.agents`, `.mcp.json`, `.gitconfig`, `.npmrc` or a shell rc file.
|
|
975
|
+
Files inside an isolated worktree (`$PRODUCT_PROJECT_STATE_DIR/worktrees/<name>/…`) are ordinary files. With no
|
|
897
976
|
approver attached, an ask is a denial.
|
|
898
977
|
- **A ceiling is checked before bypass and before any ask.** A subagent's `inherit-allowlist` ceiling
|
|
899
978
|
is now the parent's _effective_ rules, read live at spawn: settings, preset lists and command
|
|
@@ -1187,7 +1266,7 @@
|
|
|
1187
1266
|
`createModelCommandToolProjection`, and `buildPromptWithFileReferences` for SDK consumers.
|
|
1188
1267
|
|
|
1189
1268
|
To preserve the previous identifiers, pass `modelCommandToolPrefix: 'robota_command_'` and
|
|
1190
|
-
`promptFileReferenceTag: '
|
|
1269
|
+
`promptFileReferenceTag: 'PRODUCT_file_references'` in session options, or pass those values to
|
|
1191
1270
|
the projection and prompt-format helpers. The Robota product profile supplies both values, so
|
|
1192
1271
|
the Robota CLI keeps its existing model tool names and prompt enclosure.
|
|
1193
1272
|
|
|
@@ -1308,10 +1387,10 @@
|
|
|
1308
1387
|
- 4078a72: Model fallback chain. `--fallback-model a,b` (or the `fallbackModel` settings array; the flag wins) names up to three models a turn moves to when its model is overloaded, unavailable or failing on the server. An entry is a provider profile, `profile:model`, a bare model on the primary's provider, or `default`. The move happens only before any output has streamed, lasts for the current turn, and is shown as a system note; entries that cannot be built are passed over and entries outside the organization's `allowedProviders` are dropped with a notice. `FallbackProvider` in agent-framework implements it over the session's provider; `IChatOptions` gains `executionId`, `onModelFallback` and `preserveContextWindow`, `IAIProvider` gains optional `resolveModelRoute`, and the execution loop emits a `provider_fallback` event and attributes requests, call observations, committed replies, the response cache and usage to the model that answered. A turn that ran on more than one model records per-model `modelShares` on its usage observation, which personal usage reports split by model and provider. A `/provider` switch keeps the chain, read again for the new primary.
|
|
1309
1388
|
- af2f2ad: `/cd <directory>` continues the conversation in another directory.
|
|
1310
1389
|
|
|
1311
|
-
- **A move is a new session in the target directory.** In the TUI,
|
|
1390
|
+
- **A move is a new session in the target directory.** In the TUI, Robota saves a copy of the
|
|
1312
1391
|
conversation where the target's session store will find it, ends the current run through its
|
|
1313
1392
|
normal end-of-life flow, and starts again in the target directory resuming that copy. The target's
|
|
1314
|
-
settings, trust decision, tools, skills and `AGENTS.md` apply, exactly as if
|
|
1393
|
+
settings, trust decision, tools, skills and `AGENTS.md` apply, exactly as if Robota had been
|
|
1315
1394
|
launched there. The process boundary makes the move atomic, so no tool call can straddle it.
|
|
1316
1395
|
- **The system prompt is kept as recorded**, so a provider's prompt cache survives. One appended
|
|
1317
1396
|
`<workspace-move>` message tells the model the new directory, and which project instructions now
|
|
@@ -1409,7 +1488,7 @@
|
|
|
1409
1488
|
- 2711ec6: One broken skill or agent file no longer stops the session.
|
|
1410
1489
|
|
|
1411
1490
|
Skill, command and agent definitions are shared with other hosts through `.claude`, and those hosts
|
|
1412
|
-
define fields of their own. The frontmatter decoder now validates only the fields
|
|
1491
|
+
define fields of their own. The frontmatter decoder now validates only the fields Robota owns and
|
|
1413
1492
|
ignores the rest (nested `metadata` entries included); a malformed value of an owned field is still
|
|
1414
1493
|
refused. A refused file is skipped with a single warning and still claims its name, so a
|
|
1415
1494
|
lower-priority definition cannot stand in for it. An empty `argument-hint` reads as no hint. When
|
|
@@ -1457,7 +1536,7 @@
|
|
|
1457
1536
|
project/user definitions > injected > built-in. `AgentDefinitionLoader` now dedupes within that tier
|
|
1458
1537
|
(first wins). Absent ⇒ unchanged behavior.
|
|
1459
1538
|
- **`@robota-sdk/agent-transport` / `@robota-sdk/agent-transport-tui`** — forward the optional
|
|
1460
|
-
`agentDefinitions` through the headless and TUI channels so every
|
|
1539
|
+
`agentDefinitions` through the headless and TUI channels so every Robota surface carries the seam.
|
|
1461
1540
|
- **`@robota-sdk/agent-cli`** — `robota`'s identity (branding, provider surface, presets,
|
|
1462
1541
|
`packs: [codingPack]`, base command modules, injected transports/runners/subagent factory) is declared as
|
|
1463
1542
|
data in a product profile and folded by `assembleProduct`. The coding command modules (`/shell`,
|
|
@@ -1560,7 +1639,7 @@
|
|
|
1560
1639
|
every `packages/*/src` production tree.
|
|
1561
1640
|
- 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:
|
|
1562
1641
|
|
|
1563
|
-
- `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the
|
|
1642
|
+
- `agent-session`: `ISessionOptions.contextCapacityHint` is forwarded into the agent configuration factory, making the core seam reachable from the consuming layer.
|
|
1564
1643
|
- `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.
|
|
1565
1644
|
- `agent-cli`: the default command set registers `/compact`, so end users regain the actionable hint.
|
|
1566
1645
|
- `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.
|
|
@@ -1573,7 +1652,7 @@
|
|
|
1573
1652
|
constructor-injectable with the previous bilingual/dev set as the documented default; session-name
|
|
1574
1653
|
sanitizer is Unicode-aware (non-Latin titles preserved).
|
|
1575
1654
|
- 90e7a10: The default background observer warning code and exported `OBSERVER_FAILURE_WARNING_CODE` value
|
|
1576
|
-
change from `
|
|
1655
|
+
change from `PRODUCT_BACKGROUND_OBSERVER_FAILURE` to `BACKGROUND_OBSERVER_FAILURE`. Hosts matching
|
|
1577
1656
|
the old warning code should match the new neutral code or provide `observerFailureWarningCode` in
|
|
1578
1657
|
their background manager or session options. The Robota CLI supplies its existing code explicitly
|
|
1579
1658
|
across print, goal, serve, MCP, and TUI sessions.
|
|
@@ -1978,7 +2057,7 @@
|
|
|
1978
2057
|
|
|
1979
2058
|
- **Preset system (PRESET-001~017):** new `@robota-sdk/agent-preset` package layering framework
|
|
1980
2059
|
assembly options into named, selectable profiles (`default`, `autonomous-builder`, `careful-reviewer`,
|
|
1981
|
-
`neutral-executor`) plus user-authored external presets loaded from
|
|
2060
|
+
`neutral-executor`) plus user-authored external presets loaded from `$PRODUCT_USER_STATE_DIR/presets/*.json`.
|
|
1982
2061
|
- **Live preset switching:** `/preset` command (list + active marker + switch) and a TUI active-preset
|
|
1983
2062
|
display. Switching live re-applies permission posture, model/effort, persona, command-module
|
|
1984
2063
|
selection, parallel-subagents gating, and a self-verification system-prompt section via the single
|
|
@@ -2199,7 +2278,7 @@
|
|
|
2199
2278
|
|
|
2200
2279
|
### Patch Changes
|
|
2201
2280
|
|
|
2202
|
-
- Refresh package docs and
|
|
2281
|
+
- Refresh package docs and Robota.io content for the beta 57 feature set.
|
|
2203
2282
|
- Updated dependencies
|
|
2204
2283
|
- @robota-sdk/agent-core@3.0.0-beta.58
|
|
2205
2284
|
- @robota-sdk/agent-executor@3.0.0-beta.58
|
package/README.md
CHANGED
|
@@ -14,8 +14,8 @@ It has three main entry points:
|
|
|
14
14
|
one configuration, for headless and multi-session hosts.
|
|
15
15
|
|
|
16
16
|
The package has no React dependency, and it never imports a concrete provider: you create the
|
|
17
|
-
provider (for example from `@robota-sdk/agent-provider-anthropic`) and pass it in. The
|
|
18
|
-
(`@robota-sdk/agent-cli`) is a
|
|
17
|
+
provider (for example from `@robota-sdk/agent-provider-anthropic`) and pass it in. The configured CLI
|
|
18
|
+
(`@robota-sdk/agent-cli`) is a maintained agent interface built on this package.
|
|
19
19
|
|
|
20
20
|
For walkthroughs, see the [SDK guide](../../content/guide/sdk.md) and
|
|
21
21
|
[Building agents](../../content/guide/building-agents.md).
|
|
@@ -26,7 +26,7 @@ For walkthroughs, see the [SDK guide](../../content/guide/sdk.md) and
|
|
|
26
26
|
npm install @robota-sdk/agent-framework @robota-sdk/agent-provider-anthropic
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Requires Node.js 22.12 or later. `InteractiveSession` and `createQuery` work with any
|
|
29
|
+
Requires Node.js 22.12 or later. `InteractiveSession` and `createQuery` work with any provider
|
|
30
30
|
package given a `model`; without one they use the settings files, or Anthropic's default model.
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
@@ -230,7 +230,7 @@ const session = runtime.createSession({ permissionMode: 'plan' });
|
|
|
230
230
|
|
|
231
231
|
`buildRuntimeSession()` is the one place a session is built from resolved options, and
|
|
232
232
|
`startRuntimeHost()` adds transport start/stop and a bounded shutdown on top of it; the CLI's
|
|
233
|
-
|
|
233
|
+
`<cli-name> --serve` uses both. `SessionPool` keeps several live sessions for a runtime that serves more
|
|
234
234
|
than one client. Headless output is available through `createHeadlessRunner` and
|
|
235
235
|
`createHeadlessTransport`, and `createProgrammaticAgent` drives a session from code.
|
|
236
236
|
|
|
@@ -378,15 +378,60 @@ that supports snapshots, `shutdown()` stores the sandbox snapshot ID, and resumi
|
|
|
378
378
|
| Self-hosting verification | `planSelfHostingVerification`, `transitionSelfHostingLoop` |
|
|
379
379
|
|
|
380
380
|
Bundle plugins use the Claude Code plugin layout: a directory with `.claude-plugin/plugin.json`
|
|
381
|
-
(`name
|
|
382
|
-
server configuration and agent definitions.
|
|
381
|
+
(`name` is required; `version` and `description` are optional) that can contribute skills,
|
|
382
|
+
commands, hooks, MCP server configuration and agent definitions. The loader selects the source
|
|
383
|
+
recorded in `installed_plugins.json`, validates its cache location and refuses invalid or missing
|
|
384
|
+
selected sources. Without a registry, a single cached revision is supported; multiple revisions
|
|
385
|
+
require an explicit installation record and are reported as `revision-unselected`. Cache directory
|
|
386
|
+
sorting never selects an execution source. Missing manifest versions remain absent. Enablement
|
|
387
|
+
checks both the installed identity and the manifest name, so renaming a manifest cannot bypass a
|
|
388
|
+
disabled installation. MCP dispatch revalidates this selection; other component lifetimes remain
|
|
389
|
+
owned by their host execution surfaces.
|
|
390
|
+
|
|
391
|
+
The loader also exposes a versioned `IContributionDescriptor` on each loaded bundle. It binds
|
|
392
|
+
installed identity, cache revision and source location to namespaced contributions and required
|
|
393
|
+
host capabilities without importing contributor code or exposing MCP credential values. A
|
|
394
|
+
supported declaration still requires host admission. Agent names without execution definitions
|
|
395
|
+
are unavailable; unconsumed custom component paths and invalid transports carry compatibility
|
|
396
|
+
diagnostics. The descriptor records host ownership of active-call policy; it does not establish
|
|
397
|
+
live retirement behavior for every component kind.
|
|
398
|
+
|
|
399
|
+
The documented MCP declaration subset supports `mcpServers` as a plugin-relative `./` JSON path,
|
|
400
|
+
an inline server map, or an ordered array of either. The default `.mcp.json` is read first; later
|
|
401
|
+
declarations replace whole server entries, with each winning entry retaining its declaring file.
|
|
402
|
+
Paths are checked against the selected installed revision, including symlinks. Unsupported paths
|
|
403
|
+
and malformed declarations produce value-free compatibility codes. Binary MCP bundles are not
|
|
404
|
+
supported by this adapter. See the [foreign manifest reference](https://code.claude.com/docs/en/plugins-reference).
|
|
405
|
+
|
|
406
|
+
CLI and app startup route these definitions through the existing `plugin` MCP source tier, with
|
|
407
|
+
`plugin-name:server-name` identities, ordinary precedence, workspace trust, approval and host stdio
|
|
408
|
+
authority. Inspection never connects. `${CLAUDE_PLUGIN_ROOT}` resolves to the selected plugin root;
|
|
409
|
+
other environment materialization remains owned by the MCP definition layer. Startup honors the
|
|
410
|
+
current disable overlay. Before each MCP call the host rereads enablement and the selected source;
|
|
411
|
+
disable, uninstall, source replacement or changed trust refuses new dispatch. Already dispatched
|
|
412
|
+
calls settle with their real outcomes. Fresh startup reuses durable approvals only when their
|
|
413
|
+
source identity and trust still match; a new revision cannot silently replace an in-flight tool.
|
|
414
|
+
|
|
415
|
+
The documented MCP declaration subset supports `mcpServers` as a plugin-relative `./` JSON path,
|
|
416
|
+
an inline server map, or an ordered array of either. The default `.mcp.json` is read first; later
|
|
417
|
+
declarations replace whole server entries, with each winning entry retaining its declaring file.
|
|
418
|
+
Paths are checked against the selected installed revision, including symlinks. Unsupported paths
|
|
419
|
+
and malformed declarations produce value-free compatibility codes. Binary MCP bundles are not
|
|
420
|
+
supported by this adapter. See the [foreign manifest reference](https://code.claude.com/docs/en/plugins-reference).
|
|
421
|
+
|
|
422
|
+
CLI and app startup route these definitions through the existing `plugin` MCP source tier, with
|
|
423
|
+
`plugin-name:server-name` identities, ordinary precedence, workspace trust, approval and host stdio
|
|
424
|
+
authority. Inspection never connects. `${CLAUDE_PLUGIN_ROOT}` resolves to the selected plugin root;
|
|
425
|
+
other environment materialization remains owned by the MCP definition layer. Startup honors the
|
|
426
|
+
current disable overlay; active-chain update/disable and restored-work revalidation still require
|
|
427
|
+
their separate lifecycle implementation.
|
|
383
428
|
|
|
384
429
|
## Settings
|
|
385
430
|
|
|
386
431
|
Settings are JSON files merged in the order the host gives them, later layers winning.
|
|
387
|
-
`$ENV:NAME` values in provider credentials are replaced with the environment variable. The
|
|
388
|
-
CLI reads
|
|
389
|
-
|
|
432
|
+
`$ENV:NAME` values in provider credentials are replaced with the environment variable. The configured
|
|
433
|
+
CLI reads `$PRODUCT_USER_STATE_DIR/settings.json`, `~/.claude/settings.json`, `$PRODUCT_PROJECT_STATE_DIR/settings.json`,
|
|
434
|
+
`$PRODUCT_PROJECT_STATE_DIR/settings.local.json`, `.claude/settings.json` and `.claude/settings.local.json`, in that
|
|
390
435
|
order; project files are read only in a trusted project.
|
|
391
436
|
|
|
392
437
|
```json
|
|
@@ -433,4 +478,4 @@ examples (no provider credentials needed).
|
|
|
433
478
|
|
|
434
479
|
## License
|
|
435
480
|
|
|
436
|
-
|
|
481
|
+
This package is dual-licensed under the [GNU AGPL-3.0](../../LICENSE) or a [commercial license](../../COMMERCIAL.md). See [LICENSING.md](../../LICENSING.md).
|