diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tool-input/tool-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tool-input/tool-input.tsx
index 2cf1305bb..9d166e605 100644
--- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tool-input/tool-input.tsx
+++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tool-input/tool-input.tsx
@@ -1771,9 +1771,15 @@ export const ToolInput = memo(function ToolInput({
{/* Tool parameters */}
{(() => {
+ const renderedElements: React.ReactNode[] = []
+
// SubBlock-first rendering for registry tools
if (useSubBlocks && displaySubBlocks.length > 0) {
- return displaySubBlocks.map((sb) => {
+ const coveredParamIds = new Set(
+ displaySubBlocks.map((sb) => sb.canonicalParamId || sb.id)
+ )
+
+ displaySubBlocks.forEach((sb) => {
const effectiveParamId = sb.canonicalParamId || sb.id
// Compute canonical toggle for basic/advanced mode switching
@@ -1808,7 +1814,7 @@ export const ToolInput = memo(function ToolInput({
? sb
: { ...sb, title: formatParameterLabel(effectiveParamId) }
- return (
+ renderedElements.push(
)
})
+
+ // Render remaining tool params not covered by subblocks
+ // (e.g. inputMapping for workflow tools with custom UI)
+ const uncoveredParams = displayParams.filter(
+ (param) =>
+ !coveredParamIds.has(param.id) && evaluateParameterCondition(param, tool)
+ )
+
+ uncoveredParams.forEach((param) => {
+ renderedElements.push(
+
+ {(wandControlRef: React.MutableRefObject) =>
+ renderParameterInput(
+ param,
+ tool.params?.[param.id] || '',
+ (value) => handleParamChange(toolIndex, param.id, value),
+ toolIndex,
+ toolContextValues as Record,
+ wandControlRef
+ )
+ }
+
+ )
+ })
+
+ return renderedElements
}
// Fallback: legacy ToolParameterConfig-based rendering
@@ -1831,8 +1872,6 @@ export const ToolInput = memo(function ToolInput({
evaluateParameterCondition(param, tool)
)
- const renderedElements: React.ReactNode[] = []
-
filteredParams.forEach((param) => {
renderedElements.push(