Skip to content

Commit 20a70d6

Browse files
committed
feat(engine): emit depends_on in block transition events
Add depends_on field to all 8 on_block_transition event emission sites (block_started, block_completed, block_failed, block_skipped for both regular and for_each blocks). Serializes DependencySpec as [{"block": "...", "required": true}].
1 parent ebfe271 commit 20a70d6

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

src/workflows_mcp/engine/workflow_runner.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,8 @@ async def _execute_block(
797797
"inputs": resolved_inputs,
798798
"context_id": exec_context.execution_context.context_id,
799799
}
800+
if block_def.depends_on:
801+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
800802
if block_def.description:
801803
event["description"] = block_def.description
802804
await self.on_block_transition(event)
@@ -870,6 +872,8 @@ async def _execute_block(
870872
"inputs": resolved_inputs,
871873
"context_id": exec_context.execution_context.context_id,
872874
}
875+
if block_def.depends_on:
876+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
873877
if block_def.description:
874878
event["description"] = block_def.description
875879
await self.on_block_transition(event)
@@ -910,6 +914,8 @@ async def _execute_for_each_block(
910914
"metadata": {"type": block_def.type},
911915
"context_id": exec_context.execution_context.context_id,
912916
}
917+
if block_def.depends_on:
918+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
913919
if block_def.description:
914920
event["description"] = block_def.description
915921
await self.on_block_transition(event)
@@ -996,6 +1002,8 @@ async def _execute_for_each_block(
9961002
"outputs": {},
9971003
"context_id": exec_context.execution_context.context_id,
9981004
}
1005+
if block_def.depends_on:
1006+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
9991007
if block_def.description:
10001008
event["description"] = block_def.description
10011009
await self.on_block_transition(event)
@@ -1015,6 +1023,8 @@ async def _execute_for_each_block(
10151023
"error": str(e),
10161024
"context_id": exec_context.execution_context.context_id,
10171025
}
1026+
if block_def.depends_on:
1027+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
10181028
if block_def.description:
10191029
event["description"] = block_def.description
10201030
await self.on_block_transition(event)
@@ -1080,6 +1090,8 @@ async def _mark_block_skipped(
10801090
"outputs": default_outputs,
10811091
"context_id": exec_context.execution_context.context_id,
10821092
}
1093+
if block_def.depends_on:
1094+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
10831095
if block_def.description:
10841096
event["description"] = block_def.description
10851097
await self.on_block_transition(event)
@@ -1127,6 +1139,8 @@ async def _mark_block_failed(
11271139
"outputs": default_outputs,
11281140
"context_id": exec_context.execution_context.context_id,
11291141
}
1142+
if block_def.depends_on:
1143+
event["depends_on"] = [dep.model_dump() for dep in block_def.depends_on]
11301144
if block_def.description:
11311145
event["description"] = block_def.description
11321146
await self.on_block_transition(event)

0 commit comments

Comments
 (0)