mirror of
https://github.com/davidkaya/aryx.git
synced 2026-08-06 19:58:43 +02:00
fix: make sub-workflow resolution tolerant of missing references
Extract TryResolveSubWorkflowDefinition that returns null instead of throwing when a referenced workflow is missing from the library. Use the tolerant variant in all graph-walking helpers that build agent indexes, collect agent nodes, and find sub-workflow nodes. These operations are used for activity UI enrichment and agent identity resolution — they should degrade gracefully rather than crash the turn. The throwing ResolveSubWorkflowDefinition is now only used by WorkflowRunner.CreateNodeRoute, which is the actual execution path and correctly fails with a clear error if a reference is truly missing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -174,6 +174,23 @@ public sealed class AgentIdentityResolverTests
|
||||
Assert.Equal("Inner Review", subworkflow.SubworkflowName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildAgentSubworkflowIndex_SkipsUnresolvableSubWorkflowReferences()
|
||||
{
|
||||
WorkflowDefinitionDto workflow = CreateWorkflow(
|
||||
"parent-workflow",
|
||||
[
|
||||
CreateAgent("agent-top-level", "Top Level"),
|
||||
CreateSubworkflow("subworkflow-missing", "Missing Pipeline", workflowId: "nonexistent-workflow"),
|
||||
],
|
||||
orchestrationMode: "concurrent");
|
||||
|
||||
IReadOnlyDictionary<string, SubworkflowContext> index =
|
||||
AgentIdentityResolver.BuildAgentSubworkflowIndex(workflow);
|
||||
|
||||
Assert.Empty(index);
|
||||
}
|
||||
|
||||
private static WorkflowDefinitionDto CreateWorkflow(
|
||||
IReadOnlyList<WorkflowNodeDto> nodes,
|
||||
string orchestrationMode = "concurrent")
|
||||
|
||||
Reference in New Issue
Block a user