Repository F# setup
open System
open System.IO
open System.Threading
open System.Threading.Tasks
open Axial
open Axial.Layers
open Axial.Console
open Axial.FileSystem
open Axial.Hosting
open Axial.Hosting.Browser
open Axial.Hosting.Node
open Axial.HttpClient
open Axial.PlatformService
open Axial.Process
open Axial.State
open Axial.Telemetry
open Axial.Telemetry.JavaScriptOpen Axial.Process.DSL for command-line-shaped authoring:
open Axial.Process.DSL
let workflow =
cmd $"device-tool connect {deviceId}"
|> cwd workspace
|> env "DEVICE_MODE" "service"
|> timeout (TimeSpan.FromSeconds 30)
|> captureInterpolation holes remain individual native arguments. They are not concatenated into shell source. Mark sensitive values explicitly:
let workflow =
cmd $"device-tool authenticate {secret token}"
|> captureUse bash, sh, or pwsh when shell syntax is required. Interpolated values are passed out of band as positional arguments:
let workflow =
bash $"printf '%s' {value} | tr '[:lower:]' '[:upper:]'"
|> captureThe DSL's execution verbs are run, capture, console, and stream. capture selects complete stdout and stderr capture before running. console forwards both channels while retaining structured completion data. stream yields ProcessEvent values.
At a command-line host boundary, Script.run console workflow executes against live services, prints a typed process failure through the supplied console service, and returns a host exit code.

