@langchain/google-common 2.1.18 → 2.1.20

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.
Files changed (108) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/auth.cjs +1 -2
  3. package/dist/auth.cjs.map +1 -1
  4. package/dist/auth.d.cts.map +1 -1
  5. package/dist/auth.d.ts.map +1 -1
  6. package/dist/auth.js +1 -2
  7. package/dist/auth.js.map +1 -1
  8. package/dist/chat_models.cjs +24 -27
  9. package/dist/chat_models.cjs.map +1 -1
  10. package/dist/chat_models.d.cts.map +1 -1
  11. package/dist/chat_models.d.ts.map +1 -1
  12. package/dist/chat_models.js +7 -9
  13. package/dist/chat_models.js.map +1 -1
  14. package/dist/connection.cjs +16 -26
  15. package/dist/connection.cjs.map +1 -1
  16. package/dist/connection.d.cts.map +1 -1
  17. package/dist/connection.d.ts.map +1 -1
  18. package/dist/connection.js +13 -22
  19. package/dist/connection.js.map +1 -1
  20. package/dist/embeddings.cjs +12 -22
  21. package/dist/embeddings.cjs.map +1 -1
  22. package/dist/embeddings.d.cts +0 -1
  23. package/dist/embeddings.d.cts.map +1 -1
  24. package/dist/embeddings.d.ts +0 -1
  25. package/dist/embeddings.d.ts.map +1 -1
  26. package/dist/embeddings.js +7 -16
  27. package/dist/embeddings.js.map +1 -1
  28. package/dist/experimental/media.cjs +41 -70
  29. package/dist/experimental/media.cjs.map +1 -1
  30. package/dist/experimental/media.d.cts.map +1 -1
  31. package/dist/experimental/media.d.ts.map +1 -1
  32. package/dist/experimental/media.js +36 -65
  33. package/dist/experimental/media.js.map +1 -1
  34. package/dist/experimental/utils/media_core.cjs +22 -39
  35. package/dist/experimental/utils/media_core.cjs.map +1 -1
  36. package/dist/experimental/utils/media_core.d.cts.map +1 -1
  37. package/dist/experimental/utils/media_core.d.ts.map +1 -1
  38. package/dist/experimental/utils/media_core.js +16 -33
  39. package/dist/experimental/utils/media_core.js.map +1 -1
  40. package/dist/index.cjs +1 -0
  41. package/dist/llms.cjs +14 -19
  42. package/dist/llms.cjs.map +1 -1
  43. package/dist/llms.d.cts.map +1 -1
  44. package/dist/llms.d.ts.map +1 -1
  45. package/dist/llms.js +4 -8
  46. package/dist/llms.js.map +1 -1
  47. package/dist/output_parsers.cjs +12 -29
  48. package/dist/output_parsers.cjs.map +1 -1
  49. package/dist/output_parsers.d.cts.map +1 -1
  50. package/dist/output_parsers.d.ts.map +1 -1
  51. package/dist/output_parsers.js +10 -26
  52. package/dist/output_parsers.js.map +1 -1
  53. package/dist/profiles.cjs +100 -17
  54. package/dist/profiles.cjs.map +1 -1
  55. package/dist/profiles.js +100 -17
  56. package/dist/profiles.js.map +1 -1
  57. package/dist/types-anthropic.d.cts.map +1 -1
  58. package/dist/types-anthropic.d.ts.map +1 -1
  59. package/dist/types.cjs +1 -0
  60. package/dist/types.cjs.map +1 -1
  61. package/dist/types.d.cts +0 -1
  62. package/dist/types.d.cts.map +1 -1
  63. package/dist/types.d.ts +0 -1
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js.map +1 -1
  66. package/dist/utils/anthropic.cjs +73 -113
  67. package/dist/utils/anthropic.cjs.map +1 -1
  68. package/dist/utils/anthropic.js +63 -102
  69. package/dist/utils/anthropic.js.map +1 -1
  70. package/dist/utils/common.cjs +10 -13
  71. package/dist/utils/common.cjs.map +1 -1
  72. package/dist/utils/common.d.cts.map +1 -1
  73. package/dist/utils/common.d.ts.map +1 -1
  74. package/dist/utils/common.js +6 -8
  75. package/dist/utils/common.js.map +1 -1
  76. package/dist/utils/failed_handler.cjs +1 -2
  77. package/dist/utils/failed_handler.cjs.map +1 -1
  78. package/dist/utils/failed_handler.d.cts.map +1 -1
  79. package/dist/utils/failed_handler.d.ts.map +1 -1
  80. package/dist/utils/failed_handler.js +1 -2
  81. package/dist/utils/failed_handler.js.map +1 -1
  82. package/dist/utils/gemini.cjs +83 -135
  83. package/dist/utils/gemini.cjs.map +1 -1
  84. package/dist/utils/gemini.d.cts.map +1 -1
  85. package/dist/utils/gemini.d.ts.map +1 -1
  86. package/dist/utils/gemini.js +58 -109
  87. package/dist/utils/gemini.js.map +1 -1
  88. package/dist/utils/index.cjs +1 -0
  89. package/dist/utils/palm.d.cts.map +1 -1
  90. package/dist/utils/palm.d.ts.map +1 -1
  91. package/dist/utils/safety.cjs.map +1 -1
  92. package/dist/utils/safety.d.cts.map +1 -1
  93. package/dist/utils/safety.d.ts.map +1 -1
  94. package/dist/utils/safety.js.map +1 -1
  95. package/dist/utils/stream.cjs +5 -9
  96. package/dist/utils/stream.cjs.map +1 -1
  97. package/dist/utils/stream.d.cts.map +1 -1
  98. package/dist/utils/stream.d.ts.map +1 -1
  99. package/dist/utils/stream.js +5 -9
  100. package/dist/utils/stream.js.map +1 -1
  101. package/dist/utils/zod_to_gemini_parameters.cjs +4 -7
  102. package/dist/utils/zod_to_gemini_parameters.cjs.map +1 -1
  103. package/dist/utils/zod_to_gemini_parameters.d.cts.map +1 -1
  104. package/dist/utils/zod_to_gemini_parameters.d.ts.map +1 -1
  105. package/dist/utils/zod_to_gemini_parameters.js +2 -4
  106. package/dist/utils/zod_to_gemini_parameters.js.map +1 -1
  107. package/package.json +3 -3
  108. package/dist/_virtual/rolldown_runtime.cjs +0 -25
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @langchain/google-common
2
2
 
