okay I got it working fairly easily. Although I’m not sure if this is a Barotrauma thing or a byproduct of my code, I am going to keep debugging this - but for some reason when I pasted the item assembly in-game it auto connected the inputs and outputs to open inputs inside of the circuit box.
Here’s CS2:

Here’s the output for the above example:
<?xml version="1.0" encoding="utf-8"?>
<ItemAssembly name="ItemAssembly" description="" hideinmenus="false">
<Item name="" identifier="circuitbox" ID="10" markedfordeconstruction="false" rect="-16,16,32,32" NonInteractable="False" NonPlayerTeamInteractable="False" AllowSwapping="True" Rotation="0" Scale="0.5" SpriteColor="255,255,255,255" InventoryIconColor="255,255,255,255" ContainerColor="255,255,255,255" HasBeenInstantiatedOnce="True" InvulnerableToDamage="False" Tags="smallitem" DisplaySideBySideWhenLinked="False" DisallowedUpgrades="" SpriteDepth="0.8" HiddenInGame="False" conditionpercentage="100">
<Holdable Attached="True" DisallowAttachingOverTags="" DisallowAttachingOverSize="0,0" SpriteDepthWhenDropped="0.55" PickingTime="5" CanBePicked="True" AllowInGameEditing="True" Msg="ItemMsgDetachWrench">
<requireditem items="wrench,deattachtool" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" excludedidentifiers="multitool" />
</Holdable>
<ConnectionPanel Locked="False" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="ItemMsgRewireScrewdriver">
<requireditem items="screwdriver" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" />
<input name="signal_in1" />
<input name="signal_in2" />
<input name="signal_in3" />
<input name="signal_in4" />
<input name="signal_in5" />
<input name="signal_in6" />
<input name="signal_in7" />
<input name="signal_in8" />
<output name="signal_out1" />
<output name="signal_out2" />
<output name="signal_out3" />
<output name="signal_out4" />
<output name="signal_out5" />
<output name="signal_out6" />
<output name="signal_out7" />
<output name="signal_out8" />
<input name="signal_in0" />
<input name="signal_in9" />
<output name="signal_out0" />
<output name="signal_out9" />
</ConnectionPanel>
<ItemContainer QuickUseMovesItemsInside="False" AutoFill="True" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="" contained="11,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," ExtraStackSize="0" />
<ItemContainer QuickUseMovesItemsInside="False" AutoFill="True" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="" contained=",,,,,,,,," ExtraStackSize="0" />
<CircuitBox Locked="False" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="ItemMsgInteractSelect">
<requireditem items="idcard" type="Picked" optional="false" ignoreineditor="true" excludebroken="true" msg="itemmsgunauthorizedaccess" />
<InputNode pos="-747.51135,31.953491" />
<OutputNode pos="512,0" />
<Component id="0" position="-250,0" backingitemid="0,0" usedresource="fpgacircuit" />
<Component id="1" position="0,0" backingitemid="1,0" usedresource="fpgacircuit" />
<Component id="2" position="250,0" backingitemid="2,0" usedresource="fpgacircuit" />
<Wire id="0" backingitemid="" prefab="redwire">
<From name="signal_in0" target="" />
<To name="signal_in" target="0" />
</Wire>
<Wire id="1" backingitemid="" prefab="redwire">
<From name="signal_out" target="0" />
<To name="signal_r" target="1" />
</Wire>
<Wire id="2" backingitemid="" prefab="redwire">
<From name="signal_in1" target="" />
<To name="signal_g" target="1" />
</Wire>
<Wire id="3" backingitemid="" prefab="redwire">
<From name="signal_in2" target="" />
<To name="signal_b" target="1" />
</Wire>
<Wire id="4" backingitemid="" prefab="redwire">
<From name="signal_in3" target="" />
<To name="signal_a" target="1" />
</Wire>
<Wire id="5" backingitemid="" prefab="redwire">
<From name="signal_out" target="1" />
<To name="signal_in" target="2" />
</Wire>
<Wire id="6" backingitemid="" prefab="redwire">
<From name="signal_out" target="2" />
<To name="signal_out0" target="" />
</Wire>
</CircuitBox>
<itemstats />
</Item>
<Item name="" identifier="acoscomponent" ID="11" markedfordeconstruction="false" rect="0,0,16,16" NonInteractable="False" NonPlayerTeamInteractable="False" AllowSwapping="True" Rotation="0" Scale="0.5" SpriteColor="255,255,255,255" InventoryIconColor="255,255,255,255" ContainerColor="255,255,255,255" OnInsertedEffectsApplied="True" HasBeenInstantiatedOnce="True" InvulnerableToDamage="False" Tags="circuitboxcomponent,smallitem,logic" DisplaySideBySideWhenLinked="False" DisallowedUpgrades="" SpriteDepth="0.8" HiddenInGame="False" conditionpercentage="100" hideinassemblypreview="true">
<FunctionComponent PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="" />
<Holdable DisallowAttachingOverTags="" DisallowAttachingOverSize="0,0" SpriteDepthWhenDropped="0.55" PickingTime="5" CanBePicked="True" AllowInGameEditing="True" Msg="ItemMsgDetachWrench">
<requireditem items="wrench,deattachtool" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" excludedidentifiers="multitool" />
</Holdable>
<ConnectionPanel Locked="False" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="ItemMsgRewireScrewdriver">
<requireditem items="screwdriver" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" />
<input name="signal_in" />
<output name="signal_out" />
</ConnectionPanel>
</Item>
<Item name="" identifier="colorcomponent" ID="12" markedfordeconstruction="false" rect="0,0,16,16" NonInteractable="False" NonPlayerTeamInteractable="False" AllowSwapping="True" Rotation="0" Scale="0.5" SpriteColor="255,255,255,255" InventoryIconColor="255,255,255,255" ContainerColor="255,255,255,255" OnInsertedEffectsApplied="True" HasBeenInstantiatedOnce="True" InvulnerableToDamage="False" Tags="circuitboxcomponent,smallitem,logic" DisplaySideBySideWhenLinked="False" DisallowedUpgrades="" SpriteDepth="0.8" HiddenInGame="False" conditionpercentage="100" hideinassemblypreview="true">
<FunctionComponent PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="" />
<Holdable DisallowAttachingOverTags="" DisallowAttachingOverSize="0,0" SpriteDepthWhenDropped="0.55" PickingTime="5" CanBePicked="True" AllowInGameEditing="True" Msg="ItemMsgDetachWrench">
<requireditem items="wrench,deattachtool" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" excludedidentifiers="multitool" />
</Holdable>
<ConnectionPanel Locked="False" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="ItemMsgRewireScrewdriver">
<requireditem items="screwdriver" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" />
<input name="signal_r" />
<input name="signal_g" />
<input name="signal_b" />
<input name="signal_a" />
<output name="signal_out" />
</ConnectionPanel>
</Item>
<Item name="" identifier="coscomponent" ID="13" markedfordeconstruction="false" rect="0,0,16,16" NonInteractable="False" NonPlayerTeamInteractable="False" AllowSwapping="True" Rotation="0" Scale="0.5" SpriteColor="255,255,255,255" InventoryIconColor="255,255,255,255" ContainerColor="255,255,255,255" OnInsertedEffectsApplied="True" HasBeenInstantiatedOnce="True" InvulnerableToDamage="False" Tags="circuitboxcomponent,smallitem,logic" DisplaySideBySideWhenLinked="False" DisallowedUpgrades="" SpriteDepth="0.8" HiddenInGame="False" conditionpercentage="100" hideinassemblypreview="true">
<FunctionComponent PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="" />
<Holdable DisallowAttachingOverTags="" DisallowAttachingOverSize="0,0" SpriteDepthWhenDropped="0.55" PickingTime="5" CanBePicked="True" AllowInGameEditing="True" Msg="ItemMsgDetachWrench">
<requireditem items="wrench,deattachtool" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" excludedidentifiers="multitool" />
</Holdable>
<ConnectionPanel Locked="False" PickingTime="0" CanBePicked="False" AllowInGameEditing="True" Msg="ItemMsgRewireScrewdriver">
<requireditem items="screwdriver" type="Equipped" optional="false" ignoreineditor="false" excludebroken="true" />
<input name="signal_in" />
<output name="signal_out" />
</ConnectionPanel>
</Item>
</ItemAssembly>
And here’s the in-game result:

Although I kinda moved stuff around in-game because it was all piled on itself. So I am going to keep working on this but I’ll have an update for you by Sunday.
Thanks for the patience :)