@langchain/langgraph-sdk 1.9.18 → 1.9.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/client/index.cjs +1 -0
  2. package/dist/client/index.cjs.map +1 -1
  3. package/dist/client/index.d.cts +1 -0
  4. package/dist/client/index.d.cts.map +1 -1
  5. package/dist/client/index.d.ts +1 -0
  6. package/dist/client/index.d.ts.map +1 -1
  7. package/dist/client/index.js +1 -0
  8. package/dist/client/index.js.map +1 -1
  9. package/dist/client/stream/resolve-client-api-url.cjs +20 -0
  10. package/dist/client/stream/resolve-client-api-url.cjs.map +1 -0
  11. package/dist/client/stream/resolve-client-api-url.d.cts +17 -0
  12. package/dist/client/stream/resolve-client-api-url.d.cts.map +1 -0
  13. package/dist/client/stream/resolve-client-api-url.d.ts +17 -0
  14. package/dist/client/stream/resolve-client-api-url.d.ts.map +1 -0
  15. package/dist/client/stream/resolve-client-api-url.js +20 -0
  16. package/dist/client/stream/resolve-client-api-url.js.map +1 -0
  17. package/dist/client/stream/transport/agent-server.cjs +11 -0
  18. package/dist/client/stream/transport/agent-server.cjs.map +1 -1
  19. package/dist/client/stream/transport/agent-server.d.cts +6 -0
  20. package/dist/client/stream/transport/agent-server.d.cts.map +1 -1
  21. package/dist/client/stream/transport/agent-server.d.ts +6 -0
  22. package/dist/client/stream/transport/agent-server.d.ts.map +1 -1
  23. package/dist/client/stream/transport/agent-server.js +11 -0
  24. package/dist/client/stream/transport/agent-server.js.map +1 -1
  25. package/dist/client/stream/transport/http.cjs +29 -4
  26. package/dist/client/stream/transport/http.cjs.map +1 -1
  27. package/dist/client/stream/transport/http.d.cts +21 -1
  28. package/dist/client/stream/transport/http.d.cts.map +1 -1
  29. package/dist/client/stream/transport/http.d.ts +21 -1
  30. package/dist/client/stream/transport/http.d.ts.map +1 -1
  31. package/dist/client/stream/transport/http.js +28 -3
  32. package/dist/client/stream/transport/http.js.map +1 -1
  33. package/dist/client/stream/transport/types.d.cts +2 -0
  34. package/dist/client/stream/transport/types.d.cts.map +1 -1
  35. package/dist/client/stream/transport/types.d.ts +2 -0
  36. package/dist/client/stream/transport/types.d.ts.map +1 -1
  37. package/dist/client/stream/transport.d.cts +10 -4
  38. package/dist/client/stream/transport.d.cts.map +1 -1
  39. package/dist/client/stream/transport.d.ts +10 -4
  40. package/dist/client/stream/transport.d.ts.map +1 -1
  41. package/dist/client.cjs +2 -0
  42. package/dist/client.d.cts +2 -1
  43. package/dist/client.d.ts +2 -1
  44. package/dist/client.js +2 -1
  45. package/dist/stream/controller.cjs +12 -1
  46. package/dist/stream/controller.cjs.map +1 -1
  47. package/dist/stream/controller.d.cts.map +1 -1
  48. package/dist/stream/controller.d.ts.map +1 -1
  49. package/dist/stream/controller.js +12 -1
  50. package/dist/stream/controller.js.map +1 -1
  51. package/dist/ui/branching.d.cts +1 -1
  52. package/dist/ui/branching.d.ts +1 -1
  53. package/dist/ui/orchestrator.d.cts +1 -1
  54. package/dist/ui/orchestrator.d.cts.map +1 -1
  55. package/dist/ui/orchestrator.d.ts +1 -1
  56. package/dist/ui/orchestrator.d.ts.map +1 -1
  57. package/dist/utils/sse.cjs.map +1 -1
  58. package/dist/utils/sse.d.cts.map +1 -1
  59. package/dist/utils/sse.d.ts.map +1 -1
  60. package/dist/utils/sse.js.map +1 -1
  61. package/dist/utils/stream.d.cts +1 -1
  62. package/dist/utils/stream.d.cts.map +1 -1
  63. package/dist/utils/stream.d.ts +1 -1
  64. package/dist/utils/stream.d.ts.map +1 -1
  65. package/package.json +2 -2
  66. package/dist/client/stream/transport/constants.cjs +0 -10
  67. package/dist/client/stream/transport/constants.cjs.map +0 -1
  68. package/dist/client/stream/transport/constants.js +0 -10
  69. package/dist/client/stream/transport/constants.js.map +0 -1
  70. package/dist/client/stream/transport/decoder.cjs +0 -115
  71. package/dist/client/stream/transport/decoder.cjs.map +0 -1
  72. package/dist/client/stream/transport/decoder.js +0 -114
  73. package/dist/client/stream/transport/decoder.js.map +0 -1
  74. package/dist/client/stream/transport/stream.cjs +0 -79
  75. package/dist/client/stream/transport/stream.cjs.map +0 -1
  76. package/dist/client/stream/transport/stream.js +0 -79
  77. package/dist/client/stream/transport/stream.js.map +0 -1
@@ -108,7 +108,7 @@ declare class StreamOrchestrator<StateType extends Record<string, unknown> = Rec
108
108
  branchOptions: string[] | undefined;
109
109
  };
110
110
  };
111
- threadHead: ThreadState<any> | undefined;
111
+ threadHead: any;
112
112
  };
