Skip to content

v2.0.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@mhmdiaa mhmdiaa released this 11 Apr 16:13
c9796e4

🚨 Breaking Changes & Deprecations

Deprecated Positional space/project/workflow Arguments

Always use flags instead for clarity and consistency.

trickest get "Playground/My Project/My Workflow"

becomes

trickest get --space "Playground" --project "My Project" --workflow "My Workflow"

execute Command's YAML Config

machines is a Simple Integer

The CLI will automatically infer the machine type based on the fleet you're using to run the workflow.

machines:
  default: 10

is simplified to

machines: 10

Script Inputs Follow the Same Dot Notation as Tool Inputs

custom-script-1:
  file:
      - my_file.txt

becomes

custom-script-1.file: file.txt

or

custom-script-1.file:
  - file1.txt
  - file2.txt

Deprecated Single-Tool Workflow Creation

Workflows now need to be created directly on the platform using the visual editor. Add all the necessary nodes and configurations there before executing them via the CLI.

--create-project Replaced with --create-missing

The trickest execute command's --create-project flag has been removed. Use --create-missing instead—it will automatically create both the space and project if they don’t already exist.

✨ Major Features

📝 Automatically Generated Workflow Help

If you're using a workflow for the first time, run the trickest help command to get an example command, along with details on inputs, outputs, recommended machine counts, and the author's notes.

If you're the workflow author, just add your tips and notes to the workflow's README section—everything else, like inputs and outputs, is filled in automatically.

trickest help --url "https://trickest.io/editor/..."
trickest-help

🕵 Workflow Investigation

The new trickest investigate command helps you track exactly what was happening in a workflow during a specific time range. It will show you which sub-job (or sub-job iterations in the case of distributed file-splitter nodes) were active, how long they ran, and the IP addresses they used.

trickest investigate --url "https://trickest.io/editor/..." --from 13:00 --to 13:30
trickest-investigate

🔗 Input Aliases for Workflow Inputs

You no longer have to dig through workflows to remember node IDs and parameter names. Now, you can set input aliases right in the workflow editor and use them to easily reference your input nodes.

What used to look like this:

cat config.yaml
inputs:
  enum-subdomains-1.domain: example.com

trickest execute --config config.yaml

Now, you can do with:

trickest execute --input "domain=example.com"

✅ Workflow Run Health Checks

📊 Task Group Analysis

The new --analyze-task-groups flag of the trickest get command calculates stats on distributed nodes. It includes the number of iterations created, their status breakdown (e.g. succeeded, running, stopped), the maximum and minimum durations of any iteration, the median duration, outliers from the median, and the median absolute deviation.

NODE                                                                          STATUS     DURATION   OUTPUT
⛔ custom-script (custom-script-1)                                            stopped    15m 50s    no outputs
├── Task Group Info
│   ├── 3 tasks
│   │   ├── 2 succeeded (66.67%)
│   │   └── 1 stopped (33.33%)
│   └── Task Duration Stats
│       ├── Max: 15m 44s (task 3)
│       ├── Min: 6s (task 2)
│       ├── Median: 6s
│       │   └── Median Absolute Deviation: 1s
│       └── Outliers
│           └── Task 3: 15m 38s slower than median (duration: 15m 44s)

⏱️ Average Duration and Run Insights

The trickest get command will show the average duration of the workflow to give you a rough idea of how long you should expect it to take, and shows how many sub-jobs ended up in each state (succeeded, running, failed, etc).

Name:              My Workflow
Status:            RUNNING
Machines:          25
Fleet:             Managed fleet

Created:           Wed, 11 Apr 2025 13:32:33 EET (2h 30m ago)
Started:           Wed, 11 Apr 2025 13:32:34 EET (2h 29m ago)

Duration:          2h 29m
Average Duration:  2h 50m

Total Jobs:        10
Succeeded:         8/10 (80.00%)
Running:           2/10 (20.00%)

🦾 Enriched JSON Output

The JSON output of the trickest get command now includes detailed information about sub-jobs (including task group analysis!). Automated health checks can use this to get the full context of a workflow run.

{
    "run_insights": {
        "total": 10,
        "succeeded": 8,
        "stopped": 2
    },
    "subjobs": [
        {
            "label": "custom-script",
            "name": "custom-script-1",
            "status": "stopped",
            "task_group": true,
            "task_count": 3,
            "children": [
                {
                    "name": "custom-script-1",
                    "status": "succeeded",
                    "duration": "0m 5s",
                    "ip_address": "1.2.3.4",
                    "task_index": 1
                },
                {
                    "name": "custom-script-1",
                    "status": "succeeded",
                    "duration": "0m 6s",
                    "ip_address": "5.6.7.8",
                    "task_index": 2
                },
                {
                    "name": "custom-script-1",
                    "status": "stopped",
                    "duration": "15m 43s",
                    "ip_address": "9.10.11.12",
                    "task_index": 3
                }
            ],
            "task_group_stats": {
                "count": 3,
                "status": {
                    "succeeded": 2,
                    "stopped": 1
                },
                "min_duration": {
                    "task_index": 2,
                    "duration": "0m 5s"
                },
                "max_duration": {
                    "task_index": 3,
                    "duration": "15m 43s"
                },
                "median": "0m 5s",
                "median_absolute_deviation": "0m 1s",
                "outliers": [
                    {
                        "task_index": 3,
                        "duration": "15m 43s"
                    }
                ]
            }
        }
    ]
}

🐛 Bug Fixes

  • Fixed a bug where inputs referencing module nodes weren't being written to the workflow properly.
  • Fixed a bug where the trickest get command's workflow tree view incorrectly displayed nodes that weren't executed due to a stopped earlier node as pending instead of stopped.

🛠️ Improvements

Workflow Execution

  • New --input flag lets you set inputs directly from the command, without needing a YAML config file.
  • TRICKEST_USE_STATIC_IPS=true environment variable enables static IP addresses globally.
  • The --fleet flag is now optional and defaults to Managed fleet.
  • You can use input node IDs (e.g. string-input-1) or aliases to set workflow inputs.

YAML Config

  • The inputs and outputs fields are now singular (input and output) to match the flags. Plural forms are still supported for backward compatibility.
  • The input field supports setting a single input or multiple inputs for the same node parameter.
  • The output field supports a single string value in addition to a list.

Private Integrations

  • trickest tools and trickest scripts support both --name and --id flags, so you can update or delete a tool/script by either name or ID.

Project Workflows Listing

  • When you list a project, it shows the workflows within the project, along with the project's details.

Error Handling

  • Errors are handled gracefully and return a standardized exit code of 1 consistently. #116
  • Errors are consistently logged to stderr.
  • More descriptive error messages throughout.

Misc

  • --version flag displays the CLI version.
  • Improved Go package structure. If you're building integrations, navigation is smoother now. Documentation for using it as a library is on the way. Let us know your integration use cases so we can make sure they're covered!