@@ -465,8 +465,12 @@ export class App {
465
465
const endingNodeData = endingNode . data
466
466
if ( ! endingNodeData ) return res . status ( 500 ) . send ( `Ending node ${ endingNode . id } data not found` )
467
467
468
- if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
469
- return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
468
+ const isEndingNode = Object . values ( endingNodeData . outputs ?? { } ) . includes ( 'EndingNode' )
469
+
470
+ if ( ! isEndingNode ) {
471
+ if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
472
+ return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
473
+ }
470
474
}
471
475
472
476
isStreaming = isFlowValidForStream ( nodes , endingNodeData )
@@ -1652,20 +1656,20 @@ export class App {
1652
1656
const endingNodeData = endingNode . data
1653
1657
if ( ! endingNodeData ) return res . status ( 500 ) . send ( `Ending node ${ endingNode . id } data not found` )
1654
1658
1655
- if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
1656
- return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
1657
- }
1659
+ const isEndingNode = Object . values ( endingNodeData . outputs ?? { } ) . includes ( 'EndingNode' )
1658
1660
1659
- if (
1660
- endingNodeData . outputs &&
1661
- Object . keys ( endingNodeData . outputs ) . length &&
1662
- ! Object . values ( endingNodeData . outputs ) . includes ( endingNodeData . name )
1663
- ) {
1664
- return res
1665
- . status ( 500 )
1666
- . send (
1667
- `Output of ${ endingNodeData . label } (${ endingNodeData . id } ) must be ${ endingNodeData . label } , can't be an Output Prediction`
1668
- )
1661
+ if ( ! isEndingNode ) {
1662
+ if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
1663
+ return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
1664
+ }
1665
+
1666
+ if ( ! Object . values ( endingNodeData . outputs ?? { } ) . includes ( endingNodeData . name ) ) {
1667
+ return res
1668
+ . status ( 500 )
1669
+ . send (
1670
+ `Output of ${ endingNodeData . label } (${ endingNodeData . id } ) must be ${ endingNodeData . label } , can't be an Output Prediction`
1671
+ )
1672
+ }
1669
1673
}
1670
1674
1671
1675
isStreamValid = isFlowValidForStream ( nodes , endingNodeData )
0 commit comments