113
113
  /**
114
114
  * The state values from the thread head of the current branch history,
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.cts","names":[],"sources":["../../src/ui/orchestrator.ts"],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.cts","names":[],"sources":["../../src/ui/orchestrator.ts"],"mappings":"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"}
@@ -108,7 +108,7 @@ declare class StreamOrchestrator<StateType extends Record<string, unknown> = Rec
108
108
  branchOptions: string[] | undefined;
109
109
  };
110
110
  };
111
- threadHead: ThreadState<any> | undefined;
111
+ threadHead: any;
112
112
  };
113
113
  /**
114
114
  * The state values from the thread head of the current branch history,
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","names":[],"sources":["../../src/ui/orchestrator.ts"],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","names":[],"sources":["../../src/ui/orchestrator.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.cjs","names":[],"sources":["../../src/utils/sse.ts"],"sourcesContent":["const CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\n\nconst TRAILING_NEWLINE = [CR, LF];\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n // See https://docs.python.org/3/glossary.html#term-universal-newlines\n let text = chunk;\n\n // Handle trailing CR from previous chunk\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n // Check for trailing CR in current chunk\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) return;\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) return acc;\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n // Include existing buffer in first line\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline) {\n // If the last segment is not newline terminated,\n // buffer it for the next chunk\n if (lines.length) buffer = [lines.pop()!];\n }\n\n // Enqueue complete lines\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\ninterface StreamPart {\n id: string | undefined;\n event: string;\n data: unknown;\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n // Handle empty line case\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) return;\n\n const sse = {\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n };\n\n // NOTE: as per the SSE spec, do not reset lastEventId\n event = \"\";\n data = [];\n retry = null;\n\n controller.enqueue(sse);\n return;\n }\n\n // Ignore comments\n if (chunk[0] === COLON) return;\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) return;\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) value = value.subarray(1);\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) retry = retryNum;\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const c of data) {\n merged.set(c, offset);\n offset += c.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n"],"mappings":";AAAA,MAAM,KAAK,KAAK,WAAW,EAAE;AAC7B,MAAM,KAAK,KAAK,WAAW,EAAE;AAC7B,MAAM,OAAO,KAAK,WAAW,EAAE;AAC/B,MAAM,QAAQ,IAAI,WAAW,EAAE;AAC/B,MAAM,QAAQ,IAAI,WAAW,EAAE;AAE/B,MAAM,mBAAmB,CAAC,IAAI,GAAG;AAEjC,SAAgB,mBAAmB;CACjC,IAAI,SAAuB,EAAE;CAC7B,IAAI,aAAa;AAEjB,QAAO,IAAI,gBAAwC;EACjD,QAAQ;AACN,YAAS,EAAE;AACX,gBAAa;;EAGf,UAAU,OAAO,YAAY;GAE3B,IAAI,OAAO;AAGX,OAAI,YAAY;AACd,WAAO,WAAW,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,iBAAa;;AAIf,OAAI,KAAK,SAAS,KAAK,KAAK,GAAG,GAAG,KAAK,IAAI;AACzC,iBAAa;AACb,WAAO,KAAK,SAAS,GAAG,GAAG;;AAG7B,OAAI,CAAC,KAAK,OAAQ;GAClB,MAAM,kBAAkB,iBAAiB,SAAS,KAAK,GAAG,GAAG,CAAE;GAE/D,MAAM,UAAU,KAAK,SAAS;GAC9B,MAAM,EAAE,UAAU,KAAK,QACpB,KAAK,KAAK,QAAQ;AACjB,QAAI,IAAI,OAAO,IAAK,QAAO;AAE3B,QAAI,QAAQ,MAAM,QAAQ,IAAI;AAC5B,SAAI,MAAM,KAAK,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC;AAC5C,SAAI,QAAQ,MAAM,KAAK,MAAM,OAAO,GAClC,KAAI,OAAO,MAAM;SAEjB,KAAI,OAAO,MAAM;;AAIrB,QAAI,QAAQ,WAAW,IAAI,QAAQ,QACjC,KAAI,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC;AAGzC,WAAO;MAET;IAAE,OAAO,EAAE;IAAE,MAAM;IAAG,CACvB;AAED,OAAI,MAAM,WAAW,KAAK,CAAC,iBAAiB;AAC1C,WAAO,KAAK,MAAM,GAAG;AACrB;;AAGF,OAAI,OAAO,QAAQ;AAEjB,WAAO,KAAK,MAAM,GAAG;AACrB,UAAM,KAAK,WAAW,OAAO;AAC7B,aAAS,EAAE;;AAGb,OAAI,CAAC;QAGC,MAAM,OAAQ,UAAS,CAAC,MAAM,KAAK,CAAE;;AAI3C,QAAK,MAAM,QAAQ,MACjB,YAAW,QAAQ,KAAK;;EAI5B,MAAM,YAAY;AAChB,OAAI,OAAO,OACT,YAAW,QAAQ,WAAW,OAAO,CAAC;;EAG3C,CAAC;;AASJ,SAAgB,aAAa;CAC3B,IAAI,QAAQ;CACZ,IAAI,OAAqB,EAAE;CAC3B,IAAI,cAAc;CAClB,IAAI,QAAuB;CAE3B,MAAM,UAAU,IAAI,aAAa;AAEjC,QAAO,IAAI,gBAAwC;EACjD,UAAU,OAAO,YAAY;AAE3B,OAAI,CAAC,MAAM,QAAQ;AACjB,QAAI,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,eAAe,SAAS,KAAM;IAE7D,MAAM,MAAM;KACV,IAAI,eAAe,KAAA;KACnB;KACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,KAAK,GAAG;KACzD;AAGD,YAAQ;AACR,WAAO,EAAE;AACT,YAAQ;AAER,eAAW,QAAQ,IAAI;AACvB;;AAIF,OAAI,MAAM,OAAO,MAAO;GAExB,MAAM,SAAS,MAAM,QAAQ,MAAM;AACnC,OAAI,WAAW,GAAI;GAEnB,MAAM,YAAY,QAAQ,OAAO,MAAM,SAAS,GAAG,OAAO,CAAC;GAC3D,IAAI,QAAQ,MAAM,SAAS,SAAS,EAAE;AACtC,OAAI,MAAM,OAAO,MAAO,SAAQ,MAAM,SAAS,EAAE;AAEjD,OAAI,cAAc,QAChB,SAAQ,QAAQ,OAAO,MAAM;YACpB,cAAc,OACvB,MAAK,KAAK,MAAM;YACP,cAAc;QACnB,MAAM,QAAQ,KAAK,KAAK,GAAI,eAAc,QAAQ,OAAO,MAAM;cAC1D,cAAc,SAAS;IAChC,MAAM,WAAW,OAAO,SAAS,QAAQ,OAAO,MAAM,EAAE,GAAG;AAC3D,QAAI,CAAC,OAAO,MAAM,SAAS,CAAE,SAAQ;;;EAIzC,MAAM,YAAY;AAChB,OAAI,MACF,YAAW,QAAQ;IACjB,IAAI,eAAe,KAAA;IACnB;IACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,KAAK,GAAG;IACzD,CAAC;;EAGP,CAAC;;AAGJ,SAAS,WAAW,MAA2B;CAC7C,MAAM,cAAc,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,EAAE;CACpE,MAAM,SAAS,IAAI,WAAW,YAAY;CAC1C,IAAI,SAAS;AACb,MAAK,MAAM,KAAK,MAAM;AACpB,SAAO,IAAI,GAAG,OAAO;AACrB,YAAU,EAAE;;AAEd,QAAO;;AAGT,SAAS,mBAAmB,SAAsB,MAA2B;AAC3E,QAAO,KAAK,MAAM,QAAQ,OAAO,WAAW,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"sse.cjs","names":[],"sources":["../../src/utils/sse.ts"],"sourcesContent":["const CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\n\nconst TRAILING_NEWLINE = [CR, LF];\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n // See https://docs.python.org/3/glossary.html#term-universal-newlines\n let text = chunk;\n\n // Handle trailing CR from previous chunk\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n // Check for trailing CR in current chunk\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) return;\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) return acc;\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n // Include existing buffer in first line\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline) {\n // If the last segment is not newline terminated,\n // buffer it for the next chunk\n if (lines.length) buffer = [lines.pop()!];\n }\n\n // Enqueue complete lines\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\nexport interface StreamPart {\n id: string | undefined;\n event: string;\n data: unknown;\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n // Handle empty line case\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) return;\n\n const sse = {\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n };\n\n // NOTE: as per the SSE spec, do not reset lastEventId\n event = \"\";\n data = [];\n retry = null;\n\n controller.enqueue(sse);\n return;\n }\n\n // Ignore comments\n if (chunk[0] === COLON) return;\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) return;\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) value = value.subarray(1);\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) retry = retryNum;\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const c of data) {\n merged.set(c, offset);\n offset += c.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.cts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFtB,UAAA;EACR,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
1
+ {"version":3,"file":"sse.d.cts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFf,UAAA;EACf,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFtB,UAAA;EACR,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
1
+ {"version":3,"file":"sse.d.ts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFf,UAAA;EACf,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","names":[],"sources":["../../src/utils/sse.ts"],"sourcesContent":["const CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\n\nconst TRAILING_NEWLINE = [CR, LF];\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n // See https://docs.python.org/3/glossary.html#term-universal-newlines\n let text = chunk;\n\n // Handle trailing CR from previous chunk\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n // Check for trailing CR in current chunk\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) return;\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) return acc;\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n // Include existing buffer in first line\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline) {\n // If the last segment is not newline terminated,\n // buffer it for the next chunk\n if (lines.length) buffer = [lines.pop()!];\n }\n\n // Enqueue complete lines\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\ninterface StreamPart {\n id: string | undefined;\n event: string;\n data: unknown;\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n // Handle empty line case\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) return;\n\n const sse = {\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n };\n\n // NOTE: as per the SSE spec, do not reset lastEventId\n event = \"\";\n data = [];\n retry = null;\n\n controller.enqueue(sse);\n return;\n }\n\n // Ignore comments\n if (chunk[0] === COLON) return;\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) return;\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) value = value.subarray(1);\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) retry = retryNum;\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const c of data) {\n merged.set(c, offset);\n offset += c.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","names":[],"sources":["../../src/utils/sse.ts"],"sourcesContent":["const CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\n\nconst TRAILING_NEWLINE = [CR, LF];\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n // See https://docs.python.org/3/glossary.html#term-universal-newlines\n let text = chunk;\n\n // Handle trailing CR from previous chunk\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n // Check for trailing CR in current chunk\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) return;\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) return acc;\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n // Include existing buffer in first line\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline) {\n // If the last segment is not newline terminated,\n // buffer it for the next chunk\n if (lines.length) buffer = [lines.pop()!];\n }\n\n // Enqueue complete lines\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\nexport interface StreamPart {\n id: string | undefined;\n event: string;\n data: unknown;\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n // Handle empty line case\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) return;\n\n const sse = {\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n };\n\n // NOTE: as per the SSE spec, do not reset lastEventId\n event = \"\";\n data = [];\n retry = null;\n\n controller.enqueue(sse);\n return;\n }\n\n // Ignore comments\n if (chunk[0] === COLON) return;\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) return;\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) value = value.subarray(1);\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) retry = retryNum;\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const c of data) {\n merged.set(c, offset);\n offset += c.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n"],"mappings":";AAAA,MAAM,KAAK,KAAK,WAAW,EAAE;AAC7B,MAAM,KAAK,KAAK,WAAW,EAAE;AAC7B,MAAM,OAAO,KAAK,WAAW,EAAE;AAC/B,MAAM,QAAQ,IAAI,WAAW,EAAE;AAC/B,MAAM,QAAQ,IAAI,WAAW,EAAE;AAE/B,MAAM,mBAAmB,CAAC,IAAI,GAAG;AAEjC,SAAgB,mBAAmB;CACjC,IAAI,SAAuB,EAAE;CAC7B,IAAI,aAAa;AAEjB,QAAO,IAAI,gBAAwC;EACjD,QAAQ;AACN,YAAS,EAAE;AACX,gBAAa;;EAGf,UAAU,OAAO,YAAY;GAE3B,IAAI,OAAO;AAGX,OAAI,YAAY;AACd,WAAO,WAAW,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,iBAAa;;AAIf,OAAI,KAAK,SAAS,KAAK,KAAK,GAAG,GAAG,KAAK,IAAI;AACzC,iBAAa;AACb,WAAO,KAAK,SAAS,GAAG,GAAG;;AAG7B,OAAI,CAAC,KAAK,OAAQ;GAClB,MAAM,kBAAkB,iBAAiB,SAAS,KAAK,GAAG,GAAG,CAAE;GAE/D,MAAM,UAAU,KAAK,SAAS;GAC9B,MAAM,EAAE,UAAU,KAAK,QACpB,KAAK,KAAK,QAAQ;AACjB,QAAI,IAAI,OAAO,IAAK,QAAO;AAE3B,QAAI,QAAQ,MAAM,QAAQ,IAAI;AAC5B,SAAI,MAAM,KAAK,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC;AAC5C,SAAI,QAAQ,MAAM,KAAK,MAAM,OAAO,GAClC,KAAI,OAAO,MAAM;SAEjB,KAAI,OAAO,MAAM;;AAIrB,QAAI,QAAQ,WAAW,IAAI,QAAQ,QACjC,KAAI,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC;AAGzC,WAAO;MAET;IAAE,OAAO,EAAE;IAAE,MAAM;IAAG,CACvB;AAED,OAAI,MAAM,WAAW,KAAK,CAAC,iBAAiB;AAC1C,WAAO,KAAK,MAAM,GAAG;AACrB;;AAGF,OAAI,OAAO,QAAQ;AAEjB,WAAO,KAAK,MAAM,GAAG;AACrB,UAAM,KAAK,WAAW,OAAO;AAC7B,aAAS,EAAE;;AAGb,OAAI,CAAC;QAGC,MAAM,OAAQ,UAAS,CAAC,MAAM,KAAK,CAAE;;AAI3C,QAAK,MAAM,QAAQ,MACjB,YAAW,QAAQ,KAAK;;EAI5B,MAAM,YAAY;AAChB,OAAI,OAAO,OACT,YAAW,QAAQ,WAAW,OAAO,CAAC;;EAG3C,CAAC;;AASJ,SAAgB,aAAa;CAC3B,IAAI,QAAQ;CACZ,IAAI,OAAqB,EAAE;CAC3B,IAAI,cAAc;CAClB,IAAI,QAAuB;CAE3B,MAAM,UAAU,IAAI,aAAa;AAEjC,QAAO,IAAI,gBAAwC;EACjD,UAAU,OAAO,YAAY;AAE3B,OAAI,CAAC,MAAM,QAAQ;AACjB,QAAI,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,eAAe,SAAS,KAAM;IAE7D,MAAM,MAAM;KACV,IAAI,eAAe,KAAA;KACnB;KACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,KAAK,GAAG;KACzD;AAGD,YAAQ;AACR,WAAO,EAAE;AACT,YAAQ;AAER,eAAW,QAAQ,IAAI;AACvB;;AAIF,OAAI,MAAM,OAAO,MAAO;GAExB,MAAM,SAAS,MAAM,QAAQ,MAAM;AACnC,OAAI,WAAW,GAAI;GAEnB,MAAM,YAAY,QAAQ,OAAO,MAAM,SAAS,GAAG,OAAO,CAAC;GAC3D,IAAI,QAAQ,MAAM,SAAS,SAAS,EAAE;AACtC,OAAI,MAAM,OAAO,MAAO,SAAQ,MAAM,SAAS,EAAE;AAEjD,OAAI,cAAc,QAChB,SAAQ,QAAQ,OAAO,MAAM;YACpB,cAAc,OACvB,MAAK,KAAK,MAAM;YACP,cAAc;QACnB,MAAM,QAAQ,KAAK,KAAK,GAAI,eAAc,QAAQ,OAAO,MAAM;cAC1D,cAAc,SAAS;IAChC,MAAM,WAAW,OAAO,SAAS,QAAQ,OAAO,MAAM,EAAE,GAAG;AAC3D,QAAI,CAAC,OAAO,MAAM,SAAS,CAAE,SAAQ;;;EAIzC,MAAM,YAAY;AAChB,OAAI,MACF,YAAW,QAAQ;IACjB,IAAI,eAAe,KAAA;IACnB;IACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,KAAK,GAAG;IACzD,CAAC;;EAGP,CAAC;;AAGJ,SAAS,WAAW,MAA2B;CAC7C,MAAM,cAAc,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,EAAE;CACpE,MAAM,SAAS,IAAI,WAAW,YAAY;CAC1C,IAAI,SAAS;AACb,MAAK,MAAM,KAAK,MAAM;AACpB,SAAO,IAAI,GAAG,OAAO;AACrB,YAAU,EAAE;;AAEd,QAAO;;AAGT,SAAS,mBAAmB,SAAsB,MAA2B;AAC3E,QAAO,KAAK,MAAM,QAAQ,OAAO,WAAW,KAAK,CAAC,CAAC"}
@@ -4,12 +4,12 @@ type IterableReadableStreamInterface<T> = ReadableStream<T> & AsyncIterable<T>;
4
4
  * Options for streaming with automatic retry logic.
5
5
  */
