omnyshell_client library
OmnyShell Client: authenticate with a Hub, discover nodes, and open exec or interactive sessions.
final client = ClientRuntime(ClientConfig(
hubUri: Uri.parse('wss://hub.example.com:8443'),
credentials: credentials,
));
await client.connect();
final result = await client.execute(nodeId: 'web-01', command: 'uname -a');
Classes
- ActiveSessionDetachRequest
- Client → Hub: detach an active (attached) session on nodeId from another connection — e.g. when a full-screen program owns the original terminal. sessionRef is an id/short-id/prefix, or empty to target the caller's sole active session. Correlated by requestId.
- ActiveSessionDetachResponse
- Hub → Client: the result of an active-session detach. Correlated by requestId.
- ActiveSessionDetachResult
- The result of ClientRuntime.detachActiveSession.
- AgentAbort
- A cooperative cancellation signal for an AgentService run.
- AgentCommandRunner
-
Runs commands the agent decides to execute, decoupling the agent loop from
the concrete transport (
ClientRuntime) so it stays browser-safe and unit-testable with a fake. - AgentEnvironment
- Facts about the target node, woven into the system prompt so the model knows what it is operating.
- AgentHandlers
- Host-side interaction hooks the agent uses to talk to the user. The CLI and the web client provide their own implementations; tests provide fakes.
- AgentPlan
- A plan the model presents (in AgentMode.plan) before executing.
- AgentPlanStep
- A single step in a proposed plan.
- AgentService
- Drives a provider-agnostic agent loop that investigates a node, plans and executes commands to accomplish a natural-language goal.
- AgentStyle
- Maps the agent's output categories to display styling.
- AiCommand
-
The
:ai $promptlocal command: drives a provider-agnostic AI agent that investigates the node, plans and executes commands to accomplish a natural-language goal, withcommand_shieldgating every command. - AiConfig
- Immutable AI configuration: which provider/model to use, the API key, the default agent mode and loop bounds.
- AiConfigDescription
-
A non-secret summary of the resolved AI configuration, used by
omnyshell ai showto report settings and where each value came from. The API key is never included — only keySet and keyFromEnv. - AiConfigIo
-
Loads and persists AiConfig from the environment and
~/.omnyshell/ai.yaml. - AiConfigRequest
- Client → Hub: ask for the Hub's default AI configuration (provider/model and agent defaults) so a browser embedder can offer "use the Hub default" without ever seeing an API key. Correlated by requestId.
- AiConfigResponse
- Hub → Client: the Hub's default AI configuration. Never carries an API key — the key stays on the Hub and is injected when proxying. available is false when the Hub has no AI provider configured. Correlated by requestId.
- AiMessage
- A single message in the conversation.
- AiModelCheck
- The outcome of validating one model with a live provider request.
- AiProvider
- A chat provider that supports tool calling.
- AiResult
- One assistant turn returned by a provider.
- AiToolCall
- A single tool invocation requested by the model.
- AiToolResult
- The outcome of executing an AiToolCall, fed back to the model.
- AiToolSpec
- A tool the model is allowed to call. parameters is a JSON-Schema object.
- AiUsage
- Token usage and latency for a single provider call.
- AnsiAgentStyle
- ANSI-colored AgentStyle for terminals.
- Authenticator
- Validates a Credential and resolves it to a Principal.
- AuthFail
- Failed authentication.
- AuthOk
- Successful authentication, carrying the resolved identity and a session token bound to this connection.
- Authorizer
- Decides whether an authenticated Principal may open a session on a node.
- AuthRequest
- A login attempt presenting a credential.
- AuthSnapshot
- The persisted auth state the login screen renders: the remembered default Hub and the list of saved logins.
- CertGenerator
- Generates the TLS certificate material an OmnyShell Hub needs to run.
- CertificateIdentity
- Extracts a stable public-key identity from an X.509 certificate.
- Channel
- One logical, bidirectional stream multiplexed over a connection.
- ChannelClose
- Tear down a channel.
- ChannelContentSource
-
An OmnyDrive
ContentSourcebacked by a node-side path reached over a drive session. - ChannelEof
- Half-close a stream (typically stdin) on the channel.
- ChannelExit
- Node → Client: the process exited.
- ChannelId
- A logical channel identifier, scoped to a single physical connection.
- ChannelMultiplexer
- Multiplexes logical Channels over a single OmnyShellConnection.
- ChannelResize
- Resize the terminal of an interactive session.
- ChannelSignal
- Deliver a POSIX signal to the session's process.
- ChannelWindow
- Backpressure credit grant for a stream on a channel.
- ClientConfig
- Configuration for a ClientRuntime.
- ClientRuntime
- An embeddable OmnyShell client: authenticates with the Hub, discovers nodes, and opens exec / interactive sessions.
- ClientTransferLink
-
A
TransferLinkbacked by a client-side RemoteSession. - Clock
-
Time source used throughout OmnyShell so tests can fix
now. - CmdShellDialect
-
Windows
cmd.exe— the degraded last resort.cmd /Qdisables command echo; initLine shrinks the prompt to>. The marker reports only the working directory (%CD%): git branch/status and privilege are omitted, sincecmdcannot compute them inline. The token is written in twoset /ppieces so it never appears verbatim in the command text. - CommandHistory
- Persistent, per-key command history backed by a plain-text file.
- CommandHistoryBuffer
- An ordered, bounded set of history entries with the shell's add rules.
- CommandHistoryStore
- A persistent command history a LineEditor can record into and navigate.
- CommandRun
- The result of running a single command on the node.
- ControlFrame
- A control message frame (carried as a WebSocket text frame).
- ControlMessage
- Base class for every structured control message.
- Credential
- A credential presented during the authentication handshake.
- CredentialProvider
-
Produces the AuthRequest a node or client sends in response to the Hub's
challenge
hello. - CredentialStore
- On-disk store of Hub logins, keyed by Hub URL, with a remembered default.
- CwdMarker
- Client-side shell integration that learns the remote working directory.
- CwdScan
- The outcome of feeding one chunk of remote stdout to a CwdMarker.
- DashboardActionResult
- The outcome of a fire-and-forget session action (detach / terminate) that the dashboard shows in its message bar.
- DashboardApp
- A full-screen TUI over the OmnyShell CLI: log in to a Hub, then work across four top-level tabs — Nodes (browse a node's info and sessions, and resume / peek / detach / terminate them), Tunnels (open / list / close), Drive (mount / sync / diff / resolve / unmount / remount) and AI (view / edit config, validate models) — without typing individual commands. Tab / Shift-Tab (or the number keys) switch tabs.
- DashboardBackend
- The capability port the DashboardApp drives.
- DataFrame
- A binary stream-data frame (carried as a WebSocket binary frame) with a fixed 10-byte header followed by the raw payload bytes.
- DetachedSessionInfo
- A user-facing view of a detached session living in a node's in-memory registry, as returned by the list API and relayed through the Hub.
- DetachedSessionKillRequest
- Client → Hub: terminate the caller's detached session sessionRef (an unambiguous id or prefix) on nodeId. Correlated by requestId.
- DetachedSessionKillResponse
- Hub → Client: the result of a detached-session kill. Correlated by requestId.
- DetachedSessionKillResult
- The result of ClientRuntime.killDetachedSession.
- DetachedSessionsRequest
- Client → Hub: list the caller's detached sessions on nodeId. Correlated to the response by requestId (a connection-level request/response RPC).
- DetachedSessionsResponse
- Hub → Client: the caller's detached sessions. Correlated by requestId.
- DetachOutcome
- The result of RemoteSession.detach: the detached session's identifiers and optional expiry, used to print the resume hint.
- DriveChanges
- The set of paths that differ between a directory mount's local copy and the node, grouped by which side changed. Produced read-only by DriveManager.conflicts — no sync or resolve is performed.
- DriveCredentialEntry
-
One masked git-credential entry returned by a
list(secrets never leave the node — description is the credential's maskedtoString). - DriveCredentialRequest
- Client → Hub: manage the caller's own git credentials on nodeId.
- DriveCredentialResponse
- Hub → Client: the result of a drive-credential operation. Correlated by requestId.
- DriveCredentialResult
-
The result of ClientRuntime.peekSession: the current screen snapshot of a
session, captured without attaching to it.
The result of a
drive credentialRPC against a node. - DriveManager
- Orchestrates OmnyDrive mounts over OmnyShell drive sessions.
- DriveRpcClient
- Issues OmnyDrive RPCs over a SessionMode.drive RemoteSession.
- Ed25519PublicKey
-
An Ed25519 public key, used to identify users and nodes in an
authorized_keys-style trust store. Equality is by key bytes. - ErrorCodes
-
Stable, machine-readable error codes carried in
errorcontrol messages and surfaced on OmnyShellExceptions. - ExecResult
- The result of a one-shot ClientRuntime.execute.
- FileDiff
- The comparison of one path between a directory mount's local copy and the node. At most one of local/origin is null (an absent side).
- FileResolveOutcome
- The outcome of resolving a single path on a directory mount.
- FrameCodec
- Encodes and decodes OmnyShellFrames to and from WebSocket events.
- GeneratedCertificates
- The paths of the TLS files produced by CertGenerator.generate.
- Hello
-
First frame after the WebSocket upgrade. The Hub sends
hellowith a single-use nonce; the peer replies with its role and capabilities. - HistoryCursor
- A reusable Up/Down navigation cursor over a CommandHistoryBuffer.
- HttpProxyRequest
- Client → Hub: make an outbound HTTPS request to an AI provider on the client's behalf (the browser cannot, due to CORS). The Hub validates the target against an allowlist, optionally injects credentials, and replies with an HttpProxyResponse. Correlated by requestId.
- HttpProxyResponse
- Hub → Client: the result of a proxied AI request. On a transport-level failure (rejected host, timeout, DNS) error is set and statusCode is 0. Correlated by requestId.
- HubAiConfig
- The Hub's advertised default AI configuration, returned by ClientRuntime.fetchHubAiConfig. Never carries an API key — the key stays on the Hub. available is false when the Hub has no default provider.
- IdeCommand
-
The
:ide [path]local command: opens a full-screen, IntelliJ/VS Code-style terminal IDE rooted atpath(default: the current directory). It shows a file-tree sidebar, tabs of open files, syntax highlighting per file type and a git-change gutter, and lets you edit and save files — all without leaving the omnyShell session. PressCtrl-Qto return to the shell. - InteractiveShellController
-
Pure Dart (no
dart:io, no DOM), so the orchestration is identical and unit-testable across the CLI, the browser, and any other embedder. - LineEditor
- A raw-mode line editor with command-history navigation.
- LocalCommand
-
A local OmnyShell command, invoked with a leading
:and never forwarded to the remote shell. - LocalCommandContext
- Runtime context passed to a LocalCommand.
- LocalCommandRegistry
-
An extensible registry of local
:commands. - LocalShellSession
- Adapts a node-side ShellSession to the transport-free ShellSessionPort the interactive terminal UI drives.
- LoginRequest
- A request to authenticate and persist a new login, built from the login form.
- MachineId
- Reads a stable, per-machine identifier provided by the operating system.
- ManifestEntry
- One file in a transfer manifest (path is POSIX-relative to the transfer root; size is the uncompressed byte length).
- MountRecord
- A persisted record of one OmnyDrive mount the client manages.
- MountStore
- On-disk registry of the client's OmnyDrive mounts.
- NodeActiveSessionDetach
- Hub → Node: detach the principal's active session sessionRef.
- NodeActiveSessionDetachResponse
- Node → Hub: the result of an active-session detach. Correlated by requestId.
- NodeCapabilities
- What a node can do, advertised to the Hub after registration and relayed to clients during discovery.
- NodeCapabilitiesMessage
- Node → Hub: advertises capabilities after registration.
- NodeDescriptor
-
A node's public description as registered with the Hub and returned by
discovery (
nodes list). Combines identity, platform, operator labels and advertised capabilities. - NodeDetachedSessionKillRequest
- Hub → Node: terminate the principal's detached session sessionRef.
- NodeDetachedSessionKillResponse
- Node → Hub: the result of a detached-session kill. Correlated by requestId.
- NodeDetachedSessionsRequest
- Hub → Node: list the principal's detached sessions. Correlated by requestId.
- NodeDetachedSessionsResponse
-
Node → Hub: the
principal's detached sessions. Correlated by requestId. - NodeDriveCredentialRequest
- Hub → Node: manage principal's git credentials. The principal is stamped by the hub from the authenticated peer; the node only ever mutates that principal's scope. Correlated by requestId.
- NodeDriveCredentialResponse
-
Node → Hub: the result of a drive-credential operation. entries carries the
masked credential list for
list. Correlated by requestId. - NodeHeartbeat
- Node → Hub: periodic liveness signal with a monotonic sequence number.
- NodeHeartbeatAck
- Hub → Node: acknowledges a heartbeat.
- NodeId
-
Stable identity of a node, used by clients to address it (instead of a
host:port). Equality is by value. - NodeListRequest
- Client → Hub: requests the list of nodes the client may see.
- NodeListResponse
- Hub → Client: the discovered nodes.
- NodeRegister
- Node → Hub: registers the node's identity and platform.
- NodeRegistered
- Hub → Node: confirms registration.
- NodeSessionDetach
- Hub → Node: detach the session on the node-side channel, on behalf of principal. Mirrors SessionDetachRequest across the relay.
- NodeSessionDetached
- Node → Hub: the session was detached and now lives in the node registry.
- NodeSessionOpen
- Hub → Node: instructs the node to start a session on a node-side channel.
- NodeSessionOpened
- Node → Hub: the node accepted and started the session.
- NodeSessionRejected
- Node → Hub: the node refused the session.
- NodeSessionScreenRequest
- Hub → Node: fetch the current screen snapshot of the principal's session sessionRef. Correlated by requestId.
- NodeSessionScreenResponse
- Node → Hub: the current screen snapshot of a session. The replayable bytes (the same a resume would paint) are base64-encoded in screenBase64. Correlated by requestId.
- NodeTunnelConnect
-
Hub → exposer (node or client): a public connection arrived; adopt channel,
dial
targetHost:targetPort, and bridge bytes. Reply with NodeTunnelConnected or NodeTunnelConnectFailed. - NodeTunnelConnected
- Exposer → Hub: the target was dialed; the Hub may relay bytes on channel.
- NodeTunnelConnectFailed
- Exposer → Hub: the target dial failed; the Hub closes the public socket.
- OmnyShellConnection
- A duplex, frame-oriented link between two OmnyShell peers.
- OmnyShellFrame
- A decoded unit travelling over a connection: either a structured control message (ControlFrame) or a binary stream payload (DataFrame).
- OmnyUid
- A deterministic, globally-stable identifier for a node or a hub.
- Ping
- Application-level keepalive request, used to measure round-trip latency and detect half-open connections.
- PlatformInfo
-
Describes the operating system and architecture a node runs on, advertised
to clients during discovery and shown by the
:infolocal command. - Pong
- Reply to a Ping.
- PosixShellDialect
-
POSIX shells (
sh,bash,zsh, Git Bash, WSL): the original protocol, unchanged. Usestrap,eval,sttyand aprintf/git/idmarker. - PowerShellDialect
-
Windows PowerShell (
pwsh/powershell). The shell reads commands from a redirected stdin (so input is never echoed); initLine silences the per-line prompt. The marker computes git status counts and the admin flag in PowerShell and writes one line directly to the console out. - Principal
- An authenticated identity, as resolved by an Authenticator.
- PrincipalId
- Identity of an authenticated principal (a user or a node account) as known to the Hub. Equality is by value.
- ProgressBar
- A single-line, carriage-return progress bar for file transfers.
- ProtocolError
- A connection- or channel-level error.
- PtySpec
- Requested pseudo-terminal geometry for an interactive shell.
- PublicKeyCredential
- An Ed25519 public-key credential: the client proves possession of the private key by signing the connection challenge.
- PublicKeyCredentialProvider
- A CredentialProvider that signs the connection nonce with an Ed25519 private key.
- RemoteSession
- A client-side handle to one open session on a node.
- RoleBasedAuthorizer
- A role-based Authorizer with a small, predictable policy:
- SavedLogin
- A login already saved in the local credential store, shown so the dashboard can reconnect with one keystroke instead of retyping credentials.
- ScreenModeDetector
- Detects when the remote terminal switches into or out of the alternate screen buffer, by watching the output byte stream for the DEC private-mode sequences full-screen programs emit:
- Session
- A domain view of a brokered session: who opened it, on which node, in what mode, and its current state and exit code.
- SessionCommandResult
- The captured result of running a command in the host's interactive session (see LocalCommandContext.runInSession).
- SessionDetached
- Hub → Client: the session was detached; resume it later by shortId.
- SessionDetachRequest
-
Client → Hub: detach the live session on channel, keeping the node-side
PTY/shell/processes running. Optional timeoutSeconds schedules automatic
cleanup;
nullkeeps the session indefinitely. - SessionId
- Unique identity of a brokered session, minted by the Hub when a session is opened. Equality is by value.
- SessionOpen
- Client → Hub: opens a session on a node over a new client channel.
- SessionOpened
- Hub → Client: the session is open.
- SessionRejected
- Hub → Client (or Node → Hub via NodeSessionRejected): the session could not be opened.
- SessionScreenRequest
- Client → Hub: fetch the current screen snapshot of the caller's session sessionRef (active or detached) on nodeId, without attaching to it. Correlated by requestId.
- SessionScreenResponse
- Hub → Client: the current screen snapshot of a session. Correlated by requestId.
- SessionScreenResult
- ShellBackend
- Starts ShellSessions on a node in response to authorized session opens.
- ShellDialect
-
Generates the shell-specific text the interactive
connect/resumeloop sends to a remote shell: a one-time init line, the per-command wrapper, and the prompt-completion markers. - ShellPromptState
- The remote shell's prompt context, reported to the host when the shell returns to its (idle) prompt so the host can render a prompt line.
- ShellRequest
- A request to start a process or interactive shell on a node.
- ShellRunResult
- Drives a ShellSessionPort as an interactive shell, terminal-agnostically.
- ShellSession
- A running process or shell on the node, with byte streams wired to the session channel.
- ShellSessionPort
- The minimal session surface an InteractiveShellController drives.
- StoredSession
- A persisted login to a single Hub.
- SyncOutcome
- The outcome of a synchronization, surfaced to the CLI.
- SyncProgressBar
- A live, multi-line progress view for OmnyDrive sync transfers.
- SystemClock
- The default Clock, backed by the system wall clock (UTC).
- TokenCredential
- A bearer-token credential, validated against a token store. Relies on TLS for secrecy in transit.
- TokenCredentialProvider
- A CredentialProvider that presents a bearer token.
- TransferPreflight
- Snapshot handed to a confirmation hook once both ends know the manifest and resume state, but before any file is written or any data flows.
- TransferProgress
- Progress notification emitted while a transfer runs.
- TransferResult
- The outcome of a completed transfer.
- TunnelCloseRequest
- Client → Hub: close the caller's tunnel tunnelRef (a full id or unambiguous prefix). Correlated by requestId.
- TunnelCloseResponse
- Hub → Client: the result of a tunnel close. Correlated by requestId.
- TunnelCloseResult
- The result of ClientRuntime.closeTunnel.
- TunnelHandle
- A handle to an open tunnel returned by ClientRuntime.openTunnel.
- TunnelInfo
- A user-facing view of an active TCP tunnel held by the Hub, as returned by the list API and relayed to the owning client.
- TunnelListRequest
- Client → Hub: list the caller's active tunnels. Correlated by requestId.
- TunnelListResponse
- Hub → Client: the caller's active tunnels. Correlated by requestId.
- TunnelOpened
- Hub → Client: the tunnel is open and listening. Correlated by requestId.
- TunnelOpenRequest
-
Client → Hub: open a tunnel that exposes
targetHost:targetPort(reachable by nodeId, or the requesting client's own machine when nodeId is the@localsentinel) on a public Hub port. When publicPort is set the Hub validates it against its configured range; otherwise the Hub allocates a free port in range. Correlated by requestId. - TunnelRejected
- Hub → Client: the tunnel was refused. Correlated by requestId.
- UidComputer
- Computes deterministic OmnyUids from identity material.
- UidResolution
- The outcome of resolving an entity's UID against its persisted value.
- UidStore
-
Persists an entity's UID under
~/.omnyshell/<fileName>and detects changes.
Enums
- AgentMode
- How much autonomy the AI agent has when it wants to run a command.
- AgentPhase
- Which phase of the agent loop a model request belongs to, used to pick the model via AiConfig.modelFor.
- AiProviderKind
- The AI provider an AiConfig talks to.
- AiRole
- The author of an AiMessage.
- AiStopReason
- Why the model stopped this turn.
- ArchiveFormat
- A supported download archive format.
- CommandConfirm
- The user's answer at a command-confirmation prompt.
- DataOpcode
-
The stream a binary data frame belongs to, encoded as the
msgTypebyte of the data-frame header. - DriveSyncDirection
-
The direction of a one-shot drive sync requested from the dashboard, mapped
by the backend onto OmnyDrive's
SyncDirection(so the port stays free of thepackage:omnydrivedependency). - FileDivergence
-
Which side of a mount moved off the baseline for a given path. Drives how a
difference is described and how
drive syncwould reconcile it. - HttpProxyCredentialMode
- How the Hub should authenticate a proxied AI request.
- LoginMethod
- How a login authenticates to a Hub.
- PlanApproval
- The user's verdict on a presented plan.
- SessionMode
- How a session runs on the node.
- SessionState
- Lifecycle state of a session as tracked by the Hub.
- ShellFamily
- The command-language family of a node's interactive shell.
Extensions
- AiCommands on LocalCommandRegistry
-
Registers the
:aicommand on a LocalCommandRegistry for the native CLI. - FileTransferCommands on LocalCommandRegistry
-
Registers the file-transfer and OmnyDrive local commands —
:download,:uploadand:drive— on a LocalCommandRegistry. - IdeCommands on LocalCommandRegistry
-
Registers the
:idefull-screen editor command on a LocalCommandRegistry.
Constants
- kAiProxyElapsedMsHeader → const String
- Response header the Hub proxy sets to report the upstream provider request duration in milliseconds.
- kDefaultGzipLevel → const int
- Default GZip compression level for transfers (1=fast … 9=best).
- kMinProtocolVersion → const int
- The lowest protocol version this build can interoperate with.
- kProtocolVersion → const int
- The wire protocol version implemented by this package.
- omnyShellVersion → const String
-
The canonical OmnyShell package version (kept in sync with
pubspec.yaml).
Functions
-
aiRequestMs(
Map< String, String> headers, int localMs) → int -
The request duration to record for a provider call: the Hub-reported upstream
time from kAiProxyElapsedMsHeader when present (proxied requests), otherwise
the locally measured
localMs. -
aiTokenCount(
Object? value) → int -
Coerces a JSON value (provider usage counts may arrive as
intornum) into a non-negative token count, returning0fornull/unexpected types. -
archiveError(
ArchiveFormat format, {required bool isDir}) → String? -
Validates
formatagainst whether the sourceisDir, returning an error message to show the user, ornullwhen the combination is allowed. -
archiveExtension(
ArchiveFormat format) → String -
The file extension (without a leading dot) for
format. -
defaultModelFor(
AiProviderKind provider) → String -
The default model for
providerwhen neither the user, env, norai.yaml(CLI) or the Hub (web) specified one. -
downloadPath(
{required ClientRuntime client, required String nodeId, required String remotePath, required String localDest, bool destIsDir = false, int gzipLevel = kDefaultGzipLevel, void onProgress(TransferProgress)?, Future< bool> confirm(TransferPreflight)?}) → Future<TransferResult> -
Downloads
remotePathfromnodeIdto the locallocalDest(a directory to write into, or an explicit target path — seeFileTransferEngine.runReceiver;destIsDirforces directory mode), resuming any partial files and verifying each file's SHA-256. -
formatDriveChanges(
DriveChanges c, {required String mountId}) → String -
Renders a DriveChanges for
omnyshell drive conflicts: the diverging paths grouped by which side changed, with true conflicts first.mountIdtags the header. -
formatFileDiff(
FileDiff d) → String -
Renders a FileDiff for
omnyshell drive diff: a size/hash header for each side, then a unified line diff (-local,+remote) when both sides are small text. Big or binary files fall back to the header alone. -
formatShellPrompt(
{required String principal, required String node, required String cwd, String? branch, String? gitStatus, String? privilege, bool color = true, int width = 0}) → String -
Formats the interactive shell prompt —
user@node:cwd (git) $— shared by the native CLI connect loop and web clients so the prompt looks the same everywhere. Pure string assembly with no I/O, so it compiles to JavaScript. -
formatSyncProgress(
ProgressEvent e) → String? -
Formats a sync
ProgressEventas a per-path status line for in-session display above the prompt, ornullwhen there is nothing useful to show. -
formatSyncReport(
SyncOutcome o, {bool verbose = false}) → String -
Builds the final report for a completed sync
o— a one-line summary of file counts and raw vs on-wire bytes, e.g.Synced push: 12 transferred, 3 copied · 4.1 MB (1.2 MB on wire).Whenverbose, appends one line per path (+transferred,=copied,-removed). Mirrors the wording of:drive/omnyshell driveso the CLI and in-session paths read the same. -
ioConnectionFactory(
{SecurityContext? securityContext, bool onBadCertificate(X509Certificate cert, String host, int port)?, Duration? pingInterval}) → ConnectionFactory -
Builds a
dart:ioConnectionFactory with explicit TLS trust overrides. -
isProtocolCompatible(
int remoteVersion, {int? remoteMin}) → bool -
Whether a peer advertising
remoteVersion(with optionalremoteMin) is compatible with this build. -
launchesForegroundProgram(
String line) → bool -
Whether
linelaunches an interactive foreground program that should take over the terminal (so the client switches to raw passthrough). -
localCompletionCandidates(
ShellBackend backend, ShellDialect dialect, String word, {required bool isCommand, required ShellFamily family, String? cwd, Duration timeout = const Duration(seconds: 4)}) → Future< List< String> > -
Generates TAB-completion candidates for
wordby running thedialect's completion command as a one-shot SessionMode.exec on a localbackend, reading its stdout to EOF. -
mayChangeCwdOrGit(
String line) → bool -
Whether
linecould change the working directory or git state, and thus warrants a prompt refresh (the marker). -
newId(
) → String - Generates a new globally-unique identifier (UUID v4).
-
newSecureToken(
[int byteLength = 32]) → String -
Returns
byteLengthcryptographically secure random bytes encoded as a URL-safe, unpadded base64 string. -
parseArchiveFlag(
String arg) → ArchiveFormat? -
Parses a
--…compression flag into an ArchiveFormat, ornullifargis not a recognised compression flag. -
parseStatLines(
String stdout) → List< StatEntry> -
Parses the
TYPE|SIZE|PATHlines emitted by the node'sfind/statrun. -
providerFor(
AiConfig config, Client client) → AiProvider -
Builds the AiProvider matching
config's provider kind, sharingclientfor all requests. -
remoteArchiveCommand(
String src, {required ArchiveFormat format, required bool isDir}) → String -
Returns a POSIX
shcommand that builds an archive ofsrc(a file or directory perisDir) informatand prints the resulting temporary archive path as its only stdout line. -
remoteCompletionCommand(
String word, {required bool isCommand}) → String -
Returns a POSIX
shcommand that prints completion candidates forword, one per line. WhenisCommandis true the word is in command position. -
renderTree(
String root, List< StatEntry> entries, {required int maxDepth}) → List<String> -
Renders
entries(rooted at the start pointroot) as atree-style listing: each line carries the aggregated size, directories are listed first, and subtrees deeper thanmaxDepthare collapsed (their line still reports the full aggregate).maxDepth == 0means no depth limit. -
resolveDirMountFilter(
{required String localDir, PathFilter? explicit, String? ignoreFileName}) → Future< PathFilter?> -
Resolves the effective
PathFilterfor a directory mount, mirroringomnydrive publish's.omnyignorehandling. -
shortId(
String id, [int length = 8]) → String -
Derives a short, human-friendly handle from a full
id. -
uploadPath(
{required ClientRuntime client, required String nodeId, required String localPath, required String remoteDir, int gzipLevel = kDefaultGzipLevel, void onProgress(TransferProgress)?, Future< bool> confirm(TransferPreflight)?}) → Future<TransferResult> -
Uploads the local
localPathtoremoteDironnodeId, resuming any partial files; the node verifies each file's SHA-256 and reports failure via the session exit code. -
validateModels(
AiProvider provider, List< String> models) → Future<List< AiModelCheck> > -
Validates
modelsagainstproviderby sending a minimal, tool-free request per model — confirming the API key works and each model id is accepted. Errors are captured per model rather than thrown, so one bad model does not hide the others.
Typedefs
-
ConnectionFactory
= Future<
OmnyShellConnection> Function(Uri uri, {Map<String, String> ? headers}) -
Opens a transport connection to
uri, returning a connected OmnyShellConnection. -
ControlDecoder
= ControlMessage Function(int? channelId, Map<
String, dynamic> data) -
Decodes a control-message payload (the envelope
d) for a registered type. - DriveProgress = void Function(ProgressEvent event)
-
Sink for live sync progress, fed omnydrive
ProgressEvents as each file is uploaded/downloaded (directory mounts) or as a git push/clone advances. - OmnyShellClient = ClientRuntime
- Friendly alias for ClientRuntime, the embeddable OmnyShell client.
- StatEntry = ({bool isDir, bool isLink, String path, int size})
-
A single
find … -exec stat …entry: its absolutepath, bytesizeand whether it is a directory or a symlink (leaf; never followed).
Exceptions / Errors
- AiProviderException
- Thrown when a provider request fails (network, auth, malformed response).
- AuthException
- Authentication failed: credentials missing, malformed or rejected.
- AuthorizationException
- The authenticated principal is not permitted to perform the action.
- CertGeneratorException
- Thrown when certificate generation cannot complete.
- ChannelException
- A logical channel was closed or referenced after teardown.
- DriveConflictException
- Raised when an automatic sync cannot proceed because both sides changed.
- DriveException
- A general drive-management error surfaced to the CLI.
- DriveRpcException
- Raised when a drive RPC returns an error response.
- The requested node is unknown or offline.
- OmnyShellException
- Base type for every expected, classified failure raised by OmnyShell.
- OmnyShellTimeoutException
- An operation exceeded its deadline.
- ProtocolException
- A frame could not be decoded, or a message violated the protocol.
- SessionRejectedException
- A session could not be opened (rejected by the Hub or node).
- TransferException
- Thrown when the transfer stream ends or is malformed mid-protocol.
- TransportException
- The underlying transport failed or closed unexpectedly.
- TunnelRejectedException
- A tunnel could not be opened (rejected by the Hub).