@langchain/google-common 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/utils/stream.cjs +24 -5
  3. package/dist/utils/stream.cjs.map +1 -1
  4. package/dist/utils/stream.js +24 -5
  5. package/dist/utils/stream.js.map +1 -1
  6. package/package.json +39 -38
  7. package/dist/auth.d.cts.map +0 -1
  8. package/dist/auth.d.ts.map +0 -1
  9. package/dist/chat_models.d.cts.map +0 -1
  10. package/dist/chat_models.d.ts.map +0 -1
  11. package/dist/connection.d.cts.map +0 -1
  12. package/dist/connection.d.ts.map +0 -1
  13. package/dist/embeddings.d.cts.map +0 -1
  14. package/dist/embeddings.d.ts.map +0 -1
  15. package/dist/experimental/media.d.cts.map +0 -1
  16. package/dist/experimental/media.d.ts.map +0 -1
  17. package/dist/experimental/utils/media_core.d.cts.map +0 -1
  18. package/dist/experimental/utils/media_core.d.ts.map +0 -1
  19. package/dist/llms.d.cts.map +0 -1
  20. package/dist/llms.d.ts.map +0 -1
  21. package/dist/output_parsers.d.cts.map +0 -1
  22. package/dist/output_parsers.d.ts.map +0 -1
  23. package/dist/types-anthropic.d.cts.map +0 -1
  24. package/dist/types-anthropic.d.ts.map +0 -1
  25. package/dist/types.d.cts.map +0 -1
  26. package/dist/types.d.ts.map +0 -1
  27. package/dist/utils/common.d.cts.map +0 -1
  28. package/dist/utils/common.d.ts.map +0 -1
  29. package/dist/utils/failed_handler.d.cts.map +0 -1
  30. package/dist/utils/failed_handler.d.ts.map +0 -1
  31. package/dist/utils/gemini.d.cts.map +0 -1
  32. package/dist/utils/gemini.d.ts.map +0 -1
  33. package/dist/utils/palm.d.cts.map +0 -1
  34. package/dist/utils/palm.d.ts.map +0 -1
  35. package/dist/utils/safety.d.cts.map +0 -1
  36. package/dist/utils/safety.d.ts.map +0 -1
  37. package/dist/utils/stream.d.cts.map +0 -1
  38. package/dist/utils/stream.d.ts.map +0 -1
  39. package/dist/utils/zod_to_gemini_parameters.d.cts.map +0 -1
  40. package/dist/utils/zod_to_gemini_parameters.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @langchain/google-common
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#9416](https://github.com/langchain-ai/langchainjs/pull/9416) [`0fe9beb`](https://github.com/langchain-ai/langchainjs/commit/0fe9bebee6710f719e47f913eec1ec4f638e4de4) Thanks [@hntrl](https://github.com/hntrl)! - fix 'moduleResultion: "node"' compatibility
8
+
9
+ - [#9440](https://github.com/langchain-ai/langchainjs/pull/9440) [`21a8374`](https://github.com/langchain-ai/langchainjs/commit/21a83742af89e6a7f29d303f63729d0e31b59fdd) Thanks [@manekinekko](https://github.com/manekinekko)! - update polynomial regex to mitigate ReDoS vulnerability in SseStream
10
+
11
+ - Updated dependencies [[`708d360`](https://github.com/langchain-ai/langchainjs/commit/708d360df1869def7e4caaa5995d6e907bbf54cd), [`0fe9beb`](https://github.com/langchain-ai/langchainjs/commit/0fe9bebee6710f719e47f913eec1ec4f638e4de4), [`10fa2af`](https://github.com/langchain-ai/langchainjs/commit/10fa2afec0b81efd3467e61b59ba5c82e1043de5)]:
12
+ - @langchain/core@1.1.0
13
+
3
14
  ## 1.0.3
4
15
 
5
16
  ## 1.0.2
@@ -1,5 +1,25 @@
1
1
 
2
2
  //#region src/utils/stream.ts
3
+ /**
4
+ * Parse an SSE event line into key-value pair.
5
+ * Format: "field: value" or "field:value" (with optional whitespace after colon)
6
+ *
7
+ * Uses string operations instead of regex to avoid ReDoS vulnerabilities.
8
+ * This is safer and more performant than regex-based parsing.
9
+ */
10
+ function parseEventLine(line) {
11
+ const colonIndex = line.indexOf(":");
12
+ if (colonIndex === -1 || colonIndex === 0) return null;
13
+ const key = line.substring(0, colonIndex).trim();
14
+ if (key.length === 0) return null;
15
+ let valueStart = colonIndex + 1;
16
+ while (valueStart < line.length && (line[valueStart] === " " || line[valueStart] === " " || line[valueStart] === "\r" || line[valueStart] === "\n")) valueStart++;
17
+ const value = line.substring(valueStart);
18
+ return {
19
+ key,
20
+ value
21
+ };
22
+ }
3
23
  function complexValue(value) {
4
24
  if (value === null || typeof value === "undefined") return void 0;
5
25
  else if (typeof value === "object") if (Array.isArray(value)) return { list_val: value.map((avalue) => complexValue(avalue)) };
@@ -234,12 +254,11 @@ var SseStream = class {
234
254
  const ret = {};
235
255
  const lines = event.split(/\n/);
236
256
  lines.forEach((line) => {
237
- const match = line.match(/^([^:]+): \s*(.+)\n*$/);
238
- if (match && match.length === 3) {
239
- const key = match[1];
240
- const val = match[2];
257
+ const parsed = parseEventLine(line);
258
+ if (parsed) {
259
+ const { key, value } = parsed;
241
260
  const cur = ret[key] ?? "";
242
- ret[key] = `${cur}${val}`;
261
+ ret[key] = `${cur}${value}`;
243
262
  }
244
263
  });
245
264
  return ret;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.cjs","names":["value: unknown","ret: Record<string, unknown>","v: Record<string, any>","val: unknown","data: string","start: string","ret: object | null","obj: unknown","chunk: any","baseStream: AbstractStream","body: ReadableStream | null","body: any","event: string | null","ret: Record<string, string>","jsonAttribute?: string"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { GenerationChunk } from \"@langchain/core/outputs\";\n\nexport interface AbstractStream {\n /**\n * Add more text to the buffer\n * @param data\n */\n appendBuffer(data: string): void;\n\n /**\n * Indicate that there is no more text to be added to the buffer\n * (ie - our source material is done)\n */\n closeBuffer(): void;\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any>;\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean;\n}\n\nexport function complexValue(value: unknown): unknown {\n if (value === null || typeof value === \"undefined\") {\n // I dunno what to put here. An error, probably\n return undefined;\n } else if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n return {\n list_val: value.map((avalue) => complexValue(avalue)),\n };\n } else {\n const ret: Record<string, unknown> = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const v: Record<string, any> = value;\n Object.keys(v).forEach((key) => {\n ret[key] = complexValue(v[key]);\n });\n return { struct_val: ret };\n }\n } else if (typeof value === \"number\") {\n if (Number.isInteger(value)) {\n return { int_val: value };\n } else {\n return { float_val: value };\n }\n } else {\n return {\n string_val: [value],\n };\n }\n}\n\nexport function simpleValue(val: unknown): unknown {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n // eslint-disable-next-line no-prototype-builtins\n if (val.hasOwnProperty(\"stringVal\")) {\n return (val as { stringVal: string[] }).stringVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"boolVal\")) {\n return (val as { boolVal: boolean[] }).boolVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"listVal\")) {\n const { listVal } = val as { listVal: unknown[] };\n return listVal.map((aval) => simpleValue(aval));\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"structVal\")) {\n const ret: Record<string, unknown> = {};\n const struct = (val as { structVal: Record<string, unknown> }).structVal;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n } else {\n const ret: Record<string, unknown> = {};\n const struct = val as Record<string, unknown>;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n }\n } else if (Array.isArray(val)) {\n return val.map((aval) => simpleValue(aval));\n } else {\n return val;\n }\n}\nexport class JsonStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n _firstRun = true;\n\n /**\n * Add data to the buffer. This may cause chunks to be generated, if available.\n * @param data\n */\n appendBuffer(data: string): void {\n this._buffer += data;\n // Our first time, skip to the opening of the array\n if (this._firstRun) {\n this._skipTo(\"[\");\n this._firstRun = false;\n }\n\n this._parseBuffer();\n }\n\n /**\n * Indicate there is no more data that will be added to the text buffer.\n * This should be called when all the data has been read and added to indicate\n * that we should process everything remaining in the buffer.\n */\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Skip characters in the buffer till we get to the start of an object.\n * Then attempt to read a full object.\n * If we do read a full object, turn it into a chunk and send it to the chunk handler.\n * Repeat this for as much as we can.\n */\n _parseBuffer(): void {\n let obj = null;\n do {\n this._skipTo(\"{\");\n obj = this._getFullObject();\n if (obj !== null) {\n const chunk = this._simplifyObject(obj);\n this._handleChunk(chunk);\n }\n } while (obj !== null);\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed everything we could,\n // so everything else is garbage.\n this._handleChunk(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * If the string is present, move the start of the buffer to the first occurrence\n * of that string. This is useful for skipping over elements or parts that we're not\n * really interested in parsing. (ie - the opening characters, comma separators, etc.)\n * @param start The string to start the buffer with\n */\n _skipTo(start: string): void {\n const index = this._buffer.indexOf(start);\n if (index > 0) {\n this._buffer = this._buffer.slice(index);\n }\n }\n\n /**\n * Given what is in the buffer, parse a single object out of it.\n * If a complete object isn't available, return null.\n * Assumes that we are at the start of an object to parse.\n */\n _getFullObject(): object | null {\n let ret: object | null = null;\n\n // Loop while we don't have something to return AND we have something in the buffer\n let index = 0;\n while (ret === null && this._buffer.length > index) {\n // Advance to the next close bracket after our current index\n index = this._buffer.indexOf(\"}\", index + 1);\n\n // If we don't find one, exit with null\n if (index === -1) {\n return null;\n }\n\n // If we have one, try to turn it into an object to return\n try {\n const objStr = this._buffer.substring(0, index + 1);\n ret = JSON.parse(objStr);\n\n // We only get here if it parsed it ok\n // If we did turn it into an object, remove it from the buffer\n this._buffer = this._buffer.slice(index + 1);\n } catch {\n // It didn't parse it correctly, so we swallow the exception and continue\n }\n }\n\n return ret;\n }\n\n _simplifyObject(obj: unknown): object {\n return obj as object;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n /**\n * Register that we have another chunk available for consumption.\n * If we are waiting for a chunk, resolve the promise waiting for it immediately.\n * If not, then add it to the queue.\n * @param chunk\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _handleChunk(chunk: any): void {\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as GenerationChunk;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ComplexJsonStream extends JsonStream {\n _simplifyObject(obj: unknown): object {\n return simpleValue(obj) as object;\n }\n}\n\nexport class ReadableAbstractStream implements AbstractStream {\n private baseStream: AbstractStream;\n\n decoder: TextDecoder;\n\n constructor(baseStream: AbstractStream, body: ReadableStream | null) {\n this.baseStream = baseStream;\n this.decoder = new TextDecoder(\"utf-8\");\n if (body) {\n // eslint-disable-next-line no-void\n void this.run(body);\n } else {\n console.error(\"Unexpected empty body while streaming\");\n }\n }\n\n appendBuffer(data: string): void {\n return this.baseStream.appendBuffer(data);\n }\n\n closeBuffer(): void {\n return this.baseStream.closeBuffer();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any> {\n return this.baseStream.nextChunk();\n }\n\n get streamDone(): boolean {\n return this.baseStream.streamDone;\n }\n\n // Should be a ReadableStream, but the Gaxios Readable stream isn't.\n // But both should support async iterators, so make sure of that.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async run(body: any) {\n if (typeof body[Symbol.asyncIterator] === \"function\") {\n for await (const value of body) {\n const svalue = this.decoder.decode(value, { stream: true });\n this.appendBuffer(svalue);\n }\n this.closeBuffer();\n } else {\n throw Error(\"Stream must implement async iterator.\");\n }\n }\n}\n\nexport class ReadableJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new JsonStream(), body);\n }\n}\n\nexport class SseStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n appendBuffer(data: string): void {\n this._buffer += data;\n this._parseBuffer();\n }\n\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Attempt to load an entire event.\n * For each entire event we load,\n * send them to be handled.\n */\n _parseBuffer(): void {\n const events = this._buffer.split(/\\n\\n/);\n this._buffer = events.pop() ?? \"\";\n events.forEach((event) => this._handleEvent(event.trim()));\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed\n // everything. So dump the rest.\n this._handleEvent(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * Given an event string, get all the fields\n * in the event. It is assumed there is one field\n * per line, but that field names can be duplicated,\n * indicating to append the new value to the previous value\n * @param event\n */\n _parseEvent(event: string | null): Record<string, string> | null {\n if (!event || event.trim() === \"\") {\n return null;\n }\n const ret: Record<string, string> = {};\n\n const lines = event.split(/\\n/);\n lines.forEach((line) => {\n const match = line.match(/^([^:]+): \\s*(.+)\\n*$/);\n if (match && match.length === 3) {\n const key = match[1];\n const val = match[2];\n const cur = ret[key] ?? \"\";\n ret[key] = `${cur}${val}`;\n }\n });\n\n return ret;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n _handleEvent(event: string | null): void {\n const chunk = this._parseEvent(event);\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as Record<string, string>;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ReadableSseStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseStream(), body);\n }\n}\n\nexport class SseJsonStream extends SseStream {\n _jsonAttribute: string = \"data\";\n\n constructor(jsonAttribute?: string) {\n super();\n this._jsonAttribute = jsonAttribute ?? this._jsonAttribute;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n const eventRecord = (await super.nextChunk()) as Record<string, string>;\n const json = eventRecord?.[this._jsonAttribute];\n if (!json) {\n return null;\n } else {\n return JSON.parse(json);\n }\n }\n}\n\nexport class ReadableSseJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseJsonStream(), body);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stream.cjs","names":["line: string","value: unknown","ret: Record<string, unknown>","v: Record<string, any>","val: unknown","data: string","start: string","ret: object | null","obj: unknown","chunk: any","baseStream: AbstractStream","body: ReadableStream | null","body: any","event: string | null","ret: Record<string, string>","jsonAttribute?: string"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { GenerationChunk } from \"@langchain/core/outputs\";\n\nexport interface AbstractStream {\n /**\n * Add more text to the buffer\n * @param data\n */\n appendBuffer(data: string): void;\n\n /**\n * Indicate that there is no more text to be added to the buffer\n * (ie - our source material is done)\n */\n closeBuffer(): void;\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any>;\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean;\n}\n\n/**\n * Parse an SSE event line into key-value pair.\n * Format: \"field: value\" or \"field:value\" (with optional whitespace after colon)\n *\n * Uses string operations instead of regex to avoid ReDoS vulnerabilities.\n * This is safer and more performant than regex-based parsing.\n */\nfunction parseEventLine(line: string): { key: string; value: string } | null {\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1 || colonIndex === 0) {\n return null;\n }\n\n const key = line.substring(0, colonIndex).trim();\n if (key.length === 0) {\n return null;\n }\n\n // Skip colon and any whitespace after it\n let valueStart = colonIndex + 1;\n while (\n valueStart < line.length &&\n (line[valueStart] === \" \" ||\n line[valueStart] === \"\\t\" ||\n line[valueStart] === \"\\r\" ||\n line[valueStart] === \"\\n\")\n ) {\n valueStart++;\n }\n\n const value = line.substring(valueStart);\n return { key, value };\n}\n\nexport function complexValue(value: unknown): unknown {\n if (value === null || typeof value === \"undefined\") {\n // I dunno what to put here. An error, probably\n return undefined;\n } else if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n return {\n list_val: value.map((avalue) => complexValue(avalue)),\n };\n } else {\n const ret: Record<string, unknown> = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const v: Record<string, any> = value;\n Object.keys(v).forEach((key) => {\n ret[key] = complexValue(v[key]);\n });\n return { struct_val: ret };\n }\n } else if (typeof value === \"number\") {\n if (Number.isInteger(value)) {\n return { int_val: value };\n } else {\n return { float_val: value };\n }\n } else {\n return {\n string_val: [value],\n };\n }\n}\n\nexport function simpleValue(val: unknown): unknown {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n // eslint-disable-next-line no-prototype-builtins\n if (val.hasOwnProperty(\"stringVal\")) {\n return (val as { stringVal: string[] }).stringVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"boolVal\")) {\n return (val as { boolVal: boolean[] }).boolVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"listVal\")) {\n const { listVal } = val as { listVal: unknown[] };\n return listVal.map((aval) => simpleValue(aval));\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"structVal\")) {\n const ret: Record<string, unknown> = {};\n const struct = (val as { structVal: Record<string, unknown> }).structVal;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n } else {\n const ret: Record<string, unknown> = {};\n const struct = val as Record<string, unknown>;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n }\n } else if (Array.isArray(val)) {\n return val.map((aval) => simpleValue(aval));\n } else {\n return val;\n }\n}\nexport class JsonStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n _firstRun = true;\n\n /**\n * Add data to the buffer. This may cause chunks to be generated, if available.\n * @param data\n */\n appendBuffer(data: string): void {\n this._buffer += data;\n // Our first time, skip to the opening of the array\n if (this._firstRun) {\n this._skipTo(\"[\");\n this._firstRun = false;\n }\n\n this._parseBuffer();\n }\n\n /**\n * Indicate there is no more data that will be added to the text buffer.\n * This should be called when all the data has been read and added to indicate\n * that we should process everything remaining in the buffer.\n */\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Skip characters in the buffer till we get to the start of an object.\n * Then attempt to read a full object.\n * If we do read a full object, turn it into a chunk and send it to the chunk handler.\n * Repeat this for as much as we can.\n */\n _parseBuffer(): void {\n let obj = null;\n do {\n this._skipTo(\"{\");\n obj = this._getFullObject();\n if (obj !== null) {\n const chunk = this._simplifyObject(obj);\n this._handleChunk(chunk);\n }\n } while (obj !== null);\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed everything we could,\n // so everything else is garbage.\n this._handleChunk(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * If the string is present, move the start of the buffer to the first occurrence\n * of that string. This is useful for skipping over elements or parts that we're not\n * really interested in parsing. (ie - the opening characters, comma separators, etc.)\n * @param start The string to start the buffer with\n */\n _skipTo(start: string): void {\n const index = this._buffer.indexOf(start);\n if (index > 0) {\n this._buffer = this._buffer.slice(index);\n }\n }\n\n /**\n * Given what is in the buffer, parse a single object out of it.\n * If a complete object isn't available, return null.\n * Assumes that we are at the start of an object to parse.\n */\n _getFullObject(): object | null {\n let ret: object | null = null;\n\n // Loop while we don't have something to return AND we have something in the buffer\n let index = 0;\n while (ret === null && this._buffer.length > index) {\n // Advance to the next close bracket after our current index\n index = this._buffer.indexOf(\"}\", index + 1);\n\n // If we don't find one, exit with null\n if (index === -1) {\n return null;\n }\n\n // If we have one, try to turn it into an object to return\n try {\n const objStr = this._buffer.substring(0, index + 1);\n ret = JSON.parse(objStr);\n\n // We only get here if it parsed it ok\n // If we did turn it into an object, remove it from the buffer\n this._buffer = this._buffer.slice(index + 1);\n } catch {\n // It didn't parse it correctly, so we swallow the exception and continue\n }\n }\n\n return ret;\n }\n\n _simplifyObject(obj: unknown): object {\n return obj as object;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n /**\n * Register that we have another chunk available for consumption.\n * If we are waiting for a chunk, resolve the promise waiting for it immediately.\n * If not, then add it to the queue.\n * @param chunk\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _handleChunk(chunk: any): void {\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as GenerationChunk;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ComplexJsonStream extends JsonStream {\n _simplifyObject(obj: unknown): object {\n return simpleValue(obj) as object;\n }\n}\n\nexport class ReadableAbstractStream implements AbstractStream {\n private baseStream: AbstractStream;\n\n decoder: TextDecoder;\n\n constructor(baseStream: AbstractStream, body: ReadableStream | null) {\n this.baseStream = baseStream;\n this.decoder = new TextDecoder(\"utf-8\");\n if (body) {\n // eslint-disable-next-line no-void\n void this.run(body);\n } else {\n console.error(\"Unexpected empty body while streaming\");\n }\n }\n\n appendBuffer(data: string): void {\n return this.baseStream.appendBuffer(data);\n }\n\n closeBuffer(): void {\n return this.baseStream.closeBuffer();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any> {\n return this.baseStream.nextChunk();\n }\n\n get streamDone(): boolean {\n return this.baseStream.streamDone;\n }\n\n // Should be a ReadableStream, but the Gaxios Readable stream isn't.\n // But both should support async iterators, so make sure of that.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async run(body: any) {\n if (typeof body[Symbol.asyncIterator] === \"function\") {\n for await (const value of body) {\n const svalue = this.decoder.decode(value, { stream: true });\n this.appendBuffer(svalue);\n }\n this.closeBuffer();\n } else {\n throw Error(\"Stream must implement async iterator.\");\n }\n }\n}\n\nexport class ReadableJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new JsonStream(), body);\n }\n}\n\nexport class SseStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n appendBuffer(data: string): void {\n this._buffer += data;\n this._parseBuffer();\n }\n\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Attempt to load an entire event.\n * For each entire event we load,\n * send them to be handled.\n */\n _parseBuffer(): void {\n const events = this._buffer.split(/\\n\\n/);\n this._buffer = events.pop() ?? \"\";\n events.forEach((event) => this._handleEvent(event.trim()));\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed\n // everything. So dump the rest.\n this._handleEvent(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * Given an event string, get all the fields\n * in the event. It is assumed there is one field\n * per line, but that field names can be duplicated,\n * indicating to append the new value to the previous value\n * @param event\n */\n _parseEvent(event: string | null): Record<string, string> | null {\n if (!event || event.trim() === \"\") {\n return null;\n }\n const ret: Record<string, string> = {};\n const lines = event.split(/\\n/);\n lines.forEach((line) => {\n const parsed = parseEventLine(line);\n if (parsed) {\n const { key, value } = parsed;\n const cur = ret[key] ?? \"\";\n ret[key] = `${cur}${value}`;\n }\n });\n\n return ret;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n _handleEvent(event: string | null): void {\n const chunk = this._parseEvent(event);\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as Record<string, string>;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ReadableSseStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseStream(), body);\n }\n}\n\nexport class SseJsonStream extends SseStream {\n _jsonAttribute: string = \"data\";\n\n constructor(jsonAttribute?: string) {\n super();\n this._jsonAttribute = jsonAttribute ?? this._jsonAttribute;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n const eventRecord = (await super.nextChunk()) as Record<string, string>;\n const json = eventRecord?.[this._jsonAttribute];\n if (!json) {\n return null;\n } else {\n return JSON.parse(json);\n }\n }\n}\n\nexport class ReadableSseJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseJsonStream(), body);\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  //#region src/utils/stream.ts
2
+ /**
3
+ * Parse an SSE event line into key-value pair.
4
+ * Format: "field: value" or "field:value" (with optional whitespace after colon)
5
+ *
6
+ * Uses string operations instead of regex to avoid ReDoS vulnerabilities.
7
+ * This is safer and more performant than regex-based parsing.
8
+ */
9
+ function parseEventLine(line) {
10
+ const colonIndex = line.indexOf(":");
11
+ if (colonIndex === -1 || colonIndex === 0) return null;
12
+ const key = line.substring(0, colonIndex).trim();
13
+ if (key.length === 0) return null;
14
+ let valueStart = colonIndex + 1;
15
+ while (valueStart < line.length && (line[valueStart] === " " || line[valueStart] === " " || line[valueStart] === "\r" || line[valueStart] === "\n")) valueStart++;
16
+ const value = line.substring(valueStart);
17
+ return {
18
+ key,
19
+ value
20
+ };
21
+ }
2
22
  function complexValue(value) {
3
23
  if (value === null || typeof value === "undefined") return void 0;
4
24
  else if (typeof value === "object") if (Array.isArray(value)) return { list_val: value.map((avalue) => complexValue(avalue)) };
@@ -233,12 +253,11 @@ var SseStream = class {
233
253
  const ret = {};
234
254
  const lines = event.split(/\n/);
235
255
  lines.forEach((line) => {
236
- const match = line.match(/^([^:]+): \s*(.+)\n*$/);
237
- if (match && match.length === 3) {
238
- const key = match[1];
239
- const val = match[2];
256
+ const parsed = parseEventLine(line);
257
+ if (parsed) {
258
+ const { key, value } = parsed;
240
259
  const cur = ret[key] ?? "";
241
- ret[key] = `${cur}${val}`;
260
+ ret[key] = `${cur}${value}`;
242
261
  }
243
262
  });
244
263
  return ret;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","names":["value: unknown","ret: Record<string, unknown>","v: Record<string, any>","val: unknown","data: string","start: string","ret: object | null","obj: unknown","chunk: any","baseStream: AbstractStream","body: ReadableStream | null","body: any","event: string | null","ret: Record<string, string>","jsonAttribute?: string"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { GenerationChunk } from \"@langchain/core/outputs\";\n\nexport interface AbstractStream {\n /**\n * Add more text to the buffer\n * @param data\n */\n appendBuffer(data: string): void;\n\n /**\n * Indicate that there is no more text to be added to the buffer\n * (ie - our source material is done)\n */\n closeBuffer(): void;\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any>;\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean;\n}\n\nexport function complexValue(value: unknown): unknown {\n if (value === null || typeof value === \"undefined\") {\n // I dunno what to put here. An error, probably\n return undefined;\n } else if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n return {\n list_val: value.map((avalue) => complexValue(avalue)),\n };\n } else {\n const ret: Record<string, unknown> = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const v: Record<string, any> = value;\n Object.keys(v).forEach((key) => {\n ret[key] = complexValue(v[key]);\n });\n return { struct_val: ret };\n }\n } else if (typeof value === \"number\") {\n if (Number.isInteger(value)) {\n return { int_val: value };\n } else {\n return { float_val: value };\n }\n } else {\n return {\n string_val: [value],\n };\n }\n}\n\nexport function simpleValue(val: unknown): unknown {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n // eslint-disable-next-line no-prototype-builtins\n if (val.hasOwnProperty(\"stringVal\")) {\n return (val as { stringVal: string[] }).stringVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"boolVal\")) {\n return (val as { boolVal: boolean[] }).boolVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"listVal\")) {\n const { listVal } = val as { listVal: unknown[] };\n return listVal.map((aval) => simpleValue(aval));\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"structVal\")) {\n const ret: Record<string, unknown> = {};\n const struct = (val as { structVal: Record<string, unknown> }).structVal;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n } else {\n const ret: Record<string, unknown> = {};\n const struct = val as Record<string, unknown>;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n }\n } else if (Array.isArray(val)) {\n return val.map((aval) => simpleValue(aval));\n } else {\n return val;\n }\n}\nexport class JsonStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n _firstRun = true;\n\n /**\n * Add data to the buffer. This may cause chunks to be generated, if available.\n * @param data\n */\n appendBuffer(data: string): void {\n this._buffer += data;\n // Our first time, skip to the opening of the array\n if (this._firstRun) {\n this._skipTo(\"[\");\n this._firstRun = false;\n }\n\n this._parseBuffer();\n }\n\n /**\n * Indicate there is no more data that will be added to the text buffer.\n * This should be called when all the data has been read and added to indicate\n * that we should process everything remaining in the buffer.\n */\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Skip characters in the buffer till we get to the start of an object.\n * Then attempt to read a full object.\n * If we do read a full object, turn it into a chunk and send it to the chunk handler.\n * Repeat this for as much as we can.\n */\n _parseBuffer(): void {\n let obj = null;\n do {\n this._skipTo(\"{\");\n obj = this._getFullObject();\n if (obj !== null) {\n const chunk = this._simplifyObject(obj);\n this._handleChunk(chunk);\n }\n } while (obj !== null);\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed everything we could,\n // so everything else is garbage.\n this._handleChunk(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * If the string is present, move the start of the buffer to the first occurrence\n * of that string. This is useful for skipping over elements or parts that we're not\n * really interested in parsing. (ie - the opening characters, comma separators, etc.)\n * @param start The string to start the buffer with\n */\n _skipTo(start: string): void {\n const index = this._buffer.indexOf(start);\n if (index > 0) {\n this._buffer = this._buffer.slice(index);\n }\n }\n\n /**\n * Given what is in the buffer, parse a single object out of it.\n * If a complete object isn't available, return null.\n * Assumes that we are at the start of an object to parse.\n */\n _getFullObject(): object | null {\n let ret: object | null = null;\n\n // Loop while we don't have something to return AND we have something in the buffer\n let index = 0;\n while (ret === null && this._buffer.length > index) {\n // Advance to the next close bracket after our current index\n index = this._buffer.indexOf(\"}\", index + 1);\n\n // If we don't find one, exit with null\n if (index === -1) {\n return null;\n }\n\n // If we have one, try to turn it into an object to return\n try {\n const objStr = this._buffer.substring(0, index + 1);\n ret = JSON.parse(objStr);\n\n // We only get here if it parsed it ok\n // If we did turn it into an object, remove it from the buffer\n this._buffer = this._buffer.slice(index + 1);\n } catch {\n // It didn't parse it correctly, so we swallow the exception and continue\n }\n }\n\n return ret;\n }\n\n _simplifyObject(obj: unknown): object {\n return obj as object;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n /**\n * Register that we have another chunk available for consumption.\n * If we are waiting for a chunk, resolve the promise waiting for it immediately.\n * If not, then add it to the queue.\n * @param chunk\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _handleChunk(chunk: any): void {\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as GenerationChunk;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ComplexJsonStream extends JsonStream {\n _simplifyObject(obj: unknown): object {\n return simpleValue(obj) as object;\n }\n}\n\nexport class ReadableAbstractStream implements AbstractStream {\n private baseStream: AbstractStream;\n\n decoder: TextDecoder;\n\n constructor(baseStream: AbstractStream, body: ReadableStream | null) {\n this.baseStream = baseStream;\n this.decoder = new TextDecoder(\"utf-8\");\n if (body) {\n // eslint-disable-next-line no-void\n void this.run(body);\n } else {\n console.error(\"Unexpected empty body while streaming\");\n }\n }\n\n appendBuffer(data: string): void {\n return this.baseStream.appendBuffer(data);\n }\n\n closeBuffer(): void {\n return this.baseStream.closeBuffer();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any> {\n return this.baseStream.nextChunk();\n }\n\n get streamDone(): boolean {\n return this.baseStream.streamDone;\n }\n\n // Should be a ReadableStream, but the Gaxios Readable stream isn't.\n // But both should support async iterators, so make sure of that.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async run(body: any) {\n if (typeof body[Symbol.asyncIterator] === \"function\") {\n for await (const value of body) {\n const svalue = this.decoder.decode(value, { stream: true });\n this.appendBuffer(svalue);\n }\n this.closeBuffer();\n } else {\n throw Error(\"Stream must implement async iterator.\");\n }\n }\n}\n\nexport class ReadableJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new JsonStream(), body);\n }\n}\n\nexport class SseStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n appendBuffer(data: string): void {\n this._buffer += data;\n this._parseBuffer();\n }\n\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Attempt to load an entire event.\n * For each entire event we load,\n * send them to be handled.\n */\n _parseBuffer(): void {\n const events = this._buffer.split(/\\n\\n/);\n this._buffer = events.pop() ?? \"\";\n events.forEach((event) => this._handleEvent(event.trim()));\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed\n // everything. So dump the rest.\n this._handleEvent(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * Given an event string, get all the fields\n * in the event. It is assumed there is one field\n * per line, but that field names can be duplicated,\n * indicating to append the new value to the previous value\n * @param event\n */\n _parseEvent(event: string | null): Record<string, string> | null {\n if (!event || event.trim() === \"\") {\n return null;\n }\n const ret: Record<string, string> = {};\n\n const lines = event.split(/\\n/);\n lines.forEach((line) => {\n const match = line.match(/^([^:]+): \\s*(.+)\\n*$/);\n if (match && match.length === 3) {\n const key = match[1];\n const val = match[2];\n const cur = ret[key] ?? \"\";\n ret[key] = `${cur}${val}`;\n }\n });\n\n return ret;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n _handleEvent(event: string | null): void {\n const chunk = this._parseEvent(event);\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as Record<string, string>;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ReadableSseStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseStream(), body);\n }\n}\n\nexport class SseJsonStream extends SseStream {\n _jsonAttribute: string = \"data\";\n\n constructor(jsonAttribute?: string) {\n super();\n this._jsonAttribute = jsonAttribute ?? this._jsonAttribute;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n const eventRecord = (await super.nextChunk()) as Record<string, string>;\n const json = eventRecord?.[this._jsonAttribute];\n if (!json) {\n return null;\n } else {\n return JSON.parse(json);\n }\n }\n}\n\nexport class ReadableSseJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseJsonStream(), body);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","names":["line: string","value: unknown","ret: Record<string, unknown>","v: Record<string, any>","val: unknown","data: string","start: string","ret: object | null","obj: unknown","chunk: any","baseStream: AbstractStream","body: ReadableStream | null","body: any","event: string | null","ret: Record<string, string>","jsonAttribute?: string"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { GenerationChunk } from \"@langchain/core/outputs\";\n\nexport interface AbstractStream {\n /**\n * Add more text to the buffer\n * @param data\n */\n appendBuffer(data: string): void;\n\n /**\n * Indicate that there is no more text to be added to the buffer\n * (ie - our source material is done)\n */\n closeBuffer(): void;\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any>;\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean;\n}\n\n/**\n * Parse an SSE event line into key-value pair.\n * Format: \"field: value\" or \"field:value\" (with optional whitespace after colon)\n *\n * Uses string operations instead of regex to avoid ReDoS vulnerabilities.\n * This is safer and more performant than regex-based parsing.\n */\nfunction parseEventLine(line: string): { key: string; value: string } | null {\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1 || colonIndex === 0) {\n return null;\n }\n\n const key = line.substring(0, colonIndex).trim();\n if (key.length === 0) {\n return null;\n }\n\n // Skip colon and any whitespace after it\n let valueStart = colonIndex + 1;\n while (\n valueStart < line.length &&\n (line[valueStart] === \" \" ||\n line[valueStart] === \"\\t\" ||\n line[valueStart] === \"\\r\" ||\n line[valueStart] === \"\\n\")\n ) {\n valueStart++;\n }\n\n const value = line.substring(valueStart);\n return { key, value };\n}\n\nexport function complexValue(value: unknown): unknown {\n if (value === null || typeof value === \"undefined\") {\n // I dunno what to put here. An error, probably\n return undefined;\n } else if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n return {\n list_val: value.map((avalue) => complexValue(avalue)),\n };\n } else {\n const ret: Record<string, unknown> = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const v: Record<string, any> = value;\n Object.keys(v).forEach((key) => {\n ret[key] = complexValue(v[key]);\n });\n return { struct_val: ret };\n }\n } else if (typeof value === \"number\") {\n if (Number.isInteger(value)) {\n return { int_val: value };\n } else {\n return { float_val: value };\n }\n } else {\n return {\n string_val: [value],\n };\n }\n}\n\nexport function simpleValue(val: unknown): unknown {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n // eslint-disable-next-line no-prototype-builtins\n if (val.hasOwnProperty(\"stringVal\")) {\n return (val as { stringVal: string[] }).stringVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"boolVal\")) {\n return (val as { boolVal: boolean[] }).boolVal[0];\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"listVal\")) {\n const { listVal } = val as { listVal: unknown[] };\n return listVal.map((aval) => simpleValue(aval));\n\n // eslint-disable-next-line no-prototype-builtins\n } else if (val.hasOwnProperty(\"structVal\")) {\n const ret: Record<string, unknown> = {};\n const struct = (val as { structVal: Record<string, unknown> }).structVal;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n } else {\n const ret: Record<string, unknown> = {};\n const struct = val as Record<string, unknown>;\n Object.keys(struct).forEach((key) => {\n ret[key] = simpleValue(struct[key]);\n });\n return ret;\n }\n } else if (Array.isArray(val)) {\n return val.map((aval) => simpleValue(aval));\n } else {\n return val;\n }\n}\nexport class JsonStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n _firstRun = true;\n\n /**\n * Add data to the buffer. This may cause chunks to be generated, if available.\n * @param data\n */\n appendBuffer(data: string): void {\n this._buffer += data;\n // Our first time, skip to the opening of the array\n if (this._firstRun) {\n this._skipTo(\"[\");\n this._firstRun = false;\n }\n\n this._parseBuffer();\n }\n\n /**\n * Indicate there is no more data that will be added to the text buffer.\n * This should be called when all the data has been read and added to indicate\n * that we should process everything remaining in the buffer.\n */\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Skip characters in the buffer till we get to the start of an object.\n * Then attempt to read a full object.\n * If we do read a full object, turn it into a chunk and send it to the chunk handler.\n * Repeat this for as much as we can.\n */\n _parseBuffer(): void {\n let obj = null;\n do {\n this._skipTo(\"{\");\n obj = this._getFullObject();\n if (obj !== null) {\n const chunk = this._simplifyObject(obj);\n this._handleChunk(chunk);\n }\n } while (obj !== null);\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed everything we could,\n // so everything else is garbage.\n this._handleChunk(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * If the string is present, move the start of the buffer to the first occurrence\n * of that string. This is useful for skipping over elements or parts that we're not\n * really interested in parsing. (ie - the opening characters, comma separators, etc.)\n * @param start The string to start the buffer with\n */\n _skipTo(start: string): void {\n const index = this._buffer.indexOf(start);\n if (index > 0) {\n this._buffer = this._buffer.slice(index);\n }\n }\n\n /**\n * Given what is in the buffer, parse a single object out of it.\n * If a complete object isn't available, return null.\n * Assumes that we are at the start of an object to parse.\n */\n _getFullObject(): object | null {\n let ret: object | null = null;\n\n // Loop while we don't have something to return AND we have something in the buffer\n let index = 0;\n while (ret === null && this._buffer.length > index) {\n // Advance to the next close bracket after our current index\n index = this._buffer.indexOf(\"}\", index + 1);\n\n // If we don't find one, exit with null\n if (index === -1) {\n return null;\n }\n\n // If we have one, try to turn it into an object to return\n try {\n const objStr = this._buffer.substring(0, index + 1);\n ret = JSON.parse(objStr);\n\n // We only get here if it parsed it ok\n // If we did turn it into an object, remove it from the buffer\n this._buffer = this._buffer.slice(index + 1);\n } catch {\n // It didn't parse it correctly, so we swallow the exception and continue\n }\n }\n\n return ret;\n }\n\n _simplifyObject(obj: unknown): object {\n return obj as object;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n /**\n * Register that we have another chunk available for consumption.\n * If we are waiting for a chunk, resolve the promise waiting for it immediately.\n * If not, then add it to the queue.\n * @param chunk\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _handleChunk(chunk: any): void {\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n /**\n * Get the next chunk that is coming from the stream.\n * This chunk may be null, usually indicating the last chunk in the stream.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as GenerationChunk;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n /**\n * Is the stream done?\n * A stream is only done if all of the following are true:\n * - There is no more data to be added to the text buffer\n * - There is no more data in the text buffer\n * - There are no chunks that are waiting to be consumed\n */\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ComplexJsonStream extends JsonStream {\n _simplifyObject(obj: unknown): object {\n return simpleValue(obj) as object;\n }\n}\n\nexport class ReadableAbstractStream implements AbstractStream {\n private baseStream: AbstractStream;\n\n decoder: TextDecoder;\n\n constructor(baseStream: AbstractStream, body: ReadableStream | null) {\n this.baseStream = baseStream;\n this.decoder = new TextDecoder(\"utf-8\");\n if (body) {\n // eslint-disable-next-line no-void\n void this.run(body);\n } else {\n console.error(\"Unexpected empty body while streaming\");\n }\n }\n\n appendBuffer(data: string): void {\n return this.baseStream.appendBuffer(data);\n }\n\n closeBuffer(): void {\n return this.baseStream.closeBuffer();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextChunk(): Promise<any> {\n return this.baseStream.nextChunk();\n }\n\n get streamDone(): boolean {\n return this.baseStream.streamDone;\n }\n\n // Should be a ReadableStream, but the Gaxios Readable stream isn't.\n // But both should support async iterators, so make sure of that.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async run(body: any) {\n if (typeof body[Symbol.asyncIterator] === \"function\") {\n for await (const value of body) {\n const svalue = this.decoder.decode(value, { stream: true });\n this.appendBuffer(svalue);\n }\n this.closeBuffer();\n } else {\n throw Error(\"Stream must implement async iterator.\");\n }\n }\n}\n\nexport class ReadableJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new JsonStream(), body);\n }\n}\n\nexport class SseStream implements AbstractStream {\n _buffer = \"\";\n\n _bufferOpen = true;\n\n appendBuffer(data: string): void {\n this._buffer += data;\n this._parseBuffer();\n }\n\n closeBuffer(): void {\n this._bufferOpen = false;\n this._parseBuffer();\n }\n\n /**\n * Attempt to load an entire event.\n * For each entire event we load,\n * send them to be handled.\n */\n _parseBuffer(): void {\n const events = this._buffer.split(/\\n\\n/);\n this._buffer = events.pop() ?? \"\";\n events.forEach((event) => this._handleEvent(event.trim()));\n\n if (!this._bufferOpen) {\n // No more data will be added, and we have parsed\n // everything. So dump the rest.\n this._handleEvent(null);\n this._buffer = \"\";\n }\n }\n\n /**\n * Given an event string, get all the fields\n * in the event. It is assumed there is one field\n * per line, but that field names can be duplicated,\n * indicating to append the new value to the previous value\n * @param event\n */\n _parseEvent(event: string | null): Record<string, string> | null {\n if (!event || event.trim() === \"\") {\n return null;\n }\n const ret: Record<string, string> = {};\n const lines = event.split(/\\n/);\n lines.forEach((line) => {\n const parsed = parseEventLine(line);\n if (parsed) {\n const { key, value } = parsed;\n const cur = ret[key] ?? \"\";\n ret[key] = `${cur}${value}`;\n }\n });\n\n return ret;\n }\n\n // Set up a potential Promise that the handler can resolve.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkResolution: (chunk: any) => void;\n\n // If there is no Promise (it is null), the handler must add it to the queue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkPending: Promise<any> | null = null;\n\n // A queue that will collect chunks while there is no Promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _chunkQueue: any[] = [];\n\n _handleEvent(event: string | null): void {\n const chunk = this._parseEvent(event);\n if (this._chunkPending) {\n this._chunkResolution(chunk);\n this._chunkPending = null;\n } else {\n this._chunkQueue.push(chunk);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n if (this._chunkQueue.length > 0) {\n // If there is data in the queue, return the next queue chunk\n return this._chunkQueue.shift() as Record<string, string>;\n } else {\n // Otherwise, set up a promise that handleChunk will cause to be resolved\n this._chunkPending = new Promise((resolve) => {\n this._chunkResolution = resolve;\n });\n return this._chunkPending;\n }\n }\n\n get streamDone(): boolean {\n return (\n !this._bufferOpen &&\n this._buffer.length === 0 &&\n this._chunkQueue.length === 0 &&\n this._chunkPending === null\n );\n }\n}\n\nexport class ReadableSseStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseStream(), body);\n }\n}\n\nexport class SseJsonStream extends SseStream {\n _jsonAttribute: string = \"data\";\n\n constructor(jsonAttribute?: string) {\n super();\n this._jsonAttribute = jsonAttribute ?? this._jsonAttribute;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async nextChunk(): Promise<any> {\n const eventRecord = (await super.nextChunk()) as Record<string, string>;\n const json = eventRecord?.[this._jsonAttribute];\n if (!json) {\n return null;\n } else {\n return JSON.parse(json);\n }\n }\n}\n\nexport class ReadableSseJsonStream extends ReadableAbstractStream {\n constructor(body: ReadableStream | null) {\n super(new SseJsonStream(), body);\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/google-common",
3
- "version": "1.0.3",
3
+ "version": "2.0.0",
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.0.6"
20
+ "@langchain/core": "1.1.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@jest/globals": "^29.5.0",
@@ -35,68 +35,68 @@
35
35
  "ts-jest": "^29.1.0",
36
36
  "typescript": "~5.8.3",
37
37
  "zod": "^3.25.76",
38
- "@langchain/core": "1.0.6",
39
- "@langchain/eslint": "0.1.0"
38
+ "@langchain/core": "1.1.0",
39
+ "@langchain/eslint": "0.1.1"
40
40
  },
41
41
  "publishConfig": {
42
42
  "access": "public"
43
43
  },
44
- "main": "./dist/index.js",
45
- "types": "./dist/index.d.ts",
44
+ "main": "./dist/index.cjs",
45
+ "types": "./dist/index.d.cts",
46
46
  "exports": {
47
47
  ".": {
48
48
  "input": "./src/index.ts",
49
- "import": {
50
- "types": "./dist/index.d.ts",
51
- "default": "./dist/index.js"
52
- },
53
49
  "require": {
54
50
  "types": "./dist/index.d.cts",
55
51
  "default": "./dist/index.cjs"
56
- }
57
- },
58
- "./utils": {
59
- "input": "./src/utils/index.ts",
60
- "import": {
61
- "types": "./dist/utils/index.d.ts",
62
- "default": "./dist/utils/index.js"
63
52
  },
64
- "require": {
65
- "types": "./dist/utils/index.d.cts",
66
- "default": "./dist/utils/index.cjs"
67
- }
68
- },
69
- "./types": {
70
- "input": "./src/types.ts",
71
53
  "import": {
72
- "types": "./dist/types.d.ts",
73
- "default": "./dist/types.js"
74
- },
75
- "require": {
76
- "types": "./dist/types.d.cts",
77
- "default": "./dist/types.cjs"
54
+ "types": "./dist/index.d.ts",
55
+ "default": "./dist/index.js"
78
56
  }
79
57
  },
80
58
  "./experimental/media": {
81
59
  "input": "./src/experimental/media.ts",
82
- "import": {
83
- "types": "./dist/experimental/media.d.ts",
84
- "default": "./dist/experimental/media.js"
85
- },
86
60
  "require": {
87
61
  "types": "./dist/experimental/media.d.cts",
88
62
  "default": "./dist/experimental/media.cjs"
63
+ },
64
+ "import": {
65
+ "types": "./dist/experimental/media.d.ts",
66
+ "default": "./dist/experimental/media.js"
89
67
  }
90
68
  },
91
69
  "./experimental/utils/media_core": {
92
70
  "input": "./src/experimental/utils/media_core.ts",
71
+ "require": {
72
+ "types": "./dist/experimental/utils/media_core.d.cts",
73
+ "default": "./dist/experimental/utils/media_core.cjs"
74
+ },
93
75
  "import": {
94
76
  "types": "./dist/experimental/utils/media_core.d.ts",
95
77
  "default": "./dist/experimental/utils/media_core.js"
78
+ }
79
+ },
80
+ "./types": {
81
+ "input": "./src/types.ts",
82
+ "require": {
83
+ "types": "./dist/types.d.cts",
84
+ "default": "./dist/types.cjs"
96
85
  },
86
+ "import": {
87
+ "types": "./dist/types.d.ts",
88
+ "default": "./dist/types.js"
89
+ }
90
+ },
91
+ "./utils": {
92
+ "input": "./src/utils/index.ts",
97
93
  "require": {
98
- "types": "./dist/experimental/utils/media_core.d.cts",
99
- "default": "./dist/experimental/utils/media_core.cjs"
94
+ "types": "./dist/utils/index.d.cts",
95
+ "default": "./dist/utils/index.cjs"
96
+ },
97
+ "import": {
98
+ "types": "./dist/utils/index.d.ts",
99
+ "default": "./dist/utils/index.js"
100
100
  }
101
101
  },
102
102
  "./package.json": "./package.json"
@@ -107,9 +107,10 @@
107
107
  "README.md",
108
108
  "LICENSE"
109
109
  ],
110
+ "module": "./dist/index.js",
110
111
  "scripts": {
111
- "build": "turbo build:compile --filter @langchain/google-common",
112
- "build:compile": "pnpm --filter @langchain/build compile @langchain/google-common",
112
+ "build": "turbo build:compile --filter @langchain/google-common --output-logs new-only",
113
+ "build:compile": "tsdown",
113
114
  "lint:eslint": "eslint --cache src/",
114
115
  "lint:dpdm": "dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts",
115
116
  "lint": "pnpm lint:eslint && pnpm lint:dpdm",
@@ -1 +0,0 @@
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"],"mappings":";;;KACYC,+BAAAA;KACAC,qCAAAA;AADAD,KAEAE,yBAAAA,GAF+B;EAC/BD,GAAAA,CAAAA,EAAAA,MAAAA;EACAC,MAAAA,CAAAA,EAECF,+BAFwB;EAAA,OAAA,CAAA,EAGvBG,MAHuB,CAAA,MAAA,EAAA,MAAA,CAAA;EAAA,IAExBH,CAAAA,EAAAA,OAAAA;EAA+B,YAC9BG,CAAAA,EAEKF,qCAFLE;CAAM;AAEoC,UAEvCC,sBAAAA,CAFuC;EAEvCA,OAAAA,EAAAA,CAAAA,IAAAA,EACGF,yBADmB,EAAA,GAAA,OAAA;EAAA,YAAA,EAAA,GAAA,GAEfG,OAFe,CAAA,MAAA,CAAA;EAAA,IACnBH,UAAAA,EAAAA,EAAAA,MAAAA;;AACW,uBAGDI,2BAAAA,YAAuCF,sBAHtC,CAAA;EAGDE,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAA2B;EAAA,SAAA,YAAA,CAAA,CAAA,EAE5BD,OAF4B,CAAA,MAAA,CAAA;EAAA,SAE5BA,OAAAA,CAAAA,IAAAA,EACFH,yBADEG,CAAAA,EAAAA,OAAAA;EAAO,MACTH,EAAAA,OACRK,KADQL;EAAyB,UACjCK,CAAAA,GAAAA,EACCC,QADDD,EAAAA,IAAAA,EACiBL,yBADjBK,CAAAA,EAC6CF,OAD7CE,CAAAA,GAAAA,CAAAA;EAAK,QACJC,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EACwBN,yBADxBM,EAAAA,iBAAAA,EACsEL,MADtEK,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAC+FH,OAD/FG,CAAAA;IAAgBN,IAAAA,EAAAA,GAAAA;IAA4BG,MAAAA,EAAAA,CAAAA,CAAAA;IACpBH,MAAAA,EAAAA,MAAAA;IAA8CC,UAAAA,EAAAA,MAAAA;IAKzEM,OAAAA,EAAAA,OAAAA;IALkGJ,OAAAA,EAAAA;MAN9CD,WAAAA,EAAAA,MAAAA;IAAsB,CAAA;EAiBtEM,CAAAA,CAAAA;;AAIDL,cAJCK,gBAAAA,SAAyBJ,2BAAAA,CAI1BD;EAAO,MACTH,EAAAA,MAAAA;EAAyB,WALGI,CAAAA,MAAAA,EAAAA,MAAAA;EAA2B,IAAA,UAAA,CAAA,CAAA,EAAA,MAAA;EAOjDK,YAAAA,CAAAA,CAAAA,EAHJN,OAGmB,CAAA,MAAWN,CAAAA;EAC1Ba,OAAAA,CAAAA,IAAAA,EAHNV,yBAG4B,CAAA,EAAA,OAAA;;AAA0BW,iBADhDF,eAAAA,CACgDE,QAAAA,EADtBd,kBACsBc,CAAAA,EAAAA,MAAAA,EAAAA;AAA6Ed,iBAA7Ha,sBAA6Hb,CAAAA,WAAAA,CAAAA,CAAAA,UAAAA,EAA7Ec,WAA6Ed,GAAAA,SAAAA,EAAAA,aAAAA,EAAAA,MAAAA,EAAAA,gBAAAA,EAAAA,MAAAA,EAAAA,GAAAA,kBAAAA,GAAAA,SAAAA,CAAAA,EAAiCc,WAAjCd"}
@@ -1 +0,0 @@
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"],"mappings":";;;KACYC,+BAAAA;KACAC,qCAAAA;AADAD,KAEAE,yBAAAA,GAF+B;EAC/BD,GAAAA,CAAAA,EAAAA,MAAAA;EACAC,MAAAA,CAAAA,EAECF,+BAFwB;EAAA,OAAA,CAAA,EAGvBG,MAHuB,CAAA,MAAA,EAAA,MAAA,CAAA;EAAA,IAExBH,CAAAA,EAAAA,OAAAA;EAA+B,YAC9BG,CAAAA,EAEKF,qCAFLE;CAAM;AAEoC,UAEvCC,sBAAAA,CAFuC;EAEvCA,OAAAA,EAAAA,CAAAA,IAAAA,EACGF,yBADmB,EAAA,GAAA,OAAA;EAAA,YAAA,EAAA,GAAA,GAEfG,OAFe,CAAA,MAAA,CAAA;EAAA,IACnBH,UAAAA,EAAAA,EAAAA,MAAAA;;AACW,uBAGDI,2BAAAA,YAAuCF,sBAHtC,CAAA;EAGDE,aAAAA,UAAAA,CAAAA,CAAAA,EAAAA,MAA2B;EAAA,SAAA,YAAA,CAAA,CAAA,EAE5BD,OAF4B,CAAA,MAAA,CAAA;EAAA,SAE5BA,OAAAA,CAAAA,IAAAA,EACFH,yBADEG,CAAAA,EAAAA,OAAAA;EAAO,MACTH,EAAAA,OACRK,KADQL;EAAyB,UACjCK,CAAAA,GAAAA,EACCC,QADDD,EAAAA,IAAAA,EACiBL,yBADjBK,CAAAA,EAC6CF,OAD7CE,CAAAA,GAAAA,CAAAA;EAAK,QACJC,CAAAA,GAAAA,EAAAA,MAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EACwBN,yBADxBM,EAAAA,iBAAAA,EACsEL,MADtEK,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,CAAAA,EAC+FH,OAD/FG,CAAAA;IAAgBN,IAAAA,EAAAA,GAAAA;IAA4BG,MAAAA,EAAAA,CAAAA,CAAAA;IACpBH,MAAAA,EAAAA,MAAAA;IAA8CC,UAAAA,EAAAA,MAAAA;IAKzEM,OAAAA,EAAAA,OAAAA;IALkGJ,OAAAA,EAAAA;MAN9CD,WAAAA,EAAAA,MAAAA;IAAsB,CAAA;EAiBtEM,CAAAA,CAAAA;;AAIDL,cAJCK,gBAAAA,SAAyBJ,2BAAAA,CAI1BD;EAAO,MACTH,EAAAA,MAAAA;EAAyB,WALGI,CAAAA,MAAAA,EAAAA,MAAAA;EAA2B,IAAA,UAAA,CAAA,CAAA,EAAA,MAAA;EAOjDK,YAAAA,CAAAA,CAAAA,EAHJN,OAGmB,CAAA,MAAWN,CAAAA;EAC1Ba,OAAAA,CAAAA,IAAAA,EAHNV,yBAG4B,CAAA,EAAA,OAAA;;AAA0BW,iBADhDF,eAAAA,CACgDE,QAAAA,EADtBd,kBACsBc,CAAAA,EAAAA,MAAAA,EAAAA;AAA6Ed,iBAA7Ha,sBAA6Hb,CAAAA,WAAAA,CAAAA,CAAAA,UAAAA,EAA7Ec,WAA6Ed,GAAAA,SAAAA,EAAAA,aAAAA,EAAAA,MAAAA,EAAAA,gBAAAA,EAAAA,MAAAA,EAAAA,GAAAA,kBAAAA,GAAAA,SAAAA,CAAAA,EAAiCc,WAAjCd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat_models.d.cts","names":["BaseMessage","CallbackManagerForLLMRun","BaseChatModel","LangSmithParams","BaseChatModelParams","ChatGenerationChunk","ChatResult","AIMessageChunk","BaseLanguageModelInput","StructuredOutputMethodOptions","ModelProfile","Runnable","AsyncCaller","InteropZodType","GoogleAIBaseLLMInput","GoogleAIModelParams","GoogleAISafetySetting","GoogleConnectionParams","GooglePlatformType","GoogleAIBaseLanguageModelCallOptions","GoogleAIAPI","GoogleAIAPIParams","GoogleSearchToolSetting","GoogleSpeechConfig","AbstractGoogleLLMConnection","GoogleAbstractedClient","GoogleBaseLLMInput","GoogleAISafetyHandler","GoogleAISafetyParams","GoogleAIToolType","GeminiAPIConfig","GoogleAIModelModality","ChatConnection","AuthOptions","Exclude","ChatGoogleBaseInput","Pick","ChatGoogleBase","Record","Partial","__types_js0","GoogleAIModelRequestParams","Promise","AsyncGenerator","RunOutput"],"sources":["../src/chat_models.d.ts"],"sourcesContent":["import { type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel, LangSmithParams, type BaseChatModelParams } from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport { BaseLanguageModelInput, StructuredOutputMethodOptions } from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { Runnable } from \"@langchain/core/runnables\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { InteropZodType } from \"@langchain/core/utils/types\";\nimport { GoogleAIBaseLLMInput, GoogleAIModelParams, GoogleAISafetySetting, GoogleConnectionParams, GooglePlatformType, GoogleAIBaseLanguageModelCallOptions, GoogleAIAPI, GoogleAIAPIParams, GoogleSearchToolSetting, GoogleSpeechConfig } from \"./types.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { GoogleAbstractedClient } from \"./auth.js\";\nimport type { GoogleBaseLLMInput, GoogleAISafetyHandler, GoogleAISafetyParams, GoogleAIToolType, GeminiAPIConfig, GoogleAIModelModality } from \"./types.js\";\nexport declare class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<BaseMessage[], AuthOptions> {\n convertSystemMessageToHumanContent: boolean | undefined;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming: boolean);\n get useSystemInstruction(): boolean;\n get computeUseSystemInstruction(): boolean;\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<GoogleSearchToolSetting, boolean>;\n computeGoogleSearchToolAdjustment(apiConfig: GeminiAPIConfig): Exclude<GoogleSearchToolSetting, true>;\n buildGeminiAPI(): GoogleAIAPI;\n get api(): GoogleAIAPI;\n}\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions> extends BaseChatModelParams, GoogleConnectionParams<AuthOptions>, GoogleAIModelParams, GoogleAISafetyParams, GoogleAIAPIParams, Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {\n}\n/**\n * Integration with a Google chat model.\n */\nexport declare abstract class ChatGoogleBase<AuthOptions> extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk> implements ChatGoogleBaseInput<AuthOptions> {\n // Used for tracing, replace with the same name as your class\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n lc_serializable: boolean;\n // Set based on modelName\n model: string;\n modelName: string;\n temperature: number;\n maxOutputTokens: number;\n maxReasoningTokens: number;\n topP: number;\n topK: number;\n seed: number;\n presencePenalty: number;\n frequencyPenalty: number;\n stopSequences: string[];\n logprobs: boolean;\n topLogprobs: number;\n safetySettings: GoogleAISafetySetting[];\n responseModalities?: GoogleAIModelModality[];\n // May intentionally be undefined, meaning to compute this.\n convertSystemMessageToHumanContent: boolean | undefined;\n safetyHandler: GoogleAISafetyHandler;\n speechConfig: GoogleSpeechConfig;\n streamUsage: boolean;\n streaming: boolean;\n labels?: Record<string, string>;\n protected connection: ChatConnection<AuthOptions>;\n protected streamedConnection: ChatConnection<AuthOptions>;\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>);\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams;\n abstract buildAbstractedClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient;\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined;\n buildClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildConnection(fields: GoogleBaseLLMInput<AuthOptions>, client: GoogleAbstractedClient): void;\n get platform(): GooglePlatformType;\n bindTools(tools: GoogleAIToolType[], kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>): Runnable<BaseLanguageModelInput, AIMessageChunk, GoogleAIBaseLanguageModelCallOptions>;\n // Replace\n _llmType(): string;\n /**\n * Get the parameters used to invoke the model\n */\n invocationParams(options?: this[\"ParsedCallOptions\"]): import(\"./types.js\").GoogleAIModelRequestParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager: CallbackManagerForLLMRun | undefined): Promise<ChatResult>;\n _streamResponseChunks(_messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n /** @ignore */\n _combineLLMOutput(): never[];\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile;\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>, config?: StructuredOutputMethodOptions<false>): Runnable<BaseLanguageModelInput, RunOutput>;\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>, config?: StructuredOutputMethodOptions<true>): Runnable<BaseLanguageModelInput, {\n raw: BaseMessage;\n parsed: RunOutput;\n }>;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat_models.d.ts","names":["BaseMessage","CallbackManagerForLLMRun","BaseChatModel","LangSmithParams","BaseChatModelParams","ChatGenerationChunk","ChatResult","AIMessageChunk","BaseLanguageModelInput","StructuredOutputMethodOptions","ModelProfile","Runnable","AsyncCaller","InteropZodType","GoogleAIBaseLLMInput","GoogleAIModelParams","GoogleAISafetySetting","GoogleConnectionParams","GooglePlatformType","GoogleAIBaseLanguageModelCallOptions","GoogleAIAPI","GoogleAIAPIParams","GoogleSearchToolSetting","GoogleSpeechConfig","AbstractGoogleLLMConnection","GoogleAbstractedClient","GoogleBaseLLMInput","GoogleAISafetyHandler","GoogleAISafetyParams","GoogleAIToolType","GeminiAPIConfig","GoogleAIModelModality","ChatConnection","AuthOptions","Exclude","ChatGoogleBaseInput","Pick","ChatGoogleBase","Record","Partial","__types_js0","GoogleAIModelRequestParams","Promise","AsyncGenerator","RunOutput"],"sources":["../src/chat_models.d.ts"],"sourcesContent":["import { type BaseMessage } from \"@langchain/core/messages\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel, LangSmithParams, type BaseChatModelParams } from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport { BaseLanguageModelInput, StructuredOutputMethodOptions } from \"@langchain/core/language_models/base\";\nimport { type ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { Runnable } from \"@langchain/core/runnables\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { InteropZodType } from \"@langchain/core/utils/types\";\nimport { GoogleAIBaseLLMInput, GoogleAIModelParams, GoogleAISafetySetting, GoogleConnectionParams, GooglePlatformType, GoogleAIBaseLanguageModelCallOptions, GoogleAIAPI, GoogleAIAPIParams, GoogleSearchToolSetting, GoogleSpeechConfig } from \"./types.js\";\nimport { AbstractGoogleLLMConnection } from \"./connection.js\";\nimport { GoogleAbstractedClient } from \"./auth.js\";\nimport type { GoogleBaseLLMInput, GoogleAISafetyHandler, GoogleAISafetyParams, GoogleAIToolType, GeminiAPIConfig, GoogleAIModelModality } from \"./types.js\";\nexport declare class ChatConnection<AuthOptions> extends AbstractGoogleLLMConnection<BaseMessage[], AuthOptions> {\n convertSystemMessageToHumanContent: boolean | undefined;\n constructor(fields: GoogleAIBaseLLMInput<AuthOptions> | undefined, caller: AsyncCaller, client: GoogleAbstractedClient, streaming: boolean);\n get useSystemInstruction(): boolean;\n get computeUseSystemInstruction(): boolean;\n computeGoogleSearchToolAdjustmentFromModel(): Exclude<GoogleSearchToolSetting, boolean>;\n computeGoogleSearchToolAdjustment(apiConfig: GeminiAPIConfig): Exclude<GoogleSearchToolSetting, true>;\n buildGeminiAPI(): GoogleAIAPI;\n get api(): GoogleAIAPI;\n}\n/**\n * Input to chat model class.\n */\nexport interface ChatGoogleBaseInput<AuthOptions> extends BaseChatModelParams, GoogleConnectionParams<AuthOptions>, GoogleAIModelParams, GoogleAISafetyParams, GoogleAIAPIParams, Pick<GoogleAIBaseLanguageModelCallOptions, \"streamUsage\"> {\n}\n/**\n * Integration with a Google chat model.\n */\nexport declare abstract class ChatGoogleBase<AuthOptions> extends BaseChatModel<GoogleAIBaseLanguageModelCallOptions, AIMessageChunk> implements ChatGoogleBaseInput<AuthOptions> {\n // Used for tracing, replace with the same name as your class\n static lc_name(): string;\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n lc_serializable: boolean;\n // Set based on modelName\n model: string;\n modelName: string;\n temperature: number;\n maxOutputTokens: number;\n maxReasoningTokens: number;\n topP: number;\n topK: number;\n seed: number;\n presencePenalty: number;\n frequencyPenalty: number;\n stopSequences: string[];\n logprobs: boolean;\n topLogprobs: number;\n safetySettings: GoogleAISafetySetting[];\n responseModalities?: GoogleAIModelModality[];\n // May intentionally be undefined, meaning to compute this.\n convertSystemMessageToHumanContent: boolean | undefined;\n safetyHandler: GoogleAISafetyHandler;\n speechConfig: GoogleSpeechConfig;\n streamUsage: boolean;\n streaming: boolean;\n labels?: Record<string, string>;\n protected connection: ChatConnection<AuthOptions>;\n protected streamedConnection: ChatConnection<AuthOptions>;\n constructor(fields?: ChatGoogleBaseInput<AuthOptions>);\n getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams;\n abstract buildAbstractedClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildApiKeyClient(apiKey: string): GoogleAbstractedClient;\n buildApiKey(fields?: GoogleAIBaseLLMInput<AuthOptions>): string | undefined;\n buildClient(fields?: GoogleAIBaseLLMInput<AuthOptions>): GoogleAbstractedClient;\n buildConnection(fields: GoogleBaseLLMInput<AuthOptions>, client: GoogleAbstractedClient): void;\n get platform(): GooglePlatformType;\n bindTools(tools: GoogleAIToolType[], kwargs?: Partial<GoogleAIBaseLanguageModelCallOptions>): Runnable<BaseLanguageModelInput, AIMessageChunk, GoogleAIBaseLanguageModelCallOptions>;\n // Replace\n _llmType(): string;\n /**\n * Get the parameters used to invoke the model\n */\n invocationParams(options?: this[\"ParsedCallOptions\"]): import(\"./types.js\").GoogleAIModelRequestParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager: CallbackManagerForLLMRun | undefined): Promise<ChatResult>;\n _streamResponseChunks(_messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n /** @ignore */\n _combineLLMOutput(): never[];\n /**\n * Return profiling information for the model.\n *\n * Provides information about the model's capabilities and constraints,\n * including token limits, multimodal support, and advanced features like\n * tool calling and structured output.\n *\n * @returns {ModelProfile} An object describing the model's capabilities and constraints\n */\n get profile(): ModelProfile;\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>, config?: StructuredOutputMethodOptions<false>): Runnable<BaseLanguageModelInput, RunOutput>;\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>, config?: StructuredOutputMethodOptions<true>): Runnable<BaseLanguageModelInput, {\n raw: BaseMessage;\n parsed: RunOutput;\n }>;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
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","Promise","Record","CallOptions","ResponseType","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { 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 // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\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"],"mappings":"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"}
@@ -1 +0,0 @@
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","Promise","Record","CallOptions","ResponseType","GoogleHostConnection","AuthOptions","GoogleRawConnection","GoogleAIConnection","InputType","AbstractGoogleLLMConnection","MessageType","GoogleCustomEventInfo","GoogleRequestCallbackHandler","GoogleRequestLogger","GoogleRequestRecorder"],"sources":["../src/connection.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { 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 // This does not default to a value intentionally.\n // Use the \"platform\" getter if you need this.\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"],"mappings":"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"}