Summary
tool-runner-js relies on an outdated tool-spec. It uses parameters.json with a flat structure, mixes file inputs into parameters as type: file, and has no data section. No tools use this format anymore. This issue tracks aligning with the current spec.
Current (Outdated) Behavior
- Input file:
parameters.json (spec says input.json; ecosystem uses inputs.json)
- Structure: Flat
{toolName: {param: value, ...}} – no separation of parameters and data
- ToolConfig: Only
parameters; no data field
- File inputs: Handled via
type: file in parameters (asset-like)
- Environment:
PARAM_FILE=/in/parameters.json, RUN_TOOL
Current Spec (tool-specs)
- Input file:
/in/input.json or /in/inputs.json
- Structure:
{toolName: {parameters: {...}, data: {...}}} – parameters and data separated
- tool.yml:
parameters block for config args; data block for input files (with extension, description)
- File inputs: Declared in
data section; referenced by name in input file
Required Changes
- Input filename: Write
inputs.json (or support both; gorun and tool-runner use inputs.json)
- ToolConfig: Add
data field – List<string> | Dict<string, DataConfig> (name-only list or dict with extension, description)
- Input structure: Produce
{toolName: {parameters: {...}, data: {name: "/in/path"}}}
- Parameter handling: Remove
type: file special casing; file inputs belong in data
- Spec parsing: Parse
data from tool.yml (support both list and dict formats per input.md)
- Parameter building: Split user input into parameters vs data; validate each against spec
Tasks Checklist
Reference
Summary
tool-runner-js relies on an outdated tool-spec. It uses
parameters.jsonwith a flat structure, mixes file inputs into parameters astype: file, and has nodatasection. No tools use this format anymore. This issue tracks aligning with the current spec.Current (Outdated) Behavior
parameters.json(spec saysinput.json; ecosystem usesinputs.json){toolName: {param: value, ...}}– no separation of parameters and dataparameters; nodatafieldtype: filein parameters (asset-like)PARAM_FILE=/in/parameters.json,RUN_TOOLCurrent Spec (tool-specs)
/in/input.jsonor/in/inputs.json{toolName: {parameters: {...}, data: {...}}}– parameters and data separatedparametersblock for config args;datablock for input files (with extension, description)datasection; referenced by name in input fileRequired Changes
inputs.json(or support both; gorun and tool-runner useinputs.json)datafield –List<string> | Dict<string, DataConfig>(name-only list or dict with extension, description){toolName: {parameters: {...}, data: {name: "/in/path"}}}type: filespecial casing; file inputs belong indatadatafrom tool.yml (support both list and dict formats per input.md)Tasks Checklist
DataConfiginterface (path/extension/description as in spec)ToolConfigwithdatafielddatasectioninputs.jsonwithparametersanddatakeystype: filehandling from parameter.ts; map data inputs viadatasectionPARAM_FILEcan point toinputs.jsonfor legacy containers (json2args accepts both)Reference