Added accumulator response parts and utils to accumulate from stream and normal response parts #5674
      
        
          +1,402
        
        
          −0
        
        
          
        
      
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Type
Description
This pull request adds 3 new ai response parts--
TextAccumulatedPart,ReasoningAccumulatedPart, andToolPart--and utilities to convert from streaming and normal parts to accumulated parts.TextAccumulatedPart: same asTextPartbut withstatefield representing either"streaming"or"done"ReasoningAccumulatedPart: same asReasoningPartbut withstatefield representing either"streaming"or"done"ToolPartcombines all of the other tool parts into one part, keeping each previous context, and distinguish each state by theirvalue.statefield, where it holds values such as:"params-start": when params are started to streaming in"params-streaming": when params are streaming in"params-malformed": when params are malformed"params-done": when params are done streaming"result-error": when the tool returned an error result"result-done": when the tool call result is returnedThese all accumulated parts and other necessary parts are represented by
AccumulatedPart.utilities:
mergeAccumulatedParts: merges two accumulated parts into one accumulated partsaccumulateParts: accumulate over normal parts given already existing accumulated partsaccumulateStreamParts: accumulate over stream parts given already existing accumulated partsRelated