plan_next_tools
What can run next, and what each next step would add. Give it a tool whose run just finished (or the output types in hand) and it returns the tools whose own declared inputs those outputs fill, each with the parameter the wire lands on, the question that tool answers, its limits, what grades it, whether it is seeded, asynchronous, writing or leaving the machine, and which of the data files it reads the run in hand already read — so a step that would re-read the same table can be told from one that brings independent evidence. Ask for a target_type and it returns the shortest chains of tools that reach it. The hand-offs are the workflow builder's own port graph, so a step it names is a wire the builder would draw.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | the tool whose run just finished — its declared outputs are what is in hand. Leave unset and give `output_types` instead. | |
| _files | No | The project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name. | |
| _subject | No | The record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several. | |
| max_steps | No | longest chain to consider when a `target_type` is given. | |
| read_only | No | keep only steps that write nothing. | |
| target_type | No | optional: the output type you want to reach. Returns the shortest chains of tools that get there. | |
| output_types | No | the port types in hand, when no single tool produced them (`sequence`, `record`, `bands`, `sites`, `protocol`, `matrix`, `series`). | |
| independent_only | No | keep only steps that read none of the data files the finished run read, so each adds its own evidence. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | how many tools can consume these outputs by their declared types | |
| paths | Yes | the shortest chains of tools reaching `target_type`, when one was asked for | |
| tools | Yes | the candidates, in catalog order: the parameter each wire lands on, the question that tool answers, its limits, what grades it, and what it reads | |
| message | Yes | what was walked, in words | |
| outputs | Yes | the types the walk started from | |
| untyped | Yes | tools declaring an untyped parameter the builder would let this be wired into — a wire the graph cannot vouch for |