3
+ ## 2.1.20
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`fb2226e`](https://github.com/langchain-ai/langchainjs/commit/fb2226e6decdaba21e78b3f01877b45fa1eed6d3)]:
8
+ - @langchain/core@1.1.27
9
+
10
+ ## 2.1.19
11
+
12
+ ### Patch Changes
13
+
14
+ - [#10078](https://github.com/langchain-ai/langchainjs/pull/10078) [`7be50a7`](https://github.com/langchain-ai/langchainjs/commit/7be50a7014d7622e0ab8d303dfc9c633ebc96333) Thanks [@christian-bromann](https://github.com/christian-bromann)! - chore(\*): update model profiles
15
+
16
+ - Updated dependencies [[`27186c5`](https://github.com/langchain-ai/langchainjs/commit/27186c54884cfe7c2522fa50b42c3ca0ccaefdba), [`05396f7`](https://github.com/langchain-ai/langchainjs/commit/05396f7ce0a91c49a3bae4bbcd3dbdd6cbd18089), [`5a6f26b`](https://github.com/langchain-ai/langchainjs/commit/5a6f26bbaed80195dc538c538b96219a8b03f38f)]:
17
+ - @langchain/core@1.1.25
18
+
3
19
  ## 2.1.18
4
20
 
5
21
  ### Patch Changes
package/dist/auth.cjs CHANGED
@@ -62,9 +62,8 @@ var GoogleAbstractedFetchClient = class {
62
62
  const body = await res.text();
63
63
  this._throwRequestError(res.status, body, res, context);
64
64
  }
65
- const data = await this._buildData(res, opts);
66
65
  return {
67
- data,
66
+ data: await this._buildData(res, opts),
68
67
  config: {},
69
68
  status: res.status,
70
69
  statusText: res.statusText,
package/dist/auth.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.cjs","names":["res: Response","opts: GoogleAbstractedClientOps","ReadableJsonStream","status: number","body: string | undefined","response: unknown","context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }","url: string | undefined","additionalHeaders: Record<string, string>","fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n }","apiKey: string","platform: GooglePlatformType","authOption: AuthOptions | undefined","scopeProperty: string","scopesOrPlatform: string[] | GooglePlatformType | undefined","scopes: string[]"],"sources":["../src/auth.ts"],"sourcesContent":["import { ReadableJsonStream } from \"./utils/stream.js\";\nimport { GooglePlatformType } from \"./types.js\";\n\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\n\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\n\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n\n abstract getProjectId(): Promise<string>;\n\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n\n _fetch: typeof fetch = fetch;\n\n async _buildData(res: Response, opts: GoogleAbstractedClientOps) {\n switch (opts.responseType) {\n case \"json\":\n return res.json();\n case \"stream\":\n return new ReadableJsonStream(res.body);\n default:\n return res.blob();\n }\n }\n\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(\n status: number,\n body: string | undefined,\n response: unknown,\n context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }\n ): never {\n const message = body\n ? `Google request failed with status code ${status}: ${body}`\n : `Google request failed with status code ${status}`;\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).response = response;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).details = context;\n throw error;\n }\n\n async _request(\n url: string | undefined,\n opts: GoogleAbstractedClientOps,\n additionalHeaders: Record<string, string>\n ) {\n if (url == null) throw new Error(\"Missing URL\");\n const fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\n signal: opts.signal,\n };\n if (opts.data !== undefined) {\n if (typeof opts.data === \"string\") {\n fetchOptions.body = opts.data;\n } else {\n fetchOptions.body = JSON.stringify(opts.data);\n }\n }\n\n const context = { url, opts, fetchOptions };\n\n let res: Response;\n try {\n res = await this._fetch(url, fetchOptions);\n } catch (fetchError) {\n // The _fetch implementation (e.g. GAuthClient using google-auth-library)\n // may throw its own error (e.g. GaxiosError) for non-2xx responses\n // before we can handle them here. Extract what we can from the error\n // and re-throw with a useful, formatted message.\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const err = fetchError as any;\n const status = err?.response?.status ?? err?.status;\n\n if (status != null) {\n let body: string | undefined;\n\n if (err?.response?.data != null) {\n if (typeof err.response.data === \"string\") {\n body = err.response.data;\n } else if (typeof err.response.data === \"object\") {\n try {\n body = JSON.stringify(err.response.data);\n } catch {\n // best effort\n }\n }\n }\n\n this._throwRequestError(\n status,\n body,\n err?.response ?? { status },\n context\n );\n }\n\n // No status info available — re-throw the original error as-is\n throw fetchError;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n\n if (!res.ok) {\n const body = await res.text();\n this._throwRequestError(res.status, body, res, context);\n }\n\n const data = await this._buildData(res, opts);\n return {\n data,\n config: {},\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n request: { responseURL: res.url },\n };\n }\n}\n\nexport class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n\n constructor(apiKey: string) {\n super();\n this.apiKey = apiKey;\n }\n\n get clientType(): string {\n return \"apiKey\";\n }\n\n getProjectId(): Promise<string> {\n throw new Error(\"APIs that require a project ID cannot use an API key\");\n // Perhaps we could implement this if needed:\n // https://cloud.google.com/docs/authentication/api-keys#get-info\n }\n\n request(opts: GoogleAbstractedClientOps): unknown {\n const authHeader = {\n \"X-Goog-Api-Key\": this.apiKey,\n };\n return this._request(opts.url, opts, authHeader);\n }\n}\n\nexport function aiPlatformScope(platform: GooglePlatformType): string[] {\n switch (platform) {\n case \"gai\":\n return [\"https://www.googleapis.com/auth/generative-language\"];\n default:\n return [\"https://www.googleapis.com/auth/cloud-platform\"];\n }\n}\n\nexport function ensureAuthOptionScopes<AuthOptions>(\n authOption: AuthOptions | undefined,\n scopeProperty: string,\n scopesOrPlatform: string[] | GooglePlatformType | undefined\n): AuthOptions {\n // If the property is already set, return it\n if (authOption && Object.hasOwn(authOption, scopeProperty)) {\n return authOption;\n }\n\n // Otherwise add it\n const scopes: string[] = Array.isArray(scopesOrPlatform)\n ? (scopesOrPlatform as string[])\n : aiPlatformScope(scopesOrPlatform ?? \"gcp\");\n return {\n [scopeProperty]: scopes,\n ...(authOption ?? {}),\n } as AuthOptions;\n}\n"],"mappings":";;;AAsBA,IAAsB,8BAAtB,MAAoF;CAOlF,SAAuB;CAEvB,MAAM,WAAWA,KAAeC,MAAiC;AAC/D,UAAQ,KAAK,cAAb;GACE,KAAK,OACH,QAAO,IAAI,MAAM;GACnB,KAAK,SACH,QAAO,IAAIC,kCAAmB,IAAI;GACpC,QACE,QAAO,IAAI,MAAM;EACpB;CACF;;;;;;CAOD,AAAU,mBACRC,QACAC,MACAC,UACAC,SAKO;EACP,MAAM,UAAU,OACZ,CAAC,uCAAuC,EAAE,OAAO,EAAE,EAAE,MAAM,GAC3D,CAAC,uCAAuC,EAAE,QAAQ;EACtD,MAAM,QAAQ,IAAI,MAAM;EAEvB,MAAc,WAAW;EAEzB,MAAc,UAAU;AACzB,QAAM;CACP;CAED,MAAM,SACJC,KACAN,MACAO,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM;EACjC,MAAMC,eAKF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,CAAE;IACtB,GAAI,qBAAqB,CAAE;GAC5B;GACD,QAAQ,KAAK;EACd;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,UACvB,aAAa,OAAO,KAAK;OAEzB,aAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,UAAU;GAAE;GAAK;GAAM;EAAc;EAE3C,IAAIT;AACJ,MAAI;GACF,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;EAC3C,SAAQ,YAAY;GAMnB,MAAM,MAAM;GACZ,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK;AAE7C,OAAI,UAAU,MAAM;IAClB,IAAII;AAEJ,QAAI,KAAK,UAAU,QAAQ,MACzB;SAAI,OAAO,IAAI,SAAS,SAAS,UAC/B,OAAO,IAAI,SAAS;cACX,OAAO,IAAI,SAAS,SAAS,SACtC,KAAI;MACF,OAAO,KAAK,UAAU,IAAI,SAAS,KAAK;KACzC,QAAO,CAEP;IACF;IAGH,KAAK,mBACH,QACA,MACA,KAAK,YAAY,EAAE,OAAQ,GAC3B,QACD;GACF;AAGD,SAAM;EAEP;AAED,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM;GAC7B,KAAK,mBAAmB,IAAI,QAAQ,MAAM,KAAK,QAAQ;EACxD;EAED,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,KAAK;AAC7C,SAAO;GACL;GACA,QAAQ,CAAE;GACV,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB,SAAS,IAAI;GACb,SAAS,EAAE,aAAa,IAAI,IAAK;EAClC;CACF;AACF;AAED,IAAa,mBAAb,cAAsC,4BAA4B;CAChE;CAEA,YAAYM,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQT,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBU,UAAwC;AACtE,SAAQ,UAAR;EACE,KAAK,MACH,QAAO,CAAC,qDAAsD;EAChE,QACE,QAAO,CAAC,gDAAiD;CAC5D;AACF;AAED,SAAgB,uBACdC,YACAC,eACAC,kBACa;AAEb,KAAI,cAAc,OAAO,OAAO,YAAY,cAAc,CACxD,QAAO;CAIT,MAAMC,SAAmB,MAAM,QAAQ,iBAAiB,GACnD,mBACD,gBAAgB,oBAAoB,MAAM;AAC9C,QAAO;GACJ,gBAAgB;EACjB,GAAI,cAAc,CAAE;CACrB;AACF"}
1
+ {"version":3,"file":"auth.cjs","names":["ReadableJsonStream"],"sources":["../src/auth.ts"],"sourcesContent":["import { ReadableJsonStream } from \"./utils/stream.js\";\nimport { GooglePlatformType } from \"./types.js\";\n\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\n\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\n\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n\n abstract getProjectId(): Promise<string>;\n\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n\n _fetch: typeof fetch = fetch;\n\n async _buildData(res: Response, opts: GoogleAbstractedClientOps) {\n switch (opts.responseType) {\n case \"json\":\n return res.json();\n case \"stream\":\n return new ReadableJsonStream(res.body);\n default:\n return res.blob();\n }\n }\n\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(\n status: number,\n body: string | undefined,\n response: unknown,\n context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }\n ): never {\n const message = body\n ? `Google request failed with status code ${status}: ${body}`\n : `Google request failed with status code ${status}`;\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).response = response;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).details = context;\n throw error;\n }\n\n async _request(\n url: string | undefined,\n opts: GoogleAbstractedClientOps,\n additionalHeaders: Record<string, string>\n ) {\n if (url == null) throw new Error(\"Missing URL\");\n const fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\n signal: opts.signal,\n };\n if (opts.data !== undefined) {\n if (typeof opts.data === \"string\") {\n fetchOptions.body = opts.data;\n } else {\n fetchOptions.body = JSON.stringify(opts.data);\n }\n }\n\n const context = { url, opts, fetchOptions };\n\n let res: Response;\n try {\n res = await this._fetch(url, fetchOptions);\n } catch (fetchError) {\n // The _fetch implementation (e.g. GAuthClient using google-auth-library)\n // may throw its own error (e.g. GaxiosError) for non-2xx responses\n // before we can handle them here. Extract what we can from the error\n // and re-throw with a useful, formatted message.\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const err = fetchError as any;\n const status = err?.response?.status ?? err?.status;\n\n if (status != null) {\n let body: string | undefined;\n\n if (err?.response?.data != null) {\n if (typeof err.response.data === \"string\") {\n body = err.response.data;\n } else if (typeof err.response.data === \"object\") {\n try {\n body = JSON.stringify(err.response.data);\n } catch {\n // best effort\n }\n }\n }\n\n this._throwRequestError(\n status,\n body,\n err?.response ?? { status },\n context\n );\n }\n\n // No status info available — re-throw the original error as-is\n throw fetchError;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n\n if (!res.ok) {\n const body = await res.text();\n this._throwRequestError(res.status, body, res, context);\n }\n\n const data = await this._buildData(res, opts);\n return {\n data,\n config: {},\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n request: { responseURL: res.url },\n };\n }\n}\n\nexport class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n\n constructor(apiKey: string) {\n super();\n this.apiKey = apiKey;\n }\n\n get clientType(): string {\n return \"apiKey\";\n }\n\n getProjectId(): Promise<string> {\n throw new Error(\"APIs that require a project ID cannot use an API key\");\n // Perhaps we could implement this if needed:\n // https://cloud.google.com/docs/authentication/api-keys#get-info\n }\n\n request(opts: GoogleAbstractedClientOps): unknown {\n const authHeader = {\n \"X-Goog-Api-Key\": this.apiKey,\n };\n return this._request(opts.url, opts, authHeader);\n }\n}\n\nexport function aiPlatformScope(platform: GooglePlatformType): string[] {\n switch (platform) {\n case \"gai\":\n return [\"https://www.googleapis.com/auth/generative-language\"];\n default:\n return [\"https://www.googleapis.com/auth/cloud-platform\"];\n }\n}\n\nexport function ensureAuthOptionScopes<AuthOptions>(\n authOption: AuthOptions | undefined,\n scopeProperty: string,\n scopesOrPlatform: string[] | GooglePlatformType | undefined\n): AuthOptions {\n // If the property is already set, return it\n if (authOption && Object.hasOwn(authOption, scopeProperty)) {\n return authOption;\n }\n\n // Otherwise add it\n const scopes: string[] = Array.isArray(scopesOrPlatform)\n ? (scopesOrPlatform as string[])\n : aiPlatformScope(scopesOrPlatform ?? \"gcp\");\n return {\n [scopeProperty]: scopes,\n ...(authOption ?? {}),\n } as AuthOptions;\n}\n"],"mappings":";;;AAsBA,IAAsB,8BAAtB,MAAoF;CAOlF,SAAuB;CAEvB,MAAM,WAAW,KAAe,MAAiC;AAC/D,UAAQ,KAAK,cAAb;GACE,KAAK,OACH,QAAO,IAAI,MAAM;GACnB,KAAK,SACH,QAAO,IAAIA,kCAAmB,IAAI,KAAK;GACzC,QACE,QAAO,IAAI,MAAM;;;;;;;;CASvB,AAAU,mBACR,QACA,MACA,UACA,SAKO;EACP,MAAM,UAAU,OACZ,0CAA0C,OAAO,IAAI,SACrD,0CAA0C;EAC9C,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAEhC,EAAC,MAAc,WAAW;AAE1B,EAAC,MAAc,UAAU;AACzB,QAAM;;CAGR,MAAM,SACJ,KACA,MACA,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM,cAAc;EAC/C,MAAM,eAKF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,EAAE;IACtB,GAAI,qBAAqB,EAAE;IAC5B;GACD,QAAQ,KAAK;GACd;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,SACvB,cAAa,OAAO,KAAK;MAEzB,cAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,UAAU;GAAE;GAAK;GAAM;GAAc;EAE3C,IAAI;AACJ,MAAI;AACF,SAAM,MAAM,KAAK,OAAO,KAAK,aAAa;WACnC,YAAY;GAMnB,MAAM,MAAM;GACZ,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK;AAE7C,OAAI,UAAU,MAAM;IAClB,IAAI;AAEJ,QAAI,KAAK,UAAU,QAAQ,MACzB;SAAI,OAAO,IAAI,SAAS,SAAS,SAC/B,QAAO,IAAI,SAAS;cACX,OAAO,IAAI,SAAS,SAAS,SACtC,KAAI;AACF,aAAO,KAAK,UAAU,IAAI,SAAS,KAAK;aAClC;;AAMZ,SAAK,mBACH,QACA,MACA,KAAK,YAAY,EAAE,QAAQ,EAC3B,QACD;;AAIH,SAAM;;AAIR,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM;AAC7B,QAAK,mBAAmB,IAAI,QAAQ,MAAM,KAAK,QAAQ;;AAIzD,SAAO;GACL,MAFW,MAAM,KAAK,WAAW,KAAK,KAAK;GAG3C,QAAQ,EAAE;GACV,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB,SAAS,IAAI;GACb,SAAS,EAAE,aAAa,IAAI,KAAK;GAClC;;;AAIL,IAAa,mBAAb,cAAsC,4BAA4B;CAChE;CAEA,YAAY,QAAgB;AAC1B,SAAO;AACP,OAAK,SAAS;;CAGhB,IAAI,aAAqB;AACvB,SAAO;;CAGT,eAAgC;AAC9B,QAAM,IAAI,MAAM,uDAAuD;;CAKzE,QAAQ,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,QACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;;;AAIpD,SAAgB,gBAAgB,UAAwC;AACtE,SAAQ,UAAR;EACE,KAAK,MACH,QAAO,CAAC,sDAAsD;EAChE,QACE,QAAO,CAAC,iDAAiD;;;AAI/D,SAAgB,uBACd,YACA,eACA,kBACa;AAEb,KAAI,cAAc,OAAO,OAAO,YAAY,cAAc,CACxD,QAAO;CAIT,MAAM,SAAmB,MAAM,QAAQ,iBAAiB,GACnD,mBACD,gBAAgB,oBAAoB,MAAM;AAC9C,QAAO;GACJ,gBAAgB;EACjB,GAAI,cAAc,EAAE;EACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.cts","names":["GooglePlatformType","GoogleAbstractedClientOpsMethod","GoogleAbstractedClientOpsResponseType","GoogleAbstractedClientOps","Record","AbortSignal","GoogleAbstractedClient","Promise","GoogleAbstractedFetchClient","fetch","Response","Headers","ApiKeyGoogleAuth","aiPlatformScope","ensureAuthOptionScopes","AuthOptions"],"sources":["../src/auth.d.ts"],"sourcesContent":["import { GooglePlatformType } from \"./types.js\";\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\nexport declare abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n abstract getProjectId(): Promise<string>;\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n _fetch: typeof fetch;\n _buildData(res: Response, opts: GoogleAbstractedClientOps): Promise<any>;\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(status: number, body: string | undefined, response: unknown, context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }): never;\n _request(url: string | undefined, opts: GoogleAbstractedClientOps, additionalHeaders: Record<string, string>): Promise<{\n data: any;\n config: {};\n status: number;\n statusText: string;\n headers: Headers;\n request: {\n responseURL: string;\n };\n }>;\n}\nexport declare class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n constructor(apiKey: string);\n get clientType(): string;\n getProjectId(): Promise<string>;\n request(opts: GoogleAbstractedClientOps): unknown;\n}\nexport declare function aiPlatformScope(platform: GooglePlatformType): string[];\nexport declare function ensureAuthOptionScopes<AuthOptions>(authOption: AuthOptions | undefined, scopeProperty: string, scopesOrPlatform: string[] | GooglePlatformType | undefined): AuthOptions;\n//# sourceMappingURL=auth.d.ts.map"],"mappings":";;;KACYC,+BAAAA;KACAC,qCAAAA;AADAD,KAEAE,yBAAAA,GAF+B;EAC/BD,GAAAA,CAAAA,EAAAA,MAAAA;EACAC,MAAAA,CAAAA,EAECF,+BAFwB;EAExBA,OAAAA,CAAAA,EACCG,MADDH,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EACCG,IAAAA,CAAAA,EAAAA,OAAAA;EAEKF,YAAAA,CAAAA,EAAAA,qCAAAA;EACNG,MAAAA,CAAAA,EAAAA,WAAAA;AAAW,CAAA;AAEPC,UAAAA,sBAAAA,CAAsB;EAKTE,OAAAA,EAAAA,CAAAA,IAAAA,EAJVL,yBAIqC,EAAA,GAAA,OAAA;EAE5BI,YAAAA,EAAAA,GAAAA,GALLA,OAKKA,CAAAA,MAAAA,CAAAA;EACFJ,IAAAA,UAAAA,EAAAA,EAAAA,MAAAA;;AAEPO,uBALUF,2BAAAA,YAAuCF,sBAKjDI,CAAAA;EAAgBP,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA4BI,SAAAA,YAAAA,CAAAA,CAAAA,EAHnCA,OAGmCA,CAAAA,MAAAA,CAAAA;EAQlDJ,SAAAA,OAAAA,CAAAA,IAAAA,EAVaA,yBAUbA,CAAAA,EAAAA,OAAAA;EACSC,MAAAA,EAAAA,OAVJK,KAUIL;EAEqBD,UAAAA,CAAAA,GAAAA,EAXxBO,QAWwBP,EAAAA,IAAAA,EAXRA,yBAWQA,CAAAA,EAXoBI,OAWpBJ,CAAAA,GAAAA,CAAAA;EAA8CC;;;;AAhBC;EA2BtEQ,UAAAA,kBAAgB,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,GAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA;IAIjBL,GAAAA,EAAAA,MAAAA;IACFJ,IAAAA,EAnBJA,yBAmBIA;IAL4BK,YAAAA,CAAAA,EAbvBJ,MAauBI,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA;EAA2B,CAAA,CAAA,EAAA,KAAA;EAOjDK,QAAAA,CAAAA,GAAAA,EAAAA,MAAe,GAAA,SAAWb,EAAAA,IAAAA,EAlBNG,yBAkBwB,EAAA,iBAAA,EAlBsBC,MAkBtB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAlB+CG,OAkB/C,CAAA;IAC5CO,IAAAA,EAAAA,GAAAA;IAAgDC,MAAAA,EAAAA,CAAAA,CAAAA;IAA6Ef,MAAAA,EAAAA,MAAAA;IAAiCe,UAAAA,EAAAA,MAAAA;IAAW,OAAA,EAdhLJ,OAcgL;;;;;;cAR5KC,gBAAAA,SAAyBJ,2BAAAA;;;;kBAI1BD;gBACFJ;;iBAEMU,eAAAA,WAA0Bb;iBAC1Bc,gDAAgDC,6EAA6Ef,iCAAiCe"}
1
+ {"version":3,"file":"auth.d.cts","names":[],"sources":["../src/auth.ts"],"mappings":";;;KAGY,+BAAA;AAAA,KAEA,qCAAA;AAAA,KAEA,yBAAA;EACV,GAAA;EACA,MAAA,GAAS,+BAAA;EACT,OAAA,GAAU,MAAA;EACV,IAAA;EACA,YAAA,GAAe,qCAAA;EACf,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,sBAAA;EACf,OAAA,GAAU,IAAA,EAAM,yBAAA;EAChB,YAAA,QAAoB,OAAA;EAAA,IAChB,UAAA;AAAA;AAAA,uBAGgB,2BAAA,YAAuC,sBAAA;EAAA,aAC9C,UAAA,CAAA;EAAA,SAEJ,YAAA,CAAA,GAAgB,OAAA;EAAA,SAEhB,OAAA,CAAQ,IAAA,EAAM,yBAAA;EAEvB,MAAA,SAAe,KAAA;EAET,UAAA,CAAW,GAAA,EAAK,QAAA,EAAU,IAAA,EAAM,yBAAA,GAAyB,OAAA;EAvB/D;;;;;EAAA,UAuCU,kBAAA,CACR,MAAA,UACA,IAAA,sBACA,QAAA,WACA,OAAA;IACE,GAAA;IACA,IAAA,EAAM,yBAAA;IACN,YAAA,GAAe,MAAA;EAAA;EAcb,QAAA,CACJ,GAAA,sBACA,IAAA,EAAM,yBAAA,EACN,iBAAA,EAAmB,MAAA,mBAAsB,OAAA;;;;;;;;;;;cAoFhC,gBAAA,SAAyB,2BAAA;EACpC,MAAA;EAEA,WAAA,CAAY,MAAA;EAAA,IAKR,UAAA,CAAA;EAIJ,YAAA,CAAA,GAAgB,OAAA;EAMhB,OAAA,CAAQ,IAAA,EAAM,yBAAA;AAAA;AAAA,iBAQA,eAAA,CAAgB,QAAA,EAAU,kBAAA;AAAA,iBAS1B,sBAAA,aAAA,CACd,UAAA,EAAY,WAAA,cACZ,aAAA,UACA,gBAAA,aAA6B,kBAAA,eAC5B,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","names":["GooglePlatformType","GoogleAbstractedClientOpsMethod","GoogleAbstractedClientOpsResponseType","GoogleAbstractedClientOps","Record","AbortSignal","GoogleAbstractedClient","Promise","GoogleAbstractedFetchClient","fetch","Response","Headers","ApiKeyGoogleAuth","aiPlatformScope","ensureAuthOptionScopes","AuthOptions"],"sources":["../src/auth.d.ts"],"sourcesContent":["import { GooglePlatformType } from \"./types.js\";\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\nexport declare abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n abstract getProjectId(): Promise<string>;\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n _fetch: typeof fetch;\n _buildData(res: Response, opts: GoogleAbstractedClientOps): Promise<any>;\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(status: number, body: string | undefined, response: unknown, context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }): never;\n _request(url: string | undefined, opts: GoogleAbstractedClientOps, additionalHeaders: Record<string, string>): Promise<{\n data: any;\n config: {};\n status: number;\n statusText: string;\n headers: Headers;\n request: {\n responseURL: string;\n };\n }>;\n}\nexport declare class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n constructor(apiKey: string);\n get clientType(): string;\n getProjectId(): Promise<string>;\n request(opts: GoogleAbstractedClientOps): unknown;\n}\nexport declare function aiPlatformScope(platform: GooglePlatformType): string[];\nexport declare function ensureAuthOptionScopes<AuthOptions>(authOption: AuthOptions | undefined, scopeProperty: string, scopesOrPlatform: string[] | GooglePlatformType | undefined): AuthOptions;\n//# sourceMappingURL=auth.d.ts.map"],"mappings":";;;KACYC,+BAAAA;KACAC,qCAAAA;AADAD,KAEAE,yBAAAA,GAF+B;EAC/BD,GAAAA,CAAAA,EAAAA,MAAAA;EACAC,MAAAA,CAAAA,EAECF,+BAFwB;EAExBA,OAAAA,CAAAA,EACCG,MADDH,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EACCG,IAAAA,CAAAA,EAAAA,OAAAA;EAEKF,YAAAA,CAAAA,EAAAA,qCAAAA;EACNG,MAAAA,CAAAA,EAAAA,WAAAA;AAAW,CAAA;AAEPC,UAAAA,sBAAAA,CAAsB;EAKTE,OAAAA,EAAAA,CAAAA,IAAAA,EAJVL,yBAIqC,EAAA,GAAA,OAAA;EAE5BI,YAAAA,EAAAA,GAAAA,GALLA,OAKKA,CAAAA,MAAAA,CAAAA;EACFJ,IAAAA,UAAAA,EAAAA,EAAAA,MAAAA;;AAEPO,uBALUF,2BAAAA,YAAuCF,sBAKjDI,CAAAA;EAAgBP,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA4BI,SAAAA,YAAAA,CAAAA,CAAAA,EAHnCA,OAGmCA,CAAAA,MAAAA,CAAAA;EAQlDJ,SAAAA,OAAAA,CAAAA,IAAAA,EAVaA,yBAUbA,CAAAA,EAAAA,OAAAA;EACSC,MAAAA,EAAAA,OAVJK,KAUIL;EAEqBD,UAAAA,CAAAA,GAAAA,EAXxBO,QAWwBP,EAAAA,IAAAA,EAXRA,yBAWQA,CAAAA,EAXoBI,OAWpBJ,CAAAA,GAAAA,CAAAA;EAA8CC;;;;AAhBC;EA2BtEQ,UAAAA,kBAAgB,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,GAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA;IAIjBL,GAAAA,EAAAA,MAAAA;IACFJ,IAAAA,EAnBJA,yBAmBIA;IAL4BK,YAAAA,CAAAA,EAbvBJ,MAauBI,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA;EAA2B,CAAA,CAAA,EAAA,KAAA;EAOjDK,QAAAA,CAAAA,GAAAA,EAAAA,MAAe,GAAA,SAAWb,EAAAA,IAAAA,EAlBNG,yBAkBwB,EAAA,iBAAA,EAlBsBC,MAkBtB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAlB+CG,OAkB/C,CAAA;IAC5CO,IAAAA,EAAAA,GAAAA;IAAgDC,MAAAA,EAAAA,CAAAA,CAAAA;IAA6Ef,MAAAA,EAAAA,MAAAA;IAAiCe,UAAAA,EAAAA,MAAAA;IAAW,OAAA,EAdhLJ,OAcgL;;;;;;cAR5KC,gBAAAA,SAAyBJ,2BAAAA;;;;kBAI1BD;gBACFJ;;iBAEMU,eAAAA,WAA0Bb;iBAC1Bc,gDAAgDC,6EAA6Ef,iCAAiCe"}
1
+ {"version":3,"file":"auth.d.ts","names":[],"sources":["../src/auth.ts"],"mappings":";;;KAGY,+BAAA;AAAA,KAEA,qCAAA;AAAA,KAEA,yBAAA;EACV,GAAA;EACA,MAAA,GAAS,+BAAA;EACT,OAAA,GAAU,MAAA;EACV,IAAA;EACA,YAAA,GAAe,qCAAA;EACf,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,sBAAA;EACf,OAAA,GAAU,IAAA,EAAM,yBAAA;EAChB,YAAA,QAAoB,OAAA;EAAA,IAChB,UAAA;AAAA;AAAA,uBAGgB,2BAAA,YAAuC,sBAAA;EAAA,aAC9C,UAAA,CAAA;EAAA,SAEJ,YAAA,CAAA,GAAgB,OAAA;EAAA,SAEhB,OAAA,CAAQ,IAAA,EAAM,yBAAA;EAEvB,MAAA,SAAe,KAAA;EAET,UAAA,CAAW,GAAA,EAAK,QAAA,EAAU,IAAA,EAAM,yBAAA,GAAyB,OAAA;EAvB/D;;;;;EAAA,UAuCU,kBAAA,CACR,MAAA,UACA,IAAA,sBACA,QAAA,WACA,OAAA;IACE,GAAA;IACA,IAAA,EAAM,yBAAA;IACN,YAAA,GAAe,MAAA;EAAA;EAcb,QAAA,CACJ,GAAA,sBACA,IAAA,EAAM,yBAAA,EACN,iBAAA,EAAmB,MAAA,mBAAsB,OAAA;;;;;;;;;;;cAoFhC,gBAAA,SAAyB,2BAAA;EACpC,MAAA;EAEA,WAAA,CAAY,MAAA;EAAA,IAKR,UAAA,CAAA;EAIJ,YAAA,CAAA,GAAgB,OAAA;EAMhB,OAAA,CAAQ,IAAA,EAAM,yBAAA;AAAA;AAAA,iBAQA,eAAA,CAAgB,QAAA,EAAU,kBAAA;AAAA,iBAS1B,sBAAA,aAAA,CACd,UAAA,EAAY,WAAA,cACZ,aAAA,UACA,gBAAA,aAA6B,kBAAA,eAC5B,WAAA"}
package/dist/auth.js CHANGED
@@ -62,9 +62,8 @@ var GoogleAbstractedFetchClient = class {
62
62
  const body = await res.text();
63
63
  this._throwRequestError(res.status, body, res, context);
64
64
  }
65
- const data = await this._buildData(res, opts);
66
65
  return {
67
- data,
66
+ data: await this._buildData(res, opts),
68
67
  config: {},
69
68
  status: res.status,
70
69
  statusText: res.statusText,
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","names":["res: Response","opts: GoogleAbstractedClientOps","status: number","body: string | undefined","response: unknown","context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }","url: string | undefined","additionalHeaders: Record<string, string>","fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n }","apiKey: string","platform: GooglePlatformType","authOption: AuthOptions | undefined","scopeProperty: string","scopesOrPlatform: string[] | GooglePlatformType | undefined","scopes: string[]"],"sources":["../src/auth.ts"],"sourcesContent":["import { ReadableJsonStream } from \"./utils/stream.js\";\nimport { GooglePlatformType } from \"./types.js\";\n\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\n\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\n\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n\n abstract getProjectId(): Promise<string>;\n\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n\n _fetch: typeof fetch = fetch;\n\n async _buildData(res: Response, opts: GoogleAbstractedClientOps) {\n switch (opts.responseType) {\n case \"json\":\n return res.json();\n case \"stream\":\n return new ReadableJsonStream(res.body);\n default:\n return res.blob();\n }\n }\n\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(\n status: number,\n body: string | undefined,\n response: unknown,\n context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }\n ): never {\n const message = body\n ? `Google request failed with status code ${status}: ${body}`\n : `Google request failed with status code ${status}`;\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).response = response;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).details = context;\n throw error;\n }\n\n async _request(\n url: string | undefined,\n opts: GoogleAbstractedClientOps,\n additionalHeaders: Record<string, string>\n ) {\n if (url == null) throw new Error(\"Missing URL\");\n const fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\n signal: opts.signal,\n };\n if (opts.data !== undefined) {\n if (typeof opts.data === \"string\") {\n fetchOptions.body = opts.data;\n } else {\n fetchOptions.body = JSON.stringify(opts.data);\n }\n }\n\n const context = { url, opts, fetchOptions };\n\n let res: Response;\n try {\n res = await this._fetch(url, fetchOptions);\n } catch (fetchError) {\n // The _fetch implementation (e.g. GAuthClient using google-auth-library)\n // may throw its own error (e.g. GaxiosError) for non-2xx responses\n // before we can handle them here. Extract what we can from the error\n // and re-throw with a useful, formatted message.\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const err = fetchError as any;\n const status = err?.response?.status ?? err?.status;\n\n if (status != null) {\n let body: string | undefined;\n\n if (err?.response?.data != null) {\n if (typeof err.response.data === \"string\") {\n body = err.response.data;\n } else if (typeof err.response.data === \"object\") {\n try {\n body = JSON.stringify(err.response.data);\n } catch {\n // best effort\n }\n }\n }\n\n this._throwRequestError(\n status,\n body,\n err?.response ?? { status },\n context\n );\n }\n\n // No status info available — re-throw the original error as-is\n throw fetchError;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n\n if (!res.ok) {\n const body = await res.text();\n this._throwRequestError(res.status, body, res, context);\n }\n\n const data = await this._buildData(res, opts);\n return {\n data,\n config: {},\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n request: { responseURL: res.url },\n };\n }\n}\n\nexport class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n\n constructor(apiKey: string) {\n super();\n this.apiKey = apiKey;\n }\n\n get clientType(): string {\n return \"apiKey\";\n }\n\n getProjectId(): Promise<string> {\n throw new Error(\"APIs that require a project ID cannot use an API key\");\n // Perhaps we could implement this if needed:\n // https://cloud.google.com/docs/authentication/api-keys#get-info\n }\n\n request(opts: GoogleAbstractedClientOps): unknown {\n const authHeader = {\n \"X-Goog-Api-Key\": this.apiKey,\n };\n return this._request(opts.url, opts, authHeader);\n }\n}\n\nexport function aiPlatformScope(platform: GooglePlatformType): string[] {\n switch (platform) {\n case \"gai\":\n return [\"https://www.googleapis.com/auth/generative-language\"];\n default:\n return [\"https://www.googleapis.com/auth/cloud-platform\"];\n }\n}\n\nexport function ensureAuthOptionScopes<AuthOptions>(\n authOption: AuthOptions | undefined,\n scopeProperty: string,\n scopesOrPlatform: string[] | GooglePlatformType | undefined\n): AuthOptions {\n // If the property is already set, return it\n if (authOption && Object.hasOwn(authOption, scopeProperty)) {\n return authOption;\n }\n\n // Otherwise add it\n const scopes: string[] = Array.isArray(scopesOrPlatform)\n ? (scopesOrPlatform as string[])\n : aiPlatformScope(scopesOrPlatform ?? \"gcp\");\n return {\n [scopeProperty]: scopes,\n ...(authOption ?? {}),\n } as AuthOptions;\n}\n"],"mappings":";;;AAsBA,IAAsB,8BAAtB,MAAoF;CAOlF,SAAuB;CAEvB,MAAM,WAAWA,KAAeC,MAAiC;AAC/D,UAAQ,KAAK,cAAb;GACE,KAAK,OACH,QAAO,IAAI,MAAM;GACnB,KAAK,SACH,QAAO,IAAI,mBAAmB,IAAI;GACpC,QACE,QAAO,IAAI,MAAM;EACpB;CACF;;;;;;CAOD,AAAU,mBACRC,QACAC,MACAC,UACAC,SAKO;EACP,MAAM,UAAU,OACZ,CAAC,uCAAuC,EAAE,OAAO,EAAE,EAAE,MAAM,GAC3D,CAAC,uCAAuC,EAAE,QAAQ;EACtD,MAAM,QAAQ,IAAI,MAAM;EAEvB,MAAc,WAAW;EAEzB,MAAc,UAAU;AACzB,QAAM;CACP;CAED,MAAM,SACJC,KACAL,MACAM,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM;EACjC,MAAMC,eAKF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,CAAE;IACtB,GAAI,qBAAqB,CAAE;GAC5B;GACD,QAAQ,KAAK;EACd;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,UACvB,aAAa,OAAO,KAAK;OAEzB,aAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,UAAU;GAAE;GAAK;GAAM;EAAc;EAE3C,IAAIR;AACJ,MAAI;GACF,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;EAC3C,SAAQ,YAAY;GAMnB,MAAM,MAAM;GACZ,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK;AAE7C,OAAI,UAAU,MAAM;IAClB,IAAIG;AAEJ,QAAI,KAAK,UAAU,QAAQ,MACzB;SAAI,OAAO,IAAI,SAAS,SAAS,UAC/B,OAAO,IAAI,SAAS;cACX,OAAO,IAAI,SAAS,SAAS,SACtC,KAAI;MACF,OAAO,KAAK,UAAU,IAAI,SAAS,KAAK;KACzC,QAAO,CAEP;IACF;IAGH,KAAK,mBACH,QACA,MACA,KAAK,YAAY,EAAE,OAAQ,GAC3B,QACD;GACF;AAGD,SAAM;EAEP;AAED,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM;GAC7B,KAAK,mBAAmB,IAAI,QAAQ,MAAM,KAAK,QAAQ;EACxD;EAED,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,KAAK;AAC7C,SAAO;GACL;GACA,QAAQ,CAAE;GACV,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB,SAAS,IAAI;GACb,SAAS,EAAE,aAAa,IAAI,IAAK;EAClC;CACF;AACF;AAED,IAAa,mBAAb,cAAsC,4BAA4B;CAChE;CAEA,YAAYM,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQR,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBS,UAAwC;AACtE,SAAQ,UAAR;EACE,KAAK,MACH,QAAO,CAAC,qDAAsD;EAChE,QACE,QAAO,CAAC,gDAAiD;CAC5D;AACF;AAED,SAAgB,uBACdC,YACAC,eACAC,kBACa;AAEb,KAAI,cAAc,OAAO,OAAO,YAAY,cAAc,CACxD,QAAO;CAIT,MAAMC,SAAmB,MAAM,QAAQ,iBAAiB,GACnD,mBACD,gBAAgB,oBAAoB,MAAM;AAC9C,QAAO;GACJ,gBAAgB;EACjB,GAAI,cAAc,CAAE;CACrB;AACF"}
1
+ {"version":3,"file":"auth.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["import { ReadableJsonStream } from \"./utils/stream.js\";\nimport { GooglePlatformType } from \"./types.js\";\n\nexport type GoogleAbstractedClientOpsMethod = \"GET\" | \"POST\" | \"DELETE\";\n\nexport type GoogleAbstractedClientOpsResponseType = \"json\" | \"stream\" | \"blob\";\n\nexport type GoogleAbstractedClientOps = {\n url?: string;\n method?: GoogleAbstractedClientOpsMethod;\n headers?: Record<string, string>;\n data?: unknown;\n responseType?: GoogleAbstractedClientOpsResponseType;\n signal?: AbortSignal;\n};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient implements GoogleAbstractedClient {\n abstract get clientType(): string;\n\n abstract getProjectId(): Promise<string>;\n\n abstract request(opts: GoogleAbstractedClientOps): unknown;\n\n _fetch: typeof fetch = fetch;\n\n async _buildData(res: Response, opts: GoogleAbstractedClientOps) {\n switch (opts.responseType) {\n case \"json\":\n return res.json();\n case \"stream\":\n return new ReadableJsonStream(res.body);\n default:\n return res.blob();\n }\n }\n\n /**\n * Build and throw a standardised Google request error.\n * Both the `!res.ok` path (native fetch) and the catch path (gaxios)\n * funnel through here so the caller always sees the same shape.\n */\n protected _throwRequestError(\n status: number,\n body: string | undefined,\n response: unknown,\n context: {\n url: string;\n opts: GoogleAbstractedClientOps;\n fetchOptions?: Record<string, unknown>;\n }\n ): never {\n const message = body\n ? `Google request failed with status code ${status}: ${body}`\n : `Google request failed with status code ${status}`;\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).response = response;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).details = context;\n throw error;\n }\n\n async _request(\n url: string | undefined,\n opts: GoogleAbstractedClientOps,\n additionalHeaders: Record<string, string>\n ) {\n if (url == null) throw new Error(\"Missing URL\");\n const fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\n signal: opts.signal,\n };\n if (opts.data !== undefined) {\n if (typeof opts.data === \"string\") {\n fetchOptions.body = opts.data;\n } else {\n fetchOptions.body = JSON.stringify(opts.data);\n }\n }\n\n const context = { url, opts, fetchOptions };\n\n let res: Response;\n try {\n res = await this._fetch(url, fetchOptions);\n } catch (fetchError) {\n // The _fetch implementation (e.g. GAuthClient using google-auth-library)\n // may throw its own error (e.g. GaxiosError) for non-2xx responses\n // before we can handle them here. Extract what we can from the error\n // and re-throw with a useful, formatted message.\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const err = fetchError as any;\n const status = err?.response?.status ?? err?.status;\n\n if (status != null) {\n let body: string | undefined;\n\n if (err?.response?.data != null) {\n if (typeof err.response.data === \"string\") {\n body = err.response.data;\n } else if (typeof err.response.data === \"object\") {\n try {\n body = JSON.stringify(err.response.data);\n } catch {\n // best effort\n }\n }\n }\n\n this._throwRequestError(\n status,\n body,\n err?.response ?? { status },\n context\n );\n }\n\n // No status info available — re-throw the original error as-is\n throw fetchError;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n\n if (!res.ok) {\n const body = await res.text();\n this._throwRequestError(res.status, body, res, context);\n }\n\n const data = await this._buildData(res, opts);\n return {\n data,\n config: {},\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n request: { responseURL: res.url },\n };\n }\n}\n\nexport class ApiKeyGoogleAuth extends GoogleAbstractedFetchClient {\n apiKey: string;\n\n constructor(apiKey: string) {\n super();\n this.apiKey = apiKey;\n }\n\n get clientType(): string {\n return \"apiKey\";\n }\n\n getProjectId(): Promise<string> {\n throw new Error(\"APIs that require a project ID cannot use an API key\");\n // Perhaps we could implement this if needed:\n // https://cloud.google.com/docs/authentication/api-keys#get-info\n }\n\n request(opts: GoogleAbstractedClientOps): unknown {\n const authHeader = {\n \"X-Goog-Api-Key\": this.apiKey,\n };\n return this._request(opts.url, opts, authHeader);\n }\n}\n\nexport function aiPlatformScope(platform: GooglePlatformType): string[] {\n switch (platform) {\n case \"gai\":\n return [\"https://www.googleapis.com/auth/generative-language\"];\n default:\n return [\"https://www.googleapis.com/auth/cloud-platform\"];\n }\n}\n\nexport function ensureAuthOptionScopes<AuthOptions>(\n authOption: AuthOptions | undefined,\n scopeProperty: string,\n scopesOrPlatform: string[] | GooglePlatformType | undefined\n): AuthOptions {\n // If the property is already set, return it\n if (authOption && Object.hasOwn(authOption, scopeProperty)) {\n return authOption;\n }\n\n // Otherwise add it\n const scopes: string[] = Array.isArray(scopesOrPlatform)\n ? (scopesOrPlatform as string[])\n : aiPlatformScope(scopesOrPlatform ?? \"gcp\");\n return {\n [scopeProperty]: scopes,\n ...(authOption ?? {}),\n } as AuthOptions;\n}\n"],"mappings":";;;AAsBA,IAAsB,8BAAtB,MAAoF;CAOlF,SAAuB;CAEvB,MAAM,WAAW,KAAe,MAAiC;AAC/D,UAAQ,KAAK,cAAb;GACE,KAAK,OACH,QAAO,IAAI,MAAM;GACnB,KAAK,SACH,QAAO,IAAI,mBAAmB,IAAI,KAAK;GACzC,QACE,QAAO,IAAI,MAAM;;;;;;;;CASvB,AAAU,mBACR,QACA,MACA,UACA,SAKO;EACP,MAAM,UAAU,OACZ,0CAA0C,OAAO,IAAI,SACrD,0CAA0C;EAC9C,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAEhC,EAAC,MAAc,WAAW;AAE1B,EAAC,MAAc,UAAU;AACzB,QAAM;;CAGR,MAAM,SACJ,KACA,MACA,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM,cAAc;EAC/C,MAAM,eAKF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,EAAE;IACtB,GAAI,qBAAqB,EAAE;IAC5B;GACD,QAAQ,KAAK;GACd;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,SACvB,cAAa,OAAO,KAAK;MAEzB,cAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,UAAU;GAAE;GAAK;GAAM;GAAc;EAE3C,IAAI;AACJ,MAAI;AACF,SAAM,MAAM,KAAK,OAAO,KAAK,aAAa;WACnC,YAAY;GAMnB,MAAM,MAAM;GACZ,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK;AAE7C,OAAI,UAAU,MAAM;IAClB,IAAI;AAEJ,QAAI,KAAK,UAAU,QAAQ,MACzB;SAAI,OAAO,IAAI,SAAS,SAAS,SAC/B,QAAO,IAAI,SAAS;cACX,OAAO,IAAI,SAAS,SAAS,SACtC,KAAI;AACF,aAAO,KAAK,UAAU,IAAI,SAAS,KAAK;aAClC;;AAMZ,SAAK,mBACH,QACA,MACA,KAAK,YAAY,EAAE,QAAQ,EAC3B,QACD;;AAIH,SAAM;;AAIR,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM;AAC7B,QAAK,mBAAmB,IAAI,QAAQ,MAAM,KAAK,QAAQ;;AAIzD,SAAO;GACL,MAFW,MAAM,KAAK,WAAW,KAAK,KAAK;GAG3C,QAAQ,EAAE;GACV,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB,SAAS,IAAI;GACb,SAAS,EAAE,aAAa,IAAI,KAAK;GAClC;;;AAIL,IAAa,mBAAb,cAAsC,4BAA4B;CAChE;CAEA,YAAY,QAAgB;AAC1B,SAAO;AACP,OAAK,SAAS;;CAGhB,IAAI,aAAqB;AACvB,SAAO;;CAGT,eAAgC;AAC9B,QAAM,IAAI,MAAM,uDAAuD;;CAKzE,QAAQ,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,QACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;;;AAIpD,SAAgB,gBAAgB,UAAwC;AACtE,SAAQ,UAAR;EACE,KAAK,MACH,QAAO,CAAC,sDAAsD;EAChE,QACE,QAAO,CAAC,iDAAiD;;;AAI/D,SAAgB,uBACd,YACA,eACA,kBACa;AAEb,KAAI,cAAc,OAAO,OAAO,YAAY,cAAc,CACxD,QAAO;CAIT,MAAM,SAAmB,MAAM,QAAQ,iBAAiB,GACnD,mBACD,gBAAgB,oBAAoB,MAAM;AAC9C,QAAO;GACJ,gBAAgB;EACjB,GAAI,cAAc,EAAE;EACrB"}
@@ -1,4 +1,3 @@
1
- const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
1
  const require_zod_to_gemini_parameters = require('./utils/zod_to_gemini_parameters.cjs');
