Skip to content

fix: workflow tool visibility consistency across all SDKs#11

Merged
msilverblatt merged 2 commits intomasterfrom
fix/workflow-disable-consistency
Mar 15, 2026
Merged

fix: workflow tool visibility consistency across all SDKs#11
msilverblatt merged 2 commits intomasterfrom
fix/workflow-disable-consistency

Conversation

@msilverblatt
Copy link
Owner

Summary

Final workflow tool-visibility consistency fixes. All 4 SDKs now match Python's reference behavior for enable/disable on terminal completion, error transitions, and cancel.

Changes

  • TypeScript/Go terminal case: Now computes disableTools as all registered tools NOT in the pre-workflow set (was returning empty array, leaving workflow step tools callable after completion)
  • Rust compute_transition: Now disables ALL non-allowed tools, not just workflow tools. External tools matching block_during rules are now properly hidden during transitions.
  • Rust handle_step_call: Drops ACTIVE_WORKFLOW mutex before calling step handler to prevent deadlock if handler accesses workflow state

Test plan

  • Go runtime — all pass
  • Go e2e — 8/8 pass
  • Go SDK — all pass
  • Python — 170/170 pass
  • TypeScript — 107/107 pass (tsc + vitest)
  • Rust — 75/75 pass

…ock before handler

- TypeScript and Go workflow terminal case now computes disableTools
  (all tools not in pre-workflow set) instead of returning empty array
- Rust compute_transition now disables ALL non-allowed tools, not just
  workflow tools, so block_during rules are properly enforced
- Rust handle_step_call drops ACTIVE_WORKFLOW lock before calling the
  step handler to prevent deadlock if handler accesses workflow state
- Go and TypeScript cancel handlers now compute disableTools (was empty)
- Go workflow initial step now computes preWorkflowTools from registered
  tools when ToolManagerAdapter.GetActiveTools is nil (the common case)
@msilverblatt msilverblatt merged commit 90b751c into master Mar 15, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant