Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -440,3 +440,5 @@ See [authoring contract and style ownership](docs/AUTHORING_AND_LIVE_UI.md), [wo
[Dialog, Confirmation Dialog, Popover, Progress Bar and Toast](docs/UI_COMPONENTS.md) offer separate HTML composition and scoped frontend controllers. See the [generated API reference](docs/UI_COMPONENT_API.generated.md) and [component example](examples/14-sdk-ui-components.ts).

The [authoring components guide](docs/AUTHORING_COMPONENTS.md) covers persistent alerts, scoped toast queues, async action buttons, tabs, disclosures/accordions and the generated static preview gallery.

Interactive SSH PTY sessions and opt-in X11 forwarding are documented in [SSH terminals](docs/SSH_TERMINALS.md), with an [FDO host wiring handoff](docs/FDO_HOST_TERMINAL_X11_HANDOFF.md). These require a compatible host adapter; existing noninteractive execution is unchanged.
4 changes: 4 additions & 0 deletions docs/FDO_HOST_REMOTE_COMMANDS_HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@ The identifiers `settings` and the surrounding handler are supplied by the plugi
## Acceptance checks in FDO

Verify fresh initial status, heartbeat loss, reconnect, stale UI and teardown without shell probes. Test missing grants, cross-plugin IDs, revocation during monitoring/execution, pinned-key mismatch and credential rotation. Confirm output arrives before completion; exercise stdout/stderr ordering, split and malformed UTF-8, exact combined caps, truncation, slow/no consumers and commands that exceed deadlines. Test cancel before/after completion, timeout, disconnect and view closure; ensure no command retry and no false termination claim. Exercise missing/unwritable roots, disk full, flush rejection, later recovery and restart persistence. Test packaged Windows/macOS/Linux SSH without an external SSH executable. SDK mock tests cannot establish host/network integration.

## Interactive sessions are a separate flow

Use [the terminal and X11 host handoff](./FDO_HOST_TERMINAL_X11_HANDOFF.md) to add PTY sessions. Keep this document’s reviewed noninteractive execution unchanged; arbitrary terminal input requires explicit interactive authorization and independent view/forwarding cleanup.
127 changes: 127 additions & 0 deletions docs/FDO_HOST_TERMINAL_X11_HANDOFF.md

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions docs/INJECTED_LIBRARIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,3 +467,7 @@ export default class SplitPanelPlugin extends FDO_SDK {
- [FontAwesome Icons](https://fontawesome.com/icons)
- [Split Grid Documentation](https://github.com/nathancahill/split/tree/master/packages/splitjs)
- [ACE Editor Documentation](https://ace.c9.io/)

## Terminal emulator availability

No terminal emulator is currently guaranteed by this injection contract. ACE and FDO build-output components cannot emulate a PTY. [Interactive SSH](./SSH_TERMINALS.md) specifies a proposed host renderer wrapper that requires new host wiring; it is not an installed global.
6 changes: 4 additions & 2 deletions docs/SECRETS_AND_SSH.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Declare permissions through the existing `declareCapabilities()` hook. Declarati
| `secrets.consume` | Allow an authorized host service to consume a referenced secret (requires `secrets.use`) |
| `ssh.use` | Base permission to access SSH services; grants no operation by itself |
| `ssh.exec` | Execute a remote command on an authorized host profile |
| `ssh.terminal.open` | Open a PTY shell with separately approved arbitrary input; requires secret consumption grants and host interactive profile consent |
| `ssh.x11.forward` | Additionally authorize a selected X11 mode; display and cookies stay host-owned |
| `ssh.status.watch` | Monitor authenticated SSH reachability with freshness; also requires secret consumption grants |
| `ssh.profiles.list` | List authorized SSH command profile IDs and labels, plus optional host, port, username, authentication type and trusted host-key fingerprint; excludes credentials, secret references and command policies |

Expand Down Expand Up @@ -71,7 +73,7 @@ Profiles belong to the host. The exported `SSHConnectionProfile` describes an id

The host should bundle `ssh2`, so users need no installed SSH executable on Windows, macOS or Linux. Remote command syntax still depends on the remote shell. A command string is shell input: do not concatenate untrusted input. The host must apply its own command policy and reject unauthorized targets and commands. Do not automatically retry commands that might have already executed.

This initial API supports buffered execution. Interactive terminals, SFTP, forwarding, agent integration, streaming events and explicit caller cancellation are future extensions. The host must enforce deadlines and dispose channels/connections on worker teardown. Closing a channel does not guarantee the remote process has stopped.
This initial API supports buffered execution. Interactive PTY terminals and optional X11 forwarding now have separate additive adapters and grants; see [Interactive SSH](./SSH_TERMINALS.md). SFTP and agent integration remain outside this API. The host must enforce deadlines and dispose channels/connections on worker teardown. Closing a channel does not guarantee the remote process has stopped.

## Live connection status and command execution

Expand Down Expand Up @@ -149,7 +151,7 @@ Existing plugins need no changes unless adopting the new services. Adopting plug

Older hosts can continue running existing plugins, but cannot execute the new service APIs until their backend transport is installed. New capabilities must be recognized by the host's capability parser and consent UI. The current SDK handshake does not advertise host readiness for these services: a new SDK version or successful SDK handshake alone is insufficient. Before enabling feature UI, the host must provide its own readiness/availability signal or handle unavailable service calls explicitly. Do not silently fall back to plaintext storage or unrestricted system SSH.

Release notes must distinguish the implemented SDK facade and protocol from the required FDO host encryption/network implementation. Current FDO hosts can reuse profiles through the existing Git operator API. No dedicated Git client, transport helper or new Git permission family ships inside this SDK package; these host features require a compatible FDO version. Interactive SSH, SFTP and agent forwarding remain outside v1. Streaming events, cancellation and connection monitoring use the optional live adapters documented above; they do not change the buffered v1 request/reply actions. End-to-end cross-platform claims require packaged host verification.
Release notes must distinguish the implemented SDK facade and protocol from the required FDO host encryption/network implementation. Current FDO hosts can reuse profiles through the existing Git operator API. No dedicated Git client, transport helper or new Git permission family ships inside this SDK package; these host features require a compatible FDO version. Interactive SSH and optional X11 use the separate adapter documented in [Interactive SSH](./SSH_TERMINALS.md); SFTP and agent forwarding remain outside v1. Streaming events, cancellation and connection monitoring use the optional live adapters documented above; they do not change the buffered v1 request/reply actions. End-to-end cross-platform claims require packaged host verification.

Use the repository's Release Please workflow for the version and changelog update. A conventional `feat` commit describes the additive feature; do not mark it as a breaking change or manually promise Git integration in the release title. The safe profile metadata fields are an additive extension to the SDK 1.8 service contract; older hosts returning only id/label remain compatible. Let Release Please determine the actual next version from the release baseline and commit history.

Expand Down
Loading
Loading