3
2
  const require_gemini = require('./utils/gemini.cjs');
4
3
  const require_common = require('./utils/common.cjs');
@@ -6,15 +5,15 @@ const require_failed_handler = require('./utils/failed_handler.cjs');
6
5
  const require_connection = require('./connection.cjs');
7
6
  const require_auth = require('./auth.cjs');
8
7
  const require_profiles = require('./profiles.cjs');
9
- const __langchain_core_utils_env = require_rolldown_runtime.__toESM(require("@langchain/core/utils/env"));
10
- const __langchain_core_language_models_chat_models = require_rolldown_runtime.__toESM(require("@langchain/core/language_models/chat_models"));
11
- const __langchain_core_outputs = require_rolldown_runtime.__toESM(require("@langchain/core/outputs"));
12
- const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
13
- const __langchain_core_runnables = require_rolldown_runtime.__toESM(require("@langchain/core/runnables"));
14
- const __langchain_core_output_parsers_openai_tools = require_rolldown_runtime.__toESM(require("@langchain/core/output_parsers/openai_tools"));
15
- const __langchain_core_output_parsers = require_rolldown_runtime.__toESM(require("@langchain/core/output_parsers"));
16
- const __langchain_core_utils_stream = require_rolldown_runtime.__toESM(require("@langchain/core/utils/stream"));
17
- const __langchain_core_utils_types = require_rolldown_runtime.__toESM(require("@langchain/core/utils/types"));
8
+ let _langchain_core_utils_env = require("@langchain/core/utils/env");
9
+ let _langchain_core_language_models_chat_models = require("@langchain/core/language_models/chat_models");
10
+ let _langchain_core_outputs = require("@langchain/core/outputs");
11
+ let _langchain_core_messages = require("@langchain/core/messages");
12
+ let _langchain_core_runnables = require("@langchain/core/runnables");
13
+ let _langchain_core_output_parsers_openai_tools = require("@langchain/core/output_parsers/openai_tools");
14
+ let _langchain_core_output_parsers = require("@langchain/core/output_parsers");
15
+ let _langchain_core_utils_stream = require("@langchain/core/utils/stream");
16
+ let _langchain_core_utils_types = require("@langchain/core/utils/types");
18
17
 
