fix(workflows): accept legacy input field types instead of rejecting them

Merged
WA
6d ago
+51-111

Summary

  • Follow-up to #9342 so it is strictly non-regressive. Stored Start inputs carry a long tail of types outside the editor's list (json, legacy widget names like short-input, textarea, select). Before the shared run schema started throwing on them, they ran with the executor passing values through unchanged.
  • Run validation / MCP schema: an unknown type now accepts any value and advertises no type, instead of a 400. Manual, copilot, and MCP runs and deploy-time MCP schema sync work again for these workflows. Reserved input names still return 400.
  • Save path: restores the pre-#9342 array-only input-format check, so edits to workflows carrying legacy types are not rejected and rows are stored unchanged.
  • Executor: reverts the json coercion alias, so deployed runs behave exactly as before. json is treated like any other legacy type on every side; files stays an alias of file[], which both sides already apply.

Type of Change

  • Bug fix

Testing

  • Targeted vitest: input-schema, editing/validation, start-block, run-options, mcp/workflow-tool-schema, input-format, mcp workflow lifecycle (172 passed).
  • Red/green: the 4 new/changed cases fail against the current staging source and pass with this change.
  • bun run lint, check:unused-exports, check:comment-hygiene, check:test-patterns, check:client-boundary, check:boundaries, check:utils, check:source-conventions.
  • Full suite, type-check, and audits run in CI.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing (new tests pass the test-audit authoring gate)
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)