sig
  type t
  val v :
    ?log:string ->
    ?ctx:As_ctx.t ->
    ?inputs:As_path.t list ->
    ?outputs:As_path.t list -> As_acmd.t list -> As_action.t
  val ctx : As_action.t -> As_ctx.t
  val inputs : As_action.t -> As_path.t list
  val outputs : As_action.t -> As_path.t list
  val cmds : As_action.t -> As_acmd.t list
  val args : As_action.t -> As_args.t
  val log : As_action.t -> string option
  val products : As_action.t -> As_path.t list
  val add_cmds :
    [ `After | `Before ] -> As_acmd.t list -> As_action.t -> As_action.t
  val add_ctx_args : As_ctx.t -> As_args.t -> As_action.t -> As_action.t
  val pp : As_conf.t -> Format.formatter -> As_action.t -> unit
  val list_inputs : As_action.t list -> As_path.t list
  val list_outputs : As_action.t list -> As_path.t list
  val list_products : As_action.t list -> As_path.t list
  val symlink : (As_path.t -> As_path.t -> As_action.t) As_conf.value
end