19
18
  //#region src/chat_models.ts
20
19
  var ChatConnection = class extends require_connection.AbstractGoogleLLMConnection {
@@ -48,12 +47,11 @@ var ChatConnection = class extends require_connection.AbstractGoogleLLMConnectio
48
47
  buildGeminiAPI() {
49
48
  const apiConfig = this.apiConfig ?? {};
50
49
  const googleSearchToolAdjustment = this.computeGoogleSearchToolAdjustment(apiConfig);
51
- const geminiConfig = {
50
+ return require_gemini.getGeminiAPI({
52
51
  useSystemInstruction: this.useSystemInstruction,
53
52
  googleSearchToolAdjustment,
54
53
  ...apiConfig
55
- };
56
- return require_gemini.getGeminiAPI(geminiConfig);
54
+ });
57
55
  }
58
56
  get api() {
59
57
  switch (this.apiName) {
@@ -65,7 +63,7 @@ var ChatConnection = class extends require_connection.AbstractGoogleLLMConnectio
65
63
  /**
66
64
  * Integration with a Google chat model.
67
65
  */
68
- var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.BaseChatModel {
66
+ var ChatGoogleBase = class extends _langchain_core_language_models_chat_models.BaseChatModel {
69
67
  static lc_name() {
70
68
  return "ChatGoogle";
71
69
  }
@@ -119,7 +117,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
119
117
  return new require_auth.ApiKeyGoogleAuth(apiKey);
120
118
  }
121
119
  buildApiKey(fields) {
122
- return fields?.apiKey ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_API_KEY");
120
+ return fields?.apiKey ?? (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_API_KEY");
123
121
  }
124
122
  buildClient(fields) {
125
123
  const apiKey = this.buildApiKey(fields);
@@ -160,7 +158,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
160
158
  if (this.streaming) {
161
159
  const stream = this._streamResponseChunks(messages, options, runManager);
162
160
  let finalChunk = null;
163
- for await (const chunk$1 of stream) finalChunk = !finalChunk ? chunk$1 : (0, __langchain_core_utils_stream.concat)(finalChunk, chunk$1);
161
+ for await (const chunk of stream) finalChunk = !finalChunk ? chunk : (0, _langchain_core_utils_stream.concat)(finalChunk, chunk);
164
162
  if (!finalChunk) throw new Error("No chunks were returned from the stream.");
165
163
  return { generations: [finalChunk] };
166
164
  }
@@ -172,8 +170,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
172
170
  }
173
171
  async *_streamResponseChunks(_messages, options, runManager) {
174
172
  const parameters = this.invocationParams(options);
175
- const response = await this.streamedConnection.request(_messages, parameters, options, runManager);
176
- const stream = response.data;
173
+ const stream = (await this.streamedConnection.request(_messages, parameters, options, runManager)).data;
177
174
  let usageMetadata;
178
175
  while (!stream.streamDone) {
179
176
  if (options.signal?.aborted) return;
@@ -184,10 +181,10 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
184
181
  output_tokens: output.usageMetadata.candidatesTokenCount,
185
182
  total_tokens: output.usageMetadata.totalTokenCount
186
183
  };
187
- const chunk = output !== null ? this.connection.api.responseToChatGeneration({ data: output }) : new __langchain_core_outputs.ChatGenerationChunk({
184
+ const chunk = output !== null ? this.connection.api.responseToChatGeneration({ data: output }) : new _langchain_core_outputs.ChatGenerationChunk({
188
185
  text: "",
189
186
  generationInfo: { finishReason: "stop" },
190
- message: new __langchain_core_messages.AIMessageChunk({
187
+ message: new _langchain_core_messages.AIMessageChunk({
191
188
  content: "",
192
189
  usage_metadata: usageMetadata
193
190
  })
@@ -225,14 +222,14 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
225
222
  if (method === "functionCalling") {
226
223
  let functionName = name ?? "extract";
227
224
  let tools;
228
- if ((0, __langchain_core_utils_types.isInteropZodSchema)(schema)) {
225
+ if ((0, _langchain_core_utils_types.isInteropZodSchema)(schema)) {
229
226
  const jsonSchema = require_zod_to_gemini_parameters.schemaToGeminiParameters(schema);
230
227
  tools = [{ functionDeclarations: [{
231
228
  name: functionName,
232
229
  description: jsonSchema.description ?? "A function available to call.",
233
230
  parameters: jsonSchema
234
231
  }] }];
235
- outputParser = new __langchain_core_output_parsers_openai_tools.JsonOutputKeyToolsParser({
232
+ outputParser = new _langchain_core_output_parsers_openai_tools.JsonOutputKeyToolsParser({
236
233
  returnSingle: true,
237
234
  keyName: functionName,
238
235
  zodSchema: schema
@@ -251,7 +248,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
251
248
  };
252
249
  }
253
250
  tools = [{ functionDeclarations: [geminiFunctionDefinition] }];
254
- outputParser = new __langchain_core_output_parsers_openai_tools.JsonOutputKeyToolsParser({
251
+ outputParser = new _langchain_core_output_parsers_openai_tools.JsonOutputKeyToolsParser({
255
252
  returnSingle: true,
256
253
  keyName: functionName
257
254
  });
@@ -260,13 +257,13 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
260
257
  } else {
261
258
  const jsonSchema = require_zod_to_gemini_parameters.schemaToGeminiParameters(schema);
262
259
  llm = this.withConfig({ responseSchema: jsonSchema });
263
- outputParser = new __langchain_core_output_parsers.JsonOutputParser();
260
+ outputParser = new _langchain_core_output_parsers.JsonOutputParser();
264
261
  }
265
262
  if (!includeRaw) return llm.pipe(outputParser).withConfig({ runName: "ChatGoogleStructuredOutput" });
266
- const parserAssign = __langchain_core_runnables.RunnablePassthrough.assign({ parsed: (input, config$1) => outputParser.invoke(input.raw, config$1) });
267
- const parserNone = __langchain_core_runnables.RunnablePassthrough.assign({ parsed: () => null });
263
+ const parserAssign = _langchain_core_runnables.RunnablePassthrough.assign({ parsed: (input, config) => outputParser.invoke(input.raw, config) });
264
+ const parserNone = _langchain_core_runnables.RunnablePassthrough.assign({ parsed: () => null });
268
265
  const parsedWithFallback = parserAssign.withFallbacks({ fallbacks: [parserNone] });
269
- return __langchain_core_runnables.RunnableSequence.from([{ raw: llm }, parsedWithFallback]).withConfig({ runName: "StructuredOutputRunnable" });
266
+ return _langchain_core_runnables.RunnableSequence.from([{ raw: llm }, parsedWithFallback]).withConfig({ runName: "StructuredOutputRunnable" });
270
267
  }
271
268
  };
272
269
 
@@ -1 +1 @@
1
- {"version":3,"file":"chat_models.cjs","names":["AbstractGoogleLLMConnection","fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","caller: AsyncCaller","client: GoogleAbstractedClient","streaming: boolean","apiConfig: GeminiAPIConfig","geminiConfig: GeminiAPIConfig","getGeminiAPI","BaseChatModel","fields?: ChatGoogleBaseInput<AuthOptions>","ensureParams","copyAndValidateModelParamsInto","DefaultGeminiSafetyHandler","options: this[\"ParsedCallOptions\"]","apiKey: string","ApiKeyGoogleAuth","fields?: GoogleAIBaseLLMInput<AuthOptions>","fields: GoogleBaseLLMInput<AuthOptions>","tools: GoogleAIToolType[]","kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>","convertToGeminiTools","options?: this[\"ParsedCallOptions\"]","copyAIModelParams","messages: BaseMessage[]","runManager: CallbackManagerForLLMRun | undefined","finalChunk: ChatGenerationChunk | null","chunk","_messages: BaseMessage[]","runManager?: CallbackManagerForLLMRun","usageMetadata: UsageMetadata | undefined","ChatGenerationChunk","AIMessageChunk","PROFILES","outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>","config?: StructuredOutputMethodOptions<boolean>","schema: InteropZodType<RunOutput> | Record<string, any>","outputParser: BaseLLMOutputParser<RunOutput>","tools: GeminiTool[]","schemaToGeminiParameters","JsonOutputKeyToolsParser","geminiFunctionDefinition: GeminiFunctionDeclaration","parameters: GeminiJsonSchema","removeAdditionalProperties","JsonOutputParser","RunnablePassthrough","input: any","config","RunnableSequence"],"sources":["../src/chat_models.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { UsageMetadata, type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\n\nimport {\n BaseChatModel,\n LangSmithParams,\n type BaseChatModelParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n} from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport {\n Runnable,\n RunnablePassthrough,\n RunnableSequence,\n} from \"@langchain/core/runnables\";\nimport { JsonOutputKeyToolsParser } from \"@langchain/core/output_parsers/openai_tools\";\nimport {\n BaseLLMOutputParser,\n JsonOutputParser,\n} from \"@langchain/core/output_parsers\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { concat } from \"@langchain/core/utils/stream\";\nimport {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n GoogleAIBaseLLMInput,\n GoogleAIModelParams,\n GoogleAISafetySetting,\n GoogleConnectionParams,\n GooglePlatformType,\n GeminiTool,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIAPI,\n GoogleAIAPIParams,\n GoogleSearchToolSetting,\n GoogleSpeechConfig,\n GeminiJsonSchema,\n} from \"./types.js\";\nimport {\n convertToGeminiTools,\n copyAIModelParams,\n copyAndValidateModelParamsInto,\n} from \"./utils/common.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { DefaultGeminiSafetyHandler, getGeminiAPI } from \"./utils/gemini.js\";\nimport { ApiKeyGoogleAuth, GoogleAbstractedClient } from \"./auth.js\";\nimport { JsonStream } from \"./utils/stream.js\";\nimport { ensureParams } from \"./utils/failed_handler.js\";\nimport type {\n GoogleBaseLLMInput,\n GoogleAISafetyHandler,\n GoogleAISafetyParams,\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GoogleAIToolType,\n GeminiAPIConfig,\n GoogleAIModelModality,\n} from \"./types.js\";\nimport {\n removeAdditionalProperties,\n schemaToGeminiParameters,\n} from \"./utils/zod_to_gemini_parameters.js\";\nimport PROFILES from \"./profiles.js\";\n\nexport class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<\n BaseMessage[],\n AuthOptions\n> {\n convertSystemMessageToHumanContent: boolean | undefined;\n\n constructor(\n fields: GoogleAIBaseLLMInput<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming: boolean\n ) {\n super(fields, caller, client, streaming);\n this.convertSystemMessageToHumanContent =\n fields?.convertSystemMessageToHumanContent;\n }\n\n get useSystemInstruction(): boolean {\n return typeof this.convertSystemMessageToHumanContent === \"boolean\"\n ? !this.convertSystemMessageToHumanContent\n : this.computeUseSystemInstruction;\n }\n\n get computeUseSystemInstruction(): boolean {\n // This works on models from April 2024 and later\n // Vertex AI: gemini-1.5-pro and gemini-1.0-002 and later\n // AI Studio: gemini-1.5-pro-latest\n if (this.modelFamily === \"palm\") {\n return false;\n } else if (this.modelName === \"gemini-1.0-pro-001\") {\n return false;\n } else if (this.modelName.startsWith(\"gemini-pro-vision\")) {\n return false;\n } else if (this.modelName.startsWith(\"gemini-1.0-pro-vision\")) {\n return false;\n } else if (this.modelName === \"gemini-pro\" && this.platform === \"gai\") {\n // on AI Studio gemini-pro is still pointing at gemini-1.0-pro-001\n return false;\n } else if (this.modelFamily === \"gemma\") {\n // At least as of 12 Mar 2025 gemma 3 on AIS, trying to use system instructions yields an error:\n // \"Developer instruction is not enabled for models/gemma-3-27b-it\"\n return false;\n }\n return true;\n }\n\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<\n GoogleSearchToolSetting,\n boolean\n > {\n if (this.modelName.startsWith(\"gemini-1.0\")) {\n return \"googleSearchRetrieval\";\n } else if (this.modelName.startsWith(\"gemini-1.5\")) {\n return \"googleSearchRetrieval\";\n } else {\n return \"googleSearch\";\n }\n }\n\n computeGoogleSearchToolAdjustment(\n apiConfig: GeminiAPIConfig\n ): Exclude<GoogleSearchToolSetting, true> {\n const adj = apiConfig.googleSearchToolAdjustment;\n if (adj === undefined || adj === true) {\n return this.computeGoogleSearchToolAdjustmentFromModel();\n } else {\n return adj;\n }\n }\n\n buildGeminiAPI(): GoogleAIAPI {\n const apiConfig: GeminiAPIConfig =\n (this.apiConfig as GeminiAPIConfig) ?? {};\n const googleSearchToolAdjustment =\n this.computeGoogleSearchToolAdjustment(apiConfig);\n const geminiConfig: GeminiAPIConfig = {\n useSystemInstruction: this.useSystemInstruction,\n googleSearchToolAdjustment,\n ...apiConfig,\n };\n return getGeminiAPI(geminiConfig);\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n return this.buildGeminiAPI();\n default:\n return super.api;\n }\n }\n}\n\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions>\n extends\n BaseChatModelParams,\n GoogleConnectionParams<AuthOptions>,\n GoogleAIModelParams,\n GoogleAISafetyParams,\n GoogleAIAPIParams,\n Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {}\n\n/**\n * Integration with a Google chat model.\n */\nexport abstract class ChatGoogleBase<AuthOptions>\n extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk>\n implements ChatGoogleBaseInput<AuthOptions>\n{\n // Used for tracing, replace with the same name as your class\n static lc_name() {\n return \"ChatGoogle\";\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n authOptions: \"GOOGLE_AUTH_OPTIONS\",\n };\n }\n\n lc_serializable = true;\n\n // Set based on modelName\n model: string;\n\n modelName = \"gemini-pro\";\n\n temperature: number;\n\n maxOutputTokens: number;\n\n maxReasoningTokens: number;\n\n topP: number;\n\n topK: number;\n\n seed: number;\n\n presencePenalty: number;\n\n frequencyPenalty: number;\n\n stopSequences: string[] = [];\n\n logprobs: boolean;\n\n topLogprobs: number = 0;\n\n safetySettings: GoogleAISafetySetting[] = [];\n\n responseModalities?: GoogleAIModelModality[];\n\n // May intentionally be undefined, meaning to compute this.\n convertSystemMessageToHumanContent: boolean | undefined;\n\n safetyHandler: GoogleAISafetyHandler;\n\n speechConfig: GoogleSpeechConfig;\n\n streamUsage = true;\n\n streaming = false;\n\n labels?: Record<string, string>;\n\n protected connection: ChatConnection<AuthOptions>;\n\n protected streamedConnection: ChatConnection<AuthOptions>;\n\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>) {\n super(ensureParams(fields));\n\n copyAndValidateModelParamsInto(fields, this);\n this.safetyHandler =\n fields?.safetyHandler ?? new DefaultGeminiSafetyHandler();\n this.streamUsage = fields?.streamUsage ?? this.streamUsage;\n const client = this.buildClient(fields);\n this.buildConnection(fields ?? {}, client);\n }\n\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = this.invocationParams(options);\n return {\n ls_provider: \"google_vertexai\",\n ls_model_name: this.model,\n ls_model_type: \"chat\",\n ls_temperature: params.temperature ?? undefined,\n ls_max_tokens: params.maxOutputTokens ?? undefined,\n ls_stop: options.stop,\n };\n }\n\n abstract buildAbstractedClient(\n fields?: GoogleAIBaseLLMInput<AuthOptions>\n ): GoogleAbstractedClient;\n\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient {\n return new ApiKeyGoogleAuth(apiKey);\n }\n\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined {\n return fields?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n }\n\n buildClient(\n fields?: GoogleAIBaseLLMInput<AuthOptions>\n ): GoogleAbstractedClient {\n const apiKey = this.buildApiKey(fields);\n if (apiKey) {\n return this.buildApiKeyClient(apiKey);\n } else {\n return this.buildAbstractedClient(fields);\n }\n }\n\n buildConnection(\n fields: GoogleBaseLLMInput<AuthOptions>,\n client: GoogleAbstractedClient\n ) {\n this.connection = new ChatConnection(\n { ...fields, ...this },\n this.caller,\n client,\n false\n );\n\n this.streamedConnection = new ChatConnection(\n { ...fields, ...this },\n this.caller,\n client,\n true\n );\n }\n\n get platform(): GooglePlatformType {\n return this.connection.platform;\n }\n\n override bindTools(\n tools: GoogleAIToolType[],\n kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>\n ): Runnable<\n BaseLanguageModelInput,\n AIMessageChunk,\n GoogleAIBaseLanguageModelCallOptions\n > {\n return this.withConfig({ tools: convertToGeminiTools(tools), ...kwargs });\n }\n\n _llmType() {\n return \"google\";\n }\n\n /**\n * Get the parameters used to invoke the model\n */\n override invocationParams(options?: this[\"ParsedCallOptions\"]) {\n return copyAIModelParams(this, options);\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager: CallbackManagerForLLMRun | undefined\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const parameters = this.invocationParams(options);\n if (this.streaming) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | null = null;\n for await (const chunk of stream) {\n finalChunk = !finalChunk ? chunk : concat(finalChunk, chunk);\n }\n if (!finalChunk) {\n throw new Error(\"No chunks were returned from the stream.\");\n }\n return {\n generations: [finalChunk],\n };\n }\n\n const response = await this.connection.request(\n messages,\n parameters,\n options,\n runManager\n );\n const ret = this.connection.api.responseToChatResult(response);\n const chunk = ret?.generations?.[0];\n if (chunk) {\n await runManager?.handleLLMNewToken(chunk.text || \"\");\n }\n return ret;\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n // Make the call as a streaming request\n const parameters = this.invocationParams(options);\n const response = await this.streamedConnection.request(\n _messages,\n parameters,\n options,\n runManager\n );\n\n // Get the streaming parser of the response\n const stream = response.data as JsonStream;\n let usageMetadata: UsageMetadata | undefined;\n // Loop until the end of the stream\n // During the loop, yield each time we get a chunk from the streaming parser\n // that is either available or added to the queue\n while (!stream.streamDone) {\n if (options.signal?.aborted) {\n return;\n }\n const output = await stream.nextChunk();\n await runManager?.handleCustomEvent(\n `google-chunk-${this.constructor.name}`,\n {\n output,\n }\n );\n if (\n output &&\n output.usageMetadata &&\n this.streamUsage !== false &&\n options.streamUsage !== false\n ) {\n usageMetadata = {\n input_tokens: output.usageMetadata.promptTokenCount,\n output_tokens: output.usageMetadata.candidatesTokenCount,\n total_tokens: output.usageMetadata.totalTokenCount,\n };\n }\n const chunk =\n output !== null\n ? this.connection.api.responseToChatGeneration({ data: output })\n : new ChatGenerationChunk({\n text: \"\",\n generationInfo: { finishReason: \"stop\" },\n message: new AIMessageChunk({\n content: \"\",\n usage_metadata: usageMetadata,\n }),\n });\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text ?? \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n }\n }\n\n /** @ignore */\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile {\n return PROFILES[this.model] ?? {};\n }\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<false>\n ): Runnable<BaseLanguageModelInput, RunOutput>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<true>\n ): Runnable<BaseLanguageModelInput, { raw: BaseMessage; parsed: RunOutput }>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const schema: InteropZodType<RunOutput> | Record<string, any> =\n outputSchema;\n const name = config?.name;\n const method = config?.method;\n const includeRaw = config?.includeRaw;\n if (method === \"jsonMode\") {\n throw new Error(\n `Google only supports \"jsonSchema\" or \"functionCalling\" as a method.`\n );\n }\n\n let llm;\n let outputParser: BaseLLMOutputParser<RunOutput>;\n if (method === \"functionCalling\") {\n let functionName = name ?? \"extract\";\n let tools: GeminiTool[];\n if (isInteropZodSchema(schema)) {\n const jsonSchema = schemaToGeminiParameters(schema);\n tools = [\n {\n functionDeclarations: [\n {\n name: functionName,\n description:\n jsonSchema.description ?? \"A function available to call.\",\n parameters: jsonSchema as GeminiFunctionSchema,\n },\n ],\n },\n ];\n outputParser = new JsonOutputKeyToolsParser({\n returnSingle: true,\n keyName: functionName,\n zodSchema: schema,\n });\n } else {\n let geminiFunctionDefinition: GeminiFunctionDeclaration;\n if (\n typeof schema.name === \"string\" &&\n typeof schema.parameters === \"object\" &&\n schema.parameters != null\n ) {\n geminiFunctionDefinition = schema as GeminiFunctionDeclaration;\n functionName = schema.name;\n } else {\n // We are providing the schema for *just* the parameters, probably\n const parameters: GeminiJsonSchema =\n removeAdditionalProperties(schema);\n geminiFunctionDefinition = {\n name: functionName,\n description: schema.description ?? \"\",\n parameters,\n };\n }\n tools = [\n {\n functionDeclarations: [geminiFunctionDefinition],\n },\n ];\n outputParser = new JsonOutputKeyToolsParser<RunOutput>({\n returnSingle: true,\n keyName: functionName,\n });\n }\n llm = this.bindTools(tools).withConfig({ tool_choice: functionName });\n } else {\n // Default to jsonSchema method\n const jsonSchema = schemaToGeminiParameters(schema);\n llm = this.withConfig({\n responseSchema: jsonSchema as GeminiJsonSchema,\n });\n outputParser = new JsonOutputParser();\n }\n\n if (!includeRaw) {\n return llm.pipe(outputParser).withConfig({\n runName: \"ChatGoogleStructuredOutput\",\n }) as Runnable<BaseLanguageModelInput, RunOutput>;\n }\n\n const parserAssign = RunnablePassthrough.assign({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parsed: (input: any, config) => outputParser.invoke(input.raw, config),\n });\n const parserNone = RunnablePassthrough.assign({\n parsed: () => null,\n });\n const parsedWithFallback = parserAssign.withFallbacks({\n fallbacks: [parserNone],\n });\n return RunnableSequence.from<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n >([\n {\n raw: llm,\n },\n parsedWithFallback,\n ]).withConfig({\n runName: \"StructuredOutputRunnable\",\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"chat_models.cjs","names":["AbstractGoogleLLMConnection","getGeminiAPI","BaseChatModel","ensureParams","DefaultGeminiSafetyHandler","ApiKeyGoogleAuth","convertToGeminiTools","copyAIModelParams","ChatGenerationChunk","AIMessageChunk","PROFILES","schemaToGeminiParameters","JsonOutputKeyToolsParser","removeAdditionalProperties","JsonOutputParser","RunnablePassthrough","RunnableSequence"],"sources":["../src/chat_models.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { UsageMetadata, type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\n\nimport {\n BaseChatModel,\n LangSmithParams,\n type BaseChatModelParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n} from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport {\n Runnable,\n RunnablePassthrough,\n RunnableSequence,\n} from \"@langchain/core/runnables\";\nimport { JsonOutputKeyToolsParser } from \"@langchain/core/output_parsers/openai_tools\";\nimport {\n BaseLLMOutputParser,\n JsonOutputParser,\n} from \"@langchain/core/output_parsers\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { concat } from \"@langchain/core/utils/stream\";\nimport {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n GoogleAIBaseLLMInput,\n GoogleAIModelParams,\n GoogleAISafetySetting,\n GoogleConnectionParams,\n GooglePlatformType,\n GeminiTool,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIAPI,\n GoogleAIAPIParams,\n GoogleSearchToolSetting,\n GoogleSpeechConfig,\n GeminiJsonSchema,\n} from \"./types.js\";\nimport {\n convertToGeminiTools,\n copyAIModelParams,\n copyAndValidateModelParamsInto,\n} from \"./utils/common.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { DefaultGeminiSafetyHandler, getGeminiAPI } from \"./utils/gemini.js\";\nimport { ApiKeyGoogleAuth, GoogleAbstractedClient } from \"./auth.js\";\nimport { JsonStream } from \"./utils/stream.js\";\nimport { ensureParams } from \"./utils/failed_handler.js\";\nimport type {\n GoogleBaseLLMInput,\n GoogleAISafetyHandler,\n GoogleAISafetyParams,\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GoogleAIToolType,\n GeminiAPIConfig,\n GoogleAIModelModality,\n} from \"./types.js\";\nimport {\n removeAdditionalProperties,\n schemaToGeminiParameters,\n} from \"./utils/zod_to_gemini_parameters.js\";\nimport PROFILES from \"./profiles.js\";\n\nexport class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<\n BaseMessage[],\n AuthOptions\n> {\n convertSystemMessageToHumanContent: boolean | undefined;\n\n constructor(\n fields: GoogleAIBaseLLMInput<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming: boolean\n ) {\n super(fields, caller, client, streaming);\n this.convertSystemMessageToHumanContent =\n fields?.convertSystemMessageToHumanContent;\n }\n\n get useSystemInstruction(): boolean {\n return typeof this.convertSystemMessageToHumanContent === \"boolean\"\n ? !this.convertSystemMessageToHumanContent\n : this.computeUseSystemInstruction;\n }\n\n get computeUseSystemInstruction(): boolean {\n // This works on models from April 2024 and later\n // Vertex AI: gemini-1.5-pro and gemini-1.0-002 and later\n // AI Studio: gemini-1.5-pro-latest\n if (this.modelFamily === \"palm\") {\n return false;\n } else if (this.modelName === \"gemini-1.0-pro-001\") {\n return false;\n } else if (this.modelName.startsWith(\"gemini-pro-vision\")) {\n return false;\n } else if (this.modelName.startsWith(\"gemini-1.0-pro-vision\")) {\n return false;\n } else if (this.modelName === \"gemini-pro\" && this.platform === \"gai\") {\n // on AI Studio gemini-pro is still pointing at gemini-1.0-pro-001\n return false;\n } else if (this.modelFamily === \"gemma\") {\n // At least as of 12 Mar 2025 gemma 3 on AIS, trying to use system instructions yields an error:\n // \"Developer instruction is not enabled for models/gemma-3-27b-it\"\n return false;\n }\n return true;\n }\n\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<\n GoogleSearchToolSetting,\n boolean\n > {\n if (this.modelName.startsWith(\"gemini-1.0\")) {\n return \"googleSearchRetrieval\";\n } else if (this.modelName.startsWith(\"gemini-1.5\")) {\n return \"googleSearchRetrieval\";\n } else {\n return \"googleSearch\";\n }\n }\n\n computeGoogleSearchToolAdjustment(\n apiConfig: GeminiAPIConfig\n ): Exclude<GoogleSearchToolSetting, true> {\n const adj = apiConfig.googleSearchToolAdjustment;\n if (adj === undefined || adj === true) {\n return this.computeGoogleSearchToolAdjustmentFromModel();\n } else {\n return adj;\n }\n }\n\n buildGeminiAPI(): GoogleAIAPI {\n const apiConfig: GeminiAPIConfig =\n (this.apiConfig as GeminiAPIConfig) ?? {};\n const googleSearchToolAdjustment =\n this.computeGoogleSearchToolAdjustment(apiConfig);\n const geminiConfig: GeminiAPIConfig = {\n useSystemInstruction: this.useSystemInstruction,\n googleSearchToolAdjustment,\n ...apiConfig,\n };\n return getGeminiAPI(geminiConfig);\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n return this.buildGeminiAPI();\n default:\n return super.api;\n }\n }\n}\n\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions>\n extends\n BaseChatModelParams,\n GoogleConnectionParams<AuthOptions>,\n GoogleAIModelParams,\n GoogleAISafetyParams,\n GoogleAIAPIParams,\n Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {}\n\n/**\n * Integration with a Google chat model.\n */\nexport abstract class ChatGoogleBase<AuthOptions>\n extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk>\n implements ChatGoogleBaseInput<AuthOptions>\n{\n // Used for tracing, replace with the same name as your class\n static lc_name() {\n return \"ChatGoogle\";\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n authOptions: \"GOOGLE_AUTH_OPTIONS\",\n };\n }\n\n lc_serializable = true;\n\n // Set based on modelName\n model: string;\n\n modelName = \"gemini-pro\";\n\n temperature: number;\n\n maxOutputTokens: number;\n\n maxReasoningTokens: number;\n\n topP: number;\n\n topK: number;\n\n seed: number;\n\n presencePenalty: number;\n\n frequencyPenalty: number;\n\n stopSequences: string[] = [];\n\n logprobs: boolean;\n\n topLogprobs: number = 0;\n\n safetySettings: GoogleAISafetySetting[] = [];\n\n responseModalities?: GoogleAIModelModality[];\n\n // May intentionally be undefined, meaning to compute this.\n convertSystemMessageToHumanContent: boolean | undefined;\n\n safetyHandler: GoogleAISafetyHandler;\n\n speechConfig: GoogleSpeechConfig;\n\n streamUsage = true;\n\n streaming = false;\n\n labels?: Record<string, string>;\n\n protected connection: ChatConnection<AuthOptions>;\n\n protected streamedConnection: ChatConnection<AuthOptions>;\n\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>) {\n super(ensureParams(fields));\n\n copyAndValidateModelParamsInto(fields, this);\n this.safetyHandler =\n fields?.safetyHandler ?? new DefaultGeminiSafetyHandler();\n this.streamUsage = fields?.streamUsage ?? this.streamUsage;\n const client = this.buildClient(fields);\n this.buildConnection(fields ?? {}, client);\n }\n\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = this.invocationParams(options);\n return {\n ls_provider: \"google_vertexai\",\n ls_model_name: this.model,\n ls_model_type: \"chat\",\n ls_temperature: params.temperature ?? undefined,\n ls_max_tokens: params.maxOutputTokens ?? undefined,\n ls_stop: options.stop,\n };\n }\n\n abstract buildAbstractedClient(\n fields?: GoogleAIBaseLLMInput<AuthOptions>\n ): GoogleAbstractedClient;\n\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient {\n return new ApiKeyGoogleAuth(apiKey);\n }\n\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined {\n return fields?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n }\n\n buildClient(\n fields?: GoogleAIBaseLLMInput<AuthOptions>\n ): GoogleAbstractedClient {\n const apiKey = this.buildApiKey(fields);\n if (apiKey) {\n return this.buildApiKeyClient(apiKey);\n } else {\n return this.buildAbstractedClient(fields);\n }\n }\n\n buildConnection(\n fields: GoogleBaseLLMInput<AuthOptions>,\n client: GoogleAbstractedClient\n ) {\n this.connection = new ChatConnection(\n { ...fields, ...this },\n this.caller,\n client,\n false\n );\n\n this.streamedConnection = new ChatConnection(\n { ...fields, ...this },\n this.caller,\n client,\n true\n );\n }\n\n get platform(): GooglePlatformType {\n return this.connection.platform;\n }\n\n override bindTools(\n tools: GoogleAIToolType[],\n kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>\n ): Runnable<\n BaseLanguageModelInput,\n AIMessageChunk,\n GoogleAIBaseLanguageModelCallOptions\n > {\n return this.withConfig({ tools: convertToGeminiTools(tools), ...kwargs });\n }\n\n _llmType() {\n return \"google\";\n }\n\n /**\n * Get the parameters used to invoke the model\n */\n override invocationParams(options?: this[\"ParsedCallOptions\"]) {\n return copyAIModelParams(this, options);\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager: CallbackManagerForLLMRun | undefined\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const parameters = this.invocationParams(options);\n if (this.streaming) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | null = null;\n for await (const chunk of stream) {\n finalChunk = !finalChunk ? chunk : concat(finalChunk, chunk);\n }\n if (!finalChunk) {\n throw new Error(\"No chunks were returned from the stream.\");\n }\n return {\n generations: [finalChunk],\n };\n }\n\n const response = await this.connection.request(\n messages,\n parameters,\n options,\n runManager\n );\n const ret = this.connection.api.responseToChatResult(response);\n const chunk = ret?.generations?.[0];\n if (chunk) {\n await runManager?.handleLLMNewToken(chunk.text || \"\");\n }\n return ret;\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n // Make the call as a streaming request\n const parameters = this.invocationParams(options);\n const response = await this.streamedConnection.request(\n _messages,\n parameters,\n options,\n runManager\n );\n\n // Get the streaming parser of the response\n const stream = response.data as JsonStream;\n let usageMetadata: UsageMetadata | undefined;\n // Loop until the end of the stream\n // During the loop, yield each time we get a chunk from the streaming parser\n // that is either available or added to the queue\n while (!stream.streamDone) {\n if (options.signal?.aborted) {\n return;\n }\n const output = await stream.nextChunk();\n await runManager?.handleCustomEvent(\n `google-chunk-${this.constructor.name}`,\n {\n output,\n }\n );\n if (\n output &&\n output.usageMetadata &&\n this.streamUsage !== false &&\n options.streamUsage !== false\n ) {\n usageMetadata = {\n input_tokens: output.usageMetadata.promptTokenCount,\n output_tokens: output.usageMetadata.candidatesTokenCount,\n total_tokens: output.usageMetadata.totalTokenCount,\n };\n }\n const chunk =\n output !== null\n ? this.connection.api.responseToChatGeneration({ data: output })\n : new ChatGenerationChunk({\n text: \"\",\n generationInfo: { finishReason: \"stop\" },\n message: new AIMessageChunk({\n content: \"\",\n usage_metadata: usageMetadata,\n }),\n });\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text ?? \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n }\n }\n\n /** @ignore */\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile {\n return PROFILES[this.model] ?? {};\n }\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<false>\n ): Runnable<BaseLanguageModelInput, RunOutput>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<true>\n ): Runnable<BaseLanguageModelInput, { raw: BaseMessage; parsed: RunOutput }>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n outputSchema:\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const schema: InteropZodType<RunOutput> | Record<string, any> =\n outputSchema;\n const name = config?.name;\n const method = config?.method;\n const includeRaw = config?.includeRaw;\n if (method === \"jsonMode\") {\n throw new Error(\n `Google only supports \"jsonSchema\" or \"functionCalling\" as a method.`\n );\n }\n\n let llm;\n let outputParser: BaseLLMOutputParser<RunOutput>;\n if (method === \"functionCalling\") {\n let functionName = name ?? \"extract\";\n let tools: GeminiTool[];\n if (isInteropZodSchema(schema)) {\n const jsonSchema = schemaToGeminiParameters(schema);\n tools = [\n {\n functionDeclarations: [\n {\n name: functionName,\n description:\n jsonSchema.description ?? \"A function available to call.\",\n parameters: jsonSchema as GeminiFunctionSchema,\n },\n ],\n },\n ];\n outputParser = new JsonOutputKeyToolsParser({\n returnSingle: true,\n keyName: functionName,\n zodSchema: schema,\n });\n } else {\n let geminiFunctionDefinition: GeminiFunctionDeclaration;\n if (\n typeof schema.name === \"string\" &&\n typeof schema.parameters === \"object\" &&\n schema.parameters != null\n ) {\n geminiFunctionDefinition = schema as GeminiFunctionDeclaration;\n functionName = schema.name;\n } else {\n // We are providing the schema for *just* the parameters, probably\n const parameters: GeminiJsonSchema =\n removeAdditionalProperties(schema);\n geminiFunctionDefinition = {\n name: functionName,\n description: schema.description ?? \"\",\n parameters,\n };\n }\n tools = [\n {\n functionDeclarations: [geminiFunctionDefinition],\n },\n ];\n outputParser = new JsonOutputKeyToolsParser<RunOutput>({\n returnSingle: true,\n keyName: functionName,\n });\n }\n llm = this.bindTools(tools).withConfig({ tool_choice: functionName });\n } else {\n // Default to jsonSchema method\n const jsonSchema = schemaToGeminiParameters(schema);\n llm = this.withConfig({\n responseSchema: jsonSchema as GeminiJsonSchema,\n });\n outputParser = new JsonOutputParser();\n }\n\n if (!includeRaw) {\n return llm.pipe(outputParser).withConfig({\n runName: \"ChatGoogleStructuredOutput\",\n }) as Runnable<BaseLanguageModelInput, RunOutput>;\n }\n\n const parserAssign = RunnablePassthrough.assign({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parsed: (input: any, config) => outputParser.invoke(input.raw, config),\n });\n const parserNone = RunnablePassthrough.assign({\n parsed: () => null,\n });\n const parsedWithFallback = parserAssign.withFallbacks({\n fallbacks: [parserNone],\n });\n return RunnableSequence.from<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n >([\n {\n raw: llm,\n },\n parsedWithFallback,\n ]).withConfig({\n runName: \"StructuredOutputRunnable\",\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwEA,IAAa,iBAAb,cAAiDA,+CAG/C;CACA;CAEA,YACE,QACA,QACA,QACA,WACA;AACA,QAAM,QAAQ,QAAQ,QAAQ,UAAU;AACxC,OAAK,qCACH,QAAQ;;CAGZ,IAAI,uBAAgC;AAClC,SAAO,OAAO,KAAK,uCAAuC,YACtD,CAAC,KAAK,qCACN,KAAK;;CAGX,IAAI,8BAAuC;AAIzC,MAAI,KAAK,gBAAgB,OACvB,QAAO;WACE,KAAK,cAAc,qBAC5B,QAAO;WACE,KAAK,UAAU,WAAW,oBAAoB,CACvD,QAAO;WACE,KAAK,UAAU,WAAW,wBAAwB,CAC3D,QAAO;WACE,KAAK,cAAc,gBAAgB,KAAK,aAAa,MAE9D,QAAO;WACE,KAAK,gBAAgB,QAG9B,QAAO;AAET,SAAO;;CAGT,6CAGE;AACA,MAAI,KAAK,UAAU,WAAW,aAAa,CACzC,QAAO;WACE,KAAK,UAAU,WAAW,aAAa,CAChD,QAAO;MAEP,QAAO;;CAIX,kCACE,WACwC;EACxC,MAAM,MAAM,UAAU;AACtB,MAAI,QAAQ,UAAa,QAAQ,KAC/B,QAAO,KAAK,4CAA4C;MAExD,QAAO;;CAIX,iBAA8B;EAC5B,MAAM,YACH,KAAK,aAAiC,EAAE;EAC3C,MAAM,6BACJ,KAAK,kCAAkC,UAAU;AAMnD,SAAOC,4BAL+B;GACpC,sBAAsB,KAAK;GAC3B;GACA,GAAG;GACJ,CACgC;;CAGnC,IAAI,MAAmB;AACrB,UAAQ,KAAK,SAAb;GACE,KAAK,SACH,QAAO,KAAK,gBAAgB;GAC9B,QACE,QAAO,MAAM;;;;;;;AAoBrB,IAAsB,iBAAtB,cACUC,0DAEV;CAEE,OAAO,UAAU;AACf,SAAO;;CAGT,IAAI,aAAoD;AACtD,SAAO,EACL,aAAa,uBACd;;CAGH,kBAAkB;CAGlB;CAEA,YAAY;CAEZ;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,gBAA0B,EAAE;CAE5B;CAEA,cAAsB;CAEtB,iBAA0C,EAAE;CAE5C;CAGA;CAEA;CAEA;CAEA,cAAc;CAEd,YAAY;CAEZ;CAEA,AAAU;CAEV,AAAU;CAEV,YAAY,QAA2C;AACrD,QAAMC,oCAAa,OAAO,CAAC;AAE3B,gDAA+B,QAAQ,KAAK;AAC5C,OAAK,gBACH,QAAQ,iBAAiB,IAAIC,2CAA4B;AAC3D,OAAK,cAAc,QAAQ,eAAe,KAAK;EAC/C,MAAM,SAAS,KAAK,YAAY,OAAO;AACvC,OAAK,gBAAgB,UAAU,EAAE,EAAE,OAAO;;CAG5C,YAAY,SAAqD;EAC/D,MAAM,SAAS,KAAK,iBAAiB,QAAQ;AAC7C,SAAO;GACL,aAAa;GACb,eAAe,KAAK;GACpB,eAAe;GACf,gBAAgB,OAAO,eAAe;GACtC,eAAe,OAAO,mBAAmB;GACzC,SAAS,QAAQ;GAClB;;CAOH,kBAAkB,QAAwC;AACxD,SAAO,IAAIC,8BAAiB,OAAO;;CAGrC,YAAY,QAAgE;AAC1E,SAAO,QAAQ,gEAAiC,iBAAiB;;CAGnE,YACE,QACwB;EACxB,MAAM,SAAS,KAAK,YAAY,OAAO;AACvC,MAAI,OACF,QAAO,KAAK,kBAAkB,OAAO;MAErC,QAAO,KAAK,sBAAsB,OAAO;;CAI7C,gBACE,QACA,QACA;AACA,OAAK,aAAa,IAAI,eACpB;GAAE,GAAG;GAAQ,GAAG;GAAM,EACtB,KAAK,QACL,QACA,MACD;AAED,OAAK,qBAAqB,IAAI,eAC5B;GAAE,GAAG;GAAQ,GAAG;GAAM,EACtB,KAAK,QACL,QACA,KACD;;CAGH,IAAI,WAA+B;AACjC,SAAO,KAAK,WAAW;;CAGzB,AAAS,UACP,OACA,QAKA;AACA,SAAO,KAAK,WAAW;GAAE,OAAOC,oCAAqB,MAAM;GAAE,GAAG;GAAQ,CAAC;;CAG3E,WAAW;AACT,SAAO;;;;;CAMT,AAAS,iBAAiB,SAAqC;AAC7D,SAAOC,iCAAkB,MAAM,QAAQ;;CAGzC,MAAM,UACJ,UACA,SACA,YACqB;AACrB,UAAQ,QAAQ,gBAAgB;EAChC,MAAM,aAAa,KAAK,iBAAiB,QAAQ;AACjD,MAAI,KAAK,WAAW;GAClB,MAAM,SAAS,KAAK,sBAAsB,UAAU,SAAS,WAAW;GACxE,IAAI,aAAyC;AAC7C,cAAW,MAAM,SAAS,OACxB,cAAa,CAAC,aAAa,iDAAe,YAAY,MAAM;AAE9D,OAAI,CAAC,WACH,OAAM,IAAI,MAAM,2CAA2C;AAE7D,UAAO,EACL,aAAa,CAAC,WAAW,EAC1B;;EAGH,MAAM,WAAW,MAAM,KAAK,WAAW,QACrC,UACA,YACA,SACA,WACD;EACD,MAAM,MAAM,KAAK,WAAW,IAAI,qBAAqB,SAAS;EAC9D,MAAM,QAAQ,KAAK,cAAc;AACjC,MAAI,MACF,OAAM,YAAY,kBAAkB,MAAM,QAAQ,GAAG;AAEvD,SAAO;;CAGT,OAAO,sBACL,WACA,SACA,YACqC;EAErC,MAAM,aAAa,KAAK,iBAAiB,QAAQ;EASjD,MAAM,UARW,MAAM,KAAK,mBAAmB,QAC7C,WACA,YACA,SACA,WACD,EAGuB;EACxB,IAAI;AAIJ,SAAO,CAAC,OAAO,YAAY;AACzB,OAAI,QAAQ,QAAQ,QAClB;GAEF,MAAM,SAAS,MAAM,OAAO,WAAW;AACvC,SAAM,YAAY,kBAChB,gBAAgB,KAAK,YAAY,QACjC,EACE,QACD,CACF;AACD,OACE,UACA,OAAO,iBACP,KAAK,gBAAgB,SACrB,QAAQ,gBAAgB,MAExB,iBAAgB;IACd,cAAc,OAAO,cAAc;IACnC,eAAe,OAAO,cAAc;IACpC,cAAc,OAAO,cAAc;IACpC;GAEH,MAAM,QACJ,WAAW,OACP,KAAK,WAAW,IAAI,yBAAyB,EAAE,MAAM,QAAQ,CAAC,GAC9D,IAAIC,4CAAoB;IACtB,MAAM;IACN,gBAAgB,EAAE,cAAc,QAAQ;IACxC,SAAS,IAAIC,wCAAe;KAC1B,SAAS;KACT,gBAAgB;KACjB,CAAC;IACH,CAAC;AACR,OAAI,OAAO;AACT,UAAM;AACN,UAAM,YAAY,kBAChB,MAAM,QAAQ,IACd,QACA,QACA,QACA,QACA,EAAE,OAAO,CACV;;;;;CAMP,oBAAoB;AAClB,SAAO,EAAE;;;;;;;;;;;CAYX,IAAI,UAAwB;AAC1B,SAAOC,yBAAS,KAAK,UAAU,EAAE;;CAyBnC,qBAIE,cAIA,QAMI;EAEJ,MAAM,SACJ;EACF,MAAM,OAAO,QAAQ;EACrB,MAAM,SAAS,QAAQ;EACvB,MAAM,aAAa,QAAQ;AAC3B,MAAI,WAAW,WACb,OAAM,IAAI,MACR,sEACD;EAGH,IAAI;EACJ,IAAI;AACJ,MAAI,WAAW,mBAAmB;GAChC,IAAI,eAAe,QAAQ;GAC3B,IAAI;AACJ,2DAAuB,OAAO,EAAE;IAC9B,MAAM,aAAaC,0DAAyB,OAAO;AACnD,YAAQ,CACN,EACE,sBAAsB,CACpB;KACE,MAAM;KACN,aACE,WAAW,eAAe;KAC5B,YAAY;KACb,CACF,EACF,CACF;AACD,mBAAe,IAAIC,qEAAyB;KAC1C,cAAc;KACd,SAAS;KACT,WAAW;KACZ,CAAC;UACG;IACL,IAAI;AACJ,QACE,OAAO,OAAO,SAAS,YACvB,OAAO,OAAO,eAAe,YAC7B,OAAO,cAAc,MACrB;AACA,gCAA2B;AAC3B,oBAAe,OAAO;WACjB;KAEL,MAAM,aACJC,4DAA2B,OAAO;AACpC,gCAA2B;MACzB,MAAM;MACN,aAAa,OAAO,eAAe;MACnC;MACD;;AAEH,YAAQ,CACN,EACE,sBAAsB,CAAC,yBAAyB,EACjD,CACF;AACD,mBAAe,IAAID,qEAAoC;KACrD,cAAc;KACd,SAAS;KACV,CAAC;;AAEJ,SAAM,KAAK,UAAU,MAAM,CAAC,WAAW,EAAE,aAAa,cAAc,CAAC;SAChE;GAEL,MAAM,aAAaD,0DAAyB,OAAO;AACnD,SAAM,KAAK,WAAW,EACpB,gBAAgB,YACjB,CAAC;AACF,kBAAe,IAAIG,iDAAkB;;AAGvC,MAAI,CAAC,WACH,QAAO,IAAI,KAAK,aAAa,CAAC,WAAW,EACvC,SAAS,8BACV,CAAC;EAGJ,MAAM,eAAeC,8CAAoB,OAAO,EAE9C,SAAS,OAAY,WAAW,aAAa,OAAO,MAAM,KAAK,OAAO,EACvE,CAAC;EACF,MAAM,aAAaA,8CAAoB,OAAO,EAC5C,cAAc,MACf,CAAC;EACF,MAAM,qBAAqB,aAAa,cAAc,EACpD,WAAW,CAAC,WAAW,EACxB,CAAC;AACF,SAAOC,2CAAiB,KAGtB,CACA,EACE,KAAK,KACN,EACD,mBACD,CAAC,CAAC,WAAW,EACZ,SAAS,4BACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat_models.d.cts","names":["BaseMessage","CallbackManagerForLLMRun","BaseChatModel","LangSmithParams","BaseChatModelParams","ChatGenerationChunk","ChatResult","AIMessageChunk","BaseLanguageModelInput","StructuredOutputMethodOptions","ModelProfile","Runnable","AsyncCaller","InteropZodType","GoogleAIBaseLLMInput","GoogleAIModelParams","GoogleAISafetySetting","GoogleConnectionParams","GooglePlatformType","GoogleAIBaseLanguageModelCallOptions","GoogleAIAPI","GoogleAIAPIParams","GoogleSearchToolSetting","GoogleSpeechConfig","AbstractGoogleLLMConnection","GoogleAbstractedClient","GoogleBaseLLMInput","GoogleAISafetyHandler","GoogleAISafetyParams","GoogleAIToolType","GeminiAPIConfig","GoogleAIModelModality","ChatConnection","AuthOptions","Exclude","ChatGoogleBaseInput","Pick","ChatGoogleBase","RunOutput","Record","Partial","__types_js0","GoogleAIModelRequestParams","Promise","AsyncGenerator"],"sources":["../src/chat_models.d.ts"],"sourcesContent":["import { type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel, LangSmithParams, type BaseChatModelParams } from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport { BaseLanguageModelInput, StructuredOutputMethodOptions } from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { Runnable } from \"@langchain/core/runnables\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { InteropZodType } from \"@langchain/core/utils/types\";\nimport { GoogleAIBaseLLMInput, GoogleAIModelParams, GoogleAISafetySetting, GoogleConnectionParams, GooglePlatformType, GoogleAIBaseLanguageModelCallOptions, GoogleAIAPI, GoogleAIAPIParams, GoogleSearchToolSetting, GoogleSpeechConfig } from \"./types.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { GoogleAbstractedClient } from \"./auth.js\";\nimport type { GoogleBaseLLMInput, GoogleAISafetyHandler, GoogleAISafetyParams, GoogleAIToolType, GeminiAPIConfig, GoogleAIModelModality } from \"./types.js\";\nexport declare class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<BaseMessage[], AuthOptions> {\n convertSystemMessageToHumanContent: boolean | undefined;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming: boolean);\n get useSystemInstruction(): boolean;\n get computeUseSystemInstruction(): boolean;\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<GoogleSearchToolSetting, boolean>;\n computeGoogleSearchToolAdjustment(apiConfig: GeminiAPIConfig): Exclude<GoogleSearchToolSetting, true>;\n buildGeminiAPI(): GoogleAIAPI;\n get api(): GoogleAIAPI;\n}\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions> extends BaseChatModelParams, GoogleConnectionParams<AuthOptions>, GoogleAIModelParams, GoogleAISafetyParams, GoogleAIAPIParams, Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {\n}\n/**\n * Integration with a Google chat model.\n */\nexport declare abstract class ChatGoogleBase<AuthOptions> extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk> implements ChatGoogleBaseInput<AuthOptions> {\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n lc_serializable: boolean;\n model: string;\n modelName: string;\n temperature: number;\n maxOutputTokens: number;\n maxReasoningTokens: number;\n topP: number;\n topK: number;\n seed: number;\n presencePenalty: number;\n frequencyPenalty: number;\n stopSequences: string[];\n logprobs: boolean;\n topLogprobs: number;\n safetySettings: GoogleAISafetySetting[];\n responseModalities?: GoogleAIModelModality[];\n convertSystemMessageToHumanContent: boolean | undefined;\n safetyHandler: GoogleAISafetyHandler;\n speechConfig: GoogleSpeechConfig;\n streamUsage: boolean;\n streaming: boolean;\n labels?: Record<string, string>;\n protected connection: ChatConnection<AuthOptions>;\n protected streamedConnection: ChatConnection<AuthOptions>;\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>);\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams;\n abstract buildAbstractedClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient;\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined;\n buildClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildConnection(fields: GoogleBaseLLMInput<AuthOptions>, client: GoogleAbstractedClient): void;\n get platform(): GooglePlatformType;\n bindTools(tools: GoogleAIToolType[], kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>): Runnable<BaseLanguageModelInput, AIMessageChunk, GoogleAIBaseLanguageModelCallOptions>;\n _llmType(): string;\n /**\n * Get the parameters used to invoke the model\n */\n invocationParams(options?: this[\"ParsedCallOptions\"]): import(\"./types.js\").GoogleAIModelRequestParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager: CallbackManagerForLLMRun | undefined): Promise<ChatResult>;\n _streamResponseChunks(_messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n /** @ignore */\n _combineLLMOutput(): never[];\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile;\n withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<false>): Runnable<BaseLanguageModelInput, RunOutput>;\n withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<true>): Runnable<BaseLanguageModelInput, {\n raw: BaseMessage;\n parsed: RunOutput;\n }>;\n}\n//# sourceMappingURL=chat_models.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"chat_models.d.cts","names":[],"sources":["../src/chat_models.ts"],"mappings":";;;;;;;;;;;;;;cAwEa,cAAA,sBAAoC,2BAAA,CAC/C,WAAA,IACA,WAAA;EAEA,kCAAA;EAEA,WAAA,CACE,MAAA,EAAQ,oBAAA,CAAqB,WAAA,eAC7B,MAAA,EAAQ,WAAA,EACR,MAAA,EAAQ,sBAAA,EACR,SAAA;EAAA,IAOE,oBAAA,CAAA;EAAA,IAMA,2BAAA,CAAA;EAuBJ,0CAAA,CAAA,GAA8C,OAAA,CAC5C,uBAAA;EAYF,iCAAA,CACE,SAAA,EAAW,eAAA,GACV,OAAA,CAAQ,uBAAA;EASX,cAAA,CAAA,GAAkB,WAAA;EAAA,IAad,GAAA,CAAA,GAAO,WAAA;AAAA;;;;UAaI,mBAAA,sBAEb,mBAAA,EACA,sBAAA,CAAuB,WAAA,GACvB,mBAAA,EACA,oBAAA,EACA,iBAAA,EACA,IAAA,CAAK,oCAAA;;;;uBAKa,cAAA,sBACZ,aAAA,CAAc,oCAAA,EAAsC,cAAA,aACjD,mBAAA,CAAoB,WAAA;EAAA,OAGxB,OAAA,CAAA;EAAA,IAIH,UAAA,CAAA;IAAA,CAAiB,GAAA;EAAA;EAMrB,eAAA;EAGA,KAAA;EAEA,SAAA;EAEA,WAAA;EAEA,eAAA;EAEA,kBAAA;EAEA,IAAA;EAEA,IAAA;EAEA,IAAA;EAEA,eAAA;EAEA,gBAAA;EAEA,aAAA;EAEA,QAAA;EAEA,WAAA;EAEA,cAAA,EAAgB,qBAAA;EAEhB,kBAAA,GAAqB,qBAAA;EAGrB,kCAAA;EAEA,aAAA,EAAe,qBAAA;EAEf,YAAA,EAAc,kBAAA;EAEd,WAAA;EAEA,SAAA;EAEA,MAAA,GAAS,MAAA;EAAA,UAEC,UAAA,EAAY,cAAA,CAAe,WAAA;EAAA,UAE3B,kBAAA,EAAoB,cAAA,CAAe,WAAA;EAE7C,WAAA,CAAY,MAAA,GAAS,mBAAA,CAAoB,WAAA;EAWzC,WAAA,CAAY,OAAA,8BAAqC,eAAA;EAAA,SAYxC,qBAAA,CACP,MAAA,GAAS,oBAAA,CAAqB,WAAA,IAC7B,sBAAA;EAEH,iBAAA,CAAkB,MAAA,WAAiB,sBAAA;EAInC,WAAA,CAAY,MAAA,GAAS,oBAAA,CAAqB,WAAA;EAI1C,WAAA,CACE,MAAA,GAAS,oBAAA,CAAqB,WAAA,IAC7B,sBAAA;EASH,eAAA,CACE,MAAA,EAAQ,kBAAA,CAAmB,WAAA,GAC3B,MAAA,EAAQ,sBAAA;EAAA,IAiBN,QAAA,CAAA,GAAY,kBAAA;EAIP,SAAA,CACP,KAAA,EAAO,gBAAA,IACP,MAAA,GAAS,OAAA,CAAQ,oCAAA,IAChB,QAAA,CACD,sBAAA,EACA,cAAA,EACA,oCAAA;EAKF,QAAA,CAAA;EAxJE;;;EA+JO,gBAAA,CAAiB,OAAA,+BAff,0BAAA;EAmBL,SAAA,CACJ,QAAA,EAAU,WAAA,IACV,OAAA,6BACA,UAAA,EAAY,wBAAA,eACX,OAAA,CAAQ,UAAA;EA+BJ,qBAAA,CACL,SAAA,EAAW,WAAA,IACX,OAAA,6BACA,UAAA,GAAa,wBAAA,GACZ,cAAA,CAAe,mBAAA;EA7MhB;EA8QF,iBAAA,CAAA;EA7QyB;;;;;;;;AAS3B;EAT2B,IA0RrB,OAAA,CAAA,GAAW,YAAA;EAIf,oBAAA,mBAEoB,MAAA,gBAAsB,MAAA,cAAA,CAExC,YAAA,EACI,cAAA,CAAe,SAAA,IAEf,MAAA,eACJ,MAAA,GAAS,6BAAA,UACR,QAAA,CAAS,sBAAA,EAAwB,SAAA;EAEpC,oBAAA,mBAEoB,MAAA,gBAAsB,MAAA,cAAA,CAExC,YAAA,EACI,cAAA,CAAe,SAAA,IAEf,MAAA,eACJ,MAAA,GAAS,6BAAA,SACR,QAAA,CAAS,sBAAA;IAA0B,GAAA,EAAK,WAAA;IAAa,MAAA,EAAQ,SAAA;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat_models.d.ts","names":["BaseMessage","CallbackManagerForLLMRun","BaseChatModel","LangSmithParams","BaseChatModelParams","ChatGenerationChunk","ChatResult","AIMessageChunk","BaseLanguageModelInput","StructuredOutputMethodOptions","ModelProfile","Runnable","AsyncCaller","InteropZodType","GoogleAIBaseLLMInput","GoogleAIModelParams","GoogleAISafetySetting","GoogleConnectionParams","GooglePlatformType","GoogleAIBaseLanguageModelCallOptions","GoogleAIAPI","GoogleAIAPIParams","GoogleSearchToolSetting","GoogleSpeechConfig","AbstractGoogleLLMConnection","GoogleAbstractedClient","GoogleBaseLLMInput","GoogleAISafetyHandler","GoogleAISafetyParams","GoogleAIToolType","GeminiAPIConfig","GoogleAIModelModality","ChatConnection","AuthOptions","Exclude","ChatGoogleBaseInput","Pick","ChatGoogleBase","RunOutput","Record","Partial","__types_js0","GoogleAIModelRequestParams","Promise","AsyncGenerator"],"sources":["../src/chat_models.d.ts"],"sourcesContent":["import { type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel, LangSmithParams, type BaseChatModelParams } from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport { BaseLanguageModelInput, StructuredOutputMethodOptions } from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { Runnable } from \"@langchain/core/runnables\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { InteropZodType } from \"@langchain/core/utils/types\";\nimport { GoogleAIBaseLLMInput, GoogleAIModelParams, GoogleAISafetySetting, GoogleConnectionParams, GooglePlatformType, GoogleAIBaseLanguageModelCallOptions, GoogleAIAPI, GoogleAIAPIParams, GoogleSearchToolSetting, GoogleSpeechConfig } from \"./types.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { GoogleAbstractedClient } from \"./auth.js\";\nimport type { GoogleBaseLLMInput, GoogleAISafetyHandler, GoogleAISafetyParams, GoogleAIToolType, GeminiAPIConfig, GoogleAIModelModality } from \"./types.js\";\nexport declare class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<BaseMessage[], AuthOptions> {\n convertSystemMessageToHumanContent: boolean | undefined;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming: boolean);\n get useSystemInstruction(): boolean;\n get computeUseSystemInstruction(): boolean;\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<GoogleSearchToolSetting, boolean>;\n computeGoogleSearchToolAdjustment(apiConfig: GeminiAPIConfig): Exclude<GoogleSearchToolSetting, true>;\n buildGeminiAPI(): GoogleAIAPI;\n get api(): GoogleAIAPI;\n}\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions> extends BaseChatModelParams, GoogleConnectionParams<AuthOptions>, GoogleAIModelParams, GoogleAISafetyParams, GoogleAIAPIParams, Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {\n}\n/**\n * Integration with a Google chat model.\n */\nexport declare abstract class ChatGoogleBase<AuthOptions> extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk> implements ChatGoogleBaseInput<AuthOptions> {\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n lc_serializable: boolean;\n model: string;\n modelName: string;\n temperature: number;\n maxOutputTokens: number;\n maxReasoningTokens: number;\n topP: number;\n topK: number;\n seed: number;\n presencePenalty: number;\n frequencyPenalty: number;\n stopSequences: string[];\n logprobs: boolean;\n topLogprobs: number;\n safetySettings: GoogleAISafetySetting[];\n responseModalities?: GoogleAIModelModality[];\n convertSystemMessageToHumanContent: boolean | undefined;\n safetyHandler: GoogleAISafetyHandler;\n speechConfig: GoogleSpeechConfig;\n streamUsage: boolean;\n streaming: boolean;\n labels?: Record<string, string>;\n protected connection: ChatConnection<AuthOptions>;\n protected streamedConnection: ChatConnection<AuthOptions>;\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>);\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams;\n abstract buildAbstractedClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient;\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined;\n buildClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildConnection(fields: GoogleBaseLLMInput<AuthOptions>, client: GoogleAbstractedClient): void;\n get platform(): GooglePlatformType;\n bindTools(tools: GoogleAIToolType[], kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>): Runnable<BaseLanguageModelInput, AIMessageChunk, GoogleAIBaseLanguageModelCallOptions>;\n _llmType(): string;\n /**\n * Get the parameters used to invoke the model\n */\n invocationParams(options?: this[\"ParsedCallOptions\"]): import(\"./types.js\").GoogleAIModelRequestParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager: CallbackManagerForLLMRun | undefined): Promise<ChatResult>;\n _streamResponseChunks(_messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n /** @ignore */\n _combineLLMOutput(): never[];\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile;\n withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<false>): Runnable<BaseLanguageModelInput, RunOutput>;\n withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<true>): Runnable<BaseLanguageModelInput, {\n raw: BaseMessage;\n parsed: RunOutput;\n }>;\n}\n//# sourceMappingURL=chat_models.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"chat_models.d.ts","names":[],"sources":["../src/chat_models.ts"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { convertToGeminiTools, copyAIModelParams, copyAndValidateModelParamsInto
4
4
  import { ensureParams } from "./utils/failed_handler.js";
5
5
  import { AbstractGoogleLLMConnection } from "./connection.js";
6
6
  import { ApiKeyGoogleAuth } from "./auth.js";
7
- import profiles_default from "./profiles.js";
7
+ import PROFILES from "./profiles.js";
8
8
  import { getEnvironmentVariable } from "@langchain/core/utils/env";
9
9
  import { BaseChatModel } from "@langchain/core/language_models/chat_models";
10
10
  import { ChatGenerationChunk } from "@langchain/core/outputs";
@@ -47,12 +47,11 @@ var ChatConnection = class extends AbstractGoogleLLMConnection {
47
47
  buildGeminiAPI() {
48
48
  const apiConfig = this.apiConfig ?? {};
49
49
  const googleSearchToolAdjustment = this.computeGoogleSearchToolAdjustment(apiConfig);
50
- const geminiConfig = {
50
+ return getGeminiAPI({
51
51
  useSystemInstruction: this.useSystemInstruction,
52
52
  googleSearchToolAdjustment,
53
53
  ...apiConfig
54
- };
55
- return getGeminiAPI(geminiConfig);
54
+ });
56
55
  }
57
56
  get api() {
58
57
  switch (this.apiName) {
@@ -159,7 +158,7 @@ var ChatGoogleBase = class extends BaseChatModel {
159
158
  if (this.streaming) {
160
159
  const stream = this._streamResponseChunks(messages, options, runManager);
161
160
  let finalChunk = null;
162
- for await (const chunk$1 of stream) finalChunk = !finalChunk ? chunk$1 : concat(finalChunk, chunk$1);
161
+ for await (const chunk of stream) finalChunk = !finalChunk ? chunk : concat(finalChunk, chunk);
163
162
  if (!finalChunk) throw new Error("No chunks were returned from the stream.");
164
163
  return { generations: [finalChunk] };
165
164
  }
@@ -171,8 +170,7 @@ var ChatGoogleBase = class extends BaseChatModel {
171
170
  }
172
171
  async *_streamResponseChunks(_messages, options, runManager) {
173
172
  const parameters = this.invocationParams(options);
174
- const response = await this.streamedConnection.request(_messages, parameters, options, runManager);
175
- const stream = response.data;
173
+ const stream = (await this.streamedConnection.request(_messages, parameters, options, runManager)).data;
176
174
  let usageMetadata;
177
175
  while (!stream.streamDone) {
178
176
  if (options.signal?.aborted) return;
@@ -211,7 +209,7 @@ var ChatGoogleBase = class extends BaseChatModel {
211
209
  * @returns {ModelProfile} An object describing the model's capabilities and constraints
212
210
  */
213
211
  get profile() {
214
- return profiles_default[this.model] ?? {};
212
+ return PROFILES[this.model] ?? {};
215
213
  }
216
214
  withStructuredOutput(outputSchema, config) {
217
215
  const schema = outputSchema;
@@ -262,7 +260,7 @@ var ChatGoogleBase = class extends BaseChatModel {
262
260
  outputParser = new JsonOutputParser();
263
261
  }
264
262
  if (!includeRaw) return llm.pipe(outputParser).withConfig({ runName: "ChatGoogleStructuredOutput" });
265
- const parserAssign = RunnablePassthrough.assign({ parsed: (input, config$1) => outputParser.invoke(input.raw, config$1) });
263
+ const parserAssign = RunnablePassthrough.assign({ parsed: (input, config) => outputParser.invoke(input.raw, config) });
266
264
  const parserNone = RunnablePassthrough.assign({ parsed: () => null });
267
265
  const parsedWithFallback = parserAssign.withFallbacks({ fallbacks: [parserNone] });
268
266
  return RunnableSequence.from([{ raw: llm }, parsedWithFallback]).withConfig({ runName: "StructuredOutputRunnable" });