char-slop/berry
multipurpose self-modifiable agentic harness
git clone https://git.t4t.associates/char-slop/berry
77bec20
main
1import { Buffer } from "node:buffer" ; 2 3/** Bounded newline frames, including a final frame without a newline. */ 4export async function * lines ( reader :ReadableStreamDefaultReader < Uint8Array >) { 5const limit = 16 * 1024 * 1024 ; 6let buffered = "" ; 7const decoder = new TextDecoder ( "utf-8" ); 8while ( true ) { 9const { done, value} = await reader . read (); 10if ( done ) break ; 11buffered += decoder . decode ( value , { stream :true }); 12let newline :number ; 13while (( newline = buffered . indexOf ( "\n" )) >= 0 ) { 14const line = buffered . slice ( 0 , newline ); 15if ( Buffer . byteLength ( line ) > limit ) throw new Error ( "MCP frame exceeds 16 MiB" ); 16buffered = buffered . slice ( newline + 1 ); 17if ( line . trim ()) yield line ; 18} 19if ( Buffer . byteLength ( buffered ) > limit ) throw new Error ( "MCP frame exceeds 16 MiB" ); 20} 21buffered += decoder . decode (); 22if ( buffered . trim ()) yield buffered ; 23}