// workflows/new

Build a workflow.

Pick the capabilities, say where each field gets its value, and run it before you save it. Building one costs nothing: what an account changes is where it is kept. Every rule the server enforces is checked here as you type, so saving cannot fail for a reason you could not see.

This is the "From a YAML config to TypeScript types" example with its sample values filled in. It is not saved yet: change anything, test it, then save it as your own.
· What it is called
· What it asks for

Declare a value here when it changes from run to run. Steps read it by its key. Anything that never changes belongs in the step itself as a fixed value, not here. A workflow may declare up to 10 inputs, and none at all is fine.

· What it does

Steps run top to bottom, one after another. A step can use a fixed value, one of the inputs above, or the output of any step above it. Up to 12 steps.

Every one of its 2 steps is pure computation, so a test run in the builder happens on your own machine and costs nothing. Your input is not sent to us for it.

Run from your saved workflows, from your code or from an assistant, the work happens on our machines and is metered: 2 credits, one call per step across 2 steps.

Adding a step that needs our side, meaning anything touching a key we hold, a database, the network or a file, would move the whole run onto our servers and it would be charged there too.

· Step 1 of 2 · 1 credit

YAML to JSON

Parse YAML text and return both the value and its JSON text. Reads maps, lists, inline [lists] and {maps}, quoted and block scalars and comments. Anchors, aliases, merge keys, tags and multi-document files are not supported and are reported with the line number.

Reads: yaml from input "yaml"

Gives back:value objectjson text, usable by every step below as “Output of an earlier step”
· Where each field comes from
yaml (required)Text (String)

The YAML text to parse, one document. Example: name: ToolForte tags: - fast - free port: 8080

indent (optional)Number

Spaces per level in the JSON text, 0 to 8. 0 gives minified JSON. Defaults to 2. Example: 2

Left out. The capability will use its own default.

What this step gives back
{
  "value": {
    "name": "ToolForte",
    "tags": [
      "fast",
      "free"
    ],
    "port": 8080
  },
  "json": "{\n  \"name\": \"ToolForte\",\n  \"tags\": [\n    \"fast\",\n    \"free\"\n  ],\n  \"port\": 8080\n}"
}

A later step reading this one can take the whole object, or a path into it such as value.

· Step 2 of 2 · 1 credit

JSON to TypeScript

Derive TypeScript interfaces from a JSON sample. Nested objects become their own interfaces named after their key, arrays become typed arrays (a union when the items differ), null stays null, and properties can be made optional or readonly.

Reads: json from "json" of Parse YAML · rootName from input "rootName"

Gives back:typescript textdeclarations number
· Where each field comes from
json (required)Text (String)

A JSON sample to derive the types from, as a string. Example: {"id":1,"name":"Ada","address":{"city":"Utrecht"},"tags":["a","b"]}

Takes text from “Parse YAML, for example { "name": "ToolForte", "tags": [ "fas....
rootName (optional)Text (String)

Name of the top-level interface or type. Defaults to "Root". Example: User

exportInterfaces (optional)Yes/no (Boolean)

Prefix every interface with "export". Defaults to true. Example: true

Left out. The capability will use its own default.

optionalProps (optional)Yes/no (Boolean)

Mark every property optional with "?". Defaults to false. Example: false

Left out. The capability will use its own default.

readonlyProps (optional)Yes/no (Boolean)

Mark every property "readonly". Defaults to false. Example: false

Left out. The capability will use its own default.

What this step gives back
{
  "typescript": "export interface Address {\n  city: string;\n}\n\nexport interface User {\n  id: number;\n  name: string;\n  address: Address;\n  tags: string[];\n}",
  "declarations": 2
}

A later step reading this one can take the whole object, or a path into it such as typescript.

· Test it before you save

This runs the workflow exactly as written, without saving it. It uses the real capabilities, so what you see is what a later run will do. Inputs are prefilled from the examples you gave them.

Stays on your device

This runs in your browser. What you put in is never sent to ToolForte, so we could not read it if we wanted to.

One exception, so the sentence above stays true: when a run finishes here we record that it happened, which ready made workflow it came from if it came from one, how many steps it had and how long it took. Never what you put in, never what came back, and never anything written into the steps themselves. It is how we can tell which tools are worth keeping.

Runs in your browser. No credits, nothing sent to us.
Saved in this browser

This is saved by your browser on this device. It is not sent to ToolForte, so it is not on your other devices and we cannot recover it for you.

Clearing your browser data removes it, and so does the delete button here.

Leave without savingUnsaved changes.