beeai-framework 0.1.16 → 0.1.18

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 (663) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs +296 -0
  2. package/dist/adapters/a2a/agents/agent.cjs.map +1 -0
  3. package/dist/adapters/a2a/agents/agent.d.cts +55 -0
  4. package/dist/adapters/a2a/agents/agent.d.ts +55 -0
  5. package/dist/adapters/a2a/agents/agent.js +294 -0
  6. package/dist/adapters/a2a/agents/agent.js.map +1 -0
  7. package/dist/adapters/a2a/agents/events.cjs +4 -0
  8. package/dist/adapters/a2a/agents/events.cjs.map +1 -0
  9. package/dist/adapters/a2a/agents/events.d.cts +23 -0
  10. package/dist/adapters/a2a/agents/events.d.ts +23 -0
  11. package/dist/adapters/a2a/agents/events.js +3 -0
  12. package/dist/adapters/a2a/agents/events.js.map +1 -0
  13. package/dist/adapters/a2a/agents/types.cjs +4 -0
  14. package/dist/adapters/a2a/agents/types.cjs.map +1 -0
  15. package/dist/adapters/a2a/agents/types.d.cts +45 -0
  16. package/dist/adapters/a2a/agents/types.d.ts +45 -0
  17. package/dist/adapters/a2a/agents/types.js +3 -0
  18. package/dist/adapters/a2a/agents/types.js.map +1 -0
  19. package/dist/adapters/a2a/agents/utils.cjs +41 -0
  20. package/dist/adapters/a2a/agents/utils.cjs.map +1 -0
  21. package/dist/adapters/a2a/agents/utils.d.cts +15 -0
  22. package/dist/adapters/a2a/agents/utils.d.ts +15 -0
  23. package/dist/adapters/a2a/agents/utils.js +39 -0
  24. package/dist/adapters/a2a/agents/utils.js.map +1 -0
  25. package/dist/adapters/a2a/serve/agent_executor.cjs +233 -0
  26. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -0
  27. package/dist/adapters/a2a/serve/agent_executor.d.cts +55 -0
  28. package/dist/adapters/a2a/serve/agent_executor.d.ts +55 -0
  29. package/dist/adapters/a2a/serve/agent_executor.js +229 -0
  30. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -0
  31. package/dist/adapters/a2a/serve/server.cjs +112 -0
  32. package/dist/adapters/a2a/serve/server.cjs.map +1 -0
  33. package/dist/adapters/a2a/serve/server.d.cts +56 -0
  34. package/dist/adapters/a2a/serve/server.d.ts +56 -0
  35. package/dist/adapters/a2a/serve/server.js +105 -0
  36. package/dist/adapters/a2a/serve/server.js.map +1 -0
  37. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  38. package/dist/adapters/acp/agents/agent.d.cts +3 -14
  39. package/dist/adapters/acp/agents/agent.d.ts +3 -14
  40. package/dist/adapters/acp/agents/agent.js.map +1 -1
  41. package/dist/adapters/acp/agents/events.d.cts +2 -13
  42. package/dist/adapters/acp/agents/events.d.ts +2 -13
  43. package/dist/adapters/acp/agents/types.d.cts +1 -12
  44. package/dist/adapters/acp/agents/types.d.ts +1 -12
  45. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  46. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +3 -14
  47. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +3 -14
  48. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  49. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  50. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -12
  51. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -12
  52. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  53. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  54. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +3 -14
  55. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +3 -14
  56. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  57. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  58. package/dist/adapters/anthropic/backend/chat.d.cts +3 -14
  59. package/dist/adapters/anthropic/backend/chat.d.ts +3 -14
  60. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  61. package/dist/adapters/anthropic/backend/client.cjs +1 -4
  62. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  63. package/dist/adapters/anthropic/backend/client.d.cts +1 -12
  64. package/dist/adapters/anthropic/backend/client.d.ts +1 -12
  65. package/dist/adapters/anthropic/backend/client.js +3 -6
  66. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  67. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/anthropic/backend/embedding.d.cts +3 -14
  69. package/dist/adapters/anthropic/backend/embedding.d.ts +3 -14
  70. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  71. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -14
  73. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -14
  74. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  75. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  76. package/dist/adapters/azure-openai/backend/client.d.cts +1 -12
  77. package/dist/adapters/azure-openai/backend/client.d.ts +1 -12
  78. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  79. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  80. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -14
  81. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -14
  82. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  83. package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -1
  84. package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
  85. package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
  86. package/dist/adapters/beeai_platform/agents/agent.js.map +1 -1
  87. package/dist/adapters/beeai_platform/agents/events.d.cts +2 -13
  88. package/dist/adapters/beeai_platform/agents/events.d.ts +2 -13
  89. package/dist/adapters/beeai_platform/agents/types.d.cts +1 -12
  90. package/dist/adapters/beeai_platform/agents/types.d.ts +1 -12
  91. package/dist/adapters/dummy/backend/chat.cjs +9 -9
  92. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  94. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  95. package/dist/adapters/dummy/backend/chat.js +9 -9
  96. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  97. package/dist/adapters/dummy/backend/embedding.cjs +9 -9
  98. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/dummy/backend/embedding.d.cts +3 -14
  100. package/dist/adapters/dummy/backend/embedding.d.ts +3 -14
  101. package/dist/adapters/dummy/backend/embedding.js +9 -9
  102. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  103. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  104. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -14
  105. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -14
  106. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  107. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  108. package/dist/adapters/google-vertex/backend/client.d.cts +1 -12
  109. package/dist/adapters/google-vertex/backend/client.d.ts +1 -12
  110. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  111. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  112. package/dist/adapters/google-vertex/backend/embedding.d.cts +3 -14
  113. package/dist/adapters/google-vertex/backend/embedding.d.ts +3 -14
  114. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  115. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  116. package/dist/adapters/groq/backend/chat.d.cts +3 -14
  117. package/dist/adapters/groq/backend/chat.d.ts +3 -14
  118. package/dist/adapters/groq/backend/chat.js.map +1 -1
  119. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  120. package/dist/adapters/groq/backend/client.d.cts +1 -12
  121. package/dist/adapters/groq/backend/client.d.ts +1 -12
  122. package/dist/adapters/groq/backend/client.js.map +1 -1
  123. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  124. package/dist/adapters/groq/backend/embedding.d.cts +3 -14
  125. package/dist/adapters/groq/backend/embedding.d.ts +3 -14
  126. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  127. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  128. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  129. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  130. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  131. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  132. package/dist/adapters/langchain/backend/embedding.d.cts +3 -14
  133. package/dist/adapters/langchain/backend/embedding.d.ts +3 -14
  134. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  135. package/dist/adapters/langchain/tools.cjs.map +1 -1
  136. package/dist/adapters/langchain/tools.d.cts +1 -1
  137. package/dist/adapters/langchain/tools.d.ts +1 -1
  138. package/dist/adapters/langchain/tools.js.map +1 -1
  139. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  140. package/dist/adapters/mcp/serve/http_server.d.cts +1 -12
  141. package/dist/adapters/mcp/serve/http_server.d.ts +1 -12
  142. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  143. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  144. package/dist/adapters/mcp/serve/in_memory_store.d.cts +1 -12
  145. package/dist/adapters/mcp/serve/in_memory_store.d.ts +1 -12
  146. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  147. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  148. package/dist/adapters/mcp/serve/server.d.cts +3 -14
  149. package/dist/adapters/mcp/serve/server.d.ts +3 -14
  150. package/dist/adapters/mcp/serve/server.js.map +1 -1
  151. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/ollama/backend/chat.d.cts +3 -14
  153. package/dist/adapters/ollama/backend/chat.d.ts +3 -14
  154. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  155. package/dist/adapters/ollama/backend/client.cjs +12 -3
  156. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  157. package/dist/adapters/ollama/backend/client.d.cts +4 -13
  158. package/dist/adapters/ollama/backend/client.d.ts +4 -13
  159. package/dist/adapters/ollama/backend/client.js +13 -4
  160. package/dist/adapters/ollama/backend/client.js.map +1 -1
  161. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  162. package/dist/adapters/ollama/backend/embedding.d.cts +3 -14
  163. package/dist/adapters/ollama/backend/embedding.d.ts +3 -14
  164. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  165. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  166. package/dist/adapters/openai/backend/chat.d.cts +3 -14
  167. package/dist/adapters/openai/backend/chat.d.ts +3 -14
  168. package/dist/adapters/openai/backend/chat.js.map +1 -1
  169. package/dist/adapters/openai/backend/client.cjs +1 -4
  170. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  171. package/dist/adapters/openai/backend/client.d.cts +1 -12
  172. package/dist/adapters/openai/backend/client.d.ts +1 -12
  173. package/dist/adapters/openai/backend/client.js +3 -6
  174. package/dist/adapters/openai/backend/client.js.map +1 -1
  175. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  176. package/dist/adapters/openai/backend/embedding.d.cts +3 -14
  177. package/dist/adapters/openai/backend/embedding.d.ts +3 -14
  178. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  179. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  180. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  181. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  182. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  183. package/dist/adapters/vercel/backend/chat.js +2 -2
  184. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  185. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  186. package/dist/adapters/vercel/backend/embedding.d.cts +3 -14
  187. package/dist/adapters/vercel/backend/embedding.d.ts +3 -14
  188. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  189. package/dist/adapters/vercel/backend/utils.cjs +11 -2
  190. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  191. package/dist/adapters/vercel/backend/utils.d.cts +3 -13
  192. package/dist/adapters/vercel/backend/utils.d.ts +3 -13
  193. package/dist/adapters/vercel/backend/utils.js +11 -3
  194. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  195. package/dist/adapters/watsonx/backend/chat.cjs +13 -13
  196. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  197. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  198. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  199. package/dist/adapters/watsonx/backend/chat.js +13 -13
  200. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  201. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  202. package/dist/adapters/watsonx/backend/client.d.cts +1 -12
  203. package/dist/adapters/watsonx/backend/client.d.ts +1 -12
  204. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  205. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  206. package/dist/adapters/watsonx/backend/embedding.d.cts +3 -14
  207. package/dist/adapters/watsonx/backend/embedding.d.ts +3 -14
  208. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  209. package/dist/adapters/xai/backend/chat.cjs +24 -0
  210. package/dist/adapters/xai/backend/chat.cjs.map +1 -0
  211. package/dist/adapters/xai/backend/chat.d.cts +39 -0
  212. package/dist/adapters/xai/backend/chat.d.ts +39 -0
  213. package/dist/adapters/xai/backend/chat.js +22 -0
  214. package/dist/adapters/xai/backend/chat.js.map +1 -0
  215. package/dist/adapters/xai/backend/client.cjs +26 -0
  216. package/dist/adapters/xai/backend/client.cjs.map +1 -0
  217. package/dist/adapters/xai/backend/client.d.cts +17 -0
  218. package/dist/adapters/xai/backend/client.d.ts +17 -0
  219. package/dist/adapters/xai/backend/client.js +24 -0
  220. package/dist/adapters/xai/backend/client.js.map +1 -0
  221. package/dist/{agent-Ca5UE2P1.d.cts → agent-Bhm6xSfI.d.cts} +3 -3
  222. package/dist/{agent-CgsoqVL5.d.ts → agent-CmCmnEDX.d.ts} +3 -3
  223. package/dist/agents/base.cjs.map +1 -1
  224. package/dist/agents/base.d.cts +2 -2
  225. package/dist/agents/base.d.ts +2 -2
  226. package/dist/agents/base.js.map +1 -1
  227. package/dist/agents/experimental/replan/agent.cjs +8 -8
  228. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  229. package/dist/agents/experimental/replan/agent.d.cts +4 -15
  230. package/dist/agents/experimental/replan/agent.d.ts +4 -15
  231. package/dist/agents/experimental/replan/agent.js +8 -8
  232. package/dist/agents/experimental/replan/agent.js.map +1 -1
  233. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  234. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  235. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  236. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  237. package/dist/agents/experimental/streamlit/agent.cjs +9 -9
  238. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  239. package/dist/agents/experimental/streamlit/agent.d.cts +4 -15
  240. package/dist/agents/experimental/streamlit/agent.d.ts +4 -15
  241. package/dist/agents/experimental/streamlit/agent.js +9 -9
  242. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  243. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  244. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -12
  245. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -12
  246. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  247. package/dist/agents/react/agent.cjs +8 -8
  248. package/dist/agents/react/agent.cjs.map +1 -1
  249. package/dist/agents/react/agent.d.cts +4 -4
  250. package/dist/agents/react/agent.d.ts +4 -4
  251. package/dist/agents/react/agent.js +8 -8
  252. package/dist/agents/react/agent.js.map +1 -1
  253. package/dist/agents/react/prompts.cjs.map +1 -1
  254. package/dist/agents/react/prompts.d.cts +1 -12
  255. package/dist/agents/react/prompts.d.ts +1 -12
  256. package/dist/agents/react/prompts.js.map +1 -1
  257. package/dist/agents/react/runners/base.cjs +2 -2
  258. package/dist/agents/react/runners/base.cjs.map +1 -1
  259. package/dist/agents/react/runners/base.d.cts +4 -4
  260. package/dist/agents/react/runners/base.d.ts +4 -4
  261. package/dist/agents/react/runners/base.js +2 -2
  262. package/dist/agents/react/runners/base.js.map +1 -1
  263. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  264. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -12
  265. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -12
  266. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  267. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  268. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  269. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  270. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  271. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  272. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  273. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  274. package/dist/agents/react/runners/default/runner.js.map +1 -1
  275. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  276. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  277. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  278. package/dist/agents/react/runners/granite/prompts.d.cts +1 -12
  279. package/dist/agents/react/runners/granite/prompts.d.ts +1 -12
  280. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  281. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  282. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  283. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  284. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  285. package/dist/agents/react/types.d.cts +3 -14
  286. package/dist/agents/react/types.d.ts +3 -14
  287. package/dist/agents/toolCalling/agent.cjs +8 -8
  288. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  289. package/dist/agents/toolCalling/agent.d.cts +4 -15
  290. package/dist/agents/toolCalling/agent.d.ts +4 -15
  291. package/dist/agents/toolCalling/agent.js +8 -8
  292. package/dist/agents/toolCalling/agent.js.map +1 -1
  293. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  294. package/dist/agents/toolCalling/prompts.d.cts +1 -12
  295. package/dist/agents/toolCalling/prompts.d.ts +1 -12
  296. package/dist/agents/toolCalling/prompts.js.map +1 -1
  297. package/dist/agents/toolCalling/types.d.cts +2 -13
  298. package/dist/agents/toolCalling/types.d.ts +2 -13
  299. package/dist/agents/types.d.cts +2 -2
  300. package/dist/agents/types.d.ts +2 -2
  301. package/dist/backend/backend.cjs.map +1 -1
  302. package/dist/backend/backend.d.cts +3 -14
  303. package/dist/backend/backend.d.ts +3 -14
  304. package/dist/backend/backend.js.map +1 -1
  305. package/dist/backend/chat.cjs.map +1 -1
  306. package/dist/backend/chat.d.cts +2 -2
  307. package/dist/backend/chat.d.ts +2 -2
  308. package/dist/backend/chat.js.map +1 -1
  309. package/dist/backend/client.cjs.map +1 -1
  310. package/dist/backend/client.d.cts +1 -12
  311. package/dist/backend/client.d.ts +1 -12
  312. package/dist/backend/client.js.map +1 -1
  313. package/dist/backend/constants.cjs +8 -0
  314. package/dist/backend/constants.cjs.map +1 -1
  315. package/dist/backend/constants.d.cts +6 -12
  316. package/dist/backend/constants.d.ts +6 -12
  317. package/dist/backend/constants.js +8 -0
  318. package/dist/backend/constants.js.map +1 -1
  319. package/dist/backend/core.d.cts +2 -2
  320. package/dist/backend/core.d.ts +2 -2
  321. package/dist/backend/embedding.cjs.map +1 -1
  322. package/dist/backend/embedding.d.cts +2 -2
  323. package/dist/backend/embedding.d.ts +2 -2
  324. package/dist/backend/embedding.js.map +1 -1
  325. package/dist/backend/errors.cjs.map +1 -1
  326. package/dist/backend/errors.d.cts +1 -12
  327. package/dist/backend/errors.d.ts +1 -12
  328. package/dist/backend/errors.js.map +1 -1
  329. package/dist/backend/message.cjs.map +1 -1
  330. package/dist/backend/message.d.cts +2 -13
  331. package/dist/backend/message.d.ts +2 -13
  332. package/dist/backend/message.js.map +1 -1
  333. package/dist/backend/utils.cjs.map +1 -1
  334. package/dist/backend/utils.d.cts +2 -2
  335. package/dist/backend/utils.d.ts +2 -2
  336. package/dist/backend/utils.js.map +1 -1
  337. package/dist/{base-szR2Izbt.d.cts → base-BP7v-NSL.d.cts} +3 -14
  338. package/dist/{base-BOCDDBvG.d.ts → base-BsY2baWy.d.ts} +3 -14
  339. package/dist/cache/base.cjs.map +1 -1
  340. package/dist/cache/base.d.cts +1 -12
  341. package/dist/cache/base.d.ts +1 -12
  342. package/dist/cache/base.js.map +1 -1
  343. package/dist/cache/decoratorCache.cjs +2 -2
  344. package/dist/cache/decoratorCache.cjs.map +1 -1
  345. package/dist/cache/decoratorCache.d.cts +1 -12
  346. package/dist/cache/decoratorCache.d.ts +1 -12
  347. package/dist/cache/decoratorCache.js +2 -2
  348. package/dist/cache/decoratorCache.js.map +1 -1
  349. package/dist/cache/fileCache.cjs.map +1 -1
  350. package/dist/cache/fileCache.d.cts +1 -12
  351. package/dist/cache/fileCache.d.ts +1 -12
  352. package/dist/cache/fileCache.js.map +1 -1
  353. package/dist/cache/nullCache.cjs.map +1 -1
  354. package/dist/cache/nullCache.d.cts +1 -12
  355. package/dist/cache/nullCache.d.ts +1 -12
  356. package/dist/cache/nullCache.js.map +1 -1
  357. package/dist/cache/slidingCache.cjs.map +1 -1
  358. package/dist/cache/slidingCache.d.cts +1 -12
  359. package/dist/cache/slidingCache.d.ts +1 -12
  360. package/dist/cache/slidingCache.js.map +1 -1
  361. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  362. package/dist/cache/unconstrainedCache.d.cts +1 -12
  363. package/dist/cache/unconstrainedCache.d.ts +1 -12
  364. package/dist/cache/unconstrainedCache.js.map +1 -1
  365. package/dist/{chat-DvMzAHj6.d.cts → chat-CR4yfOR9.d.cts} +3 -14
  366. package/dist/{chat-BdN8hGWn.d.ts → chat-W9j8T6UU.d.ts} +3 -14
  367. package/dist/context.cjs +3 -4
  368. package/dist/context.cjs.map +1 -1
  369. package/dist/context.d.cts +2 -13
  370. package/dist/context.d.ts +2 -13
  371. package/dist/context.js +3 -4
  372. package/dist/context.js.map +1 -1
  373. package/dist/emitter/emitter.cjs.map +1 -1
  374. package/dist/emitter/emitter.d.cts +1 -1
  375. package/dist/emitter/emitter.d.ts +1 -1
  376. package/dist/emitter/emitter.js.map +1 -1
  377. package/dist/emitter/errors.cjs.map +1 -1
  378. package/dist/emitter/errors.d.cts +1 -12
  379. package/dist/emitter/errors.d.ts +1 -12
  380. package/dist/emitter/errors.js.map +1 -1
  381. package/dist/emitter/types.d.cts +1 -1
  382. package/dist/emitter/types.d.ts +1 -1
  383. package/dist/emitter/utils.cjs.map +1 -1
  384. package/dist/emitter/utils.d.cts +1 -12
  385. package/dist/emitter/utils.d.ts +1 -12
  386. package/dist/emitter/utils.js.map +1 -1
  387. package/dist/{emitter-C3dO-s2P.d.ts → emitter-C9nwGLt6.d.ts} +3 -25
  388. package/dist/{emitter-D5Mu0EEH.d.cts → emitter-DWEsd-ud.d.cts} +3 -25
  389. package/dist/errors.cjs.map +1 -1
  390. package/dist/errors.d.cts +1 -12
  391. package/dist/errors.d.ts +1 -12
  392. package/dist/errors.js.map +1 -1
  393. package/dist/index.d.cts +4 -4
  394. package/dist/index.d.ts +4 -4
  395. package/dist/internals/env.cjs.map +1 -1
  396. package/dist/internals/env.d.cts +1 -12
  397. package/dist/internals/env.d.ts +1 -12
  398. package/dist/internals/env.js.map +1 -1
  399. package/dist/internals/fetcher.cjs +8 -8
  400. package/dist/internals/fetcher.cjs.map +1 -1
  401. package/dist/internals/fetcher.d.cts +2 -13
  402. package/dist/internals/fetcher.d.ts +2 -13
  403. package/dist/internals/fetcher.js +8 -8
  404. package/dist/internals/fetcher.js.map +1 -1
  405. package/dist/internals/helpers/array.cjs.map +1 -1
  406. package/dist/internals/helpers/array.d.cts +1 -12
  407. package/dist/internals/helpers/array.d.ts +1 -12
  408. package/dist/internals/helpers/array.js.map +1 -1
  409. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  410. package/dist/internals/helpers/cancellation.d.cts +1 -12
  411. package/dist/internals/helpers/cancellation.d.ts +1 -12
  412. package/dist/internals/helpers/cancellation.js.map +1 -1
  413. package/dist/internals/helpers/counter.cjs.map +1 -1
  414. package/dist/internals/helpers/counter.d.cts +1 -12
  415. package/dist/internals/helpers/counter.d.ts +1 -12
  416. package/dist/internals/helpers/counter.js.map +1 -1
  417. package/dist/internals/helpers/general.cjs.map +1 -1
  418. package/dist/internals/helpers/general.d.cts +1 -12
  419. package/dist/internals/helpers/general.d.ts +1 -12
  420. package/dist/internals/helpers/general.js.map +1 -1
  421. package/dist/internals/helpers/guards.cjs.map +1 -1
  422. package/dist/internals/helpers/guards.d.cts +1 -12
  423. package/dist/internals/helpers/guards.d.ts +1 -12
  424. package/dist/internals/helpers/guards.js.map +1 -1
  425. package/dist/internals/helpers/hash.cjs.map +1 -1
  426. package/dist/internals/helpers/hash.d.cts +1 -12
  427. package/dist/internals/helpers/hash.d.ts +1 -12
  428. package/dist/internals/helpers/hash.js.map +1 -1
  429. package/dist/internals/helpers/map.cjs.map +1 -1
  430. package/dist/internals/helpers/map.d.cts +1 -12
  431. package/dist/internals/helpers/map.d.ts +1 -12
  432. package/dist/internals/helpers/map.js.map +1 -1
  433. package/dist/internals/helpers/math.cjs.map +1 -1
  434. package/dist/internals/helpers/math.d.cts +1 -12
  435. package/dist/internals/helpers/math.d.ts +1 -12
  436. package/dist/internals/helpers/math.js.map +1 -1
  437. package/dist/internals/helpers/number.cjs.map +1 -1
  438. package/dist/internals/helpers/number.d.cts +1 -12
  439. package/dist/internals/helpers/number.d.ts +1 -12
  440. package/dist/internals/helpers/number.js.map +1 -1
  441. package/dist/internals/helpers/object.cjs.map +1 -1
  442. package/dist/internals/helpers/object.d.cts +1 -12
  443. package/dist/internals/helpers/object.d.ts +1 -12
  444. package/dist/internals/helpers/object.js.map +1 -1
  445. package/dist/internals/helpers/paginate.cjs.map +1 -1
  446. package/dist/internals/helpers/paginate.d.cts +1 -12
  447. package/dist/internals/helpers/paginate.d.ts +1 -12
  448. package/dist/internals/helpers/paginate.js.map +1 -1
  449. package/dist/internals/helpers/promise.cjs +1 -3
  450. package/dist/internals/helpers/promise.cjs.map +1 -1
  451. package/dist/internals/helpers/promise.d.cts +1 -12
  452. package/dist/internals/helpers/promise.d.ts +1 -12
  453. package/dist/internals/helpers/promise.js +1 -3
  454. package/dist/internals/helpers/promise.js.map +1 -1
  455. package/dist/internals/helpers/prototype.cjs.map +1 -1
  456. package/dist/internals/helpers/prototype.d.cts +1 -12
  457. package/dist/internals/helpers/prototype.d.ts +1 -12
  458. package/dist/internals/helpers/prototype.js.map +1 -1
  459. package/dist/internals/helpers/retry.cjs.map +1 -1
  460. package/dist/internals/helpers/retry.d.cts +1 -12
  461. package/dist/internals/helpers/retry.d.ts +1 -12
  462. package/dist/internals/helpers/retry.js.map +1 -1
  463. package/dist/internals/helpers/retryable.cjs.map +1 -1
  464. package/dist/internals/helpers/retryable.d.cts +1 -12
  465. package/dist/internals/helpers/retryable.d.ts +1 -12
  466. package/dist/internals/helpers/retryable.js.map +1 -1
  467. package/dist/internals/helpers/schema.cjs.map +1 -1
  468. package/dist/internals/helpers/schema.d.cts +1 -12
  469. package/dist/internals/helpers/schema.d.ts +1 -12
  470. package/dist/internals/helpers/schema.js.map +1 -1
  471. package/dist/internals/helpers/stream.cjs.map +1 -1
  472. package/dist/internals/helpers/stream.d.cts +1 -12
  473. package/dist/internals/helpers/stream.d.ts +1 -12
  474. package/dist/internals/helpers/stream.js.map +1 -1
  475. package/dist/internals/helpers/string.cjs.map +1 -1
  476. package/dist/internals/helpers/string.d.cts +1 -12
  477. package/dist/internals/helpers/string.d.ts +1 -12
  478. package/dist/internals/helpers/string.js.map +1 -1
  479. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  480. package/dist/internals/helpers/weakRef.d.cts +1 -12
  481. package/dist/internals/helpers/weakRef.d.ts +1 -12
  482. package/dist/internals/helpers/weakRef.js.map +1 -1
  483. package/dist/internals/serializable.cjs.map +1 -1
  484. package/dist/internals/serializable.d.cts +1 -12
  485. package/dist/internals/serializable.d.ts +1 -12
  486. package/dist/internals/serializable.js.map +1 -1
  487. package/dist/internals/types.cjs.map +1 -1
  488. package/dist/internals/types.d.cts +1 -12
  489. package/dist/internals/types.d.ts +1 -12
  490. package/dist/internals/types.js.map +1 -1
  491. package/dist/logger/logger.cjs.map +1 -1
  492. package/dist/logger/logger.js.map +1 -1
  493. package/dist/logger/pretty.cjs.map +1 -1
  494. package/dist/logger/pretty.js.map +1 -1
  495. package/dist/memory/base.cjs.map +1 -1
  496. package/dist/memory/base.js.map +1 -1
  497. package/dist/memory/slidingMemory.cjs.map +1 -1
  498. package/dist/memory/slidingMemory.js.map +1 -1
  499. package/dist/memory/summarizeMemory.cjs.map +1 -1
  500. package/dist/memory/summarizeMemory.d.cts +2 -2
  501. package/dist/memory/summarizeMemory.d.ts +2 -2
  502. package/dist/memory/summarizeMemory.js.map +1 -1
  503. package/dist/memory/tokenMemory.cjs.map +1 -1
  504. package/dist/memory/tokenMemory.js.map +1 -1
  505. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  506. package/dist/memory/unconstrainedMemory.js.map +1 -1
  507. package/dist/parsers/errors.cjs.map +1 -1
  508. package/dist/parsers/errors.d.cts +1 -12
  509. package/dist/parsers/errors.d.ts +1 -12
  510. package/dist/parsers/errors.js.map +1 -1
  511. package/dist/parsers/field.cjs +2 -2
  512. package/dist/parsers/field.cjs.map +1 -1
  513. package/dist/parsers/field.js +2 -2
  514. package/dist/parsers/field.js.map +1 -1
  515. package/dist/parsers/linePrefix.cjs +15 -15
  516. package/dist/parsers/linePrefix.cjs.map +1 -1
  517. package/dist/parsers/linePrefix.d.cts +2 -13
  518. package/dist/parsers/linePrefix.d.ts +2 -13
  519. package/dist/parsers/linePrefix.js +15 -15
  520. package/dist/parsers/linePrefix.js.map +1 -1
  521. package/dist/serializer/error.cjs.map +1 -1
  522. package/dist/serializer/error.d.cts +1 -12
  523. package/dist/serializer/error.d.ts +1 -12
  524. package/dist/serializer/error.js.map +1 -1
  525. package/dist/serializer/serializer.cjs.map +1 -1
  526. package/dist/serializer/serializer.d.cts +1 -1
  527. package/dist/serializer/serializer.d.ts +1 -1
  528. package/dist/serializer/serializer.js.map +1 -1
  529. package/dist/serializer/utils.cjs +1 -2
  530. package/dist/serializer/utils.cjs.map +1 -1
  531. package/dist/serializer/utils.d.cts +1 -1
  532. package/dist/serializer/utils.d.ts +1 -1
  533. package/dist/serializer/utils.js +1 -2
  534. package/dist/serializer/utils.js.map +1 -1
  535. package/dist/{serializer-Dz4AIM2O.d.cts → serializer-BKn50Vnx.d.cts} +2 -24
  536. package/dist/{serializer-BswFRdT8.d.ts → serializer-CQxucveV.d.ts} +2 -24
  537. package/dist/serve/server.cjs +13 -7
  538. package/dist/serve/server.cjs.map +1 -1
  539. package/dist/serve/server.d.cts +5 -15
  540. package/dist/serve/server.d.ts +5 -15
  541. package/dist/serve/server.js +13 -7
  542. package/dist/serve/server.js.map +1 -1
  543. package/dist/template.cjs.map +1 -1
  544. package/dist/template.d.cts +1 -12
  545. package/dist/template.d.ts +1 -12
  546. package/dist/template.js.map +1 -1
  547. package/dist/tools/arxiv.cjs.map +1 -1
  548. package/dist/tools/arxiv.d.cts +2 -13
  549. package/dist/tools/arxiv.d.ts +2 -13
  550. package/dist/tools/arxiv.js.map +1 -1
  551. package/dist/tools/base.cjs.map +1 -1
  552. package/dist/tools/base.d.cts +1 -1
  553. package/dist/tools/base.d.ts +1 -1
  554. package/dist/tools/base.js.map +1 -1
  555. package/dist/tools/calculator.cjs.map +1 -1
  556. package/dist/tools/calculator.d.cts +2 -13
  557. package/dist/tools/calculator.d.ts +2 -13
  558. package/dist/tools/calculator.js.map +1 -1
  559. package/dist/tools/custom.cjs.map +1 -1
  560. package/dist/tools/custom.d.cts +3 -14
  561. package/dist/tools/custom.d.ts +3 -14
  562. package/dist/tools/custom.js.map +1 -1
  563. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  564. package/dist/tools/database/elasticsearch.d.cts +2 -13
  565. package/dist/tools/database/elasticsearch.d.ts +2 -13
  566. package/dist/tools/database/elasticsearch.js.map +1 -1
  567. package/dist/tools/database/metadata.cjs.map +1 -1
  568. package/dist/tools/database/metadata.d.cts +1 -12
  569. package/dist/tools/database/metadata.d.ts +1 -12
  570. package/dist/tools/database/metadata.js.map +1 -1
  571. package/dist/tools/database/milvus.cjs.map +1 -1
  572. package/dist/tools/database/milvus.d.cts +2 -13
  573. package/dist/tools/database/milvus.d.ts +2 -13
  574. package/dist/tools/database/milvus.js.map +1 -1
  575. package/dist/tools/database/qdrant.cjs.map +1 -1
  576. package/dist/tools/database/qdrant.d.cts +2 -13
  577. package/dist/tools/database/qdrant.d.ts +2 -13
  578. package/dist/tools/database/qdrant.js.map +1 -1
  579. package/dist/tools/database/sql.cjs.map +1 -1
  580. package/dist/tools/database/sql.d.cts +2 -13
  581. package/dist/tools/database/sql.d.ts +2 -13
  582. package/dist/tools/database/sql.js.map +1 -1
  583. package/dist/tools/llm.cjs +3 -3
  584. package/dist/tools/llm.cjs.map +1 -1
  585. package/dist/tools/llm.d.cts +3 -14
  586. package/dist/tools/llm.d.ts +3 -14
  587. package/dist/tools/llm.js +3 -3
  588. package/dist/tools/llm.js.map +1 -1
  589. package/dist/tools/mcp.cjs +2 -1
  590. package/dist/tools/mcp.cjs.map +1 -1
  591. package/dist/tools/mcp.d.cts +2 -13
  592. package/dist/tools/mcp.d.ts +2 -13
  593. package/dist/tools/mcp.js +2 -1
  594. package/dist/tools/mcp.js.map +1 -1
  595. package/dist/tools/openapi.cjs.map +1 -1
  596. package/dist/tools/openapi.d.cts +1 -1
  597. package/dist/tools/openapi.d.ts +1 -1
  598. package/dist/tools/openapi.js.map +1 -1
  599. package/dist/tools/python/output.cjs.map +1 -1
  600. package/dist/tools/python/output.d.cts +2 -13
  601. package/dist/tools/python/output.d.ts +2 -13
  602. package/dist/tools/python/output.js.map +1 -1
  603. package/dist/tools/python/python.cjs.map +1 -1
  604. package/dist/tools/python/python.d.cts +2 -2
  605. package/dist/tools/python/python.d.ts +2 -2
  606. package/dist/tools/python/python.js.map +1 -1
  607. package/dist/tools/python/storage.cjs.map +1 -1
  608. package/dist/tools/python/storage.d.cts +1 -12
  609. package/dist/tools/python/storage.d.ts +1 -12
  610. package/dist/tools/python/storage.js.map +1 -1
  611. package/dist/tools/search/base.cjs.map +1 -1
  612. package/dist/tools/search/base.d.cts +2 -13
  613. package/dist/tools/search/base.d.ts +2 -13
  614. package/dist/tools/search/base.js.map +1 -1
  615. package/dist/tools/search/duckDuckGoSearch.cjs +7 -1
  616. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  617. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -13
  618. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -13
  619. package/dist/tools/search/duckDuckGoSearch.js +7 -1
  620. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  621. package/dist/tools/search/googleSearch.cjs.map +1 -1
  622. package/dist/tools/search/googleSearch.d.cts +1 -1
  623. package/dist/tools/search/googleSearch.d.ts +1 -1
  624. package/dist/tools/search/googleSearch.js.map +1 -1
  625. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  626. package/dist/tools/search/searXNGSearch.d.cts +2 -13
  627. package/dist/tools/search/searXNGSearch.d.ts +2 -13
  628. package/dist/tools/search/searXNGSearch.js.map +1 -1
  629. package/dist/tools/search/wikipedia.cjs +11 -11
  630. package/dist/tools/search/wikipedia.cjs.map +1 -1
  631. package/dist/tools/search/wikipedia.d.cts +1 -1
  632. package/dist/tools/search/wikipedia.d.ts +1 -1
  633. package/dist/tools/search/wikipedia.js +11 -11
  634. package/dist/tools/search/wikipedia.js.map +1 -1
  635. package/dist/tools/similarity.cjs.map +1 -1
  636. package/dist/tools/similarity.d.cts +2 -13
  637. package/dist/tools/similarity.d.ts +2 -13
  638. package/dist/tools/similarity.js.map +1 -1
  639. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  640. package/dist/tools/weather/openMeteo.d.cts +2 -13
  641. package/dist/tools/weather/openMeteo.d.ts +2 -13
  642. package/dist/tools/weather/openMeteo.js.map +1 -1
  643. package/dist/tools/web/webCrawler.cjs.map +1 -1
  644. package/dist/tools/web/webCrawler.d.cts +1 -1
  645. package/dist/tools/web/webCrawler.d.ts +1 -1
  646. package/dist/tools/web/webCrawler.js.map +1 -1
  647. package/dist/version.cjs +1 -1
  648. package/dist/version.cjs.map +1 -1
  649. package/dist/version.d.cts +1 -12
  650. package/dist/version.d.ts +1 -12
  651. package/dist/version.js +1 -1
  652. package/dist/version.js.map +1 -1
  653. package/dist/workflows/agent.cjs.map +1 -1
  654. package/dist/workflows/agent.d.cts +40 -40
  655. package/dist/workflows/agent.d.ts +40 -40
  656. package/dist/workflows/agent.js.map +1 -1
  657. package/dist/workflows/workflow.cjs +3 -3
  658. package/dist/workflows/workflow.cjs.map +1 -1
  659. package/dist/workflows/workflow.d.cts +1 -1
  660. package/dist/workflows/workflow.d.ts +1 -1
  661. package/dist/workflows/workflow.js +3 -3
  662. package/dist/workflows/workflow.js.map +1 -1
  663. package/package.json +42 -73
