{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-IADUFCNS.cjs","../src/libs/providers/ollama/generate-tool/infer-tool-calls-from-stream.ts"],"names":["InferToolCallsFromStream","#firstMessage","#toolCalls","#tools","#toolPartial","#detectedToolCall","tools","controller","delta","#detectToolCall","parsedFunctions","parse","index","parsedFunction","parsedArguments","generateId","toolCall","#finishReason"],"mappings":"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","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-IADUFCNS.cjs","sourcesContent":[null,"import type {\n  LanguageModelV2CallOptions,\n  LanguageModelV2FinishReason,\n  LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport {generateId} from '@ai-sdk/provider-utils';\nimport {parse} from 'partial-json';\n\ntype ToolCall = {\n  function: {\n    arguments: string;\n    name: string;\n  };\n  id: string;\n  type: 'function';\n};\n\nexport class InferToolCallsFromStream {\n  #firstMessage: boolean;\n  readonly #toolCalls: ToolCall[];\n  readonly #tools?: LanguageModelV2CallOptions['tools'];\n  #toolPartial: string;\n  #detectedToolCall: boolean;\n\n  constructor({tools}: {tools?: LanguageModelV2CallOptions['tools']}) {\n    this.#firstMessage = true;\n    this.#tools = tools;\n    this.#toolPartial = '';\n    this.#toolCalls = [];\n    this.#detectedToolCall = false;\n  }\n\n  get toolCalls(): ToolCall[] {\n    return this.#toolCalls;\n  }\n\n  get detectedToolCall(): boolean {\n    return this.#detectedToolCall;\n  }\n\n  parse({\n    controller,\n    delta,\n  }: {\n    controller: TransformStreamDefaultController<LanguageModelV2StreamPart>;\n    delta: string;\n  }): boolean {\n    this.#detectToolCall(delta);\n\n    if (!this.#detectedToolCall) {\n      return false;\n    }\n\n    this.#toolPartial += delta;\n\n    let parsedFunctions = parse(this.#toolPartial);\n    if (!Array.isArray(parsedFunctions)) {\n      parsedFunctions = [parsedFunctions];\n    }\n\n    for (const [index, parsedFunction] of parsedFunctions.entries()) {\n      const parsedArguments = JSON.stringify(parsedFunction?.parameters) ?? '';\n\n      if (parsedArguments === '') {\n        continue;\n      }\n\n      if (!this.#toolCalls[index]) {\n        this.#toolCalls[index] = {\n          function: {\n            arguments: '',\n            name: parsedFunction.name,\n          },\n          id: generateId(),\n          type: 'function',\n        };\n      }\n\n      const toolCall = this.#toolCalls[index];\n      toolCall.function.arguments = parsedArguments;\n\n      controller.enqueue({\n        input: delta,\n        toolCallId: toolCall.id,\n        toolName: toolCall.function.name,\n        type: 'tool-call',\n      });\n    }\n\n    return true;\n  }\n\n  finish({\n    controller,\n  }: {\n    controller: TransformStreamDefaultController<LanguageModelV2StreamPart>;\n  }): LanguageModelV2FinishReason {\n    for (const toolCall of this.toolCalls) {\n      controller.enqueue({\n        input: toolCall.function.arguments,\n        toolCallId: toolCall.id,\n        toolName: toolCall.function.name,\n        type: 'tool-call',\n      });\n    }\n\n    return this.#finishReason();\n  }\n\n  #detectToolCall(delta: string) {\n    if (!this.#tools || this.#tools.length === 0) {\n      return;\n    }\n\n    if (this.#firstMessage) {\n      if (delta.trim().startsWith('{') || delta.trim().startsWith('[')) {\n        this.#detectedToolCall = true;\n      }\n\n      this.#firstMessage = false;\n    }\n  }\n\n  #finishReason(): LanguageModelV2FinishReason {\n    if (!this.detectedToolCall) {\n      return 'stop';\n    }\n\n    return 'tool-calls';\n  }\n}\n"]}