fix(workflows): accept legacy input field types instead of rejecting them
Merged
WA
6d ago+51+51+01234567890123456789-111-111-012345678901234567890123456789
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 likeshort-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-formatcheck, so edits to workflows carrying legacy types are not rejected and rows are stored unchanged. - Executor: reverts the
jsoncoercion alias, so deployed runs behave exactly as before.jsonis treated like any other legacy type on every side;filesstays an alias offile[], 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-auditauthoring gate) - No new warnings introduced
- I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)