@@ -1 +1 @@
1
- {"version":3,"sources":["tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","constructor","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/memory/tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;;;AAsBO,MAAMA,4BAA4BC,mBAAAA,CAAAA;EAtBzC;;;AAuBSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAgB,EAAA;AAC1CA,IAAAA,KAAAA,GAAQC,sBAAYD,CAAAA,KAAAA,IAAS,IAAKJ,CAAAA,QAAAA,CAASM,MAAQ,EAAA;MAAEC,GAAK,EAAA,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAASM,CAAAA;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAASS,CAAAA,MAAAA,CAAOL,KAAO,EAAA,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAkB,EAAA;AAC7B,IAAOQ,OAAAA,yBAAAA,CAAgB,IAAKX,CAAAA,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAQ,GAAA;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAS,GAAA,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAiB,GAAA;AACf,IAAO,OAAA;MACLjB,QAAUkB,EAAAA,qBAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/memory/unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;;;AAWO,MAAMA,4BAA4BC,mBAAAA,CAAAA;EAXzC;;;AAYSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1CA,IAAAA,KAAAA,GAAQC,sBAAAA,CAAYD,KAAAA,IAAS,IAAA,CAAKJ,QAAAA,CAASM,MAAAA,EAAQ;MAAEC,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAAAA,CAASM;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAAAA,CAASS,MAAAA,CAAOL,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAAA,EAAkB;AAC7B,IAAA,OAAOQ,yBAAAA,CAAgB,IAAA,CAAKX,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAAA,GAAS,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAAA,GAAiB;AACf,IAAA,OAAO;MACLjB,QAAAA,EAAUkB,qBAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;AAsBO,MAAMA,4BAA4BC,UAAAA,CAAAA;EAtBzC;;;AAuBSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAgB,EAAA;AAC1CA,IAAAA,KAAAA,GAAQC,WAAYD,CAAAA,KAAAA,IAAS,IAAKJ,CAAAA,QAAAA,CAASM,MAAQ,EAAA;MAAEC,GAAK,EAAA,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAASM,CAAAA;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAASS,CAAAA,MAAAA,CAAOL,KAAO,EAAA,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAkB,EAAA;AAC7B,IAAOQ,OAAAA,eAAAA,CAAgB,IAAKX,CAAAA,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAQ,GAAA;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAS,GAAA,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAiB,GAAA;AACf,IAAO,OAAA;MACLjB,QAAUkB,EAAAA,WAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/memory/unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;AAWO,MAAMA,4BAA4BC,UAAAA,CAAAA;EAXzC;;;AAYSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1CA,IAAAA,KAAAA,GAAQC,WAAAA,CAAYD,KAAAA,IAAS,IAAA,CAAKJ,QAAAA,CAASM,MAAAA,EAAQ;MAAEC,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAAAA,CAASM;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAAAA,CAASS,MAAAA,CAAOL,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAAA,EAAkB;AAC7B,IAAA,OAAOQ,eAAAA,CAAgB,IAAA,CAAKX,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAAA,GAAS,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAAA,GAAiB;AACf,IAAA,OAAO;MACLjB,QAAAA,EAAUkB,WAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","constructor","message","errors","options"],"mappings":";;;;;;AA0BO,MAAMA,8BAA8BC,yBAAAA,CAAAA;EA1B3C;;;EA2BEC,OAAU,GAAA,IAAA;EACVC,WAAc,GAAA,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAS,GAAA;IACdC,cAAgB,EAAA,gBAAA;IAChBC,iBAAmB,EAAA,mBAAA;IACnBC,YAAc,EAAA,cAAA;IACdC,UAAY,EAAA,YAAA;IACZC,gBAAkB,EAAA,kBAAA;IAClBC,aAAe,EAAA;AACjB,GAAA;EAEAC,WACEC,CAAAA,OAAAA,EACAC,QACAC,OAIA,EAAA;AACA,IAAMF,KAAAA,CAAAA,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKZ,UAAUY,OAAQZ,CAAAA,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASW,OAAQX,CAAAA,MAAAA;AACxB;AACF","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/parsers/errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","message","errors","options"],"mappings":";;;;;;AAeO,MAAMA,8BAA8BC,yBAAAA,CAAAA;EAf3C;;;EAgBEC,OAAAA,GAAU,IAAA;EACVC,WAAAA,GAAc,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAAA,GAAS;IACdC,cAAAA,EAAgB,gBAAA;IAChBC,iBAAAA,EAAmB,mBAAA;IACnBC,YAAAA,EAAc,cAAA;IACdC,UAAAA,EAAY,YAAA;IACZC,gBAAAA,EAAkB,kBAAA;IAClBC,aAAAA,EAAe;AACjB,GAAA;EAEA,WAAA,CACEC,OAAAA,EACAC,QACAC,OAAAA,EAIA;AACA,IAAA,KAAA,CAAMF,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKX,UAAUW,OAAAA,CAAQX,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASU,OAAAA,CAAQV,MAAAA;AACxB;AACF","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
@@ -4,18 +4,7 @@ import '../internals/helpers/guards.cjs';
4
4
 
