@@ -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 = endingNodeData ?. outputs ?. output === '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 )
@@ -1665,20 +1669,20 @@ export class App {
1665
1669
const endingNodeData = endingNode . data
1666
1670
if ( ! endingNodeData ) return res . status ( 500 ) . send ( `Ending node ${ endingNode . id } data not found` )
1667
1671
1668
- if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
1669
- return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
1670
- }
1672
+ const isEndingNode = endingNodeData ?. outputs ?. output === 'EndingNode'
1671
1673
1672
- if (
1673
- endingNodeData . outputs &&
1674
- Object . keys ( endingNodeData . outputs ) . length &&
1675
- ! Object . values ( endingNodeData . outputs ) . includes ( endingNodeData . name )
1676
- ) {
1677
- return res
1678
- . status ( 500 )
1679
- . send (
1680
- `Output of ${ endingNodeData . label } (${ endingNodeData . id } ) must be ${ endingNodeData . label } , can't be an Output Prediction`
1681
- )
1674
+ if ( ! isEndingNode ) {
1675
+ if ( endingNodeData && endingNodeData . category !== 'Chains' && endingNodeData . category !== 'Agents' ) {
1676
+ return res . status ( 500 ) . send ( `Ending node must be either a Chain or Agent` )
1677
+ }
1678
+
1679
+ if ( ! Object . values ( endingNodeData . outputs ?? { } ) . includes ( endingNodeData . name ) ) {
1680
+ return res
1681
+ . status ( 500 )
1682
+ . send (
1683
+ `Output of ${ endingNodeData . label } (${ endingNodeData . id } ) must be ${ endingNodeData . label } , can't be an Output Prediction`
1684
+ )
1685
+ }
1682
1686
}
1683
1687
1684
1688
isStreamValid = isFlowValidForStream ( nodes , endingNodeData )
0 commit comments