langgraph-ui-components 0.0.11-testing → 0.0.12

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 (249) hide show
  1. package/dist/index.es.js +2 -3
  2. package/dist/index.es10.js +6 -25
  3. package/dist/index.es10.js.map +1 -1
  4. package/dist/index.es100.js +156 -127
  5. package/dist/index.es100.js.map +1 -1
  6. package/dist/index.es101.js +195 -62
  7. package/dist/index.es101.js.map +1 -1
  8. package/dist/index.es102.js +14 -37
  9. package/dist/index.es102.js.map +1 -1
  10. package/dist/index.es103.js +27 -34
  11. package/dist/index.es103.js.map +1 -1
  12. package/dist/index.es104.js +25 -157
  13. package/dist/index.es104.js.map +1 -1
  14. package/dist/index.es105.js +3130 -176
  15. package/dist/index.es105.js.map +1 -1
  16. package/dist/index.es106.js +36 -13
  17. package/dist/index.es106.js.map +1 -1
  18. package/dist/index.es107.js +5 -30
  19. package/dist/index.es107.js.map +1 -1
  20. package/dist/index.es108.js +69 -30
  21. package/dist/index.es108.js.map +1 -1
  22. package/dist/index.es109.js +28 -3148
  23. package/dist/index.es109.js.map +1 -1
  24. package/dist/index.es11.js +6 -1
  25. package/dist/index.es11.js.map +1 -1
  26. package/dist/index.es113.js +5 -16
  27. package/dist/index.es113.js.map +1 -1
  28. package/dist/index.es114.js +2 -7
  29. package/dist/index.es114.js.map +1 -1
  30. package/dist/index.es115.js +13 -2
  31. package/dist/index.es115.js.map +1 -1
  32. package/dist/index.es116.js +499 -9
  33. package/dist/index.es116.js.map +1 -1
  34. package/dist/index.es117.js +5 -501
  35. package/dist/index.es117.js.map +1 -1
  36. package/dist/index.es118.js +2 -7
  37. package/dist/index.es118.js.map +1 -1
  38. package/dist/index.es119.js +148 -2
  39. package/dist/index.es119.js.map +1 -1
  40. package/dist/index.es120.js +878 -118
  41. package/dist/index.es120.js.map +1 -1
  42. package/dist/index.es121.js +251 -877
  43. package/dist/index.es121.js.map +1 -1
  44. package/dist/index.es122.js +3 -281
  45. package/dist/index.es122.js.map +1 -1
  46. package/dist/index.es123.js +445 -3
  47. package/dist/index.es123.js.map +1 -1
  48. package/dist/index.es124.js +38 -436
  49. package/dist/index.es124.js.map +1 -1
  50. package/dist/index.es125.js +22 -46
  51. package/dist/index.es125.js.map +1 -1
  52. package/dist/index.es126.js +78 -21
  53. package/dist/index.es126.js.map +1 -1
  54. package/dist/index.es127.js +126 -76
  55. package/dist/index.es127.js.map +1 -1
  56. package/dist/index.es128.js +45 -125
  57. package/dist/index.es128.js.map +1 -1
  58. package/dist/index.es129.js +9 -48
  59. package/dist/index.es129.js.map +1 -1
  60. package/dist/index.es13.js +6 -6
  61. package/dist/index.es130.js +45 -10
  62. package/dist/index.es130.js.map +1 -1
  63. package/dist/index.es131.js +97 -43
  64. package/dist/index.es131.js.map +1 -1
  65. package/dist/index.es132.js +48 -94
  66. package/dist/index.es132.js.map +1 -1
  67. package/dist/index.es133.js +14 -51
  68. package/dist/index.es133.js.map +1 -1
  69. package/dist/index.es15.js +59 -31
  70. package/dist/index.es15.js.map +1 -1
  71. package/dist/index.es16.js +4 -4
  72. package/dist/index.es16.js.map +1 -1
  73. package/dist/index.es183.js +13 -162
  74. package/dist/index.es183.js.map +1 -1
  75. package/dist/index.es184.js +89 -2
  76. package/dist/index.es184.js.map +1 -1
  77. package/dist/index.es185.js +2 -15
  78. package/dist/index.es185.js.map +1 -1
  79. package/dist/index.es186.js +54 -87
  80. package/dist/index.es186.js.map +1 -1
  81. package/dist/index.es187.js +100 -2
  82. package/dist/index.es187.js.map +1 -1
  83. package/dist/index.es188.js +185 -50
  84. package/dist/index.es188.js.map +1 -1
  85. package/dist/index.es189.js +96 -86
  86. package/dist/index.es189.js.map +1 -1
  87. package/dist/index.es190.js +31 -187
  88. package/dist/index.es190.js.map +1 -1
  89. package/dist/index.es191.js +9 -109
  90. package/dist/index.es191.js.map +1 -1
  91. package/dist/index.es192.js +11 -35
  92. package/dist/index.es192.js.map +1 -1
  93. package/dist/index.es193.js +12 -10
  94. package/dist/index.es193.js.map +1 -1
  95. package/dist/index.es194.js +90 -10
  96. package/dist/index.es194.js.map +1 -1
  97. package/dist/index.es195.js +274 -11
  98. package/dist/index.es195.js.map +1 -1
  99. package/dist/index.es196.js +2 -91
  100. package/dist/index.es196.js.map +1 -1
  101. package/dist/index.es197.js +150 -261
  102. package/dist/index.es197.js.map +1 -1
  103. package/dist/index.es198.js +51 -2
  104. package/dist/index.es198.js.map +1 -1
  105. package/dist/index.es199.js +34 -158
  106. package/dist/index.es199.js.map +1 -1
  107. package/dist/index.es2.js +84 -46
  108. package/dist/index.es2.js.map +1 -1
  109. package/dist/index.es20.js +2 -2
  110. package/dist/index.es200.js +34 -50
  111. package/dist/index.es200.js.map +1 -1
  112. package/dist/index.es201.js +32 -32
  113. package/dist/index.es201.js.map +1 -1
  114. package/dist/index.es202.js +23 -34
  115. package/dist/index.es202.js.map +1 -1
  116. package/dist/index.es203.js +583 -32
  117. package/dist/index.es203.js.map +1 -1
  118. package/dist/index.es204.js +121 -20
  119. package/dist/index.es204.js.map +1 -1
  120. package/dist/index.es205.js +158 -585
  121. package/dist/index.es205.js.map +1 -1
  122. package/dist/index.es206.js +2 -125
  123. package/dist/index.es206.js.map +1 -1
  124. package/dist/index.es22.js +15 -119
  125. package/dist/index.es22.js.map +1 -1
  126. package/dist/index.es23.js +37 -17
  127. package/dist/index.es23.js.map +1 -1
  128. package/dist/index.es24.js +27 -34
  129. package/dist/index.es24.js.map +1 -1
  130. package/dist/index.es25.js +145 -28
  131. package/dist/index.es25.js.map +1 -1
  132. package/dist/index.es252.js +2 -2
  133. package/dist/index.es253.js +1 -1
  134. package/dist/index.es258.js +1 -1
  135. package/dist/index.es26.js +100 -144
  136. package/dist/index.es26.js.map +1 -1
  137. package/dist/index.es260.js +2 -2
  138. package/dist/index.es262.js +2 -2
  139. package/dist/index.es265.js +1 -1
  140. package/dist/index.es267.js +1 -1
  141. package/dist/index.es27.js +66 -101
  142. package/dist/index.es27.js.map +1 -1
  143. package/dist/index.es277.js +147 -2
  144. package/dist/index.es277.js.map +1 -1
  145. package/dist/index.es278.js +167 -126
  146. package/dist/index.es278.js.map +1 -1
  147. package/dist/index.es279.js +2 -188
  148. package/dist/index.es279.js.map +1 -1
  149. package/dist/index.es28.js +121 -68
  150. package/dist/index.es28.js.map +1 -1
  151. package/dist/index.es280.js +1 -1
  152. package/dist/index.es283.js +1 -1
  153. package/dist/index.es288.js +1 -1
  154. package/dist/index.es29.js +1 -1
  155. package/dist/index.es3.js +10 -42
  156. package/dist/index.es3.js.map +1 -1
  157. package/dist/index.es300.js +1 -1
  158. package/dist/index.es302.js +1 -1
  159. package/dist/index.es314.js +1 -1
  160. package/dist/index.es334.js +2 -2
  161. package/dist/index.es4.js +1 -2
  162. package/dist/index.es4.js.map +1 -1
  163. package/dist/index.es43.js +5 -5
  164. package/dist/index.es45.js +1 -1
  165. package/dist/index.es49.js +3 -3
  166. package/dist/index.es5.js.map +1 -1
  167. package/dist/index.es50.js +208 -5
  168. package/dist/index.es50.js.map +1 -1
  169. package/dist/index.es51.js +5 -208
  170. package/dist/index.es51.js.map +1 -1
  171. package/dist/index.es52.js +3 -3
  172. package/dist/index.es61.js +1 -1
  173. package/dist/index.es62.js +2 -2
  174. package/dist/index.es64.js +142 -5
  175. package/dist/index.es64.js.map +1 -1
  176. package/dist/index.es65.js +285 -148
  177. package/dist/index.es65.js.map +1 -1
  178. package/dist/index.es66.js +62 -668
  179. package/dist/index.es66.js.map +1 -1
  180. package/dist/index.es67.js +201 -131
  181. package/dist/index.es67.js.map +1 -1
  182. package/dist/index.es68.js +29 -295
  183. package/dist/index.es68.js.map +1 -1
  184. package/dist/index.es69.js +8 -65
  185. package/dist/index.es69.js.map +1 -1
  186. package/dist/index.es7.js +1 -2
  187. package/dist/index.es7.js.map +1 -1
  188. package/dist/index.es70.js +9 -210
  189. package/dist/index.es70.js.map +1 -1
  190. package/dist/index.es71.js +181 -28
  191. package/dist/index.es71.js.map +1 -1
  192. package/dist/index.es72.js +23 -8
  193. package/dist/index.es72.js.map +1 -1
  194. package/dist/index.es73.js +1397 -9
  195. package/dist/index.es73.js.map +1 -1
  196. package/dist/index.es74.js +9 -187
  197. package/dist/index.es74.js.map +1 -1
  198. package/dist/index.es75.js +8 -24
  199. package/dist/index.es75.js.map +1 -1
  200. package/dist/index.es76.js +5 -1399
  201. package/dist/index.es76.js.map +1 -1
  202. package/dist/index.es77.js +163 -9
  203. package/dist/index.es77.js.map +1 -1
  204. package/dist/index.es78.js +672 -8
  205. package/dist/index.es78.js.map +1 -1
  206. package/dist/index.es79.js +11 -36
  207. package/dist/index.es79.js.map +1 -1
  208. package/dist/index.es80.js +40 -5
  209. package/dist/index.es80.js.map +1 -1
  210. package/dist/index.es81.js +32 -71
  211. package/dist/index.es81.js.map +1 -1
  212. package/dist/index.es82.js +225 -30
  213. package/dist/index.es82.js.map +1 -1
  214. package/dist/index.es83.js +29 -11
  215. package/dist/index.es83.js.map +1 -1
  216. package/dist/index.es84.js +72 -37
  217. package/dist/index.es84.js.map +1 -1
  218. package/dist/index.es85.js +74 -32
  219. package/dist/index.es85.js.map +1 -1
  220. package/dist/index.es86.js +46 -226
  221. package/dist/index.es86.js.map +1 -1
  222. package/dist/index.es87.js +6 -6
  223. package/dist/index.es87.js.map +1 -1
  224. package/dist/index.es88.js +39 -71
  225. package/dist/index.es88.js.map +1 -1
  226. package/dist/index.es89.js +54 -73
  227. package/dist/index.es89.js.map +1 -1
  228. package/dist/index.es90.js +13 -52
  229. package/dist/index.es90.js.map +1 -1
  230. package/dist/index.es91.js +135 -28
  231. package/dist/index.es91.js.map +1 -1
  232. package/dist/index.es92.js +20 -42
  233. package/dist/index.es92.js.map +1 -1
  234. package/dist/index.es93.js +175 -50
  235. package/dist/index.es93.js.map +1 -1
  236. package/dist/index.es94.js +239 -11
  237. package/dist/index.es94.js.map +1 -1
  238. package/dist/index.es95.js +348 -130
  239. package/dist/index.es95.js.map +1 -1
  240. package/dist/index.es96.js +134 -18
  241. package/dist/index.es96.js.map +1 -1
  242. package/dist/index.es97.js +61 -173
  243. package/dist/index.es97.js.map +1 -1
  244. package/dist/index.es98.js +30 -234
  245. package/dist/index.es98.js.map +1 -1
  246. package/dist/index.es99.js +26 -344
  247. package/dist/index.es99.js.map +1 -1
  248. package/dist/styles.css +1 -1
  249. package/package.json +1 -1