5
5
  /**
6
6
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
7
- *
8
- * Licensed under the Apache License, Version 2.0 (the "License");
9
- * you may not use this file except in compliance with the License.
10
- * You may obtain a copy of the License at
11
- *
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
- *
14
- * Unless required by applicable law or agreed to in writing, software
15
- * distributed under the License is distributed on an "AS IS" BASIS,
16
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- * See the License for the specific language governing permissions and
18
- * limitations under the License.
7
+ * SPDX-License-Identifier: Apache-2.0
19
8
  */
20
9
 
21
10
  interface Context {
@@ -4,18 +4,7 @@ import '../internals/helpers/guards.js';
4
4
 
5
5
  /**
6
6
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
7
- *
8
- * Licensed under the Apache License, Version 2.0 (the "License");
9
- * you may not use this file except in compliance with the License.
10
- * You may obtain a copy of the License at
11
- *
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
- *
14
- * Unless required by applicable law or agreed to in writing, software
15
- * distributed under the License is distributed on an "AS IS" BASIS,
16
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- * See the License for the specific language governing permissions and
18
- * limitations under the License.
7
+ * SPDX-License-Identifier: Apache-2.0
19
8
  */
20
9
 
21
10
  interface Context {
@@ -1 +1 @@
1
- {"version":3,"sources":["errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","constructor","message","errors","options"],"mappings":";;;;AA0BO,MAAMA,8BAA8BC,cAAAA,CAAAA;EA1B3C;;;EA2BEC,OAAU,GAAA,IAAA;EACVC,WAAc,GAAA,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAS,GAAA;IACdC,cAAgB,EAAA,gBAAA;IAChBC,iBAAmB,EAAA,mBAAA;IACnBC,YAAc,EAAA,cAAA;IACdC,UAAY,EAAA,YAAA;IACZC,gBAAkB,EAAA,kBAAA;IAClBC,aAAe,EAAA;AACjB,GAAA;EAEAC,WACEC,CAAAA,OAAAA,EACAC,QACAC,OAIA,EAAA;AACA,IAAMF,KAAAA,CAAAA,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKZ,UAAUY,OAAQZ,CAAAA,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASW,OAAQX,CAAAA,MAAAA;AACxB;AACF","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/parsers/errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","message","errors","options"],"mappings":";;;;AAeO,MAAMA,8BAA8BC,cAAAA,CAAAA;EAf3C;;;EAgBEC,OAAAA,GAAU,IAAA;EACVC,WAAAA,GAAc,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAAA,GAAS;IACdC,cAAAA,EAAgB,gBAAA;IAChBC,iBAAAA,EAAmB,mBAAA;IACnBC,YAAAA,EAAc,cAAA;IACdC,UAAAA,EAAY,YAAA;IACZC,gBAAAA,EAAkB,kBAAA;IAClBC,aAAAA,EAAe;AACjB,GAAA;EAEA,WAAA,CACEC,OAAAA,EACAC,QACAC,OAAAA,EAIA;AACA,IAAA,KAAA,CAAMF,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKX,UAAUW,OAAAA,CAAQX,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASU,OAAAA,CAAQV,MAAAA;AACxB;AACF","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
@@ -73,10 +73,10 @@ class JSONParserField extends ParserField {
73
73
  input;
74
74
  stream;
75
75
  jsonParser;
76
- errored;
76
+ errored = false;
77
77
  ref;
78
78
  constructor(input) {
79
- super(), this.input = input, this.errored = false;
79
+ super(), this.input = input;
80
80
  if (input.base === void 0) {
81
81
  throw new errors_cjs.ValueError(`Base must be defined!`);
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","constructor","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":"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","file":"field.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
1
+ {"version":3,"sources":["../../src/parsers/field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":"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","file":"field.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
@@ -71,10 +71,10 @@ class JSONParserField extends ParserField {
71
71
  input;
72
72
  stream;
73
73
  jsonParser;
74
- errored;
74
+ errored = false;
75
75
  ref;
76
76
  constructor(input) {
77
- super(), this.input = input, this.errored = false;
77
+ super(), this.input = input;
78
78
  if (input.base === void 0) {
79
79
  throw new ValueError(`Base must be defined!`);
80
80
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","constructor","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":"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","file":"field.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
1
+ {"version":3,"sources":["../../src/parsers/field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":"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","file":"field.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
@@ -31,25 +31,25 @@ class LinePrefixParser extends serializable_cjs.Serializable {
31
31
  }
32
32
  nodes;
33
33
  options;
34
- emitter;
35
- lines;
36
- excludedLines;
37
- done;
38
- lastNodeKey;
39
- finalState;
40
- partialState;
34
+ emitter = new emitter_cjs.Emitter({
35
+ creator: this,
36
+ namespace: [
37
+ "agent",
38
+ "parser",
39
+ "line"
40
+ ]
41
+ });
42
+ lines = [];
43
+ excludedLines = [];
44
+ done = false;
45
+ lastNodeKey = null;
46
+ finalState = {};
47
+ partialState = {};
41
48
  get isDone() {
42
49
  return this.done;
43
50
  }
44
51
  constructor(nodes, options = {}) {
45
- super(), this.nodes = nodes, this.options = options, this.emitter = new emitter_cjs.Emitter({
46
- creator: this,
47
- namespace: [
48
- "agent",
49
- "parser",
50
- "line"
51
- ]
52
- }), this.lines = [], this.excludedLines = [], this.done = false, this.lastNodeKey = null, this.finalState = {}, this.partialState = {};
52
+ super(), this.nodes = nodes, this.options = options;
53
53
  let hasStartNode = false;
54
54
  let hasEndNode = false;
55
55
  for (const [key, { next, isStart, isEnd }] of remeda.entries(nodes ?? {})) {
@@ -1 +1 @@
1
- {"version":3,"sources":["linePrefix.ts"],"names":["NEW_LINE_CHARACTER","trimLeftSpaces","value","replace","linesToString","lines","reduce","acc","newLine","concat","LinePrefixParser","Serializable","emitter","excludedLines","done","lastNodeKey","finalState","partialState","isDone","constructor","nodes","options","Emitter","creator","namespace","hasStartNode","hasEndNode","key","next","isStart","isEnd","entries","Boolean","nextKey","ValueError","fork","customizer","add","chunk","split","forEach","line","i","arr","isFirstLine","length","push","at","isLastLine","lastNode","isTerminationNode","parsedLine","extractLine","partial","shift","includes","endOnRepeat","end","throwWithContext","LinePrefixParserError","Reason","InvalidTransition","emitFinalUpdate","field","waitForStartNode","NotStartNode","node","write","emitPartialUpdate","getPartial","delta","raw","message","reason","extra","join","errors","context","fallback","stash","splice","Infinity","map","prefix","NoDataReceived","currentNode","NotEndNode","Promise","allSettled","Object","values","data","AlreadyCompleted","silentNodes","emit","get","e","ZodError","InvalidSchema","normalizedNodes","sort","_","a","__","b","lowerCasePrefix","toLowerCase","ref","trimmedLine","startsWith","substring","createSnapshot","shallowCopy","loadSnapshot","snapshot","assign"],"mappings":"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","file":"linePrefix.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { entries } from \"remeda\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ParserField } from \"@/parsers/field.js\";\nimport { Callback, InferCallbackValue } from \"@/emitter/types.js\";\nimport { ZodError } from \"zod\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { LinePrefixParserError } from \"@/parsers/errors.js\";\nexport * from \"@/parsers/errors.js\";\n\nexport interface ParserNode<T extends string, P extends ParserField<any, any>> {\n prefix: string;\n next: readonly T[];\n isStart?: boolean;\n isEnd?: boolean;\n field: P;\n}\n\ntype Customizer<T extends NonNullable<unknown>, T2 extends NonNullable<unknown> = T> = (\n nodes: T,\n options: Options<T>,\n) => { nodes: T2; options: Options<T2> };\n\ntype StringKey<T extends NonNullable<unknown>> = Extract<keyof T, string>;\n\ninterface Callbacks<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> {\n update: Callback<\n {\n [K in StringKey<T>]: {\n key: K;\n value: ParserField.inferValue<T[K][\"field\"]>;\n field: T[K][\"field\"];\n };\n }[StringKey<T>]\n >;\n partialUpdate: Callback<\n {\n [K in StringKey<T>]: {\n key: K;\n delta: string;\n value: ParserField.inferPartialValue<T[K][\"field\"]>;\n field: T[K][\"field\"];\n };\n }[StringKey<T>]\n >;\n}\n\ninterface Line {\n value: string;\n newLine: boolean;\n}\n\nconst NEW_LINE_CHARACTER = \"\\n\" as const;\n\ninterface ExtractedLine<T extends NonNullable<unknown>> {\n key: StringKey<T>;\n value: string;\n partial: boolean;\n}\n\nconst trimLeftSpaces = (value: string) => value.replace(/^\\s*/g, \"\");\nconst linesToString = (lines: Line[]) =>\n lines.reduce(\n (acc, { newLine, value }) => `${acc}${newLine ? NEW_LINE_CHARACTER.concat(value) : value}`,\n \"\",\n );\n\ninterface Options<T extends NonNullable<unknown>> {\n fallback?: (value: string) => readonly { key: StringKey<T>; value: string }[];\n endOnRepeat?: boolean;\n waitForStartNode?: boolean;\n silentNodes?: StringKey<T>[];\n}\n\ntype Input<K extends string = string> = Record<string, ParserNode<K, ParserField<any, any>>>;\n\nexport class LinePrefixParser<T extends Input<StringKey<T>>> extends Serializable {\n public readonly emitter = new Emitter<Callbacks<T>>({\n creator: this,\n namespace: [\"agent\", \"parser\", \"line\"],\n });\n\n protected readonly lines: Line[] = [];\n protected readonly excludedLines: Line[] = [];\n protected done = false;\n protected lastNodeKey: StringKey<T> | null = null;\n\n public readonly finalState = {} as LinePrefixParser.infer<T>;\n public readonly partialState = {} as Partial<Record<StringKey<T>, string>>;\n\n get isDone() {\n return this.done;\n }\n\n constructor(\n protected readonly nodes: T,\n protected readonly options: Options<T> = {},\n ) {\n super();\n\n let hasStartNode = false;\n let hasEndNode = false;\n\n for (const [key, { next, isStart, isEnd }] of entries(nodes ?? {})) {\n hasStartNode = Boolean(hasStartNode || isStart);\n hasEndNode = Boolean(hasEndNode || isEnd);\n\n for (const nextKey of next) {\n if (key === nextKey) {\n throw new ValueError(`Node '${key}' cannot point to itself.`);\n }\n if (!(nextKey in nodes)) {\n throw new ValueError(\n `Node '${key}' contains a transition to non-existing node '${nextKey}'.`,\n );\n }\n }\n }\n\n if (!hasStartNode) {\n throw new ValueError(`At least one start node must be provided!`);\n }\n if (!hasEndNode) {\n throw new ValueError(`At least one end node must be provided!`);\n }\n }\n\n fork<R extends T = T>(customizer: Customizer<T, R>) {\n const { nodes, options } = customizer(this.nodes, this.options);\n return new LinePrefixParser(nodes, options);\n }\n\n async add(chunk: string) {\n if (!chunk || this.done) {\n return;\n }\n\n chunk.split(NEW_LINE_CHARACTER).forEach((line, i, arr) => {\n const isFirstLine = i === 0;\n\n if (isFirstLine) {\n if (this.lines.length === 0) {\n this.lines.push({ newLine: false, value: line });\n } else {\n this.lines.at(-1)!.value += line;\n }\n } else {\n this.lines.push({ newLine: arr.length > 1, value: line });\n }\n });\n\n while (this.lines.length > 0) {\n const line = this.lines[0];\n const isLastLine = this.lines.length === 1;\n\n const lastNode = this.lastNodeKey ? this.nodes[this.lastNodeKey] : null;\n const isTerminationNode = lastNode\n ? Boolean(lastNode.isEnd && lastNode.next.length === 0)\n : false;\n\n const parsedLine =\n isTerminationNode || (lastNode && !line.newLine) ? null : this.extractLine(line.value);\n\n if (isLastLine && (parsedLine?.partial || !line.value)) {\n break;\n }\n this.lines.shift();\n\n if (parsedLine && !parsedLine.partial) {\n if (lastNode) {\n if (!lastNode.next.includes(parsedLine.key)) {\n if (parsedLine.key in this.finalState && this.options.endOnRepeat && lastNode.isEnd) {\n await this.end();\n return;\n }\n\n this.throwWithContext(\n `Transition from '${this.lastNodeKey}' to '${parsedLine.key}' does not exist!`,\n LinePrefixParserError.Reason.InvalidTransition,\n { line },\n );\n }\n\n await this.emitFinalUpdate(this.lastNodeKey!, lastNode.field);\n } else if (!this.nodes[parsedLine.key].isStart) {\n if (!this.options.waitForStartNode) {\n this.throwWithContext(\n `Parsed text line corresponds to a node \"${parsedLine.key}\" which is not a start node!`,\n LinePrefixParserError.Reason.NotStartNode,\n { line },\n );\n }\n this.excludedLines.push(line);\n continue;\n }\n\n const node = this.nodes[parsedLine.key];\n node.field.write(parsedLine.value);\n await this.emitPartialUpdate({\n key: parsedLine.key,\n value: node.field.getPartial(),\n delta: parsedLine.value,\n field: node.field,\n });\n this.lastNodeKey = parsedLine.key;\n } else if (this.lastNodeKey) {\n if (!this.nodes[this.lastNodeKey].field.raw) {\n line.value = trimLeftSpaces(line.value);\n }\n if (line.newLine) {\n line.value = `${NEW_LINE_CHARACTER}${line.value}`;\n }\n\n const node = this.nodes[this.lastNodeKey];\n node.field.write(line.value);\n await this.emitPartialUpdate({\n key: this.lastNodeKey,\n value: node.field.getPartial(),\n delta: line.value,\n field: node.field,\n });\n } else {\n this.excludedLines.push(line);\n }\n }\n }\n\n protected throwWithContext(\n message: string,\n reason: ValueOf<typeof LinePrefixParserError.Reason>,\n extra: { line?: Line; errors?: Error[] } = {},\n ): never {\n throw new LinePrefixParserError(\n [`The generated output does not adhere to the schema.`, message].join(NEW_LINE_CHARACTER),\n extra.errors ?? [],\n {\n reason,\n context: {\n lines: linesToString(this.lines.concat(extra.line ? [extra.line] : [])),\n excludedLines: linesToString(this.excludedLines),\n finalState: this.finalState,\n partialState: this.partialState,\n },\n },\n );\n }\n\n async end() {\n if (this.done) {\n return this.finalState;\n }\n\n if (!this.lastNodeKey && this.options.fallback) {\n const stash = linesToString([\n ...this.excludedLines.splice(0, Infinity),\n ...this.lines.splice(0, Infinity),\n ]);\n\n const nodes = this.options.fallback(stash);\n await this.add(\n nodes.map((node) => `${this.nodes[node.key].prefix}${node.value}`).join(NEW_LINE_CHARACTER),\n );\n }\n\n this.done = true;\n\n if (!this.lastNodeKey) {\n this.throwWithContext(\n \"Nothing valid has been parsed yet!\",\n LinePrefixParserError.Reason.NoDataReceived,\n );\n }\n\n const stash = linesToString(this.lines);\n this.lines.length = 0;\n\n const field = this.nodes[this.lastNodeKey].field!;\n if (stash) {\n field.write(stash);\n await this.emitPartialUpdate({\n key: this.lastNodeKey,\n value: field.getPartial(),\n delta: stash,\n field,\n });\n }\n await this.emitFinalUpdate(this.lastNodeKey, field);\n\n const currentNode = this.nodes[this.lastNodeKey];\n if (!currentNode.isEnd) {\n this.throwWithContext(\n `Node '${this.lastNodeKey}' is not an end node.`,\n LinePrefixParserError.Reason.NotEndNode,\n );\n }\n\n await Promise.allSettled(Object.values(this.nodes).map(({ field }) => field.end()));\n return this.finalState;\n }\n\n protected async emitPartialUpdate(data: InferCallbackValue<Callbacks<T>[\"partialUpdate\"]>) {\n if (data.key in this.finalState) {\n this.throwWithContext(\n `Cannot update partial event for completed key '${data.key}'`,\n LinePrefixParserError.Reason.AlreadyCompleted,\n );\n }\n if (!(data.key in this.partialState)) {\n this.partialState[data.key] = \"\";\n }\n this.partialState[data.key] += data.delta;\n if (!this.options.silentNodes?.includes(data.key)) {\n await this.emitter.emit(\"partialUpdate\", data);\n }\n }\n\n protected async emitFinalUpdate(key: StringKey<T>, field: ParserField<any, any>) {\n if (key in this.finalState) {\n this.throwWithContext(\n `Duplicated key '${key}'`,\n LinePrefixParserError.Reason.AlreadyCompleted,\n );\n }\n\n try {\n const value = field.get();\n this.finalState[key] = value;\n if (!this.options.silentNodes?.includes(key)) {\n await this.emitter.emit(\"update\", {\n key,\n field,\n value,\n });\n }\n } catch (e) {\n if (e instanceof ZodError) {\n this.throwWithContext(\n `Value for '${key}' cannot be retrieved because it's value does not adhere to the appropriate schema.`,\n LinePrefixParserError.Reason.InvalidSchema,\n { errors: [e] },\n );\n }\n throw e;\n }\n }\n\n @Cache()\n protected get normalizedNodes() {\n return entries(this.nodes)\n .sort(([_, a], [__, b]) => a.prefix.length - b.prefix.length)\n .map(([key, value]) => {\n return [key, { lowerCasePrefix: value.prefix.toLowerCase(), ref: value }] as const;\n });\n }\n\n protected extractLine(line: string): ExtractedLine<T> | null {\n const trimmedLine = trimLeftSpaces(line);\n if (!trimmedLine) {\n return null;\n }\n\n for (const [key, node] of this.normalizedNodes) {\n const partial = node.lowerCasePrefix.length > trimmedLine.length;\n const [a, b] = partial\n ? [node.lowerCasePrefix, trimmedLine]\n : [trimmedLine, node.lowerCasePrefix];\n\n if (a.toLowerCase().startsWith(b.toLowerCase())) {\n return {\n key: key as StringKey<T>,\n value: partial ? trimmedLine : trimLeftSpaces(a.substring(b.length)),\n partial,\n };\n }\n }\n return null;\n }\n\n createSnapshot() {\n return {\n nodes: shallowCopy(this.nodes),\n lines: shallowCopy(this.lines),\n emitter: this.emitter,\n done: this.done,\n lastNodeKey: this.lastNodeKey,\n options: this.options,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LinePrefixParser {\n export type infer<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> = {\n [K in keyof T]: ParserField.inferValue<T[K][\"field\"]>;\n };\n export type inferPartial<\n T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>,\n > = {\n [K in StringKey<T>]: ParserField.inferPartialValue<T[K][\"field\"]>;\n };\n\n export type inferCallback<T> =\n T extends LinePrefixParser<any> ? (T[\"emitter\"] extends Emitter<infer L> ? L : never) : never;\n\n export type inferOutput<T> =\n T extends LinePrefixParser<infer P> ? LinePrefixParser.infer<P> : never;\n\n export type inferPartialOutput<T> =\n T extends LinePrefixParser<infer P> ? LinePrefixParser.inferPartial<P> : never;\n\n export type define<T extends Record<string, ParserField<any, any>>> = {\n [K in StringKey<T>]: ParserNode<StringKey<T>, T[K]>;\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/parsers/linePrefix.ts"],"names":["NEW_LINE_CHARACTER","trimLeftSpaces","value","replace","linesToString","lines","reduce","acc","newLine","concat","LinePrefixParser","Serializable","emitter","Emitter","creator","namespace","excludedLines","done","lastNodeKey","finalState","partialState","isDone","nodes","options","hasStartNode","hasEndNode","key","next","isStart","isEnd","entries","Boolean","nextKey","ValueError","fork","customizer","add","chunk","split","forEach","line","i","arr","isFirstLine","length","push","at","isLastLine","lastNode","isTerminationNode","parsedLine","extractLine","partial","shift","includes","endOnRepeat","end","throwWithContext","LinePrefixParserError","Reason","InvalidTransition","emitFinalUpdate","field","waitForStartNode","NotStartNode","node","write","emitPartialUpdate","getPartial","delta","raw","message","reason","extra","join","errors","context","fallback","stash","splice","Infinity","map","prefix","NoDataReceived","currentNode","NotEndNode","Promise","allSettled","Object","values","data","AlreadyCompleted","silentNodes","emit","get","e","ZodError","InvalidSchema","normalizedNodes","sort","_","a","__","b","lowerCasePrefix","toLowerCase","ref","trimmedLine","startsWith","substring","createSnapshot","shallowCopy","loadSnapshot","snapshot","assign"],"mappings":"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","file":"linePrefix.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { entries } from \"remeda\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ParserField } from \"@/parsers/field.js\";\nimport { Callback, InferCallbackValue } from \"@/emitter/types.js\";\nimport { ZodError } from \"zod\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { LinePrefixParserError } from \"@/parsers/errors.js\";\nexport * from \"@/parsers/errors.js\";\n\nexport interface ParserNode<T extends string, P extends ParserField<any, any>> {\n prefix: string;\n next: readonly T[];\n isStart?: boolean;\n isEnd?: boolean;\n field: P;\n}\n\ntype Customizer<T extends NonNullable<unknown>, T2 extends NonNullable<unknown> = T> = (\n nodes: T,\n options: Options<T>,\n) => { nodes: T2; options: Options<T2> };\n\ntype StringKey<T extends NonNullable<unknown>> = Extract<keyof T, string>;\n\ninterface Callbacks<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> {\n update: Callback<\n {\n [K in StringKey<T>]: {\n key: K;\n value: ParserField.inferValue<T[K][\"field\"]>;\n field: T[K][\"field\"];\n };\n }[StringKey<T>]\n >;\n partialUpdate: Callback<\n {\n [K in StringKey<T>]: {\n key: K;\n delta: string;\n value: ParserField.inferPartialValue<T[K][\"field\"]>;\n field: T[K][\"field\"];\n };\n }[StringKey<T>]\n >;\n}\n\ninterface Line {\n value: string;\n newLine: boolean;\n}\n\nconst NEW_LINE_CHARACTER = \"\\n\" as const;\n\ninterface ExtractedLine<T extends NonNullable<unknown>> {\n key: StringKey<T>;\n value: string;\n partial: boolean;\n}\n\nconst trimLeftSpaces = (value: string) => value.replace(/^\\s*/g, \"\");\nconst linesToString = (lines: Line[]) =>\n lines.reduce(\n (acc, { newLine, value }) => `${acc}${newLine ? NEW_LINE_CHARACTER.concat(value) : value}`,\n \"\",\n );\n\ninterface Options<T extends NonNullable<unknown>> {\n fallback?: (value: string) => readonly { key: StringKey<T>; value: string }[];\n endOnRepeat?: boolean;\n waitForStartNode?: boolean;\n silentNodes?: StringKey<T>[];\n}\n\ntype Input<K extends string = string> = Record<string, ParserNode<K, ParserField<any, any>>>;\n\nexport class LinePrefixParser<T extends Input<StringKey<T>>> extends Serializable {\n public readonly emitter = new Emitter<Callbacks<T>>({\n creator: this,\n namespace: [\"agent\", \"parser\", \"line\"],\n });\n\n protected readonly lines: Line[] = [];\n protected readonly excludedLines: Line[] = [];\n protected done = false;\n protected lastNodeKey: StringKey<T> | null = null;\n\n public readonly finalState = {} as LinePrefixParser.infer<T>;\n public readonly partialState = {} as Partial<Record<StringKey<T>, string>>;\n\n get isDone() {\n return this.done;\n }\n\n constructor(\n protected readonly nodes: T,\n protected readonly options: Options<T> = {},\n ) {\n super();\n\n let hasStartNode = false;\n let hasEndNode = false;\n\n for (const [key, { next, isStart, isEnd }] of entries(nodes ?? {})) {\n hasStartNode = Boolean(hasStartNode || isStart);\n hasEndNode = Boolean(hasEndNode || isEnd);\n\n for (const nextKey of next) {\n if (key === nextKey) {\n throw new ValueError(`Node '${key}' cannot point to itself.`);\n }\n if (!(nextKey in nodes)) {\n throw new ValueError(\n `Node '${key}' contains a transition to non-existing node '${nextKey}'.`,\n );\n }\n }\n }\n\n if (!hasStartNode) {\n throw new ValueError(`At least one start node must be provided!`);\n }\n if (!hasEndNode) {\n throw new ValueError(`At least one end node must be provided!`);\n }\n }\n\n fork<R extends T = T>(customizer: Customizer<T, R>) {\n const { nodes, options } = customizer(this.nodes, this.options);\n return new LinePrefixParser(nodes, options);\n }\n\n async add(chunk: string) {\n if (!chunk || this.done) {\n return;\n }\n\n chunk.split(NEW_LINE_CHARACTER).forEach((line, i, arr) => {\n const isFirstLine = i === 0;\n\n if (isFirstLine) {\n if (this.lines.length === 0) {\n this.lines.push({ newLine: false, value: line });\n } else {\n this.lines.at(-1)!.value += line;\n }\n } else {\n this.lines.push({ newLine: arr.length > 1, value: line });\n }\n });\n\n while (this.lines.length > 0) {\n const line = this.lines[0];\n const isLastLine = this.lines.length === 1;\n\n const lastNode = this.lastNodeKey ? this.nodes[this.lastNodeKey] : null;\n const isTerminationNode = lastNode\n ? Boolean(lastNode.isEnd && lastNode.next.length === 0)\n : false;\n\n const parsedLine =\n isTerminationNode || (lastNode && !line.newLine) ? null : this.extractLine(line.value);\n\n if (isLastLine && (parsedLine?.partial || !line.value)) {\n break;\n }\n this.lines.shift();\n\n if (parsedLine && !parsedLine.partial) {\n if (lastNode) {\n if (!lastNode.next.includes(parsedLine.key)) {\n if (parsedLine.key in this.finalState && this.options.endOnRepeat && lastNode.isEnd) {\n await this.end();\n return;\n }\n\n this.throwWithContext(\n `Transition from '${this.lastNodeKey}' to '${parsedLine.key}' does not exist!`,\n LinePrefixParserError.Reason.InvalidTransition,\n { line },\n );\n }\n\n await this.emitFinalUpdate(this.lastNodeKey!, lastNode.field);\n } else if (!this.nodes[parsedLine.key].isStart) {\n if (!this.options.waitForStartNode) {\n this.throwWithContext(\n `Parsed text line corresponds to a node \"${parsedLine.key}\" which is not a start node!`,\n LinePrefixParserError.Reason.NotStartNode,\n { line },\n );\n }\n this.excludedLines.push(line);\n continue;\n }\n\n const node = this.nodes[parsedLine.key];\n node.field.write(parsedLine.value);\n await this.emitPartialUpdate({\n key: parsedLine.key,\n value: node.field.getPartial(),\n delta: parsedLine.value,\n field: node.field,\n });\n this.lastNodeKey = parsedLine.key;\n } else if (this.lastNodeKey) {\n if (!this.nodes[this.lastNodeKey].field.raw) {\n line.value = trimLeftSpaces(line.value);\n }\n if (line.newLine) {\n line.value = `${NEW_LINE_CHARACTER}${line.value}`;\n }\n\n const node = this.nodes[this.lastNodeKey];\n node.field.write(line.value);\n await this.emitPartialUpdate({\n key: this.lastNodeKey,\n value: node.field.getPartial(),\n delta: line.value,\n field: node.field,\n });\n } else {\n this.excludedLines.push(line);\n }\n }\n }\n\n protected throwWithContext(\n message: string,\n reason: ValueOf<typeof LinePrefixParserError.Reason>,\n extra: { line?: Line; errors?: Error[] } = {},\n ): never {\n throw new LinePrefixParserError(\n [`The generated output does not adhere to the schema.`, message].join(NEW_LINE_CHARACTER),\n extra.errors ?? [],\n {\n reason,\n context: {\n lines: linesToString(this.lines.concat(extra.line ? [extra.line] : [])),\n excludedLines: linesToString(this.excludedLines),\n finalState: this.finalState,\n partialState: this.partialState,\n },\n },\n );\n }\n\n async end() {\n if (this.done) {\n return this.finalState;\n }\n\n if (!this.lastNodeKey && this.options.fallback) {\n const stash = linesToString([\n ...this.excludedLines.splice(0, Infinity),\n ...this.lines.splice(0, Infinity),\n ]);\n\n const nodes = this.options.fallback(stash);\n await this.add(\n nodes.map((node) => `${this.nodes[node.key].prefix}${node.value}`).join(NEW_LINE_CHARACTER),\n );\n }\n\n this.done = true;\n\n if (!this.lastNodeKey) {\n this.throwWithContext(\n \"Nothing valid has been parsed yet!\",\n LinePrefixParserError.Reason.NoDataReceived,\n );\n }\n\n const stash = linesToString(this.lines);\n this.lines.length = 0;\n\n const field = this.nodes[this.lastNodeKey].field!;\n if (stash) {\n field.write(stash);\n await this.emitPartialUpdate({\n key: this.lastNodeKey,\n value: field.getPartial(),\n delta: stash,\n field,\n });\n }\n await this.emitFinalUpdate(this.lastNodeKey, field);\n\n const currentNode = this.nodes[this.lastNodeKey];\n if (!currentNode.isEnd) {\n this.throwWithContext(\n `Node '${this.lastNodeKey}' is not an end node.`,\n LinePrefixParserError.Reason.NotEndNode,\n );\n }\n\n await Promise.allSettled(Object.values(this.nodes).map(({ field }) => field.end()));\n return this.finalState;\n }\n\n protected async emitPartialUpdate(data: InferCallbackValue<Callbacks<T>[\"partialUpdate\"]>) {\n if (data.key in this.finalState) {\n this.throwWithContext(\n `Cannot update partial event for completed key '${data.key}'`,\n LinePrefixParserError.Reason.AlreadyCompleted,\n );\n }\n if (!(data.key in this.partialState)) {\n this.partialState[data.key] = \"\";\n }\n this.partialState[data.key] += data.delta;\n if (!this.options.silentNodes?.includes(data.key)) {\n await this.emitter.emit(\"partialUpdate\", data);\n }\n }\n\n protected async emitFinalUpdate(key: StringKey<T>, field: ParserField<any, any>) {\n if (key in this.finalState) {\n this.throwWithContext(\n `Duplicated key '${key}'`,\n LinePrefixParserError.Reason.AlreadyCompleted,\n );\n }\n\n try {\n const value = field.get();\n this.finalState[key] = value;\n if (!this.options.silentNodes?.includes(key)) {\n await this.emitter.emit(\"update\", {\n key,\n field,\n value,\n });\n }\n } catch (e) {\n if (e instanceof ZodError) {\n this.throwWithContext(\n `Value for '${key}' cannot be retrieved because it's value does not adhere to the appropriate schema.`,\n LinePrefixParserError.Reason.InvalidSchema,\n { errors: [e] },\n );\n }\n throw e;\n }\n }\n\n @Cache()\n protected get normalizedNodes() {\n return entries(this.nodes)\n .sort(([_, a], [__, b]) => a.prefix.length - b.prefix.length)\n .map(([key, value]) => {\n return [key, { lowerCasePrefix: value.prefix.toLowerCase(), ref: value }] as const;\n });\n }\n\n protected extractLine(line: string): ExtractedLine<T> | null {\n const trimmedLine = trimLeftSpaces(line);\n if (!trimmedLine) {\n return null;\n }\n\n for (const [key, node] of this.normalizedNodes) {\n const partial = node.lowerCasePrefix.length > trimmedLine.length;\n const [a, b] = partial\n ? [node.lowerCasePrefix, trimmedLine]\n : [trimmedLine, node.lowerCasePrefix];\n\n if (a.toLowerCase().startsWith(b.toLowerCase())) {\n return {\n key: key as StringKey<T>,\n value: partial ? trimmedLine : trimLeftSpaces(a.substring(b.length)),\n partial,\n };\n }\n }\n return null;\n }\n\n createSnapshot() {\n return {\n nodes: shallowCopy(this.nodes),\n lines: shallowCopy(this.lines),\n emitter: this.emitter,\n done: this.done,\n lastNodeKey: this.lastNodeKey,\n options: this.options,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LinePrefixParser {\n export type infer<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> = {\n [K in keyof T]: ParserField.inferValue<T[K][\"field\"]>;\n };\n export type inferPartial<\n T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>,\n > = {\n [K in StringKey<T>]: ParserField.inferPartialValue<T[K][\"field\"]>;\n };\n\n export type inferCallback<T> =\n T extends LinePrefixParser<any> ? (T[\"emitter\"] extends Emitter<infer L> ? L : never) : never;\n\n export type inferOutput<T> =\n T extends LinePrefixParser<infer P> ? LinePrefixParser.infer<P> : never;\n\n export type inferPartialOutput<T> =\n T extends LinePrefixParser<infer P> ? LinePrefixParser.inferPartial<P> : never;\n\n export type define<T extends Record<string, ParserField<any, any>>> = {\n [K in StringKey<T>]: ParserNode<StringKey<T>, T[K]>;\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-D5Mu0EEH.cjs';
1
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-DWEsd-ud.cjs';
2
2
  import { Serializable } from '../internals/serializable.cjs';
3
3
  import { ParserField } from './field.cjs';
4
4
  import { ValueOf } from '../internals/types.cjs';
@@ -11,18 +11,7 @@ import '../errors.cjs';
11
11
 
12
12
  /**
13
13
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
14
- *
15
- * Licensed under the Apache License, Version 2.0 (the "License");
16
- * you may not use this file except in compliance with the License.
17
- * You may obtain a copy of the License at
18
- *
19
- * http://www.apache.org/licenses/LICENSE-2.0
20
- *
21
- * Unless required by applicable law or agreed to in writing, software
22
- * distributed under the License is distributed on an "AS IS" BASIS,
23
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
- * See the License for the specific language governing permissions and
25
- * limitations under the License.
14
+ * SPDX-License-Identifier: Apache-2.0
26
15
  */
27
16
 
28
17
  interface ParserNode<T extends string, P extends ParserField<any, any>> {
@@ -1,4 +1,4 @@
1
- import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-C3dO-s2P.js';
1
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-C9nwGLt6.js';
2
2
  import { Serializable } from '../internals/serializable.js';
3
3
  import { ParserField } from './field.js';
4
4
  import { ValueOf } from '../internals/types.js';
@@ -11,18 +11,7 @@ import '../errors.js';
11
11
 
12
12
  /**
13
13
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
14
- *
15
- * Licensed under the Apache License, Version 2.0 (the "License");
16
- * you may not use this file except in compliance with the License.
17
- * You may obtain a copy of the License at
18
- *
19
- * http://www.apache.org/licenses/LICENSE-2.0
20
- *
21
- * Unless required by applicable law or agreed to in writing, software
22
- * distributed under the License is distributed on an "AS IS" BASIS,
23
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
- * See the License for the specific language governing permissions and
25
- * limitations under the License.
14
+ * SPDX-License-Identifier: Apache-2.0
26
15
  */
27
16
 
28
17
  interface ParserNode<T extends string, P extends ParserField<any, any>> {
@@ -30,25 +30,25 @@ class LinePrefixParser extends Serializable {
30
30
  }
31
31
  nodes;
32
32
  options;
33
- emitter;
34
- lines;
35
- excludedLines;
36
- done;
37
- lastNodeKey;
38
- finalState;
39
- partialState;
33
+ emitter = new Emitter({
34
+ creator: this,
35
+ namespace: [
36
+ "agent",
37
+ "parser",
38
+ "line"
39
+ ]
40
+ });
41
+ lines = [];
42
+ excludedLines = [];
43
+ done = false;
44
+ lastNodeKey = null;
45
+ finalState = {};
46
+ partialState = {};
40
47
  get isDone() {
41
48
  return this.done;
42
49
  }
43
50
  constructor(nodes, options = {}) {
44
- super(), this.nodes = nodes, this.options = options, this.emitter = new Emitter({
45
- creator: this,
46
- namespace: [
47
- "agent",
48
- "parser",
49
- "line"
50
- ]
51
- }), this.lines = [], this.excludedLines = [], this.done = false, this.lastNodeKey = null, this.finalState = {}, this.partialState = {};
51
+ super(), this.nodes = nodes, this.options = options;
52
52
  let hasStartNode = false;
53
53
  let hasEndNode = false;
54
54
  for (const [key, { next, isStart, isEnd }] of entries(nodes ?? {})) {