I've been bashing my head against this problem all day, trying to create a schema script to handle the Integrated Dynamics recipe types. The drying basins are fairly straightforward, but the squeezers are a little weird in their outputs.
You can see that the item on line 12 is nested more than the one on line 17. It seems to be consistent that items with a count are nested one level deeper, unless they use a tag (see line 9 here: https://github.com/CyclopsMC/IntegratedDynamics/blob/master-1.20-lts/src/main/resources/data/integrateddynamics/recipes/mechanical_squeezer/ore/gem_diamond.json) in which they're not nested further.
Additionally, the results key contains either one or both of an array of items and a fluid to output.
This is the closest I was able to get to it working: https://github.com/jangro/beyond-the-horizon/blob/main/kubejs/startup_scripts/src/schemas/integrateddynamics.js, where the server logs no longer show warnings when trying to parse the recipes included with ID. Unfortunately, I can't figure out the next steps to take to be able to add recipes through KubeJS - I presume there's some way to clean up / rework the schema so that a recipe like this one would work:
event.recipes.integrateddynamics.mechanical_squeezer([Item.of('irons_spellbooks:arcane_salvage'), Item.of('irons_spellbooks:arcane_salvage').withChance(0.75)], 'irons_spellbooks:arcane_debris', 40).id(`${ID_PREFIX}mechanical_squeezer/arcane_salvage_from_arcane_debris`);```
But currently it's rather broken: `Failed to create recipe for type 'integrateddynamics:mechanical_squeezer': Unable to cast 'result:builder{items?:{builder{item:output_item,chance?:float}|output_item}[],fluid?:output_fluid}' value '[irons_spellbooks:arcane_salvage, 'irons_spellbooks:arcane_salvage']' to 'builder'!`