feat: inspect node runtime context

This commit is contained in:
lda
2026-08-14 15:00:28 +07:00 Verified
parent 696a45c3c0
commit ce085b14f8
9 changed files with 810 additions and 8 deletions
+16 -7
View File
@@ -1,22 +1,31 @@
from __future__ import annotations
from wf_core.context_contracts import (
ACTIVATED_INCOMING_EDGE_CONTEXT_KEY,
LINEAGE_ID_CONTEXT_KEY,
LOOP_INDEX_CONTEXT_KEY,
LOOP_ITEM_CONTEXT_KEY,
PARENT_LINEAGE_ID_CONTEXT_KEY,
PRIOR_OUTCOME_CONTEXT_KEY,
SCOPE_ID_CONTEXT_KEY,
)
from wf_core.run_state import ExecutionFrame
def frame_context_values(frame: ExecutionFrame) -> dict[str, object | None]:
context: dict[str, object | None] = {
"prior_outcome": frame.prior_outcome,
"activated_incoming_edge": frame.activated_incoming_edge,
"scope_id": frame.scope_id,
"lineage_id": frame.lineage_id,
"parent_lineage_id": frame.parent_lineage_id,
PRIOR_OUTCOME_CONTEXT_KEY: frame.prior_outcome,
ACTIVATED_INCOMING_EDGE_CONTEXT_KEY: frame.activated_incoming_edge,
SCOPE_ID_CONTEXT_KEY: frame.scope_id,
LINEAGE_ID_CONTEXT_KEY: frame.lineage_id,
PARENT_LINEAGE_ID_CONTEXT_KEY: frame.parent_lineage_id,
}
if frame.kind == "foreach_iteration":
loop_item = frame.metadata.get("loop_item")
loop_index = frame.metadata.get("loop_index")
loop_alias = frame.metadata.get("loop_alias")
context["loop_item"] = loop_item
context["loop_index"] = loop_index
context[LOOP_ITEM_CONTEXT_KEY] = loop_item
context[LOOP_INDEX_CONTEXT_KEY] = loop_index
if isinstance(loop_alias, str) and loop_alias:
context[loop_alias] = loop_item
return context