@@ -21,6 +21,7 @@ export type {
2121
2222type StreamingCompatEntry = {
2323 streaming ?: unknown ;
24+ streamMode ?: unknown ;
2425 chunkMode ?: unknown ;
2526 blockStreaming ?: unknown ;
2627 draftChunk ?: unknown ;
@@ -42,6 +43,27 @@ function asBoolean(value: unknown): boolean | undefined {
4243 return typeof value === "boolean" ? value : undefined ;
4344}
4445
46+ function normalizeStreamingMode ( value : unknown ) : string | null {
47+ if ( typeof value !== "string" ) {
48+ return null ;
49+ }
50+ const normalized = value . trim ( ) . toLowerCase ( ) ;
51+ return normalized || null ;
52+ }
53+
54+ function parsePreviewStreamingMode ( value : unknown ) : "off" | "partial" | "block" | null {
55+ const normalized = normalizeStreamingMode ( value ) ;
56+ if (
57+ normalized === "off" ||
58+ normalized === "partial" ||
59+ normalized === "block" ||
60+ normalized === "progress"
61+ ) {
62+ return normalized === "progress" ? "partial" : normalized ;
63+ }
64+ return null ;
65+ }
66+
4567function asBlockStreamingCoalesceConfig ( value : unknown ) : BlockStreamingCoalesceConfig | undefined {
4668 return asObjectRecord ( value ) as BlockStreamingCoalesceConfig | undefined ;
4769}
@@ -99,3 +121,24 @@ export function resolveChannelStreamingNativeTransport(
99121 const config = getChannelStreamingConfigObject ( entry ) ;
100122 return asBoolean ( config ?. nativeTransport ) ?? asBoolean ( entry ?. nativeStreaming ) ;
101123}
124+
125+ export function resolveChannelPreviewStreamMode (
126+ entry : StreamingCompatEntry | null | undefined ,
127+ defaultMode : "off" | "partial" ,
128+ ) : "off" | "partial" | "block" {
129+ const parsedStreaming = parsePreviewStreamingMode (
130+ getChannelStreamingConfigObject ( entry ) ?. mode ?? entry ?. streaming ,
131+ ) ;
132+ if ( parsedStreaming ) {
133+ return parsedStreaming ;
134+ }
135+
136+ const legacy = parsePreviewStreamingMode ( entry ?. streamMode ) ;
137+ if ( legacy ) {
138+ return legacy ;
139+ }
140+ if ( typeof entry ?. streaming === "boolean" ) {
141+ return entry . streaming ? "partial" : "off" ;
142+ }
143+ return defaultMode ;
144+ }
0 commit comments