@assistant-ui/react 0.5.81 → 0.5.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-CYIFAX4U.js → chunk-C6UZOY5A.js} +1 -1
- package/dist/chunk-C6UZOY5A.js.map +1 -0
- package/dist/{chunk-RHM73CQE.mjs → chunk-TWIMAOZR.mjs} +1 -1
- package/dist/chunk-TWIMAOZR.mjs.map +1 -0
- package/dist/{edge-rTP-G718.d.mts → edge-B3YIacNl.d.mts} +4 -1
- package/dist/{edge-rTP-G718.d.ts → edge-B3YIacNl.d.ts} +4 -1
- package/dist/edge.js.map +1 -1
- package/dist/edge.mjs.map +1 -1
- package/dist/index.d.mts +1869 -711
- package/dist/index.d.ts +1869 -711
- package/dist/index.js +769 -387
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +680 -298
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/chunk-CYIFAX4U.js.map +0 -1
- package/dist/chunk-RHM73CQE.mjs.map +0 -1
    
        package/dist/edge.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"sources":["../src/edge.ts","../src/runtimes/edge/streams/assistantEncoderStream.ts","../src/types/ModelConfigTypes.ts","../src/runtimes/edge/EdgeRuntimeRequestOptions.ts","../src/runtimes/edge/converters/toLanguageModelMessages.ts","../src/runtimes/edge/converters/toLanguageModelTools.ts","../src/runtimes/edge/streams/toolResultStream.ts","../src/runtimes/edge/partial-json/parse-partial-json.ts","../src/runtimes/edge/partial-json/fix-json.ts","../src/runtimes/edge/streams/runResultStream.ts","../src/runtimes/edge/converters/toCoreMessages.ts","../src/runtimes/edge/streams/utils/PipeableTransformStream.ts","../src/runtimes/edge/streams/utils/streamPartEncoderStream.ts","../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["export {\n  createEdgeRuntimeAPI,\n  getEdgeRuntimeResponse,\n} from \"./runtimes/edge/createEdgeRuntimeAPI\";\n","import {\n  AssistantStreamChunk,\n  AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n  const toolCalls = new Set<string>();\n  return new TransformStream<\n    ToolResultStreamPart,\n    StreamPart<AssistantStreamChunk>\n  >({\n    transform(chunk, controller) {\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"text-delta\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.TextDelta,\n            value: chunk.textDelta,\n          });\n          break;\n        }\n        case \"tool-call-delta\": {\n          if (!toolCalls.has(chunk.toolCallId)) {\n            toolCalls.add(chunk.toolCallId);\n            controller.enqueue({\n              type: AssistantStreamChunkType.ToolCallBegin,\n              value: {\n                toolCallId: chunk.toolCallId,\n                toolName: chunk.toolName,\n              },\n            });\n          }\n\n          controller.enqueue({\n            type: AssistantStreamChunkType.ToolCallDelta,\n            value: {\n              toolCallId: chunk.toolCallId,\n              argsTextDelta: chunk.argsTextDelta,\n            },\n          });\n          break;\n        }\n\n        // ignore\n        case \"tool-call\":\n        case \"response-metadata\":\n          break;\n\n        case \"tool-result\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.ToolCallResult,\n            value: {\n              toolCallId: chunk.toolCallId,\n              result: chunk.result,\n            },\n          });\n          break;\n        }\n\n        case \"step-finish\": {\n          const { type, ...rest } = chunk;\n          controller.enqueue({\n            type: AssistantStreamChunkType.StepFinish,\n            value: rest,\n          });\n          break;\n        }\n\n        case \"finish\": {\n          const { type, ...rest } = chunk;\n          controller.enqueue({\n            type: AssistantStreamChunkType.Finish,\n            value: rest,\n          });\n          break;\n        }\n\n        case \"error\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.Error,\n            value: chunk.error,\n          });\n          break;\n        }\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n  });\n}\n","import { z } from \"zod\";\nimport type { JSONSchema7 } from \"json-schema\";\n\nexport const LanguageModelV1CallSettingsSchema = z.object({\n  maxTokens: z.number().int().positive().optional(),\n  temperature: z.number().optional(),\n  topP: z.number().optional(),\n  presencePenalty: z.number().optional(),\n  frequencyPenalty: z.number().optional(),\n  seed: z.number().int().optional(),\n  headers: z.record(z.string().optional()).optional(),\n});\n\nexport type LanguageModelV1CallSettings = z.infer<\n  typeof LanguageModelV1CallSettingsSchema\n>;\n\nexport const LanguageModelConfigSchema = z.object({\n  apiKey: z.string().optional(),\n  baseUrl: z.string().optional(),\n  modelName: z.string().optional(),\n});\n\nexport type LanguageModelConfig = z.infer<typeof LanguageModelConfigSchema>;\n\ntype ToolExecuteFunction<TArgs, TResult> = (\n  args: TArgs,\n  context: {\n    abortSignal: AbortSignal;\n  },\n) => TResult | Promise<TResult>;\n\nexport type Tool<\n  TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n  TResult = unknown,\n> = {\n  description?: string | undefined;\n  parameters: z.ZodSchema<TArgs> | JSONSchema7;\n  execute?: ToolExecuteFunction<TArgs, TResult>;\n};\n\nexport type ModelConfig = {\n  priority?: number | undefined;\n  system?: string | undefined;\n  tools?: Record<string, Tool<any, any>> | undefined;\n  callSettings?: LanguageModelV1CallSettings | undefined;\n  config?: LanguageModelConfig | undefined;\n};\n\nexport type ModelConfigProvider = { getModelConfig: () => ModelConfig };\n\nexport const mergeModelConfigs = (\n  configSet: Set<ModelConfigProvider>,\n): ModelConfig => {\n  const configs = Array.from(configSet)\n    .map((c) => c.getModelConfig())\n    .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n\n  return configs.reduce((acc, config) => {\n    if (config.system) {\n      if (acc.system) {\n        // TODO should the separator be configurable?\n        acc.system += `\\n\\n${config.system}`;\n      } else {\n        acc.system = config.system;\n      }\n    }\n    if (config.tools) {\n      for (const [name, tool] of Object.entries(config.tools)) {\n        if (acc.tools?.[name]) {\n          throw new Error(\n            `You tried to define a tool with the name ${name}, but it already exists.`,\n          );\n        }\n        if (!acc.tools) acc.tools = {};\n        acc.tools[name] = tool;\n      }\n    }\n    if (config.config) {\n      acc.config = {\n        ...acc.config,\n        ...config.config,\n      };\n    }\n    if (config.callSettings) {\n      acc.callSettings = {\n        ...acc.callSettings,\n        ...config.callSettings,\n      };\n    }\n    return acc;\n  }, {} as ModelConfig);\n};\n","import { JSONSchema7 } from \"json-schema\";\nimport {\n  LanguageModelConfigSchema,\n  LanguageModelV1CallSettingsSchema,\n} from \"../../types/ModelConfigTypes\";\nimport { z } from \"zod\";\n\nconst LanguageModelV1FunctionToolSchema = z.object({\n  type: z.literal(\"function\"),\n  name: z.string(),\n  description: z.string().optional(),\n  parameters: z.custom<JSONSchema7>(\n    (val) => typeof val === \"object\" && val !== null,\n  ),\n});\n\nconst TextContentPartSchema = z.object({\n  type: z.literal(\"text\"),\n  text: z.string(),\n});\n\nconst ImageContentPartSchema = z.object({\n  type: z.literal(\"image\"),\n  image: z.string(),\n});\n\nconst CoreToolCallContentPartSchema = z.object({\n  type: z.literal(\"tool-call\"),\n  toolCallId: z.string(),\n  toolName: z.string(),\n  args: z.record(z.unknown()),\n  result: z.unknown().optional(),\n  isError: z.boolean().optional(),\n});\n// args is required but unknown;\n\nconst CoreUserMessageSchema = z.object({\n  role: z.literal(\"user\"),\n  content: z\n    .array(\n      z.discriminatedUnion(\"type\", [\n        TextContentPartSchema,\n        ImageContentPartSchema,\n      ]),\n    )\n    .min(1),\n});\n\nconst CoreAssistantMessageSchema = z.object({\n  role: z.literal(\"assistant\"),\n  content: z\n    .array(\n      z.discriminatedUnion(\"type\", [\n        TextContentPartSchema,\n        CoreToolCallContentPartSchema,\n      ]),\n    )\n    .min(1),\n});\n\nconst CoreSystemMessageSchema = z.object({\n  role: z.literal(\"system\"),\n  content: z.tuple([TextContentPartSchema]),\n});\n\nconst CoreMessageSchema = z.discriminatedUnion(\"role\", [\n  CoreSystemMessageSchema,\n  CoreUserMessageSchema,\n  CoreAssistantMessageSchema,\n]);\n\nexport const EdgeRuntimeRequestOptionsSchema = z\n  .object({\n    system: z.string().optional(),\n    messages: z.array(CoreMessageSchema).min(1),\n    tools: z.array(LanguageModelV1FunctionToolSchema).optional(),\n  })\n  .merge(LanguageModelV1CallSettingsSchema)\n  .merge(LanguageModelConfigSchema);\n\nexport type EdgeRuntimeRequestOptions = z.infer<\n  typeof EdgeRuntimeRequestOptionsSchema\n>;\n","import {\n  LanguageModelV1ImagePart,\n  LanguageModelV1Message,\n  LanguageModelV1TextPart,\n  LanguageModelV1ToolCallPart,\n  LanguageModelV1ToolResultPart,\n} from \"@ai-sdk/provider\";\nimport {\n  CoreMessage,\n  ThreadMessage,\n  TextContentPart,\n  CoreToolCallContentPart,\n} from \"../../../types/AssistantTypes\";\n\nconst assistantMessageSplitter = () => {\n  const stash: LanguageModelV1Message[] = [];\n  let assistantMessage = {\n    role: \"assistant\" as const,\n    content: [] as (LanguageModelV1TextPart | LanguageModelV1ToolCallPart)[],\n  };\n  let toolMessage = {\n    role: \"tool\" as const,\n    content: [] as LanguageModelV1ToolResultPart[],\n  };\n\n  return {\n    addTextContentPart: (part: TextContentPart) => {\n      if (toolMessage.content.length > 0) {\n        stash.push(assistantMessage);\n        stash.push(toolMessage);\n\n        assistantMessage = {\n          role: \"assistant\" as const,\n          content: [] as (\n            | LanguageModelV1TextPart\n            | LanguageModelV1ToolCallPart\n          )[],\n        };\n\n        toolMessage = {\n          role: \"tool\" as const,\n          content: [] as LanguageModelV1ToolResultPart[],\n        };\n      }\n\n      assistantMessage.content.push(part);\n    },\n    addToolCallPart: (part: CoreToolCallContentPart) => {\n      assistantMessage.content.push({\n        type: \"tool-call\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        args: part.args,\n      });\n\n      toolMessage.content.push({\n        type: \"tool-result\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        result: part.result ?? \"<no result>\",\n        isError: part.isError ?? false,\n      });\n    },\n    getMessages: () => {\n      if (toolMessage.content.length > 0) {\n        return [...stash, assistantMessage, toolMessage];\n      }\n\n      return [...stash, assistantMessage];\n    },\n  };\n};\n\nexport function toLanguageModelMessages(\n  message: readonly CoreMessage[] | readonly ThreadMessage[],\n): LanguageModelV1Message[] {\n  return message.flatMap((message) => {\n    const role = message.role;\n    switch (role) {\n      case \"system\": {\n        return [{ role: \"system\", content: message.content[0].text }];\n      }\n\n      case \"user\": {\n        const msg: LanguageModelV1Message = {\n          role: \"user\",\n          content: message.content.map(\n            (part): LanguageModelV1TextPart | LanguageModelV1ImagePart => {\n              const type = part.type;\n              switch (type) {\n                case \"text\": {\n                  return part;\n                }\n\n                case \"image\": {\n                  return {\n                    type: \"image\",\n                    image: new URL(part.image),\n                  };\n                }\n\n                default: {\n                  const unhandledType: \"ui\" = type;\n                  throw new Error(\n                    `Unspported content part type: ${unhandledType}`,\n                  );\n                }\n              }\n            },\n          ),\n        };\n        return [msg];\n      }\n\n      case \"assistant\": {\n        const splitter = assistantMessageSplitter();\n        for (const part of message.content) {\n          const type = part.type;\n          switch (type) {\n            case \"text\": {\n              splitter.addTextContentPart(part);\n              break;\n            }\n            case \"tool-call\": {\n              splitter.addToolCallPart(part);\n              break;\n            }\n            default: {\n              const unhandledType: \"ui\" = type;\n              throw new Error(`Unhandled content part type: ${unhandledType}`);\n            }\n          }\n        }\n        return splitter.getMessages();\n      }\n\n      default: {\n        const unhandledRole: never = role;\n        throw new Error(`Unknown message role: ${unhandledRole}`);\n      }\n    }\n  });\n}\n","import { LanguageModelV1FunctionTool } from \"@ai-sdk/provider\";\nimport { JSONSchema7 } from \"json-schema\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { Tool } from \"../../../types/ModelConfigTypes\";\n\nexport const toLanguageModelTools = (\n  tools: Record<string, Tool<any, any>>,\n): LanguageModelV1FunctionTool[] => {\n  return Object.entries(tools).map(([name, tool]) => ({\n    type: \"function\",\n    name,\n    ...(tool.description ? { description: tool.description } : undefined),\n    parameters: (tool.parameters instanceof z.ZodType\n      ? zodToJsonSchema(tool.parameters)\n      : tool.parameters) as JSONSchema7,\n  }));\n};\n","import { Tool } from \"../../../types/ModelConfigTypes\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { z } from \"zod\";\nimport sjson from \"secure-json-parse\";\n\nexport type ToolResultStreamPart =\n  | LanguageModelV1StreamPart\n  | {\n      type: \"tool-result\";\n      toolCallType: \"function\";\n      toolCallId: string;\n      toolName: string;\n      result: unknown;\n      isError?: boolean;\n    }\n  | {\n      type: \"step-finish\";\n      finishReason:\n        | \"stop\"\n        | \"length\"\n        | \"content-filter\"\n        | \"tool-calls\"\n        | \"error\"\n        | \"other\"\n        | \"unknown\";\n      usage: {\n        promptTokens: number;\n        completionTokens: number;\n      };\n      isContinued: boolean;\n    };\n\nexport function toolResultStream(\n  tools: Record<string, Tool> | undefined,\n  abortSignal: AbortSignal,\n) {\n  const toolCallExecutions = new Map<string, Promise<any>>();\n\n  return new TransformStream<ToolResultStreamPart, ToolResultStreamPart>({\n    transform(chunk, controller) {\n      // forward everything\n      controller.enqueue(chunk);\n\n      // handle tool calls\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"tool-call\": {\n          const { toolCallId, toolCallType, toolName, args: argsText } = chunk;\n          const tool = tools?.[toolName];\n          if (!tool || !tool.execute) return;\n\n          const args = sjson.parse(argsText);\n          if (tool.parameters instanceof z.ZodType) {\n            const result = tool.parameters.safeParse(args);\n            if (!result.success) {\n              controller.enqueue({\n                type: \"tool-result\",\n                toolCallType,\n                toolCallId,\n                toolName,\n                result:\n                  \"Function parameter validation failed. \" +\n                  JSON.stringify(result.error.issues),\n                isError: true,\n              });\n              return;\n            } else {\n              toolCallExecutions.set(\n                toolCallId,\n                (async () => {\n                  if (!tool.execute) return;\n\n                  try {\n                    const result = await tool.execute(args, { abortSignal });\n\n                    controller.enqueue({\n                      type: \"tool-result\",\n                      toolCallType,\n                      toolCallId,\n                      toolName,\n                      result,\n                    });\n                  } catch (error) {\n                    controller.enqueue({\n                      type: \"tool-result\",\n                      toolCallType,\n                      toolCallId,\n                      toolName,\n                      result: \"Error: \" + error,\n                      isError: true,\n                    });\n                  } finally {\n                    toolCallExecutions.delete(toolCallId);\n                  }\n                })(),\n              );\n            }\n          }\n          break;\n        }\n\n        // ignore other parts\n        case \"text-delta\":\n        case \"tool-call-delta\":\n        case \"tool-result\":\n        case \"step-finish\":\n        case \"finish\":\n        case \"error\":\n        case \"response-metadata\":\n          break;\n\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n\n    async flush() {\n      await Promise.all(toolCallExecutions.values());\n    },\n  });\n}\n","import sjson from \"secure-json-parse\";\nimport { fixJson } from \"./fix-json\";\n\nexport const parsePartialJson = (json: string) => {\n  try {\n    return sjson.parse(json);\n  } catch {\n    try {\n      return sjson.parse(fixJson(json));\n    } catch {\n      return undefined;\n    }\n  }\n};\n","// LICENSE for this file only\n\n// Copyright 2023 Vercel, Inc.\n\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n//     http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\ntype State =\n  | \"ROOT\"\n  | \"FINISH\"\n  | \"INSIDE_STRING\"\n  | \"INSIDE_STRING_ESCAPE\"\n  | \"INSIDE_LITERAL\"\n  | \"INSIDE_NUMBER\"\n  | \"INSIDE_OBJECT_START\"\n  | \"INSIDE_OBJECT_KEY\"\n  | \"INSIDE_OBJECT_AFTER_KEY\"\n  | \"INSIDE_OBJECT_BEFORE_VALUE\"\n  | \"INSIDE_OBJECT_AFTER_VALUE\"\n  | \"INSIDE_OBJECT_AFTER_COMMA\"\n  | \"INSIDE_ARRAY_START\"\n  | \"INSIDE_ARRAY_AFTER_VALUE\"\n  | \"INSIDE_ARRAY_AFTER_COMMA\";\n\n// Implemented as a scanner with additional fixing\n// that performs a single linear time scan pass over the partial JSON.\n//\n// The states should ideally match relevant states from the JSON spec:\n// https://www.json.org/json-en.html\n//\n// Please note that invalid JSON is not considered/covered, because it\n// is assumed that the resulting JSON will be processed by a standard\n// JSON parser that will detect any invalid JSON.\nexport function fixJson(input: string): string {\n  const stack: State[] = [\"ROOT\"];\n  let lastValidIndex = -1;\n  let literalStart: number | null = null;\n\n  function processValueStart(char: string, i: number, swapState: State) {\n    {\n      switch (char) {\n        case '\"': {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_STRING\");\n          break;\n        }\n\n        case \"f\":\n        case \"t\":\n        case \"n\": {\n          lastValidIndex = i;\n          literalStart = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_LITERAL\");\n          break;\n        }\n\n        case \"-\": {\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_NUMBER\");\n          break;\n        }\n        case \"0\":\n        case \"1\":\n        case \"2\":\n        case \"3\":\n        case \"4\":\n        case \"5\":\n        case \"6\":\n        case \"7\":\n        case \"8\":\n        case \"9\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_NUMBER\");\n          break;\n        }\n\n        case \"{\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_OBJECT_START\");\n          break;\n        }\n\n        case \"[\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_ARRAY_START\");\n          break;\n        }\n      }\n    }\n  }\n\n  function processAfterObjectValue(char: string, i: number) {\n    switch (char) {\n      case \",\": {\n        stack.pop();\n        stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n        break;\n      }\n      case \"}\": {\n        lastValidIndex = i;\n        stack.pop();\n        break;\n      }\n    }\n  }\n\n  function processAfterArrayValue(char: string, i: number) {\n    switch (char) {\n      case \",\": {\n        stack.pop();\n        stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n        break;\n      }\n      case \"]\": {\n        lastValidIndex = i;\n        stack.pop();\n        break;\n      }\n    }\n  }\n\n  for (let i = 0; i < input.length; i++) {\n    const char = input[i]!;\n    const currentState = stack[stack.length - 1];\n\n    switch (currentState) {\n      case \"ROOT\":\n        processValueStart(char, i, \"FINISH\");\n        break;\n\n      case \"INSIDE_OBJECT_START\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_KEY\");\n            break;\n          }\n          case \"}\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_COMMA\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_KEY\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_KEY\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_KEY\": {\n        switch (char) {\n          case \":\": {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n        processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_VALUE\": {\n        processAfterObjectValue(char, i);\n        break;\n      }\n\n      case \"INSIDE_STRING\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            lastValidIndex = i;\n            break;\n          }\n\n          case \"\\\\\": {\n            stack.push(\"INSIDE_STRING_ESCAPE\");\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_ARRAY_START\": {\n        switch (char) {\n          case \"]\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n            processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_ARRAY_AFTER_VALUE\": {\n        switch (char) {\n          case \",\": {\n            stack.pop();\n            stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n            break;\n          }\n\n          case \"]\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n            break;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_ARRAY_AFTER_COMMA\": {\n        processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n        break;\n      }\n\n      case \"INSIDE_STRING_ESCAPE\": {\n        stack.pop();\n        lastValidIndex = i;\n\n        break;\n      }\n\n      case \"INSIDE_NUMBER\": {\n        switch (char) {\n          case \"0\":\n          case \"1\":\n          case \"2\":\n          case \"3\":\n          case \"4\":\n          case \"5\":\n          case \"6\":\n          case \"7\":\n          case \"8\":\n          case \"9\": {\n            lastValidIndex = i;\n            break;\n          }\n\n          case \"e\":\n          case \"E\":\n          case \"-\":\n          case \".\": {\n            break;\n          }\n\n          case \",\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n              processAfterArrayValue(char, i);\n            }\n\n            if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n              processAfterObjectValue(char, i);\n            }\n\n            break;\n          }\n\n          case \"}\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n              processAfterObjectValue(char, i);\n            }\n\n            break;\n          }\n\n          case \"]\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n              processAfterArrayValue(char, i);\n            }\n\n            break;\n          }\n\n          default: {\n            stack.pop();\n            break;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_LITERAL\": {\n        const partialLiteral = input.substring(literalStart!, i + 1);\n\n        if (\n          !\"false\".startsWith(partialLiteral) &&\n          !\"true\".startsWith(partialLiteral) &&\n          !\"null\".startsWith(partialLiteral)\n        ) {\n          stack.pop();\n\n          if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n            processAfterObjectValue(char, i);\n          } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n            processAfterArrayValue(char, i);\n          }\n        } else {\n          lastValidIndex = i;\n        }\n\n        break;\n      }\n    }\n  }\n\n  let result = input.slice(0, lastValidIndex + 1);\n\n  for (let i = stack.length - 1; i >= 0; i--) {\n    const state = stack[i];\n\n    switch (state) {\n      case \"INSIDE_STRING\": {\n        result += '\"';\n        break;\n      }\n\n      case \"INSIDE_OBJECT_KEY\":\n      case \"INSIDE_OBJECT_AFTER_KEY\":\n      case \"INSIDE_OBJECT_AFTER_COMMA\":\n      case \"INSIDE_OBJECT_START\":\n      case \"INSIDE_OBJECT_BEFORE_VALUE\":\n      case \"INSIDE_OBJECT_AFTER_VALUE\": {\n        result += \"}\";\n        break;\n      }\n\n      case \"INSIDE_ARRAY_START\":\n      case \"INSIDE_ARRAY_AFTER_COMMA\":\n      case \"INSIDE_ARRAY_AFTER_VALUE\": {\n        result += \"]\";\n        break;\n      }\n\n      case \"INSIDE_LITERAL\": {\n        const partialLiteral = input.substring(literalStart!, input.length);\n\n        if (\"true\".startsWith(partialLiteral)) {\n          result += \"true\".slice(partialLiteral.length);\n        } else if (\"false\".startsWith(partialLiteral)) {\n          result += \"false\".slice(partialLiteral.length);\n        } else if (\"null\".startsWith(partialLiteral)) {\n          result += \"null\".slice(partialLiteral.length);\n        }\n      }\n    }\n  }\n\n  return result;\n}\n","import { ChatModelRunResult } from \"../../local/ChatModelAdapter\";\nimport { parsePartialJson } from \"../partial-json/parse-partial-json\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\nimport { MessageStatus, ToolCallContentPart } from \"../../../types\";\n\nexport function runResultStream() {\n  let message: ChatModelRunResult = {\n    content: [],\n    status: { type: \"running\" },\n  };\n\n  return new TransformStream<ToolResultStreamPart, ChatModelRunResult>({\n    transform(chunk, controller) {\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"text-delta\": {\n          message = appendOrUpdateText(message, chunk.textDelta);\n          controller.enqueue(message);\n          break;\n        }\n\n        case \"tool-call-delta\": {\n          const { toolCallId, toolName, argsTextDelta } = chunk;\n\n          message = appendOrUpdateToolCall(\n            message,\n            toolCallId,\n            toolName,\n            argsTextDelta,\n          );\n          controller.enqueue(message);\n          break;\n        }\n\n        case \"tool-call\":\n        case \"response-metadata\":\n          break;\n\n        case \"tool-result\": {\n          message = appendOrUpdateToolResult(\n            message,\n            chunk.toolCallId,\n            chunk.toolName,\n            chunk.result,\n          );\n          controller.enqueue(message);\n          break;\n        }\n        case \"step-finish\": {\n          message = appendOrUpdateStepFinish(message, chunk);\n          controller.enqueue(message);\n          break;\n        }\n        case \"finish\": {\n          message = appendOrUpdateFinish(message, chunk);\n          controller.enqueue(message);\n          break;\n        }\n        case \"error\": {\n          if (\n            chunk.error instanceof Error &&\n            chunk.error.name === \"AbortError\"\n          ) {\n            message = appendOrUpdateCancel(message);\n            controller.enqueue(message);\n            break;\n          } else {\n            throw chunk.error;\n          }\n        }\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n  });\n}\n\nconst appendOrUpdateText = (message: ChatModelRunResult, textDelta: string) => {\n  let contentParts = message.content ?? [];\n  let contentPart = message.content?.at(-1);\n  if (contentPart?.type !== \"text\") {\n    contentPart = { type: \"text\", text: textDelta };\n  } else {\n    contentParts = contentParts.slice(0, -1);\n    contentPart = { type: \"text\", text: contentPart.text + textDelta };\n  }\n  return {\n    ...message,\n    content: contentParts.concat([contentPart]),\n  };\n};\n\nconst appendOrUpdateToolCall = (\n  message: ChatModelRunResult,\n  toolCallId: string,\n  toolName: string,\n  argsTextDelta: string,\n): ChatModelRunResult => {\n  let contentParts = message.content ?? [];\n  let contentPartIdx = contentParts.findIndex(\n    (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n  );\n  let contentPart =\n    contentPartIdx === -1\n      ? null\n      : (contentParts[contentPartIdx] as ToolCallContentPart);\n\n  if (contentPart == null) {\n    contentPart = {\n      type: \"tool-call\",\n      toolCallId,\n      toolName,\n      argsText: argsTextDelta,\n      args: parsePartialJson(argsTextDelta),\n    };\n    contentParts = [...contentParts, contentPart];\n  } else {\n    const argsText = contentPart.argsText + argsTextDelta;\n    contentPart = {\n      ...contentPart,\n      argsText,\n      args: parsePartialJson(argsText),\n    };\n    contentParts = [\n      ...contentParts.slice(0, contentPartIdx),\n      contentPart,\n      ...contentParts.slice(contentPartIdx + 1),\n    ];\n  }\n\n  return {\n    ...message,\n    content: contentParts,\n  };\n};\n\nconst appendOrUpdateToolResult = (\n  message: ChatModelRunResult,\n  toolCallId: string,\n  toolName: string,\n  result: any,\n) => {\n  let found = false;\n  const newContentParts = message.content?.map((part) => {\n    if (part.type !== \"tool-call\" || part.toolCallId !== toolCallId)\n      return part;\n    found = true;\n\n    if (part.toolName !== toolName)\n      throw new Error(\n        `Tool call ${toolCallId} found with tool name ${part.toolName}, but expected ${toolName}`,\n      );\n\n    return {\n      ...part,\n      result,\n    };\n  });\n  if (!found)\n    throw new Error(\n      `Received tool result for unknown tool call \"${toolName}\" / \"${toolCallId}\". This is likely an internal bug in assistant-ui.`,\n    );\n\n  return {\n    ...message,\n    content: newContentParts!,\n  };\n};\n\nconst appendOrUpdateStepFinish = (\n  message: ChatModelRunResult,\n  chunk: ToolResultStreamPart & { type: \"step-finish\" },\n): ChatModelRunResult => {\n  const { type, ...rest } = chunk;\n  const steps = [\n    ...(message.metadata?.steps ?? []),\n    {\n      usage: rest.usage,\n    },\n  ];\n  return {\n    ...message,\n    status: getStatus(chunk),\n    metadata: {\n      ...message.metadata,\n      roundtrips: steps,\n      steps,\n    },\n  };\n};\n\nconst appendOrUpdateFinish = (\n  message: ChatModelRunResult,\n  chunk: LanguageModelV1StreamPart & { type: \"finish\" },\n): ChatModelRunResult => {\n  const { type, ...rest } = chunk;\n\n  const steps = [\n    ...(message.metadata?.steps ?? []),\n    {\n      logprobs: rest.logprobs,\n      usage: rest.usage,\n    },\n  ];\n  return {\n    ...message,\n    status: getStatus(chunk),\n    metadata: {\n      ...message.metadata,\n      roundtrips: steps,\n      steps,\n    },\n  };\n};\n\nconst getStatus = (\n  chunk:\n    | (LanguageModelV1StreamPart & { type: \"finish\" })\n    | (ToolResultStreamPart & { type: \"step-finish\" }),\n): MessageStatus => {\n  if (chunk.finishReason === \"tool-calls\") {\n    return {\n      type: \"requires-action\",\n      reason: \"tool-calls\",\n    };\n  } else if (\n    chunk.finishReason === \"stop\" ||\n    chunk.finishReason === \"unknown\"\n  ) {\n    return {\n      type: \"complete\",\n      reason: chunk.finishReason,\n    };\n  } else {\n    return {\n      type: \"incomplete\",\n      reason: chunk.finishReason,\n    };\n  }\n};\n\nconst appendOrUpdateCancel = (\n  message: ChatModelRunResult,\n): ChatModelRunResult => {\n  return {\n    ...message,\n    status: {\n      type: \"incomplete\",\n      reason: \"cancelled\",\n    },\n  };\n};\n","import { ThreadMessage, CoreMessage } from \"../../../types\";\n\nexport const toCoreMessages = (message: ThreadMessage[]): CoreMessage[] => {\n  return message.map(toCoreMessage);\n};\n\nexport const toCoreMessage = (message: ThreadMessage): CoreMessage => {\n  const role = message.role;\n  switch (role) {\n    case \"assistant\":\n      return {\n        role,\n        content: message.content.map((part) => {\n          if (part.type === \"ui\") throw new Error(\"UI parts are not supported\");\n          if (part.type === \"tool-call\") {\n            const { argsText, ...rest } = part;\n            return rest;\n          }\n          return part;\n        }),\n      };\n\n    case \"user\":\n      return {\n        role,\n        content: [\n          ...message.content.map((part) => {\n            if (part.type === \"ui\")\n              throw new Error(\"UI parts are not supported\");\n            return part;\n          }),\n          ...message.attachments.map((a) => a.content).flat(),\n        ],\n      };\n\n    case \"system\":\n      return {\n        role,\n        content: message.content,\n      };\n\n    default: {\n      const unsupportedRole: never = role;\n      throw new Error(`Unknown message role: ${unsupportedRole}`);\n    }\n  }\n};\n","export class PipeableTransformStream<I, O> extends TransformStream<I, O> {\n  constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>) {\n    super();\n    const readable = transform(super.readable as any);\n    Object.defineProperty(this, \"readable\", {\n      value: readable,\n      writable: false,\n    });\n  }\n}\n","import { PipeableTransformStream } from \"./PipeableTransformStream\";\nimport { StreamPart } from \"./StreamPart\";\n\nfunction encodeStreamPart<T extends Record<string, unknown>>({\n  type,\n  value,\n}: StreamPart<T>): string {\n  return `${type as string}:${JSON.stringify(value)}\\n`;\n}\n\nexport function streamPartEncoderStream<T extends Record<string, unknown>>() {\n  const encodeStream = new TransformStream<StreamPart<T>, string>({\n    transform(chunk, controller) {\n      controller.enqueue(encodeStreamPart<T>(chunk));\n    },\n  });\n\n  return new PipeableTransformStream((readable) => {\n    return readable\n      .pipeThrough(encodeStream)\n      .pipeThrough(new TextEncoderStream());\n  });\n}\n","import {\n  LanguageModelV1,\n  LanguageModelV1ToolChoice,\n  LanguageModelV1FunctionTool,\n  LanguageModelV1Prompt,\n  LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n  CoreMessage,\n  ThreadMessage,\n  ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { Tool } from \"../../types\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n  toolResultStream,\n  ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n  LanguageModelConfig,\n  LanguageModelV1CallSettings,\n  LanguageModelV1CallSettingsSchema,\n} from \"../../types/ModelConfigTypes\";\nimport { ChatModelRunResult } from \"../local\";\nimport { toCoreMessage } from \"./converters/toCoreMessages\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n  messages: CoreMessage[];\n  metadata: {\n    /**\n     * @deprecated Use `steps` instead. This field will be removed in v0.6.\n     */\n    roundtrips: ThreadStep[];\n    steps: ThreadStep[];\n  };\n};\n\ntype LanguageModelCreator = (\n  config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n  model: LanguageModelV1 | LanguageModelCreator;\n  system?: string;\n  tools?: Record<string, Tool<any, any>>;\n  toolChoice?: LanguageModelV1ToolChoice;\n  onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n  return new WritableStream({\n    abort(reason) {\n      console.error(\"Server stream processing aborted:\", reason);\n    },\n  });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n  abortSignal: AbortSignal;\n  requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n  options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n  abortSignal,\n  requestData: unsafeRequest,\n  options: {\n    model: modelOrCreator,\n    system: serverSystem,\n    tools: serverTools = {},\n    toolChoice,\n    onFinish,\n    ...unsafeSettings\n  },\n}: GetEdgeRuntimeStreamOptions) => {\n  const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n  const lmServerTools = toLanguageModelTools(serverTools);\n  const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n  const {\n    system: clientSystem,\n    tools: clientTools = [],\n    messages,\n    apiKey,\n    baseUrl,\n    modelName,\n    ...callSettings\n  } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n  const systemMessages = [];\n  if (serverSystem) systemMessages.push(serverSystem);\n  if (clientSystem) systemMessages.push(clientSystem);\n  const system = systemMessages.join(\"\\n\\n\");\n\n  for (const clientTool of clientTools) {\n    if (serverTools?.[clientTool.name]) {\n      throw new Error(\n        `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n      );\n    }\n  }\n\n  const model =\n    typeof modelOrCreator === \"function\"\n      ? await modelOrCreator({ apiKey, baseUrl, modelName })\n      : modelOrCreator;\n\n  let stream: ReadableStream<ToolResultStreamPart>;\n  const streamResult = await streamMessage({\n    ...(settings as Partial<StreamMessageOptions>),\n    ...callSettings,\n\n    model,\n    abortSignal,\n\n    ...(!!system ? { system } : undefined),\n    messages,\n    tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n    ...(toolChoice ? { toolChoice } : undefined),\n  });\n  stream = streamResult.stream;\n\n  // add tool results if we have server tools\n  const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n  if (canExecuteTools) {\n    stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n  }\n\n  if (canExecuteTools || onFinish) {\n    // tee the stream to process server tools and onFinish asap\n    const tees = stream.tee();\n    stream = tees[0];\n    let serverStream = tees[1];\n\n    if (onFinish) {\n      let lastChunk: ChatModelRunResult;\n      serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n        new TransformStream({\n          transform(chunk) {\n            lastChunk = chunk;\n          },\n          flush() {\n            if (!lastChunk?.status || lastChunk.status.type === \"running\")\n              return;\n\n            const resultingMessages = [\n              ...messages,\n              toCoreMessage({\n                role: \"assistant\",\n                content: lastChunk.content,\n              } as ThreadMessage),\n            ];\n            onFinish({\n              messages: resultingMessages,\n              metadata: {\n                // TODO\n                // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n                roundtrips: lastChunk.metadata?.steps!,\n                // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n                steps: lastChunk.metadata?.steps!,\n              },\n            });\n          },\n        }),\n      );\n    }\n\n    // drain the server stream\n    serverStream.pipeTo(voidStream()).catch((e) => {\n      console.error(\"Server stream processing error:\", e);\n    });\n  }\n\n  return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n  export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n  options: getEdgeRuntimeResponse.Options,\n) => {\n  const stream = await getEdgeRuntimeStream(options);\n  return new Response(\n    stream\n      .pipeThrough(assistantEncoderStream())\n      .pipeThrough(streamPartEncoderStream()),\n    {\n      headers: {\n        \"Content-Type\": \"text/plain; charset=utf-8\",\n      },\n    },\n  );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n  POST: async (request: Request) =>\n    getEdgeRuntimeResponse({\n      abortSignal: request.signal,\n      requestData: await request.json(),\n      options,\n    }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n  model: LanguageModelV1;\n  system?: string;\n  messages: CoreMessage[];\n  tools?: LanguageModelV1FunctionTool[];\n  toolChoice?: LanguageModelV1ToolChoice;\n  abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n  model,\n  system,\n  messages,\n  tools,\n  toolChoice,\n  ...options\n}: StreamMessageOptions) {\n  return model.doStream({\n    inputFormat: \"messages\",\n    mode: {\n      type: \"regular\",\n      ...(tools ? { tools } : undefined),\n      ...(toolChoice ? { toolChoice } : undefined),\n    },\n    prompt: convertToLanguageModelPrompt(system, messages),\n    ...(options as Partial<LanguageModelV1CallOptions>),\n  });\n}\n\nexport function convertToLanguageModelPrompt(\n  system: string | undefined,\n  messages: CoreMessage[],\n): LanguageModelV1Prompt {\n  const languageModelMessages: LanguageModelV1Prompt = [];\n\n  if (system != null) {\n    languageModelMessages.push({ role: \"system\", content: system });\n  }\n  languageModelMessages.push(...toLanguageModelMessages(messages));\n\n  return languageModelMessages;\n}\n"],"mappings":"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","names":["import_zod","message","import_zod","zodToJsonSchema","import_zod","sjson","result","import_secure_json_parse","sjson"]}
         | 