6
6
  declare class IterableReadableStream<T> extends ReadableStream<T> implements IterableReadableStreamInterface<T> {
7
+ [Symbol.asyncDispose]: () => Promise<void>;
7
8
  reader: ReadableStreamDefaultReader<T>;
8
9
  ensureReader(): void;
9
10
  next(): Promise<IteratorResult<T>>;
10
11
  return(): Promise<IteratorResult<T>>;
11
12
  throw(e: any): Promise<IteratorResult<T>>;
12
- [Symbol.asyncDispose](): Promise<void>;
13
13
  [Symbol.asyncIterator](): this;
14
14
  static fromReadableStream<T>(stream: ReadableStream<T>): IterableReadableStream<T>;
15
15
  static fromAsyncGenerator<T>(generator: AsyncGenerator<T>): IterableReadableStream<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.cts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAEpC,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAYrC,MAAA,CAAO,YAAA,KAAa,OAAA;EAAA,CAI1B,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"stream.d.cts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAAA,CAwDpC,MAAA,CAAO,YAAA,SAAa,OAAA;EAtDpB,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAgB3C,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
@@ -4,12 +4,12 @@ type IterableReadableStreamInterface<T> = ReadableStream<T> & AsyncIterable<T>;
4
4
  * Options for streaming with automatic retry logic.
5
5
  */
6
6
  declare class IterableReadableStream<T> extends ReadableStream<T> implements IterableReadableStreamInterface<T> {
7
+ [Symbol.asyncDispose]: () => Promise<void>;
7
8
  reader: ReadableStreamDefaultReader<T>;
8
9
  ensureReader(): void;
9
10
  next(): Promise<IteratorResult<T>>;
10
11
  return(): Promise<IteratorResult<T>>;
11
12
  throw(e: any): Promise<IteratorResult<T>>;
12
- [Symbol.asyncDispose](): Promise<void>;
13
13
  [Symbol.asyncIterator](): this;
14
14
  static fromReadableStream<T>(stream: ReadableStream<T>): IterableReadableStream<T>;
15
15
  static fromAsyncGenerator<T>(generator: AsyncGenerator<T>): IterableReadableStream<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAEpC,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAYrC,MAAA,CAAO,YAAA,KAAa,OAAA;EAAA,CAI1B,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"stream.d.ts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAAA,CAwDpC,MAAA,CAAO,YAAA,SAAa,OAAA;EAtDpB,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAgB3C,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/langgraph-sdk",
3
- "version": "1.9.18",
3
+ "version": "1.9.20",
4
4
  "description": "Client library for interacting with the LangGraph API",
5
5
  "type": "module",
6
6
  "repository": {
@@ -30,7 +30,7 @@
30
30
  "react-dom": "^19.2.7",
31
31
  "svelte": "^5.56.1",
32
32
  "typescript": "^4.9.5 || ^5.4.5",
33
- "vitest": "^3.2.4",
33
+ "vitest": "^4.1.0",
34
34
  "vue": "^3.5.35",
35
35
  "zod": "^4.3.5"
36
36
  },
@@ -1,10 +0,0 @@
1
- "\r".charCodeAt(0);
2
- "\n".charCodeAt(0);
3
- "\0".charCodeAt(0);
4
- ":".charCodeAt(0);
5
- " ".charCodeAt(0);
6
- const TRAILING_NEWLINE = [13, 10];
7
- //#endregion
8
- exports.TRAILING_NEWLINE = TRAILING_NEWLINE;
9
-
10
- //# sourceMappingURL=constants.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.cjs","names":[],"sources":["../../../../src/client/stream/transport/constants.ts"],"sourcesContent":["export const CR = \"\\r\".charCodeAt(0);\nexport const LF = \"\\n\".charCodeAt(0);\nexport const NULL = \"\\0\".charCodeAt(0);\nexport const COLON = \":\".charCodeAt(0);\nexport const SPACE = \" \".charCodeAt(0);\nexport const TRAILING_NEWLINE = [CR, LF];\n"],"mappings":"AAAkB,KAAK,WAAW,EAAE;AAClB,KAAK,WAAW,EAAE;AAChB,KAAK,WAAW,EAAE;AACjB,IAAI,WAAW,EAAE;AACjB,IAAI,WAAW,EAAE;AACtC,MAAa,mBAAmB,CAAA,IAAA,GAAQ"}
@@ -1,10 +0,0 @@
1
- "\r".charCodeAt(0);
2
- "\n".charCodeAt(0);
3
- "\0".charCodeAt(0);
4
- ":".charCodeAt(0);
5
- " ".charCodeAt(0);
6
- const TRAILING_NEWLINE = [13, 10];
7
- //#endregion
8
- export { TRAILING_NEWLINE };
9
-
10
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../../src/client/stream/transport/constants.ts"],"sourcesContent":["export const CR = \"\\r\".charCodeAt(0);\nexport const LF = \"\\n\".charCodeAt(0);\nexport const NULL = \"\\0\".charCodeAt(0);\nexport const COLON = \":\".charCodeAt(0);\nexport const SPACE = \" \".charCodeAt(0);\nexport const TRAILING_NEWLINE = [CR, LF];\n"],"mappings":"AAAkB,KAAK,WAAW,EAAE;AAClB,KAAK,WAAW,EAAE;AAChB,KAAK,WAAW,EAAE;AACjB,IAAI,WAAW,EAAE;AACjB,IAAI,WAAW,EAAE;AACtC,MAAa,mBAAmB,CAAA,IAAA,GAAQ"}
@@ -1,115 +0,0 @@
1
- const require_constants = require("./constants.cjs");
2
- //#region src/client/stream/transport/decoder.ts
3
- function joinArrays(data) {
4
- const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
5
- const merged = new Uint8Array(totalLength);
6
- let offset = 0;
7
- for (const chunk of data) {
8
- merged.set(chunk, offset);
9
- offset += chunk.length;
10
- }
11
- return merged;
12
- }
13
- function decodeArraysToJson(decoder, data) {
14
- return JSON.parse(decoder.decode(joinArrays(data)));
15
- }
16
- function BytesLineDecoder() {
17
- let buffer = [];
18
- let trailingCr = false;
19
- return new TransformStream({
20
- start() {
21
- buffer = [];
22
- trailingCr = false;
23
- },
24
- transform(chunk, controller) {
25
- let text = chunk;
26
- if (trailingCr) {
27
- text = joinArrays([[13], text]);
28
- trailingCr = false;
29
- }
30
- if (text.length > 0 && text.at(-1) === 13) {
31
- trailingCr = true;
32
- text = text.subarray(0, -1);
33
- }
34
- if (!text.length) return;
35
- const trailingNewline = require_constants.TRAILING_NEWLINE.includes(text.at(-1));
36
- const lastIdx = text.length - 1;
37
- const { lines } = text.reduce((acc, cur, idx) => {
38
- if (acc.from > idx) return acc;
39
- if (cur === 13 || cur === 10) {
40
- acc.lines.push(text.subarray(acc.from, idx));
41
- if (cur === 13 && text[idx + 1] === 10) acc.from = idx + 2;
42
- else acc.from = idx + 1;
43
- }
44
- if (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));
45
- return acc;
46
- }, {
47
- lines: [],
48
- from: 0
49
- });
50
- if (lines.length === 1 && !trailingNewline) {
51
- buffer.push(lines[0]);
52
- return;
53
- }
54
- if (buffer.length) {
55
- buffer.push(lines[0]);
56
- lines[0] = joinArrays(buffer);
57
- buffer = [];
58
- }
59
- if (!trailingNewline && lines.length) buffer = [lines.pop()];
60
- for (const line of lines) controller.enqueue(line);
61
- },
62
- flush(controller) {
63
- if (buffer.length) controller.enqueue(joinArrays(buffer));
64
- }
65
- });
66
- }
67
- function SSEDecoder() {
68
- let event = "";
69
- let data = [];
70
- let lastEventId = "";
71
- let retry = null;
72
- const decoder = new TextDecoder();
73
- return new TransformStream({
74
- transform(chunk, controller) {
75
- if (!chunk.length) {
76
- if (!event && !data.length && !lastEventId && retry == null) return;
77
- controller.enqueue({
78
- id: lastEventId || void 0,
79
- event,
80
- data: data.length ? decodeArraysToJson(decoder, data) : null
81
- });
82
- event = "";
83
- data = [];
84
- retry = null;
85
- return;
86
- }
87
- if (chunk[0] === 58) return;
88
- const sepIdx = chunk.indexOf(58);
89
- if (sepIdx === -1) return;
90
- const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
91
- let value = chunk.subarray(sepIdx + 1);
92
- if (value[0] === 32) value = value.subarray(1);
93
- if (fieldName === "event") event = decoder.decode(value);
94
- else if (fieldName === "data") data.push(value);
95
- else if (fieldName === "id") {
96
- if (value.indexOf(0) === -1) lastEventId = decoder.decode(value);
97
- } else if (fieldName === "retry") {
98
- const retryNum = Number.parseInt(decoder.decode(value), 10);
99
- if (!Number.isNaN(retryNum)) retry = retryNum;
100
- }
101
- },
102
- flush(controller) {
103
- if (event) controller.enqueue({
104
- id: lastEventId || void 0,
105
- event,
106
- data: data.length ? decodeArraysToJson(decoder, data) : null
107
- });
108
- }
109
- });
110
- }
111
- //#endregion
112
- exports.BytesLineDecoder = BytesLineDecoder;
113
- exports.SSEDecoder = SSEDecoder;
114
-
115
- //# sourceMappingURL=decoder.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decoder.cjs","names":["TRAILING_NEWLINE"],"sources":["../../../../src/client/stream/transport/decoder.ts"],"sourcesContent":["import type { StreamPart } from \"./types.js\";\nimport { CR, LF, NULL, COLON, SPACE, TRAILING_NEWLINE } from \"./constants.js\";\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of data) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n let text = chunk;\n\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) {\n return;\n }\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) {\n return acc;\n }\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline && lines.length) {\n buffer = [lines.pop()!];\n }\n\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) {\n return;\n }\n\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n\n event = \"\";\n data = [];\n retry = null;\n return;\n }\n\n if (chunk[0] === COLON) {\n return;\n }\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) {\n return;\n }\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) {\n value = value.subarray(1);\n }\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) {\n lastEventId = decoder.decode(value);\n }\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) {\n retry = retryNum;\n }\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n"],"mappings":"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"}
@@ -1,114 +0,0 @@
1
- import { TRAILING_NEWLINE } from "./constants.js";
2
- //#region src/client/stream/transport/decoder.ts
3
- function joinArrays(data) {
4
- const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
5
- const merged = new Uint8Array(totalLength);
6
- let offset = 0;
7
- for (const chunk of data) {
8
- merged.set(chunk, offset);
9
- offset += chunk.length;
10
- }
11
- return merged;
12
- }
13
- function decodeArraysToJson(decoder, data) {
14
- return JSON.parse(decoder.decode(joinArrays(data)));
15
- }
16
- function BytesLineDecoder() {
17
- let buffer = [];
18
- let trailingCr = false;
19
- return new TransformStream({
20
- start() {
21
- buffer = [];
22
- trailingCr = false;
23
- },
24
- transform(chunk, controller) {
25
- let text = chunk;
26
- if (trailingCr) {
27
- text = joinArrays([[13], text]);
28
- trailingCr = false;
29
- }
30
- if (text.length > 0 && text.at(-1) === 13) {
31
- trailingCr = true;
32
- text = text.subarray(0, -1);
33
- }
34
- if (!text.length) return;
35
- const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));
36
- const lastIdx = text.length - 1;
37
- const { lines } = text.reduce((acc, cur, idx) => {
38
- if (acc.from > idx) return acc;
39
- if (cur === 13 || cur === 10) {
40
- acc.lines.push(text.subarray(acc.from, idx));
41
- if (cur === 13 && text[idx + 1] === 10) acc.from = idx + 2;
42
- else acc.from = idx + 1;
43
- }
44
- if (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));
45
- return acc;
46
- }, {
47
- lines: [],
48
- from: 0
49
- });
50
- if (lines.length === 1 && !trailingNewline) {
51
- buffer.push(lines[0]);
52
- return;
53
- }
54
- if (buffer.length) {
55
- buffer.push(lines[0]);
56
- lines[0] = joinArrays(buffer);
57
- buffer = [];
58
- }
59
- if (!trailingNewline && lines.length) buffer = [lines.pop()];
60
- for (const line of lines) controller.enqueue(line);
61
- },
62
- flush(controller) {
63
- if (buffer.length) controller.enqueue(joinArrays(buffer));
64
- }
65
- });
66
- }
67
- function SSEDecoder() {
68
- let event = "";
69
- let data = [];
70
- let lastEventId = "";
71
- let retry = null;
72
- const decoder = new TextDecoder();
73
- return new TransformStream({
74
- transform(chunk, controller) {
75
- if (!chunk.length) {
76
- if (!event && !data.length && !lastEventId && retry == null) return;
77
- controller.enqueue({
78
- id: lastEventId || void 0,
79
- event,
80
- data: data.length ? decodeArraysToJson(decoder, data) : null
81
- });
82
- event = "";
83
- data = [];
84
- retry = null;
85
- return;
86
- }
87
- if (chunk[0] === 58) return;
88
- const sepIdx = chunk.indexOf(58);
89
- if (sepIdx === -1) return;
90
- const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
91
- let value = chunk.subarray(sepIdx + 1);
92
- if (value[0] === 32) value = value.subarray(1);
93
- if (fieldName === "event") event = decoder.decode(value);
94
- else if (fieldName === "data") data.push(value);
95
- else if (fieldName === "id") {
96
- if (value.indexOf(0) === -1) lastEventId = decoder.decode(value);
97
- } else if (fieldName === "retry") {
98
- const retryNum = Number.parseInt(decoder.decode(value), 10);
99
- if (!Number.isNaN(retryNum)) retry = retryNum;
100
- }
101
- },
102
- flush(controller) {
103
- if (event) controller.enqueue({
104
- id: lastEventId || void 0,
105
- event,
106
- data: data.length ? decodeArraysToJson(decoder, data) : null
107
- });
108
- }
109
- });
110
- }
111
- //#endregion
112
- export { BytesLineDecoder, SSEDecoder };
113
-
114
- //# sourceMappingURL=decoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decoder.js","names":[],"sources":["../../../../src/client/stream/transport/decoder.ts"],"sourcesContent":["import type { StreamPart } from \"./types.js\";\nimport { CR, LF, NULL, COLON, SPACE, TRAILING_NEWLINE } from \"./constants.js\";\n\nfunction joinArrays(data: ArrayLike<number>[]) {\n const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of data) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return merged;\n}\n\nfunction decodeArraysToJson(decoder: TextDecoder, data: ArrayLike<number>[]) {\n return JSON.parse(decoder.decode(joinArrays(data)));\n}\n\nexport function BytesLineDecoder() {\n let buffer: Uint8Array[] = [];\n let trailingCr = false;\n\n return new TransformStream<Uint8Array, Uint8Array>({\n start() {\n buffer = [];\n trailingCr = false;\n },\n\n transform(chunk, controller) {\n let text = chunk;\n\n if (trailingCr) {\n text = joinArrays([[CR], text]);\n trailingCr = false;\n }\n\n if (text.length > 0 && text.at(-1) === CR) {\n trailingCr = true;\n text = text.subarray(0, -1);\n }\n\n if (!text.length) {\n return;\n }\n const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!);\n\n const lastIdx = text.length - 1;\n const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>(\n (acc, cur, idx) => {\n if (acc.from > idx) {\n return acc;\n }\n\n if (cur === CR || cur === LF) {\n acc.lines.push(text.subarray(acc.from, idx));\n if (cur === CR && text[idx + 1] === LF) {\n acc.from = idx + 2;\n } else {\n acc.from = idx + 1;\n }\n }\n\n if (idx === lastIdx && acc.from <= lastIdx) {\n acc.lines.push(text.subarray(acc.from));\n }\n\n return acc;\n },\n { lines: [], from: 0 }\n );\n\n if (lines.length === 1 && !trailingNewline) {\n buffer.push(lines[0]);\n return;\n }\n\n if (buffer.length) {\n buffer.push(lines[0]);\n lines[0] = joinArrays(buffer);\n buffer = [];\n }\n\n if (!trailingNewline && lines.length) {\n buffer = [lines.pop()!];\n }\n\n for (const line of lines) {\n controller.enqueue(line);\n }\n },\n\n flush(controller) {\n if (buffer.length) {\n controller.enqueue(joinArrays(buffer));\n }\n },\n });\n}\n\nexport function SSEDecoder() {\n let event = \"\";\n let data: Uint8Array[] = [];\n let lastEventId = \"\";\n let retry: number | null = null;\n\n const decoder = new TextDecoder();\n\n return new TransformStream<Uint8Array, StreamPart>({\n transform(chunk, controller) {\n if (!chunk.length) {\n if (!event && !data.length && !lastEventId && retry == null) {\n return;\n }\n\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n\n event = \"\";\n data = [];\n retry = null;\n return;\n }\n\n if (chunk[0] === COLON) {\n return;\n }\n\n const sepIdx = chunk.indexOf(COLON);\n if (sepIdx === -1) {\n return;\n }\n\n const fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n let value = chunk.subarray(sepIdx + 1);\n if (value[0] === SPACE) {\n value = value.subarray(1);\n }\n\n if (fieldName === \"event\") {\n event = decoder.decode(value);\n } else if (fieldName === \"data\") {\n data.push(value);\n } else if (fieldName === \"id\") {\n if (value.indexOf(NULL) === -1) {\n lastEventId = decoder.decode(value);\n }\n } else if (fieldName === \"retry\") {\n const retryNum = Number.parseInt(decoder.decode(value), 10);\n if (!Number.isNaN(retryNum)) {\n retry = retryNum;\n }\n }\n },\n\n flush(controller) {\n if (event) {\n controller.enqueue({\n id: lastEventId || undefined,\n event,\n data: data.length ? decodeArraysToJson(decoder, data) : null,\n });\n }\n },\n });\n}\n"],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- //#region src/client/stream/transport/stream.ts
2
- var IterableReadableStream = class IterableReadableStream extends ReadableStream {
3
- reader;
4
- ensureReader() {
5
- if (!this.reader) this.reader = this.getReader();
6
- }
7
- async next() {
8
- this.ensureReader();
9
- try {
10
- const result = await this.reader.read();
11
- if (result.done) {
12
- this.reader.releaseLock();
13
- return {
14
- done: true,
15
- value: void 0
16
- };
17
- }
18
- return {
19
- done: false,
20
- value: result.value
21
- };
22
- } catch (error) {
23
- this.reader.releaseLock();
24
- throw error;
25
- }
26
- }
27
- async return() {
28
- this.ensureReader();
29
- if (this.locked) {
30
- const cancelPromise = this.reader.cancel();
31
- this.reader.releaseLock();
32
- await cancelPromise;
33
- }
34
- return {
35
- done: true,
36
- value: void 0
37
- };
38
- }
39
- async throw(error) {
40
- this.ensureReader();
41
- if (this.locked) {
42
- const cancelPromise = this.reader.cancel();
43
- this.reader.releaseLock();
44
- await cancelPromise;
45
- }
46
- throw error;
47
- }
48
- async [Symbol.asyncDispose]() {
49
- await this.return();
50
- }
51
- [Symbol.asyncIterator]() {
52
- return this;
53
- }
54
- static fromReadableStream(stream) {
55
- const reader = stream.getReader();
56
- return new IterableReadableStream({
57
- start(controller) {
58
- return pump();
59
- function pump() {
60
- return reader.read().then(({ done, value }) => {
61
- if (done) {
62
- controller.close();
63
- return;
64
- }
65
- controller.enqueue(value);
66
- return pump();
67
- });
68
- }
69
- },
70
- cancel() {
71
- reader.releaseLock();
72
- }
73
- });
74
- }
75
- };
76
- //#endregion
77
- exports.IterableReadableStream = IterableReadableStream;
78
-
79
- //# sourceMappingURL=stream.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.cjs","names":[],"sources":["../../../../src/client/stream/transport/stream.ts"],"sourcesContent":["export class IterableReadableStream<T>\n extends ReadableStream<T>\n implements AsyncIterable<T>\n{\n public reader!: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock();\n return {\n done: true,\n value: undefined,\n };\n }\n\n return {\n done: false,\n value: result.value,\n };\n } catch (error) {\n this.reader.releaseLock();\n throw error;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n return { done: true, value: undefined };\n }\n\n async throw(error: unknown): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n throw error;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n}\n"],"mappings":";AAAA,IAAa,yBAAb,MAAa,+BACH,eAEV;CACE;CAEA,eAAe;AACb,MAAI,CAAC,KAAK,OACR,MAAK,SAAS,KAAK,WAAW;;CAIlC,MAAM,OAAmC;AACvC,OAAK,cAAc;AACnB,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,OAAO,MAAM;AACvC,OAAI,OAAO,MAAM;AACf,SAAK,OAAO,aAAa;AACzB,WAAO;KACL,MAAM;KACN,OAAO,KAAA;KACR;;AAGH,UAAO;IACL,MAAM;IACN,OAAO,OAAO;IACf;WACM,OAAO;AACd,QAAK,OAAO,aAAa;AACzB,SAAM;;;CAIV,MAAM,SAAqC;AACzC,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,SAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;;CAGzC,MAAM,MAAM,OAA4C;AACtD,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,QAAM;;CAKR,OAAO,OAAO,gBAAgB;AAC5B,QAAM,KAAK,QAAQ;;CAGrB,CAAC,OAAO,iBAAiB;AACvB,SAAO;;CAGT,OAAO,mBAAsB,QAA2B;EACtD,MAAM,SAAS,OAAO,WAAW;AACjC,SAAO,IAAI,uBAA0B;GACnC,MAAM,YAAY;AAChB,WAAO,MAAM;IAEb,SAAS,OAA+B;AACtC,YAAO,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY;AAC7C,UAAI,MAAM;AACR,kBAAW,OAAO;AAClB;;AAEF,iBAAW,QAAQ,MAAM;AACzB,aAAO,MAAM;OACb;;;GAGN,SAAS;AACP,WAAO,aAAa;;GAEvB,CAAC"}