{"version":3,"sources":["../../../src/adapters/watsonx/llm.ts"],"names":["WatsonXLLMOutput","BaseLLMOutput","meta","results","constructor","content","register","getTextContent","finalResult","generated_text","length","LLMOutputError","processors","value","oldValue","input_token_count","safeSum","generated_token_count","stop_reason","next","key","R","entries","takeFirst","merge","other","Cache","getInstance","clear","push","Object","assign","omitUndefined","createSnapshot","shallowCopy","loadSnapshot","snapshot","toString","createApiClient","deploymentId","apiKey","baseUrl","authBaseUrl","region","accessToken","version","projectId","spaceId","getEnv","paths","pathPrefix","queryParams","createURLParams","generate","generate_stream","tokenization","models","deployment","project_id","space_id","undefined","embeddings","ValueError","join","getHeaders","CacheFn","create","getAccessToken","ttl","Infinity","token","response","fetch","URL","method","headers","body","grant_type","apikey","ok","RestfulClientError","context","data","json","access_token","expires_in","updateTTL","Headers","RestfulClient","WatsonXLLM","LLM","emitter","Emitter","root","child","namespace","creator","client","transform","moderations","parameters","input","modelId","executionOptions","cache","entity","base_model_id","LLMFatalError","resources","model","searchParams","filters","limit","tokenLimit","model_limits","max_sequence_length","embed","options","URLSearchParams","JSON","stringify","inputs","model_id","truncate_input_tokens","signal","Error","map","result","embedding","_transformError","error","FrameworkError","name","LLMError","isRetryable","includes","getProp","tokenize","return_tokens","tokensCount","token_count","tokens","e","_generate","run","_rawResponseToOutput","_stream","stream","msg","parse","raw","pickBy","created_at","isDefined","system"],"mappings":"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","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\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 */\n\nimport { LLM, LLMEvents, LLMInput } from \"@/llms/llm.js\";\nimport {\n  AsyncStream,\n  BaseLLMOutput,\n  BaseLLMTokenizeOutput,\n  EmbeddingOptions,\n  EmbeddingOutput,\n  ExecutionOptions,\n  GenerateOptions,\n  LLMCache,\n  LLMError,\n  LLMFatalError,\n  LLMMeta,\n  LLMOutputError,\n} from \"@/llms/base.js\";\nimport * as R from \"remeda\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { Cache, CacheFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { safeSum } from \"@/internals/helpers/number.js\";\nimport { getProp, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { createURLParams, RestfulClient, RestfulClientError } from \"@/internals/fetcher.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { getEnv } from \"@/internals/env.js\";\n\nexport interface WatsonXLLMOutputMeta {\n  model_id: string;\n  created_at: string;\n}\n\nexport interface WatsonXLLMOutputResult {\n  generated_text: string;\n  generated_token_count: number;\n  input_token_count: number;\n  stop_reason?: string;\n}\n\nexport interface WatsonXLLMOutputConstructor {\n  meta: WatsonXLLMOutputMeta;\n  results: WatsonXLLMOutputResult[];\n  system: Record<string, Record<string, any>[]>;\n}\n\nexport class WatsonXLLMOutput extends BaseLLMOutput {\n  public readonly meta: WatsonXLLMOutputMeta;\n  public readonly results: WatsonXLLMOutputResult[];\n\n  constructor(content: WatsonXLLMOutputConstructor) {\n    super();\n    this.meta = content.meta;\n    this.results = content.results;\n  }\n\n  static {\n    this.register();\n  }\n\n  getTextContent(): string {\n    return this.finalResult.generated_text;\n  }\n\n  @Cache()\n  get finalResult(): Readonly<WatsonXLLMOutputResult> {\n    if (this.results.length === 0) {\n      throw new LLMOutputError(\"No chunks to get final result from!\");\n    }\n\n    const processors: {\n      [K in keyof WatsonXLLMOutputResult]: (\n        value: WatsonXLLMOutputResult[K],\n        oldValue: WatsonXLLMOutputResult[K],\n      ) => WatsonXLLMOutputResult[K];\n    } = {\n      generated_text: (value = \"\", oldValue = \"\") => oldValue + value,\n      input_token_count: safeSum,\n      generated_token_count: safeSum,\n      stop_reason: (value, oldValue) => value ?? oldValue,\n    };\n\n    const finalResult = {} as WatsonXLLMOutputResult;\n    for (const next of this.results) {\n      for (const [key, value] of R.entries(next)) {\n        const oldValue = finalResult[key];\n        // @ts-expect-error weak typing due to  generated types\n        finalResult[key] = (processors[key] ?? takeFirst)(value, oldValue);\n      }\n    }\n\n    return finalResult;\n  }\n\n  merge(other: WatsonXLLMOutput): void {\n    Cache.getInstance(this, \"finalResult\").clear();\n\n    this.results.push(...other.results);\n    Object.assign(this.meta, omitUndefined(other.meta));\n  }\n\n  createSnapshot() {\n    return {\n      results: shallowCopy(this.results),\n      meta: shallowCopy(this.meta),\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n\n  toString(): string {\n    return this.getTextContent();\n  }\n}\n\nexport interface WatsonXLLMParameters extends GenerateOptions {\n  [key: string]: any;\n  decoding_method?: \"sample\" | \"greedy\";\n  length_penalty?: {\n    decay_factor?: number;\n    start_index?: number;\n  };\n  max_new_tokens?: number;\n  min_new_tokens?: number;\n  random_seed?: number;\n  stop_sequences?: string[];\n  temperature?: number;\n  time_limit?: number;\n  top_k?: number;\n  top_p?: number;\n  repetition_penalty?: number;\n  truncate_input_tokens?: number;\n  return_options?: {\n    input_text?: boolean;\n    generated_tokens?: boolean;\n    input_tokens?: boolean;\n    token_logprobs?: boolean;\n    token_ranks?: boolean;\n    top_n_tokens?: boolean;\n  };\n  include_stop_sequence?: boolean;\n  typical_p?: number;\n  prompt_variables?: Record<string, any>;\n}\nexport type WatsonXLLMModerations = Record<string, any>;\n\nexport interface WatsonXLLMGenerateOptions extends GenerateOptions {\n  parameters?: WatsonXLLMParameters;\n  moderations?: WatsonXLLMModerations;\n}\n\nexport interface WatsonXLLMInput {\n  modelId: string;\n  projectId?: string;\n  spaceId?: string;\n  deploymentId?: string;\n  version?: string;\n  apiKey?: string;\n  accessToken?: string;\n  baseUrl?: string;\n  authBaseUrl?: string;\n  region?: string;\n  parameters?: WatsonXLLMParameters;\n  moderations?: WatsonXLLMModerations;\n  executionOptions?: ExecutionOptions;\n  transform?: WatsonXLLMTransformFn;\n  cache?: LLMCache<WatsonXLLMOutput>;\n}\n\ntype WatsonXLLMTransformFn = (body: Record<string, any>) => Record<string, any>;\n\nfunction createApiClient({\n  deploymentId,\n  apiKey,\n  baseUrl,\n  authBaseUrl = \"https://iam.cloud.ibm.com\",\n  region,\n  accessToken,\n  version = \"2023-05-02\",\n  projectId,\n  spaceId,\n}: WatsonXLLMInput) {\n  region = region || getEnv(\"WATSONX_REGION\") || \"us-south\";\n\n  const paths = (() => {\n    const pathPrefix = deploymentId ? `/ml/v1/deployments/${deploymentId}` : \"/ml/v1\";\n    const queryParams = createURLParams({\n      version,\n    });\n\n    return {\n      generate: `${pathPrefix}/text/generation?${queryParams}`,\n      generate_stream: `${pathPrefix}/text/generation_stream?${queryParams}`,\n      tokenization: `/ml/v1/text/tokenization?${queryParams}`,\n      models: `/ml/v1/foundation_model_specs?${queryParams}`,\n      deployment: deploymentId\n        ? `/ml/v4/deployments/${deploymentId}?${createURLParams({ version, project_id: projectId, space_id: projectId ? undefined : spaceId })}`\n        : \"not_defined_endpoint\",\n      embeddings: \"/ml/v1/text/embeddings\",\n    };\n  })();\n\n  if (accessToken && apiKey) {\n    throw new ValueError(`Use either \"accessToken\" or \"apiKey\".`);\n  } else if (!accessToken && !apiKey) {\n    accessToken = getEnv(\"WATSONX_ACCESS_TOKEN\");\n    apiKey = accessToken ? undefined : getEnv(\"WATSONX_API_KEY\");\n  }\n\n  if (!accessToken && !apiKey) {\n    throw new ValueError(\n      [\n        `Neither \"accessToken\" nor \"apiKey\" has been provided.`,\n        `Either set them directly or put them in ENV (\"WATSONX_ACCESS_TOKEN\" / \"WATSONX_API_KEY\")`,\n      ].join(\"\\n\"),\n    );\n  }\n\n  const getHeaders = CacheFn.create(async () => {\n    const getAccessToken = async () => {\n      if (accessToken) {\n        return { ttl: Infinity, token: accessToken };\n      }\n\n      const response = await fetch(new URL(\"/identity/token\", authBaseUrl), {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/x-www-form-urlencoded\",\n        },\n        body: createURLParams({\n          grant_type: \"urn:ibm:params:oauth:grant-type:apikey\",\n          apikey: apiKey,\n        }),\n      });\n\n      if (!response.ok) {\n        throw new RestfulClientError(\"Failed to retrieve an API token.\", [], {\n          context: response,\n        });\n      }\n\n      const data = await response.json();\n      if (!data?.access_token) {\n        throw new RestfulClientError(\"Access Token was not found in the response.\");\n      }\n      return { ttl: (data.expires_in - 60) * 1000, token: data.access_token as string };\n    };\n\n    const response = await getAccessToken();\n    getHeaders.updateTTL(response.ttl);\n    return new Headers({\n      \"Authorization\": `Bearer ${response.token}`,\n      \"Accept\": \"application/json\",\n      \"Content-Type\": \"application/json\",\n    });\n  });\n\n  return new RestfulClient({\n    baseUrl: baseUrl || `https://${region}.ml.cloud.ibm.com`,\n    paths,\n    headers: getHeaders,\n  });\n}\n\nexport type WatsonXLLMEvents = LLMEvents<WatsonXLLMOutput>;\n\nexport class WatsonXLLM extends LLM<WatsonXLLMOutput, WatsonXLLMGenerateOptions> {\n  public readonly emitter = Emitter.root.child<WatsonXLLMEvents>({\n    namespace: [\"watsonx\", \"llm\"],\n    creator: this,\n  });\n\n  public readonly client;\n  protected projectId;\n  protected deploymentId;\n  protected spaceId;\n  protected transform: WatsonXLLMTransformFn;\n  public readonly moderations;\n  public readonly parameters: WatsonXLLMParameters;\n\n  constructor(input: WatsonXLLMInput) {\n    super(input.modelId, input.executionOptions, input.cache);\n    this.projectId = input.projectId;\n    this.spaceId = input.spaceId;\n    this.deploymentId = input.deploymentId;\n    this.moderations = input.moderations;\n    this.transform = input.transform ?? ((input) => input);\n    this.client = createApiClient(input);\n    this.parameters = input.parameters ?? {};\n  }\n\n  static {\n    this.register();\n  }\n\n  @Cache()\n  async meta(): Promise<LLMMeta> {\n    let modelId = this.modelId;\n    if (this.deploymentId) {\n      const { entity } = await this.client.fetch(\"deployment\");\n      modelId = entity.base_model_id ?? modelId;\n    }\n\n    if (!modelId) {\n      throw new LLMFatalError(`Cannot retrieve metadata for model '${modelId ?? \"undefined\"}'`);\n    }\n\n    const {\n      resources: [model],\n    } = await this.client.fetch(\"models\", {\n      searchParams: createURLParams({\n        filters: `modelid_${modelId}`,\n        limit: \"1\",\n      }),\n    });\n\n    return {\n      tokenLimit: model?.model_limits?.max_sequence_length ?? Infinity,\n    };\n  }\n\n  async embed(input: LLMInput[], options?: EmbeddingOptions): Promise<EmbeddingOutput> {\n    const response: { results: { embedding: number[] }[] } = await this.client.fetch(\"embeddings\", {\n      method: \"POST\",\n      searchParams: new URLSearchParams({ version: \"2023-10-25\" }),\n      body: JSON.stringify({\n        inputs: input,\n        model_id: this.modelId,\n        project_id: this.projectId,\n        parameters: {\n          truncate_input_tokens: 512,\n        },\n      }),\n      signal: options?.signal,\n    });\n    if (response.results?.length !== input.length) {\n      throw new Error(\"Missing embedding\");\n    }\n    const embeddings = response.results.map((result) => result.embedding);\n    return { embeddings };\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      modelId: this.modelId,\n      spaceId: this.spaceId,\n      deploymentId: this.deploymentId,\n      projectId: this.projectId,\n      parameters: shallowCopy(this.parameters),\n      moderations: shallowCopy(this.moderations),\n      executionOptions: shallowCopy(this.executionOptions),\n      transform: this.transform,\n      client: this.client,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n    super.loadSnapshot(snapshot);\n  }\n\n  protected _transformError(error: Error): Error {\n    if (error instanceof FrameworkError) {\n      throw error;\n    }\n    if (error?.name === \"HttpError\") {\n      throw new LLMError(\"LLM has occurred an error!\", [error], {\n        isRetryable: [408, 425, 429, 500, 503].includes(getProp(error, [\"status_code\", 500])),\n      });\n    }\n    return new LLMError(\"LLM has occurred an error!\", [error]);\n  }\n\n  async tokenize(input: LLMInput): Promise<BaseLLMTokenizeOutput> {\n    try {\n      const { result } = await this.client.fetch(\"tokenization\", {\n        method: \"POST\",\n        body: JSON.stringify({\n          input,\n          model_id: this.modelId,\n          project_id: this.projectId,\n          space_id: this.projectId ? undefined : this.spaceId,\n          parameters: {\n            return_tokens: true,\n          },\n        }),\n      });\n\n      return {\n        tokensCount: result.token_count,\n        tokens: result.tokens,\n      };\n    } catch (e) {\n      throw this._transformError(e);\n    }\n  }\n\n  protected async _generate(\n    input: LLMInput,\n    options: WatsonXLLMGenerateOptions | undefined,\n    run: GetRunContext<this>,\n  ): Promise<WatsonXLLMOutput> {\n    try {\n      const response = await this.client.fetch(\"generate\", {\n        method: \"POST\",\n        body: JSON.stringify(\n          this.transform({\n            input,\n            ...(!this.deploymentId && {\n              model_id: this.modelId,\n              project_id: this.projectId,\n              space_id: this.projectId ? undefined : this.spaceId,\n            }),\n            parameters: options?.parameters ?? this.parameters,\n            moderations: options?.moderations ?? this.moderations,\n          }),\n        ),\n        signal: run.signal,\n      });\n      return this._rawResponseToOutput(response);\n    } catch (e) {\n      throw this._transformError(e);\n    }\n  }\n\n  protected async *_stream(\n    input: LLMInput,\n    options: WatsonXLLMGenerateOptions | undefined,\n    run: GetRunContext<this>,\n  ): AsyncStream<WatsonXLLMOutput, void> {\n    try {\n      const response = this.client.stream(\"generate_stream\", {\n        method: \"POST\",\n        body: JSON.stringify(\n          this.transform({\n            input,\n            ...(!this.deploymentId && {\n              model_id: this.modelId,\n              project_id: this.projectId,\n              space_id: this.projectId ? undefined : this.spaceId,\n            }),\n            parameters: options?.parameters ?? this.parameters,\n            moderations: options?.moderations ?? this.moderations,\n          }),\n        ),\n        signal: run.signal,\n      });\n\n      for await (const msg of response) {\n        const content = JSON.parse(msg.data);\n        yield this._rawResponseToOutput(content);\n      }\n    } catch (e) {\n      throw this._transformError(e);\n    }\n  }\n\n  protected _rawResponseToOutput(raw: any) {\n    return new WatsonXLLMOutput({\n      results: raw.results ?? [],\n      meta: R.pickBy(\n        {\n          model_id: raw.model_id,\n          created_at: raw.created_at!,\n        },\n        R.isDefined,\n      ),\n      system: raw.system ?? [],\n    });\n  }\n}\n"]}