| 1 | 
            +
            {"version":3,"sources":["../src/edge.ts","../src/runtimes/edge/streams/assistantEncoderStream.ts","../src/types/ModelConfigTypes.ts","../src/runtimes/edge/EdgeRuntimeRequestOptions.ts","../src/runtimes/edge/converters/toLanguageModelMessages.ts","../src/runtimes/edge/converters/toLanguageModelTools.ts","../src/runtimes/edge/streams/toolResultStream.ts","../src/runtimes/edge/partial-json/parse-partial-json.ts","../src/runtimes/edge/partial-json/fix-json.ts","../src/runtimes/edge/streams/runResultStream.ts","../src/runtimes/edge/converters/toCoreMessages.ts","../src/runtimes/edge/streams/utils/PipeableTransformStream.ts","../src/runtimes/edge/streams/utils/streamPartEncoderStream.ts","../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["export {\n  createEdgeRuntimeAPI,\n  getEdgeRuntimeResponse,\n} from \"./runtimes/edge/createEdgeRuntimeAPI\";\n","import {\n  AssistantStreamChunk,\n  AssistantStreamChunkType,\n} from \"./AssistantStreamChunkType\";\nimport { StreamPart } from \"./utils/StreamPart\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\n\nexport function assistantEncoderStream() {\n  const toolCalls = new Set<string>();\n  return new TransformStream<\n    ToolResultStreamPart,\n    StreamPart<AssistantStreamChunk>\n  >({\n    transform(chunk, controller) {\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"text-delta\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.TextDelta,\n            value: chunk.textDelta,\n          });\n          break;\n        }\n        case \"tool-call-delta\": {\n          if (!toolCalls.has(chunk.toolCallId)) {\n            toolCalls.add(chunk.toolCallId);\n            controller.enqueue({\n              type: AssistantStreamChunkType.ToolCallBegin,\n              value: {\n                toolCallId: chunk.toolCallId,\n                toolName: chunk.toolName,\n              },\n            });\n          }\n\n          controller.enqueue({\n            type: AssistantStreamChunkType.ToolCallDelta,\n            value: {\n              toolCallId: chunk.toolCallId,\n              argsTextDelta: chunk.argsTextDelta,\n            },\n          });\n          break;\n        }\n\n        // ignore\n        case \"tool-call\":\n        case \"response-metadata\":\n          break;\n\n        case \"tool-result\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.ToolCallResult,\n            value: {\n              toolCallId: chunk.toolCallId,\n              result: chunk.result,\n            },\n          });\n          break;\n        }\n\n        case \"step-finish\": {\n          const { type, ...rest } = chunk;\n          controller.enqueue({\n            type: AssistantStreamChunkType.StepFinish,\n            value: rest,\n          });\n          break;\n        }\n\n        case \"finish\": {\n          const { type, ...rest } = chunk;\n          controller.enqueue({\n            type: AssistantStreamChunkType.Finish,\n            value: rest,\n          });\n          break;\n        }\n\n        case \"error\": {\n          controller.enqueue({\n            type: AssistantStreamChunkType.Error,\n            value: chunk.error,\n          });\n          break;\n        }\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n  });\n}\n","import { z } from \"zod\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { Unsubscribe } from \"./Unsubscribe\";\n\nexport const LanguageModelV1CallSettingsSchema = z.object({\n  maxTokens: z.number().int().positive().optional(),\n  temperature: z.number().optional(),\n  topP: z.number().optional(),\n  presencePenalty: z.number().optional(),\n  frequencyPenalty: z.number().optional(),\n  seed: z.number().int().optional(),\n  headers: z.record(z.string().optional()).optional(),\n});\n\nexport type LanguageModelV1CallSettings = z.infer<\n  typeof LanguageModelV1CallSettingsSchema\n>;\n\nexport const LanguageModelConfigSchema = z.object({\n  apiKey: z.string().optional(),\n  baseUrl: z.string().optional(),\n  modelName: z.string().optional(),\n});\n\nexport type LanguageModelConfig = z.infer<typeof LanguageModelConfigSchema>;\n\ntype ToolExecuteFunction<TArgs, TResult> = (\n  args: TArgs,\n  context: {\n    abortSignal: AbortSignal;\n  },\n) => TResult | Promise<TResult>;\n\nexport type Tool<\n  TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n  TResult = unknown,\n> = {\n  description?: string | undefined;\n  parameters: z.ZodSchema<TArgs> | JSONSchema7;\n  execute?: ToolExecuteFunction<TArgs, TResult>;\n};\n\nexport type ModelConfig = {\n  priority?: number | undefined;\n  system?: string | undefined;\n  tools?: Record<string, Tool<any, any>> | undefined;\n  callSettings?: LanguageModelV1CallSettings | undefined;\n  config?: LanguageModelConfig | undefined;\n};\n\nexport type ModelConfigProvider = {\n  getModelConfig: () => ModelConfig;\n  subscribe?: (callback: () => void) => Unsubscribe;\n};\n\nexport const mergeModelConfigs = (\n  configSet: Set<ModelConfigProvider>,\n): ModelConfig => {\n  const configs = Array.from(configSet)\n    .map((c) => c.getModelConfig())\n    .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n\n  return configs.reduce((acc, config) => {\n    if (config.system) {\n      if (acc.system) {\n        // TODO should the separator be configurable?\n        acc.system += `\\n\\n${config.system}`;\n      } else {\n        acc.system = config.system;\n      }\n    }\n    if (config.tools) {\n      for (const [name, tool] of Object.entries(config.tools)) {\n        if (acc.tools?.[name]) {\n          throw new Error(\n            `You tried to define a tool with the name ${name}, but it already exists.`,\n          );\n        }\n        if (!acc.tools) acc.tools = {};\n        acc.tools[name] = tool;\n      }\n    }\n    if (config.config) {\n      acc.config = {\n        ...acc.config,\n        ...config.config,\n      };\n    }\n    if (config.callSettings) {\n      acc.callSettings = {\n        ...acc.callSettings,\n        ...config.callSettings,\n      };\n    }\n    return acc;\n  }, {} as ModelConfig);\n};\n","import { JSONSchema7 } from \"json-schema\";\nimport {\n  LanguageModelConfigSchema,\n  LanguageModelV1CallSettingsSchema,\n} from \"../../types/ModelConfigTypes\";\nimport { z } from \"zod\";\n\nconst LanguageModelV1FunctionToolSchema = z.object({\n  type: z.literal(\"function\"),\n  name: z.string(),\n  description: z.string().optional(),\n  parameters: z.custom<JSONSchema7>(\n    (val) => typeof val === \"object\" && val !== null,\n  ),\n});\n\nconst TextContentPartSchema = z.object({\n  type: z.literal(\"text\"),\n  text: z.string(),\n});\n\nconst ImageContentPartSchema = z.object({\n  type: z.literal(\"image\"),\n  image: z.string(),\n});\n\nconst CoreToolCallContentPartSchema = z.object({\n  type: z.literal(\"tool-call\"),\n  toolCallId: z.string(),\n  toolName: z.string(),\n  args: z.record(z.unknown()),\n  result: z.unknown().optional(),\n  isError: z.boolean().optional(),\n});\n// args is required but unknown;\n\nconst CoreUserMessageSchema = z.object({\n  role: z.literal(\"user\"),\n  content: z\n    .array(\n      z.discriminatedUnion(\"type\", [\n        TextContentPartSchema,\n        ImageContentPartSchema,\n      ]),\n    )\n    .min(1),\n});\n\nconst CoreAssistantMessageSchema = z.object({\n  role: z.literal(\"assistant\"),\n  content: z\n    .array(\n      z.discriminatedUnion(\"type\", [\n        TextContentPartSchema,\n        CoreToolCallContentPartSchema,\n      ]),\n    )\n    .min(1),\n});\n\nconst CoreSystemMessageSchema = z.object({\n  role: z.literal(\"system\"),\n  content: z.tuple([TextContentPartSchema]),\n});\n\nconst CoreMessageSchema = z.discriminatedUnion(\"role\", [\n  CoreSystemMessageSchema,\n  CoreUserMessageSchema,\n  CoreAssistantMessageSchema,\n]);\n\nexport const EdgeRuntimeRequestOptionsSchema = z\n  .object({\n    system: z.string().optional(),\n    messages: z.array(CoreMessageSchema).min(1),\n    tools: z.array(LanguageModelV1FunctionToolSchema).optional(),\n  })\n  .merge(LanguageModelV1CallSettingsSchema)\n  .merge(LanguageModelConfigSchema);\n\nexport type EdgeRuntimeRequestOptions = z.infer<\n  typeof EdgeRuntimeRequestOptionsSchema\n>;\n","import {\n  LanguageModelV1ImagePart,\n  LanguageModelV1Message,\n  LanguageModelV1TextPart,\n  LanguageModelV1ToolCallPart,\n  LanguageModelV1ToolResultPart,\n} from \"@ai-sdk/provider\";\nimport {\n  CoreMessage,\n  ThreadMessage,\n  TextContentPart,\n  CoreToolCallContentPart,\n} from \"../../../types/AssistantTypes\";\n\nconst assistantMessageSplitter = () => {\n  const stash: LanguageModelV1Message[] = [];\n  let assistantMessage = {\n    role: \"assistant\" as const,\n    content: [] as (LanguageModelV1TextPart | LanguageModelV1ToolCallPart)[],\n  };\n  let toolMessage = {\n    role: \"tool\" as const,\n    content: [] as LanguageModelV1ToolResultPart[],\n  };\n\n  return {\n    addTextContentPart: (part: TextContentPart) => {\n      if (toolMessage.content.length > 0) {\n        stash.push(assistantMessage);\n        stash.push(toolMessage);\n\n        assistantMessage = {\n          role: \"assistant\" as const,\n          content: [] as (\n            | LanguageModelV1TextPart\n            | LanguageModelV1ToolCallPart\n          )[],\n        };\n\n        toolMessage = {\n          role: \"tool\" as const,\n          content: [] as LanguageModelV1ToolResultPart[],\n        };\n      }\n\n      assistantMessage.content.push(part);\n    },\n    addToolCallPart: (part: CoreToolCallContentPart) => {\n      assistantMessage.content.push({\n        type: \"tool-call\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        args: part.args,\n      });\n\n      toolMessage.content.push({\n        type: \"tool-result\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        result: part.result ?? \"<no result>\",\n        isError: part.isError ?? false,\n      });\n    },\n    getMessages: () => {\n      if (toolMessage.content.length > 0) {\n        return [...stash, assistantMessage, toolMessage];\n      }\n\n      return [...stash, assistantMessage];\n    },\n  };\n};\n\nexport function toLanguageModelMessages(\n  message: readonly CoreMessage[] | readonly ThreadMessage[],\n): LanguageModelV1Message[] {\n  return message.flatMap((message) => {\n    const role = message.role;\n    switch (role) {\n      case \"system\": {\n        return [{ role: \"system\", content: message.content[0].text }];\n      }\n\n      case \"user\": {\n        const msg: LanguageModelV1Message = {\n          role: \"user\",\n          content: message.content.map(\n            (part): LanguageModelV1TextPart | LanguageModelV1ImagePart => {\n              const type = part.type;\n              switch (type) {\n                case \"text\": {\n                  return part;\n                }\n\n                case \"image\": {\n                  return {\n                    type: \"image\",\n                    image: new URL(part.image),\n                  };\n                }\n\n                default: {\n                  const unhandledType: \"ui\" = type;\n                  throw new Error(\n                    `Unspported content part type: ${unhandledType}`,\n                  );\n                }\n              }\n            },\n          ),\n        };\n        return [msg];\n      }\n\n      case \"assistant\": {\n        const splitter = assistantMessageSplitter();\n        for (const part of message.content) {\n          const type = part.type;\n          switch (type) {\n            case \"text\": {\n              splitter.addTextContentPart(part);\n              break;\n            }\n            case \"tool-call\": {\n              splitter.addToolCallPart(part);\n              break;\n            }\n            default: {\n              const unhandledType: \"ui\" = type;\n              throw new Error(`Unhandled content part type: ${unhandledType}`);\n            }\n          }\n        }\n        return splitter.getMessages();\n      }\n\n      default: {\n        const unhandledRole: never = role;\n        throw new Error(`Unknown message role: ${unhandledRole}`);\n      }\n    }\n  });\n}\n","import { LanguageModelV1FunctionTool } from \"@ai-sdk/provider\";\nimport { JSONSchema7 } from \"json-schema\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { Tool } from \"../../../types/ModelConfigTypes\";\n\nexport const toLanguageModelTools = (\n  tools: Record<string, Tool<any, any>>,\n): LanguageModelV1FunctionTool[] => {\n  return Object.entries(tools).map(([name, tool]) => ({\n    type: \"function\",\n    name,\n    ...(tool.description ? { description: tool.description } : undefined),\n    parameters: (tool.parameters instanceof z.ZodType\n      ? zodToJsonSchema(tool.parameters)\n      : tool.parameters) as JSONSchema7,\n  }));\n};\n","import { Tool } from \"../../../types/ModelConfigTypes\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { z } from \"zod\";\nimport sjson from \"secure-json-parse\";\n\nexport type ToolResultStreamPart =\n  | LanguageModelV1StreamPart\n  | {\n      type: \"tool-result\";\n      toolCallType: \"function\";\n      toolCallId: string;\n      toolName: string;\n      result: unknown;\n      isError?: boolean;\n    }\n  | {\n      type: \"step-finish\";\n      finishReason:\n        | \"stop\"\n        | \"length\"\n        | \"content-filter\"\n        | \"tool-calls\"\n        | \"error\"\n        | \"other\"\n        | \"unknown\";\n      usage: {\n        promptTokens: number;\n        completionTokens: number;\n      };\n      isContinued: boolean;\n    };\n\nexport function toolResultStream(\n  tools: Record<string, Tool> | undefined,\n  abortSignal: AbortSignal,\n) {\n  const toolCallExecutions = new Map<string, Promise<any>>();\n\n  return new TransformStream<ToolResultStreamPart, ToolResultStreamPart>({\n    transform(chunk, controller) {\n      // forward everything\n      controller.enqueue(chunk);\n\n      // handle tool calls\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"tool-call\": {\n          const { toolCallId, toolCallType, toolName, args: argsText } = chunk;\n          const tool = tools?.[toolName];\n          if (!tool || !tool.execute) return;\n\n          const args = sjson.parse(argsText);\n          if (tool.parameters instanceof z.ZodType) {\n            const result = tool.parameters.safeParse(args);\n            if (!result.success) {\n              controller.enqueue({\n                type: \"tool-result\",\n                toolCallType,\n                toolCallId,\n                toolName,\n                result:\n                  \"Function parameter validation failed. \" +\n                  JSON.stringify(result.error.issues),\n                isError: true,\n              });\n              return;\n            } else {\n              toolCallExecutions.set(\n                toolCallId,\n                (async () => {\n                  if (!tool.execute) return;\n\n                  try {\n                    const result = await tool.execute(args, { abortSignal });\n\n                    controller.enqueue({\n                      type: \"tool-result\",\n                      toolCallType,\n                      toolCallId,\n                      toolName,\n                      result,\n                    });\n                  } catch (error) {\n                    controller.enqueue({\n                      type: \"tool-result\",\n                      toolCallType,\n                      toolCallId,\n                      toolName,\n                      result: \"Error: \" + error,\n                      isError: true,\n                    });\n                  } finally {\n                    toolCallExecutions.delete(toolCallId);\n                  }\n                })(),\n              );\n            }\n          }\n          break;\n        }\n\n        // ignore other parts\n        case \"text-delta\":\n        case \"tool-call-delta\":\n        case \"tool-result\":\n        case \"step-finish\":\n        case \"finish\":\n        case \"error\":\n        case \"response-metadata\":\n          break;\n\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n\n    async flush() {\n      await Promise.all(toolCallExecutions.values());\n    },\n  });\n}\n","import sjson from \"secure-json-parse\";\nimport { fixJson } from \"./fix-json\";\n\nexport const parsePartialJson = (json: string) => {\n  try {\n    return sjson.parse(json);\n  } catch {\n    try {\n      return sjson.parse(fixJson(json));\n    } catch {\n      return undefined;\n    }\n  }\n};\n","// LICENSE for this file only\n\n// Copyright 2023 Vercel, Inc.\n\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n//     http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\ntype State =\n  | \"ROOT\"\n  | \"FINISH\"\n  | \"INSIDE_STRING\"\n  | \"INSIDE_STRING_ESCAPE\"\n  | \"INSIDE_LITERAL\"\n  | \"INSIDE_NUMBER\"\n  | \"INSIDE_OBJECT_START\"\n  | \"INSIDE_OBJECT_KEY\"\n  | \"INSIDE_OBJECT_AFTER_KEY\"\n  | \"INSIDE_OBJECT_BEFORE_VALUE\"\n  | \"INSIDE_OBJECT_AFTER_VALUE\"\n  | \"INSIDE_OBJECT_AFTER_COMMA\"\n  | \"INSIDE_ARRAY_START\"\n  | \"INSIDE_ARRAY_AFTER_VALUE\"\n  | \"INSIDE_ARRAY_AFTER_COMMA\";\n\n// Implemented as a scanner with additional fixing\n// that performs a single linear time scan pass over the partial JSON.\n//\n// The states should ideally match relevant states from the JSON spec:\n// https://www.json.org/json-en.html\n//\n// Please note that invalid JSON is not considered/covered, because it\n// is assumed that the resulting JSON will be processed by a standard\n// JSON parser that will detect any invalid JSON.\nexport function fixJson(input: string): string {\n  const stack: State[] = [\"ROOT\"];\n  let lastValidIndex = -1;\n  let literalStart: number | null = null;\n\n  function processValueStart(char: string, i: number, swapState: State) {\n    {\n      switch (char) {\n        case '\"': {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_STRING\");\n          break;\n        }\n\n        case \"f\":\n        case \"t\":\n        case \"n\": {\n          lastValidIndex = i;\n          literalStart = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_LITERAL\");\n          break;\n        }\n\n        case \"-\": {\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_NUMBER\");\n          break;\n        }\n        case \"0\":\n        case \"1\":\n        case \"2\":\n        case \"3\":\n        case \"4\":\n        case \"5\":\n        case \"6\":\n        case \"7\":\n        case \"8\":\n        case \"9\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_NUMBER\");\n          break;\n        }\n\n        case \"{\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_OBJECT_START\");\n          break;\n        }\n\n        case \"[\": {\n          lastValidIndex = i;\n          stack.pop();\n          stack.push(swapState);\n          stack.push(\"INSIDE_ARRAY_START\");\n          break;\n        }\n      }\n    }\n  }\n\n  function processAfterObjectValue(char: string, i: number) {\n    switch (char) {\n      case \",\": {\n        stack.pop();\n        stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n        break;\n      }\n      case \"}\": {\n        lastValidIndex = i;\n        stack.pop();\n        break;\n      }\n    }\n  }\n\n  function processAfterArrayValue(char: string, i: number) {\n    switch (char) {\n      case \",\": {\n        stack.pop();\n        stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n        break;\n      }\n      case \"]\": {\n        lastValidIndex = i;\n        stack.pop();\n        break;\n      }\n    }\n  }\n\n  for (let i = 0; i < input.length; i++) {\n    const char = input[i]!;\n    const currentState = stack[stack.length - 1];\n\n    switch (currentState) {\n      case \"ROOT\":\n        processValueStart(char, i, \"FINISH\");\n        break;\n\n      case \"INSIDE_OBJECT_START\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_KEY\");\n            break;\n          }\n          case \"}\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_COMMA\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_KEY\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_KEY\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_KEY\": {\n        switch (char) {\n          case \":\": {\n            stack.pop();\n            stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n        processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n        break;\n      }\n\n      case \"INSIDE_OBJECT_AFTER_VALUE\": {\n        processAfterObjectValue(char, i);\n        break;\n      }\n\n      case \"INSIDE_STRING\": {\n        switch (char) {\n          case '\"': {\n            stack.pop();\n            lastValidIndex = i;\n            break;\n          }\n\n          case \"\\\\\": {\n            stack.push(\"INSIDE_STRING_ESCAPE\");\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_ARRAY_START\": {\n        switch (char) {\n          case \"]\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n            processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n            break;\n          }\n        }\n        break;\n      }\n\n      case \"INSIDE_ARRAY_AFTER_VALUE\": {\n        switch (char) {\n          case \",\": {\n            stack.pop();\n            stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n            break;\n          }\n\n          case \"]\": {\n            lastValidIndex = i;\n            stack.pop();\n            break;\n          }\n\n          default: {\n            lastValidIndex = i;\n            break;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_ARRAY_AFTER_COMMA\": {\n        processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n        break;\n      }\n\n      case \"INSIDE_STRING_ESCAPE\": {\n        stack.pop();\n        lastValidIndex = i;\n\n        break;\n      }\n\n      case \"INSIDE_NUMBER\": {\n        switch (char) {\n          case \"0\":\n          case \"1\":\n          case \"2\":\n          case \"3\":\n          case \"4\":\n          case \"5\":\n          case \"6\":\n          case \"7\":\n          case \"8\":\n          case \"9\": {\n            lastValidIndex = i;\n            break;\n          }\n\n          case \"e\":\n          case \"E\":\n          case \"-\":\n          case \".\": {\n            break;\n          }\n\n          case \",\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n              processAfterArrayValue(char, i);\n            }\n\n            if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n              processAfterObjectValue(char, i);\n            }\n\n            break;\n          }\n\n          case \"}\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n              processAfterObjectValue(char, i);\n            }\n\n            break;\n          }\n\n          case \"]\": {\n            stack.pop();\n\n            if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n              processAfterArrayValue(char, i);\n            }\n\n            break;\n          }\n\n          default: {\n            stack.pop();\n            break;\n          }\n        }\n\n        break;\n      }\n\n      case \"INSIDE_LITERAL\": {\n        const partialLiteral = input.substring(literalStart!, i + 1);\n\n        if (\n          !\"false\".startsWith(partialLiteral) &&\n          !\"true\".startsWith(partialLiteral) &&\n          !\"null\".startsWith(partialLiteral)\n        ) {\n          stack.pop();\n\n          if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n            processAfterObjectValue(char, i);\n          } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n            processAfterArrayValue(char, i);\n          }\n        } else {\n          lastValidIndex = i;\n        }\n\n        break;\n      }\n    }\n  }\n\n  let result = input.slice(0, lastValidIndex + 1);\n\n  for (let i = stack.length - 1; i >= 0; i--) {\n    const state = stack[i];\n\n    switch (state) {\n      case \"INSIDE_STRING\": {\n        result += '\"';\n        break;\n      }\n\n      case \"INSIDE_OBJECT_KEY\":\n      case \"INSIDE_OBJECT_AFTER_KEY\":\n      case \"INSIDE_OBJECT_AFTER_COMMA\":\n      case \"INSIDE_OBJECT_START\":\n      case \"INSIDE_OBJECT_BEFORE_VALUE\":\n      case \"INSIDE_OBJECT_AFTER_VALUE\": {\n        result += \"}\";\n        break;\n      }\n\n      case \"INSIDE_ARRAY_START\":\n      case \"INSIDE_ARRAY_AFTER_COMMA\":\n      case \"INSIDE_ARRAY_AFTER_VALUE\": {\n        result += \"]\";\n        break;\n      }\n\n      case \"INSIDE_LITERAL\": {\n        const partialLiteral = input.substring(literalStart!, input.length);\n\n        if (\"true\".startsWith(partialLiteral)) {\n          result += \"true\".slice(partialLiteral.length);\n        } else if (\"false\".startsWith(partialLiteral)) {\n          result += \"false\".slice(partialLiteral.length);\n        } else if (\"null\".startsWith(partialLiteral)) {\n          result += \"null\".slice(partialLiteral.length);\n        }\n      }\n    }\n  }\n\n  return result;\n}\n","import { ChatModelRunResult } from \"../../local/ChatModelAdapter\";\nimport { parsePartialJson } from \"../partial-json/parse-partial-json\";\nimport { LanguageModelV1StreamPart } from \"@ai-sdk/provider\";\nimport { ToolResultStreamPart } from \"./toolResultStream\";\nimport { MessageStatus, ToolCallContentPart } from \"../../../types\";\n\nexport function runResultStream() {\n  let message: ChatModelRunResult = {\n    content: [],\n    status: { type: \"running\" },\n  };\n\n  return new TransformStream<ToolResultStreamPart, ChatModelRunResult>({\n    transform(chunk, controller) {\n      const chunkType = chunk.type;\n      switch (chunkType) {\n        case \"text-delta\": {\n          message = appendOrUpdateText(message, chunk.textDelta);\n          controller.enqueue(message);\n          break;\n        }\n\n        case \"tool-call-delta\": {\n          const { toolCallId, toolName, argsTextDelta } = chunk;\n\n          message = appendOrUpdateToolCall(\n            message,\n            toolCallId,\n            toolName,\n            argsTextDelta,\n          );\n          controller.enqueue(message);\n          break;\n        }\n\n        case \"tool-call\":\n        case \"response-metadata\":\n          break;\n\n        case \"tool-result\": {\n          message = appendOrUpdateToolResult(\n            message,\n            chunk.toolCallId,\n            chunk.toolName,\n            chunk.result,\n          );\n          controller.enqueue(message);\n          break;\n        }\n        case \"step-finish\": {\n          message = appendOrUpdateStepFinish(message, chunk);\n          controller.enqueue(message);\n          break;\n        }\n        case \"finish\": {\n          message = appendOrUpdateFinish(message, chunk);\n          controller.enqueue(message);\n          break;\n        }\n        case \"error\": {\n          if (\n            chunk.error instanceof Error &&\n            chunk.error.name === \"AbortError\"\n          ) {\n            message = appendOrUpdateCancel(message);\n            controller.enqueue(message);\n            break;\n          } else {\n            throw chunk.error;\n          }\n        }\n        default: {\n          const unhandledType: never = chunkType;\n          throw new Error(`Unhandled chunk type: ${unhandledType}`);\n        }\n      }\n    },\n  });\n}\n\nconst appendOrUpdateText = (message: ChatModelRunResult, textDelta: string) => {\n  let contentParts = message.content ?? [];\n  let contentPart = message.content?.at(-1);\n  if (contentPart?.type !== \"text\") {\n    contentPart = { type: \"text\", text: textDelta };\n  } else {\n    contentParts = contentParts.slice(0, -1);\n    contentPart = { type: \"text\", text: contentPart.text + textDelta };\n  }\n  return {\n    ...message,\n    content: contentParts.concat([contentPart]),\n  };\n};\n\nconst appendOrUpdateToolCall = (\n  message: ChatModelRunResult,\n  toolCallId: string,\n  toolName: string,\n  argsTextDelta: string,\n): ChatModelRunResult => {\n  let contentParts = message.content ?? [];\n  let contentPartIdx = contentParts.findIndex(\n    (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n  );\n  let contentPart =\n    contentPartIdx === -1\n      ? null\n      : (contentParts[contentPartIdx] as ToolCallContentPart);\n\n  if (contentPart == null) {\n    contentPart = {\n      type: \"tool-call\",\n      toolCallId,\n      toolName,\n      argsText: argsTextDelta,\n      args: parsePartialJson(argsTextDelta),\n    };\n    contentParts = [...contentParts, contentPart];\n  } else {\n    const argsText = contentPart.argsText + argsTextDelta;\n    contentPart = {\n      ...contentPart,\n      argsText,\n      args: parsePartialJson(argsText),\n    };\n    contentParts = [\n      ...contentParts.slice(0, contentPartIdx),\n      contentPart,\n      ...contentParts.slice(contentPartIdx + 1),\n    ];\n  }\n\n  return {\n    ...message,\n    content: contentParts,\n  };\n};\n\nconst appendOrUpdateToolResult = (\n  message: ChatModelRunResult,\n  toolCallId: string,\n  toolName: string,\n  result: any,\n) => {\n  let found = false;\n  const newContentParts = message.content?.map((part) => {\n    if (part.type !== \"tool-call\" || part.toolCallId !== toolCallId)\n      return part;\n    found = true;\n\n    if (part.toolName !== toolName)\n      throw new Error(\n        `Tool call ${toolCallId} found with tool name ${part.toolName}, but expected ${toolName}`,\n      );\n\n    return {\n      ...part,\n      result,\n    };\n  });\n  if (!found)\n    throw new Error(\n      `Received tool result for unknown tool call \"${toolName}\" / \"${toolCallId}\". This is likely an internal bug in assistant-ui.`,\n    );\n\n  return {\n    ...message,\n    content: newContentParts!,\n  };\n};\n\nconst appendOrUpdateStepFinish = (\n  message: ChatModelRunResult,\n  chunk: ToolResultStreamPart & { type: \"step-finish\" },\n): ChatModelRunResult => {\n  const { type, ...rest } = chunk;\n  const steps = [\n    ...(message.metadata?.steps ?? []),\n    {\n      usage: rest.usage,\n    },\n  ];\n  return {\n    ...message,\n    status: getStatus(chunk),\n    metadata: {\n      ...message.metadata,\n      roundtrips: steps,\n      steps,\n    },\n  };\n};\n\nconst appendOrUpdateFinish = (\n  message: ChatModelRunResult,\n  chunk: LanguageModelV1StreamPart & { type: \"finish\" },\n): ChatModelRunResult => {\n  const { type, ...rest } = chunk;\n\n  const steps = [\n    ...(message.metadata?.steps ?? []),\n    {\n      logprobs: rest.logprobs,\n      usage: rest.usage,\n    },\n  ];\n  return {\n    ...message,\n    status: getStatus(chunk),\n    metadata: {\n      ...message.metadata,\n      roundtrips: steps,\n      steps,\n    },\n  };\n};\n\nconst getStatus = (\n  chunk:\n    | (LanguageModelV1StreamPart & { type: \"finish\" })\n    | (ToolResultStreamPart & { type: \"step-finish\" }),\n): MessageStatus => {\n  if (chunk.finishReason === \"tool-calls\") {\n    return {\n      type: \"requires-action\",\n      reason: \"tool-calls\",\n    };\n  } else if (\n    chunk.finishReason === \"stop\" ||\n    chunk.finishReason === \"unknown\"\n  ) {\n    return {\n      type: \"complete\",\n      reason: chunk.finishReason,\n    };\n  } else {\n    return {\n      type: \"incomplete\",\n      reason: chunk.finishReason,\n    };\n  }\n};\n\nconst appendOrUpdateCancel = (\n  message: ChatModelRunResult,\n): ChatModelRunResult => {\n  return {\n    ...message,\n    status: {\n      type: \"incomplete\",\n      reason: \"cancelled\",\n    },\n  };\n};\n","import { ThreadMessage, CoreMessage } from \"../../../types\";\n\nexport const toCoreMessages = (message: ThreadMessage[]): CoreMessage[] => {\n  return message.map(toCoreMessage);\n};\n\nexport const toCoreMessage = (message: ThreadMessage): CoreMessage => {\n  const role = message.role;\n  switch (role) {\n    case \"assistant\":\n      return {\n        role,\n        content: message.content.map((part) => {\n          if (part.type === \"ui\") throw new Error(\"UI parts are not supported\");\n          if (part.type === \"tool-call\") {\n            const { argsText, ...rest } = part;\n            return rest;\n          }\n          return part;\n        }),\n      };\n\n    case \"user\":\n      return {\n        role,\n        content: [\n          ...message.content.map((part) => {\n            if (part.type === \"ui\")\n              throw new Error(\"UI parts are not supported\");\n            return part;\n          }),\n          ...message.attachments.map((a) => a.content).flat(),\n        ],\n      };\n\n    case \"system\":\n      return {\n        role,\n        content: message.content,\n      };\n\n    default: {\n      const unsupportedRole: never = role;\n      throw new Error(`Unknown message role: ${unsupportedRole}`);\n    }\n  }\n};\n","export class PipeableTransformStream<I, O> extends TransformStream<I, O> {\n  constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>) {\n    super();\n    const readable = transform(super.readable as any);\n    Object.defineProperty(this, \"readable\", {\n      value: readable,\n      writable: false,\n    });\n  }\n}\n","import { PipeableTransformStream } from \"./PipeableTransformStream\";\nimport { StreamPart } from \"./StreamPart\";\n\nfunction encodeStreamPart<T extends Record<string, unknown>>({\n  type,\n  value,\n}: StreamPart<T>): string {\n  return `${type as string}:${JSON.stringify(value)}\\n`;\n}\n\nexport function streamPartEncoderStream<T extends Record<string, unknown>>() {\n  const encodeStream = new TransformStream<StreamPart<T>, string>({\n    transform(chunk, controller) {\n      controller.enqueue(encodeStreamPart<T>(chunk));\n    },\n  });\n\n  return new PipeableTransformStream((readable) => {\n    return readable\n      .pipeThrough(encodeStream)\n      .pipeThrough(new TextEncoderStream());\n  });\n}\n","import {\n  LanguageModelV1,\n  LanguageModelV1ToolChoice,\n  LanguageModelV1FunctionTool,\n  LanguageModelV1Prompt,\n  LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n  CoreMessage,\n  ThreadMessage,\n  ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { Tool } from \"../../types\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n  toolResultStream,\n  ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n  LanguageModelConfig,\n  LanguageModelV1CallSettings,\n  LanguageModelV1CallSettingsSchema,\n} from \"../../types/ModelConfigTypes\";\nimport { ChatModelRunResult } from \"../local\";\nimport { toCoreMessage } from \"./converters/toCoreMessages\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n  messages: CoreMessage[];\n  metadata: {\n    /**\n     * @deprecated Use `steps` instead. This field will be removed in v0.6.\n     */\n    roundtrips: ThreadStep[];\n    steps: ThreadStep[];\n  };\n};\n\ntype LanguageModelCreator = (\n  config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n  model: LanguageModelV1 | LanguageModelCreator;\n  system?: string;\n  tools?: Record<string, Tool<any, any>>;\n  toolChoice?: LanguageModelV1ToolChoice;\n  onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n  return new WritableStream({\n    abort(reason) {\n      console.error(\"Server stream processing aborted:\", reason);\n    },\n  });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n  abortSignal: AbortSignal;\n  requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n  options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n  abortSignal,\n  requestData: unsafeRequest,\n  options: {\n    model: modelOrCreator,\n    system: serverSystem,\n    tools: serverTools = {},\n    toolChoice,\n    onFinish,\n    ...unsafeSettings\n  },\n}: GetEdgeRuntimeStreamOptions) => {\n  const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n  const lmServerTools = toLanguageModelTools(serverTools);\n  const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n  const {\n    system: clientSystem,\n    tools: clientTools = [],\n    messages,\n    apiKey,\n    baseUrl,\n    modelName,\n    ...callSettings\n  } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n  const systemMessages = [];\n  if (serverSystem) systemMessages.push(serverSystem);\n  if (clientSystem) systemMessages.push(clientSystem);\n  const system = systemMessages.join(\"\\n\\n\");\n\n  for (const clientTool of clientTools) {\n    if (serverTools?.[clientTool.name]) {\n      throw new Error(\n        `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n      );\n    }\n  }\n\n  const model =\n    typeof modelOrCreator === \"function\"\n      ? await modelOrCreator({ apiKey, baseUrl, modelName })\n      : modelOrCreator;\n\n  let stream: ReadableStream<ToolResultStreamPart>;\n  const streamResult = await streamMessage({\n    ...(settings as Partial<StreamMessageOptions>),\n    ...callSettings,\n\n    model,\n    abortSignal,\n\n    ...(!!system ? { system } : undefined),\n    messages,\n    tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n    ...(toolChoice ? { toolChoice } : undefined),\n  });\n  stream = streamResult.stream;\n\n  // add tool results if we have server tools\n  const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n  if (canExecuteTools) {\n    stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n  }\n\n  if (canExecuteTools || onFinish) {\n    // tee the stream to process server tools and onFinish asap\n    const tees = stream.tee();\n    stream = tees[0];\n    let serverStream = tees[1];\n\n    if (onFinish) {\n      let lastChunk: ChatModelRunResult;\n      serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n        new TransformStream({\n          transform(chunk) {\n            lastChunk = chunk;\n          },\n          flush() {\n            if (!lastChunk?.status || lastChunk.status.type === \"running\")\n              return;\n\n            const resultingMessages = [\n              ...messages,\n              toCoreMessage({\n                role: \"assistant\",\n                content: lastChunk.content,\n              } as ThreadMessage),\n            ];\n            onFinish({\n              messages: resultingMessages,\n              metadata: {\n                // TODO\n                // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n                roundtrips: lastChunk.metadata?.steps!,\n                // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n                steps: lastChunk.metadata?.steps!,\n              },\n            });\n          },\n        }),\n      );\n    }\n\n    // drain the server stream\n    serverStream.pipeTo(voidStream()).catch((e) => {\n      console.error(\"Server stream processing error:\", e);\n    });\n  }\n\n  return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n  export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n  options: getEdgeRuntimeResponse.Options,\n) => {\n  const stream = await getEdgeRuntimeStream(options);\n  return new Response(\n    stream\n      .pipeThrough(assistantEncoderStream())\n      .pipeThrough(streamPartEncoderStream()),\n    {\n      headers: {\n        \"Content-Type\": \"text/plain; charset=utf-8\",\n      },\n    },\n  );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n  POST: async (request: Request) =>\n    getEdgeRuntimeResponse({\n      abortSignal: request.signal,\n      requestData: await request.json(),\n      options,\n    }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n  model: LanguageModelV1;\n  system?: string;\n  messages: CoreMessage[];\n  tools?: LanguageModelV1FunctionTool[];\n  toolChoice?: LanguageModelV1ToolChoice;\n  abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n  model,\n  system,\n  messages,\n  tools,\n  toolChoice,\n  ...options\n}: StreamMessageOptions) {\n  return model.doStream({\n    inputFormat: \"messages\",\n    mode: {\n      type: \"regular\",\n      ...(tools ? { tools } : undefined),\n      ...(toolChoice ? { toolChoice } : undefined),\n    },\n    prompt: convertToLanguageModelPrompt(system, messages),\n    ...(options as Partial<LanguageModelV1CallOptions>),\n  });\n}\n\nexport function convertToLanguageModelPrompt(\n  system: string | undefined,\n  messages: CoreMessage[],\n): LanguageModelV1Prompt {\n  const languageModelMessages: LanguageModelV1Prompt = [];\n\n  if (system != null) {\n    languageModelMessages.push({ role: \"system\", content: system });\n  }\n  languageModelMessages.push(...toLanguageModelMessages(messages));\n\n  return languageModelMessages;\n}\n"],"mappings":"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","names":["import_zod","message","import_zod","zodToJsonSchema","import_zod","sjson","result","import_secure_json_parse","sjson"]}
         |