sarvam-ai-sdk 0.0.2 → 0.0.3

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/README.md CHANGED
@@ -69,6 +69,25 @@ const { text } = await transcribe({
69
69
  console.log(text); // പാചകം തുടരും സുഹൃത്തുക്കളെ
70
70
  ```
71
71
 
72
+ ## Transliterate
73
+
74
+ > Only transliterates `prompt` and `role:user` messages, not `system` not `assistant`.
75
+
76
+ ```ts
77
+ import { sarvam } from "sarvam-ai-sdk";
78
+ import { generateText } from "ai";
79
+
80
+ const result = await generateText({
81
+ model: sarvam.transliterate({
82
+ from: "en-IN"
83
+ to: "ml-IN",
84
+ }),
85
+ prompt: "eda mone, happy alle?",
86
+ });
87
+
88
+ console.log(result.text); // എടാ മോനെ, ഹാപ്പി അല്ലേ?
89
+ ```
90
+
72
91
  ## Tool Calling
73
92
 
74
93
  > [!WARNING]
package/dist/index.cjs CHANGED
@@ -55,7 +55,7 @@ __export(index_exports, {
55
55
  module.exports = __toCommonJS(index_exports);
56
56
 
57
57
  // src/sarvam-provider.ts
58
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
58
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
59
59
 
60
60
  // src/sarvam-chat-language-model.ts
61
61
  var import_provider3 = require("@ai-sdk/provider");
@@ -396,6 +396,7 @@ var SarvamChatLanguageModel = class {
396
396
  // messages:
397
397
  messages: convertToSarvamChatMessages(prompt2, fakeToolSystemPrompt)
398
398
  });
399
+ console.log(type, mode);
399
400
  switch (type) {
400
401
  case "regular": {
401
402
  const { tools, tool_choice, toolWarnings } = prepareTools({
@@ -766,17 +767,7 @@ var import_zod4 = require("zod");
766
767
  var import_zod3 = require("zod");
767
768
  var SarvamProviderOptionsSchema = import_zod3.z.object({
768
769
  with_timestamps: import_zod3.z.boolean().nullish().default(false),
769
- /**
770
- * Enables speaker diarization, which identifies and separates different speakers in the audio.
771
- * When set to true, the API will provide speaker-specific segments in the response.
772
- * Note: This parameter is currently in Beta mode.
773
- */
774
770
  with_diarization: import_zod3.z.boolean().nullish().default(false),
775
- /**
776
- * Number of speakers to be detected in the audio.
777
- * This is used when with_diarization is set to true.
778
- * Can be null.
779
- */
780
771
  num_speakers: import_zod3.z.number().int().nullish()
781
772
  });
782
773
 
@@ -1055,11 +1046,130 @@ var SarvamSpeechModel = class {
1055
1046
  }
1056
1047
  };
1057
1048
 
1049
+ // src/sarvam-transliterate-model.ts
1050
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1051
+ var import_zod8 = require("zod");
1052
+
1053
+ // src/sarvam-config.ts
1054
+ var import_zod7 = require("zod");
1055
+ var SarvamLanguageCodeSchema = import_zod7.z.enum([
1056
+ "hi-IN",
1057
+ "bn-IN",
1058
+ "kn-IN",
1059
+ "ml-IN",
1060
+ "mr-IN",
1061
+ "od-IN",
1062
+ "pa-IN",
1063
+ "ta-IN",
1064
+ "te-IN",
1065
+ "en-IN",
1066
+ "gu-IN"
1067
+ ]);
1068
+
1069
+ // src/sarvam-transliterate-model.ts
1070
+ var SarvamTransliterateModel = class {
1071
+ constructor(settings, config) {
1072
+ this.specificationVersion = "v1";
1073
+ this.supportsStructuredOutputs = false;
1074
+ this.defaultObjectGenerationMode = "json";
1075
+ this.modelId = "unknown";
1076
+ this.settings = settings;
1077
+ this.config = config;
1078
+ }
1079
+ get provider() {
1080
+ return this.config.provider;
1081
+ }
1082
+ get supportsImageUrls() {
1083
+ return false;
1084
+ }
1085
+ getArgs({
1086
+ mode,
1087
+ prompt
1088
+ }) {
1089
+ var _a, _b, _c;
1090
+ const type = mode.type;
1091
+ const warnings = [];
1092
+ if (this.settings.from !== "auto") {
1093
+ if (this.settings.to !== "en-IN" && this.settings.from !== "en-IN")
1094
+ throw new Error(
1095
+ "Sarvam doesn't support Indic-Indic Transliteration yet"
1096
+ );
1097
+ }
1098
+ if (type !== "regular") {
1099
+ const _exhaustiveCheck = type;
1100
+ throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
1101
+ }
1102
+ const messages = convertToSarvamChatMessages(prompt);
1103
+ return {
1104
+ messages,
1105
+ args: __spreadValues({
1106
+ input: messages.filter((m) => m.role === "user").map((m) => m.content).join("\n"),
1107
+ source_language_code: (_a = this.settings.from) != null ? _a : "auto",
1108
+ target_language_code: this.settings.to,
1109
+ numerals_format: (_b = this.settings.numerals_format) != null ? _b : "international"
1110
+ }, this.settings.spoken_form ? {
1111
+ spoken_form: this.settings.spoken_form,
1112
+ spoken_form_numerals_language: (_c = this.settings.spoken_form_numerals_language) != null ? _c : "english"
1113
+ } : {}),
1114
+ warnings
1115
+ };
1116
+ }
1117
+ async doGenerate(options) {
1118
+ var _b;
1119
+ const { args, warnings, messages } = this.getArgs(__spreadProps(__spreadValues({}, options), {
1120
+ stream: false
1121
+ }));
1122
+ const body = JSON.stringify(args);
1123
+ const {
1124
+ responseHeaders,
1125
+ value: response,
1126
+ rawValue: rawResponse
1127
+ } = await (0, import_provider_utils7.postJsonToApi)({
1128
+ url: this.config.url({
1129
+ path: "/transliterate"
1130
+ }),
1131
+ headers: (0, import_provider_utils7.combineHeaders)(this.config.headers(), options.headers),
1132
+ body: args,
1133
+ failedResponseHandler: sarvamFailedResponseHandler,
1134
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1135
+ sarvamTransliterateResponseSchema
1136
+ ),
1137
+ abortSignal: options.abortSignal,
1138
+ fetch: this.config.fetch
1139
+ });
1140
+ const _a = args, { input: rawPrompt } = _a, rawSettings = __objRest(_a, ["input"]);
1141
+ let text = (_b = response.transliterated_text) != null ? _b : void 0;
1142
+ return {
1143
+ text,
1144
+ toolCalls: void 0,
1145
+ reasoning: void 0,
1146
+ finishReason: "unknown",
1147
+ usage: {
1148
+ promptTokens: NaN,
1149
+ completionTokens: NaN
1150
+ },
1151
+ rawCall: { rawPrompt, rawSettings },
1152
+ rawResponse: { headers: responseHeaders, body: rawResponse },
1153
+ response: void 0,
1154
+ warnings,
1155
+ request: { body }
1156
+ };
1157
+ }
1158
+ async doStream(options) {
1159
+ throw new Error("Transliterate feature doesn't streaming yet");
1160
+ }
1161
+ };
1162
+ var sarvamTransliterateResponseSchema = import_zod8.z.object({
1163
+ transliterated_text: import_zod8.z.string().nullish(),
1164
+ source_language_code: SarvamLanguageCodeSchema.nullable(),
1165
+ request_id: import_zod8.z.string().nullish()
1166
+ });
1167
+
1058
1168
  // src/sarvam-provider.ts
1059
1169
  function createSarvam(options = {}) {
1060
1170
  var _a;
1061
- const baseURL = (_a = (0, import_provider_utils7.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.sarvam.ai";
1062
- const ApiKey = (0, import_provider_utils7.loadApiKey)({
1171
+ const baseURL = (_a = (0, import_provider_utils8.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.sarvam.ai";
1172
+ const ApiKey = (0, import_provider_utils8.loadApiKey)({
1063
1173
  apiKey: options.apiKey,
1064
1174
  environmentVariableName: "SARVAM_API_KEY",
1065
1175
  description: "Sarvam"
@@ -1098,11 +1208,24 @@ function createSarvam(options = {}) {
1098
1208
  fetch: options.fetch,
1099
1209
  speech: settings
1100
1210
  });
1211
+ const createTransliterateModel = (settings) => new SarvamTransliterateModel(
1212
+ {
1213
+ to: settings.to,
1214
+ from: settings.from
1215
+ },
1216
+ {
1217
+ provider: "sarvam.transliterate",
1218
+ url: ({ path }) => `${baseURL}${path}`,
1219
+ headers: getHeaders,
1220
+ fetch: options.fetch
1221
+ }
1222
+ );
1101
1223
  const provider = (modelId, settings) => createLanguageModel(modelId, settings);
1102
1224
  provider.languageModel = createLanguageModel;
1103
1225
  provider.chat = createChatModel;
1104
1226
  provider.transcription = createTranscriptionModel;
1105
1227
  provider.speech = createSpeechModel;
1228
+ provider.transliterate = createTransliterateModel;
1106
1229
  return provider;
1107
1230
  }
1108
1231
  var sarvam = createSarvam();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/sarvam-provider.ts","../src/sarvam-chat-language-model.ts","../src/convert-to-sarvam-chat-messages.ts","../src/get-response-metadata.ts","../src/map-sarvam-finish-reason.ts","../src/sarvam-error.ts","../src/sarvam-prepare-tools.ts","../src/sarvam-transcription-model.ts","../src/sarvam-transcription-settings.ts","../src/sarvam-speech-model.ts","../src/sarvam-speech-settings.ts"],"sourcesContent":["export { createSarvam, sarvam } from \"./sarvam-provider\";\nexport type { SarvamProvider, SarvamProviderSettings } from \"./sarvam-provider\";\n","import {\n LanguageModelV1,\n SpeechModelV1,\n NoSuchModelError,\n ProviderV1,\n TranscriptionModelV1,\n} from \"@ai-sdk/provider\";\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from \"@ai-sdk/provider-utils\";\nimport { SarvamChatLanguageModel } from \"./sarvam-chat-language-model\";\nimport { SarvamChatModelId, SarvamChatSettings } from \"./sarvam-chat-settings\";\nimport { SarvamTranscriptionModelId } from \"./sarvam-transcription-settings\";\nimport {\n SarvamTranscriptionCallOptions,\n SarvamTranscriptionModel,\n} from \"./sarvam-transcription-model\";\nimport { SarvamSpeechModelId } from \"./sarvam-speech-settings\";\nimport {\n SarvamSpeechCallOptions,\n SarvamSpeechModel,\n} from \"./sarvam-speech-model\";\nimport { SarvamLanguageCode } from \"./sarvam-config\";\n\nexport interface SarvamProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an Sarvam chat model for text generation.\n */\n languageModel(\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates a model for transcription.\n */\n transcription(\n modelId: SarvamTranscriptionModelId,\n languageCode?: SarvamLanguageCode | \"unknown\",\n settings?: SarvamTranscriptionCallOptions,\n ): TranscriptionModelV1;\n\n /**\nCreates a model for speech.\n */\n speech(\n modelId: SarvamSpeechModelId,\n languageCode: SarvamLanguageCode,\n settings?: SarvamSpeechCallOptions,\n ): SpeechModelV1;\n}\n\nexport interface SarvamProviderSettings {\n /**\nBase URL for the Sarvam API calls.\n@default https://api.sarvam.ai\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n@default process.env.SARVAM_API_KEY\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n@default Authorization: `Bearer ${process.env.SARVAM_API_KEY}`, \"api-subscription-key\": process.env.SARVAM_API_KEY\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Sarvam provider instance.\n */\nexport function createSarvam(\n options: SarvamProviderSettings = {},\n): SarvamProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? \"https://api.sarvam.ai\";\n\n const ApiKey = loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"SARVAM_API_KEY\",\n description: \"Sarvam\",\n });\n\n const getHeaders = () => ({\n Authorization: `Bearer ${ApiKey}`,\n \"api-subscription-key\": ApiKey,\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: SarvamChatModelId,\n settings: SarvamChatSettings = {},\n ) =>\n new SarvamChatLanguageModel(modelId, settings, {\n provider: \"sarvam.chat\",\n url: ({ path }) => `${baseURL}/v1${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ) => {\n if (new.target) {\n throw new Error(\n \"The Sarvam model function cannot be called with the new keyword.\",\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n const createTranscriptionModel = (\n modelId: SarvamTranscriptionModelId,\n languageCode: SarvamLanguageCode | \"unknown\" = \"unknown\",\n settings?: SarvamTranscriptionCallOptions,\n ) => {\n return new SarvamTranscriptionModel(modelId, languageCode, {\n provider: \"sarvam.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n transcription: settings,\n });\n };\n\n const createSpeechModel = (\n modelId: SarvamSpeechModelId,\n languageCode: SarvamLanguageCode,\n settings?: SarvamSpeechCallOptions,\n ) =>\n new SarvamSpeechModel(modelId, languageCode, {\n provider: `sarvam.speech`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n speech: settings,\n });\n\n const provider = (\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ) => createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n // provider.textEmbeddingModel = (modelId: string) => {\n // throw new NoSuchModelError({\n // modelId,\n // modelType: \"textEmbeddingModel\",\n // });\n // };\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n\n return provider;\n}\n\n/**\nDefault Sarvam provider instance.\n */\nexport const sarvam = createSarvam();\n","import {\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1Prompt,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n} from \"@ai-sdk/provider\";\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\nimport { convertToSarvamChatMessages } from \"./convert-to-sarvam-chat-messages\";\nimport { getResponseMetadata } from \"./get-response-metadata\";\nimport { mapSarvamFinishReason } from \"./map-sarvam-finish-reason\";\nimport { SarvamChatModelId, SarvamChatSettings } from \"./sarvam-chat-settings\";\nimport {\n sarvamErrorDataSchema,\n sarvamFailedResponseHandler,\n} from \"./sarvam-error\";\nimport {\n extractToolCallData,\n prepareTools,\n simulateToolCalling,\n} from \"./sarvam-prepare-tools\";\n\ntype SarvamChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class SarvamChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = \"v1\";\n\n readonly supportsStructuredOutputs = false;\n readonly defaultObjectGenerationMode = \"json\";\n\n readonly modelId: SarvamChatModelId;\n readonly settings: SarvamChatSettings;\n\n private readonly config: SarvamChatConfig;\n\n constructor(\n modelId: SarvamChatModelId,\n settings: SarvamChatSettings,\n config: SarvamChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n // image urls can be sent if downloadImages is disabled (default):\n return !this.settings.downloadImages;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n providerMetadata,\n }: Parameters<LanguageModelV1[\"doGenerate\"]>[0] & {\n stream: boolean;\n }) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"topK\",\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === \"json\" &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"responseFormat\",\n details: \"JSON response format schema is not supported\",\n });\n }\n\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: providerMetadata,\n schema: z.object({\n reasoningFormat: z.enum([\"parsed\", \"raw\", \"hidden\"]).nullish(),\n }),\n });\n\n const baseArgs = (\n prompt: LanguageModelV1Prompt,\n fakeToolSystemPrompt?: string,\n ) => ({\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\n response_format:\n // json object response format is not supported for streaming:\n stream === false && responseFormat?.type === \"json\"\n ? { type: \"json_object\" }\n : undefined,\n\n // provider options:\n reasoning_format: sarvamOptions?.reasoningFormat,\n\n // messages:\n messages: convertToSarvamChatMessages(prompt, fakeToolSystemPrompt),\n });\n\n switch (type) {\n case \"regular\": {\n const { tools, tool_choice, toolWarnings } = prepareTools({\n mode,\n });\n\n const fakeSystemPrompt =\n tools && this.settings.simulateToolCalling\n ? await simulateToolCalling(tools)\n : undefined;\n\n return {\n args: {\n ...baseArgs(prompt, fakeSystemPrompt),\n tools,\n tool_choice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case \"object-json\": {\n return {\n args: {\n ...baseArgs(prompt),\n response_format:\n // json object response format is not supported for streaming:\n stream === false ? { type: \"json_object\" } : undefined,\n },\n warnings,\n };\n }\n\n case \"object-tool\": {\n return {\n args: {\n ...baseArgs(prompt),\n tool_choice: {\n type: \"function\",\n function: { name: mode.tool.name },\n },\n tools: [\n {\n type: \"function\",\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n },\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doGenerate\"]>>> {\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n sarvamChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n\n let text = choice.message.content ?? undefined;\n\n let toolCalls = choice.message.tool_calls?.map((toolCall) => ({\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })) as LanguageModelV1FunctionToolCall[] | undefined;\n\n // simulate fake tool calling\n if (this.settings.simulateToolCalling) {\n if (\n text &&\n text.length !== 0 &&\n (!toolCalls || toolCalls?.length === 0)\n ) {\n const newTools = extractToolCallData(text);\n if (newTools) {\n toolCalls = [newTools];\n text = undefined;\n }\n }\n }\n\n return {\n text,\n toolCalls,\n reasoning: choice.message.reasoning ?? undefined,\n finishReason: mapSarvamFinishReason(choice.finish_reason),\n usage: {\n promptTokens: response.usage?.prompt_tokens ?? NaN,\n completionTokens: response.usage?.completion_tokens ?? NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1[\"doStream\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doStream\"]>>> {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n sarvamChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n const toolCalls: Array<{\n id: string;\n type: \"function\";\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV1FinishReason = \"unknown\";\n let usage: {\n promptTokens: number | undefined;\n completionTokens: number | undefined;\n } = {\n promptTokens: undefined,\n completionTokens: undefined,\n };\n let isFirstChunk = true;\n\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof sarvamChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = \"error\";\n controller.enqueue({\n type: \"error\",\n error: chunk.error,\n });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if (\"error\" in value) {\n finishReason = \"error\";\n controller.enqueue({\n type: \"error\",\n error: value.error,\n });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value),\n });\n }\n\n if (value.x_sarvam?.usage != null) {\n usage = {\n promptTokens: value.x_sarvam.usage.prompt_tokens ?? undefined,\n completionTokens:\n value.x_sarvam.usage.completion_tokens ?? undefined,\n };\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapSarvamFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n controller.enqueue({\n type: \"reasoning\",\n textDelta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? \"\",\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? \"\";\n }\n\n // send delta\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: toolCallDelta.function.arguments ?? \"\",\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n promptTokens: usage.promptTokens ?? NaN,\n completionTokens: usage.completionTokens ?? NaN,\n },\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst sarvamChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst sarvamChatChunkSchema = z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal(\"function\").optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_sarvam: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n sarvamErrorDataSchema,\n]);\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nimport { SarvamChatPrompt } from \"./sarvam-api-types\";\n\nexport function convertToSarvamChatMessages(\n prompt: LanguageModelV1Prompt,\n fakeToolSystemPrompt?: string,\n): SarvamChatPrompt {\n const messages: SarvamChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n const contentData = fakeToolSystemPrompt\n ? `${content}\\n\\n${fakeToolSystemPrompt}`\n : content;\n messages.push({ role: \"system\", content: contentData });\n break;\n }\n\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"image\": {\n return {\n type: \"image_url\",\n image_url: {\n url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? \"image/jpeg\"\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n },\n };\n }\n case \"file\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"File content parts in user messages\",\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case \"assistant\": {\n let text = \"\";\n const toolCalls: Array<{\n id: string;\n type: \"function\";\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: \"assistant\",\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case \"tool\": {\n for (const toolResponse of content) {\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV1FinishReason } from \"@ai-sdk/provider\";\n\nexport function mapSarvamFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"unknown\";\n }\n}\n","import { z } from \"zod\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\n\nexport const sarvamErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type SarvamErrorData = z.infer<typeof sarvamErrorDataSchema>;\n\nexport const sarvamFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: sarvamErrorDataSchema,\n errorToMessage: (data) => data.error.message,\n});\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FunctionToolCall,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\";\nimport { generateId } from \"@ai-sdk/provider-utils\";\n\ntype SarvamTools = Array<{\n type: \"function\";\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n}>;\n\nexport function prepareTools({\n mode,\n}: {\n mode: Parameters<LanguageModelV1[\"doGenerate\"]>[0][\"mode\"] & {\n type: \"regular\";\n };\n}): {\n tools:\n | undefined\n | Array<{\n type: \"function\";\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>;\n tool_choice:\n | { type: \"function\"; function: { name: string } }\n | \"auto\"\n | \"none\"\n | \"required\"\n | undefined;\n toolWarnings: LanguageModelV1CallWarning[];\n fakeTools?: string;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\n\n const sarvamTools: SarvamTools = [];\n\n for (const tool of tools) {\n if (tool.type === \"provider-defined\") {\n toolWarnings.push({ type: \"unsupported-tool\", tool });\n } else {\n sarvamTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: sarvamTools, tool_choice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: sarvamTools, tool_choice: type, toolWarnings };\n case \"tool\":\n return {\n tools: sarvamTools,\n tool_choice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n\nimport { compile } from \"json-schema-to-typescript\";\n\nexport const simulateToolCalling = async (\n tools: SarvamTools,\n): Promise<string> => {\n const context = [];\n const names = [];\n\n for (const tool of tools) {\n names.push(tool.function.name);\n\n const tsType = await compile(\n tool.function.parameters as object,\n tool.function.name,\n {\n bannerComment: \"\",\n format: false,\n declareExternallyReferenced: true,\n enableConstEnums: true,\n unreachableDefinitions: false,\n strictIndexSignatures: false,\n },\n );\n const toolContext = tsType\n .replace(\n /export interface (\\w+) \\{/,\n (_: any, name: string) => `type ${tool.function.name} = {`,\n )\n .replace(/\\/\\*\\*\\s*\\n\\s*\\*\\s*(.*?)\\s*\\n\\s*\\*\\//, \"// $1\");\n context.push(`// ${tool.function.description}\\n${toolContext}`);\n }\n\n const text = `These are the available tool you can execute.\n\n${context.join(\"\\n\")}\n\ntype YourToolChoices = {\n 'toolName': '${names.join(\"' | '\")}',\n 'toolData': ${names.join(\" | \")}\n}\n\nRespond normally.\nIf user request to execute any tool, respond with pure JSON format\nMake sure to translate toolData to English.\n\neg:\nconst myChoice: YourToolChoices = {\n \"toolName\": <name>,\n \"toolData\": <data>\n}`;\n\n return text;\n};\n\nexport const extractToolCallData = (\n text: string,\n): LanguageModelV1FunctionToolCall | void => {\n const jsonRegex = /\\{(?:[^{}]*|\\{[^{}]*\\})*\\}/g;\n const jsonMatches = text.match(jsonRegex);\n\n if (jsonMatches && jsonMatches[0]) {\n try {\n type ToolFunction = {\n toolName: string;\n toolData: any;\n };\n const toolFunction = JSON.parse(jsonMatches[0]) as ToolFunction;\n\n if (!(\"toolName\" in toolFunction)) return;\n if (!(\"toolData\" in toolFunction)) return;\n\n return {\n args: JSON.stringify(toolFunction.toolData),\n toolCallId: generateId(),\n toolCallType: \"function\",\n toolName: toolFunction.toolName,\n };\n } catch (error) {}\n }\n};\n","import {\n TranscriptionModelV1,\n TranscriptionModelV1CallWarning,\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\nimport { SarvamConfig, SarvamLanguageCode } from \"./sarvam-config\";\nimport { sarvamFailedResponseHandler } from \"./sarvam-error\";\nimport {\n SarvamProviderOptionsSchema,\n SarvamTranscriptionModelId,\n} from \"./sarvam-transcription-settings\";\n\n// https://docs.sarvam.ai/api-reference-docs/speech-to-text/transcribe\n\nexport type SarvamTranscriptionCallOptions = z.infer<\n typeof SarvamProviderOptionsSchema\n>;\n\ninterface SarvamTranscriptionModelConfig extends SarvamConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n transcription?: SarvamTranscriptionCallOptions;\n}\n\nexport class SarvamTranscriptionModel implements TranscriptionModelV1 {\n readonly specificationVersion = \"v1\";\n\n constructor(\n readonly modelId: SarvamTranscriptionModelId,\n readonly languageCode: SarvamLanguageCode | \"unknown\",\n private readonly config: SarvamTranscriptionModelConfig,\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV1[\"doGenerate\"]>[0]) {\n const warnings: TranscriptionModelV1CallWarning[] = [];\n\n if (this.modelId === \"saarika:v1\" && this.languageCode === \"unknown\")\n throw new Error(\n \"Language code unknown is not supported for model saarika:v1\",\n );\n\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: {\n sarvam: {\n ...providerOptions?.sarvam,\n ...this.config.transcription,\n },\n },\n schema: SarvamProviderOptionsSchema,\n });\n\n const formData = new FormData();\n const blob =\n audio instanceof Blob\n ? audio\n : new Blob([audio], { type: mediaType });\n\n formData.append(\"file\", blob);\n formData.append(\"model\", this.modelId);\n if (sarvamOptions) {\n formData.append(\"language_code\", this.languageCode);\n formData.append(\n \"with_timestamps\",\n sarvamOptions.with_timestamps ? \"true\" : \"false\",\n );\n formData.append(\n \"with_diarization\",\n sarvamOptions.with_diarization ? \"true\" : \"false\",\n );\n if (\n sarvamOptions.num_speakers !== null &&\n sarvamOptions.num_speakers !== undefined\n ) {\n formData.append(\n \"num_speakers\",\n sarvamOptions.num_speakers.toString(),\n );\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV1[\"doGenerate\"]>>> {\n const currentDate =\n this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/speech-to-text\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n sarvamTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.transcript,\n segments: response.timestamps\n ? response.timestamps.words.map((word, index) => ({\n text: word,\n startSecond:\n response.timestamps!.start_time_seconds[index],\n endSecond: response.timestamps!.end_time_seconds[index],\n }))\n : [],\n language: response.language_code\n ? response.language_code\n : undefined,\n durationInSeconds:\n response.timestamps?.end_time_seconds[\n response.timestamps.end_time_seconds.length - 1\n ] ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst sarvamTranscriptionResponseSchema = z.object({\n request_id: z.string().nullable(),\n transcript: z.string(),\n language_code: z.string().nullable(),\n timestamps: z\n .object({\n end_time_seconds: z.array(z.number()),\n start_time_seconds: z.array(z.number()),\n words: z.array(z.string()),\n })\n .optional(),\n diarized_transcript: z\n .object({\n entries: z.array(\n z.object({\n end_time_seconds: z.array(z.number()),\n start_time_seconds: z.array(z.number()),\n transcript: z.string(),\n speaker_id: z.string(),\n }),\n ),\n })\n .optional(),\n});\n","import { z } from \"zod\";\n\nexport type SarvamTranscriptionModelId =\n | \"saarika:v2\"\n | \"saarika:v1\"\n | \"saarika:flash\"\n | (string & {});\n\nexport const SarvamProviderOptionsSchema = z.object({\n with_timestamps: z.boolean().nullish().default(false),\n /**\n * Enables speaker diarization, which identifies and separates different speakers in the audio.\n * When set to true, the API will provide speaker-specific segments in the response.\n * Note: This parameter is currently in Beta mode.\n */\n with_diarization: z.boolean().nullish().default(false),\n /**\n * Number of speakers to be detected in the audio.\n * This is used when with_diarization is set to true.\n * Can be null.\n */\n num_speakers: z.number().int().nullish(),\n});\n","import type { SpeechModelV1, SpeechModelV1CallWarning } from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\";\nimport type { SarvamConfig, SarvamLanguageCode } from \"./sarvam-config\";\nimport { sarvamFailedResponseHandler } from \"./sarvam-error\";\nimport {\n SarvamProviderOptionsSchema,\n SpeakerSchema,\n type SarvamSpeechModelId,\n} from \"./sarvam-speech-settings\";\nimport type { SarvamSpeechAPITypes } from \"./sarvam-api-types\";\nimport { z } from \"zod\";\n\nexport type SarvamSpeechCallOptions = z.infer<\n typeof SarvamProviderOptionsSchema\n>;\n\ninterface SarvamSpeechModelConfig extends SarvamConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n speech?: SarvamSpeechCallOptions;\n}\n\nexport class SarvamSpeechModel implements SpeechModelV1 {\n readonly specificationVersion = \"v1\";\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: SarvamSpeechModelId,\n readonly languageCode: SarvamLanguageCode,\n private readonly config: SarvamSpeechModelConfig,\n ) {}\n\n private getArgs({\n text,\n voice,\n outputFormat = \"wav\",\n // speed,\n // instructions,\n providerOptions,\n }: Parameters<SpeechModelV1[\"doGenerate\"]>[0]) {\n const warnings: SpeechModelV1CallWarning[] = [];\n\n // Parse provider options\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: {\n sarvam: {\n ...providerOptions?.sarvam,\n ...this.config.speech,\n },\n },\n schema: SarvamProviderOptionsSchema,\n });\n\n const getSpeaker = (): SarvamSpeechCallOptions[\"speaker\"] => {\n if (sarvamOptions?.speaker) return sarvamOptions.speaker;\n if (voice) {\n return SpeakerSchema.parse(voice);\n }\n\n switch (this.modelId) {\n case \"bulbul:v1\":\n return \"meera\";\n case \"bulbul:v2\":\n return \"manisha\";\n }\n\n return \"meera\";\n };\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n text: text,\n target_language_code: this.languageCode,\n speaker: getSpeaker(),\n // response_format: \"wav\",\n // speed,\n // instructions,\n };\n\n if (outputFormat) {\n if (\n [\"mp3\", \"opus\", \"aac\", \"flac\", \"wav\", \"pcm\"].includes(\n outputFormat,\n )\n ) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"outputFormat\",\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (sarvamOptions) {\n const speechModelOptions: SarvamSpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value =\n speechModelOptions[key as keyof SarvamSpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV1[\"doGenerate\"]>>> {\n const currentDate =\n this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = this.getArgs(options);\n\n const {\n value,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/text-to-speech\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n z.object({\n request_id: z.string(),\n audios: z.array(z.string()),\n }),\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const audio = value.audios[0];\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nexport type SarvamSpeechModelId = \"bulbul:v1\" | \"bulbul:v2\" | (string & {});\n\nexport type SarvamSpeechVoices = z.infer<typeof SpeakerSchema>;\n\nexport const SpeakerSchema = z\n .enum([\n \"meera\",\n \"pavithra\",\n \"maitreyi\",\n \"arvind\",\n \"amol\",\n \"amartya\",\n \"diya\",\n \"neel\",\n \"misha\",\n \"vian\",\n \"arjun\",\n \"maya\",\n \"anushka\",\n \"abhilash\",\n \"manisha\",\n \"vidya\",\n \"arya\",\n \"karun\",\n \"hitesh\",\n ])\n .default(\"meera\");\n\n// https://docs.sarvam.ai/api-reference-docs/text-to-speech/convert\nexport const SarvamProviderOptionsSchema = z\n .object({\n speaker: SpeakerSchema,\n pitch: z.number().min(-0.75).max(0.75).default(0.0),\n pace: z.number().min(0.5).max(2.0).default(1.0),\n loudness: z.number().min(0.3).max(3.0).default(1.0),\n speech_sample_rate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n ])\n .default(22050),\n enable_preprocessing: z.boolean().default(false),\n })\n .partial();\n"],"mappings":"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","names":["import_provider_utils","import_provider","import_provider_utils","import_zod","import_provider_utils","import_provider","import_provider_utils","prompt","_a","toolCall","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","SarvamProviderOptionsSchema","import_zod","SarvamProviderOptionsSchema"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/sarvam-provider.ts","../src/sarvam-chat-language-model.ts","../src/convert-to-sarvam-chat-messages.ts","../src/get-response-metadata.ts","../src/map-sarvam-finish-reason.ts","../src/sarvam-error.ts","../src/sarvam-prepare-tools.ts","../src/sarvam-transcription-model.ts","../src/sarvam-transcription-settings.ts","../src/sarvam-speech-model.ts","../src/sarvam-speech-settings.ts","../src/sarvam-transliterate-model.ts","../src/sarvam-config.ts"],"sourcesContent":["export { createSarvam, sarvam } from \"./sarvam-provider\";\nexport type { SarvamProvider, SarvamProviderSettings } from \"./sarvam-provider\";\n","import {\n LanguageModelV1,\n SpeechModelV1,\n NoSuchModelError,\n ProviderV1,\n TranscriptionModelV1,\n} from \"@ai-sdk/provider\";\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from \"@ai-sdk/provider-utils\";\nimport { SarvamChatLanguageModel } from \"./sarvam-chat-language-model\";\nimport { SarvamChatModelId, SarvamChatSettings } from \"./sarvam-chat-settings\";\nimport { SarvamTranscriptionCallOptions, SarvamTranscriptionModelId } from \"./sarvam-transcription-settings\";\nimport {\n SarvamTranscriptionModel,\n} from \"./sarvam-transcription-model\";\nimport { SarvamSpeechModelId, SarvamSpeechSettings } from \"./sarvam-speech-settings\";\nimport {\n SarvamSpeechModel,\n} from \"./sarvam-speech-model\";\nimport { SarvamLanguageCode } from \"./sarvam-config\";\nimport { SarvamTransliterateModel } from \"./sarvam-transliterate-model\";\nimport { SarvamTransliterateSettings } from \"./sarvam-transliterate-settings\";\n\nexport interface SarvamProvider {\n /**\n * Creates a model for text generation.\n */\n (modelId: SarvamChatModelId, settings?: SarvamChatSettings): LanguageModelV1;\n\n /**\n * Creates an Sarvam chat model for text generation.\n */\n languageModel(\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ): LanguageModelV1;\n\n /**\n * Creates a Sarvam model for transcription.\n */\n transcription(\n modelId: SarvamTranscriptionModelId,\n languageCode?: SarvamLanguageCode | \"unknown\",\n settings?: SarvamTranscriptionCallOptions,\n ): TranscriptionModelV1;\n\n /**\n * Creates a Sarvam model for speech.\n */\n speech(\n modelId: SarvamSpeechModelId,\n languageCode: SarvamLanguageCode,\n settings?: SarvamSpeechSettings,\n ): SpeechModelV1;\n\n /**\n * Creates an Sarvam for transliterate.\n */\n transliterate(settings: SarvamTransliterateSettings): LanguageModelV1;\n}\n\nexport interface SarvamProviderSettings {\n /**\n * URL for the Sarvam API calls.\n * @default https://api.sarvam.ai\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n * @default process.env.SARVAM_API_KEY\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n * @default\n Authorization: `Bearer ${process.env.SARVAM_API_KEY}`,\n \"api-subscription-key\": process.env.SARVAM_API_KEY\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n* Create an Sarvam provider instance.\n*/\nexport function createSarvam(\n options: SarvamProviderSettings = {},\n): SarvamProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? \"https://api.sarvam.ai\";\n\n const ApiKey = loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"SARVAM_API_KEY\",\n description: \"Sarvam\",\n });\n\n const getHeaders = () => ({\n Authorization: `Bearer ${ApiKey}`,\n \"api-subscription-key\": ApiKey,\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: SarvamChatModelId,\n settings: SarvamChatSettings = {},\n ) =>\n new SarvamChatLanguageModel(modelId, settings, {\n provider: \"sarvam.chat\",\n url: ({ path }) => `${baseURL}/v1${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ) => {\n if (new.target) {\n throw new Error(\n \"The Sarvam model function cannot be called with the new keyword.\",\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n const createTranscriptionModel = (\n modelId: SarvamTranscriptionModelId,\n languageCode: SarvamLanguageCode | \"unknown\" = \"unknown\",\n settings?: SarvamTranscriptionCallOptions,\n ) => {\n return new SarvamTranscriptionModel(modelId, languageCode, {\n provider: \"sarvam.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n transcription: settings,\n });\n };\n\n const createSpeechModel = (\n modelId: SarvamSpeechModelId,\n languageCode: SarvamLanguageCode,\n settings?: SarvamSpeechSettings,\n ) =>\n new SarvamSpeechModel(modelId, languageCode, {\n provider: `sarvam.speech`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n speech: settings,\n });\n\n const createTransliterateModel = (settings: SarvamTransliterateSettings) =>\n new SarvamTransliterateModel(\n {\n to: settings.to,\n from: settings.from,\n },\n {\n provider: \"sarvam.transliterate\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n },\n );\n\n const provider = (\n modelId: SarvamChatModelId,\n settings?: SarvamChatSettings,\n ) => createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.transliterate = createTransliterateModel;\n\n return provider;\n}\n\n/**\n* Default Sarvam provider instance.\n*/\nexport const sarvam = createSarvam();\n","import {\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1Prompt,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n} from \"@ai-sdk/provider\";\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\nimport { convertToSarvamChatMessages } from \"./convert-to-sarvam-chat-messages\";\nimport { getResponseMetadata } from \"./get-response-metadata\";\nimport { mapSarvamFinishReason } from \"./map-sarvam-finish-reason\";\nimport { SarvamChatModelId, SarvamChatSettings } from \"./sarvam-chat-settings\";\nimport {\n sarvamErrorDataSchema,\n sarvamFailedResponseHandler,\n} from \"./sarvam-error\";\nimport {\n extractToolCallData,\n prepareTools,\n simulateToolCalling,\n} from \"./sarvam-prepare-tools\";\n\ntype SarvamChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class SarvamChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = \"v1\";\n\n readonly supportsStructuredOutputs = false;\n readonly defaultObjectGenerationMode = \"json\";\n\n readonly modelId: SarvamChatModelId;\n readonly settings: SarvamChatSettings;\n\n private readonly config: SarvamChatConfig;\n\n constructor(\n modelId: SarvamChatModelId,\n settings: SarvamChatSettings,\n config: SarvamChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n // image urls can be sent if downloadImages is disabled (default):\n return !this.settings.downloadImages;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n providerMetadata,\n }: Parameters<LanguageModelV1[\"doGenerate\"]>[0] & {\n stream: boolean;\n }) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"topK\",\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === \"json\" &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"responseFormat\",\n details: \"JSON response format schema is not supported\",\n });\n }\n\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: providerMetadata,\n schema: z.object({\n reasoningFormat: z.enum([\"parsed\", \"raw\", \"hidden\"]).nullish(),\n }),\n });\n\n const baseArgs = (\n prompt: LanguageModelV1Prompt,\n fakeToolSystemPrompt?: string,\n ) => ({\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\n response_format:\n // json object response format is not supported for streaming:\n stream === false && responseFormat?.type === \"json\"\n ? { type: \"json_object\" }\n : undefined,\n\n // provider options:\n reasoning_format: sarvamOptions?.reasoningFormat,\n\n // messages:\n messages: convertToSarvamChatMessages(prompt, fakeToolSystemPrompt),\n });\n\n console.log(type, mode)\n\n switch (type) {\n case \"regular\": {\n const { tools, tool_choice, toolWarnings } = prepareTools({\n mode,\n });\n\n const fakeSystemPrompt =\n tools && this.settings.simulateToolCalling\n ? await simulateToolCalling(tools)\n : undefined;\n\n return {\n args: {\n ...baseArgs(prompt, fakeSystemPrompt),\n tools,\n tool_choice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case \"object-json\": {\n return {\n args: {\n ...baseArgs(prompt),\n response_format:\n // json object response format is not supported for streaming:\n stream === false ? { type: \"json_object\" } : undefined,\n },\n warnings,\n };\n }\n\n case \"object-tool\": {\n return {\n args: {\n ...baseArgs(prompt),\n tool_choice: {\n type: \"function\",\n function: { name: mode.tool.name },\n },\n tools: [\n {\n type: \"function\",\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n },\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doGenerate\"]>>> {\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n sarvamChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n\n let text = choice.message.content ?? undefined;\n\n let toolCalls = choice.message.tool_calls?.map((toolCall) => ({\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })) as LanguageModelV1FunctionToolCall[] | undefined;\n\n // simulate fake tool calling\n if (this.settings.simulateToolCalling) {\n if (\n text &&\n text.length !== 0 &&\n (!toolCalls || toolCalls?.length === 0)\n ) {\n const newTools = extractToolCallData(text);\n if (newTools) {\n toolCalls = [newTools];\n text = undefined;\n }\n }\n }\n\n return {\n text,\n toolCalls,\n reasoning: choice.message.reasoning ?? undefined,\n finishReason: mapSarvamFinishReason(choice.finish_reason),\n usage: {\n promptTokens: response.usage?.prompt_tokens ?? NaN,\n completionTokens: response.usage?.completion_tokens ?? NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1[\"doStream\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doStream\"]>>> {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n sarvamChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n const toolCalls: Array<{\n id: string;\n type: \"function\";\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV1FinishReason = \"unknown\";\n let usage: {\n promptTokens: number | undefined;\n completionTokens: number | undefined;\n } = {\n promptTokens: undefined,\n completionTokens: undefined,\n };\n let isFirstChunk = true;\n\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof sarvamChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = \"error\";\n controller.enqueue({\n type: \"error\",\n error: chunk.error,\n });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if (\"error\" in value) {\n finishReason = \"error\";\n controller.enqueue({\n type: \"error\",\n error: value.error,\n });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value),\n });\n }\n\n if (value.x_sarvam?.usage != null) {\n usage = {\n promptTokens: value.x_sarvam.usage.prompt_tokens ?? undefined,\n completionTokens:\n value.x_sarvam.usage.completion_tokens ?? undefined,\n };\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapSarvamFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n controller.enqueue({\n type: \"reasoning\",\n textDelta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? \"\",\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? \"\";\n }\n\n // send delta\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: toolCallDelta.function.arguments ?? \"\",\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n promptTokens: usage.promptTokens ?? NaN,\n completionTokens: usage.completionTokens ?? NaN,\n },\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst sarvamChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst sarvamChatChunkSchema = z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal(\"function\").optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_sarvam: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n sarvamErrorDataSchema,\n]);\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nimport { SarvamChatPrompt } from \"./sarvam-api-types\";\n\nexport function convertToSarvamChatMessages(\n prompt: LanguageModelV1Prompt,\n fakeToolSystemPrompt?: string,\n): SarvamChatPrompt {\n const messages: SarvamChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n const contentData = fakeToolSystemPrompt\n ? `${content}\\n\\n${fakeToolSystemPrompt}`\n : content;\n messages.push({ role: \"system\", content: contentData });\n break;\n }\n\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"image\": {\n return {\n type: \"image_url\",\n image_url: {\n url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? \"image/jpeg\"\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n },\n };\n }\n case \"file\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"File content parts in user messages\",\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case \"assistant\": {\n let text = \"\";\n const toolCalls: Array<{\n id: string;\n type: \"function\";\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: \"assistant\",\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case \"tool\": {\n for (const toolResponse of content) {\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV1FinishReason } from \"@ai-sdk/provider\";\n\nexport function mapSarvamFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"unknown\";\n }\n}\n","import { z } from \"zod\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\n\nexport const sarvamErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type SarvamErrorData = z.infer<typeof sarvamErrorDataSchema>;\n\nexport const sarvamFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: sarvamErrorDataSchema,\n errorToMessage: (data) => data.error.message,\n});\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FunctionToolCall,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\";\nimport { generateId } from \"@ai-sdk/provider-utils\";\n\ntype SarvamTools = Array<{\n type: \"function\";\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n}>;\n\nexport function prepareTools({\n mode,\n}: {\n mode: Parameters<LanguageModelV1[\"doGenerate\"]>[0][\"mode\"] & {\n type: \"regular\";\n };\n}): {\n tools:\n | undefined\n | Array<{\n type: \"function\";\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>;\n tool_choice:\n | { type: \"function\"; function: { name: string } }\n | \"auto\"\n | \"none\"\n | \"required\"\n | undefined;\n toolWarnings: LanguageModelV1CallWarning[];\n fakeTools?: string;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\n\n const sarvamTools: SarvamTools = [];\n\n for (const tool of tools) {\n if (tool.type === \"provider-defined\") {\n toolWarnings.push({ type: \"unsupported-tool\", tool });\n } else {\n sarvamTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: sarvamTools, tool_choice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: sarvamTools, tool_choice: type, toolWarnings };\n case \"tool\":\n return {\n tools: sarvamTools,\n tool_choice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n\nimport { compile } from \"json-schema-to-typescript\";\n\nexport const simulateToolCalling = async (\n tools: SarvamTools,\n): Promise<string> => {\n const context = [];\n const names = [];\n\n for (const tool of tools) {\n names.push(tool.function.name);\n\n const tsType = await compile(\n tool.function.parameters as object,\n tool.function.name,\n {\n bannerComment: \"\",\n format: false,\n declareExternallyReferenced: true,\n enableConstEnums: true,\n unreachableDefinitions: false,\n strictIndexSignatures: false,\n },\n );\n const toolContext = tsType\n .replace(\n /export interface (\\w+) \\{/,\n (_: any, name: string) => `type ${tool.function.name} = {`,\n )\n .replace(/\\/\\*\\*\\s*\\n\\s*\\*\\s*(.*?)\\s*\\n\\s*\\*\\//, \"// $1\");\n context.push(`// ${tool.function.description}\\n${toolContext}`);\n }\n\n const text = `These are the available tool you can execute.\n\n${context.join(\"\\n\")}\n\ntype YourToolChoices = {\n 'toolName': '${names.join(\"' | '\")}',\n 'toolData': ${names.join(\" | \")}\n}\n\nRespond normally.\nIf user request to execute any tool, respond with pure JSON format\nMake sure to translate toolData to English.\n\neg:\nconst myChoice: YourToolChoices = {\n \"toolName\": <name>,\n \"toolData\": <data>\n}`;\n\n return text;\n};\n\nexport const extractToolCallData = (\n text: string,\n): LanguageModelV1FunctionToolCall | void => {\n const jsonRegex = /\\{(?:[^{}]*|\\{[^{}]*\\})*\\}/g;\n const jsonMatches = text.match(jsonRegex);\n\n if (jsonMatches && jsonMatches[0]) {\n try {\n type ToolFunction = {\n toolName: string;\n toolData: any;\n };\n const toolFunction = JSON.parse(jsonMatches[0]) as ToolFunction;\n\n if (!(\"toolName\" in toolFunction)) return;\n if (!(\"toolData\" in toolFunction)) return;\n\n return {\n args: JSON.stringify(toolFunction.toolData),\n toolCallId: generateId(),\n toolCallType: \"function\",\n toolName: toolFunction.toolName,\n };\n } catch (error) {}\n }\n};\n","import {\n TranscriptionModelV1,\n TranscriptionModelV1CallWarning,\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\nimport { SarvamConfig, SarvamLanguageCode } from \"./sarvam-config\";\nimport { sarvamFailedResponseHandler } from \"./sarvam-error\";\nimport {\n SarvamProviderOptionsSchema,\n SarvamTranscriptionCallOptions,\n SarvamTranscriptionModelId,\n} from \"./sarvam-transcription-settings\";\n\n// https://docs.sarvam.ai/api-reference-docs/speech-to-text/transcribe\ninterface SarvamTranscriptionModelConfig extends SarvamConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n transcription?: SarvamTranscriptionCallOptions;\n}\n\nexport class SarvamTranscriptionModel implements TranscriptionModelV1 {\n readonly specificationVersion = \"v1\";\n\n constructor(\n readonly modelId: SarvamTranscriptionModelId,\n readonly languageCode: SarvamLanguageCode | \"unknown\",\n private readonly config: SarvamTranscriptionModelConfig,\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV1[\"doGenerate\"]>[0]) {\n const warnings: TranscriptionModelV1CallWarning[] = [];\n\n if (this.modelId === \"saarika:v1\" && this.languageCode === \"unknown\")\n throw new Error(\n \"Language code unknown is not supported for model saarika:v1\",\n );\n\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: {\n sarvam: {\n ...providerOptions?.sarvam,\n ...this.config.transcription,\n },\n },\n schema: SarvamProviderOptionsSchema,\n });\n\n const formData = new FormData();\n const blob =\n audio instanceof Blob\n ? audio\n : new Blob([audio], { type: mediaType });\n\n formData.append(\"file\", blob);\n formData.append(\"model\", this.modelId);\n if (sarvamOptions) {\n formData.append(\"language_code\", this.languageCode);\n formData.append(\n \"with_timestamps\",\n sarvamOptions.with_timestamps ? \"true\" : \"false\",\n );\n formData.append(\n \"with_diarization\",\n sarvamOptions.with_diarization ? \"true\" : \"false\",\n );\n if (\n sarvamOptions.num_speakers !== null &&\n sarvamOptions.num_speakers !== undefined\n ) {\n formData.append(\n \"num_speakers\",\n sarvamOptions.num_speakers.toString(),\n );\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV1[\"doGenerate\"]>>> {\n const currentDate =\n this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/speech-to-text\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n sarvamTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.transcript,\n segments: response.timestamps\n ? response.timestamps.words.map((word, index) => ({\n text: word,\n startSecond:\n response.timestamps!.start_time_seconds[index],\n endSecond: response.timestamps!.end_time_seconds[index],\n }))\n : [],\n language: response.language_code\n ? response.language_code\n : undefined,\n durationInSeconds:\n response.timestamps?.end_time_seconds[\n response.timestamps.end_time_seconds.length - 1\n ] ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst sarvamTranscriptionResponseSchema = z.object({\n request_id: z.string().nullable(),\n transcript: z.string(),\n language_code: z.string().nullable(),\n timestamps: z\n .object({\n end_time_seconds: z.array(z.number()),\n start_time_seconds: z.array(z.number()),\n words: z.array(z.string()),\n })\n .optional(),\n diarized_transcript: z\n .object({\n entries: z.array(\n z.object({\n end_time_seconds: z.array(z.number()),\n start_time_seconds: z.array(z.number()),\n transcript: z.string(),\n speaker_id: z.string(),\n }),\n ),\n })\n .optional(),\n});\n","import { z } from \"zod\";\n\nexport type SarvamTranscriptionModelId =\n | \"saarika:v2\"\n | \"saarika:v1\"\n | \"saarika:flash\"\n | (string & {});\n\nexport const SarvamProviderOptionsSchema = z.object({\n with_timestamps: z.boolean().nullish().default(false),\n with_diarization: z.boolean().nullish().default(false),\n num_speakers: z.number().int().nullish(),\n});\n\nexport type SarvamTranscriptionCallOptions = {\n with_timestamps?: boolean,\n /**\n * Enables speaker diarization, which identifies and separates different speakers in the audio.\n * When set to true, the API will provide speaker-specific segments in the response.\n * Note: This parameter is currently in Beta mode.\n */\n with_diarization?: boolean,\n /**\n * Number of speakers to be detected in the audio.\n * This is used when with_diarization is set to true.\n * Can be null.\n */\n num_speakers?: number,\n}\n","import type { SpeechModelV1, SpeechModelV1CallWarning } from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\";\nimport type { SarvamConfig, SarvamLanguageCode } from \"./sarvam-config\";\nimport { sarvamFailedResponseHandler } from \"./sarvam-error\";\nimport {\n SarvamProviderOptionsSchema,\n SarvamSpeechSettings,\n SpeakerSchema,\n type SarvamSpeechModelId,\n} from \"./sarvam-speech-settings\";\nimport type { SarvamSpeechAPITypes } from \"./sarvam-api-types\";\nimport { z } from \"zod\";\n\ninterface SarvamSpeechModelConfig extends SarvamConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n speech?: SarvamSpeechSettings;\n}\n\nexport class SarvamSpeechModel implements SpeechModelV1 {\n readonly specificationVersion = \"v1\";\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: SarvamSpeechModelId,\n readonly languageCode: SarvamLanguageCode,\n private readonly config: SarvamSpeechModelConfig,\n ) {}\n\n private getArgs({\n text,\n voice,\n outputFormat = \"wav\",\n // speed,\n // instructions,\n providerOptions,\n }: Parameters<SpeechModelV1[\"doGenerate\"]>[0]) {\n const warnings: SpeechModelV1CallWarning[] = [];\n\n // Parse provider options\n const sarvamOptions = parseProviderOptions({\n provider: \"sarvam\",\n providerOptions: {\n sarvam: {\n ...providerOptions?.sarvam,\n ...this.config.speech,\n },\n },\n schema: SarvamProviderOptionsSchema,\n });\n\n const getSpeaker = (): SarvamSpeechCallOptions[\"speaker\"] => {\n if (sarvamOptions?.speaker) return sarvamOptions.speaker;\n if (voice) {\n return SpeakerSchema.parse(voice);\n }\n\n switch (this.modelId) {\n case \"bulbul:v1\":\n return \"meera\";\n case \"bulbul:v2\":\n return \"manisha\";\n }\n\n return \"meera\";\n };\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n text: text,\n target_language_code: this.languageCode,\n speaker: getSpeaker(),\n // response_format: \"wav\",\n // speed,\n // instructions,\n };\n\n if (outputFormat) {\n if (\n [\"mp3\", \"opus\", \"aac\", \"flac\", \"wav\", \"pcm\"].includes(\n outputFormat,\n )\n ) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"outputFormat\",\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (sarvamOptions) {\n const speechModelOptions: SarvamSpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value =\n speechModelOptions[key as keyof SarvamSpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV1[\"doGenerate\"]>>> {\n const currentDate =\n this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = this.getArgs(options);\n\n const {\n value,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/text-to-speech\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n z.object({\n request_id: z.string(),\n audios: z.array(z.string()),\n }),\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const audio = value.audios[0];\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nexport type SarvamSpeechModelId = \"bulbul:v1\" | \"bulbul:v2\" | (string & {});\n\nexport type SarvamSpeechVoices = z.infer<typeof SpeakerSchema>;\n\nexport const SpeakerSchema = z\n .enum([\n \"meera\",\n \"pavithra\",\n \"maitreyi\",\n \"arvind\",\n \"amol\",\n \"amartya\",\n \"diya\",\n \"neel\",\n \"misha\",\n \"vian\",\n \"arjun\",\n \"maya\",\n \"anushka\",\n \"abhilash\",\n \"manisha\",\n \"vidya\",\n \"arya\",\n \"karun\",\n \"hitesh\",\n ])\n .default(\"meera\");\n\n// https://docs.sarvam.ai/api-reference-docs/text-to-speech/convert\nexport const SarvamProviderOptionsSchema = z\n .object({\n speaker: SpeakerSchema,\n pitch: z.number().min(-0.75).max(0.75).default(0.0),\n pace: z.number().min(0.5).max(2.0).default(1.0),\n loudness: z.number().min(0.3).max(3.0).default(1.0),\n speech_sample_rate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n ])\n .default(22050),\n enable_preprocessing: z.boolean().default(false),\n })\n .partial();\n\n/**\n * Configuration settings for Sarvam Text-to-Speech API.\n *\n * This type defines the customizable options for generating speech audio\n * using the Sarvam Text-to-Speech API. Each property corresponds to a specific\n * feature or parameter supported by the API.\n */\nexport type SarvamSpeechSettings = {\n /**\n * The speaker voice to be used for the output audio.\n *\n * @default \"meera\"\n * @example \"meera\" (Default female voice for bulbul:v1)\n * @example \"arvind\" (Male voice for bulbul:v1)\n * @example \"anushka\" (Female voice for bulbul:v2)\n */\n speaker?: SarvamSpeechVoices;\n\n /**\n * Controls the pitch of the audio.\n *\n * @default 0.0\n * @example -0.5 (Deeper voice)\n * @example 0.5 (Sharper voice)\n */\n pitch?: number;\n\n /**\n * Controls the speed of the audio.\n *\n * @default 1.0\n * @example 0.5 (Slower speech)\n * @example 2.0 (Faster speech)\n */\n pace?: number;\n\n /**\n * Controls the loudness of the audio.\n *\n * @default 1.0\n * @example 0.3 (Quieter audio)\n * @example 2.5 (Louder audio)\n */\n loudness?: number;\n\n /**\n * Specifies the sample rate of the output audio.\n *\n * @default 22050\n * @example 8000 (Low-quality audio)\n * @example 24000 (High-quality audio)\n */\n speech_sample_rate?: 8000 | 16000 | 22050 | 24000;\n\n /**\n * Enables preprocessing for normalization of English words and numeric entities\n * (e.g., numbers, dates) in the input text.\n *\n * @default false\n * @example true (Enable preprocessing)\n * @example false (Disable preprocessing)\n */\n enable_preprocessing?: boolean;\n};\n","import {\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1Prompt,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n} from \"@ai-sdk/provider\";\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\nimport { getResponseMetadata } from \"./get-response-metadata\";\nimport { convertToSarvamChatMessages } from \"./convert-to-sarvam-chat-messages\";\nimport { SarvamTransliterateSettings } from \"./sarvam-transliterate-settings\";\nimport {\n sarvamErrorDataSchema,\n sarvamFailedResponseHandler,\n} from \"./sarvam-error\";\nimport { SarvamLanguageCodeSchema } from \"./sarvam-config\";\n\ntype SarvamTransliterateConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class SarvamTransliterateModel implements LanguageModelV1 {\n readonly specificationVersion = \"v1\";\n\n readonly supportsStructuredOutputs = false;\n readonly defaultObjectGenerationMode = \"json\";\n\n readonly modelId: \"unknown\";\n readonly settings: SarvamTransliterateSettings;\n\n private readonly config: SarvamTransliterateConfig;\n\n constructor(\n settings: SarvamTransliterateSettings,\n config: SarvamTransliterateConfig,\n ) {\n this.modelId = \"unknown\";\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n // image urls can be sent if downloadImages is disabled (default):\n return false;\n }\n\n private getArgs({\n mode,\n prompt,\n }: Parameters<LanguageModelV1[\"doGenerate\"]>[0] & {\n stream: boolean;\n }) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (this.settings.from !== \"auto\") {\n if (this.settings.to !== \"en-IN\" && this.settings.from !== \"en-IN\")\n throw new Error(\n \"Sarvam doesn't support Indic-Indic Transliteration yet\",\n );\n }\n\n if (type !== \"regular\") {\n const _exhaustiveCheck = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n\n const messages = convertToSarvamChatMessages(prompt);\n\n return {\n messages,\n args: {\n input: messages\n .filter((m) => m.role === \"user\")\n .map((m) => m.content)\n .join(\"\\n\"),\n source_language_code: this.settings.from ?? \"auto\",\n target_language_code: this.settings.to,\n numerals_format: this.settings.numerals_format ?? \"international\",\n ...(this.settings.spoken_form\n ? {\n spoken_form: this.settings.spoken_form,\n spoken_form_numerals_language:\n this.settings.spoken_form_numerals_language ?? \"english\",\n }\n : {}),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1[\"doGenerate\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doGenerate\"]>>> {\n const { args, warnings, messages } = this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/transliterate\",\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: sarvamFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n sarvamTransliterateResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { input: rawPrompt, ...rawSettings } = args;\n\n let text = response.transliterated_text ?? undefined;\n\n return {\n text,\n toolCalls: undefined,\n reasoning: undefined,\n finishReason: \"unknown\",\n usage: {\n promptTokens: NaN,\n completionTokens: NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: undefined,\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1[\"doStream\"]>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1[\"doStream\"]>>> {\n throw new Error(\"Transliterate feature doesn't streaming yet\");\n }\n}\n\nconst sarvamTransliterateResponseSchema = z.object({\n transliterated_text: z.string().nullish(),\n source_language_code: SarvamLanguageCodeSchema.nullable(),\n request_id: z.string().nullish(),\n});\n","import { FetchFunction } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\n\nexport type SarvamConfig = {\n provider: string;\n url: (options: { modelId: string; path: string }) => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId?: () => string;\n};\n\nexport type SarvamLanguageCode = z.infer<typeof SarvamLanguageCodeSchema>;\n\nexport const SarvamLanguageCodeSchema = z.enum([\n \"hi-IN\",\n \"bn-IN\",\n \"kn-IN\",\n \"ml-IN\",\n \"mr-IN\",\n \"od-IN\",\n \"pa-IN\",\n \"ta-IN\",\n \"te-IN\",\n \"en-IN\",\n \"gu-IN\",\n]);\n"],"mappings":"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","names":["import_provider_utils","import_provider","import_provider_utils","import_zod","import_provider_utils","import_provider","import_provider_utils","prompt","_a","toolCall","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","SarvamProviderOptionsSchema","import_zod","SarvamProviderOptionsSchema","import_provider_utils","import_zod","import_zod"]}