{"version":3,"sources":["../src/structured-stream.client.ts","../src/response-model.ts","../src/constants/modes.ts","../src/oai/params.ts","../src/oai/parser.ts","../src/oai/stream.ts","../src/create-agent.ts","../src/lib/_utils.ts","../src/parsers/thinking.ts","../src/index.ts"],"names":["ZodStream","debug","level","args","timestamp","completionPromise","data","response_model","activePath","completedPaths","finalChunk","streamParser","SchemaStream","completion","path","source","parsedChunk","validation","meta","error","schema","defaultData","params","MODE","OAIBuildFunctionParams","definition","name","description","function_call","functions","OAIBuildToolFunctionParams","tool_choice","tools","OAIBuildMessageBasedParams","OAIBuildThinkingMessageBasedParams","OAIBuildJsonModeParams","OAIBuildJsonSchemaParams","makeOpenAIStrictSchema","value","key","nestedValue","responseModelToJsonSchema","_dialect","jsonSchema","z","withResponseModel","mode","safeName","OAIResponseFnArgsParser","parsedData","OAIResponseToolArgsParser","OAIResponseJSONParser","text","jsonRegex","match","OAIResponseParser","isFnCall","isToolCall","OAIStream","res","encoder","iterator","controller","next","readableStreamToAsyncGenerator","stream","reader","decoder","buffer","done","createAgent","defaultClientOptions","client","defaultAgentParams","configOverride","messages","extractionStream","response","extractedResponse","parsedResponse","isPathComplete","_completedPaths","completedPath","compPathElement","index","activePathElement","thinkingJsonParser","thinkingRegex","thinkingMatch","thinking","cleanText","jsonMatch","partialJsonMatch","partialContent","index_default"],"mappings":"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","file":"/home/runner/work/island-ai/island-ai/public-packages/zod-stream/dist/index.cjs","sourcesContent":["import { SchemaStream, type SchemaStreamChunk } from \"schema-stream\"\nimport { z } from \"zod\"\n\nimport type {\n  ActivePath,\n  ClientConfig,\n  CompletedPaths,\n  CompletionMeta,\n  LogLevel,\n  ZodStreamChunk,\n  ZodStreamCompletionParams,\n  ZodStreamDefaultData\n} from \"@/types\"\n\nexport default class ZodStream {\n  readonly debug: boolean = false\n\n  constructor({ debug = false }: ClientConfig = {}) {\n    this.debug = debug\n  }\n\n  private log<T extends unknown[]>(level: LogLevel, ...args: T): void {\n    if (!this.debug) {\n      return\n    }\n\n    const timestamp = new Date().toISOString()\n    switch (level) {\n      case \"debug\":\n        console.debug(`[ZodStream-CLIENT:DEBUG] ${timestamp}:`, ...args)\n        break\n      case \"info\":\n        console.info(`[ZodStream-CLIENT:INFO] ${timestamp}:`, ...args)\n        break\n      case \"warn\":\n        console.warn(`[ZodStream-CLIENT:WARN] ${timestamp}:`, ...args)\n        break\n      case \"error\":\n        console.error(`[ZodStream-CLIENT:ERROR] ${timestamp}:`, ...args)\n        break\n    }\n  }\n\n  private async *chatCompletionStream<T extends z.ZodObject>({\n    completionPromise,\n    data,\n    response_model\n  }: ZodStreamCompletionParams<T>): AsyncGenerator<ZodStreamChunk<T>, z.output<T>, unknown> {\n    let activePath: ActivePath = []\n    let completedPaths: CompletedPaths = []\n    let finalChunk: SchemaStreamChunk<T> | undefined\n\n    this.log(\"debug\", \"Starting completion stream\")\n\n    const streamParser = new SchemaStream(response_model.schema, {\n      typeDefaults: {\n        string: null,\n        number: null,\n        boolean: null\n      },\n      onKeyComplete: completion => {\n        this.log(\"debug\", \"Key complete\", completion.activePath, completion.completedPaths)\n        activePath = [...completion.activePath]\n        completedPaths = completion.completedPaths.map(path => [...path])\n      }\n    })\n\n    const source = await completionPromise(data)\n\n    if (!source) {\n      throw new Error(\"Completion call returned no stream\")\n    }\n\n    try {\n      for await (const parsedChunk of streamParser.iterate(source, {\n        handleUnescapedNewLines: true\n      })) {\n        finalChunk = parsedChunk\n        const validation = await response_model.schema.safeParseAsync(parsedChunk)\n\n        this.log(\"debug\", \"Validation result\", validation)\n\n        const meta: CompletionMeta = {\n          _isValid: validation.success,\n          _activePath: [...activePath],\n          _completedPaths: completedPaths.map(path => [...path])\n        }\n\n        yield { ...parsedChunk, _meta: meta } as ZodStreamChunk<T>\n      }\n\n      if (finalChunk === undefined) {\n        throw new Error(\"Completion stream ended without emitting JSON\")\n      }\n\n      return await response_model.schema.parseAsync(finalChunk)\n    } catch (error) {\n      this.log(\"error\", \"Error consuming completion stream\", error)\n      throw error\n    }\n  }\n\n  public getSchemaStub<T extends z.ZodObject>({\n    schema,\n    defaultData = {}\n  }: {\n    schema: T\n    defaultData?: ZodStreamDefaultData<T>\n  }): SchemaStreamChunk<T> {\n    const streamParser = new SchemaStream(schema, {\n      defaultData,\n      typeDefaults: {\n        string: null,\n        number: null,\n        boolean: null\n      }\n    })\n\n    return streamParser.getSchemaStub(schema, defaultData)\n  }\n\n  public async create<T extends z.ZodObject>(\n    params: ZodStreamCompletionParams<T>\n  ): Promise<AsyncGenerator<ZodStreamChunk<T>, z.output<T>, unknown>> {\n    return this.chatCompletionStream(params)\n  }\n}\n","import type OpenAI from \"openai\"\nimport { z } from \"zod\"\n\nimport { MODE } from \"@/constants/modes\"\nimport {\n  OAIBuildFunctionParams,\n  OAIBuildJsonModeParams,\n  OAIBuildJsonSchemaParams,\n  OAIBuildMessageBasedParams,\n  OAIBuildThinkingMessageBasedParams,\n  OAIBuildToolFunctionParams\n} from \"@/oai/params\"\nimport type { JsonSchema, Mode, ModeParamsReturnType, ResponseModel } from \"@/types\"\n\nfunction makeOpenAIStrictSchema(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map(makeOpenAIStrictSchema)\n  }\n\n  if (typeof value !== \"object\" || value === null) {\n    return value\n  }\n\n  const schema = Object.fromEntries(\n    Object.entries(value).map(([key, nestedValue]) => [key, makeOpenAIStrictSchema(nestedValue)])\n  )\n\n  if (schema[\"type\"] === \"object\" && !(\"additionalProperties\" in schema)) {\n    schema[\"additionalProperties\"] = false\n  }\n\n  return schema\n}\n\n/** Converts a Zod 4 input schema to the JSON Schema dialect accepted by Chat Completions. */\nexport function responseModelToJsonSchema(schema: z.ZodObject): JsonSchema {\n  const { $schema: _dialect, ...jsonSchema } = z.toJSONSchema(schema, {\n    target: \"draft-07\",\n    io: \"input\",\n    unrepresentable: \"throw\"\n  })\n\n  return makeOpenAIStrictSchema(jsonSchema) as JsonSchema\n}\n\nexport function withResponseModel<\n  T extends z.ZodObject,\n  M extends Mode,\n  P extends OpenAI.ChatCompletionCreateParams\n>({\n  response_model: { name, schema, description = \"\" },\n  mode,\n  params\n}: {\n  response_model: ResponseModel<T>\n  mode: M\n  params: P\n}): ModeParamsReturnType<P, M> {\n  const safeName = name.replace(/[^a-zA-Z0-9_-]/g, \"_\").slice(0, 64)\n\n  if (!safeName) {\n    throw new Error(\"response_model.name must contain at least one letter, number, underscore, or dash\")\n  }\n\n  const definition = {\n    name: safeName,\n    description,\n    schema: responseModelToJsonSchema(schema)\n  }\n\n  if (mode === MODE.FUNCTIONS) {\n    return OAIBuildFunctionParams<P>(definition, params) as ModeParamsReturnType<P, M>\n  }\n\n  if (mode === MODE.TOOLS) {\n    return OAIBuildToolFunctionParams<P>(definition, params) as ModeParamsReturnType<P, M>\n  }\n\n  if (mode === MODE.JSON) {\n    return OAIBuildJsonModeParams<P>(definition, params) as ModeParamsReturnType<P, M>\n  }\n\n  if (mode === MODE.JSON_SCHEMA) {\n    return OAIBuildJsonSchemaParams<P>(definition, params) as ModeParamsReturnType<P, M>\n  }\n\n  if (mode === MODE.THINKING_MD_JSON) {\n    return OAIBuildThinkingMessageBasedParams<P>(definition, params) as ModeParamsReturnType<P, M>\n  }\n\n  return OAIBuildMessageBasedParams<P>(definition, params) as ModeParamsReturnType<P, M>\n}\n","export const MODE = {\n  FUNCTIONS: \"FUNCTIONS\",\n  TOOLS: \"TOOLS\",\n  JSON: \"JSON\",\n  MD_JSON: \"MD_JSON\",\n  JSON_SCHEMA: \"JSON_SCHEMA\",\n  THINKING_MD_JSON: \"THINKING_MD_JSON\"\n} as const\n","import {\n  FunctionParamsReturnType,\n  JsonModeParamsReturnType,\n  JsonSchemaParamsReturnType,\n  MessageBasedParamsReturnType,\n  ParseParams,\n  ToolFunctionParamsReturnType\n} from \"@/types\"\nimport OpenAI from \"openai\"\n\nexport function OAIBuildFunctionParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): FunctionParamsReturnType<T> {\n  const { name, description, schema } = definition\n\n  const function_call: OpenAI.ChatCompletionFunctionCallOption = {\n    name\n  }\n\n  const functions: OpenAI.FunctionDefinition[] = [\n    ...(params?.functions ?? []),\n    {\n      name: name,\n      description: description ?? undefined,\n      parameters: schema\n    }\n  ]\n\n  return {\n    ...params,\n    function_call,\n    functions\n  }\n}\n\nexport function OAIBuildToolFunctionParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): ToolFunctionParamsReturnType<T> {\n  const { name, description, schema } = definition\n\n  const tool_choice: OpenAI.ChatCompletionToolChoiceOption = {\n    type: \"function\",\n    function: { name }\n  }\n\n  const tools: OpenAI.ChatCompletionTool[] = [\n    {\n      type: \"function\",\n      function: {\n        name: name,\n        description: description,\n        parameters: schema\n      }\n    },\n    ...(params.tools ?? [])\n  ]\n\n  return {\n    ...params,\n    tool_choice,\n    tools\n  }\n}\n\nexport function OAIBuildMessageBasedParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): MessageBasedParamsReturnType<T> {\n  return {\n    ...params,\n    messages: [\n      {\n        role: \"system\",\n        content: `\n          Given a user prompt, you will return fully valid JSON based on the following description and schema.\n          You will return no other prose. You will take into account any descriptions or required parameters within the schema\n          and return a valid and fully escaped JSON object that matches the schema and those instructions.\n\n          description: ${definition.description}\n          json schema: ${JSON.stringify(definition.schema)}\n        `\n      },\n      ...params.messages\n    ]\n  }\n}\n\nexport function OAIBuildThinkingMessageBasedParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): MessageBasedParamsReturnType<T> {\n  return {\n    ...params,\n    messages: [\n      {\n        role: \"system\",\n        content: `\n          Given a user prompt, you will return fully valid JSON based on the provided description and schema.\n\n          You will take into account any descriptions or required parameters within the schema\n          and return a valid and fully escaped JSON object that matches the schema and those instructions.\n\n          You will always return your full thought process in one <think> tag and then return the JSON response in a \\`\\`\\`json block after the </think> tag. Never include any prose or thinking process outside of the <think> tag.\n          \n          For example:\n            <think>\n              I am analyzing the input to extract the required information...\n            </think>\n\n              \\`\\`\\`json\n              {\n                \"result\": \"the actual json response\"\n              }\n              \\`\\`\\`\n\n          \\n\\n\n\n          description: ${definition.description}\n          json schema: ${JSON.stringify(definition.schema)}\n        `\n      },\n      ...params.messages\n    ]\n  }\n}\n\nexport function OAIBuildJsonModeParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): JsonModeParamsReturnType<T> {\n  return {\n    ...params,\n    response_format: { type: \"json_object\" },\n    messages: [\n      {\n        role: \"system\",\n        content: `\n          Given a user prompt, you will return fully valid JSON based on the following description and schema.\n          You will return no other prose. You will take into account any descriptions or required parameters within the schema\n          and return a valid and fully escaped JSON object that matches the schema and those instructions.\n\n          description: ${definition.description}\n          json schema: ${JSON.stringify(definition.schema)}\n        `\n      },\n      ...params.messages\n    ]\n  }\n}\n\nexport function OAIBuildJsonSchemaParams<T extends OpenAI.ChatCompletionCreateParams>(\n  definition: ParseParams,\n  params: T\n): JsonSchemaParamsReturnType<T> {\n  return {\n    ...params,\n    response_format: {\n      type: \"json_schema\",\n      json_schema: {\n        name: definition.name,\n        description: definition.description || undefined,\n        schema: definition.schema,\n        strict: true\n      }\n    },\n    messages: [\n      {\n        role: \"system\",\n        content: `\n          Given a user prompt, you will return fully valid JSON based on the following description.\n          You will return no other prose. You will take into account any descriptions or required parameters within the schema\n          and return a valid and fully escaped JSON object that matches the schema and those instructions.\n\n          description: ${definition.description}\n        `\n      },\n      ...params.messages\n    ]\n  }\n}\n","import OpenAI from \"openai\"\n\n/**\n * `OAIResponseFnArgsParser` parses a JSON string and extracts the function call arguments.\n *\n * @param {string} data - The JSON string to parse.\n * @returns {string} - The extracted function arguments.\n *\n */\nexport function OAIResponseFnArgsParser(\n  data:\n    string | OpenAI.Chat.Completions.ChatCompletionChunk | OpenAI.Chat.Completions.ChatCompletion\n): string {\n  const parsedData = typeof data === \"string\" ? JSON.parse(data) : data\n  const text =\n    parsedData.choices?.[0]?.delta?.function_call?.arguments ??\n    parsedData.choices?.[0]?.message?.function_call?.arguments ??\n    \"\"\n\n  return text\n}\n\n/**\n * `OAIResponseToolArgsParser` parses a JSON string and extracts the tool call arguments.\n *\n * @param {string} data - The JSON string to parse.\n * @returns {Objstringect} - The extracted tool call arguments.\n *\n */\nexport function OAIResponseToolArgsParser(\n  data:\n    string | OpenAI.Chat.Completions.ChatCompletionChunk | OpenAI.Chat.Completions.ChatCompletion\n): string {\n  const parsedData = typeof data === \"string\" ? JSON.parse(data) : data\n\n  const text =\n    parsedData.choices?.[0]?.delta?.tool_calls?.[0]?.function?.arguments ??\n    parsedData.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments ??\n    \"\"\n\n  return text\n}\n\n/**\n * `OAIResponseJSONParser` parses a JSON string and extracts the JSON content.\n *\n * @param {string} data - The JSON string to parse.\n * @returns {string} - The extracted JSON content.\n *\n *\n */\nexport function OAIResponseJSONParser(\n  data:\n    string | OpenAI.Chat.Completions.ChatCompletionChunk | OpenAI.Chat.Completions.ChatCompletion\n): string {\n  const parsedData = typeof data === \"string\" ? JSON.parse(data) : data\n\n  const text =\n    parsedData.choices?.[0]?.delta?.content ?? parsedData?.choices?.[0]?.message?.content ?? \"\"\n\n  const jsonRegex = /```json\\n([\\s\\S]*?)\\n```/\n  const match = text.match(jsonRegex)\n\n  return match ? match[1] : text\n}\n\n/**\n * `OAIResponseParser` parses a JSON string or a response object.\n * It checks if the input contains function call arguments. If it does,\n * it uses `OAIResponseFnArgsParser` to parse the input, otherwise, it uses `OAIResponseTextParser`.\n *\n * @param {string | Stream<OpenAI.Chat.Completions.ChatCompletionChunk> | OpenAI.Chat.Completions.ChatCompletion} data - The input to parse.\n * @returns {string} - The result of the appropriate parser.\n */\n\nexport function OAIResponseParser(\n  data:\n    string | OpenAI.Chat.Completions.ChatCompletionChunk | OpenAI.Chat.Completions.ChatCompletion\n): string {\n  const parsedData = typeof data === \"string\" ? JSON.parse(data) : data\n\n  const isFnCall =\n    parsedData.choices?.[0]?.delta?.function_call?.arguments ||\n    parsedData.choices?.[0]?.message?.function_call?.arguments ||\n    false\n\n  const isToolCall =\n    parsedData.choices?.[0]?.delta?.tool_calls?.[0]?.function?.arguments ??\n    parsedData.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments ??\n    false\n\n  if (isFnCall) {\n    return OAIResponseFnArgsParser(data)\n  }\n\n  if (isToolCall) {\n    return OAIResponseToolArgsParser(data)\n  }\n\n  return OAIResponseJSONParser(data)\n}\n","import type OpenAI from \"openai\"\n\nimport { OAIResponseParser } from \"./parser\"\n\ninterface OaiStreamArgs {\n  res: AsyncIterable<OpenAI.ChatCompletionChunk>\n}\n\n/** Converts OpenAI Chat Completion deltas into a backpressure-aware byte stream. */\nexport function OAIStream({ res }: OaiStreamArgs): ReadableStream<Uint8Array> {\n  const encoder = new TextEncoder()\n  const iterator = res[Symbol.asyncIterator]()\n\n  return new ReadableStream<Uint8Array>({\n    async pull(controller): Promise<void> {\n      try {\n        let next = await iterator.next()\n        while (!next.done) {\n          const parsedData = OAIResponseParser(next.value)\n          if (parsedData) {\n            controller.enqueue(encoder.encode(parsedData))\n            return\n          }\n\n          next = await iterator.next()\n        }\n\n        controller.close()\n      } catch (error) {\n        controller.error(error)\n      }\n    },\n    async cancel(): Promise<void> {\n      await iterator.return?.()\n    }\n  })\n}\n\n/** Converts a byte stream of sequential JSON values into an async generator. */\nexport async function* readableStreamToAsyncGenerator<T = unknown>(\n  stream: ReadableStream<Uint8Array>\n): AsyncGenerator<T, void, unknown> {\n  const reader = stream.getReader()\n  const decoder = new TextDecoder()\n  let buffer = \"\"\n\n  try {\n    while (true) {\n      const { done, value } = await reader.read()\n\n      if (done) {\n        break\n      }\n\n      buffer += decoder.decode(value, { stream: true })\n\n      try {\n        yield JSON.parse(buffer) as T\n        buffer = \"\"\n      } catch (error) {\n        if (!(error instanceof SyntaxError)) {\n          throw error\n        }\n      }\n    }\n\n    buffer += decoder.decode()\n    if (buffer.trim().length > 0) {\n      yield JSON.parse(buffer) as T\n    }\n  } finally {\n    reader.releaseLock()\n  }\n}\n","import type OpenAI from \"openai\"\nimport { z } from \"zod\"\n\nimport { OAIResponseParser } from \"./oai/parser\"\nimport { OAIStream } from \"./oai/stream\"\nimport { withResponseModel } from \"./response-model\"\nimport type { Mode } from \"./types\"\n\nexport type CreateAgentParams<T extends z.ZodObject> = {\n  defaultClientOptions: Partial<OpenAI.ChatCompletionCreateParams> & {\n    model: OpenAI.ChatCompletionCreateParams[\"model\"]\n    messages: OpenAI.ChatCompletionMessageParam[]\n  }\n  /** @default \"TOOLS\" */\n  mode?: Mode\n  client: OpenAI\n  response_model: {\n    schema: T\n    name: string\n    description?: string\n  }\n}\n\nexport type AgentInstance<T extends z.ZodObject> = ReturnType<typeof createAgent<T>>\nexport type ConfigOverride = Partial<OpenAI.ChatCompletionCreateParams>\n\n/** Creates a pre-configured Chat Completions client with schema-aware response parsing. */\nexport function createAgent<T extends z.ZodObject>({\n  defaultClientOptions,\n  response_model,\n  mode = \"TOOLS\",\n  client\n}: CreateAgentParams<T>) {\n  const defaultAgentParams = {\n    temperature: 0.7,\n    top_p: 1,\n    frequency_penalty: 0,\n    presence_penalty: 0,\n    n: 1,\n    ...defaultClientOptions\n  }\n\n  return {\n    completionStream: async (\n      configOverride: ConfigOverride = {}\n    ): Promise<ReadableStream<Uint8Array>> => {\n      const messages = [\n        ...(defaultAgentParams.messages ?? []),\n        ...(configOverride.messages ?? [])\n      ] as OpenAI.ChatCompletionMessageParam[]\n\n      const params = withResponseModel({\n        mode,\n        response_model,\n        params: {\n          ...defaultAgentParams,\n          ...configOverride,\n          stream: true,\n          messages\n        }\n      })\n\n      const extractionStream = await client.chat.completions.create(params)\n\n      return OAIStream({ res: extractionStream })\n    },\n    completion: async (configOverride: ConfigOverride = {}): Promise<z.output<T>> => {\n      const messages = [\n        ...(defaultAgentParams.messages ?? []),\n        ...(configOverride.messages ?? [])\n      ] as OpenAI.ChatCompletionMessageParam[]\n\n      const params = withResponseModel({\n        mode,\n        response_model,\n        params: {\n          ...defaultAgentParams,\n          ...configOverride,\n          stream: false,\n          messages\n        }\n      })\n\n      const response = await client.chat.completions.create(params)\n      const extractedResponse = OAIResponseParser(response)\n      const parsedResponse: unknown = JSON.parse(extractedResponse)\n\n      return response_model.schema.parseAsync(parsedResponse)\n    }\n  }\n}\n","import { ActivePath, CompletionMeta } from \"..\"\n\nexport function isPathComplete(activePath: ActivePath, data: { _meta: CompletionMeta }): boolean {\n  const { _completedPaths } = data?._meta ?? {}\n\n  return _completedPaths.some(completedPath => {\n    if (completedPath.length !== activePath.length) {\n      return false\n    }\n\n    return completedPath.every((compPathElement, index) => {\n      const activePathElement = activePath[index]\n\n      if (compPathElement === undefined || activePathElement === undefined) {\n        return true\n      }\n      return compPathElement === activePathElement\n    })\n  })\n}\n","import type OpenAI from \"openai\"\n\n/**\n * Parses non streaming responses that may contain both thinking sections and JSON content.\n * Handles incomplete JSON, and nested markdown blocks.\n * Includes thinking content in the returned object.\n *\n * @param data - The raw response data\n * @returns an object with json and thinking fields\n */\nexport function thinkingJsonParser(data: string | OpenAI.Chat.Completions.ChatCompletion): {\n  json: string\n  thinking: string\n} {\n  const text =\n    typeof data === \"string\"\n      ? data\n      : \"choices\" in data && data.choices?.[0]\n        ? (data.choices[0].message?.content ?? \"\")\n        : \"\"\n\n  const thinkingRegex = /<think(?:ing)?>([\\s\\S]*?)(?:<\\/think(?:ing)?>|$)/i\n  const thinkingMatch = text.match(thinkingRegex)\n  const thinking = thinkingMatch ? thinkingMatch[1].trim() : \"\"\n\n  const cleanText = text.replace(thinkingRegex, \"\").trim()\n\n  if (cleanText.trim().startsWith(\"{\") || cleanText.trim().startsWith(\"[\")) {\n    return { json: cleanText.trim(), thinking }\n  }\n\n  const jsonRegex = /```(?:json)?\\s*([\\s\\S]*?)```/\n  const jsonMatch = cleanText.match(jsonRegex)\n\n  if (jsonMatch) {\n    const jsonStr = jsonMatch[1].trim()\n    return { json: jsonStr, thinking }\n  }\n\n  const partialJsonMatch = cleanText.match(/```(?:json)?\\s*([\\s\\S]*)/i)\n  if (partialJsonMatch) {\n    const partialContent = partialJsonMatch[1].trim()\n    if (partialContent.startsWith(\"{\") || partialContent.startsWith(\"[\")) {\n      return { json: partialContent, thinking }\n    }\n  }\n\n  return { json: \"\", thinking }\n}\n","import ZodStream from \"./structured-stream.client\"\n\nexport * from \"./response-model\"\nexport * from \"./oai/parser\"\nexport * from \"./oai/stream\"\nexport * from \"./constants/modes\"\nexport * from \"./types\"\nexport * from \"./create-agent\"\nexport * from \"./lib/_utils\"\nexport * from \"./parsers/thinking\"\n\nexport default ZodStream\n"]}