@@ -1,73 +1,206 @@
1
1
  import { __export } from "./index.es55.js";
2
- import { getAbortSignalError } from "./index.es96.js";
3
- import { pRetry } from "./index.es100.js";
4
- import PQueueMod from "./index.es118.js";
5
- var async_caller_exports = {};
6
- __export(async_caller_exports, { AsyncCaller: () => AsyncCaller });
7
- const STATUS_NO_RETRY = [
8
- 400,
9
- 401,
10
- 402,
11
- 403,
12
- 404,
13
- 405,
14
- 406,
15
- 407,
16
- 409
17
- ];
18
- const defaultFailedAttemptHandler = (error) => {
19
- if (error.message.startsWith("Cancel") || error.message.startsWith("AbortError") || error.name === "AbortError") throw error;
20
- if (error?.code === "ECONNABORTED") throw error;
21
- const status = error?.response?.status ?? error?.status;
22
- if (status && STATUS_NO_RETRY.includes(+status)) throw error;
23
- if (error?.error?.code === "insufficient_quota") {
24
- const err = new Error(error?.message);
25
- err.name = "InsufficientQuotaError";
26
- throw err;
2
+ import { isRunnableInterface } from "./index.es99.js";
3
+ import { drawMermaid, drawMermaidImage } from "./index.es131.js";
4
+ import { toJsonSchema } from "./index.es132.js";
5
+ import { validate, v4 } from "uuid";
6
+ var graph_exports = {};
7
+ __export(graph_exports, { Graph: () => Graph });
8
+ function nodeDataStr(id, data) {
9
+ if (id !== void 0 && !validate(id)) return id;
10
+ else if (isRunnableInterface(data)) try {
11
+ let dataStr = data.getName();
12
+ dataStr = dataStr.startsWith("Runnable") ? dataStr.slice(8) : dataStr;
13
+ return dataStr;
14
+ } catch {
15
+ return data.getName();
27
16
  }
28
- };
29
- var AsyncCaller = class {
30
- maxConcurrency;
31
- maxRetries;
32
- onFailedAttempt;
33
- queue;
17
+ else return data.name ?? "UnknownSchema";
18
+ }
19
+ function nodeDataJson(node) {
20
+ if (isRunnableInterface(node.data)) return {
21
+ type: "runnable",
22
+ data: {
23
+ id: node.data.lc_id,
24
+ name: node.data.getName()
25
+ }
26
+ };
27
+ else return {
28
+ type: "schema",
29
+ data: {
30
+ ...toJsonSchema(node.data.schema),
31
+ title: node.data.name
32
+ }
33
+ };
34
+ }
35
+ var Graph = class Graph2 {
36
+ nodes = {};
37
+ edges = [];
34
38
  constructor(params) {
35
- this.maxConcurrency = params.maxConcurrency ?? Infinity;
36
- this.maxRetries = params.maxRetries ?? 6;
37
- this.onFailedAttempt = params.onFailedAttempt ?? defaultFailedAttemptHandler;
38
- const PQueue = "default" in PQueueMod ? PQueueMod.default : PQueueMod;
39
- this.queue = new PQueue({ concurrency: this.maxConcurrency });
40
- }
41
- async call(callable, ...args) {
42
- return this.queue.add(() => pRetry(() => callable(...args).catch((error) => {
43
- if (error instanceof Error) throw error;
44
- else throw new Error(error);
45
- }), {
46
- onFailedAttempt: ({ error }) => this.onFailedAttempt?.(error),
47
- retries: this.maxRetries,
48
- randomize: true
49
- }), { throwOnTimeout: true });
39
+ this.nodes = params?.nodes ?? this.nodes;
40
+ this.edges = params?.edges ?? this.edges;
50
41
  }
51
- callWithOptions(options, callable, ...args) {
52
- if (options.signal) {
53
- let listener;
54
- return Promise.race([this.call(callable, ...args), new Promise((_, reject) => {
55
- listener = () => {
56
- reject(getAbortSignalError(options.signal));
42
+ toJSON() {
43
+ const stableNodeIds = {};
44
+ Object.values(this.nodes).forEach((node, i) => {
45
+ stableNodeIds[node.id] = validate(node.id) ? i : node.id;
46
+ });
47
+ return {
48
+ nodes: Object.values(this.nodes).map((node) => ({
49
+ id: stableNodeIds[node.id],
50
+ ...nodeDataJson(node)
51
+ })),
52
+ edges: this.edges.map((edge) => {
53
+ const item = {
54
+ source: stableNodeIds[edge.source],
55
+ target: stableNodeIds[edge.target]
57
56
  };
58
- options.signal?.addEventListener("abort", listener);
59
- })]).finally(() => {
60
- if (options.signal && listener) options.signal.removeEventListener("abort", listener);
61
- });
62
- }
63
- return this.call(callable, ...args);
57
+ if (typeof edge.data !== "undefined") item.data = edge.data;
58
+ if (typeof edge.conditional !== "undefined") item.conditional = edge.conditional;
59
+ return item;
60
+ })
61
+ };
62
+ }
63
+ addNode(data, id, metadata) {
64
+ if (id !== void 0 && this.nodes[id] !== void 0) throw new Error(`Node with id ${id} already exists`);
65
+ const nodeId = id ?? v4();
66
+ const node = {
67
+ id: nodeId,
68
+ data,
69
+ name: nodeDataStr(id, data),
70
+ metadata
71
+ };
72
+ this.nodes[nodeId] = node;
73
+ return node;
74
+ }
75
+ removeNode(node) {
76
+ delete this.nodes[node.id];
77
+ this.edges = this.edges.filter((edge) => edge.source !== node.id && edge.target !== node.id);
78
+ }
79
+ addEdge(source, target, data, conditional) {
80
+ if (this.nodes[source.id] === void 0) throw new Error(`Source node ${source.id} not in graph`);
81
+ if (this.nodes[target.id] === void 0) throw new Error(`Target node ${target.id} not in graph`);
82
+ const edge = {
83
+ source: source.id,
84
+ target: target.id,
85
+ data,
86
+ conditional
87
+ };
88
+ this.edges.push(edge);
89
+ return edge;
90
+ }
91
+ firstNode() {
92
+ return _firstNode(this);
93
+ }
94
+ lastNode() {
95
+ return _lastNode(this);
96
+ }
97
+ /**
98
+ * Add all nodes and edges from another graph.
99
+ * Note this doesn't check for duplicates, nor does it connect the graphs.
100
+ */
101
+ extend(graph, prefix = "") {
102
+ let finalPrefix = prefix;
103
+ const nodeIds = Object.values(graph.nodes).map((node) => node.id);
104
+ if (nodeIds.every(validate)) finalPrefix = "";
105
+ const prefixed = (id) => {
106
+ return finalPrefix ? `${finalPrefix}:${id}` : id;
107
+ };
108
+ Object.entries(graph.nodes).forEach(([key, value]) => {
109
+ this.nodes[prefixed(key)] = {
110
+ ...value,
111
+ id: prefixed(key)
112
+ };
113
+ });
114
+ const newEdges = graph.edges.map((edge) => {
115
+ return {
116
+ ...edge,
117
+ source: prefixed(edge.source),
118
+ target: prefixed(edge.target)
119
+ };
120
+ });
121
+ this.edges = [...this.edges, ...newEdges];
122
+ const first = graph.firstNode();
123
+ const last = graph.lastNode();
124
+ return [first ? {
125
+ id: prefixed(first.id),
126
+ data: first.data
127
+ } : void 0, last ? {
128
+ id: prefixed(last.id),
129
+ data: last.data
130
+ } : void 0];
131
+ }
132
+ trimFirstNode() {
133
+ const firstNode = this.firstNode();
134
+ if (firstNode && _firstNode(this, [firstNode.id])) this.removeNode(firstNode);
135
+ }
136
+ trimLastNode() {
137
+ const lastNode = this.lastNode();
138
+ if (lastNode && _lastNode(this, [lastNode.id])) this.removeNode(lastNode);
139
+ }
140
+ /**
141
+ * Return a new graph with all nodes re-identified,
142
+ * using their unique, readable names where possible.
143
+ */
144
+ reid() {
145
+ const nodeLabels = Object.fromEntries(Object.values(this.nodes).map((node) => [node.id, node.name]));
146
+ const nodeLabelCounts = /* @__PURE__ */ new Map();
147
+ Object.values(nodeLabels).forEach((label) => {
148
+ nodeLabelCounts.set(label, (nodeLabelCounts.get(label) || 0) + 1);
149
+ });
150
+ const getNodeId = (nodeId) => {
151
+ const label = nodeLabels[nodeId];
152
+ if (validate(nodeId) && nodeLabelCounts.get(label) === 1) return label;
153
+ else return nodeId;
154
+ };
155
+ return new Graph2({
156
+ nodes: Object.fromEntries(Object.entries(this.nodes).map(([id, node]) => [getNodeId(id), {
157
+ ...node,
158
+ id: getNodeId(id)
159
+ }])),
160
+ edges: this.edges.map((edge) => ({
161
+ ...edge,
162
+ source: getNodeId(edge.source),
163
+ target: getNodeId(edge.target)
164
+ }))
165
+ });
166
+ }
167
+ drawMermaid(params) {
168
+ const { withStyles, curveStyle, nodeColors = {
169
+ default: "fill:#f2f0ff,line-height:1.2",
170
+ first: "fill-opacity:0",
171
+ last: "fill:#bfb6fc"
172
+ }, wrapLabelNWords } = params ?? {};
173
+ const graph = this.reid();
174
+ const firstNode = graph.firstNode();
175
+ const lastNode = graph.lastNode();
176
+ return drawMermaid(graph.nodes, graph.edges, {
177
+ firstNode: firstNode?.id,
178
+ lastNode: lastNode?.id,
179
+ withStyles,
180
+ curveStyle,
181
+ nodeColors,
182
+ wrapLabelNWords
183
+ });
64
184
  }
65
- fetch(...args) {
66
- return this.call(() => fetch(...args).then((res) => res.ok ? res : Promise.reject(res)));
185
+ async drawMermaidPng(params) {
186
+ const mermaidSyntax = this.drawMermaid(params);
187
+ return drawMermaidImage(mermaidSyntax, { backgroundColor: params?.backgroundColor });
67
188
  }
68
189
  };
190
+ function _firstNode(graph, exclude = []) {
191
+ const targets = new Set(graph.edges.filter((edge) => !exclude.includes(edge.source)).map((edge) => edge.target));
192
+ const found = [];
193
+ for (const node of Object.values(graph.nodes)) if (!exclude.includes(node.id) && !targets.has(node.id)) found.push(node);
194
+ return found.length === 1 ? found[0] : void 0;
195
+ }
196
+ function _lastNode(graph, exclude = []) {
197
+ const sources = new Set(graph.edges.filter((edge) => !exclude.includes(edge.target)).map((edge) => edge.source));
198
+ const found = [];
199
+ for (const node of Object.values(graph.nodes)) if (!exclude.includes(node.id) && !sources.has(node.id)) found.push(node);
200
+ return found.length === 1 ? found[0] : void 0;
201
+ }
69
202
  export {
70
- AsyncCaller,
71
- async_caller_exports
203
+ Graph,
204
+ graph_exports
72
205
  };
73
206
  //# sourceMappingURL=index.es101.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es101.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/async_caller.js"],"sourcesContent":["import { __export } from \"../_virtual/rolldown_runtime.js\";\nimport { getAbortSignalError } from \"./signal.js\";\nimport { pRetry } from \"./p-retry/index.js\";\nimport PQueueMod from \"p-queue\";\n\n//#region src/utils/async_caller.ts\nvar async_caller_exports = {};\n__export(async_caller_exports, { AsyncCaller: () => AsyncCaller });\nconst STATUS_NO_RETRY = [\n\t400,\n\t401,\n\t402,\n\t403,\n\t404,\n\t405,\n\t406,\n\t407,\n\t409\n];\nconst defaultFailedAttemptHandler = (error) => {\n\tif (error.message.startsWith(\"Cancel\") || error.message.startsWith(\"AbortError\") || error.name === \"AbortError\") throw error;\n\tif (error?.code === \"ECONNABORTED\") throw error;\n\tconst status = error?.response?.status ?? error?.status;\n\tif (status && STATUS_NO_RETRY.includes(+status)) throw error;\n\tif (error?.error?.code === \"insufficient_quota\") {\n\t\tconst err = new Error(error?.message);\n\t\terr.name = \"InsufficientQuotaError\";\n\t\tthrow err;\n\t}\n};\n/**\n* A class that can be used to make async calls with concurrency and retry logic.\n*\n* This is useful for making calls to any kind of \"expensive\" external resource,\n* be it because it's rate-limited, subject to network issues, etc.\n*\n* Concurrent calls are limited by the `maxConcurrency` parameter, which defaults\n* to `Infinity`. This means that by default, all calls will be made in parallel.\n*\n* Retries are limited by the `maxRetries` parameter, which defaults to 6. This\n* means that by default, each call will be retried up to 6 times, with an\n* exponential backoff between each attempt.\n*/\nvar AsyncCaller = class {\n\tmaxConcurrency;\n\tmaxRetries;\n\tonFailedAttempt;\n\tqueue;\n\tconstructor(params) {\n\t\tthis.maxConcurrency = params.maxConcurrency ?? Infinity;\n\t\tthis.maxRetries = params.maxRetries ?? 6;\n\t\tthis.onFailedAttempt = params.onFailedAttempt ?? defaultFailedAttemptHandler;\n\t\tconst PQueue = \"default\" in PQueueMod ? PQueueMod.default : PQueueMod;\n\t\tthis.queue = new PQueue({ concurrency: this.maxConcurrency });\n\t}\n\tasync call(callable, ...args) {\n\t\treturn this.queue.add(() => pRetry(() => callable(...args).catch((error) => {\n\t\t\tif (error instanceof Error) throw error;\n\t\t\telse throw new Error(error);\n\t\t}), {\n\t\t\tonFailedAttempt: ({ error }) => this.onFailedAttempt?.(error),\n\t\t\tretries: this.maxRetries,\n\t\t\trandomize: true\n\t\t}), { throwOnTimeout: true });\n\t}\n\tcallWithOptions(options, callable, ...args) {\n\t\tif (options.signal) {\n\t\t\tlet listener;\n\t\t\treturn Promise.race([this.call(callable, ...args), new Promise((_, reject) => {\n\t\t\t\tlistener = () => {\n\t\t\t\t\treject(getAbortSignalError(options.signal));\n\t\t\t\t};\n\t\t\t\toptions.signal?.addEventListener(\"abort\", listener);\n\t\t\t})]).finally(() => {\n\t\t\t\tif (options.signal && listener) options.signal.removeEventListener(\"abort\", listener);\n\t\t\t});\n\t\t}\n\t\treturn this.call(callable, ...args);\n\t}\n\tfetch(...args) {\n\t\treturn this.call(() => fetch(...args).then((res) => res.ok ? res : Promise.reject(res)));\n\t}\n};\n\n//#endregion\nexport { AsyncCaller, async_caller_exports };\n//# sourceMappingURL=async_caller.js.map"],"names":[],"mappings":";;;;AAMG,IAAC,uBAAuB,CAAA;AAC3B,SAAS,sBAAsB,EAAE,aAAa,MAAM,YAAW,CAAE;AACjE,MAAM,kBAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AACA,MAAM,8BAA8B,CAAC,UAAU;AAC9C,MAAI,MAAM,QAAQ,WAAW,QAAQ,KAAK,MAAM,QAAQ,WAAW,YAAY,KAAK,MAAM,SAAS,aAAc,OAAM;AACvH,MAAI,OAAO,SAAS,eAAgB,OAAM;AAC1C,QAAM,SAAS,OAAO,UAAU,UAAU,OAAO;AACjD,MAAI,UAAU,gBAAgB,SAAS,CAAC,MAAM,EAAG,OAAM;AACvD,MAAI,OAAO,OAAO,SAAS,sBAAsB;AAChD,UAAM,MAAM,IAAI,MAAM,OAAO,OAAO;AACpC,QAAI,OAAO;AACX,UAAM;AAAA,EACP;AACD;AAcG,IAAC,cAAc,MAAM;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,QAAQ;AACnB,SAAK,iBAAiB,OAAO,kBAAkB;AAC/C,SAAK,aAAa,OAAO,cAAc;AACvC,SAAK,kBAAkB,OAAO,mBAAmB;AACjD,UAAM,SAAS,aAAa,YAAY,UAAU,UAAU;AAC5D,SAAK,QAAQ,IAAI,OAAO,EAAE,aAAa,KAAK,gBAAgB;AAAA,EAC7D;AAAA,EACA,MAAM,KAAK,aAAa,MAAM;AAC7B,WAAO,KAAK,MAAM,IAAI,MAAM,OAAO,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,UAAU;AAC3E,UAAI,iBAAiB,MAAO,OAAM;AAAA,UAC7B,OAAM,IAAI,MAAM,KAAK;AAAA,IAC3B,CAAC,GAAG;AAAA,MACH,iBAAiB,CAAC,EAAE,MAAK,MAAO,KAAK,kBAAkB,KAAK;AAAA,MAC5D,SAAS,KAAK;AAAA,MACd,WAAW;AAAA,IACd,CAAG,GAAG,EAAE,gBAAgB,MAAM;AAAA,EAC7B;AAAA,EACA,gBAAgB,SAAS,aAAa,MAAM;AAC3C,QAAI,QAAQ,QAAQ;AACnB,UAAI;AACJ,aAAO,QAAQ,KAAK,CAAC,KAAK,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,WAAW;AAC7E,mBAAW,MAAM;AAChB,iBAAO,oBAAoB,QAAQ,MAAM,CAAC;AAAA,QAC3C;AACA,gBAAQ,QAAQ,iBAAiB,SAAS,QAAQ;AAAA,MACnD,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM;AAClB,YAAI,QAAQ,UAAU,SAAU,SAAQ,OAAO,oBAAoB,SAAS,QAAQ;AAAA,MACrF,CAAC;AAAA,IACF;AACA,WAAO,KAAK,KAAK,UAAU,GAAG,IAAI;AAAA,EACnC;AAAA,EACA,SAAS,MAAM;AACd,WAAO,KAAK,KAAK,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,MAAM,QAAQ,OAAO,GAAG,CAAC,CAAC;AAAA,EACxF;AACD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es101.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/runnables/graph.js"],"sourcesContent":["import { __export } from \"../_virtual/rolldown_runtime.js\";\nimport { isRunnableInterface } from \"./utils.js\";\nimport { drawMermaid, drawMermaidImage } from \"./graph_mermaid.js\";\nimport { toJsonSchema } from \"../utils/json_schema.js\";\nimport { v4, validate } from \"uuid\";\n\n//#region src/runnables/graph.ts\nvar graph_exports = {};\n__export(graph_exports, { Graph: () => Graph });\nfunction nodeDataStr(id, data) {\n\tif (id !== void 0 && !validate(id)) return id;\n\telse if (isRunnableInterface(data)) try {\n\t\tlet dataStr = data.getName();\n\t\tdataStr = dataStr.startsWith(\"Runnable\") ? dataStr.slice(8) : dataStr;\n\t\treturn dataStr;\n\t} catch {\n\t\treturn data.getName();\n\t}\n\telse return data.name ?? \"UnknownSchema\";\n}\nfunction nodeDataJson(node) {\n\tif (isRunnableInterface(node.data)) return {\n\t\ttype: \"runnable\",\n\t\tdata: {\n\t\t\tid: node.data.lc_id,\n\t\t\tname: node.data.getName()\n\t\t}\n\t};\n\telse return {\n\t\ttype: \"schema\",\n\t\tdata: {\n\t\t\t...toJsonSchema(node.data.schema),\n\t\t\ttitle: node.data.name\n\t\t}\n\t};\n}\nvar Graph = class Graph {\n\tnodes = {};\n\tedges = [];\n\tconstructor(params) {\n\t\tthis.nodes = params?.nodes ?? this.nodes;\n\t\tthis.edges = params?.edges ?? this.edges;\n\t}\n\ttoJSON() {\n\t\tconst stableNodeIds = {};\n\t\tObject.values(this.nodes).forEach((node, i) => {\n\t\t\tstableNodeIds[node.id] = validate(node.id) ? i : node.id;\n\t\t});\n\t\treturn {\n\t\t\tnodes: Object.values(this.nodes).map((node) => ({\n\t\t\t\tid: stableNodeIds[node.id],\n\t\t\t\t...nodeDataJson(node)\n\t\t\t})),\n\t\t\tedges: this.edges.map((edge) => {\n\t\t\t\tconst item = {\n\t\t\t\t\tsource: stableNodeIds[edge.source],\n\t\t\t\t\ttarget: stableNodeIds[edge.target]\n\t\t\t\t};\n\t\t\t\tif (typeof edge.data !== \"undefined\") item.data = edge.data;\n\t\t\t\tif (typeof edge.conditional !== \"undefined\") item.conditional = edge.conditional;\n\t\t\t\treturn item;\n\t\t\t})\n\t\t};\n\t}\n\taddNode(data, id, metadata) {\n\t\tif (id !== void 0 && this.nodes[id] !== void 0) throw new Error(`Node with id ${id} already exists`);\n\t\tconst nodeId = id ?? v4();\n\t\tconst node = {\n\t\t\tid: nodeId,\n\t\t\tdata,\n\t\t\tname: nodeDataStr(id, data),\n\t\t\tmetadata\n\t\t};\n\t\tthis.nodes[nodeId] = node;\n\t\treturn node;\n\t}\n\tremoveNode(node) {\n\t\tdelete this.nodes[node.id];\n\t\tthis.edges = this.edges.filter((edge) => edge.source !== node.id && edge.target !== node.id);\n\t}\n\taddEdge(source, target, data, conditional) {\n\t\tif (this.nodes[source.id] === void 0) throw new Error(`Source node ${source.id} not in graph`);\n\t\tif (this.nodes[target.id] === void 0) throw new Error(`Target node ${target.id} not in graph`);\n\t\tconst edge = {\n\t\t\tsource: source.id,\n\t\t\ttarget: target.id,\n\t\t\tdata,\n\t\t\tconditional\n\t\t};\n\t\tthis.edges.push(edge);\n\t\treturn edge;\n\t}\n\tfirstNode() {\n\t\treturn _firstNode(this);\n\t}\n\tlastNode() {\n\t\treturn _lastNode(this);\n\t}\n\t/**\n\t* Add all nodes and edges from another graph.\n\t* Note this doesn't check for duplicates, nor does it connect the graphs.\n\t*/\n\textend(graph, prefix = \"\") {\n\t\tlet finalPrefix = prefix;\n\t\tconst nodeIds = Object.values(graph.nodes).map((node) => node.id);\n\t\tif (nodeIds.every(validate)) finalPrefix = \"\";\n\t\tconst prefixed = (id) => {\n\t\t\treturn finalPrefix ? `${finalPrefix}:${id}` : id;\n\t\t};\n\t\tObject.entries(graph.nodes).forEach(([key, value]) => {\n\t\t\tthis.nodes[prefixed(key)] = {\n\t\t\t\t...value,\n\t\t\t\tid: prefixed(key)\n\t\t\t};\n\t\t});\n\t\tconst newEdges = graph.edges.map((edge) => {\n\t\t\treturn {\n\t\t\t\t...edge,\n\t\t\t\tsource: prefixed(edge.source),\n\t\t\t\ttarget: prefixed(edge.target)\n\t\t\t};\n\t\t});\n\t\tthis.edges = [...this.edges, ...newEdges];\n\t\tconst first = graph.firstNode();\n\t\tconst last = graph.lastNode();\n\t\treturn [first ? {\n\t\t\tid: prefixed(first.id),\n\t\t\tdata: first.data\n\t\t} : void 0, last ? {\n\t\t\tid: prefixed(last.id),\n\t\t\tdata: last.data\n\t\t} : void 0];\n\t}\n\ttrimFirstNode() {\n\t\tconst firstNode = this.firstNode();\n\t\tif (firstNode && _firstNode(this, [firstNode.id])) this.removeNode(firstNode);\n\t}\n\ttrimLastNode() {\n\t\tconst lastNode = this.lastNode();\n\t\tif (lastNode && _lastNode(this, [lastNode.id])) this.removeNode(lastNode);\n\t}\n\t/**\n\t* Return a new graph with all nodes re-identified,\n\t* using their unique, readable names where possible.\n\t*/\n\treid() {\n\t\tconst nodeLabels = Object.fromEntries(Object.values(this.nodes).map((node) => [node.id, node.name]));\n\t\tconst nodeLabelCounts = /* @__PURE__ */ new Map();\n\t\tObject.values(nodeLabels).forEach((label) => {\n\t\t\tnodeLabelCounts.set(label, (nodeLabelCounts.get(label) || 0) + 1);\n\t\t});\n\t\tconst getNodeId = (nodeId) => {\n\t\t\tconst label = nodeLabels[nodeId];\n\t\t\tif (validate(nodeId) && nodeLabelCounts.get(label) === 1) return label;\n\t\t\telse return nodeId;\n\t\t};\n\t\treturn new Graph({\n\t\t\tnodes: Object.fromEntries(Object.entries(this.nodes).map(([id, node]) => [getNodeId(id), {\n\t\t\t\t...node,\n\t\t\t\tid: getNodeId(id)\n\t\t\t}])),\n\t\t\tedges: this.edges.map((edge) => ({\n\t\t\t\t...edge,\n\t\t\t\tsource: getNodeId(edge.source),\n\t\t\t\ttarget: getNodeId(edge.target)\n\t\t\t}))\n\t\t});\n\t}\n\tdrawMermaid(params) {\n\t\tconst { withStyles, curveStyle, nodeColors = {\n\t\t\tdefault: \"fill:#f2f0ff,line-height:1.2\",\n\t\t\tfirst: \"fill-opacity:0\",\n\t\t\tlast: \"fill:#bfb6fc\"\n\t\t}, wrapLabelNWords } = params ?? {};\n\t\tconst graph = this.reid();\n\t\tconst firstNode = graph.firstNode();\n\t\tconst lastNode = graph.lastNode();\n\t\treturn drawMermaid(graph.nodes, graph.edges, {\n\t\t\tfirstNode: firstNode?.id,\n\t\t\tlastNode: lastNode?.id,\n\t\t\twithStyles,\n\t\t\tcurveStyle,\n\t\t\tnodeColors,\n\t\t\twrapLabelNWords\n\t\t});\n\t}\n\tasync drawMermaidPng(params) {\n\t\tconst mermaidSyntax = this.drawMermaid(params);\n\t\treturn drawMermaidImage(mermaidSyntax, { backgroundColor: params?.backgroundColor });\n\t}\n};\n/**\n* Find the single node that is not a target of any edge.\n* Exclude nodes/sources with ids in the exclude list.\n* If there is no such node, or there are multiple, return undefined.\n* When drawing the graph, this node would be the origin.\n*/\nfunction _firstNode(graph, exclude = []) {\n\tconst targets = new Set(graph.edges.filter((edge) => !exclude.includes(edge.source)).map((edge) => edge.target));\n\tconst found = [];\n\tfor (const node of Object.values(graph.nodes)) if (!exclude.includes(node.id) && !targets.has(node.id)) found.push(node);\n\treturn found.length === 1 ? found[0] : void 0;\n}\n/**\n* Find the single node that is not a source of any edge.\n* Exclude nodes/targets with ids in the exclude list.\n* If there is no such node, or there are multiple, return undefined.\n* When drawing the graph, this node would be the destination.\n*/\nfunction _lastNode(graph, exclude = []) {\n\tconst sources = new Set(graph.edges.filter((edge) => !exclude.includes(edge.target)).map((edge) => edge.source));\n\tconst found = [];\n\tfor (const node of Object.values(graph.nodes)) if (!exclude.includes(node.id) && !sources.has(node.id)) found.push(node);\n\treturn found.length === 1 ? found[0] : void 0;\n}\n\n//#endregion\nexport { Graph, graph_exports };\n//# sourceMappingURL=graph.js.map"],"names":["Graph"],"mappings":";;;;;AAOG,IAAC,gBAAgB,CAAA;AACpB,SAAS,eAAe,EAAE,OAAO,MAAM,MAAK,CAAE;AAC9C,SAAS,YAAY,IAAI,MAAM;AAC9B,MAAI,OAAO,UAAU,CAAC,SAAS,EAAE,EAAG,QAAO;AAAA,WAClC,oBAAoB,IAAI,EAAG,KAAI;AACvC,QAAI,UAAU,KAAK,QAAO;AAC1B,cAAU,QAAQ,WAAW,UAAU,IAAI,QAAQ,MAAM,CAAC,IAAI;AAC9D,WAAO;AAAA,EACR,QAAQ;AACP,WAAO,KAAK,QAAO;AAAA,EACpB;AAAA,MACK,QAAO,KAAK,QAAQ;AAC1B;AACA,SAAS,aAAa,MAAM;AAC3B,MAAI,oBAAoB,KAAK,IAAI,EAAG,QAAO;AAAA,IAC1C,MAAM;AAAA,IACN,MAAM;AAAA,MACL,IAAI,KAAK,KAAK;AAAA,MACd,MAAM,KAAK,KAAK,QAAO;AAAA,IAC1B;AAAA,EACA;AAAA,MACM,QAAO;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,MACL,GAAG,aAAa,KAAK,KAAK,MAAM;AAAA,MAChC,OAAO,KAAK,KAAK;AAAA,IACpB;AAAA,EACA;AACA;AACG,IAAC,QAAQ,MAAMA,OAAM;AAAA,EACvB,QAAQ,CAAA;AAAA,EACR,QAAQ,CAAA;AAAA,EACR,YAAY,QAAQ;AACnB,SAAK,QAAQ,QAAQ,SAAS,KAAK;AACnC,SAAK,QAAQ,QAAQ,SAAS,KAAK;AAAA,EACpC;AAAA,EACA,SAAS;AACR,UAAM,gBAAgB,CAAA;AACtB,WAAO,OAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,MAAM,MAAM;AAC9C,oBAAc,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,IACvD,CAAC;AACD,WAAO;AAAA,MACN,OAAO,OAAO,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,UAAU;AAAA,QAC/C,IAAI,cAAc,KAAK,EAAE;AAAA,QACzB,GAAG,aAAa,IAAI;AAAA,MACxB,EAAK;AAAA,MACF,OAAO,KAAK,MAAM,IAAI,CAAC,SAAS;AAC/B,cAAM,OAAO;AAAA,UACZ,QAAQ,cAAc,KAAK,MAAM;AAAA,UACjC,QAAQ,cAAc,KAAK,MAAM;AAAA,QACtC;AACI,YAAI,OAAO,KAAK,SAAS,YAAa,MAAK,OAAO,KAAK;AACvD,YAAI,OAAO,KAAK,gBAAgB,YAAa,MAAK,cAAc,KAAK;AACrE,eAAO;AAAA,MACR,CAAC;AAAA,IACJ;AAAA,EACC;AAAA,EACA,QAAQ,MAAM,IAAI,UAAU;AAC3B,QAAI,OAAO,UAAU,KAAK,MAAM,EAAE,MAAM,OAAQ,OAAM,IAAI,MAAM,gBAAgB,EAAE,iBAAiB;AACnG,UAAM,SAAS,MAAM,GAAE;AACvB,UAAM,OAAO;AAAA,MACZ,IAAI;AAAA,MACJ;AAAA,MACA,MAAM,YAAY,IAAI,IAAI;AAAA,MAC1B;AAAA,IACH;AACE,SAAK,MAAM,MAAM,IAAI;AACrB,WAAO;AAAA,EACR;AAAA,EACA,WAAW,MAAM;AAChB,WAAO,KAAK,MAAM,KAAK,EAAE;AACzB,SAAK,QAAQ,KAAK,MAAM,OAAO,CAAC,SAAS,KAAK,WAAW,KAAK,MAAM,KAAK,WAAW,KAAK,EAAE;AAAA,EAC5F;AAAA,EACA,QAAQ,QAAQ,QAAQ,MAAM,aAAa;AAC1C,QAAI,KAAK,MAAM,OAAO,EAAE,MAAM,OAAQ,OAAM,IAAI,MAAM,eAAe,OAAO,EAAE,eAAe;AAC7F,QAAI,KAAK,MAAM,OAAO,EAAE,MAAM,OAAQ,OAAM,IAAI,MAAM,eAAe,OAAO,EAAE,eAAe;AAC7F,UAAM,OAAO;AAAA,MACZ,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,MACf;AAAA,MACA;AAAA,IACH;AACE,SAAK,MAAM,KAAK,IAAI;AACpB,WAAO;AAAA,EACR;AAAA,EACA,YAAY;AACX,WAAO,WAAW,IAAI;AAAA,EACvB;AAAA,EACA,WAAW;AACV,WAAO,UAAU,IAAI;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OAAO,SAAS,IAAI;AAC1B,QAAI,cAAc;AAClB,UAAM,UAAU,OAAO,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,EAAE;AAChE,QAAI,QAAQ,MAAM,QAAQ,EAAG,eAAc;AAC3C,UAAM,WAAW,CAAC,OAAO;AACxB,aAAO,cAAc,GAAG,WAAW,IAAI,EAAE,KAAK;AAAA,IAC/C;AACA,WAAO,QAAQ,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,WAAK,MAAM,SAAS,GAAG,CAAC,IAAI;AAAA,QAC3B,GAAG;AAAA,QACH,IAAI,SAAS,GAAG;AAAA,MACpB;AAAA,IACE,CAAC;AACD,UAAM,WAAW,MAAM,MAAM,IAAI,CAAC,SAAS;AAC1C,aAAO;AAAA,QACN,GAAG;AAAA,QACH,QAAQ,SAAS,KAAK,MAAM;AAAA,QAC5B,QAAQ,SAAS,KAAK,MAAM;AAAA,MAChC;AAAA,IACE,CAAC;AACD,SAAK,QAAQ,CAAC,GAAG,KAAK,OAAO,GAAG,QAAQ;AACxC,UAAM,QAAQ,MAAM,UAAS;AAC7B,UAAM,OAAO,MAAM,SAAQ;AAC3B,WAAO,CAAC,QAAQ;AAAA,MACf,IAAI,SAAS,MAAM,EAAE;AAAA,MACrB,MAAM,MAAM;AAAA,IACf,IAAM,QAAQ,OAAO;AAAA,MAClB,IAAI,SAAS,KAAK,EAAE;AAAA,MACpB,MAAM,KAAK;AAAA,IACd,IAAM,MAAM;AAAA,EACX;AAAA,EACA,gBAAgB;AACf,UAAM,YAAY,KAAK,UAAS;AAChC,QAAI,aAAa,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,EAAG,MAAK,WAAW,SAAS;AAAA,EAC7E;AAAA,EACA,eAAe;AACd,UAAM,WAAW,KAAK,SAAQ;AAC9B,QAAI,YAAY,UAAU,MAAM,CAAC,SAAS,EAAE,CAAC,EAAG,MAAK,WAAW,QAAQ;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACN,UAAM,aAAa,OAAO,YAAY,OAAO,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AACnG,UAAM,kBAAkC,oBAAI,IAAG;AAC/C,WAAO,OAAO,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC5C,sBAAgB,IAAI,QAAQ,gBAAgB,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,IACjE,CAAC;AACD,UAAM,YAAY,CAAC,WAAW;AAC7B,YAAM,QAAQ,WAAW,MAAM;AAC/B,UAAI,SAAS,MAAM,KAAK,gBAAgB,IAAI,KAAK,MAAM,EAAG,QAAO;AAAA,UAC5D,QAAO;AAAA,IACb;AACA,WAAO,IAAIA,OAAM;AAAA,MAChB,OAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG;AAAA,QACxF,GAAG;AAAA,QACH,IAAI,UAAU,EAAE;AAAA,MACpB,CAAI,CAAC,CAAC;AAAA,MACH,OAAO,KAAK,MAAM,IAAI,CAAC,UAAU;AAAA,QAChC,GAAG;AAAA,QACH,QAAQ,UAAU,KAAK,MAAM;AAAA,QAC7B,QAAQ,UAAU,KAAK,MAAM;AAAA,MACjC,EAAK;AAAA,IACL,CAAG;AAAA,EACF;AAAA,EACA,YAAY,QAAQ;AACnB,UAAM,EAAE,YAAY,YAAY,aAAa;AAAA,MAC5C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACT,GAAK,gBAAe,IAAK,UAAU,CAAA;AACjC,UAAM,QAAQ,KAAK,KAAI;AACvB,UAAM,YAAY,MAAM,UAAS;AACjC,UAAM,WAAW,MAAM,SAAQ;AAC/B,WAAO,YAAY,MAAM,OAAO,MAAM,OAAO;AAAA,MAC5C,WAAW,WAAW;AAAA,MACtB,UAAU,UAAU;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACH,CAAG;AAAA,EACF;AAAA,EACA,MAAM,eAAe,QAAQ;AAC5B,UAAM,gBAAgB,KAAK,YAAY,MAAM;AAC7C,WAAO,iBAAiB,eAAe,EAAE,iBAAiB,QAAQ,gBAAe,CAAE;AAAA,EACpF;AACD;AAOA,SAAS,WAAW,OAAO,UAAU,IAAI;AACxC,QAAM,UAAU,IAAI,IAAI,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,SAAS,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;AAC/G,QAAM,QAAQ,CAAA;AACd,aAAW,QAAQ,OAAO,OAAO,MAAM,KAAK,EAAG,KAAI,CAAC,QAAQ,SAAS,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAG,OAAM,KAAK,IAAI;AACvH,SAAO,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI;AACxC;AAOA,SAAS,UAAU,OAAO,UAAU,IAAI;AACvC,QAAM,UAAU,IAAI,IAAI,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,SAAS,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;AAC/G,QAAM,QAAQ,CAAA;AACd,aAAW,QAAQ,OAAO,OAAO,MAAM,KAAK,EAAG,KAAI,CAAC,QAAQ,SAAS,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAG,OAAM,KAAK,IAAI;AACvH,SAAO,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI;AACxC;","x_google_ignoreList":[0]}
@@ -1,40 +1,17 @@
1
- import { BaseTracer } from "./index.es124.js";
2
- var RootListenersTracer = class extends BaseTracer {
3
- name = "RootListenersTracer";
4
- /** The Run's ID. Type UUID */
5
- rootId;
6
- config;
7
- argOnStart;
8
- argOnEnd;
9
- argOnError;
10
- constructor({ config, onStart, onEnd, onError }) {
11
- super({ _awaitHandler: true });
12
- this.config = config;
13
- this.argOnStart = onStart;
14
- this.argOnEnd = onEnd;
15
- this.argOnError = onError;
16
- }
17
- /**
18
- * This is a legacy method only called once for an entire run tree
19
- * therefore not useful here
20
- * @param {Run} _ Not used
21
- */
22
- persistRun(_) {
23
- return Promise.resolve();
24
- }
25
- async onRunCreate(run) {
26
- if (this.rootId) return;
27
- this.rootId = run.id;
28
- if (this.argOnStart) await this.argOnStart(run, this.config);
29
- }
30
- async onRunUpdate(run) {
31
- if (run.id !== this.rootId) return;
32
- if (!run.error) {
33
- if (this.argOnEnd) await this.argOnEnd(run, this.config);
34
- } else if (this.argOnError) await this.argOnError(run, this.config);
35
- }
36
- };
1
+ import { IterableReadableStream } from "./index.es93.js";
2
+ function convertToHttpEventStream(stream) {
3
+ const encoder = new TextEncoder();
4
+ const finalStream = new ReadableStream({ async start(controller) {
5
+ for await (const chunk of stream) controller.enqueue(encoder.encode(`event: data
6
+ data: ${JSON.stringify(chunk)}
7
+
8
+ `));
9
+ controller.enqueue(encoder.encode("event: end\n\n"));
10
+ controller.close();
11
+ } });
12
+ return IterableReadableStream.fromReadableStream(finalStream);
13
+ }
37
14
  export {
38
- RootListenersTracer
15
+ convertToHttpEventStream
39
16
  };
40
17
  //# sourceMappingURL=index.es102.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es102.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/tracers/root_listener.js"],"sourcesContent":["import { BaseTracer } from \"./base.js\";\n\n//#region src/tracers/root_listener.ts\nvar RootListenersTracer = class extends BaseTracer {\n\tname = \"RootListenersTracer\";\n\t/** The Run's ID. Type UUID */\n\trootId;\n\tconfig;\n\targOnStart;\n\targOnEnd;\n\targOnError;\n\tconstructor({ config, onStart, onEnd, onError }) {\n\t\tsuper({ _awaitHandler: true });\n\t\tthis.config = config;\n\t\tthis.argOnStart = onStart;\n\t\tthis.argOnEnd = onEnd;\n\t\tthis.argOnError = onError;\n\t}\n\t/**\n\t* This is a legacy method only called once for an entire run tree\n\t* therefore not useful here\n\t* @param {Run} _ Not used\n\t*/\n\tpersistRun(_) {\n\t\treturn Promise.resolve();\n\t}\n\tasync onRunCreate(run) {\n\t\tif (this.rootId) return;\n\t\tthis.rootId = run.id;\n\t\tif (this.argOnStart) await this.argOnStart(run, this.config);\n\t}\n\tasync onRunUpdate(run) {\n\t\tif (run.id !== this.rootId) return;\n\t\tif (!run.error) {\n\t\t\tif (this.argOnEnd) await this.argOnEnd(run, this.config);\n\t\t} else if (this.argOnError) await this.argOnError(run, this.config);\n\t}\n};\n\n//#endregion\nexport { RootListenersTracer };\n//# sourceMappingURL=root_listener.js.map"],"names":[],"mappings":";AAGG,IAAC,sBAAsB,cAAc,WAAW;AAAA,EAClD,OAAO;AAAA;AAAA,EAEP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,EAAE,QAAQ,SAAS,OAAO,QAAO,GAAI;AAChD,UAAM,EAAE,eAAe,MAAM;AAC7B,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,aAAa;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,GAAG;AACb,WAAO,QAAQ,QAAO;AAAA,EACvB;AAAA,EACA,MAAM,YAAY,KAAK;AACtB,QAAI,KAAK,OAAQ;AACjB,SAAK,SAAS,IAAI;AAClB,QAAI,KAAK,WAAY,OAAM,KAAK,WAAW,KAAK,KAAK,MAAM;AAAA,EAC5D;AAAA,EACA,MAAM,YAAY,KAAK;AACtB,QAAI,IAAI,OAAO,KAAK,OAAQ;AAC5B,QAAI,CAAC,IAAI,OAAO;AACf,UAAI,KAAK,SAAU,OAAM,KAAK,SAAS,KAAK,KAAK,MAAM;AAAA,IACxD,WAAW,KAAK,WAAY,OAAM,KAAK,WAAW,KAAK,KAAK,MAAM;AAAA,EACnE;AACD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es102.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/runnables/wrappers.js"],"sourcesContent":["import { IterableReadableStream } from \"../utils/stream.js\";\n\n//#region src/runnables/wrappers.ts\nfunction convertToHttpEventStream(stream) {\n\tconst encoder = new TextEncoder();\n\tconst finalStream = new ReadableStream({ async start(controller) {\n\t\tfor await (const chunk of stream) controller.enqueue(encoder.encode(`event: data\\ndata: ${JSON.stringify(chunk)}\\n\\n`));\n\t\tcontroller.enqueue(encoder.encode(\"event: end\\n\\n\"));\n\t\tcontroller.close();\n\t} });\n\treturn IterableReadableStream.fromReadableStream(finalStream);\n}\n\n//#endregion\nexport { convertToHttpEventStream };\n//# sourceMappingURL=wrappers.js.map"],"names":[],"mappings":";AAGA,SAAS,yBAAyB,QAAQ;AACzC,QAAM,UAAU,IAAI,YAAW;AAC/B,QAAM,cAAc,IAAI,eAAe,EAAE,MAAM,MAAM,YAAY;AAChE,qBAAiB,SAAS,OAAQ,YAAW,QAAQ,QAAQ,OAAO;AAAA,QAAsB,KAAK,UAAU,KAAK,CAAC;AAAA;AAAA,CAAM,CAAC;AACtH,eAAW,QAAQ,QAAQ,OAAO,gBAAgB,CAAC;AACnD,eAAW,MAAK;AAAA,EACjB,GAAG;AACH,SAAO,uBAAuB,mBAAmB,WAAW;AAC7D;","x_google_ignoreList":[0]}
@@ -1,40 +1,33 @@
1
- function isRunnableInterface(thing) {
2
- return thing ? thing.lc_runnable : false;
1
+ import { AsyncLocalStorageProviderSingleton } from "./index.es89.js";
2
+ import "./index.es90.js";
3
+ import { pickRunnableConfigKeys } from "./index.es91.js";
4
+ function isIterableIterator(thing) {
5
+ return typeof thing === "object" && thing !== null && typeof thing[Symbol.iterator] === "function" && typeof thing.next === "function";
3
6
  }
4
- var _RootEventFilter = class {
5
- includeNames;
6
- includeTypes;
7
- includeTags;
8
- excludeNames;
9
- excludeTypes;
10
- excludeTags;
11
- constructor(fields) {
12
- this.includeNames = fields.includeNames;
13
- this.includeTypes = fields.includeTypes;
14
- this.includeTags = fields.includeTags;
15
- this.excludeNames = fields.excludeNames;
16
- this.excludeTypes = fields.excludeTypes;
17
- this.excludeTags = fields.excludeTags;
7
+ const isIterator = (x) => x != null && typeof x === "object" && "next" in x && typeof x.next === "function";
8
+ function isAsyncIterable(thing) {
9
+ return typeof thing === "object" && thing !== null && typeof thing[Symbol.asyncIterator] === "function";
10
+ }
11
+ function* consumeIteratorInContext(context, iter) {
12
+ while (true) {
13
+ const { value, done } = AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(context), iter.next.bind(iter), true);
14
+ if (done) break;
15
+ else yield value;
18
16
  }
19
- includeEvent(event, rootType) {
20
- let include = this.includeNames === void 0 && this.includeTypes === void 0 && this.includeTags === void 0;
21
- const eventTags = event.tags ?? [];
22
- if (this.includeNames !== void 0) include = include || this.includeNames.includes(event.name);
23
- if (this.includeTypes !== void 0) include = include || this.includeTypes.includes(rootType);
24
- if (this.includeTags !== void 0) include = include || eventTags.some((tag) => this.includeTags?.includes(tag));
25
- if (this.excludeNames !== void 0) include = include && !this.excludeNames.includes(event.name);
26
- if (this.excludeTypes !== void 0) include = include && !this.excludeTypes.includes(rootType);
27
- if (this.excludeTags !== void 0) include = include && eventTags.every((tag) => !this.excludeTags?.includes(tag));
28
- return include;
17
+ }
18
+ async function* consumeAsyncIterableInContext(context, iter) {
19
+ const iterator = iter[Symbol.asyncIterator]();
20
+ while (true) {
21
+ const { value, done } = await AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(context), iterator.next.bind(iter), true);
22
+ if (done) break;
23
+ else yield value;
29
24
  }
30
- };
31
- const toBase64Url = (str) => {
32
- const encoded = btoa(str);
33
- return encoded.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
34
- };
25
+ }
35
26
  export {
36
- _RootEventFilter,
37
- isRunnableInterface,
38
- toBase64Url
27
+ consumeAsyncIterableInContext,
28
+ consumeIteratorInContext,
29
+ isAsyncIterable,
30
+ isIterableIterator,
31
+ isIterator
39
32
  };
40
33
  //# sourceMappingURL=index.es103.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es103.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/runnables/utils.js"],"sourcesContent":["//#region src/runnables/utils.ts\nfunction isRunnableInterface(thing) {\n\treturn thing ? thing.lc_runnable : false;\n}\n/**\n* Utility to filter the root event in the streamEvents implementation.\n* This is simply binding the arguments to the namespace to make save on\n* a bit of typing in the streamEvents implementation.\n*\n* TODO: Refactor and remove.\n*/\nvar _RootEventFilter = class {\n\tincludeNames;\n\tincludeTypes;\n\tincludeTags;\n\texcludeNames;\n\texcludeTypes;\n\texcludeTags;\n\tconstructor(fields) {\n\t\tthis.includeNames = fields.includeNames;\n\t\tthis.includeTypes = fields.includeTypes;\n\t\tthis.includeTags = fields.includeTags;\n\t\tthis.excludeNames = fields.excludeNames;\n\t\tthis.excludeTypes = fields.excludeTypes;\n\t\tthis.excludeTags = fields.excludeTags;\n\t}\n\tincludeEvent(event, rootType) {\n\t\tlet include = this.includeNames === void 0 && this.includeTypes === void 0 && this.includeTags === void 0;\n\t\tconst eventTags = event.tags ?? [];\n\t\tif (this.includeNames !== void 0) include = include || this.includeNames.includes(event.name);\n\t\tif (this.includeTypes !== void 0) include = include || this.includeTypes.includes(rootType);\n\t\tif (this.includeTags !== void 0) include = include || eventTags.some((tag) => this.includeTags?.includes(tag));\n\t\tif (this.excludeNames !== void 0) include = include && !this.excludeNames.includes(event.name);\n\t\tif (this.excludeTypes !== void 0) include = include && !this.excludeTypes.includes(rootType);\n\t\tif (this.excludeTags !== void 0) include = include && eventTags.every((tag) => !this.excludeTags?.includes(tag));\n\t\treturn include;\n\t}\n};\nconst toBase64Url = (str) => {\n\tconst encoded = btoa(str);\n\treturn encoded.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n};\n\n//#endregion\nexport { _RootEventFilter, isRunnableInterface, toBase64Url };\n//# sourceMappingURL=utils.js.map"],"names":[],"mappings":"AACA,SAAS,oBAAoB,OAAO;AACnC,SAAO,QAAQ,MAAM,cAAc;AACpC;AAQG,IAAC,mBAAmB,MAAM;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,QAAQ;AACnB,SAAK,eAAe,OAAO;AAC3B,SAAK,eAAe,OAAO;AAC3B,SAAK,cAAc,OAAO;AAC1B,SAAK,eAAe,OAAO;AAC3B,SAAK,eAAe,OAAO;AAC3B,SAAK,cAAc,OAAO;AAAA,EAC3B;AAAA,EACA,aAAa,OAAO,UAAU;AAC7B,QAAI,UAAU,KAAK,iBAAiB,UAAU,KAAK,iBAAiB,UAAU,KAAK,gBAAgB;AACnG,UAAM,YAAY,MAAM,QAAQ,CAAA;AAChC,QAAI,KAAK,iBAAiB,OAAQ,WAAU,WAAW,KAAK,aAAa,SAAS,MAAM,IAAI;AAC5F,QAAI,KAAK,iBAAiB,OAAQ,WAAU,WAAW,KAAK,aAAa,SAAS,QAAQ;AAC1F,QAAI,KAAK,gBAAgB,OAAQ,WAAU,WAAW,UAAU,KAAK,CAAC,QAAQ,KAAK,aAAa,SAAS,GAAG,CAAC;AAC7G,QAAI,KAAK,iBAAiB,OAAQ,WAAU,WAAW,CAAC,KAAK,aAAa,SAAS,MAAM,IAAI;AAC7F,QAAI,KAAK,iBAAiB,OAAQ,WAAU,WAAW,CAAC,KAAK,aAAa,SAAS,QAAQ;AAC3F,QAAI,KAAK,gBAAgB,OAAQ,WAAU,WAAW,UAAU,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAa,SAAS,GAAG,CAAC;AAC/G,WAAO;AAAA,EACR;AACD;AACK,MAAC,cAAc,CAAC,QAAQ;AAC5B,QAAM,UAAU,KAAK,GAAG;AACxB,SAAO,QAAQ,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AACzE;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es103.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/runnables/iter.js"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"../singletons/async_local_storage/index.js\";\nimport \"../singletons/index.js\";\nimport { pickRunnableConfigKeys } from \"./config.js\";\n\n//#region src/runnables/iter.ts\nfunction isIterableIterator(thing) {\n\treturn typeof thing === \"object\" && thing !== null && typeof thing[Symbol.iterator] === \"function\" && typeof thing.next === \"function\";\n}\nconst isIterator = (x) => x != null && typeof x === \"object\" && \"next\" in x && typeof x.next === \"function\";\nfunction isAsyncIterable(thing) {\n\treturn typeof thing === \"object\" && thing !== null && typeof thing[Symbol.asyncIterator] === \"function\";\n}\nfunction* consumeIteratorInContext(context, iter) {\n\twhile (true) {\n\t\tconst { value, done } = AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(context), iter.next.bind(iter), true);\n\t\tif (done) break;\n\t\telse yield value;\n\t}\n}\nasync function* consumeAsyncIterableInContext(context, iter) {\n\tconst iterator = iter[Symbol.asyncIterator]();\n\twhile (true) {\n\t\tconst { value, done } = await AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(context), iterator.next.bind(iter), true);\n\t\tif (done) break;\n\t\telse yield value;\n\t}\n}\n\n//#endregion\nexport { consumeAsyncIterableInContext, consumeIteratorInContext, isAsyncIterable, isIterableIterator, isIterator };\n//# sourceMappingURL=iter.js.map"],"names":[],"mappings":";;;AAKA,SAAS,mBAAmB,OAAO;AAClC,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,MAAM,OAAO,QAAQ,MAAM,cAAc,OAAO,MAAM,SAAS;AAC7H;AACK,MAAC,aAAa,CAAC,MAAM,KAAK,QAAQ,OAAO,MAAM,YAAY,UAAU,KAAK,OAAO,EAAE,SAAS;AACjG,SAAS,gBAAgB,OAAO;AAC/B,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,MAAM,OAAO,aAAa,MAAM;AAC9F;AACA,UAAU,yBAAyB,SAAS,MAAM;AACjD,SAAO,MAAM;AACZ,UAAM,EAAE,OAAO,KAAI,IAAK,mCAAmC,cAAc,uBAAuB,OAAO,GAAG,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI;AACpI,QAAI,KAAM;AAAA,QACL,OAAM;AAAA,EACZ;AACD;AACA,gBAAgB,8BAA8B,SAAS,MAAM;AAC5D,QAAM,WAAW,KAAK,OAAO,aAAa,EAAC;AAC3C,SAAO,MAAM;AACZ,UAAM,EAAE,OAAO,KAAI,IAAK,MAAM,mCAAmC,cAAc,uBAAuB,OAAO,GAAG,SAAS,KAAK,KAAK,IAAI,GAAG,IAAI;AAC9I,QAAI,KAAM;AAAA,QACL,OAAM;AAAA,EACZ;AACD;","x_google_ignoreList":[0]}