mirror of
https://github.com/langgenius/dify.git
synced 2026-10-04 13:47:55 +08:00
An LLM-supplied int node_id reached diff_graphs, which drops falsy and non-string ids from its node maps, so result.changes came back empty and build_change_set's fallback joined a list containing an int. The TypeError took the whole session to `failed` (ESQ1-271) after the mutation had already been committed to the draft. validate_intent_args now rejects a non-string or empty node id, so filter_applicable turns it into a rejection reason the agent can act on. build_change_set str()s defensively -- that join must never be what kills a session. Also extends the same guard to set_node_config's `path` arg: a non-string path used to reach _resolve_path's str.split() and raise AttributeError, surfacing "'int' object has no attribute 'split'" to the repair agent instead of an actionable rejection reason. Same boundary, same defect shape, deliberately included here rather than deferred. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>