diff --git a/packages/core/src/db/schemas.ts b/packages/core/src/db/schemas.ts index 3cf6381d..4ce2f071 100644 --- a/packages/core/src/db/schemas.ts +++ b/packages/core/src/db/schemas.ts @@ -641,7 +641,7 @@ export const ParsedStreamSchema = z.object({ export type ParsedStream = z.infer; -const AIOStreamSchema = StreamSchema.extend({ +export const AIOStream = StreamSchema.extend({ streamData: z.object({ error: z .object({ @@ -687,10 +687,10 @@ const AIOStreamSchema = StreamSchema.extend({ }), }); -export type AIOStream = z.infer; +export type AIOStream = z.infer; const AIOStreamResponseSchema = z.object({ - streams: z.array(AIOStreamSchema), + streams: z.array(AIOStream), }); export type AIOStreamResponse = z.infer; diff --git a/packages/core/src/presets/aiostreams.ts b/packages/core/src/presets/aiostreams.ts index b1032c57..5868d698 100644 --- a/packages/core/src/presets/aiostreams.ts +++ b/packages/core/src/presets/aiostreams.ts @@ -7,12 +7,22 @@ import { AIOStream, } from '../db'; import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES } from '../utils'; +import { Env, formatZodError, RESOURCES } from '../utils'; import { StreamParser } from '../parser'; +import { createLogger } from '../utils'; + +const logger = createLogger('parser'); class AIOStreamsStreamParser extends StreamParser { override parse(stream: Stream): ParsedStream { const aioStream = stream as AIOStream; + const parsed = AIOStream.safeParse(aioStream); + if (!parsed.success) { + logger.error( + `Stream from AIOStream was not detected as a valid stream: ${formatZodError(parsed.error)}` + ); + throw new Error('Invalid stream'); + } return { addon: { ...this.addon,