Repository F# setup
open System
open System.IO
open System.Threading
open System.Threading.Tasks
open Axial
open Axial.Console
open Axial.FileSystem
open Axial.PlatformService
open Axial.Process

ProcessSpec, ProcessResult, ProcessError, the DSL, and IProcess are target-neutral. A browser cannot start an operating-system process, so Process.live and native stream adapters are available only on .NET.

Fable applications can construct specifications and run them against an IProcess implementation that delegates execution to a worker or another host:

    { Process: IProcess }
    interface IHasProcess with member this.Process = this.Process

let workflow =
    Process.command $"device-tool inspect"
    |> Process.toFlow<AppEnvironment>

An interpreter returns lazy Flow<unit, ProcessError, ProcessResult> and FlowStream<unit, ProcessError, ProcessEvent> values. It must not start work while constructing those values.