@robota-sdk/agent-command 3.0.0-beta.86 → 3.0.0-beta.88
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 +64 -12
- package/README.md +6 -3
- package/dist/node/index.cjs +72 -70
- package/dist/node/index.d.cts +16 -8
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.ts +16 -8
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +51 -49
- package/dist/node/index.js.map +1 -1
- package/package.json +15 -13
- package/src/agent/__tests__/agent-command.test.ts +5 -5
- package/src/agent/agent-command-module.ts +1 -1
- package/src/background/__tests__/background-command-module.test.ts +6 -6
- package/src/default/__tests__/__snapshots__/model-exposure.test.ts.snap +15 -4
- package/src/default/__tests__/default-command-modules.test.ts +2 -2
- package/src/default/__tests__/model-exposure.test.ts +18 -5
- package/src/default/__tests__/org-policy-forwarding.test.ts +1 -1
- package/src/default/default-command-modules.ts +2 -2
- package/src/devices/devices-command-module.ts +1 -1
- package/src/doctor/__tests__/doctor-command-module.test.ts +10 -10
- package/src/doctor/__tests__/doctor-display-vocabulary.test.ts +1 -1
- package/src/doctor/__tests__/doctor-fixture.ts +14 -14
- package/src/doctor/__tests__/doctor-runner.test.ts +57 -57
- package/src/doctor/doctor-storage-probe.ts +1 -1
- package/src/doctor/doctor-types.ts +2 -2
- package/src/editor/__tests__/editor-command-functional.test.ts +1 -1
- package/src/fork/__tests__/fork-command.test.ts +1 -1
- package/src/fork/fork-command-module.ts +1 -1
- package/src/git/__tests__/git-command-module.test.ts +1 -1
- package/src/handoff/__tests__/handoff-command-module.test.ts +1 -1
- package/src/handoff/handoff-command-module.ts +1 -1
- package/src/keybindings/keybindings-command-module.ts +1 -1
- package/src/mcp-activation/__tests__/mcp-activation-command.test.ts +8 -8
- package/src/mcp-activation/__tests__/mcp-model-view.test.ts +43 -12
- package/src/mcp-activation/__tests__/mcp-skill-command.test.ts +141 -0
- package/src/mcp-activation/mcp-activation-command-module.ts +27 -2
- package/src/mcp-activation/mcp-activation-command.ts +149 -15
- package/src/mcp-activation/mcp-model-notice.ts +19 -5
- package/src/mcp-activation/mcp-model-status.ts +7 -2
- package/src/memory/__tests__/memory-command-module.test.ts +89 -16
- package/src/memory/memory-command-module.ts +4 -1
- package/src/memory/memory-command.ts +53 -1
- package/src/peers/__tests__/peers-command-module.test.ts +1 -1
- package/src/peers/peers-command-module.ts +1 -1
- package/src/permissions/__tests__/permissions-command-module.test.ts +4 -4
- package/src/plugin/__tests__/plugin-active-turn.test.ts +100 -0
- package/src/plugin/__tests__/plugin-command-module.test.ts +7 -7
- package/src/plugin/plugin-command-module.ts +4 -0
- package/src/provider/provider-startup.ts +4 -2
- package/src/remote-control/__tests__/remote-control-command.test.ts +2 -2
- package/src/rewind/__tests__/rewind-command-module.test.ts +4 -3
- package/src/rewind/rewind-command.ts +27 -21
- package/src/schedule/schedule-command-module.ts +1 -1
- package/src/session/__tests__/session-command-module.test.ts +2 -2
- package/src/skills/__tests__/skill-read-command.test.ts +64 -0
- package/src/skills/__tests__/skills-command-module.test.ts +2 -1
- package/src/skills/skill-read-command.ts +60 -0
- package/src/skills/skills-command-module.ts +3 -2
- package/src/terminal-client/__tests__/terminal-client-commands.test.ts +1 -1
- package/src/theme/__tests__/theme-command.test.ts +1 -1
- package/src/theme/theme-command-module.ts +1 -1
- package/src/user-local/__tests__/user-local-command.test.ts +16 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# @robota-sdk/agent-command
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.88
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @robota-sdk/agent-framework@3.0.0-beta.88
|
|
8
|
+
- @robota-sdk/agent-preset@3.0.0-beta.88
|
|
9
|
+
- @robota-sdk/agent-core@3.0.0-beta.88
|
|
10
|
+
- @robota-sdk/agent-interface-command@3.0.0-beta.88
|
|
11
|
+
- @robota-sdk/agent-interface-execution@3.0.0-beta.88
|
|
12
|
+
- @robota-sdk/agent-interface-session@3.0.0-beta.88
|
|
13
|
+
|
|
14
|
+
## 3.0.0-beta.87
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 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.
|
|
19
|
+
- 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.
|
|
20
|
+
- 7d9cc66: Allow authenticated attached users to correct and forget project memory while preserving host remote-command policy and rejecting model curation.
|
|
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: Add explicit MCP Skills selection, bounded supervisor access and persistent host content consent.
|
|
23
|
+
Users can inspect verified instructions, approve the exact content fingerprint and withdraw consent;
|
|
24
|
+
models can discover metadata only. Consent stays separate from server admission and model-turn activation.
|
|
25
|
+
- 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.
|
|
26
|
+
- 7d9cc66: Expose verified skill supporting resources only within their owning turn or fork, using the current host consent and manifest.
|
|
27
|
+
- Updated dependencies
|
|
28
|
+
- Updated dependencies [66af868]
|
|
29
|
+
- Updated dependencies [7d9cc66]
|
|
30
|
+
- Updated dependencies [7d9cc66]
|
|
31
|
+
- Updated dependencies [7d9cc66]
|
|
32
|
+
- Updated dependencies [7d9cc66]
|
|
33
|
+
- Updated dependencies [7d9cc66]
|
|
34
|
+
- Updated dependencies [7d9cc66]
|
|
35
|
+
- Updated dependencies [7d9cc66]
|
|
36
|
+
- Updated dependencies [7d9cc66]
|
|
37
|
+
- Updated dependencies [7d9cc66]
|
|
38
|
+
- Updated dependencies [7d9cc66]
|
|
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
|
+
- @robota-sdk/agent-core@3.0.0-beta.87
|
|
49
|
+
- @robota-sdk/agent-framework@3.0.0-beta.87
|
|
50
|
+
- @robota-sdk/agent-interface-command@3.0.0-beta.87
|
|
51
|
+
- @robota-sdk/agent-interface-execution@3.0.0-beta.87
|
|
52
|
+
- @robota-sdk/agent-interface-session@3.0.0-beta.87
|
|
53
|
+
- @robota-sdk/agent-preset@3.0.0-beta.87
|
|
54
|
+
|
|
3
55
|
## 3.0.0-beta.86
|
|
4
56
|
|
|
5
57
|
### Patch Changes
|
|
@@ -19,7 +71,7 @@
|
|
|
19
71
|
with command completion. Disabled plugins stop being executable after reload, and unreadable
|
|
20
72
|
settings clear the plugin skill snapshot. Hook changes require a new session.
|
|
21
73
|
- db35dcd: MCP approvals now outlive the process, and an approval takes effect at once. The `robota` CLI keeps
|
|
22
|
-
activation decisions in
|
|
74
|
+
activation decisions in `$PRODUCT_USER_STATE_DIR/mcp-approvals.json` (owner-only) unless the host passes its own
|
|
23
75
|
`mcpApprovalStore`, so an approved server connects at later starts until its definition changes.
|
|
24
76
|
`/mcp approve <server>` now also connects the server in the running session, the way `/mcp reload`
|
|
25
77
|
does, instead of waiting for a restart. A remote server without OAuth therefore connects once
|
|
@@ -178,7 +230,7 @@
|
|
|
178
230
|
- Session notices keep only `session-error` and `protocol-error`.
|
|
179
231
|
- The state gains `commandCatalog` and `sessionStatus`.
|
|
180
232
|
- `agent-command` registers `/theme` and `/keybindings` even without a terminal. They then answer
|
|
181
|
-
that they belong to the
|
|
233
|
+
that they belong to the Robota terminal, instead of being unknown.
|
|
182
234
|
- `agent-framework`:
|
|
183
235
|
- `InteractiveSession.getStatusSnapshot()`.
|
|
184
236
|
- The main-thread row previews the last chat message instead of the last record's type.
|
|
@@ -248,7 +300,7 @@
|
|
|
248
300
|
stays inside the project (every platform but Linux), none is composed: a checkpoint could be
|
|
249
301
|
neither saved nor restored there.
|
|
250
302
|
- `agent-command` (patch): where a session has no checkpoints, `/rewind` says why: a restricted
|
|
251
|
-
workspace is told to run `robota trust --yes` and restart
|
|
303
|
+
workspace is told to run `robota trust --yes` and restart Robota, and a host that cannot write
|
|
252
304
|
the project safely says so. `/rewind list` reports this as a failed command instead of throwing.
|
|
253
305
|
- `agent-framework` (minor): a checkpoint operation on a session without a store throws
|
|
254
306
|
`EditCheckpointsUnavailableError`, whose `reason` is `host-cannot-write-project`,
|
|
@@ -306,7 +358,7 @@
|
|
|
306
358
|
The tool reaches only files inside the workspace whose path does not look like it holds secrets
|
|
307
359
|
(`.env*`, `~/.ssh`, keys and credentials), and it does not exist in a turn a peer's message started.
|
|
308
360
|
- The receiving operator approves every file. A received file is kept as an inert copy (mode 0600)
|
|
309
|
-
under
|
|
361
|
+
under `$PRODUCT_USER_STATE_DIR/peer-files/<sender>/`. It is never run and never placed in the model's context.
|
|
310
362
|
The conversation is told only its name, size and sha256. A name that leaves that directory is
|
|
311
363
|
refused, a symbolic link is never written through, and nothing is overwritten.
|
|
312
364
|
- Transfers travel on a channel of their own (a separate connection on this host, a separate data
|
|
@@ -369,7 +421,7 @@
|
|
|
369
421
|
pairwise secret (`derivePairRendezvous(...).relayInbox()`).
|
|
370
422
|
- `agent-cli` — a device holding the signing key reissues its roster and revocation list before they
|
|
371
423
|
expire while an interactive session runs. The host can open this device's mesh endpoint from the
|
|
372
|
-
identity under
|
|
424
|
+
identity under `$PRODUCT_USER_STATE_DIR/devices`, saving newer lists a peer hands over; no command starts it yet.
|
|
373
425
|
- `agent-command` — `/devices add|join` still reports that enrolment is not available yet.
|
|
374
426
|
|
|
375
427
|
- Updated dependencies [c7f9203]
|
|
@@ -386,7 +438,7 @@
|
|
|
386
438
|
|
|
387
439
|
- 44fc732: Add `/devices` for this device's identity among the user's devices: `list`, `init` (creates the identity: a recovery phrase, the master-certified signing key, this device's keys and certificate, the first roster and revocation list), `revoke <device-id>` (signing key only, no phrase; confirmed at the terminal) and `recover` (rotates the signing key from the phrase and revokes the old ones). Enrolling another device (`add` / `join`) comes with the device connection.
|
|
388
440
|
|
|
389
|
-
The recovery phrase never enters the session: it is shown once and read with no echo on the controlling terminal (opened apart from the session's input), on the alternate screen that is cleared afterwards, and never reaches prompt history, conversation history, transcripts, traces or the model. Without an interactive terminal the phrase commands refuse. `/devices` is operator-only: never model-invocable and refused from remote surfaces. Private keys live in the host credential store; certificates, roster, revocation lists and sequence marks are kept in owner-only files under
|
|
441
|
+
The recovery phrase never enters the session: it is shown once and read with no echo on the controlling terminal (opened apart from the session's input), on the alternate screen that is cleared afterwards, and never reaches prompt history, conversation history, transcripts, traces or the model. Without an interactive terminal the phrase commands refuse. `/devices` is operator-only: never model-invocable and refused from remote surfaces. Private keys live in the host credential store; certificates, roster, revocation lists and sequence marks are kept in owner-only files under `$PRODUCT_USER_STATE_DIR/devices`.
|
|
390
442
|
|
|
391
443
|
`agent-remote-pairing` adds `isRecoveryPhraseWord`, so a phrase can be checked one word at a time.
|
|
392
444
|
|
|
@@ -467,9 +519,9 @@
|
|
|
467
519
|
|
|
468
520
|
### Patch Changes
|
|
469
521
|
|
|
470
|
-
- 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
|
|
522
|
+
- 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.
|
|
471
523
|
|
|
472
|
-
The remote-control host identity key moves into the store. The old
|
|
524
|
+
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.
|
|
473
525
|
|
|
474
526
|
- 007fd90: Authority per connection: pairing stays with the local operator, and driving needs the operator's yes.
|
|
475
527
|
|
|
@@ -594,7 +646,7 @@
|
|
|
594
646
|
with an advisor. Sending history to a destination (provider type and endpoint host) the main model
|
|
595
647
|
does not already use needs a one-time consent per destination, kept in the user settings file; a
|
|
596
648
|
refusal is remembered for the session. The organization's `allowedProviders` applies, and
|
|
597
|
-
`
|
|
649
|
+
`PRODUCT_DISABLE_ADVISOR=1` turns it off completely. In-process subagents inherit the advisor, bound
|
|
598
650
|
to their own conversation; child-process subagents do not get it.
|
|
599
651
|
|
|
600
652
|
**`@robota-sdk/agent-framework` is `major` for one reason: `ICommandHostSessionAccess` gains a
|
|
@@ -659,10 +711,10 @@
|
|
|
659
711
|
|
|
660
712
|
- af2f2ad: `/cd <directory>` continues the conversation in another directory.
|
|
661
713
|
|
|
662
|
-
- **A move is a new session in the target directory.** In the TUI,
|
|
714
|
+
- **A move is a new session in the target directory.** In the TUI, Robota saves a copy of the
|
|
663
715
|
conversation where the target's session store will find it, ends the current run through its
|
|
664
716
|
normal end-of-life flow, and starts again in the target directory resuming that copy. The target's
|
|
665
|
-
settings, trust decision, tools, skills and `AGENTS.md` apply, exactly as if
|
|
717
|
+
settings, trust decision, tools, skills and `AGENTS.md` apply, exactly as if Robota had been
|
|
666
718
|
launched there. The process boundary makes the move atomic, so no tool call can straddle it.
|
|
667
719
|
- **The system prompt is kept as recorded**, so a provider's prompt cache survives. One appended
|
|
668
720
|
`<workspace-move>` message tells the model the new directory, and which project instructions now
|
|
@@ -1004,7 +1056,7 @@
|
|
|
1004
1056
|
|
|
1005
1057
|
- **Preset system (PRESET-001~017):** new `@robota-sdk/agent-preset` package layering framework
|
|
1006
1058
|
assembly options into named, selectable profiles (`default`, `autonomous-builder`, `careful-reviewer`,
|
|
1007
|
-
`neutral-executor`) plus user-authored external presets loaded from
|
|
1059
|
+
`neutral-executor`) plus user-authored external presets loaded from `$PRODUCT_USER_STATE_DIR/presets/*.json`.
|
|
1008
1060
|
- **Live preset switching:** `/preset` command (list + active marker + switch) and a TUI active-preset
|
|
1009
1061
|
display. Switching live re-applies permission posture, model/effort, persona, command-module
|
|
1010
1062
|
selection, parallel-subagents gating, and a self-verification system-prompt section via the single
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @robota-sdk/agent-command
|
|
2
2
|
|
|
3
|
-
The slash-command (`/cmd`) implementations for
|
|
4
|
-
`agent-framework` runtime. The
|
|
3
|
+
The slash-command (`/cmd`) implementations for agents, as command modules you register with an
|
|
4
|
+
`agent-framework` runtime. The configured CLI builds its command set from this package; your own agent can
|
|
5
5
|
take the whole default set, a filtered subset, or individual modules.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
@@ -67,9 +67,12 @@ provides `/schedule`, `/monitor`, and `/loop`.
|
|
|
67
67
|
| Agents and work | `/agent`, `/background`, `/goal`, `/plan`, `/schedule`, `/monitor`, `/loop` |
|
|
68
68
|
| Terminal | `/shell`, `/editor`, `/keybindings`, `/theme`, `/statusline` |
|
|
69
69
|
| Project and tools | `/git`, `/memory`, `/skills`, `/mcp`, `/plugin`, `/reload-plugins` |
|
|
70
|
+
|
|
70
71
|
| Settings and state | `/settings`, `/reset`, `/user-local`, `/doctor` |
|
|
71
72
|
| Other sessions | `/peers`, `/handoff`, `/events`, `/remote-control`, `/devices` |
|
|
72
73
|
|
|
74
|
+
`/memory correct <user|feedback|project|reference> <topic> <text>` replaces **every entry** in that topic. `/memory forget <topic>` removes the source topic file and its active index entries. Both operations are user-only and block subsequent automatic or model additions to that topic; use `correct` to deliberately restore it. Project memory retains only the current replacement or a topic tombstone in `lifecycle.json`, which remains authoritative if source cleanup is interrupted. Historical transcripts and backups remain. A configured semantic backend must support `removeTopic` for these commands; an index cleanup failure is reported, while active recall continues to read current durable source content. The next model turn refreshes its retained startup memory.
|
|
75
|
+
|
|
73
76
|
`/doctor` and `/devices` are registered only when the host supplies their inputs (`doctorInputs`,
|
|
74
77
|
`devicesPort`). `/shell`, `/editor`, `/keybindings` and `/theme` belong to the terminal the user sits at:
|
|
75
78
|
a terminal attached to a workspace daemon runs them itself (see `createTerminalClientCommands`).
|
|
@@ -94,4 +97,4 @@ authority-backed store is refused explicitly.
|
|
|
94
97
|
## Documentation
|
|
95
98
|
|
|
96
99
|
- [docs/SPEC.md](./docs/SPEC.md) — package contract and per-command guarantees
|
|
97
|
-
- [CLI guide](../../content/guide/cli.md) — using the commands in the
|
|
100
|
+
- [CLI guide](../../content/guide/cli.md) — using the commands in the configured CLI
|