@ -76,7 +76,7 @@ export async function generateWithReplicate(
if ( hasDynamicInputs ) {
if ( hasDynamicInputs ) {
// Apply coerced parameters first, then dynamic inputs override
// Apply coerced parameters first, then dynamic inputs override
Object . assign ( predictionInput , coerceParameterTypes ( input . parameters , parameterTypes ) ) ;
Object . assign ( predictionInput , coerceParameterTypes ( input . parameters , parameterTypes ) ) ;
const { schemaArrayParams } = getInputMappingFromSchema ( schema ) ;
const { paramMap , schemaArrayParams } = getInputMappingFromSchema ( schema ) ;
// Apply array wrapping based on schema type
// Apply array wrapping based on schema type
for ( const [ key , value ] of Object . entries ( input . dynamicInputs ! ) ) {
for ( const [ key , value ] of Object . entries ( input . dynamicInputs ! ) ) {
@ -90,6 +90,13 @@ export async function generateWithReplicate(
}
}
}
}
}
}
// Ensure prompt is included even when dynamicInputs are present
// (executor sends prompt as top-level field, not in dynamicInputs)
const promptParam = paramMap . prompt || "prompt" ;
if ( input . prompt && ! predictionInput [ promptParam ] ) {
predictionInput [ promptParam ] = input . prompt ;
}
} else {
} else {
// Fallback: use schema to map generic input names to model-specific parameter names
// Fallback: use schema to map generic input names to model-specific parameter names
const { paramMap , arrayParams } = getInputMappingFromSchema ( schema ) ;
const { paramMap , arrayParams } = getInputMappingFromSchema ( schema ) ;