@langchain/google-common 2.1.13 → 2.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @langchain/google-common
2
2
 
3
+ ## 2.1.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [#9900](https://github.com/langchain-ai/langchainjs/pull/9900) [`a9b5059`](https://github.com/langchain-ai/langchainjs/commit/a9b50597186002221aaa4585246e569fa44c27c8) Thanks [@hntrl](https://github.com/hntrl)! - Improved abort signal handling for chat models:
8
+ - Added `ModelAbortError` class in `@langchain/core/errors` that contains partial output when a model invocation is aborted mid-stream
9
+ - `invoke()` now throws `ModelAbortError` with accumulated `partialOutput` when aborted during streaming (when using streaming callback handlers)
10
+ - `stream()` throws a regular `AbortError` when aborted (since chunks are already yielded to the caller)
11
+ - All provider implementations now properly check and propagate abort signals in both `_generate()` and `_streamResponseChunks()` methods
12
+ - Added standard tests for abort signal behavior
13
+
14
+ - [#9900](https://github.com/langchain-ai/langchainjs/pull/9900) [`a9b5059`](https://github.com/langchain-ai/langchainjs/commit/a9b50597186002221aaa4585246e569fa44c27c8) Thanks [@hntrl](https://github.com/hntrl)! - fix(providers): add proper abort signal handling for invoke and stream operations
15
+ - Added early abort check (`signal.throwIfAborted()`) at the start of `_generate` methods to immediately throw when signal is already aborted
16
+ - Added abort signal checks inside streaming loops in `_streamResponseChunks` to return early when signal is aborted
17
+ - Propagated abort signals to underlying SDK calls where applicable (Google GenAI, Google Common/VertexAI, Cohere)
18
+ - Added standard tests for abort signal behavior in `@langchain/standard-tests`
19
+
20
+ This enables proper cancellation behavior for both invoke and streaming operations, and allows fallback chains to correctly proceed to the next runnable when the previous one is aborted.
21
+
22
+ - [#9864](https://github.com/langchain-ai/langchainjs/pull/9864) [`e10c6cb`](https://github.com/langchain-ai/langchainjs/commit/e10c6cb9cbbf420c95855225f4872c2e738bbd92) Thanks [@yukukotani](https://github.com/yukukotani)! - support nullable object types in zod to gemini schema conversion
23
+
24
+ - Updated dependencies [[`a9b5059`](https://github.com/langchain-ai/langchainjs/commit/a9b50597186002221aaa4585246e569fa44c27c8), [`a9b5059`](https://github.com/langchain-ai/langchainjs/commit/a9b50597186002221aaa4585246e569fa44c27c8)]:
25
+ - @langchain/core@1.1.18
26
+
3
27
  ## 2.1.13
4
28
 
5
29
  ### Patch Changes
package/dist/auth.cjs CHANGED
@@ -18,7 +18,8 @@ var GoogleAbstractedFetchClient = class {
18
18
  "Content-Type": "application/json",
19
19
  ...opts.headers ?? {},
20
20
  ...additionalHeaders ?? {}
21
- }
21
+ },
22
+ signal: opts.signal
22
23
  };
23
24
  if (opts.data !== void 0) if (typeof opts.data === "string") fetchOptions.body = opts.data;
24
25
  else fetchOptions.body = JSON.stringify(opts.data);
package/dist/auth.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.cjs","names":["res: Response","opts: GoogleAbstractedClientOps","ReadableJsonStream","url: string | undefined","additionalHeaders: Record<string, string>","fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\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};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient\n implements GoogleAbstractedClient\n{\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 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 } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\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 res = await this._fetch(url, fetchOptions);\n\n if (!res.ok) {\n const resText = await res.text();\n const error = new Error(\n `Google request failed with status code ${res.status}: ${resText}`\n );\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (error as any).response = res;\n (error as any).details = {\n url,\n opts,\n fetchOptions,\n result: res,\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n throw error;\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":";;;AAqBA,IAAsB,8BAAtB,MAEA;CAOE,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;CAED,MAAM,SACJC,KACAF,MACAG,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM;EACjC,MAAMC,eAIF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,CAAE;IACtB,GAAI,qBAAqB,CAAE;GAC5B;EACF;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,UACvB,aAAa,OAAO,KAAK;OAEzB,aAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;AAEhD,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,UAAU,MAAM,IAAI,MAAM;GAChC,MAAM,wBAAQ,IAAI,MAChB,CAAC,uCAAuC,EAAE,IAAI,OAAO,EAAE,EAAE,SAAS;GAGnE,MAAc,WAAW;GACzB,MAAc,UAAU;IACvB;IACA;IACA;IACA,QAAQ;GACT;AAED,SAAM;EACP;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,YAAYC,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQL,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBM,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":["res: Response","opts: GoogleAbstractedClientOps","ReadableJsonStream","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\n implements GoogleAbstractedClient\n{\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 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 res = await this._fetch(url, fetchOptions);\n\n if (!res.ok) {\n const resText = await res.text();\n const error = new Error(\n `Google request failed with status code ${res.status}: ${resText}`\n );\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (error as any).response = res;\n (error as any).details = {\n url,\n opts,\n fetchOptions,\n result: res,\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n throw error;\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,MAEA;CAOE,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;CAED,MAAM,SACJC,KACAF,MACAG,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,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;AAEhD,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,UAAU,MAAM,IAAI,MAAM;GAChC,MAAM,wBAAQ,IAAI,MAChB,CAAC,uCAAuC,EAAE,IAAI,OAAO,EAAE,EAAE,SAAS;GAGnE,MAAc,WAAW;GACzB,MAAc,UAAU;IACvB;IACA;IACA;IACA,QAAQ;GACT;AAED,SAAM;EACP;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,YAAYC,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQL,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBM,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"}
package/dist/auth.d.cts CHANGED
@@ -9,6 +9,7 @@ type GoogleAbstractedClientOps = {
9
9
  headers?: Record<string, string>;
10
10
  data?: unknown;
11
11
  responseType?: GoogleAbstractedClientOpsResponseType;
12
+ signal?: AbortSignal;
12
13
  };
13
14
  interface GoogleAbstractedClient {
14
15
  request: (opts: GoogleAbstractedClientOps) => unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.cts","names":["GooglePlatformType","GoogleAbstractedClientOpsMethod","GoogleAbstractedClientOpsResponseType","GoogleAbstractedClientOps","Record","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};\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 _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;AAAqC,CAAA;AAEvCG,UAAAA,sBAAAA,CAAsB;EAKTE,OAAAA,EAAAA,CAAAA,IAAAA,EAJVJ,yBAIqC,EAAA,GAAA,OAAA;EAE5BG,YAAAA,EAAAA,GAAAA,GALLA,OAKKA,CAAAA,MAAAA,CAAAA;EACFH,IAAAA,UAAAA,EAAAA,EAAAA,MAAAA;;AAEPM,uBALUF,2BAAAA,YAAuCF,sBAKjDI,CAAAA;EAAgBN,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA4BG,SAAAA,YAAAA,CAAAA,CAAAA,EAHnCA,OAGmCA,CAAAA,MAAAA,CAAAA;EACpBH,SAAAA,OAAAA,CAAAA,IAAAA,EAHjBA,yBAGiBA,CAAAA,EAAAA,OAAAA;EAA8CC,MAAAA,EAAAA,OAFvEI,KAEuEJ;EAKzEM,UAAAA,CAAAA,GAAAA,EANGD,QAMHC,EAAAA,IAAAA,EANmBP,yBAMnBO,CAAAA,EAN+CJ,OAM/CI,CAAAA,GAAAA,CAAAA;EALkGJ,QAAAA,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EAAvEH,yBAAuEG,EAAAA,iBAAAA,EAAzBF,MAAyBE,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAAAA,OAAAA,CAAAA;IAN9CD,IAAAA,EAAAA,GAAAA;IAAsB,MAAA,EAAA,CAAA,CAAA;IAiBtEM,MAAAA,EAAAA,MAAAA;IAIDL,UAAAA,EAAAA,MAAAA;IACFH,OAAAA,EAXDO,OAWCP;IAL4BI,OAAAA,EAAAA;MAA2B,WAAA,EAAA,MAAA;IAOjDK,CAAAA;EACAC,CAAAA,CAAAA;;AAA6Hb,cARhIW,gBAAAA,SAAyBJ,2BAAAA,CAQuGP;EAAiCc,MAAAA,EAAAA,MAAAA;EAAW,WAAA,CAAA,MAAA,EAAA,MAAA;;kBAJ7KR;gBACFH;;iBAEMS,eAAAA,WAA0BZ;iBAC1Ba,gDAAgDC,6EAA6Ed,iCAAiCc"}
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 _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;EACpBJ,SAAAA,OAAAA,CAAAA,IAAAA,EAHjBA,yBAGiBA,CAAAA,EAAAA,OAAAA;EAA8CC,MAAAA,EAAAA,OAFvEK,KAEuEL;EAKzEO,UAAAA,CAAAA,GAAAA,EANGD,QAMHC,EAAAA,IAAAA,EANmBR,yBAMnBQ,CAAAA,EAN+CJ,OAM/CI,CAAAA,GAAAA,CAAAA;EALkGJ,QAAAA,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EAAvEJ,yBAAuEI,EAAAA,iBAAAA,EAAzBH,MAAyBG,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAAAA,OAAAA,CAAAA;IAN9CD,IAAAA,EAAAA,GAAAA;IAAsB,MAAA,EAAA,CAAA,CAAA;IAiBtEM,MAAAA,EAAAA,MAAAA;IAIDL,UAAAA,EAAAA,MAAAA;IACFJ,OAAAA,EAXDQ,OAWCR;IAL4BK,OAAAA,EAAAA;MAA2B,WAAA,EAAA,MAAA;IAOjDK,CAAAA;EACAC,CAAAA,CAAAA;;AAA6Hd,cARhIY,gBAAAA,SAAyBJ,2BAAAA,CAQuGR;EAAiCe,MAAAA,EAAAA,MAAAA;EAAW,WAAA,CAAA,MAAA,EAAA,MAAA;;kBAJ7KR;gBACFJ;;iBAEMU,eAAAA,WAA0Bb;iBAC1Bc,gDAAgDC,6EAA6Ef,iCAAiCe"}
package/dist/auth.d.ts CHANGED
@@ -9,6 +9,7 @@ type GoogleAbstractedClientOps = {
9
9
  headers?: Record<string, string>;
10
10
  data?: unknown;
11
11
  responseType?: GoogleAbstractedClientOpsResponseType;
12
+ signal?: AbortSignal;
12
13
  };
13
14
  interface GoogleAbstractedClient {
14
15
  request: (opts: GoogleAbstractedClientOps) => unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","names":["GooglePlatformType","GoogleAbstractedClientOpsMethod","GoogleAbstractedClientOpsResponseType","GoogleAbstractedClientOps","Record","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};\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 _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;AAAqC,CAAA;AAEvCG,UAAAA,sBAAAA,CAAsB;EAKTE,OAAAA,EAAAA,CAAAA,IAAAA,EAJVJ,yBAIqC,EAAA,GAAA,OAAA;EAE5BG,YAAAA,EAAAA,GAAAA,GALLA,OAKKA,CAAAA,MAAAA,CAAAA;EACFH,IAAAA,UAAAA,EAAAA,EAAAA,MAAAA;;AAEPM,uBALUF,2BAAAA,YAAuCF,sBAKjDI,CAAAA;EAAgBN,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA4BG,SAAAA,YAAAA,CAAAA,CAAAA,EAHnCA,OAGmCA,CAAAA,MAAAA,CAAAA;EACpBH,SAAAA,OAAAA,CAAAA,IAAAA,EAHjBA,yBAGiBA,CAAAA,EAAAA,OAAAA;EAA8CC,MAAAA,EAAAA,OAFvEI,KAEuEJ;EAKzEM,UAAAA,CAAAA,GAAAA,EANGD,QAMHC,EAAAA,IAAAA,EANmBP,yBAMnBO,CAAAA,EAN+CJ,OAM/CI,CAAAA,GAAAA,CAAAA;EALkGJ,QAAAA,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EAAvEH,yBAAuEG,EAAAA,iBAAAA,EAAzBF,MAAyBE,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAAAA,OAAAA,CAAAA;IAN9CD,IAAAA,EAAAA,GAAAA;IAAsB,MAAA,EAAA,CAAA,CAAA;IAiBtEM,MAAAA,EAAAA,MAAAA;IAIDL,UAAAA,EAAAA,MAAAA;IACFH,OAAAA,EAXDO,OAWCP;IAL4BI,OAAAA,EAAAA;MAA2B,WAAA,EAAA,MAAA;IAOjDK,CAAAA;EACAC,CAAAA,CAAAA;;AAA6Hb,cARhIW,gBAAAA,SAAyBJ,2BAAAA,CAQuGP;EAAiCc,MAAAA,EAAAA,MAAAA;EAAW,WAAA,CAAA,MAAA,EAAA,MAAA;;kBAJ7KR;gBACFH;;iBAEMS,eAAAA,WAA0BZ;iBAC1Ba,gDAAgDC,6EAA6Ed,iCAAiCc"}
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 _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;EACpBJ,SAAAA,OAAAA,CAAAA,IAAAA,EAHjBA,yBAGiBA,CAAAA,EAAAA,OAAAA;EAA8CC,MAAAA,EAAAA,OAFvEK,KAEuEL;EAKzEO,UAAAA,CAAAA,GAAAA,EANGD,QAMHC,EAAAA,IAAAA,EANmBR,yBAMnBQ,CAAAA,EAN+CJ,OAM/CI,CAAAA,GAAAA,CAAAA;EALkGJ,QAAAA,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EAAvEJ,yBAAuEI,EAAAA,iBAAAA,EAAzBH,MAAyBG,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAAAA,OAAAA,CAAAA;IAN9CD,IAAAA,EAAAA,GAAAA;IAAsB,MAAA,EAAA,CAAA,CAAA;IAiBtEM,MAAAA,EAAAA,MAAAA;IAIDL,UAAAA,EAAAA,MAAAA;IACFJ,OAAAA,EAXDQ,OAWCR;IAL4BK,OAAAA,EAAAA;MAA2B,WAAA,EAAA,MAAA;IAOjDK,CAAAA;EACAC,CAAAA,CAAAA;;AAA6Hd,cARhIY,gBAAAA,SAAyBJ,2BAAAA,CAQuGR;EAAiCe,MAAAA,EAAAA,MAAAA;EAAW,WAAA,CAAA,MAAA,EAAA,MAAA;;kBAJ7KR;gBACFJ;;iBAEMU,eAAAA,WAA0Bb;iBAC1Bc,gDAAgDC,6EAA6Ef,iCAAiCe"}
package/dist/auth.js CHANGED
@@ -18,7 +18,8 @@ var GoogleAbstractedFetchClient = class {
18
18
  "Content-Type": "application/json",
19
19
  ...opts.headers ?? {},
20
20
  ...additionalHeaders ?? {}
21
- }
21
+ },
22
+ signal: opts.signal
22
23
  };
23
24
  if (opts.data !== void 0) if (typeof opts.data === "string") fetchOptions.body = opts.data;
24
25
  else fetchOptions.body = JSON.stringify(opts.data);
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","names":["res: Response","opts: GoogleAbstractedClientOps","url: string | undefined","additionalHeaders: Record<string, string>","fetchOptions: {\n method?: string;\n headers: Record<string, string>;\n body?: string;\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};\n\nexport interface GoogleAbstractedClient {\n request: (opts: GoogleAbstractedClientOps) => unknown;\n getProjectId: () => Promise<string>;\n get clientType(): string;\n}\n\nexport abstract class GoogleAbstractedFetchClient\n implements GoogleAbstractedClient\n{\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 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 } = {\n method: opts.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...(opts.headers ?? {}),\n ...(additionalHeaders ?? {}),\n },\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 res = await this._fetch(url, fetchOptions);\n\n if (!res.ok) {\n const resText = await res.text();\n const error = new Error(\n `Google request failed with status code ${res.status}: ${resText}`\n );\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (error as any).response = res;\n (error as any).details = {\n url,\n opts,\n fetchOptions,\n result: res,\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n throw error;\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":";;;AAqBA,IAAsB,8BAAtB,MAEA;CAOE,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;CAED,MAAM,SACJC,KACAD,MACAE,mBACA;AACA,MAAI,OAAO,KAAM,OAAM,IAAI,MAAM;EACjC,MAAMC,eAIF;GACF,QAAQ,KAAK;GACb,SAAS;IACP,gBAAgB;IAChB,GAAI,KAAK,WAAW,CAAE;IACtB,GAAI,qBAAqB,CAAE;GAC5B;EACF;AACD,MAAI,KAAK,SAAS,OAChB,KAAI,OAAO,KAAK,SAAS,UACvB,aAAa,OAAO,KAAK;OAEzB,aAAa,OAAO,KAAK,UAAU,KAAK,KAAK;EAIjD,MAAM,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;AAEhD,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,UAAU,MAAM,IAAI,MAAM;GAChC,MAAM,wBAAQ,IAAI,MAChB,CAAC,uCAAuC,EAAE,IAAI,OAAO,EAAE,EAAE,SAAS;GAGnE,MAAc,WAAW;GACzB,MAAc,UAAU;IACvB;IACA;IACA;IACA,QAAQ;GACT;AAED,SAAM;EACP;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,YAAYC,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQJ,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBK,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":["res: Response","opts: GoogleAbstractedClientOps","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\n implements GoogleAbstractedClient\n{\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 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 res = await this._fetch(url, fetchOptions);\n\n if (!res.ok) {\n const resText = await res.text();\n const error = new Error(\n `Google request failed with status code ${res.status}: ${resText}`\n );\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (error as any).response = res;\n (error as any).details = {\n url,\n opts,\n fetchOptions,\n result: res,\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n throw error;\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,MAEA;CAOE,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;CAED,MAAM,SACJC,KACAD,MACAE,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,MAAM,MAAM,KAAK,OAAO,KAAK,aAAa;AAEhD,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,UAAU,MAAM,IAAI,MAAM;GAChC,MAAM,wBAAQ,IAAI,MAChB,CAAC,uCAAuC,EAAE,IAAI,OAAO,EAAE,EAAE,SAAS;GAGnE,MAAc,WAAW;GACzB,MAAc,UAAU;IACvB;IACA;IACA;IACA,QAAQ;GACT;AAED,SAAM;EACP;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,YAAYC,QAAgB;EAC1B,OAAO;EACP,KAAK,SAAS;CACf;CAED,IAAI,aAAqB;AACvB,SAAO;CACR;CAED,eAAgC;AAC9B,QAAM,IAAI,MAAM;CAGjB;CAED,QAAQJ,MAA0C;EAChD,MAAM,aAAa,EACjB,kBAAkB,KAAK,OACxB;AACD,SAAO,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;CACjD;AACF;AAED,SAAgB,gBAAgBK,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"}
@@ -155,6 +155,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
155
155
  return require_common.copyAIModelParams(this, options);
156
156
  }
157
157
  async _generate(messages, options, runManager) {
158
+ options.signal?.throwIfAborted();
158
159
  const parameters = this.invocationParams(options);
159
160
  if (this.streaming) {
160
161
  const stream = this._streamResponseChunks(messages, options, runManager);
@@ -175,6 +176,7 @@ var ChatGoogleBase = class extends __langchain_core_language_models_chat_models.
175
176
  const stream = response.data;
176
177
  let usageMetadata;
177
178
  while (!stream.streamDone) {
179
+ if (options.signal?.aborted) return;
178
180
  const output = await stream.nextChunk();
179
181
  await runManager?.handleCustomEvent(`google-chunk-${this.constructor.name}`, { output });
180
182
  if (output && output.usageMetadata && this.streamUsage !== false && options.streamUsage !== false) usageMetadata = {
@@ -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 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 // Replace\n _llmType() {\n return \"chat_integration\";\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 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 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","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 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 // Replace\n _llmType() {\n return \"chat_integration\";\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,YACEC,QACAC,QACAC,QACAC,WACA;EACA,MAAM,QAAQ,QAAQ,QAAQ,UAAU;EACxC,KAAK,qCACH,QAAQ;CACX;CAED,IAAI,uBAAgC;AAClC,SAAO,OAAO,KAAK,uCAAuC,YACtD,CAAC,KAAK,qCACN,KAAK;CACV;CAED,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;CACR;CAED,6CAGE;AACA,MAAI,KAAK,UAAU,WAAW,aAAa,CACzC,QAAO;WACE,KAAK,UAAU,WAAW,aAAa,CAChD,QAAO;MAEP,QAAO;CAEV;CAED,kCACEC,WACwC;EACxC,MAAM,MAAM,UAAU;AACtB,MAAI,QAAQ,UAAa,QAAQ,KAC/B,QAAO,KAAK,4CAA4C;MAExD,QAAO;CAEV;CAED,iBAA8B;EAC5B,MAAMA,YACH,KAAK,aAAiC,CAAE;EAC3C,MAAM,6BACJ,KAAK,kCAAkC,UAAU;EACnD,MAAMC,eAAgC;GACpC,sBAAsB,KAAK;GAC3B;GACA,GAAG;EACJ;AACD,SAAOC,4BAAa,aAAa;CAClC;CAED,IAAI,MAAmB;AACrB,UAAQ,KAAK,SAAb;GACE,KAAK,SACH,QAAO,KAAK,gBAAgB;GAC9B,QACE,QAAO,MAAM;EAChB;CACF;AACF;;;;AAgBD,IAAsB,iBAAtB,cACUC,2DAEV;CAEE,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,aAAoD;AACtD,SAAO,EACL,aAAa,sBACd;CACF;CAED,kBAAkB;CAGlB;CAEA,YAAY;CAEZ;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,gBAA0B,CAAE;CAE5B;CAEA,cAAsB;CAEtB,iBAA0C,CAAE;CAE5C;CAGA;CAEA;CAEA;CAEA,cAAc;CAEd,YAAY;CAEZ;CAEA,AAAU;CAEV,AAAU;CAEV,YAAYC,QAA2C;EACrD,MAAMC,oCAAa,OAAO,CAAC;EAE3BC,8CAA+B,QAAQ,KAAK;EAC5C,KAAK,gBACH,QAAQ,iBAAiB,IAAIC;EAC/B,KAAK,cAAc,QAAQ,eAAe,KAAK;EAC/C,MAAM,SAAS,KAAK,YAAY,OAAO;EACvC,KAAK,gBAAgB,UAAU,CAAE,GAAE,OAAO;CAC3C;CAED,YAAYC,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;EAClB;CACF;CAMD,kBAAkBC,QAAwC;AACxD,SAAO,IAAIC,8BAAiB;CAC7B;CAED,YAAYC,QAAgE;AAC1E,SAAO,QAAQ,iEAAiC,iBAAiB;CAClE;CAED,YACEA,QACwB;EACxB,MAAM,SAAS,KAAK,YAAY,OAAO;AACvC,MAAI,OACF,QAAO,KAAK,kBAAkB,OAAO;MAErC,QAAO,KAAK,sBAAsB,OAAO;CAE5C;CAED,gBACEC,QACAd,QACA;EACA,KAAK,aAAa,IAAI,eACpB;GAAE,GAAG;GAAQ,GAAG;EAAM,GACtB,KAAK,QACL,QACA;EAGF,KAAK,qBAAqB,IAAI,eAC5B;GAAE,GAAG;GAAQ,GAAG;EAAM,GACtB,KAAK,QACL,QACA;CAEH;CAED,IAAI,WAA+B;AACjC,SAAO,KAAK,WAAW;CACxB;CAED,AAAS,UACPe,OACAC,QAKA;AACA,SAAO,KAAK,WAAW;GAAE,OAAOC,oCAAqB,MAAM;GAAE,GAAG;EAAQ,EAAC;CAC1E;CAGD,WAAW;AACT,SAAO;CACR;;;;CAKD,AAAS,iBAAiBC,SAAqC;AAC7D,SAAOC,iCAAkB,MAAM,QAAQ;CACxC;CAED,MAAM,UACJC,UACAV,SACAW,YACqB;EACrB,QAAQ,QAAQ,gBAAgB;EAChC,MAAM,aAAa,KAAK,iBAAiB,QAAQ;AACjD,MAAI,KAAK,WAAW;GAClB,MAAM,SAAS,KAAK,sBAAsB,UAAU,SAAS,WAAW;GACxE,IAAIC,aAAyC;AAC7C,cAAW,MAAMC,WAAS,QACxB,aAAa,CAAC,aAAaA,oDAAe,YAAYA,QAAM;AAE9D,OAAI,CAAC,WACH,OAAM,IAAI,MAAM;AAElB,UAAO,EACL,aAAa,CAAC,UAAW,EAC1B;EACF;EAED,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,OACF,MAAM,YAAY,kBAAkB,MAAM,QAAQ,GAAG;AAEvD,SAAO;CACR;CAED,OAAO,sBACLC,WACAd,SACAe,YACqC;EAErC,MAAM,aAAa,KAAK,iBAAiB,QAAQ;EACjD,MAAM,WAAW,MAAM,KAAK,mBAAmB,QAC7C,WACA,YACA,SACA,WACD;EAGD,MAAM,SAAS,SAAS;EACxB,IAAIC;AAIJ,SAAO,CAAC,OAAO,YAAY;AACzB,OAAI,QAAQ,QAAQ,QAClB;GAEF,MAAM,SAAS,MAAM,OAAO,WAAW;GACvC,MAAM,YAAY,kBAChB,CAAC,aAAa,EAAE,KAAK,YAAY,MAAM,EACvC,EACE,OACD,EACF;AACD,OACE,UACA,OAAO,iBACP,KAAK,gBAAgB,SACrB,QAAQ,gBAAgB,OAExB,gBAAgB;IACd,cAAc,OAAO,cAAc;IACnC,eAAe,OAAO,cAAc;IACpC,cAAc,OAAO,cAAc;GACpC;GAEH,MAAM,QACJ,WAAW,OACP,KAAK,WAAW,IAAI,yBAAyB,EAAE,MAAM,OAAQ,EAAC,GAC9D,IAAIC,6CAAoB;IACtB,MAAM;IACN,gBAAgB,EAAE,cAAc,OAAQ;IACxC,SAAS,IAAIC,yCAAe;KAC1B,SAAS;KACT,gBAAgB;IACjB;GACF;AACP,OAAI,OAAO;IACT,MAAM;IACN,MAAM,YAAY,kBAChB,MAAM,QAAQ,IACd,QACA,QACA,QACA,QACA,EAAE,MAAO,EACV;GACF;EACF;CACF;;CAGD,oBAAoB;AAClB,SAAO,CAAE;CACV;;;;;;;;;;CAWD,IAAI,UAAwB;AAC1B,SAAOC,yBAAS,KAAK,UAAU,CAAE;CAClC;CAwBD,qBAIEC,cAIAC,QAMI;EAEJ,MAAMC,SACJ;EACF,MAAM,OAAO,QAAQ;EACrB,MAAM,SAAS,QAAQ;EACvB,MAAM,aAAa,QAAQ;AAC3B,MAAI,WAAW,WACb,OAAM,IAAI,MACR,CAAC,mEAAmE,CAAC;EAIzE,IAAI;EACJ,IAAIC;AACJ,MAAI,WAAW,mBAAmB;GAChC,IAAI,eAAe,QAAQ;GAC3B,IAAIC;AACJ,4DAAuB,OAAO,EAAE;IAC9B,MAAM,aAAaC,0DAAyB,OAAO;IACnD,QAAQ,CACN,EACE,sBAAsB,CACpB;KACE,MAAM;KACN,aACE,WAAW,eAAe;KAC5B,YAAY;IACb,CACF,EACF,CACF;IACD,eAAe,IAAIC,sEAAyB;KAC1C,cAAc;KACd,SAAS;KACT,WAAW;IACZ;GACF,OAAM;IACL,IAAIC;AACJ,QACE,OAAO,OAAO,SAAS,YACvB,OAAO,OAAO,eAAe,YAC7B,OAAO,cAAc,MACrB;KACA,2BAA2B;KAC3B,eAAe,OAAO;IACvB,OAAM;KAEL,MAAMC,aACJC,4DAA2B,OAAO;KACpC,2BAA2B;MACzB,MAAM;MACN,aAAa,OAAO,eAAe;MACnC;KACD;IACF;IACD,QAAQ,CACN,EACE,sBAAsB,CAAC,wBAAyB,EACjD,CACF;IACD,eAAe,IAAIH,sEAAoC;KACrD,cAAc;KACd,SAAS;IACV;GACF;GACD,MAAM,KAAK,UAAU,MAAM,CAAC,WAAW,EAAE,aAAa,aAAc,EAAC;EACtE,OAAM;GAEL,MAAM,aAAaD,0DAAyB,OAAO;GACnD,MAAM,KAAK,WAAW,EACpB,gBAAgB,WACjB,EAAC;GACF,eAAe,IAAIK;EACpB;AAED,MAAI,CAAC,WACH,QAAO,IAAI,KAAK,aAAa,CAAC,WAAW,EACvC,SAAS,6BACV,EAAC;EAGJ,MAAM,eAAeC,+CAAoB,OAAO,EAE9C,QAAQ,CAACC,OAAYC,aAAW,aAAa,OAAO,MAAM,KAAKA,SAAO,CACvE,EAAC;EACF,MAAM,aAAaF,+CAAoB,OAAO,EAC5C,QAAQ,MAAM,KACf,EAAC;EACF,MAAM,qBAAqB,aAAa,cAAc,EACpD,WAAW,CAAC,UAAW,EACxB,EAAC;AACF,SAAOG,4CAAiB,KAGtB,CACA,EACE,KAAK,IACN,GACD,kBACD,EAAC,CAAC,WAAW,EACZ,SAAS,2BACV,EAAC;CACH;AACF"}
@@ -154,6 +154,7 @@ var ChatGoogleBase = class extends BaseChatModel {
154
154
  return copyAIModelParams(this, options);
155
155
  }
156
156
  async _generate(messages, options, runManager) {
157
+ options.signal?.throwIfAborted();
157
158
  const parameters = this.invocationParams(options);
158
159
  if (this.streaming) {
159
160
  const stream = this._streamResponseChunks(messages, options, runManager);
@@ -174,6 +175,7 @@ var ChatGoogleBase = class extends BaseChatModel {
174
175
  const stream = response.data;
175
176
  let usageMetadata;
176
177
  while (!stream.streamDone) {
178
+ if (options.signal?.aborted) return;
177
179
  const output = await stream.nextChunk();
178
180
  await runManager?.handleCustomEvent(`google-chunk-${this.constructor.name}`, { output });
179
181
  if (output && output.usageMetadata && this.streamUsage !== false && options.streamUsage !== false) usageMetadata = {
@@ -1 +1 @@
1
- {"version":3,"file":"chat_models.js","names":["fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","caller: AsyncCaller","client: GoogleAbstractedClient","streaming: boolean","apiConfig: GeminiAPIConfig","geminiConfig: GeminiAPIConfig","fields?: ChatGoogleBaseInput<AuthOptions>","options: this[\"ParsedCallOptions\"]","apiKey: string","fields?: GoogleAIBaseLLMInput<AuthOptions>","fields: GoogleBaseLLMInput<AuthOptions>","tools: GoogleAIToolType[]","kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>","options?: this[\"ParsedCallOptions\"]","messages: BaseMessage[]","runManager: CallbackManagerForLLMRun | undefined","finalChunk: ChatGenerationChunk | null","chunk","_messages: BaseMessage[]","runManager?: CallbackManagerForLLMRun","usageMetadata: UsageMetadata | undefined","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[]","geminiFunctionDefinition: GeminiFunctionDeclaration","parameters: GeminiJsonSchema","input: any","config"],"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 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 // Replace\n _llmType() {\n return \"chat_integration\";\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 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 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.js","names":["fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","caller: AsyncCaller","client: GoogleAbstractedClient","streaming: boolean","apiConfig: GeminiAPIConfig","geminiConfig: GeminiAPIConfig","fields?: ChatGoogleBaseInput<AuthOptions>","options: this[\"ParsedCallOptions\"]","apiKey: string","fields?: GoogleAIBaseLLMInput<AuthOptions>","fields: GoogleBaseLLMInput<AuthOptions>","tools: GoogleAIToolType[]","kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>","options?: this[\"ParsedCallOptions\"]","messages: BaseMessage[]","runManager: CallbackManagerForLLMRun | undefined","finalChunk: ChatGenerationChunk | null","chunk","_messages: BaseMessage[]","runManager?: CallbackManagerForLLMRun","usageMetadata: UsageMetadata | undefined","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[]","geminiFunctionDefinition: GeminiFunctionDeclaration","parameters: GeminiJsonSchema","input: any","config"],"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 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 // Replace\n _llmType() {\n return \"chat_integration\";\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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"}
@@ -41,7 +41,7 @@ var GoogleConnection = class {
41
41
  async additionalHeaders() {
42
42
  return {};
43
43
  }
44
- async _buildOpts(data, _options, requestHeaders = {}) {
44
+ async _buildOpts(data, options, requestHeaders = {}) {
45
45
  const url = await this.buildUrl();
46
46
  const method = this.buildMethod();
47
47
  const infoHeaders = await this._clientInfoHeaders() ?? {};
@@ -54,7 +54,8 @@ var GoogleConnection = class {
54
54
  const opts = {
55
55
  url,
56
56
  method,
57
- headers
57
+ headers,
58
+ signal: options?.signal
58
59
  };
59
60
  if (data && method === "POST") opts.data = data;
60
61
  if (this.streaming) opts.responseType = "stream";
@@ -1 +1 @@
1
- {"version":3,"file":"connection.cjs","names":["caller: AsyncCaller","client: GoogleAbstractedClient","streaming?: boolean","data: unknown | undefined","_options: CallOptions","requestHeaders: Record<string, string>","opts: GoogleAbstractedClientOps","options: CallOptions","response: unknown","fields: GoogleConnectionParams<AuthOptions> | undefined","fields: GoogleConnectionParams<any> | undefined","fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","modelToFamily","modelToPublisher","getGeminiAPI","getAnthropicAPI","input: InputType","parameters: GoogleAIModelRequestParams","runManager?: BaseRunManager","streamingParameters: GoogleAIModelRequestParams","input: MessageType","BaseCallbackHandler","eventName: string","data: any","runId: string","tags?: string[]","metadata?: Record<string, any>","_eventInfo: GoogleCustomEventInfo","_runId: string","_metadata?: Record<string, any>","_eventName: string","_tags?: string[]"],"sources":["../src/connection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport {\n AsyncCaller,\n AsyncCallerCallOptions,\n} from \"@langchain/core/utils/async_caller\";\nimport { getRuntimeEnvironment } from \"@langchain/core/utils/env\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type {\n GoogleAIBaseLLMInput,\n GoogleConnectionParams,\n GooglePlatformType,\n GoogleResponse,\n GoogleLLMResponse,\n GoogleAIModelRequestParams,\n GoogleRawResponse,\n GoogleAIAPI,\n VertexModelFamily,\n GoogleAIAPIConfig,\n AnthropicAPIConfig,\n GeminiAPIConfig,\n GoogleModelParams,\n} from \"./types.js\";\nimport {\n GoogleAbstractedClient,\n GoogleAbstractedClientOps,\n GoogleAbstractedClientOpsMethod,\n} from \"./auth.js\";\nimport {\n getGeminiAPI,\n modelToFamily,\n modelToPublisher,\n} from \"./utils/index.js\";\nimport { getAnthropicAPI } from \"./utils/anthropic.js\";\n\nexport abstract class GoogleConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n> {\n caller: AsyncCaller;\n\n client: GoogleAbstractedClient;\n\n streaming: boolean;\n\n constructor(\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n this.caller = caller;\n this.client = client;\n this.streaming = streaming ?? false;\n }\n\n abstract buildUrl(): Promise<string>;\n\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n\n async _clientInfoHeaders(): Promise<Record<string, string>> {\n const { userAgent, clientLibraryVersion } = await this._getClientInfo();\n return {\n \"User-Agent\": userAgent,\n \"Client-Info\": clientLibraryVersion,\n };\n }\n\n async _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }> {\n const env = await getRuntimeEnvironment();\n const langchain = env?.library ?? \"langchain-js\";\n // TODO: Add an API for getting the current LangChain version\n const langchainVersion = \"0\";\n const moduleName = await this._moduleName();\n let clientLibraryVersion = `${langchain}/${langchainVersion}`;\n if (moduleName && moduleName.length) {\n clientLibraryVersion = `${clientLibraryVersion}-${moduleName}`;\n }\n return {\n userAgent: clientLibraryVersion,\n clientLibraryVersion: `${langchainVersion}-${moduleName}`,\n };\n }\n\n async _moduleName(): Promise<string> {\n return this.constructor.name;\n }\n\n async additionalHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const url = await this.buildUrl();\n const method = this.buildMethod();\n const infoHeaders = (await this._clientInfoHeaders()) ?? {};\n const additionalHeaders = (await this.additionalHeaders()) ?? {};\n const headers = {\n ...infoHeaders,\n ...additionalHeaders,\n ...requestHeaders,\n };\n\n const opts: GoogleAbstractedClientOps = {\n url,\n method,\n headers,\n };\n if (data && method === \"POST\") {\n opts.data = data;\n }\n if (this.streaming) {\n opts.responseType = \"stream\";\n } else {\n opts.responseType = \"json\";\n }\n return opts;\n }\n\n async _request(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<ResponseType> {\n const opts = await this._buildOpts(data, options, requestHeaders);\n const callResponse = await this.caller.callWithOptions(\n { signal: options?.signal },\n async () => this.client.request(opts)\n );\n const response: unknown = callResponse; // Done for typecast safety, I guess\n return <ResponseType>response;\n }\n}\n\nexport abstract class GoogleHostConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n AuthOptions,\n >\n extends GoogleConnection<CallOptions, ResponseType>\n implements GoogleConnectionParams<AuthOptions>\n{\n // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\n platformType: GooglePlatformType | undefined;\n\n _endpoint: string | undefined;\n\n _location: string | undefined;\n\n _apiVersion: string | undefined;\n\n constructor(\n fields: GoogleConnectionParams<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n super(caller, client, streaming);\n this.caller = caller;\n\n this.platformType = this.fieldPlatformType(fields);\n this._endpoint = fields?.endpoint;\n this._location = fields?.location;\n this._apiVersion = fields?.apiVersion;\n this.client = client;\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n if (typeof fields === \"undefined\") {\n return undefined;\n }\n if (typeof fields.platformType !== \"undefined\") {\n return fields.platformType;\n }\n if (fields.vertexai === true) {\n return \"gcp\";\n }\n return undefined;\n }\n\n get platform(): GooglePlatformType {\n return this.platformType ?? this.computedPlatformType;\n }\n\n get computedPlatformType(): GooglePlatformType {\n return \"gcp\";\n }\n\n get computedApiVersion(): string {\n return \"v1\";\n }\n\n get apiVersion(): string {\n return this._apiVersion ?? this.computedApiVersion;\n }\n\n get location(): string {\n return this._location ?? this.computedLocation;\n }\n\n get computedLocation(): string {\n return \"us-central1\";\n }\n\n get endpoint(): string {\n return this._endpoint ?? this.computedEndpoint;\n }\n\n get computedEndpoint(): string {\n if (this.location === \"global\") {\n return \"aiplatform.googleapis.com\";\n } else {\n return `${this.location}-aiplatform.googleapis.com`;\n }\n }\n\n buildMethod(): GoogleAbstractedClientOpsMethod {\n return \"POST\";\n }\n}\n\nexport abstract class GoogleRawConnection<\n CallOptions extends AsyncCallerCallOptions,\n AuthOptions,\n> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const opts = await super._buildOpts(data, _options, requestHeaders);\n opts.responseType = \"blob\";\n return opts;\n }\n}\n\nexport abstract class GoogleAIConnection<\n CallOptions extends AsyncCallerCallOptions,\n InputType,\n AuthOptions,\n ResponseType extends GoogleResponse,\n >\n extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions>\n implements GoogleAIBaseLLMInput<AuthOptions>\n{\n model: string;\n\n modelName: string;\n\n client: GoogleAbstractedClient;\n\n _apiName?: string;\n\n apiConfig?: GoogleAIAPIConfig;\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.client = client;\n this.modelName = fields?.model ?? fields?.modelName ?? this.model;\n this.model = this.modelName;\n\n this._apiName = fields?.apiName;\n this.apiConfig = {\n safetyHandler: fields?.safetyHandler, // For backwards compatibility\n ...fields?.apiConfig,\n };\n }\n\n get modelFamily(): VertexModelFamily {\n return modelToFamily(this.model);\n }\n\n get modelPublisher(): string {\n return modelToPublisher(this.model);\n }\n\n get computedAPIName(): string {\n // At least at the moment, model publishers and APIs map the same\n return this.modelPublisher;\n }\n\n get apiName(): string {\n return this._apiName ?? this.computedAPIName;\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n case \"gemma\": // TODO: Is this true?\n return getGeminiAPI(this.apiConfig as GeminiAPIConfig);\n case \"anthropic\":\n return getAnthropicAPI(this.apiConfig as AnthropicAPIConfig);\n default:\n throw new Error(`Unknown API: ${this.apiName}`);\n }\n }\n\n get isApiKey(): boolean {\n return this.client.clientType === \"apiKey\";\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n const ret = super.fieldPlatformType(fields);\n if (typeof ret !== \"undefined\") {\n return ret;\n }\n if (fields?.vertexai === false) {\n return \"gai\";\n }\n return undefined;\n }\n\n get computedPlatformType(): GooglePlatformType {\n // This is not a completely correct assumption, since GCP can\n // have an API Key. But if so, then people need to set the platform\n // type explicitly.\n if (this.isApiKey) {\n return \"gai\";\n } else {\n return \"gcp\";\n }\n }\n\n get computedApiVersion(): string {\n switch (this.platform) {\n case \"gai\":\n return \"v1beta\";\n default:\n return \"v1\";\n }\n }\n\n get computedLocation(): string {\n switch (this.apiName) {\n case \"google\":\n return super.computedLocation;\n case \"anthropic\":\n return \"us-east5\";\n default:\n throw new Error(\n `Unknown apiName: ${this.apiName}. Can't get location.`\n );\n }\n }\n\n abstract buildUrlMethod(): Promise<string>;\n\n async buildUrlGenerativeLanguage(): Promise<string> {\n const method = await this.buildUrlMethod();\n const url = `https://generativelanguage.googleapis.com/${this.apiVersion}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexExpress(): Promise<string> {\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://aiplatform.googleapis.com/${this.apiVersion}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexLocation(): Promise<string> {\n const projectId = await this.client.getProjectId();\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://${this.endpoint}/${this.apiVersion}/projects/${projectId}/locations/${this.location}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertex(): Promise<string> {\n if (this.isApiKey) {\n return this.buildUrlVertexExpress();\n } else {\n return this.buildUrlVertexLocation();\n }\n }\n\n async buildUrl(): Promise<string> {\n switch (this.platform) {\n case \"gai\":\n return this.buildUrlGenerativeLanguage();\n default:\n return this.buildUrlVertex();\n }\n }\n\n abstract formatData(\n input: InputType,\n parameters: GoogleModelParams\n ): Promise<unknown>;\n\n async request(\n input: InputType,\n parameters: GoogleAIModelRequestParams,\n\n options: CallOptions,\n runManager?: BaseRunManager\n ): Promise<ResponseType> {\n const moduleName = this.constructor.name;\n const streamingParameters: GoogleAIModelRequestParams = {\n ...parameters,\n streaming: this.streaming,\n };\n const data = await this.formatData(input, streamingParameters);\n\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n data,\n parameters: streamingParameters,\n options,\n connection: {\n ...this,\n url: await this.buildUrl(),\n urlMethod: await this.buildUrlMethod(),\n modelFamily: this.modelFamily,\n modelPublisher: this.modelPublisher,\n computedPlatformType: this.computedPlatformType,\n },\n });\n\n const response = await this._request(data, options);\n\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n response,\n });\n\n return response;\n }\n}\n\nexport abstract class AbstractGoogleLLMConnection<\n MessageType,\n AuthOptions,\n> extends GoogleAIConnection<\n BaseLanguageModelCallOptions,\n MessageType,\n AuthOptions,\n GoogleLLMResponse\n> {\n async buildUrlMethodGemini(): Promise<string> {\n return this.streaming ? \"streamGenerateContent\" : \"generateContent\";\n }\n\n async buildUrlMethodClaude(): Promise<string> {\n return this.streaming ? \"streamRawPredict\" : \"rawPredict\";\n }\n\n async buildUrlMethod(): Promise<string> {\n switch (this.modelFamily) {\n case \"gemini\":\n case \"gemma\": // TODO: Is this true?\n return this.buildUrlMethodGemini();\n case \"claude\":\n return this.buildUrlMethodClaude();\n default:\n throw new Error(`Unknown model family: ${this.modelFamily}`);\n }\n }\n\n async formatData(\n input: MessageType,\n parameters: GoogleAIModelRequestParams\n ): Promise<unknown> {\n // Filter out labels for non-Vertex AI platforms (labels are only supported on Vertex AI)\n let filteredParameters = parameters;\n if (parameters.labels && this.platform !== \"gcp\") {\n const { labels, ...paramsWithoutLabels } = parameters;\n filteredParameters = paramsWithoutLabels;\n }\n\n return this.api.formatData(input, filteredParameters);\n }\n}\n\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\n\nexport abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo {\n const names = eventName.split(\"-\");\n return {\n subEvent: names[1],\n module: names[2],\n };\n }\n\n abstract handleCustomRequestEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomResponseEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomChunkEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n handleCustomEvent(\n eventName: string,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any {\n if (!eventName) {\n return undefined;\n }\n const eventInfo = this.customEventInfo(eventName);\n switch (eventInfo.subEvent) {\n case \"request\":\n return this.handleCustomRequestEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"response\":\n return this.handleCustomResponseEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"chunk\":\n return this.handleCustomChunkEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n default:\n console.error(\n `Unexpected eventInfo for ${eventName} ${JSON.stringify(\n eventInfo,\n null,\n 1\n )}`\n );\n }\n }\n}\n\nexport class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string = \"GoogleRequestLogger\";\n\n log(eventName: string, data: any, tags?: string[]): undefined {\n const tagStr = tags ? `[${tags}]` : \"[]\";\n console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);\n }\n\n handleCustomRequestEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomResponseEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomChunkEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n}\n\nexport class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name = \"GoogleRequestRecorder\";\n\n request: any = {};\n\n response: any = {};\n\n chunk: any[] = [];\n\n handleCustomRequestEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.request = data;\n }\n\n handleCustomResponseEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.response = data;\n }\n\n handleCustomChunkEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.chunk.push(data);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"connection.cjs","names":["caller: AsyncCaller","client: GoogleAbstractedClient","streaming?: boolean","data: unknown | undefined","options: CallOptions","requestHeaders: Record<string, string>","opts: GoogleAbstractedClientOps","response: unknown","fields: GoogleConnectionParams<AuthOptions> | undefined","fields: GoogleConnectionParams<any> | undefined","_options: CallOptions","fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","modelToFamily","modelToPublisher","getGeminiAPI","getAnthropicAPI","input: InputType","parameters: GoogleAIModelRequestParams","runManager?: BaseRunManager","streamingParameters: GoogleAIModelRequestParams","input: MessageType","BaseCallbackHandler","eventName: string","data: any","runId: string","tags?: string[]","metadata?: Record<string, any>","_eventInfo: GoogleCustomEventInfo","_runId: string","_metadata?: Record<string, any>","_eventName: string","_tags?: string[]"],"sources":["../src/connection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport {\n AsyncCaller,\n AsyncCallerCallOptions,\n} from \"@langchain/core/utils/async_caller\";\nimport { getRuntimeEnvironment } from \"@langchain/core/utils/env\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type {\n GoogleAIBaseLLMInput,\n GoogleConnectionParams,\n GooglePlatformType,\n GoogleResponse,\n GoogleLLMResponse,\n GoogleAIModelRequestParams,\n GoogleRawResponse,\n GoogleAIAPI,\n VertexModelFamily,\n GoogleAIAPIConfig,\n AnthropicAPIConfig,\n GeminiAPIConfig,\n GoogleModelParams,\n} from \"./types.js\";\nimport {\n GoogleAbstractedClient,\n GoogleAbstractedClientOps,\n GoogleAbstractedClientOpsMethod,\n} from \"./auth.js\";\nimport {\n getGeminiAPI,\n modelToFamily,\n modelToPublisher,\n} from \"./utils/index.js\";\nimport { getAnthropicAPI } from \"./utils/anthropic.js\";\n\nexport abstract class GoogleConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n> {\n caller: AsyncCaller;\n\n client: GoogleAbstractedClient;\n\n streaming: boolean;\n\n constructor(\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n this.caller = caller;\n this.client = client;\n this.streaming = streaming ?? false;\n }\n\n abstract buildUrl(): Promise<string>;\n\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n\n async _clientInfoHeaders(): Promise<Record<string, string>> {\n const { userAgent, clientLibraryVersion } = await this._getClientInfo();\n return {\n \"User-Agent\": userAgent,\n \"Client-Info\": clientLibraryVersion,\n };\n }\n\n async _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }> {\n const env = await getRuntimeEnvironment();\n const langchain = env?.library ?? \"langchain-js\";\n // TODO: Add an API for getting the current LangChain version\n const langchainVersion = \"0\";\n const moduleName = await this._moduleName();\n let clientLibraryVersion = `${langchain}/${langchainVersion}`;\n if (moduleName && moduleName.length) {\n clientLibraryVersion = `${clientLibraryVersion}-${moduleName}`;\n }\n return {\n userAgent: clientLibraryVersion,\n clientLibraryVersion: `${langchainVersion}-${moduleName}`,\n };\n }\n\n async _moduleName(): Promise<string> {\n return this.constructor.name;\n }\n\n async additionalHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async _buildOpts(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const url = await this.buildUrl();\n const method = this.buildMethod();\n const infoHeaders = (await this._clientInfoHeaders()) ?? {};\n const additionalHeaders = (await this.additionalHeaders()) ?? {};\n const headers = {\n ...infoHeaders,\n ...additionalHeaders,\n ...requestHeaders,\n };\n\n const opts: GoogleAbstractedClientOps = {\n url,\n method,\n headers,\n signal: options?.signal,\n };\n if (data && method === \"POST\") {\n opts.data = data;\n }\n if (this.streaming) {\n opts.responseType = \"stream\";\n } else {\n opts.responseType = \"json\";\n }\n return opts;\n }\n\n async _request(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<ResponseType> {\n const opts = await this._buildOpts(data, options, requestHeaders);\n const callResponse = await this.caller.callWithOptions(\n { signal: options?.signal },\n async () => this.client.request(opts)\n );\n const response: unknown = callResponse; // Done for typecast safety, I guess\n return <ResponseType>response;\n }\n}\n\nexport abstract class GoogleHostConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n AuthOptions,\n >\n extends GoogleConnection<CallOptions, ResponseType>\n implements GoogleConnectionParams<AuthOptions>\n{\n // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\n platformType: GooglePlatformType | undefined;\n\n _endpoint: string | undefined;\n\n _location: string | undefined;\n\n _apiVersion: string | undefined;\n\n constructor(\n fields: GoogleConnectionParams<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n super(caller, client, streaming);\n this.caller = caller;\n\n this.platformType = this.fieldPlatformType(fields);\n this._endpoint = fields?.endpoint;\n this._location = fields?.location;\n this._apiVersion = fields?.apiVersion;\n this.client = client;\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n if (typeof fields === \"undefined\") {\n return undefined;\n }\n if (typeof fields.platformType !== \"undefined\") {\n return fields.platformType;\n }\n if (fields.vertexai === true) {\n return \"gcp\";\n }\n return undefined;\n }\n\n get platform(): GooglePlatformType {\n return this.platformType ?? this.computedPlatformType;\n }\n\n get computedPlatformType(): GooglePlatformType {\n return \"gcp\";\n }\n\n get computedApiVersion(): string {\n return \"v1\";\n }\n\n get apiVersion(): string {\n return this._apiVersion ?? this.computedApiVersion;\n }\n\n get location(): string {\n return this._location ?? this.computedLocation;\n }\n\n get computedLocation(): string {\n return \"us-central1\";\n }\n\n get endpoint(): string {\n return this._endpoint ?? this.computedEndpoint;\n }\n\n get computedEndpoint(): string {\n if (this.location === \"global\") {\n return \"aiplatform.googleapis.com\";\n } else {\n return `${this.location}-aiplatform.googleapis.com`;\n }\n }\n\n buildMethod(): GoogleAbstractedClientOpsMethod {\n return \"POST\";\n }\n}\n\nexport abstract class GoogleRawConnection<\n CallOptions extends AsyncCallerCallOptions,\n AuthOptions,\n> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const opts = await super._buildOpts(data, _options, requestHeaders);\n opts.responseType = \"blob\";\n return opts;\n }\n}\n\nexport abstract class GoogleAIConnection<\n CallOptions extends AsyncCallerCallOptions,\n InputType,\n AuthOptions,\n ResponseType extends GoogleResponse,\n >\n extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions>\n implements GoogleAIBaseLLMInput<AuthOptions>\n{\n model: string;\n\n modelName: string;\n\n client: GoogleAbstractedClient;\n\n _apiName?: string;\n\n apiConfig?: GoogleAIAPIConfig;\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.client = client;\n this.modelName = fields?.model ?? fields?.modelName ?? this.model;\n this.model = this.modelName;\n\n this._apiName = fields?.apiName;\n this.apiConfig = {\n safetyHandler: fields?.safetyHandler, // For backwards compatibility\n ...fields?.apiConfig,\n };\n }\n\n get modelFamily(): VertexModelFamily {\n return modelToFamily(this.model);\n }\n\n get modelPublisher(): string {\n return modelToPublisher(this.model);\n }\n\n get computedAPIName(): string {\n // At least at the moment, model publishers and APIs map the same\n return this.modelPublisher;\n }\n\n get apiName(): string {\n return this._apiName ?? this.computedAPIName;\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n case \"gemma\": // TODO: Is this true?\n return getGeminiAPI(this.apiConfig as GeminiAPIConfig);\n case \"anthropic\":\n return getAnthropicAPI(this.apiConfig as AnthropicAPIConfig);\n default:\n throw new Error(`Unknown API: ${this.apiName}`);\n }\n }\n\n get isApiKey(): boolean {\n return this.client.clientType === \"apiKey\";\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n const ret = super.fieldPlatformType(fields);\n if (typeof ret !== \"undefined\") {\n return ret;\n }\n if (fields?.vertexai === false) {\n return \"gai\";\n }\n return undefined;\n }\n\n get computedPlatformType(): GooglePlatformType {\n // This is not a completely correct assumption, since GCP can\n // have an API Key. But if so, then people need to set the platform\n // type explicitly.\n if (this.isApiKey) {\n return \"gai\";\n } else {\n return \"gcp\";\n }\n }\n\n get computedApiVersion(): string {\n switch (this.platform) {\n case \"gai\":\n return \"v1beta\";\n default:\n return \"v1\";\n }\n }\n\n get computedLocation(): string {\n switch (this.apiName) {\n case \"google\":\n return super.computedLocation;\n case \"anthropic\":\n return \"us-east5\";\n default:\n throw new Error(\n `Unknown apiName: ${this.apiName}. Can't get location.`\n );\n }\n }\n\n abstract buildUrlMethod(): Promise<string>;\n\n async buildUrlGenerativeLanguage(): Promise<string> {\n const method = await this.buildUrlMethod();\n const url = `https://generativelanguage.googleapis.com/${this.apiVersion}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexExpress(): Promise<string> {\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://aiplatform.googleapis.com/${this.apiVersion}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexLocation(): Promise<string> {\n const projectId = await this.client.getProjectId();\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://${this.endpoint}/${this.apiVersion}/projects/${projectId}/locations/${this.location}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertex(): Promise<string> {\n if (this.isApiKey) {\n return this.buildUrlVertexExpress();\n } else {\n return this.buildUrlVertexLocation();\n }\n }\n\n async buildUrl(): Promise<string> {\n switch (this.platform) {\n case \"gai\":\n return this.buildUrlGenerativeLanguage();\n default:\n return this.buildUrlVertex();\n }\n }\n\n abstract formatData(\n input: InputType,\n parameters: GoogleModelParams\n ): Promise<unknown>;\n\n async request(\n input: InputType,\n parameters: GoogleAIModelRequestParams,\n\n options: CallOptions,\n runManager?: BaseRunManager\n ): Promise<ResponseType> {\n const moduleName = this.constructor.name;\n const streamingParameters: GoogleAIModelRequestParams = {\n ...parameters,\n streaming: this.streaming,\n };\n const data = await this.formatData(input, streamingParameters);\n\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n data,\n parameters: streamingParameters,\n options,\n connection: {\n ...this,\n url: await this.buildUrl(),\n urlMethod: await this.buildUrlMethod(),\n modelFamily: this.modelFamily,\n modelPublisher: this.modelPublisher,\n computedPlatformType: this.computedPlatformType,\n },\n });\n\n const response = await this._request(data, options);\n\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n response,\n });\n\n return response;\n }\n}\n\nexport abstract class AbstractGoogleLLMConnection<\n MessageType,\n AuthOptions,\n> extends GoogleAIConnection<\n BaseLanguageModelCallOptions,\n MessageType,\n AuthOptions,\n GoogleLLMResponse\n> {\n async buildUrlMethodGemini(): Promise<string> {\n return this.streaming ? \"streamGenerateContent\" : \"generateContent\";\n }\n\n async buildUrlMethodClaude(): Promise<string> {\n return this.streaming ? \"streamRawPredict\" : \"rawPredict\";\n }\n\n async buildUrlMethod(): Promise<string> {\n switch (this.modelFamily) {\n case \"gemini\":\n case \"gemma\": // TODO: Is this true?\n return this.buildUrlMethodGemini();\n case \"claude\":\n return this.buildUrlMethodClaude();\n default:\n throw new Error(`Unknown model family: ${this.modelFamily}`);\n }\n }\n\n async formatData(\n input: MessageType,\n parameters: GoogleAIModelRequestParams\n ): Promise<unknown> {\n // Filter out labels for non-Vertex AI platforms (labels are only supported on Vertex AI)\n let filteredParameters = parameters;\n if (parameters.labels && this.platform !== \"gcp\") {\n const { labels, ...paramsWithoutLabels } = parameters;\n filteredParameters = paramsWithoutLabels;\n }\n\n return this.api.formatData(input, filteredParameters);\n }\n}\n\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\n\nexport abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo {\n const names = eventName.split(\"-\");\n return {\n subEvent: names[1],\n module: names[2],\n };\n }\n\n abstract handleCustomRequestEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomResponseEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomChunkEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n handleCustomEvent(\n eventName: string,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any {\n if (!eventName) {\n return undefined;\n }\n const eventInfo = this.customEventInfo(eventName);\n switch (eventInfo.subEvent) {\n case \"request\":\n return this.handleCustomRequestEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"response\":\n return this.handleCustomResponseEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"chunk\":\n return this.handleCustomChunkEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n default:\n console.error(\n `Unexpected eventInfo for ${eventName} ${JSON.stringify(\n eventInfo,\n null,\n 1\n )}`\n );\n }\n }\n}\n\nexport class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string = \"GoogleRequestLogger\";\n\n log(eventName: string, data: any, tags?: string[]): undefined {\n const tagStr = tags ? `[${tags}]` : \"[]\";\n console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);\n }\n\n handleCustomRequestEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomResponseEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomChunkEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n}\n\nexport class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name = \"GoogleRequestRecorder\";\n\n request: any = {};\n\n response: any = {};\n\n chunk: any[] = [];\n\n handleCustomRequestEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.request = data;\n }\n\n handleCustomResponseEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.response = data;\n }\n\n handleCustomChunkEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.chunk.push(data);\n }\n}\n"],"mappings":"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"}
@@ -20,7 +20,7 @@ declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptio
20
20
  }>;
21
21
  _moduleName(): Promise<string>;
22
22
  additionalHeaders(): Promise<Record<string, string>>;
23
- _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;
23
+ _buildOpts(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;
24
24
  _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;
25
25
  }
26
26
  declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.cts","names":["BaseLanguageModelCallOptions","AsyncCaller","AsyncCallerCallOptions","BaseRunManager","BaseCallbackHandler","GoogleAIBaseLLMInput","GoogleConnectionParams","GooglePlatformType","GoogleResponse","GoogleLLMResponse","GoogleAIModelRequestParams","GoogleRawResponse","GoogleAIAPI","VertexModelFamily","GoogleAIAPIConfig","GoogleModelParams","GoogleAbstractedClient","GoogleAbstractedClientOps","GoogleAbstractedClientOpsMethod","GoogleConnection","CallOptions","ResponseType","Promise","Record","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["import { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport { AsyncCaller, AsyncCallerCallOptions } from \"@langchain/core/utils/async_caller\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { GoogleAIBaseLLMInput, GoogleConnectionParams, GooglePlatformType, GoogleResponse, GoogleLLMResponse, GoogleAIModelRequestParams, GoogleRawResponse, GoogleAIAPI, VertexModelFamily, GoogleAIAPIConfig, GoogleModelParams } from \"./types.js\";\nimport { GoogleAbstractedClient, GoogleAbstractedClientOps, GoogleAbstractedClientOpsMethod } from \"./auth.js\";\nexport declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse> {\n caller: AsyncCaller;\n client: GoogleAbstractedClient;\n streaming: boolean;\n constructor(caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n abstract buildUrl(): Promise<string>;\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n _clientInfoHeaders(): Promise<Record<string, string>>;\n _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }>;\n _moduleName(): Promise<string>;\n additionalHeaders(): Promise<Record<string, string>>;\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;\n}\nexport declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {\n platformType: GooglePlatformType | undefined;\n _endpoint: string | undefined;\n _location: string | undefined;\n _apiVersion: string | undefined;\n constructor(fields: GoogleConnectionParams<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get platform(): GooglePlatformType;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get apiVersion(): string;\n get location(): string;\n get computedLocation(): string;\n get endpoint(): string;\n get computedEndpoint(): string;\n buildMethod(): GoogleAbstractedClientOpsMethod;\n}\nexport declare abstract class GoogleRawConnection<CallOptions extends AsyncCallerCallOptions, AuthOptions> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n}\nexport declare abstract class GoogleAIConnection<CallOptions extends AsyncCallerCallOptions, InputType, AuthOptions, ResponseType extends GoogleResponse> extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions> implements GoogleAIBaseLLMInput<AuthOptions> {\n model: string;\n modelName: string;\n client: GoogleAbstractedClient;\n _apiName?: string;\n apiConfig?: GoogleAIAPIConfig;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n get modelFamily(): VertexModelFamily;\n get modelPublisher(): string;\n get computedAPIName(): string;\n get apiName(): string;\n get api(): GoogleAIAPI;\n get isApiKey(): boolean;\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get computedLocation(): string;\n abstract buildUrlMethod(): Promise<string>;\n buildUrlGenerativeLanguage(): Promise<string>;\n buildUrlVertexExpress(): Promise<string>;\n buildUrlVertexLocation(): Promise<string>;\n buildUrlVertex(): Promise<string>;\n buildUrl(): Promise<string>;\n abstract formatData(input: InputType, parameters: GoogleModelParams): Promise<unknown>;\n request(input: InputType, parameters: GoogleAIModelRequestParams, options: CallOptions, runManager?: BaseRunManager): Promise<ResponseType>;\n}\nexport declare abstract class AbstractGoogleLLMConnection<MessageType, AuthOptions> extends GoogleAIConnection<BaseLanguageModelCallOptions, MessageType, AuthOptions, GoogleLLMResponse> {\n buildUrlMethodGemini(): Promise<string>;\n buildUrlMethodClaude(): Promise<string>;\n buildUrlMethod(): Promise<string>;\n formatData(input: MessageType, parameters: GoogleAIModelRequestParams): Promise<unknown>;\n}\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\nexport declare abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo;\n abstract handleCustomRequestEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomResponseEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomChunkEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n handleCustomEvent(eventName: string, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string;\n log(eventName: string, data: any, tags?: string[]): undefined;\n handleCustomRequestEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name: string;\n request: any;\n response: any;\n chunk: any[];\n handleCustomRequestEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n}\n//# sourceMappingURL=connection.d.ts.map"],"mappings":";;;;;;;;uBAM8BmB,qCAAqCjB,6CAA6CM;UACpGP;EADkBkB,MAAAA,EAElBH,sBAFkCI;EAAqBlB,SAAAA,EAAAA,OAAAA;EAA6CM,WAAAA,CAAAA,MAAAA,EAIxFP,WAJwFO,EAAAA,MAAAA,EAInEQ,sBAJmER,EAAAA,SAAAA,CAAAA,EAAAA,OAAAA;EACpGP,SAAAA,QAAAA,CAAAA,CAAAA,EAIaqB,OAJbrB,CAAAA,MAAAA,CAAAA;EACAe,SAAAA,WAAAA,CAAAA,CAAAA,EAIgBE,+BAJhBF;EAEYf,kBAAAA,CAAAA,CAAAA,EAGEqB,OAHFrB,CAGUsB,MAHVtB,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA;EAAqBe,cAAAA,CAAAA,CAAAA,EAIvBM,OAJuBN,CAAAA;IACpBM,SAAAA,EAAAA,MAAAA;IACGJ,oBAAAA,EAAAA,MAAAA;EACMK,CAAAA,CAAAA;EAARD,WAAAA,CAAAA,CAAAA,EAKPA,OALOA,CAAAA,MAAAA,CAAAA;EACJA,iBAAAA,CAAAA,CAAAA,EAKGA,OALHA,CAKWC,MALXD,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA;EAIHA,UAAAA,CAAAA,IAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,QAAAA,EAEiCF,WAFjCE,EAAAA,cAAAA,CAAAA,EAE+DC,MAF/DD,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAEwFA,OAFxFA,CAEgGL,yBAFhGK,CAAAA;EACcC,QAAAA,CAAAA,IAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,OAAAA,EAEgBH,WAFhBG,EAAAA,cAAAA,CAAAA,EAE8CA,MAF9CA,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAEuED,OAFvEC,CAE+EF,YAF/EE,CAAAA;;AACmBH,uBAGtBI,oBAHsBJ,CAAAA,oBAGmBlB,sBAHnBkB,EAAAA,qBAGgEZ,cAHhEY,EAAAA,WAAAA,CAAAA,SAGqGD,gBAHrGC,CAGsHA,WAHtHA,EAGmIC,YAHnID,CAAAA,YAG4Jd,sBAH5Jc,CAGmLK,WAHnLL,CAAAA,CAAAA;EAA8BG,YAAAA,EAIhEhB,kBAJgEgB,GAAAA,SAAAA;EAAiCN,SAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAARK,SAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAC1DF,WAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAA8BG,WAAAA,CAAAA,MAAAA,EAOvDjB,sBAPuDiB,CAOhCE,WAPgCF,CAAAA,GAAAA,SAAAA,EAAAA,MAAAA,EAOEtB,WAPFsB,EAAAA,MAAAA,EAOuBP,sBAPvBO,EAAAA,SAAAA,CAAAA,EAAAA,OAAAA;EAAiCF,iBAAAA,CAAAA,MAAAA,EAQlFf,sBARkFe,CAAAA,GAAAA,CAAAA,GAAAA,SAAAA,CAAAA,EAQxCd,kBARwCc,GAAAA,SAAAA;EAARC,IAAAA,QAAAA,CAAAA,CAAAA,EASpFf,kBAToFe;EAAO,IAAA,oBAAA,CAAA,CAAA,EAU/Ef,kBAV+E;EAEjFiB,IAAAA,kBAAAA,CAAAA,CAAoB,EAAA,MAAAJ;EAAqBlB,IAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA6CM,IAAAA,QAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAsDY,IAAAA,gBAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAaC,IAAAA,QAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAgDI,IAAAA,gBAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EACrNlB,WAAAA,CAAAA,CAAAA,EAcCW,+BAdDX;;AAIMD,uBAYMoB,mBAZNpB,CAAAA,oBAY8CJ,sBAZ9CI,EAAAA,WAAAA,CAAAA,SAY2FkB,oBAZ3FlB,CAYgHc,WAZhHd,EAY6HK,iBAZ7HL,EAYgJmB,WAZhJnB,CAAAA,CAAAA;EAAyDL,UAAAA,CAAAA,IAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,QAAAA,EAa7BmB,WAb6BnB,EAAAA,cAAAA,CAAAA,EAaCsB,MAbDtB,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAa0BqB,OAb1BrB,CAakCgB,yBAblChB,CAAAA;;AACnDK,uBAcAqB,kBAdArB,CAAAA,oBAcuCJ,sBAdvCI,EAAAA,SAAAA,EAAAA,WAAAA,EAAAA,qBAc4GE,cAd5GF,CAAAA,SAcoIkB,oBAdpIlB,CAcyJc,WAdzJd,EAcsKe,YAdtKf,EAcoLmB,WAdpLnB,CAAAA,YAc4MD,oBAd5MC,CAciOmB,WAdjOnB,CAAAA,CAAAA;EAA0CC,KAAAA,EAAAA,MAAAA;EACpDA,SAAAA,EAAAA,MAAAA;EACYA,MAAAA,EAepBS,sBAfoBT;EAObW,QAAAA,CAAAA,EAAAA,MAAAA;EAfsIC,SAAAA,CAAAA,EAyBzIL,iBAzByIK;EAAuDb,WAAAA,CAAAA,MAAAA,EA0BxLD,oBA1BwLC,CA0BnKmB,WA1BmKnB,CAAAA,GAAAA,SAAAA,EAAAA,MAAAA,EA0BjIL,WA1BiIK,EAAAA,MAAAA,EA0B5GU,sBA1B4GV,EAAAA,SAAAA,CAAAA,EAAAA,OAAAA;EAAsB,IAAA,WAAA,CAAA,CAAA,EA2B/MO,iBA3B+M;EAiBxMa,IAAAA,cAAAA,CAAAA,CAAAA,EAAmB,MAAA;EAAqBxB,IAAAA,eAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAkEkB,IAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAaT,IAAAA,GAAAA,CAAAA,CAAAA,EActIC,WAdsID;EAAmBc,IAAAA,QAAAA,CAAAA,CAAAA,EAAAA,OAAAA;EACpHL,iBAAAA,CAAAA,MAAAA,EAetBd,sBAfsBc,CAAAA,GAAAA,CAAAA,GAAAA,SAAAA,CAAAA,EAeoBb,kBAfpBa,GAAAA,SAAAA;EAA8BG,IAAAA,oBAAAA,CAAAA,CAAAA,EAgBlDhB,kBAhBkDgB;EAAiCN,IAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAARK,IAAAA,gBAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EADQE,SAAAA,cAAAA,CAAAA,CAAAA,EAoBpFF,OApBoFE,CAAAA,MAAAA,CAAAA;EAAoB,0BAAA,CAAA,CAAA,EAqBrGF,OArBqG,CAAA,MAAA,CAAA;EAGzGK,qBAAkB,CAAA,CAAA,EAmBnBL,OAnBmBF,CAAAA,MAAAA,CAAAA;EAAqBlB,sBAAAA,CAAAA,CAAAA,EAoBvCoB,OApBuCpB,CAAAA,MAAAA,CAAAA;EAAqEM,cAAAA,CAAAA,CAAAA,EAqBpHc,OArBoHd,CAAAA,MAAAA,CAAAA;EAA6CY,QAAAA,CAAAA,CAAAA,EAsBvKE,OAtBuKF,CAAAA,MAAAA,CAAAA;EAAaC,SAAAA,UAAAA,CAAAA,KAAAA,EAuBrKO,SAvBqKP,EAAAA,UAAAA,EAuB9IN,iBAvB8IM,CAAAA,EAuB1HC,OAvB0HD,CAAAA,OAAAA,CAAAA;EAAcI,OAAAA,CAAAA,KAAAA,EAwB/LG,SAxB+LH,EAAAA,UAAAA,EAwBxKf,0BAxBwKe,EAAAA,OAAAA,EAwBnIL,WAxBmIK,EAAAA,UAAAA,CAAAA,EAwBzGtB,cAxByGsB,CAAAA,EAwBxFH,OAxBwFG,CAwBhFJ,YAxBgFI,CAAAA;;AAGtMT,uBAuBkBa,2BAvBlBb,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,SAuBgFW,kBAvBhFX,CAuBmGhB,4BAvBnGgB,EAuBiIc,WAvBjId,EAuB8IS,WAvB9IT,EAuB2JP,iBAvB3JO,CAAAA,CAAAA;EAEIF,oBAAAA,CAAAA,CAAAA,EAsBYQ,OAtBZR,CAAAA,MAAAA,CAAAA;EAC6BW,oBAAAA,CAAAA,CAAAA,EAsBjBH,OAtBiBG,CAAAA,MAAAA,CAAAA;EAArBpB,cAAAA,CAAAA,CAAAA,EAuBFiB,OAvBEjB,CAAAA,MAAAA,CAAAA;EAAuDJ,UAAAA,CAAAA,KAAAA,EAwBzD6B,WAxByD7B,EAAAA,UAAAA,EAwBhCS,0BAxBgCT,CAAAA,EAwBHqB,OAxBGrB,CAAAA,OAAAA,CAAAA;;AACxDY,UAyBNkB,qBAAAA,CAzBMlB;EAIRD,QAAAA,EAAAA,MAAAA;EAEeN,MAAAA,EAAAA,MAAAA;;AACEC,uBAsBFyB,4BAAAA,SAAqC5B,mBAAAA,CAtBnCG;EAGDe,eAAAA,CAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAoBSS,qBApBTT;EACGA,SAAAA,wBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,SAAAA,EAoBkCS,qBApBlCT,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,CAAAA,EAoB+GC,MApB/GD,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EACLA,SAAAA,yBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,SAAAA,EAoBwCS,qBApBxCT,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,CAAAA,EAoBqHC,MApBrHD,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EACCA,SAAAA,sBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,SAAAA,EAoBoCS,qBApBpCT,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,CAAAA,EAoBiHC,MApBjHD,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EACRA,iBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,CAAAA,EAoByEC,MApBzED,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;;AAESM,cAoBVK,mBAAAA,SAA4BD,4BAAAA,CApBlBJ;EAAuBb,IAAAA,EAAAA,MAAAA;EAAoBO,GAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,CAAAA,EAAAA,SAAAA;EACvDM,wBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EAsByCG,qBAtBzCH,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAsBwHL,MAtBxHK,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EAAuBlB,yBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EAuBmBqB,qBAvBnBrB,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAuBkGa,MAvBlGb,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EAAqCU,sBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EAwBrBW,qBAxBqBX,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAwB0DG,MAxB1DH,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;;AAAmDC,cA0B7Ga,qBAAAA,SAA8BF,4BAAAA,CA1B+EX;EAARC,IAAAA,EAAAA,MAAAA;EAxBwCE,OAAAA,EAAAA,GAAAA;EAAwEnB,QAAAA,EAAAA,GAAAA;EAAoB,KAAA,EAAA,GAAA,EAAA;EA0BhOwB,wBAAAA,CAAAA,UAA2B,EAAAC,MAAAA,EAAAA,UAAAL,EA6BIM,qBA7BJ,EAAA,IAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,CAAA,EA6BoFR,MA7BpF,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,EAAA,GAAA;EAAsDvB,yBAAAA,CAAAA,UAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EA8BjD+B,qBA9BiD/B,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EA8B+BuB,MA9B/BvB,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA;EAA8B8B,sBAAAA,CAAAA,UAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EA+BlFC,qBA/BkFD,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,EAAAA,MAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EA+BFP,MA/BEO,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA"}
1
+ {"version":3,"file":"connection.d.cts","names":["BaseLanguageModelCallOptions","AsyncCaller","AsyncCallerCallOptions","BaseRunManager","BaseCallbackHandler","GoogleAIBaseLLMInput","GoogleConnectionParams","GooglePlatformType","GoogleResponse","GoogleLLMResponse","GoogleAIModelRequestParams","GoogleRawResponse","GoogleAIAPI","VertexModelFamily","GoogleAIAPIConfig","GoogleModelParams","GoogleAbstractedClient","GoogleAbstractedClientOps","GoogleAbstractedClientOpsMethod","GoogleConnection","CallOptions","ResponseType","Promise","Record","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["import { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport { AsyncCaller, AsyncCallerCallOptions } from \"@langchain/core/utils/async_caller\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { GoogleAIBaseLLMInput, GoogleConnectionParams, GooglePlatformType, GoogleResponse, GoogleLLMResponse, GoogleAIModelRequestParams, GoogleRawResponse, GoogleAIAPI, VertexModelFamily, GoogleAIAPIConfig, GoogleModelParams } from \"./types.js\";\nimport { GoogleAbstractedClient, GoogleAbstractedClientOps, GoogleAbstractedClientOpsMethod } from \"./auth.js\";\nexport declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse> {\n caller: AsyncCaller;\n client: GoogleAbstractedClient;\n streaming: boolean;\n constructor(caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n abstract buildUrl(): Promise<string>;\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n _clientInfoHeaders(): Promise<Record<string, string>>;\n _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }>;\n _moduleName(): Promise<string>;\n additionalHeaders(): Promise<Record<string, string>>;\n _buildOpts(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;\n}\nexport declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {\n platformType: GooglePlatformType | undefined;\n _endpoint: string | undefined;\n _location: string | undefined;\n _apiVersion: string | undefined;\n constructor(fields: GoogleConnectionParams<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get platform(): GooglePlatformType;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get apiVersion(): string;\n get location(): string;\n get computedLocation(): string;\n get endpoint(): string;\n get computedEndpoint(): string;\n buildMethod(): GoogleAbstractedClientOpsMethod;\n}\nexport declare abstract class GoogleRawConnection<CallOptions extends AsyncCallerCallOptions, AuthOptions> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n}\nexport declare abstract class GoogleAIConnection<CallOptions extends AsyncCallerCallOptions, InputType, AuthOptions, ResponseType extends GoogleResponse> extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions> implements GoogleAIBaseLLMInput<AuthOptions> {\n model: string;\n modelName: string;\n client: GoogleAbstractedClient;\n _apiName?: string;\n apiConfig?: GoogleAIAPIConfig;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n get modelFamily(): VertexModelFamily;\n get modelPublisher(): string;\n get computedAPIName(): string;\n get apiName(): string;\n get api(): GoogleAIAPI;\n get isApiKey(): boolean;\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get computedLocation(): string;\n abstract buildUrlMethod(): Promise<string>;\n buildUrlGenerativeLanguage(): Promise<string>;\n buildUrlVertexExpress(): Promise<string>;\n buildUrlVertexLocation(): Promise<string>;\n buildUrlVertex(): Promise<string>;\n buildUrl(): Promise<string>;\n abstract formatData(input: InputType, parameters: GoogleModelParams): Promise<unknown>;\n request(input: InputType, parameters: GoogleAIModelRequestParams, options: CallOptions, runManager?: BaseRunManager): Promise<ResponseType>;\n}\nexport declare abstract class AbstractGoogleLLMConnection<MessageType, AuthOptions> extends GoogleAIConnection<BaseLanguageModelCallOptions, MessageType, AuthOptions, GoogleLLMResponse> {\n buildUrlMethodGemini(): Promise<string>;\n buildUrlMethodClaude(): Promise<string>;\n buildUrlMethod(): Promise<string>;\n formatData(input: MessageType, parameters: GoogleAIModelRequestParams): Promise<unknown>;\n}\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\nexport declare abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo;\n abstract handleCustomRequestEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomResponseEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomChunkEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n handleCustomEvent(eventName: string, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string;\n log(eventName: string, data: any, tags?: string[]): undefined;\n handleCustomRequestEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name: string;\n request: any;\n response: any;\n chunk: any[];\n handleCustomRequestEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n}\n//# sourceMappingURL=connection.d.ts.map"],"mappings":"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"}
@@ -20,7 +20,7 @@ declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptio
20
20
  }>;
21
21
  _moduleName(): Promise<string>;
22
22
  additionalHeaders(): Promise<Record<string, string>>;
23
- _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;
23
+ _buildOpts(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;
24
24
  _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;
25
25
  }
26
26
  declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","names":["BaseLanguageModelCallOptions","AsyncCaller","AsyncCallerCallOptions","BaseRunManager","BaseCallbackHandler","GoogleAIBaseLLMInput","GoogleConnectionParams","GooglePlatformType","GoogleResponse","GoogleLLMResponse","GoogleAIModelRequestParams","GoogleRawResponse","GoogleAIAPI","VertexModelFamily","GoogleAIAPIConfig","GoogleModelParams","GoogleAbstractedClient","GoogleAbstractedClientOps","GoogleAbstractedClientOpsMethod","GoogleConnection","CallOptions","ResponseType","Promise","Record","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["import { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport { AsyncCaller, AsyncCallerCallOptions } from \"@langchain/core/utils/async_caller\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { GoogleAIBaseLLMInput, GoogleConnectionParams, GooglePlatformType, GoogleResponse, GoogleLLMResponse, GoogleAIModelRequestParams, GoogleRawResponse, GoogleAIAPI, VertexModelFamily, GoogleAIAPIConfig, GoogleModelParams } from \"./types.js\";\nimport { GoogleAbstractedClient, GoogleAbstractedClientOps, GoogleAbstractedClientOpsMethod } from \"./auth.js\";\nexport declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse> {\n caller: AsyncCaller;\n client: GoogleAbstractedClient;\n streaming: boolean;\n constructor(caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n abstract buildUrl(): Promise<string>;\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n _clientInfoHeaders(): Promise<Record<string, string>>;\n _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }>;\n _moduleName(): Promise<string>;\n additionalHeaders(): Promise<Record<string, string>>;\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;\n}\nexport declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {\n platformType: GooglePlatformType | undefined;\n _endpoint: string | undefined;\n _location: string | undefined;\n _apiVersion: string | undefined;\n constructor(fields: GoogleConnectionParams<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get platform(): GooglePlatformType;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get apiVersion(): string;\n get location(): string;\n get computedLocation(): string;\n get endpoint(): string;\n get computedEndpoint(): string;\n buildMethod(): GoogleAbstractedClientOpsMethod;\n}\nexport declare abstract class GoogleRawConnection<CallOptions extends AsyncCallerCallOptions, AuthOptions> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n}\nexport declare abstract class GoogleAIConnection<CallOptions extends AsyncCallerCallOptions, InputType, AuthOptions, ResponseType extends GoogleResponse> extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions> implements GoogleAIBaseLLMInput<AuthOptions> {\n model: string;\n modelName: string;\n client: GoogleAbstractedClient;\n _apiName?: string;\n apiConfig?: GoogleAIAPIConfig;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n get modelFamily(): VertexModelFamily;\n get modelPublisher(): string;\n get computedAPIName(): string;\n get apiName(): string;\n get api(): GoogleAIAPI;\n get isApiKey(): boolean;\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get computedLocation(): string;\n abstract buildUrlMethod(): Promise<string>;\n buildUrlGenerativeLanguage(): Promise<string>;\n buildUrlVertexExpress(): Promise<string>;\n buildUrlVertexLocation(): Promise<string>;\n buildUrlVertex(): Promise<string>;\n buildUrl(): Promise<string>;\n abstract formatData(input: InputType, parameters: GoogleModelParams): Promise<unknown>;\n request(input: InputType, parameters: GoogleAIModelRequestParams, options: CallOptions, runManager?: BaseRunManager): Promise<ResponseType>;\n}\nexport declare abstract class AbstractGoogleLLMConnection<MessageType, AuthOptions> extends GoogleAIConnection<BaseLanguageModelCallOptions, MessageType, AuthOptions, GoogleLLMResponse> {\n buildUrlMethodGemini(): Promise<string>;\n buildUrlMethodClaude(): Promise<string>;\n buildUrlMethod(): Promise<string>;\n formatData(input: MessageType, parameters: GoogleAIModelRequestParams): Promise<unknown>;\n}\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\nexport declare abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo;\n abstract handleCustomRequestEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomResponseEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomChunkEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n handleCustomEvent(eventName: string, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string;\n log(eventName: string, data: any, tags?: string[]): undefined;\n handleCustomRequestEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name: string;\n request: any;\n response: any;\n chunk: any[];\n handleCustomRequestEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n}\n//# sourceMappingURL=connection.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","names":["BaseLanguageModelCallOptions","AsyncCaller","AsyncCallerCallOptions","BaseRunManager","BaseCallbackHandler","GoogleAIBaseLLMInput","GoogleConnectionParams","GooglePlatformType","GoogleResponse","GoogleLLMResponse","GoogleAIModelRequestParams","GoogleRawResponse","GoogleAIAPI","VertexModelFamily","GoogleAIAPIConfig","GoogleModelParams","GoogleAbstractedClient","GoogleAbstractedClientOps","GoogleAbstractedClientOpsMethod","GoogleConnection","CallOptions","ResponseType","Promise","Record","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["import { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport { AsyncCaller, AsyncCallerCallOptions } from \"@langchain/core/utils/async_caller\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { GoogleAIBaseLLMInput, GoogleConnectionParams, GooglePlatformType, GoogleResponse, GoogleLLMResponse, GoogleAIModelRequestParams, GoogleRawResponse, GoogleAIAPI, VertexModelFamily, GoogleAIAPIConfig, GoogleModelParams } from \"./types.js\";\nimport { GoogleAbstractedClient, GoogleAbstractedClientOps, GoogleAbstractedClientOpsMethod } from \"./auth.js\";\nexport declare abstract class GoogleConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse> {\n caller: AsyncCaller;\n client: GoogleAbstractedClient;\n streaming: boolean;\n constructor(caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n abstract buildUrl(): Promise<string>;\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n _clientInfoHeaders(): Promise<Record<string, string>>;\n _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }>;\n _moduleName(): Promise<string>;\n additionalHeaders(): Promise<Record<string, string>>;\n _buildOpts(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n _request(data: unknown | undefined, options: CallOptions, requestHeaders?: Record<string, string>): Promise<ResponseType>;\n}\nexport declare abstract class GoogleHostConnection<CallOptions extends AsyncCallerCallOptions, ResponseType extends GoogleResponse, AuthOptions> extends GoogleConnection<CallOptions, ResponseType> implements GoogleConnectionParams<AuthOptions> {\n platformType: GooglePlatformType | undefined;\n _endpoint: string | undefined;\n _location: string | undefined;\n _apiVersion: string | undefined;\n constructor(fields: GoogleConnectionParams<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get platform(): GooglePlatformType;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get apiVersion(): string;\n get location(): string;\n get computedLocation(): string;\n get endpoint(): string;\n get computedEndpoint(): string;\n buildMethod(): GoogleAbstractedClientOpsMethod;\n}\nexport declare abstract class GoogleRawConnection<CallOptions extends AsyncCallerCallOptions, AuthOptions> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n _buildOpts(data: unknown | undefined, _options: CallOptions, requestHeaders?: Record<string, string>): Promise<GoogleAbstractedClientOps>;\n}\nexport declare abstract class GoogleAIConnection<CallOptions extends AsyncCallerCallOptions, InputType, AuthOptions, ResponseType extends GoogleResponse> extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions> implements GoogleAIBaseLLMInput<AuthOptions> {\n model: string;\n modelName: string;\n client: GoogleAbstractedClient;\n _apiName?: string;\n apiConfig?: GoogleAIAPIConfig;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming?: boolean);\n get modelFamily(): VertexModelFamily;\n get modelPublisher(): string;\n get computedAPIName(): string;\n get apiName(): string;\n get api(): GoogleAIAPI;\n get isApiKey(): boolean;\n fieldPlatformType(fields: GoogleConnectionParams<any> | undefined): GooglePlatformType | undefined;\n get computedPlatformType(): GooglePlatformType;\n get computedApiVersion(): string;\n get computedLocation(): string;\n abstract buildUrlMethod(): Promise<string>;\n buildUrlGenerativeLanguage(): Promise<string>;\n buildUrlVertexExpress(): Promise<string>;\n buildUrlVertexLocation(): Promise<string>;\n buildUrlVertex(): Promise<string>;\n buildUrl(): Promise<string>;\n abstract formatData(input: InputType, parameters: GoogleModelParams): Promise<unknown>;\n request(input: InputType, parameters: GoogleAIModelRequestParams, options: CallOptions, runManager?: BaseRunManager): Promise<ResponseType>;\n}\nexport declare abstract class AbstractGoogleLLMConnection<MessageType, AuthOptions> extends GoogleAIConnection<BaseLanguageModelCallOptions, MessageType, AuthOptions, GoogleLLMResponse> {\n buildUrlMethodGemini(): Promise<string>;\n buildUrlMethodClaude(): Promise<string>;\n buildUrlMethod(): Promise<string>;\n formatData(input: MessageType, parameters: GoogleAIModelRequestParams): Promise<unknown>;\n}\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\nexport declare abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo;\n abstract handleCustomRequestEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomResponseEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n abstract handleCustomChunkEvent(eventName: string, eventInfo: GoogleCustomEventInfo, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n handleCustomEvent(eventName: string, data: any, runId: string, tags?: string[], metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string;\n log(eventName: string, data: any, tags?: string[]): undefined;\n handleCustomRequestEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, tags?: string[], _metadata?: Record<string, any>): any;\n}\nexport declare class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name: string;\n request: any;\n response: any;\n chunk: any[];\n handleCustomRequestEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomResponseEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n handleCustomChunkEvent(_eventName: string, _eventInfo: GoogleCustomEventInfo, data: any, _runId: string, _tags?: string[], _metadata?: Record<string, any>): any;\n}\n//# sourceMappingURL=connection.d.ts.map"],"mappings":"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"}
@@ -40,7 +40,7 @@ var GoogleConnection = class {
40
40
  async additionalHeaders() {
41
41
  return {};
42
42
  }
43
- async _buildOpts(data, _options, requestHeaders = {}) {
43
+ async _buildOpts(data, options, requestHeaders = {}) {
44
44
  const url = await this.buildUrl();
45
45
  const method = this.buildMethod();
46
46
  const infoHeaders = await this._clientInfoHeaders() ?? {};
@@ -53,7 +53,8 @@ var GoogleConnection = class {
53
53
  const opts = {
54
54
  url,
55
55
  method,
56
- headers
56
+ headers,
57
+ signal: options?.signal
57
58
  };
58
59
  if (data && method === "POST") opts.data = data;
59
60
  if (this.streaming) opts.responseType = "stream";
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","names":["caller: AsyncCaller","client: GoogleAbstractedClient","streaming?: boolean","data: unknown | undefined","_options: CallOptions","requestHeaders: Record<string, string>","opts: GoogleAbstractedClientOps","options: CallOptions","response: unknown","fields: GoogleConnectionParams<AuthOptions> | undefined","fields: GoogleConnectionParams<any> | undefined","fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","input: InputType","parameters: GoogleAIModelRequestParams","runManager?: BaseRunManager","streamingParameters: GoogleAIModelRequestParams","input: MessageType","eventName: string","data: any","runId: string","tags?: string[]","metadata?: Record<string, any>","_eventInfo: GoogleCustomEventInfo","_runId: string","_metadata?: Record<string, any>","_eventName: string","_tags?: string[]"],"sources":["../src/connection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport {\n AsyncCaller,\n AsyncCallerCallOptions,\n} from \"@langchain/core/utils/async_caller\";\nimport { getRuntimeEnvironment } from \"@langchain/core/utils/env\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type {\n GoogleAIBaseLLMInput,\n GoogleConnectionParams,\n GooglePlatformType,\n GoogleResponse,\n GoogleLLMResponse,\n GoogleAIModelRequestParams,\n GoogleRawResponse,\n GoogleAIAPI,\n VertexModelFamily,\n GoogleAIAPIConfig,\n AnthropicAPIConfig,\n GeminiAPIConfig,\n GoogleModelParams,\n} from \"./types.js\";\nimport {\n GoogleAbstractedClient,\n GoogleAbstractedClientOps,\n GoogleAbstractedClientOpsMethod,\n} from \"./auth.js\";\nimport {\n getGeminiAPI,\n modelToFamily,\n modelToPublisher,\n} from \"./utils/index.js\";\nimport { getAnthropicAPI } from \"./utils/anthropic.js\";\n\nexport abstract class GoogleConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n> {\n caller: AsyncCaller;\n\n client: GoogleAbstractedClient;\n\n streaming: boolean;\n\n constructor(\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n this.caller = caller;\n this.client = client;\n this.streaming = streaming ?? false;\n }\n\n abstract buildUrl(): Promise<string>;\n\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n\n async _clientInfoHeaders(): Promise<Record<string, string>> {\n const { userAgent, clientLibraryVersion } = await this._getClientInfo();\n return {\n \"User-Agent\": userAgent,\n \"Client-Info\": clientLibraryVersion,\n };\n }\n\n async _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }> {\n const env = await getRuntimeEnvironment();\n const langchain = env?.library ?? \"langchain-js\";\n // TODO: Add an API for getting the current LangChain version\n const langchainVersion = \"0\";\n const moduleName = await this._moduleName();\n let clientLibraryVersion = `${langchain}/${langchainVersion}`;\n if (moduleName && moduleName.length) {\n clientLibraryVersion = `${clientLibraryVersion}-${moduleName}`;\n }\n return {\n userAgent: clientLibraryVersion,\n clientLibraryVersion: `${langchainVersion}-${moduleName}`,\n };\n }\n\n async _moduleName(): Promise<string> {\n return this.constructor.name;\n }\n\n async additionalHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const url = await this.buildUrl();\n const method = this.buildMethod();\n const infoHeaders = (await this._clientInfoHeaders()) ?? {};\n const additionalHeaders = (await this.additionalHeaders()) ?? {};\n const headers = {\n ...infoHeaders,\n ...additionalHeaders,\n ...requestHeaders,\n };\n\n const opts: GoogleAbstractedClientOps = {\n url,\n method,\n headers,\n };\n if (data && method === \"POST\") {\n opts.data = data;\n }\n if (this.streaming) {\n opts.responseType = \"stream\";\n } else {\n opts.responseType = \"json\";\n }\n return opts;\n }\n\n async _request(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<ResponseType> {\n const opts = await this._buildOpts(data, options, requestHeaders);\n const callResponse = await this.caller.callWithOptions(\n { signal: options?.signal },\n async () => this.client.request(opts)\n );\n const response: unknown = callResponse; // Done for typecast safety, I guess\n return <ResponseType>response;\n }\n}\n\nexport abstract class GoogleHostConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n AuthOptions,\n >\n extends GoogleConnection<CallOptions, ResponseType>\n implements GoogleConnectionParams<AuthOptions>\n{\n // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\n platformType: GooglePlatformType | undefined;\n\n _endpoint: string | undefined;\n\n _location: string | undefined;\n\n _apiVersion: string | undefined;\n\n constructor(\n fields: GoogleConnectionParams<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n super(caller, client, streaming);\n this.caller = caller;\n\n this.platformType = this.fieldPlatformType(fields);\n this._endpoint = fields?.endpoint;\n this._location = fields?.location;\n this._apiVersion = fields?.apiVersion;\n this.client = client;\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n if (typeof fields === \"undefined\") {\n return undefined;\n }\n if (typeof fields.platformType !== \"undefined\") {\n return fields.platformType;\n }\n if (fields.vertexai === true) {\n return \"gcp\";\n }\n return undefined;\n }\n\n get platform(): GooglePlatformType {\n return this.platformType ?? this.computedPlatformType;\n }\n\n get computedPlatformType(): GooglePlatformType {\n return \"gcp\";\n }\n\n get computedApiVersion(): string {\n return \"v1\";\n }\n\n get apiVersion(): string {\n return this._apiVersion ?? this.computedApiVersion;\n }\n\n get location(): string {\n return this._location ?? this.computedLocation;\n }\n\n get computedLocation(): string {\n return \"us-central1\";\n }\n\n get endpoint(): string {\n return this._endpoint ?? this.computedEndpoint;\n }\n\n get computedEndpoint(): string {\n if (this.location === \"global\") {\n return \"aiplatform.googleapis.com\";\n } else {\n return `${this.location}-aiplatform.googleapis.com`;\n }\n }\n\n buildMethod(): GoogleAbstractedClientOpsMethod {\n return \"POST\";\n }\n}\n\nexport abstract class GoogleRawConnection<\n CallOptions extends AsyncCallerCallOptions,\n AuthOptions,\n> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const opts = await super._buildOpts(data, _options, requestHeaders);\n opts.responseType = \"blob\";\n return opts;\n }\n}\n\nexport abstract class GoogleAIConnection<\n CallOptions extends AsyncCallerCallOptions,\n InputType,\n AuthOptions,\n ResponseType extends GoogleResponse,\n >\n extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions>\n implements GoogleAIBaseLLMInput<AuthOptions>\n{\n model: string;\n\n modelName: string;\n\n client: GoogleAbstractedClient;\n\n _apiName?: string;\n\n apiConfig?: GoogleAIAPIConfig;\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.client = client;\n this.modelName = fields?.model ?? fields?.modelName ?? this.model;\n this.model = this.modelName;\n\n this._apiName = fields?.apiName;\n this.apiConfig = {\n safetyHandler: fields?.safetyHandler, // For backwards compatibility\n ...fields?.apiConfig,\n };\n }\n\n get modelFamily(): VertexModelFamily {\n return modelToFamily(this.model);\n }\n\n get modelPublisher(): string {\n return modelToPublisher(this.model);\n }\n\n get computedAPIName(): string {\n // At least at the moment, model publishers and APIs map the same\n return this.modelPublisher;\n }\n\n get apiName(): string {\n return this._apiName ?? this.computedAPIName;\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n case \"gemma\": // TODO: Is this true?\n return getGeminiAPI(this.apiConfig as GeminiAPIConfig);\n case \"anthropic\":\n return getAnthropicAPI(this.apiConfig as AnthropicAPIConfig);\n default:\n throw new Error(`Unknown API: ${this.apiName}`);\n }\n }\n\n get isApiKey(): boolean {\n return this.client.clientType === \"apiKey\";\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n const ret = super.fieldPlatformType(fields);\n if (typeof ret !== \"undefined\") {\n return ret;\n }\n if (fields?.vertexai === false) {\n return \"gai\";\n }\n return undefined;\n }\n\n get computedPlatformType(): GooglePlatformType {\n // This is not a completely correct assumption, since GCP can\n // have an API Key. But if so, then people need to set the platform\n // type explicitly.\n if (this.isApiKey) {\n return \"gai\";\n } else {\n return \"gcp\";\n }\n }\n\n get computedApiVersion(): string {\n switch (this.platform) {\n case \"gai\":\n return \"v1beta\";\n default:\n return \"v1\";\n }\n }\n\n get computedLocation(): string {\n switch (this.apiName) {\n case \"google\":\n return super.computedLocation;\n case \"anthropic\":\n return \"us-east5\";\n default:\n throw new Error(\n `Unknown apiName: ${this.apiName}. Can't get location.`\n );\n }\n }\n\n abstract buildUrlMethod(): Promise<string>;\n\n async buildUrlGenerativeLanguage(): Promise<string> {\n const method = await this.buildUrlMethod();\n const url = `https://generativelanguage.googleapis.com/${this.apiVersion}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexExpress(): Promise<string> {\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://aiplatform.googleapis.com/${this.apiVersion}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexLocation(): Promise<string> {\n const projectId = await this.client.getProjectId();\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://${this.endpoint}/${this.apiVersion}/projects/${projectId}/locations/${this.location}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertex(): Promise<string> {\n if (this.isApiKey) {\n return this.buildUrlVertexExpress();\n } else {\n return this.buildUrlVertexLocation();\n }\n }\n\n async buildUrl(): Promise<string> {\n switch (this.platform) {\n case \"gai\":\n return this.buildUrlGenerativeLanguage();\n default:\n return this.buildUrlVertex();\n }\n }\n\n abstract formatData(\n input: InputType,\n parameters: GoogleModelParams\n ): Promise<unknown>;\n\n async request(\n input: InputType,\n parameters: GoogleAIModelRequestParams,\n\n options: CallOptions,\n runManager?: BaseRunManager\n ): Promise<ResponseType> {\n const moduleName = this.constructor.name;\n const streamingParameters: GoogleAIModelRequestParams = {\n ...parameters,\n streaming: this.streaming,\n };\n const data = await this.formatData(input, streamingParameters);\n\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n data,\n parameters: streamingParameters,\n options,\n connection: {\n ...this,\n url: await this.buildUrl(),\n urlMethod: await this.buildUrlMethod(),\n modelFamily: this.modelFamily,\n modelPublisher: this.modelPublisher,\n computedPlatformType: this.computedPlatformType,\n },\n });\n\n const response = await this._request(data, options);\n\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n response,\n });\n\n return response;\n }\n}\n\nexport abstract class AbstractGoogleLLMConnection<\n MessageType,\n AuthOptions,\n> extends GoogleAIConnection<\n BaseLanguageModelCallOptions,\n MessageType,\n AuthOptions,\n GoogleLLMResponse\n> {\n async buildUrlMethodGemini(): Promise<string> {\n return this.streaming ? \"streamGenerateContent\" : \"generateContent\";\n }\n\n async buildUrlMethodClaude(): Promise<string> {\n return this.streaming ? \"streamRawPredict\" : \"rawPredict\";\n }\n\n async buildUrlMethod(): Promise<string> {\n switch (this.modelFamily) {\n case \"gemini\":\n case \"gemma\": // TODO: Is this true?\n return this.buildUrlMethodGemini();\n case \"claude\":\n return this.buildUrlMethodClaude();\n default:\n throw new Error(`Unknown model family: ${this.modelFamily}`);\n }\n }\n\n async formatData(\n input: MessageType,\n parameters: GoogleAIModelRequestParams\n ): Promise<unknown> {\n // Filter out labels for non-Vertex AI platforms (labels are only supported on Vertex AI)\n let filteredParameters = parameters;\n if (parameters.labels && this.platform !== \"gcp\") {\n const { labels, ...paramsWithoutLabels } = parameters;\n filteredParameters = paramsWithoutLabels;\n }\n\n return this.api.formatData(input, filteredParameters);\n }\n}\n\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\n\nexport abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo {\n const names = eventName.split(\"-\");\n return {\n subEvent: names[1],\n module: names[2],\n };\n }\n\n abstract handleCustomRequestEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomResponseEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomChunkEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n handleCustomEvent(\n eventName: string,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any {\n if (!eventName) {\n return undefined;\n }\n const eventInfo = this.customEventInfo(eventName);\n switch (eventInfo.subEvent) {\n case \"request\":\n return this.handleCustomRequestEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"response\":\n return this.handleCustomResponseEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"chunk\":\n return this.handleCustomChunkEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n default:\n console.error(\n `Unexpected eventInfo for ${eventName} ${JSON.stringify(\n eventInfo,\n null,\n 1\n )}`\n );\n }\n }\n}\n\nexport class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string = \"GoogleRequestLogger\";\n\n log(eventName: string, data: any, tags?: string[]): undefined {\n const tagStr = tags ? `[${tags}]` : \"[]\";\n console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);\n }\n\n handleCustomRequestEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomResponseEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomChunkEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n}\n\nexport class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name = \"GoogleRequestRecorder\";\n\n request: any = {};\n\n response: any = {};\n\n chunk: any[] = [];\n\n handleCustomRequestEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.request = data;\n }\n\n handleCustomResponseEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.response = data;\n }\n\n handleCustomChunkEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.chunk.push(data);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","names":["caller: AsyncCaller","client: GoogleAbstractedClient","streaming?: boolean","data: unknown | undefined","options: CallOptions","requestHeaders: Record<string, string>","opts: GoogleAbstractedClientOps","response: unknown","fields: GoogleConnectionParams<AuthOptions> | undefined","fields: GoogleConnectionParams<any> | undefined","_options: CallOptions","fields: GoogleAIBaseLLMInput<AuthOptions> | undefined","input: InputType","parameters: GoogleAIModelRequestParams","runManager?: BaseRunManager","streamingParameters: GoogleAIModelRequestParams","input: MessageType","eventName: string","data: any","runId: string","tags?: string[]","metadata?: Record<string, any>","_eventInfo: GoogleCustomEventInfo","_runId: string","_metadata?: Record<string, any>","_eventName: string","_tags?: string[]"],"sources":["../src/connection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseLanguageModelCallOptions } from \"@langchain/core/language_models/base\";\nimport {\n AsyncCaller,\n AsyncCallerCallOptions,\n} from \"@langchain/core/utils/async_caller\";\nimport { getRuntimeEnvironment } from \"@langchain/core/utils/env\";\nimport { BaseRunManager } from \"@langchain/core/callbacks/manager\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type {\n GoogleAIBaseLLMInput,\n GoogleConnectionParams,\n GooglePlatformType,\n GoogleResponse,\n GoogleLLMResponse,\n GoogleAIModelRequestParams,\n GoogleRawResponse,\n GoogleAIAPI,\n VertexModelFamily,\n GoogleAIAPIConfig,\n AnthropicAPIConfig,\n GeminiAPIConfig,\n GoogleModelParams,\n} from \"./types.js\";\nimport {\n GoogleAbstractedClient,\n GoogleAbstractedClientOps,\n GoogleAbstractedClientOpsMethod,\n} from \"./auth.js\";\nimport {\n getGeminiAPI,\n modelToFamily,\n modelToPublisher,\n} from \"./utils/index.js\";\nimport { getAnthropicAPI } from \"./utils/anthropic.js\";\n\nexport abstract class GoogleConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n> {\n caller: AsyncCaller;\n\n client: GoogleAbstractedClient;\n\n streaming: boolean;\n\n constructor(\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n this.caller = caller;\n this.client = client;\n this.streaming = streaming ?? false;\n }\n\n abstract buildUrl(): Promise<string>;\n\n abstract buildMethod(): GoogleAbstractedClientOpsMethod;\n\n async _clientInfoHeaders(): Promise<Record<string, string>> {\n const { userAgent, clientLibraryVersion } = await this._getClientInfo();\n return {\n \"User-Agent\": userAgent,\n \"Client-Info\": clientLibraryVersion,\n };\n }\n\n async _getClientInfo(): Promise<{\n userAgent: string;\n clientLibraryVersion: string;\n }> {\n const env = await getRuntimeEnvironment();\n const langchain = env?.library ?? \"langchain-js\";\n // TODO: Add an API for getting the current LangChain version\n const langchainVersion = \"0\";\n const moduleName = await this._moduleName();\n let clientLibraryVersion = `${langchain}/${langchainVersion}`;\n if (moduleName && moduleName.length) {\n clientLibraryVersion = `${clientLibraryVersion}-${moduleName}`;\n }\n return {\n userAgent: clientLibraryVersion,\n clientLibraryVersion: `${langchainVersion}-${moduleName}`,\n };\n }\n\n async _moduleName(): Promise<string> {\n return this.constructor.name;\n }\n\n async additionalHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async _buildOpts(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const url = await this.buildUrl();\n const method = this.buildMethod();\n const infoHeaders = (await this._clientInfoHeaders()) ?? {};\n const additionalHeaders = (await this.additionalHeaders()) ?? {};\n const headers = {\n ...infoHeaders,\n ...additionalHeaders,\n ...requestHeaders,\n };\n\n const opts: GoogleAbstractedClientOps = {\n url,\n method,\n headers,\n signal: options?.signal,\n };\n if (data && method === \"POST\") {\n opts.data = data;\n }\n if (this.streaming) {\n opts.responseType = \"stream\";\n } else {\n opts.responseType = \"json\";\n }\n return opts;\n }\n\n async _request(\n data: unknown | undefined,\n options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<ResponseType> {\n const opts = await this._buildOpts(data, options, requestHeaders);\n const callResponse = await this.caller.callWithOptions(\n { signal: options?.signal },\n async () => this.client.request(opts)\n );\n const response: unknown = callResponse; // Done for typecast safety, I guess\n return <ResponseType>response;\n }\n}\n\nexport abstract class GoogleHostConnection<\n CallOptions extends AsyncCallerCallOptions,\n ResponseType extends GoogleResponse,\n AuthOptions,\n >\n extends GoogleConnection<CallOptions, ResponseType>\n implements GoogleConnectionParams<AuthOptions>\n{\n // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\n platformType: GooglePlatformType | undefined;\n\n _endpoint: string | undefined;\n\n _location: string | undefined;\n\n _apiVersion: string | undefined;\n\n constructor(\n fields: GoogleConnectionParams<AuthOptions> | undefined,\n caller: AsyncCaller,\n client: GoogleAbstractedClient,\n streaming?: boolean\n ) {\n super(caller, client, streaming);\n this.caller = caller;\n\n this.platformType = this.fieldPlatformType(fields);\n this._endpoint = fields?.endpoint;\n this._location = fields?.location;\n this._apiVersion = fields?.apiVersion;\n this.client = client;\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n if (typeof fields === \"undefined\") {\n return undefined;\n }\n if (typeof fields.platformType !== \"undefined\") {\n return fields.platformType;\n }\n if (fields.vertexai === true) {\n return \"gcp\";\n }\n return undefined;\n }\n\n get platform(): GooglePlatformType {\n return this.platformType ?? this.computedPlatformType;\n }\n\n get computedPlatformType(): GooglePlatformType {\n return \"gcp\";\n }\n\n get computedApiVersion(): string {\n return \"v1\";\n }\n\n get apiVersion(): string {\n return this._apiVersion ?? this.computedApiVersion;\n }\n\n get location(): string {\n return this._location ?? this.computedLocation;\n }\n\n get computedLocation(): string {\n return \"us-central1\";\n }\n\n get endpoint(): string {\n return this._endpoint ?? this.computedEndpoint;\n }\n\n get computedEndpoint(): string {\n if (this.location === \"global\") {\n return \"aiplatform.googleapis.com\";\n } else {\n return `${this.location}-aiplatform.googleapis.com`;\n }\n }\n\n buildMethod(): GoogleAbstractedClientOpsMethod {\n return \"POST\";\n }\n}\n\nexport abstract class GoogleRawConnection<\n CallOptions extends AsyncCallerCallOptions,\n AuthOptions,\n> extends GoogleHostConnection<CallOptions, GoogleRawResponse, AuthOptions> {\n async _buildOpts(\n data: unknown | undefined,\n _options: CallOptions,\n requestHeaders: Record<string, string> = {}\n ): Promise<GoogleAbstractedClientOps> {\n const opts = await super._buildOpts(data, _options, requestHeaders);\n opts.responseType = \"blob\";\n return opts;\n }\n}\n\nexport abstract class GoogleAIConnection<\n CallOptions extends AsyncCallerCallOptions,\n InputType,\n AuthOptions,\n ResponseType extends GoogleResponse,\n >\n extends GoogleHostConnection<CallOptions, ResponseType, AuthOptions>\n implements GoogleAIBaseLLMInput<AuthOptions>\n{\n model: string;\n\n modelName: string;\n\n client: GoogleAbstractedClient;\n\n _apiName?: string;\n\n apiConfig?: GoogleAIAPIConfig;\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.client = client;\n this.modelName = fields?.model ?? fields?.modelName ?? this.model;\n this.model = this.modelName;\n\n this._apiName = fields?.apiName;\n this.apiConfig = {\n safetyHandler: fields?.safetyHandler, // For backwards compatibility\n ...fields?.apiConfig,\n };\n }\n\n get modelFamily(): VertexModelFamily {\n return modelToFamily(this.model);\n }\n\n get modelPublisher(): string {\n return modelToPublisher(this.model);\n }\n\n get computedAPIName(): string {\n // At least at the moment, model publishers and APIs map the same\n return this.modelPublisher;\n }\n\n get apiName(): string {\n return this._apiName ?? this.computedAPIName;\n }\n\n get api(): GoogleAIAPI {\n switch (this.apiName) {\n case \"google\":\n case \"gemma\": // TODO: Is this true?\n return getGeminiAPI(this.apiConfig as GeminiAPIConfig);\n case \"anthropic\":\n return getAnthropicAPI(this.apiConfig as AnthropicAPIConfig);\n default:\n throw new Error(`Unknown API: ${this.apiName}`);\n }\n }\n\n get isApiKey(): boolean {\n return this.client.clientType === \"apiKey\";\n }\n\n fieldPlatformType(\n fields: GoogleConnectionParams<any> | undefined\n ): GooglePlatformType | undefined {\n const ret = super.fieldPlatformType(fields);\n if (typeof ret !== \"undefined\") {\n return ret;\n }\n if (fields?.vertexai === false) {\n return \"gai\";\n }\n return undefined;\n }\n\n get computedPlatformType(): GooglePlatformType {\n // This is not a completely correct assumption, since GCP can\n // have an API Key. But if so, then people need to set the platform\n // type explicitly.\n if (this.isApiKey) {\n return \"gai\";\n } else {\n return \"gcp\";\n }\n }\n\n get computedApiVersion(): string {\n switch (this.platform) {\n case \"gai\":\n return \"v1beta\";\n default:\n return \"v1\";\n }\n }\n\n get computedLocation(): string {\n switch (this.apiName) {\n case \"google\":\n return super.computedLocation;\n case \"anthropic\":\n return \"us-east5\";\n default:\n throw new Error(\n `Unknown apiName: ${this.apiName}. Can't get location.`\n );\n }\n }\n\n abstract buildUrlMethod(): Promise<string>;\n\n async buildUrlGenerativeLanguage(): Promise<string> {\n const method = await this.buildUrlMethod();\n const url = `https://generativelanguage.googleapis.com/${this.apiVersion}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexExpress(): Promise<string> {\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://aiplatform.googleapis.com/${this.apiVersion}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertexLocation(): Promise<string> {\n const projectId = await this.client.getProjectId();\n const method = await this.buildUrlMethod();\n const publisher = this.modelPublisher;\n const url = `https://${this.endpoint}/${this.apiVersion}/projects/${projectId}/locations/${this.location}/publishers/${publisher}/models/${this.model}:${method}`;\n return url;\n }\n\n async buildUrlVertex(): Promise<string> {\n if (this.isApiKey) {\n return this.buildUrlVertexExpress();\n } else {\n return this.buildUrlVertexLocation();\n }\n }\n\n async buildUrl(): Promise<string> {\n switch (this.platform) {\n case \"gai\":\n return this.buildUrlGenerativeLanguage();\n default:\n return this.buildUrlVertex();\n }\n }\n\n abstract formatData(\n input: InputType,\n parameters: GoogleModelParams\n ): Promise<unknown>;\n\n async request(\n input: InputType,\n parameters: GoogleAIModelRequestParams,\n\n options: CallOptions,\n runManager?: BaseRunManager\n ): Promise<ResponseType> {\n const moduleName = this.constructor.name;\n const streamingParameters: GoogleAIModelRequestParams = {\n ...parameters,\n streaming: this.streaming,\n };\n const data = await this.formatData(input, streamingParameters);\n\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n data,\n parameters: streamingParameters,\n options,\n connection: {\n ...this,\n url: await this.buildUrl(),\n urlMethod: await this.buildUrlMethod(),\n modelFamily: this.modelFamily,\n modelPublisher: this.modelPublisher,\n computedPlatformType: this.computedPlatformType,\n },\n });\n\n const response = await this._request(data, options);\n\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n response,\n });\n\n return response;\n }\n}\n\nexport abstract class AbstractGoogleLLMConnection<\n MessageType,\n AuthOptions,\n> extends GoogleAIConnection<\n BaseLanguageModelCallOptions,\n MessageType,\n AuthOptions,\n GoogleLLMResponse\n> {\n async buildUrlMethodGemini(): Promise<string> {\n return this.streaming ? \"streamGenerateContent\" : \"generateContent\";\n }\n\n async buildUrlMethodClaude(): Promise<string> {\n return this.streaming ? \"streamRawPredict\" : \"rawPredict\";\n }\n\n async buildUrlMethod(): Promise<string> {\n switch (this.modelFamily) {\n case \"gemini\":\n case \"gemma\": // TODO: Is this true?\n return this.buildUrlMethodGemini();\n case \"claude\":\n return this.buildUrlMethodClaude();\n default:\n throw new Error(`Unknown model family: ${this.modelFamily}`);\n }\n }\n\n async formatData(\n input: MessageType,\n parameters: GoogleAIModelRequestParams\n ): Promise<unknown> {\n // Filter out labels for non-Vertex AI platforms (labels are only supported on Vertex AI)\n let filteredParameters = parameters;\n if (parameters.labels && this.platform !== \"gcp\") {\n const { labels, ...paramsWithoutLabels } = parameters;\n filteredParameters = paramsWithoutLabels;\n }\n\n return this.api.formatData(input, filteredParameters);\n }\n}\n\nexport interface GoogleCustomEventInfo {\n subEvent: string;\n module: string;\n}\n\nexport abstract class GoogleRequestCallbackHandler extends BaseCallbackHandler {\n customEventInfo(eventName: string): GoogleCustomEventInfo {\n const names = eventName.split(\"-\");\n return {\n subEvent: names[1],\n module: names[2],\n };\n }\n\n abstract handleCustomRequestEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomResponseEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n abstract handleCustomChunkEvent(\n eventName: string,\n eventInfo: GoogleCustomEventInfo,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any;\n\n handleCustomEvent(\n eventName: string,\n data: any,\n runId: string,\n tags?: string[],\n metadata?: Record<string, any>\n ): any {\n if (!eventName) {\n return undefined;\n }\n const eventInfo = this.customEventInfo(eventName);\n switch (eventInfo.subEvent) {\n case \"request\":\n return this.handleCustomRequestEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"response\":\n return this.handleCustomResponseEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n case \"chunk\":\n return this.handleCustomChunkEvent(\n eventName,\n eventInfo,\n data,\n runId,\n tags,\n metadata\n );\n default:\n console.error(\n `Unexpected eventInfo for ${eventName} ${JSON.stringify(\n eventInfo,\n null,\n 1\n )}`\n );\n }\n }\n}\n\nexport class GoogleRequestLogger extends GoogleRequestCallbackHandler {\n name: string = \"GoogleRequestLogger\";\n\n log(eventName: string, data: any, tags?: string[]): undefined {\n const tagStr = tags ? `[${tags}]` : \"[]\";\n console.log(`${eventName} ${tagStr} ${JSON.stringify(data, null, 1)}`);\n }\n\n handleCustomRequestEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomResponseEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n\n handleCustomChunkEvent(\n eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.log(eventName, data, tags);\n }\n}\n\nexport class GoogleRequestRecorder extends GoogleRequestCallbackHandler {\n name = \"GoogleRequestRecorder\";\n\n request: any = {};\n\n response: any = {};\n\n chunk: any[] = [];\n\n handleCustomRequestEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.request = data;\n }\n\n handleCustomResponseEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.response = data;\n }\n\n handleCustomChunkEvent(\n _eventName: string,\n _eventInfo: GoogleCustomEventInfo,\n data: any,\n _runId: string,\n _tags?: string[],\n _metadata?: Record<string, any>\n ): any {\n this.chunk.push(data);\n }\n}\n"],"mappings":"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"}
@@ -20,7 +20,19 @@ function removeAdditionalProperties(obj) {
20
20
  if (typeof obj === "object" && obj !== null) {
21
21
  const newObj = { ...obj };
22
22
  if ("additionalProperties" in newObj) delete newObj.additionalProperties;
23
- if ("anyOf" in newObj || "oneOf" in newObj) throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
23
+ if ("anyOf" in newObj || "oneOf" in newObj) {
24
+ const unionTypes = newObj.anyOf || newObj.oneOf;
25
+ if (Array.isArray(unionTypes) && unionTypes.length === 2) {
26
+ const nullIndex = unionTypes.findIndex((t) => t.type === "null");
27
+ if (nullIndex >= 0) {
28
+ const nonNullType = unionTypes[nullIndex === 0 ? 1 : 0];
29
+ delete newObj.anyOf;
30
+ delete newObj.oneOf;
31
+ for (const key in nonNullType) if (key in nonNullType) newObj[key] = nonNullType[key];
32
+ newObj.nullable = true;
33
+ } else throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
34
+ } else throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
35
+ }
24
36
  if ("exclusiveMinimum" in newObj && newObj.exclusiveMinimum === 0) {
25
37
  newObj.minimum = .01;
26
38
  delete newObj.exclusiveMinimum;
@@ -1 +1 @@
1
- {"version":3,"file":"zod_to_gemini_parameters.cjs","names":["obj: Record<string, any>","schema: InteropZodType<RunOutput> | JsonSchema7Type","schema: Record<string, any>"],"sources":["../../src/utils/zod_to_gemini_parameters.ts"],"sourcesContent":["import {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n type JsonSchema7Type,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n GeminiFunctionSchema,\n GeminiJsonSchema,\n GeminiJsonSchemaDirty,\n} from \"../types.js\";\n\nexport function adjustObjectType(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n if (!Array.isArray(obj.type)) {\n return obj;\n }\n\n const len = obj.type.length;\n const nullIndex = obj.type.indexOf(\"null\");\n if (len === 2 && nullIndex >= 0) {\n // There are only two values set for the type, and one of them is \"null\".\n // Set the type to the other one and set nullable to true.\n const typeIndex = nullIndex === 0 ? 1 : 0;\n obj.type = obj.type[typeIndex];\n obj.nullable = true;\n } else if (len === 1 && nullIndex === 0) {\n // This is nullable only without a type, which doesn't\n // make sense for Gemini\n throw new Error(\"zod_to_gemini_parameters: Gemini cannot handle null type\");\n } else if (len === 1) {\n // Although an array, it has only one value.\n // So set it to the string to match what Gemini expects.\n obj.type = obj?.type[0];\n } else {\n // Anything else could be a union type, so reject it.\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types\"\n );\n }\n return obj;\n}\n\nexport function removeAdditionalProperties(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n): GeminiJsonSchema {\n if (typeof obj === \"object\" && obj !== null) {\n const newObj = { ...obj };\n\n if (\"additionalProperties\" in newObj) {\n delete newObj.additionalProperties;\n }\n\n // Check for union types (anyOf, oneOf) which Gemini doesn't support\n if (\"anyOf\" in newObj || \"oneOf\" in newObj) {\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n\n // Convert exclusiveMinimum (from .positive()) to minimum\n if (\"exclusiveMinimum\" in newObj && newObj.exclusiveMinimum === 0) {\n // Convert .positive() to .min(0.01)\n newObj.minimum = 0.01;\n delete newObj.exclusiveMinimum;\n } else if (\"exclusiveMinimum\" in newObj) {\n // Convert other exclusiveMinimum to minimum with a small increment\n newObj.minimum = newObj.exclusiveMinimum + 0.00001;\n delete newObj.exclusiveMinimum;\n }\n\n adjustObjectType(newObj);\n\n for (const key in newObj) {\n if (key in newObj) {\n if (Array.isArray(newObj[key])) {\n newObj[key] = newObj[key].map(removeAdditionalProperties);\n } else if (typeof newObj[key] === \"object\" && newObj[key] !== null) {\n newObj[key] = removeAdditionalProperties(newObj[key]);\n }\n }\n }\n\n return newObj as GeminiJsonSchema;\n }\n\n return obj as GeminiJsonSchema;\n}\n\nexport function schemaToGeminiParameters<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n>(schema: InteropZodType<RunOutput> | JsonSchema7Type): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n // Zod sometimes also makes an array of type (because of .nullish()),\n // which needs cleaning up.\n const jsonSchema = removeAdditionalProperties(\n isInteropZodSchema(schema) ? toJsonSchema(schema) : schema\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n\nexport function jsonSchemaToGeminiParameters(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema: Record<string, any>\n): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n const jsonSchema = removeAdditionalProperties(\n schema as GeminiJsonSchemaDirty\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n"],"mappings":";;;;;AAcA,SAAgB,iBAEdA,KAEqB;AACrB,KAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAC1B,QAAO;CAGT,MAAM,MAAM,IAAI,KAAK;CACrB,MAAM,YAAY,IAAI,KAAK,QAAQ,OAAO;AAC1C,KAAI,QAAQ,KAAK,aAAa,GAAG;EAG/B,MAAM,YAAY,cAAc,IAAI,IAAI;EACxC,IAAI,OAAO,IAAI,KAAK;EACpB,IAAI,WAAW;CAChB,WAAU,QAAQ,KAAK,cAAc,EAGpC,OAAM,IAAI,MAAM;UACP,QAAQ,GAGjB,IAAI,OAAO,KAAK,KAAK;KAGrB,OAAM,IAAI,MACR;AAGJ,QAAO;AACR;AAED,SAAgB,2BAEdA,KACkB;AAClB,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAC3C,MAAM,SAAS,EAAE,GAAG,IAAK;AAEzB,MAAI,0BAA0B,QAC5B,OAAO,OAAO;AAIhB,MAAI,WAAW,UAAU,WAAW,OAClC,OAAM,IAAI,MACR;AAMJ,MAAI,sBAAsB,UAAU,OAAO,qBAAqB,GAAG;GAEjE,OAAO,UAAU;GACjB,OAAO,OAAO;EACf,WAAU,sBAAsB,QAAQ;GAEvC,OAAO,UAAU,OAAO,mBAAmB;GAC3C,OAAO,OAAO;EACf;EAED,iBAAiB,OAAO;AAExB,OAAK,MAAM,OAAO,OAChB,KAAI,OAAO,QACT;OAAI,MAAM,QAAQ,OAAO,KAAK,EAC5B,OAAO,OAAO,OAAO,KAAK,IAAI,2BAA2B;YAChD,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,MAC5D,OAAO,OAAO,2BAA2B,OAAO,KAAK;EACtD;AAIL,SAAO;CACR;AAED,QAAO;AACR;AAED,SAAgB,yBAGdC,QAA2E;CAK3E,MAAM,aAAa,gFACE,OAAO,wDAAgB,OAAO,GAAG,OACrD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR;AAED,SAAgB,6BAEdC,QACsB;CAGtB,MAAM,aAAa,2BACjB,OACD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR"}
1
+ {"version":3,"file":"zod_to_gemini_parameters.cjs","names":["obj: Record<string, any>","schema: InteropZodType<RunOutput> | JsonSchema7Type","schema: Record<string, any>"],"sources":["../../src/utils/zod_to_gemini_parameters.ts"],"sourcesContent":["import {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n type JsonSchema7Type,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n GeminiFunctionSchema,\n GeminiJsonSchema,\n GeminiJsonSchemaDirty,\n} from \"../types.js\";\n\nexport function adjustObjectType(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n if (!Array.isArray(obj.type)) {\n return obj;\n }\n\n const len = obj.type.length;\n const nullIndex = obj.type.indexOf(\"null\");\n if (len === 2 && nullIndex >= 0) {\n // There are only two values set for the type, and one of them is \"null\".\n // Set the type to the other one and set nullable to true.\n const typeIndex = nullIndex === 0 ? 1 : 0;\n obj.type = obj.type[typeIndex];\n obj.nullable = true;\n } else if (len === 1 && nullIndex === 0) {\n // This is nullable only without a type, which doesn't\n // make sense for Gemini\n throw new Error(\"zod_to_gemini_parameters: Gemini cannot handle null type\");\n } else if (len === 1) {\n // Although an array, it has only one value.\n // So set it to the string to match what Gemini expects.\n obj.type = obj?.type[0];\n } else {\n // Anything else could be a union type, so reject it.\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types\"\n );\n }\n return obj;\n}\n\nexport function removeAdditionalProperties(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n): GeminiJsonSchema {\n if (typeof obj === \"object\" && obj !== null) {\n const newObj = { ...obj };\n\n if (\"additionalProperties\" in newObj) {\n delete newObj.additionalProperties;\n }\n\n // Check for union types (anyOf, oneOf) which Gemini doesn't support\n if (\"anyOf\" in newObj || \"oneOf\" in newObj) {\n const unionTypes = newObj.anyOf || newObj.oneOf;\n\n // Check if this is a nullable union (e.g., T | null)\n // This is a 2-element array where one element is {type: \"null\"}\n if (Array.isArray(unionTypes) && unionTypes.length === 2) {\n const nullIndex = unionTypes.findIndex((t) => t.type === \"null\");\n\n if (nullIndex >= 0) {\n // This is a nullable union - extract the non-null type\n const nonNullType = unionTypes[nullIndex === 0 ? 1 : 0];\n delete newObj.anyOf;\n delete newObj.oneOf;\n // Merge the non-null type properties and add nullable: true\n for (const key in nonNullType) {\n if (key in nonNullType) {\n newObj[key] = nonNullType[key];\n }\n }\n newObj.nullable = true;\n } else {\n // Not a simple nullable union - reject it\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n } else {\n // Not a simple nullable union - reject it\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n }\n\n // Convert exclusiveMinimum (from .positive()) to minimum\n if (\"exclusiveMinimum\" in newObj && newObj.exclusiveMinimum === 0) {\n // Convert .positive() to .min(0.01)\n newObj.minimum = 0.01;\n delete newObj.exclusiveMinimum;\n } else if (\"exclusiveMinimum\" in newObj) {\n // Convert other exclusiveMinimum to minimum with a small increment\n newObj.minimum = newObj.exclusiveMinimum + 0.00001;\n delete newObj.exclusiveMinimum;\n }\n\n adjustObjectType(newObj);\n\n for (const key in newObj) {\n if (key in newObj) {\n if (Array.isArray(newObj[key])) {\n newObj[key] = newObj[key].map(removeAdditionalProperties);\n } else if (typeof newObj[key] === \"object\" && newObj[key] !== null) {\n newObj[key] = removeAdditionalProperties(newObj[key]);\n }\n }\n }\n\n return newObj as GeminiJsonSchema;\n }\n\n return obj as GeminiJsonSchema;\n}\n\nexport function schemaToGeminiParameters<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n>(schema: InteropZodType<RunOutput> | JsonSchema7Type): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n // Zod sometimes also makes an array of type (because of .nullish()),\n // which needs cleaning up.\n const jsonSchema = removeAdditionalProperties(\n isInteropZodSchema(schema) ? toJsonSchema(schema) : schema\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n\nexport function jsonSchemaToGeminiParameters(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema: Record<string, any>\n): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n const jsonSchema = removeAdditionalProperties(\n schema as GeminiJsonSchemaDirty\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n"],"mappings":";;;;;AAcA,SAAgB,iBAEdA,KAEqB;AACrB,KAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAC1B,QAAO;CAGT,MAAM,MAAM,IAAI,KAAK;CACrB,MAAM,YAAY,IAAI,KAAK,QAAQ,OAAO;AAC1C,KAAI,QAAQ,KAAK,aAAa,GAAG;EAG/B,MAAM,YAAY,cAAc,IAAI,IAAI;EACxC,IAAI,OAAO,IAAI,KAAK;EACpB,IAAI,WAAW;CAChB,WAAU,QAAQ,KAAK,cAAc,EAGpC,OAAM,IAAI,MAAM;UACP,QAAQ,GAGjB,IAAI,OAAO,KAAK,KAAK;KAGrB,OAAM,IAAI,MACR;AAGJ,QAAO;AACR;AAED,SAAgB,2BAEdA,KACkB;AAClB,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAC3C,MAAM,SAAS,EAAE,GAAG,IAAK;AAEzB,MAAI,0BAA0B,QAC5B,OAAO,OAAO;AAIhB,MAAI,WAAW,UAAU,WAAW,QAAQ;GAC1C,MAAM,aAAa,OAAO,SAAS,OAAO;AAI1C,OAAI,MAAM,QAAQ,WAAW,IAAI,WAAW,WAAW,GAAG;IACxD,MAAM,YAAY,WAAW,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhE,QAAI,aAAa,GAAG;KAElB,MAAM,cAAc,WAAW,cAAc,IAAI,IAAI;KACrD,OAAO,OAAO;KACd,OAAO,OAAO;AAEd,UAAK,MAAM,OAAO,YAChB,KAAI,OAAO,aACT,OAAO,OAAO,YAAY;KAG9B,OAAO,WAAW;IACnB,MAEC,OAAM,IAAI,MACR;GAIL,MAEC,OAAM,IAAI,MACR;EAIL;AAGD,MAAI,sBAAsB,UAAU,OAAO,qBAAqB,GAAG;GAEjE,OAAO,UAAU;GACjB,OAAO,OAAO;EACf,WAAU,sBAAsB,QAAQ;GAEvC,OAAO,UAAU,OAAO,mBAAmB;GAC3C,OAAO,OAAO;EACf;EAED,iBAAiB,OAAO;AAExB,OAAK,MAAM,OAAO,OAChB,KAAI,OAAO,QACT;OAAI,MAAM,QAAQ,OAAO,KAAK,EAC5B,OAAO,OAAO,OAAO,KAAK,IAAI,2BAA2B;YAChD,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,MAC5D,OAAO,OAAO,2BAA2B,OAAO,KAAK;EACtD;AAIL,SAAO;CACR;AAED,QAAO;AACR;AAED,SAAgB,yBAGdC,QAA2E;CAK3E,MAAM,aAAa,gFACE,OAAO,wDAAgB,OAAO,GAAG,OACrD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR;AAED,SAAgB,6BAEdC,QACsB;CAGtB,MAAM,aAAa,2BACjB,OACD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR"}
@@ -19,7 +19,19 @@ function removeAdditionalProperties(obj) {
19
19
  if (typeof obj === "object" && obj !== null) {
20
20
  const newObj = { ...obj };
21
21
  if ("additionalProperties" in newObj) delete newObj.additionalProperties;
22
- if ("anyOf" in newObj || "oneOf" in newObj) throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
22
+ if ("anyOf" in newObj || "oneOf" in newObj) {
23
+ const unionTypes = newObj.anyOf || newObj.oneOf;
24
+ if (Array.isArray(unionTypes) && unionTypes.length === 2) {
25
+ const nullIndex = unionTypes.findIndex((t) => t.type === "null");
26
+ if (nullIndex >= 0) {
27
+ const nonNullType = unionTypes[nullIndex === 0 ? 1 : 0];
28
+ delete newObj.anyOf;
29
+ delete newObj.oneOf;
30
+ for (const key in nonNullType) if (key in nonNullType) newObj[key] = nonNullType[key];
31
+ newObj.nullable = true;
32
+ } else throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
33
+ } else throw new Error("zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). Consider using a flat object structure with optional fields instead.");
34
+ }
23
35
  if ("exclusiveMinimum" in newObj && newObj.exclusiveMinimum === 0) {
24
36
  newObj.minimum = .01;
25
37
  delete newObj.exclusiveMinimum;
@@ -1 +1 @@
1
- {"version":3,"file":"zod_to_gemini_parameters.js","names":["obj: Record<string, any>","schema: InteropZodType<RunOutput> | JsonSchema7Type","schema: Record<string, any>"],"sources":["../../src/utils/zod_to_gemini_parameters.ts"],"sourcesContent":["import {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n type JsonSchema7Type,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n GeminiFunctionSchema,\n GeminiJsonSchema,\n GeminiJsonSchemaDirty,\n} from \"../types.js\";\n\nexport function adjustObjectType(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n if (!Array.isArray(obj.type)) {\n return obj;\n }\n\n const len = obj.type.length;\n const nullIndex = obj.type.indexOf(\"null\");\n if (len === 2 && nullIndex >= 0) {\n // There are only two values set for the type, and one of them is \"null\".\n // Set the type to the other one and set nullable to true.\n const typeIndex = nullIndex === 0 ? 1 : 0;\n obj.type = obj.type[typeIndex];\n obj.nullable = true;\n } else if (len === 1 && nullIndex === 0) {\n // This is nullable only without a type, which doesn't\n // make sense for Gemini\n throw new Error(\"zod_to_gemini_parameters: Gemini cannot handle null type\");\n } else if (len === 1) {\n // Although an array, it has only one value.\n // So set it to the string to match what Gemini expects.\n obj.type = obj?.type[0];\n } else {\n // Anything else could be a union type, so reject it.\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types\"\n );\n }\n return obj;\n}\n\nexport function removeAdditionalProperties(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n): GeminiJsonSchema {\n if (typeof obj === \"object\" && obj !== null) {\n const newObj = { ...obj };\n\n if (\"additionalProperties\" in newObj) {\n delete newObj.additionalProperties;\n }\n\n // Check for union types (anyOf, oneOf) which Gemini doesn't support\n if (\"anyOf\" in newObj || \"oneOf\" in newObj) {\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n\n // Convert exclusiveMinimum (from .positive()) to minimum\n if (\"exclusiveMinimum\" in newObj && newObj.exclusiveMinimum === 0) {\n // Convert .positive() to .min(0.01)\n newObj.minimum = 0.01;\n delete newObj.exclusiveMinimum;\n } else if (\"exclusiveMinimum\" in newObj) {\n // Convert other exclusiveMinimum to minimum with a small increment\n newObj.minimum = newObj.exclusiveMinimum + 0.00001;\n delete newObj.exclusiveMinimum;\n }\n\n adjustObjectType(newObj);\n\n for (const key in newObj) {\n if (key in newObj) {\n if (Array.isArray(newObj[key])) {\n newObj[key] = newObj[key].map(removeAdditionalProperties);\n } else if (typeof newObj[key] === \"object\" && newObj[key] !== null) {\n newObj[key] = removeAdditionalProperties(newObj[key]);\n }\n }\n }\n\n return newObj as GeminiJsonSchema;\n }\n\n return obj as GeminiJsonSchema;\n}\n\nexport function schemaToGeminiParameters<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n>(schema: InteropZodType<RunOutput> | JsonSchema7Type): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n // Zod sometimes also makes an array of type (because of .nullish()),\n // which needs cleaning up.\n const jsonSchema = removeAdditionalProperties(\n isInteropZodSchema(schema) ? toJsonSchema(schema) : schema\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n\nexport function jsonSchemaToGeminiParameters(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema: Record<string, any>\n): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n const jsonSchema = removeAdditionalProperties(\n schema as GeminiJsonSchemaDirty\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n"],"mappings":";;;;AAcA,SAAgB,iBAEdA,KAEqB;AACrB,KAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAC1B,QAAO;CAGT,MAAM,MAAM,IAAI,KAAK;CACrB,MAAM,YAAY,IAAI,KAAK,QAAQ,OAAO;AAC1C,KAAI,QAAQ,KAAK,aAAa,GAAG;EAG/B,MAAM,YAAY,cAAc,IAAI,IAAI;EACxC,IAAI,OAAO,IAAI,KAAK;EACpB,IAAI,WAAW;CAChB,WAAU,QAAQ,KAAK,cAAc,EAGpC,OAAM,IAAI,MAAM;UACP,QAAQ,GAGjB,IAAI,OAAO,KAAK,KAAK;KAGrB,OAAM,IAAI,MACR;AAGJ,QAAO;AACR;AAED,SAAgB,2BAEdA,KACkB;AAClB,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAC3C,MAAM,SAAS,EAAE,GAAG,IAAK;AAEzB,MAAI,0BAA0B,QAC5B,OAAO,OAAO;AAIhB,MAAI,WAAW,UAAU,WAAW,OAClC,OAAM,IAAI,MACR;AAMJ,MAAI,sBAAsB,UAAU,OAAO,qBAAqB,GAAG;GAEjE,OAAO,UAAU;GACjB,OAAO,OAAO;EACf,WAAU,sBAAsB,QAAQ;GAEvC,OAAO,UAAU,OAAO,mBAAmB;GAC3C,OAAO,OAAO;EACf;EAED,iBAAiB,OAAO;AAExB,OAAK,MAAM,OAAO,OAChB,KAAI,OAAO,QACT;OAAI,MAAM,QAAQ,OAAO,KAAK,EAC5B,OAAO,OAAO,OAAO,KAAK,IAAI,2BAA2B;YAChD,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,MAC5D,OAAO,OAAO,2BAA2B,OAAO,KAAK;EACtD;AAIL,SAAO;CACR;AAED,QAAO;AACR;AAED,SAAgB,yBAGdC,QAA2E;CAK3E,MAAM,aAAa,2BACjB,mBAAmB,OAAO,GAAG,aAAa,OAAO,GAAG,OACrD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR;AAED,SAAgB,6BAEdC,QACsB;CAGtB,MAAM,aAAa,2BACjB,OACD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR"}
1
+ {"version":3,"file":"zod_to_gemini_parameters.js","names":["obj: Record<string, any>","schema: InteropZodType<RunOutput> | JsonSchema7Type","schema: Record<string, any>"],"sources":["../../src/utils/zod_to_gemini_parameters.ts"],"sourcesContent":["import {\n InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n type JsonSchema7Type,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n GeminiFunctionSchema,\n GeminiJsonSchema,\n GeminiJsonSchemaDirty,\n} from \"../types.js\";\n\nexport function adjustObjectType(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n if (!Array.isArray(obj.type)) {\n return obj;\n }\n\n const len = obj.type.length;\n const nullIndex = obj.type.indexOf(\"null\");\n if (len === 2 && nullIndex >= 0) {\n // There are only two values set for the type, and one of them is \"null\".\n // Set the type to the other one and set nullable to true.\n const typeIndex = nullIndex === 0 ? 1 : 0;\n obj.type = obj.type[typeIndex];\n obj.nullable = true;\n } else if (len === 1 && nullIndex === 0) {\n // This is nullable only without a type, which doesn't\n // make sense for Gemini\n throw new Error(\"zod_to_gemini_parameters: Gemini cannot handle null type\");\n } else if (len === 1) {\n // Although an array, it has only one value.\n // So set it to the string to match what Gemini expects.\n obj.type = obj?.type[0];\n } else {\n // Anything else could be a union type, so reject it.\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types\"\n );\n }\n return obj;\n}\n\nexport function removeAdditionalProperties(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: Record<string, any>\n): GeminiJsonSchema {\n if (typeof obj === \"object\" && obj !== null) {\n const newObj = { ...obj };\n\n if (\"additionalProperties\" in newObj) {\n delete newObj.additionalProperties;\n }\n\n // Check for union types (anyOf, oneOf) which Gemini doesn't support\n if (\"anyOf\" in newObj || \"oneOf\" in newObj) {\n const unionTypes = newObj.anyOf || newObj.oneOf;\n\n // Check if this is a nullable union (e.g., T | null)\n // This is a 2-element array where one element is {type: \"null\"}\n if (Array.isArray(unionTypes) && unionTypes.length === 2) {\n const nullIndex = unionTypes.findIndex((t) => t.type === \"null\");\n\n if (nullIndex >= 0) {\n // This is a nullable union - extract the non-null type\n const nonNullType = unionTypes[nullIndex === 0 ? 1 : 0];\n delete newObj.anyOf;\n delete newObj.oneOf;\n // Merge the non-null type properties and add nullable: true\n for (const key in nonNullType) {\n if (key in nonNullType) {\n newObj[key] = nonNullType[key];\n }\n }\n newObj.nullable = true;\n } else {\n // Not a simple nullable union - reject it\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n } else {\n // Not a simple nullable union - reject it\n throw new Error(\n \"zod_to_gemini_parameters: Gemini cannot handle union types (discriminatedUnion, anyOf, oneOf). \" +\n \"Consider using a flat object structure with optional fields instead.\"\n );\n }\n }\n\n // Convert exclusiveMinimum (from .positive()) to minimum\n if (\"exclusiveMinimum\" in newObj && newObj.exclusiveMinimum === 0) {\n // Convert .positive() to .min(0.01)\n newObj.minimum = 0.01;\n delete newObj.exclusiveMinimum;\n } else if (\"exclusiveMinimum\" in newObj) {\n // Convert other exclusiveMinimum to minimum with a small increment\n newObj.minimum = newObj.exclusiveMinimum + 0.00001;\n delete newObj.exclusiveMinimum;\n }\n\n adjustObjectType(newObj);\n\n for (const key in newObj) {\n if (key in newObj) {\n if (Array.isArray(newObj[key])) {\n newObj[key] = newObj[key].map(removeAdditionalProperties);\n } else if (typeof newObj[key] === \"object\" && newObj[key] !== null) {\n newObj[key] = removeAdditionalProperties(newObj[key]);\n }\n }\n }\n\n return newObj as GeminiJsonSchema;\n }\n\n return obj as GeminiJsonSchema;\n}\n\nexport function schemaToGeminiParameters<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>,\n>(schema: InteropZodType<RunOutput> | JsonSchema7Type): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n // Zod sometimes also makes an array of type (because of .nullish()),\n // which needs cleaning up.\n const jsonSchema = removeAdditionalProperties(\n isInteropZodSchema(schema) ? toJsonSchema(schema) : schema\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n\nexport function jsonSchemaToGeminiParameters(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema: Record<string, any>\n): GeminiFunctionSchema {\n // Gemini doesn't accept either the $schema or additionalProperties\n // attributes, so we need to explicitly remove them.\n const jsonSchema = removeAdditionalProperties(\n schema as GeminiJsonSchemaDirty\n );\n const { $schema, ...rest } = jsonSchema;\n\n return rest;\n}\n"],"mappings":";;;;AAcA,SAAgB,iBAEdA,KAEqB;AACrB,KAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAC1B,QAAO;CAGT,MAAM,MAAM,IAAI,KAAK;CACrB,MAAM,YAAY,IAAI,KAAK,QAAQ,OAAO;AAC1C,KAAI,QAAQ,KAAK,aAAa,GAAG;EAG/B,MAAM,YAAY,cAAc,IAAI,IAAI;EACxC,IAAI,OAAO,IAAI,KAAK;EACpB,IAAI,WAAW;CAChB,WAAU,QAAQ,KAAK,cAAc,EAGpC,OAAM,IAAI,MAAM;UACP,QAAQ,GAGjB,IAAI,OAAO,KAAK,KAAK;KAGrB,OAAM,IAAI,MACR;AAGJ,QAAO;AACR;AAED,SAAgB,2BAEdA,KACkB;AAClB,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAC3C,MAAM,SAAS,EAAE,GAAG,IAAK;AAEzB,MAAI,0BAA0B,QAC5B,OAAO,OAAO;AAIhB,MAAI,WAAW,UAAU,WAAW,QAAQ;GAC1C,MAAM,aAAa,OAAO,SAAS,OAAO;AAI1C,OAAI,MAAM,QAAQ,WAAW,IAAI,WAAW,WAAW,GAAG;IACxD,MAAM,YAAY,WAAW,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhE,QAAI,aAAa,GAAG;KAElB,MAAM,cAAc,WAAW,cAAc,IAAI,IAAI;KACrD,OAAO,OAAO;KACd,OAAO,OAAO;AAEd,UAAK,MAAM,OAAO,YAChB,KAAI,OAAO,aACT,OAAO,OAAO,YAAY;KAG9B,OAAO,WAAW;IACnB,MAEC,OAAM,IAAI,MACR;GAIL,MAEC,OAAM,IAAI,MACR;EAIL;AAGD,MAAI,sBAAsB,UAAU,OAAO,qBAAqB,GAAG;GAEjE,OAAO,UAAU;GACjB,OAAO,OAAO;EACf,WAAU,sBAAsB,QAAQ;GAEvC,OAAO,UAAU,OAAO,mBAAmB;GAC3C,OAAO,OAAO;EACf;EAED,iBAAiB,OAAO;AAExB,OAAK,MAAM,OAAO,OAChB,KAAI,OAAO,QACT;OAAI,MAAM,QAAQ,OAAO,KAAK,EAC5B,OAAO,OAAO,OAAO,KAAK,IAAI,2BAA2B;YAChD,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,MAC5D,OAAO,OAAO,2BAA2B,OAAO,KAAK;EACtD;AAIL,SAAO;CACR;AAED,QAAO;AACR;AAED,SAAgB,yBAGdC,QAA2E;CAK3E,MAAM,aAAa,2BACjB,mBAAmB,OAAO,GAAG,aAAa,OAAO,GAAG,OACrD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR;AAED,SAAgB,6BAEdC,QACsB;CAGtB,MAAM,aAAa,2BACjB,OACD;CACD,MAAM,EAAE,QAAS,GAAG,MAAM,GAAG;AAE7B,QAAO;AACR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/google-common",
3
- "version": "2.1.13",
3
+ "version": "2.1.14",
4
4
  "description": "Core types and classes for Google services.",
5
5
  "type": "module",
6
6
  "engines": {
@@ -17,7 +17,7 @@
17
17
  "uuid": "^10.0.0"
18
18
  },
19
19
  "peerDependencies": {
20
- "@langchain/core": "1.1.17"
20
+ "@langchain/core": "1.1.18"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@jest/globals": "^29.5.0",
@@ -34,7 +34,7 @@
34
34
  "ts-jest": "^29.1.0",
35
35
  "typescript": "~5.8.3",
36
36
  "zod": "^3.25.76",
37
- "@langchain/core": "1.1.17",
37
+ "@langchain/core": "1.1.18",
38
38
  "@langchain/eslint": "0.1.1",
39
39
  "@langchain/tsconfig": "0.0.1"
40
40
  },