diff --git a/src/cmdforge/tool.py b/src/cmdforge/tool.py index 5018079..5a426db 100644 --- a/src/cmdforge/tool.py +++ b/src/cmdforge/tool.py @@ -220,6 +220,16 @@ class Tool: if "source" in data: source = ToolSource.from_dict(data["source"]) + # Normalize dependencies - can be strings or dicts with name/version + raw_deps = data.get("dependencies", []) + dependencies = [] + for dep in raw_deps: + if isinstance(dep, str): + dependencies.append(dep) + elif isinstance(dep, dict) and "name" in dep: + dependencies.append(dep["name"]) + # Skip invalid entries + return cls( name=data["name"], description=data.get("description", ""), @@ -227,7 +237,7 @@ class Tool: arguments=arguments, steps=steps, output=data.get("output", "{input}"), - dependencies=data.get("dependencies", []), + dependencies=dependencies, source=source, version=data.get("version", ""), )