beeai-framework 0.1.20 → 0.1.22

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 (485) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs +4 -4
  2. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  3. package/dist/adapters/a2a/agents/agent.d.cts +6 -10
  4. package/dist/adapters/a2a/agents/agent.d.ts +6 -10
  5. package/dist/adapters/a2a/agents/agent.js +4 -4
  6. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  7. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  8. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  9. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  10. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  11. package/dist/adapters/a2a/agents/utils.cjs +2 -2
  12. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  13. package/dist/adapters/a2a/agents/utils.js +2 -2
  14. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  15. package/dist/adapters/a2a/serve/agent_executor.cjs +1 -3
  16. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  17. package/dist/adapters/a2a/serve/agent_executor.d.cts +4 -3
  18. package/dist/adapters/a2a/serve/agent_executor.d.ts +4 -3
  19. package/dist/adapters/a2a/serve/agent_executor.js +1 -3
  20. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  21. package/dist/adapters/a2a/serve/server.cjs +15 -0
  22. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  23. package/dist/adapters/a2a/serve/server.d.cts +4 -2
  24. package/dist/adapters/a2a/serve/server.d.ts +4 -2
  25. package/dist/adapters/a2a/serve/server.js +15 -0
  26. package/dist/adapters/a2a/serve/server.js.map +1 -1
  27. package/dist/adapters/acp/agents/agent.d.cts +6 -10
  28. package/dist/adapters/acp/agents/agent.d.ts +6 -10
  29. package/dist/adapters/acp/agents/events.d.cts +1 -1
  30. package/dist/adapters/acp/agents/events.d.ts +1 -1
  31. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.cjs +4 -4
  32. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -0
  33. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.cts +18 -16
  34. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.ts +18 -16
  35. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.js +4 -4
  36. package/dist/adapters/agentstack/agents/agent.js.map +1 -0
  37. package/dist/adapters/agentstack/agents/events.d.cts +23 -0
  38. package/dist/adapters/agentstack/agents/events.d.ts +23 -0
  39. package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.cts +4 -4
  40. package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.ts +4 -4
  41. package/dist/adapters/amazon-bedrock/backend/chat.cjs +3 -2
  42. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  43. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +5 -6
  44. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +5 -6
  45. package/dist/adapters/amazon-bedrock/backend/chat.js +3 -2
  46. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  47. package/dist/adapters/amazon-bedrock/backend/embedding.cjs +2 -2
  48. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  49. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +4 -4
  50. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +4 -4
  51. package/dist/adapters/amazon-bedrock/backend/embedding.js +2 -2
  52. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  53. package/dist/adapters/anthropic/backend/chat.cjs +3 -2
  54. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  55. package/dist/adapters/anthropic/backend/chat.d.cts +5 -6
  56. package/dist/adapters/anthropic/backend/chat.d.ts +5 -6
  57. package/dist/adapters/anthropic/backend/chat.js +3 -2
  58. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  59. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/azure-openai/backend/chat.cjs +3 -2
  62. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  63. package/dist/adapters/azure-openai/backend/chat.d.cts +5 -6
  64. package/dist/adapters/azure-openai/backend/chat.d.ts +5 -6
  65. package/dist/adapters/azure-openai/backend/chat.js +3 -2
  66. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  67. package/dist/adapters/azure-openai/backend/embedding.cjs +2 -2
  68. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  69. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -3
  70. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -3
  71. package/dist/adapters/azure-openai/backend/embedding.js +2 -2
  72. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  73. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  74. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  75. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  76. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  77. package/dist/adapters/google-vertex/backend/chat.cjs +3 -2
  78. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  79. package/dist/adapters/google-vertex/backend/chat.d.cts +5 -6
  80. package/dist/adapters/google-vertex/backend/chat.d.ts +5 -6
  81. package/dist/adapters/google-vertex/backend/chat.js +3 -2
  82. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  83. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  84. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  85. package/dist/adapters/groq/backend/chat.cjs +3 -2
  86. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  87. package/dist/adapters/groq/backend/chat.d.cts +5 -6
  88. package/dist/adapters/groq/backend/chat.d.ts +5 -6
  89. package/dist/adapters/groq/backend/chat.js +3 -2
  90. package/dist/adapters/groq/backend/chat.js.map +1 -1
  91. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  92. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  93. package/dist/adapters/langchain/backend/chat.cjs +6 -5
  94. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  95. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  96. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  97. package/dist/adapters/langchain/backend/chat.js +6 -5
  98. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/tools.d.cts +1 -1
  102. package/dist/adapters/langchain/tools.d.ts +1 -1
  103. package/dist/adapters/ollama/backend/chat.cjs +1 -4
  104. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  105. package/dist/adapters/ollama/backend/chat.d.cts +4 -4
  106. package/dist/adapters/ollama/backend/chat.d.ts +4 -4
  107. package/dist/adapters/ollama/backend/chat.js +1 -4
  108. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  109. package/dist/adapters/ollama/backend/client.cjs +2 -2
  110. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  111. package/dist/adapters/ollama/backend/client.d.cts +1 -1
  112. package/dist/adapters/ollama/backend/client.d.ts +1 -1
  113. package/dist/adapters/ollama/backend/client.js +1 -1
  114. package/dist/adapters/ollama/backend/client.js.map +1 -1
  115. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  116. package/dist/adapters/ollama/backend/embedding.d.cts +3 -3
  117. package/dist/adapters/ollama/backend/embedding.d.ts +3 -3
  118. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  119. package/dist/adapters/openai/backend/chat.cjs +3 -2
  120. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  121. package/dist/adapters/openai/backend/chat.d.cts +5 -6
  122. package/dist/adapters/openai/backend/chat.d.ts +5 -6
  123. package/dist/adapters/openai/backend/chat.js +3 -2
  124. package/dist/adapters/openai/backend/chat.js.map +1 -1
  125. package/dist/adapters/openai/backend/client.cjs +2 -11
  126. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  127. package/dist/adapters/openai/backend/client.js +3 -12
  128. package/dist/adapters/openai/backend/client.js.map +1 -1
  129. package/dist/adapters/openai/backend/embedding.cjs +2 -2
  130. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  131. package/dist/adapters/openai/backend/embedding.d.cts +4 -4
  132. package/dist/adapters/openai/backend/embedding.d.ts +4 -4
  133. package/dist/adapters/openai/backend/embedding.js +2 -2
  134. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  135. package/dist/adapters/vercel/backend/chat.cjs +26 -21
  136. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  137. package/dist/adapters/vercel/backend/chat.d.cts +6 -4
  138. package/dist/adapters/vercel/backend/chat.d.ts +6 -4
  139. package/dist/adapters/vercel/backend/chat.js +27 -22
  140. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  141. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  142. package/dist/adapters/vercel/backend/embedding.d.cts +3 -3
  143. package/dist/adapters/vercel/backend/embedding.d.ts +3 -3
  144. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  145. package/dist/adapters/vercel/backend/utils.cjs +26 -0
  146. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  147. package/dist/adapters/vercel/backend/utils.d.cts +20 -2
  148. package/dist/adapters/vercel/backend/utils.d.ts +20 -2
  149. package/dist/adapters/vercel/backend/utils.js +25 -1
  150. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  151. package/dist/adapters/watsonx/backend/chat.cjs +10 -4
  152. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  153. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  154. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  155. package/dist/adapters/watsonx/backend/chat.js +10 -4
  156. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  157. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  158. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  159. package/dist/adapters/xai/backend/chat.cjs +3 -2
  160. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  161. package/dist/adapters/xai/backend/chat.d.cts +5 -6
  162. package/dist/adapters/xai/backend/chat.d.ts +5 -6
  163. package/dist/adapters/xai/backend/chat.js +3 -2
  164. package/dist/adapters/xai/backend/chat.js.map +1 -1
  165. package/dist/{agent-I0Saf4A1.d.cts → agent-BMfyig7X.d.cts} +5 -4
  166. package/dist/{agent-CtrCeN7o.d.ts → agent-Dxw8AGWb.d.ts} +5 -4
  167. package/dist/agents/base.cjs +5 -2
  168. package/dist/agents/base.cjs.map +1 -1
  169. package/dist/agents/base.d.cts +2 -2
  170. package/dist/agents/base.d.ts +2 -2
  171. package/dist/agents/base.js +5 -2
  172. package/dist/agents/base.js.map +1 -1
  173. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  174. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  175. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  176. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  177. package/dist/agents/experimental/streamlit/agent.d.cts +8 -12
  178. package/dist/agents/experimental/streamlit/agent.d.ts +8 -12
  179. package/dist/agents/react/agent.d.cts +5 -4
  180. package/dist/agents/react/agent.d.ts +5 -4
  181. package/dist/agents/react/prompts.d.cts +1 -1
  182. package/dist/agents/react/prompts.d.ts +1 -1
  183. package/dist/agents/react/runners/base.cjs.map +1 -1
  184. package/dist/agents/react/runners/base.d.cts +5 -4
  185. package/dist/agents/react/runners/base.d.ts +5 -4
  186. package/dist/agents/react/runners/base.js.map +1 -1
  187. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  188. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  189. package/dist/agents/react/runners/deep-think/runner.d.cts +6 -5
  190. package/dist/agents/react/runners/deep-think/runner.d.ts +6 -5
  191. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  192. package/dist/agents/react/runners/default/runner.d.cts +6 -5
  193. package/dist/agents/react/runners/default/runner.d.ts +6 -5
  194. package/dist/agents/react/runners/default/runner.js.map +1 -1
  195. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  196. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  197. package/dist/agents/react/runners/granite/runner.cjs +4 -2
  198. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  199. package/dist/agents/react/runners/granite/runner.d.cts +6 -5
  200. package/dist/agents/react/runners/granite/runner.d.ts +6 -5
  201. package/dist/agents/react/runners/granite/runner.js +4 -2
  202. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  203. package/dist/agents/react/types.d.cts +3 -2
  204. package/dist/agents/react/types.d.ts +3 -2
  205. package/dist/agents/requirement/agent.cjs +162 -0
  206. package/dist/agents/requirement/agent.cjs.map +1 -0
  207. package/dist/agents/requirement/agent.d.cts +29 -0
  208. package/dist/agents/requirement/agent.d.ts +29 -0
  209. package/dist/agents/requirement/agent.js +160 -0
  210. package/dist/agents/requirement/agent.js.map +1 -0
  211. package/dist/agents/requirement/prompts.cjs +95 -0
  212. package/dist/agents/requirement/prompts.cjs.map +1 -0
  213. package/dist/agents/requirement/prompts.d.cts +107 -0
  214. package/dist/agents/requirement/prompts.d.ts +107 -0
  215. package/dist/agents/requirement/prompts.js +90 -0
  216. package/dist/agents/requirement/prompts.js.map +1 -0
  217. package/dist/agents/requirement/requirements/conditional.cjs +190 -0
  218. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -0
  219. package/dist/agents/requirement/requirements/conditional.d.cts +71 -0
  220. package/dist/agents/requirement/requirements/conditional.d.ts +71 -0
  221. package/dist/agents/requirement/requirements/conditional.js +188 -0
  222. package/dist/agents/requirement/requirements/conditional.js.map +1 -0
  223. package/dist/agents/requirement/requirements/requirement.cjs +107 -0
  224. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -0
  225. package/dist/agents/requirement/requirements/requirement.d.cts +59 -0
  226. package/dist/agents/requirement/requirements/requirement.d.ts +59 -0
  227. package/dist/agents/requirement/requirements/requirement.js +104 -0
  228. package/dist/agents/requirement/requirements/requirement.js.map +1 -0
  229. package/dist/agents/requirement/requirements/utils.cjs +74 -0
  230. package/dist/agents/requirement/requirements/utils.cjs.map +1 -0
  231. package/dist/agents/requirement/requirements/utils.d.cts +40 -0
  232. package/dist/agents/requirement/requirements/utils.d.ts +40 -0
  233. package/dist/agents/requirement/requirements/utils.js +69 -0
  234. package/dist/agents/requirement/requirements/utils.js.map +1 -0
  235. package/dist/agents/requirement/runner.cjs +252 -0
  236. package/dist/agents/requirement/runner.cjs.map +1 -0
  237. package/dist/agents/requirement/runner.d.cts +117 -0
  238. package/dist/agents/requirement/runner.d.ts +117 -0
  239. package/dist/agents/requirement/runner.js +250 -0
  240. package/dist/agents/requirement/runner.js.map +1 -0
  241. package/dist/agents/requirement/types.cjs +40 -0
  242. package/dist/agents/requirement/types.cjs.map +1 -0
  243. package/dist/agents/requirement/types.d.cts +24 -0
  244. package/dist/agents/requirement/types.d.ts +24 -0
  245. package/dist/agents/requirement/types.js +35 -0
  246. package/dist/agents/requirement/types.js.map +1 -0
  247. package/dist/agents/requirement/utils/llm.cjs +202 -0
  248. package/dist/agents/requirement/utils/llm.cjs.map +1 -0
  249. package/dist/agents/requirement/utils/llm.d.cts +50 -0
  250. package/dist/agents/requirement/utils/llm.d.ts +50 -0
  251. package/dist/agents/requirement/utils/llm.js +199 -0
  252. package/dist/agents/requirement/utils/llm.js.map +1 -0
  253. package/dist/agents/requirement/utils/tool.cjs +94 -0
  254. package/dist/agents/requirement/utils/tool.cjs.map +1 -0
  255. package/dist/agents/requirement/utils/tool.d.cts +24 -0
  256. package/dist/agents/requirement/utils/tool.d.ts +24 -0
  257. package/dist/agents/requirement/utils/tool.js +91 -0
  258. package/dist/agents/requirement/utils/tool.js.map +1 -0
  259. package/dist/agents/requirement/utils/toolCallChecker.cjs +61 -0
  260. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -0
  261. package/dist/agents/requirement/utils/toolCallChecker.d.cts +28 -0
  262. package/dist/agents/requirement/utils/toolCallChecker.d.ts +28 -0
  263. package/dist/agents/requirement/utils/toolCallChecker.js +59 -0
  264. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -0
  265. package/dist/agents/toolCalling/agent.cjs +9 -5
  266. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  267. package/dist/agents/toolCalling/agent.d.cts +8 -12
  268. package/dist/agents/toolCalling/agent.d.ts +8 -12
  269. package/dist/agents/toolCalling/agent.js +9 -5
  270. package/dist/agents/toolCalling/agent.js.map +1 -1
  271. package/dist/agents/toolCalling/types.d.cts +1 -1
  272. package/dist/agents/toolCalling/types.d.ts +1 -1
  273. package/dist/agents/types.d.cts +2 -2
  274. package/dist/agents/types.d.ts +2 -2
  275. package/dist/backend/backend.d.cts +2 -2
  276. package/dist/backend/backend.d.ts +2 -2
  277. package/dist/backend/chat.cjs +1 -1
  278. package/dist/backend/chat.cjs.map +1 -1
  279. package/dist/backend/chat.d.cts +2 -2
  280. package/dist/backend/chat.d.ts +2 -2
  281. package/dist/backend/chat.js +1 -1
  282. package/dist/backend/chat.js.map +1 -1
  283. package/dist/backend/core.d.cts +2 -2
  284. package/dist/backend/core.d.ts +2 -2
  285. package/dist/backend/embedding.d.cts +2 -2
  286. package/dist/backend/embedding.d.ts +2 -2
  287. package/dist/backend/message.cjs +59 -3
  288. package/dist/backend/message.cjs.map +1 -1
  289. package/dist/backend/message.d.cts +3 -0
  290. package/dist/backend/message.d.ts +3 -0
  291. package/dist/backend/message.js +59 -3
  292. package/dist/backend/message.js.map +1 -1
  293. package/dist/backend/utils.d.cts +2 -2
  294. package/dist/backend/utils.d.ts +2 -2
  295. package/dist/{base-BsY2baWy.d.ts → base-BurRTBA7.d.ts} +4 -2
  296. package/dist/{base-BP7v-NSL.d.cts → base-v-PYIq5G.d.cts} +4 -2
  297. package/dist/cache/fileCache.cjs.map +1 -1
  298. package/dist/cache/fileCache.js.map +1 -1
  299. package/dist/{chat-W9j8T6UU.d.ts → chat-BbCYMAdE.d.ts} +4 -2
  300. package/dist/{chat-CR4yfOR9.d.cts → chat-DB_cf15S.d.cts} +4 -2
  301. package/dist/context.cjs +22 -5
  302. package/dist/context.cjs.map +1 -1
  303. package/dist/context.d.cts +19 -6
  304. package/dist/context.d.ts +19 -6
  305. package/dist/context.js +23 -7
  306. package/dist/context.js.map +1 -1
  307. package/dist/emitter/emitter.cjs +19 -13
  308. package/dist/emitter/emitter.cjs.map +1 -1
  309. package/dist/emitter/emitter.d.cts +1 -1
  310. package/dist/emitter/emitter.d.ts +1 -1
  311. package/dist/emitter/emitter.js +19 -13
  312. package/dist/emitter/emitter.js.map +1 -1
  313. package/dist/emitter/types.d.cts +1 -1
  314. package/dist/emitter/types.d.ts +1 -1
  315. package/dist/{emitter-DWEsd-ud.d.cts → emitter-CGKd_-kK.d.cts} +6 -5
  316. package/dist/{emitter-C9nwGLt6.d.ts → emitter-CN7I4uSV.d.ts} +6 -5
  317. package/dist/index.d.cts +5 -5
  318. package/dist/index.d.ts +5 -5
  319. package/dist/internals/fetcher.d.cts +1 -1
  320. package/dist/internals/fetcher.d.ts +1 -1
  321. package/dist/internals/helpers/array.cjs +35 -0
  322. package/dist/internals/helpers/array.cjs.map +1 -1
  323. package/dist/internals/helpers/array.d.cts +6 -1
  324. package/dist/internals/helpers/array.d.ts +6 -1
  325. package/dist/internals/helpers/array.js +35 -1
  326. package/dist/internals/helpers/array.js.map +1 -1
  327. package/dist/internals/helpers/object.cjs +30 -5
  328. package/dist/internals/helpers/object.cjs.map +1 -1
  329. package/dist/internals/helpers/object.d.cts +3 -2
  330. package/dist/internals/helpers/object.d.ts +3 -2
  331. package/dist/internals/helpers/object.js +29 -5
  332. package/dist/internals/helpers/object.js.map +1 -1
  333. package/dist/internals/helpers/prototype.cjs +5 -0
  334. package/dist/internals/helpers/prototype.cjs.map +1 -1
  335. package/dist/internals/helpers/prototype.d.cts +2 -1
  336. package/dist/internals/helpers/prototype.d.ts +2 -1
  337. package/dist/internals/helpers/prototype.js +5 -1
  338. package/dist/internals/helpers/prototype.js.map +1 -1
  339. package/dist/internals/types.cjs.map +1 -1
  340. package/dist/internals/types.d.cts +1 -1
  341. package/dist/internals/types.d.ts +1 -1
  342. package/dist/internals/types.js.map +1 -1
  343. package/dist/logger/logger.cjs +8 -4
  344. package/dist/logger/logger.cjs.map +1 -1
  345. package/dist/logger/logger.d.cts +21 -15
  346. package/dist/logger/logger.d.ts +21 -15
  347. package/dist/logger/logger.js +6 -3
  348. package/dist/logger/logger.js.map +1 -1
  349. package/dist/logger/pretty.cjs +2 -2
  350. package/dist/logger/pretty.cjs.map +1 -1
  351. package/dist/logger/pretty.js +2 -2
  352. package/dist/logger/pretty.js.map +1 -1
  353. package/dist/memory/slidingMemory.d.cts +1 -1
  354. package/dist/memory/slidingMemory.d.ts +1 -1
  355. package/dist/memory/summarizeMemory.d.cts +2 -2
  356. package/dist/memory/summarizeMemory.d.ts +2 -2
  357. package/dist/middleware/trajectory.cjs +322 -0
  358. package/dist/middleware/trajectory.cjs.map +1 -0
  359. package/dist/middleware/trajectory.d.cts +115 -0
  360. package/dist/middleware/trajectory.d.ts +115 -0
  361. package/dist/middleware/trajectory.js +320 -0
  362. package/dist/middleware/trajectory.js.map +1 -0
  363. package/dist/parsers/linePrefix.cjs.map +1 -1
  364. package/dist/parsers/linePrefix.d.cts +4 -8
  365. package/dist/parsers/linePrefix.d.ts +4 -8
  366. package/dist/parsers/linePrefix.js.map +1 -1
  367. package/dist/serializer/serializer.cjs +5 -4
  368. package/dist/serializer/serializer.cjs.map +1 -1
  369. package/dist/serializer/serializer.d.cts +1 -1
  370. package/dist/serializer/serializer.d.ts +1 -1
  371. package/dist/serializer/serializer.js +5 -4
  372. package/dist/serializer/serializer.js.map +1 -1
  373. package/dist/serializer/utils.cjs +3 -0
  374. package/dist/serializer/utils.cjs.map +1 -1
  375. package/dist/serializer/utils.d.cts +1 -1
  376. package/dist/serializer/utils.d.ts +1 -1
  377. package/dist/serializer/utils.js +3 -0
  378. package/dist/serializer/utils.js.map +1 -1
  379. package/dist/{serializer-CQxucveV.d.ts → serializer-53t8gGQa.d.ts} +3 -2
  380. package/dist/{serializer-BKn50Vnx.d.cts → serializer-c51B2z6d.d.cts} +3 -2
  381. package/dist/template.cjs +20 -0
  382. package/dist/template.cjs.map +1 -1
  383. package/dist/template.d.cts +1 -0
  384. package/dist/template.d.ts +1 -0
  385. package/dist/template.js +20 -0
  386. package/dist/template.js.map +1 -1
  387. package/dist/tools/arxiv.cjs.map +1 -1
  388. package/dist/tools/arxiv.d.cts +1 -1
  389. package/dist/tools/arxiv.d.ts +1 -1
  390. package/dist/tools/arxiv.js.map +1 -1
  391. package/dist/tools/base.cjs.map +1 -1
  392. package/dist/tools/base.d.cts +3 -2
  393. package/dist/tools/base.d.ts +3 -2
  394. package/dist/tools/base.js.map +1 -1
  395. package/dist/tools/calculator.d.cts +1 -1
  396. package/dist/tools/calculator.d.ts +1 -1
  397. package/dist/tools/custom.d.cts +2 -2
  398. package/dist/tools/custom.d.ts +2 -2
  399. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  400. package/dist/tools/database/elasticsearch.d.cts +1 -1
  401. package/dist/tools/database/elasticsearch.d.ts +1 -1
  402. package/dist/tools/database/elasticsearch.js.map +1 -1
  403. package/dist/tools/database/milvus.cjs +3 -3
  404. package/dist/tools/database/milvus.cjs.map +1 -1
  405. package/dist/tools/database/milvus.d.cts +3 -3
  406. package/dist/tools/database/milvus.d.ts +3 -3
  407. package/dist/tools/database/milvus.js +3 -3
  408. package/dist/tools/database/milvus.js.map +1 -1
  409. package/dist/tools/database/qdrant.cjs +2 -2
  410. package/dist/tools/database/qdrant.cjs.map +1 -1
  411. package/dist/tools/database/qdrant.d.cts +1 -1
  412. package/dist/tools/database/qdrant.d.ts +1 -1
  413. package/dist/tools/database/qdrant.js +2 -2
  414. package/dist/tools/database/qdrant.js.map +1 -1
  415. package/dist/tools/database/sql.cjs.map +1 -1
  416. package/dist/tools/database/sql.d.cts +1 -1
  417. package/dist/tools/database/sql.d.ts +1 -1
  418. package/dist/tools/database/sql.js.map +1 -1
  419. package/dist/tools/llm.d.cts +2 -2
  420. package/dist/tools/llm.d.ts +2 -2
  421. package/dist/tools/mcp.d.cts +1 -1
  422. package/dist/tools/mcp.d.ts +1 -1
  423. package/dist/tools/openapi.d.cts +1 -1
  424. package/dist/tools/openapi.d.ts +1 -1
  425. package/dist/tools/python/output.d.cts +1 -1
  426. package/dist/tools/python/output.d.ts +1 -1
  427. package/dist/tools/python/python.d.cts +2 -2
  428. package/dist/tools/python/python.d.ts +2 -2
  429. package/dist/tools/search/base.cjs.map +1 -1
  430. package/dist/tools/search/base.d.cts +1 -1
  431. package/dist/tools/search/base.d.ts +1 -1
  432. package/dist/tools/search/base.js.map +1 -1
  433. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  434. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  435. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  436. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  437. package/dist/tools/search/googleSearch.cjs.map +1 -1
  438. package/dist/tools/search/googleSearch.d.cts +1 -1
  439. package/dist/tools/search/googleSearch.d.ts +1 -1
  440. package/dist/tools/search/googleSearch.js.map +1 -1
  441. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  442. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  443. package/dist/tools/search/wikipedia.cjs +25 -0
  444. package/dist/tools/search/wikipedia.cjs.map +1 -1
  445. package/dist/tools/search/wikipedia.d.cts +2 -3
  446. package/dist/tools/search/wikipedia.d.ts +2 -3
  447. package/dist/tools/search/wikipedia.js +23 -0
  448. package/dist/tools/search/wikipedia.js.map +1 -1
  449. package/dist/tools/similarity.d.cts +1 -1
  450. package/dist/tools/similarity.d.ts +1 -1
  451. package/dist/tools/think.cjs +52 -0
  452. package/dist/tools/think.cjs.map +1 -0
  453. package/dist/tools/think.d.cts +47 -0
  454. package/dist/tools/think.d.ts +47 -0
  455. package/dist/tools/think.js +50 -0
  456. package/dist/tools/think.js.map +1 -0
  457. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  458. package/dist/tools/weather/openMeteo.d.cts +1 -1
  459. package/dist/tools/weather/openMeteo.d.ts +1 -1
  460. package/dist/tools/weather/openMeteo.js.map +1 -1
  461. package/dist/tools/web/webCrawler.cjs.map +1 -1
  462. package/dist/tools/web/webCrawler.d.cts +1 -1
  463. package/dist/tools/web/webCrawler.d.ts +1 -1
  464. package/dist/tools/web/webCrawler.js.map +1 -1
  465. package/dist/types-BXkkbABd.d.ts +213 -0
  466. package/dist/types-Cx6f43du.d.cts +213 -0
  467. package/dist/version.cjs +1 -1
  468. package/dist/version.js +1 -1
  469. package/dist/workflows/agent.d.cts +3 -3
  470. package/dist/workflows/agent.d.ts +3 -3
  471. package/dist/workflows/workflow.d.cts +1 -1
  472. package/dist/workflows/workflow.d.ts +1 -1
  473. package/package.json +70 -69
  474. package/dist/adapters/beeai_platform/agents/agent.cjs.map +0 -1
  475. package/dist/adapters/beeai_platform/agents/agent.js.map +0 -1
  476. package/dist/adapters/beeai_platform/agents/events.d.cts +0 -23
  477. package/dist/adapters/beeai_platform/agents/events.d.ts +0 -23
  478. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs +0 -0
  479. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs.map +0 -0
  480. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js +0 -0
  481. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js.map +0 -0
  482. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs +0 -0
  483. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs.map +0 -0
  484. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js +0 -0
  485. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js.map +0 -0
@@ -0,0 +1,320 @@
1
+ import { Middleware, RunContext } from '../context.js';
2
+ import { Emitter } from '../emitter/emitter.js';
3
+ import { FrameworkError } from '../errors.js';
4
+ import { Logger } from '../logger/logger.js';
5
+ import { BaseAgent } from '../agents/base.js';
6
+ import { capitalize } from 'remeda';
7
+ import { ChatModel } from '../backend/chat.js';
8
+ import { Tool } from '../tools/base.js';
9
+ import { Requirement } from '../agents/requirement/requirements/requirement.js';
10
+ import { isPrimitive } from 'sequelize/lib/utils';
11
+ import { Serializer } from '../serializer/serializer.js';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ class GlobalTrajectoryMiddleware extends Middleware {
16
+ static {
17
+ __name(this, "GlobalTrajectoryMiddleware");
18
+ }
19
+ enabled;
20
+ included;
21
+ excluded;
22
+ cleanups = [];
23
+ target;
24
+ ctx = null;
25
+ pretty;
26
+ traceLevel = /* @__PURE__ */ new Map();
27
+ prefixByType;
28
+ matchNested;
29
+ emitterPriority;
30
+ formatter;
31
+ emitter;
32
+ constructor(options = {}) {
33
+ super();
34
+ this.enabled = options.enabled ?? true;
35
+ this.included = options.included ?? [];
36
+ this.excluded = options.excluded ?? [];
37
+ this.target = this.createTarget(options.target);
38
+ this.pretty = options.pretty ?? false;
39
+ this.matchNested = options.matchNested ?? true;
40
+ this.emitterPriority = options.emitterPriority ?? -1;
41
+ this.prefixByType = new Map([
42
+ [
43
+ BaseAgent,
44
+ "\u{1F916} "
45
+ ],
46
+ [
47
+ ChatModel,
48
+ "\u{1F4AC} "
49
+ ],
50
+ [
51
+ Tool,
52
+ "\u{1F6E0}\uFE0F "
53
+ ],
54
+ [
55
+ Requirement,
56
+ "\u{1F50E} "
57
+ ],
58
+ ...options.prefixByType ? Array.from(options.prefixByType.entries()) : []
59
+ ]);
60
+ this.formatter = options.formatter ?? ((x) => `${x.prefix}${x.className}[${x.instanceName || x.className}][${x.eventName}]`);
61
+ this.emitter = Emitter.root.child({
62
+ namespace: [
63
+ "middleware",
64
+ "globalTrajectory"
65
+ ]
66
+ });
67
+ }
68
+ /**
69
+ * Bind the middleware to a run context
70
+ */
71
+ bind(ctx) {
72
+ while (this.cleanups.length > 0) {
73
+ this.cleanups.pop()();
74
+ }
75
+ this.traceLevel.clear();
76
+ this.traceLevel.set(ctx.runId, {
77
+ relative: 0,
78
+ absolute: 0
79
+ });
80
+ this.ctx = ctx;
81
+ this.bindEmitter(ctx.emitter);
82
+ }
83
+ createTarget(input) {
84
+ if (input === null || input === void 0) {
85
+ return (msg) => console.log(msg);
86
+ } else if (input instanceof Logger) {
87
+ return (msg) => input.debug(msg);
88
+ } else {
89
+ return input;
90
+ }
91
+ }
92
+ bindEmitter(emitter) {
93
+ this.cleanups.push(emitter.match("*.*", (_, event) => this.logTraceId(event), {
94
+ matchNested: true
95
+ }));
96
+ const handleTopLevelEvent = /* @__PURE__ */ __name(async (data, meta) => {
97
+ if (!(meta.creator instanceof RunContext)) {
98
+ return;
99
+ }
100
+ if (!meta.trace) {
101
+ return;
102
+ }
103
+ this.logTraceId(meta);
104
+ if (!this.isAllowed(meta)) {
105
+ return;
106
+ }
107
+ if (!this.enabled) {
108
+ return;
109
+ }
110
+ const eventName = capitalize(meta.name);
111
+ await this[`onInternal${eventName}`].call(this, data, meta);
112
+ }, "handleTopLevelEvent");
113
+ this.cleanups.push(emitter.match((event) => [
114
+ "start",
115
+ "success",
116
+ "error",
117
+ "finish"
118
+ ].includes(event.name), handleTopLevelEvent, {
119
+ matchNested: false,
120
+ isBlocking: true,
121
+ priority: this.emitterPriority
122
+ }));
123
+ if (this.matchNested) {
124
+ const handleNestedEvent = /* @__PURE__ */ __name(async (data, meta) => {
125
+ if (!(meta.creator instanceof RunContext)) {
126
+ return;
127
+ }
128
+ if (meta.creator.emitter !== emitter) {
129
+ await handleTopLevelEvent(data, meta);
130
+ this.bindEmitter(meta.creator.emitter);
131
+ }
132
+ }, "handleNestedEvent");
133
+ this.cleanups.push(emitter.match((event) => event.name === "start", handleNestedEvent, {
134
+ matchNested: true,
135
+ isBlocking: true,
136
+ priority: this.emitterPriority
137
+ }));
138
+ }
139
+ }
140
+ logTraceId(meta) {
141
+ if (!meta.trace?.runId) {
142
+ return;
143
+ }
144
+ if (this.traceLevel.has(meta.trace.runId)) {
145
+ return;
146
+ }
147
+ if (meta.trace.parentRunId === meta.trace.runId) {
148
+ return;
149
+ }
150
+ if (meta.trace.parentRunId) {
151
+ const allowed = this.isAllowed(meta);
152
+ const parentTrace = this.traceLevel.get(meta.trace.parentRunId) ?? {
153
+ relative: 0,
154
+ absolute: 0
155
+ };
156
+ this.traceLevel.set(meta.trace.runId, {
157
+ relative: parentTrace.relative + (allowed ? 1 : 0),
158
+ absolute: parentTrace.absolute + 1
159
+ });
160
+ }
161
+ }
162
+ isAllowed(meta) {
163
+ let target = meta.creator;
164
+ if (target instanceof RunContext) {
165
+ target = target.instance;
166
+ }
167
+ for (const excluded of this.excluded) {
168
+ if (target instanceof excluded) {
169
+ return false;
170
+ }
171
+ }
172
+ if (this.included.length === 0) {
173
+ return true;
174
+ }
175
+ return this.included.some((included) => target instanceof included);
176
+ }
177
+ extractName(meta) {
178
+ let target = meta.creator;
179
+ if (target instanceof RunContext) {
180
+ target = target.instance;
181
+ }
182
+ const className = target.constructor.name;
183
+ let targetName = null;
184
+ if (target instanceof BaseAgent && target.meta?.name) {
185
+ targetName = target.meta.name;
186
+ } else if ("name" in target && typeof target.name === "string") {
187
+ targetName = target.name;
188
+ }
189
+ let prefix = "";
190
+ for (const [type, typePrefix] of this.prefixByType.entries()) {
191
+ if (target instanceof type) {
192
+ prefix = typePrefix;
193
+ break;
194
+ }
195
+ }
196
+ const input = {
197
+ prefix,
198
+ className,
199
+ instanceName: targetName,
200
+ eventName: meta.name
201
+ };
202
+ return this.formatter(input);
203
+ }
204
+ formatPrefix(meta) {
205
+ if (!meta.trace) {
206
+ return "";
207
+ }
208
+ const indent = this.getTraceLevel(meta, "self").relative;
209
+ const indentParent = this.getTraceLevel(meta, "parent").relative;
210
+ const indentDiff = indent - indentParent;
211
+ let prefix = "";
212
+ prefix += " ".repeat(indentParent * 2);
213
+ if (meta.name !== "start" && indent) {
214
+ prefix += "<";
215
+ }
216
+ prefix += "--".repeat(indentDiff);
217
+ if (meta.name === "start" && prefix && indent) {
218
+ prefix += ">";
219
+ }
220
+ if (prefix) {
221
+ prefix = `${prefix} `;
222
+ }
223
+ const name = this.extractName(meta);
224
+ return `${prefix}${name}: `;
225
+ }
226
+ getTraceLevel(meta, type = "self") {
227
+ if (!meta.trace) {
228
+ return {
229
+ relative: 0,
230
+ absolute: 0
231
+ };
232
+ }
233
+ const runId = type === "parent" ? meta.trace.parentRunId || "" : meta.trace.runId;
234
+ return this.traceLevel.get(runId) ?? {
235
+ relative: 0,
236
+ absolute: 0
237
+ };
238
+ }
239
+ async formatPayload(value) {
240
+ if (isPrimitive(value)) {
241
+ return String(value);
242
+ }
243
+ if (value instanceof FrameworkError) {
244
+ return value.explain();
245
+ }
246
+ const serialized = await Serializer.serialize(value);
247
+ return JSON.stringify(await Serializer.deserialize(serialized, [], true), /* @__PURE__ */ (() => {
248
+ const excludedKeys = /* @__PURE__ */ new Set([
249
+ "emitter",
250
+ "cleanups",
251
+ "creator",
252
+ "listeners"
253
+ ]);
254
+ return (key, value2) => {
255
+ if (excludedKeys.has(key)) {
256
+ return void 0;
257
+ }
258
+ if (value2 && value2 instanceof Tool) {
259
+ return value2.name;
260
+ }
261
+ return value2;
262
+ };
263
+ })(), this.pretty ? 2 : void 0);
264
+ }
265
+ async onInternalStart(payload, meta) {
266
+ const prefix = this.formatPrefix(meta);
267
+ const message = `${prefix}${await this.formatPayload(payload.input)}`;
268
+ await this.emitter.emit("start", {
269
+ message,
270
+ level: this.getTraceLevel(meta),
271
+ origin: [
272
+ payload,
273
+ meta
274
+ ]
275
+ });
276
+ this.target(message);
277
+ }
278
+ async onInternalSuccess(payload, meta) {
279
+ const prefix = this.formatPrefix(meta);
280
+ const message = `${prefix}${await this.formatPayload(payload)}`;
281
+ await this.emitter.emit("success", {
282
+ message,
283
+ level: this.getTraceLevel(meta),
284
+ origin: [
285
+ payload,
286
+ meta
287
+ ]
288
+ });
289
+ this.target(message);
290
+ }
291
+ async onInternalError(payload, meta) {
292
+ const prefix = this.formatPrefix(meta);
293
+ const message = `${prefix}${await this.formatPayload(payload)}`;
294
+ await this.emitter.emit("error", {
295
+ message,
296
+ level: this.getTraceLevel(meta),
297
+ origin: [
298
+ payload,
299
+ meta
300
+ ]
301
+ });
302
+ this.target(message);
303
+ }
304
+ async onInternalFinish(payload, meta) {
305
+ const prefix = this.formatPrefix(meta);
306
+ const message = `${prefix}${await this.formatPayload(payload.error || payload.output)}`;
307
+ await this.emitter.emit("finish", {
308
+ message,
309
+ level: this.getTraceLevel(meta),
310
+ origin: [
311
+ payload,
312
+ meta
313
+ ]
314
+ });
315
+ }
316
+ }
317
+
318
+ export { GlobalTrajectoryMiddleware };
319
+ //# sourceMappingURL=trajectory.js.map
320
+ //# sourceMappingURL=trajectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/trajectory.ts"],"names":["GlobalTrajectoryMiddleware","Middleware","enabled","included","excluded","cleanups","target","ctx","pretty","traceLevel","Map","prefixByType","matchNested","emitterPriority","formatter","emitter","options","createTarget","BaseAgent","ChatModel","Tool","Requirement","Array","from","entries","x","prefix","className","instanceName","eventName","Emitter","root","child","namespace","bind","length","pop","clear","set","runId","relative","absolute","bindEmitter","input","undefined","msg","console","log","Logger","debug","push","match","_","event","logTraceId","handleTopLevelEvent","data","meta","creator","RunContext","trace","isAllowed","capitalize","name","call","includes","isBlocking","priority","handleNestedEvent","has","parentRunId","allowed","parentTrace","get","instance","some","extractName","targetName","type","typePrefix","formatPrefix","indent","getTraceLevel","indentParent","indentDiff","repeat","formatPayload","value","isPrimitive","String","FrameworkError","explain","serialized","Serializer","serialize","JSON","stringify","deserialize","excludedKeys","Set","key","onInternalStart","payload","message","emit","level","origin","onInternalSuccess","onInternalError","onInternalFinish","error","output"],"mappings":"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","file":"trajectory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunContextCallbacks, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { BaseAgent } from \"@/agents/base.js\";\nimport type { AnyConstructable } from \"@/internals/types.js\";\nimport { capitalize } from \"remeda\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { Requirement } from \"@/agents/requirement/requirements/requirement.js\";\nimport { isPrimitive } from \"sequelize/lib/utils\";\nimport type { InferCallbackValue } from \"@/emitter/types.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\n/**\n * Information about how deep the given entity is in the execution tree.\n */\nexport interface TraceLevel {\n /** Relative depth to the included (observed) elements */\n relative: number;\n /** Absolute depth from the root */\n absolute: number;\n}\n\n/**\n * Input for custom formatter function\n */\nexport interface GlobalTrajectoryMiddlewareFormatterInput {\n prefix: string;\n className: string;\n eventName: string;\n instanceName: string | null;\n}\n\nexport interface GlobalTrajectoryMiddlewareCallbacks {\n start: Callback<{\n message: string;\n level: TraceLevel;\n origin: [InferCallbackValue<RunContextCallbacks[\"start\"]>, EventMeta];\n }>;\n success: Callback<{\n message: string;\n level: TraceLevel;\n origin: [InferCallbackValue<RunContextCallbacks[\"success\"]>, EventMeta];\n }>;\n error: Callback<{\n message: string;\n level: TraceLevel;\n origin: [InferCallbackValue<RunContextCallbacks[\"error\"]>, EventMeta];\n }>;\n finish: Callback<{\n message: string;\n level: TraceLevel;\n origin: [InferCallbackValue<RunContextCallbacks[\"finish\"]>, EventMeta];\n }>;\n}\n\ntype OutputTargetFn = (message: string) => void;\ntype OutputTarget = Logger | OutputTargetFn;\n\nexport interface GlobalTrajectoryMiddlewareOptions {\n /** Specify output target: 'console', Logger instance, custom function, or null to disable */\n target?: OutputTarget;\n /** List of classes to include in the trajectory */\n included?: AnyConstructable[];\n /** List of classes to exclude from the trajectory */\n excluded?: AnyConstructable[];\n /** Use pretty formatting for the trajectory */\n pretty?: boolean;\n /** Customize how instances of individual classes should be printed */\n prefixByType?: Map<AnyConstructable, string>;\n /** Enable/Disable the logging */\n enabled?: boolean;\n /** Whether to observe trajectories of nested run contexts */\n matchNested?: boolean;\n /** Defines a priority for registered events */\n emitterPriority?: number;\n /** Custom formatter function */\n formatter?: (input: GlobalTrajectoryMiddlewareFormatterInput) => string;\n}\n\n/**\n * Middleware for capturing and logging execution flow of agents, tools, and models.\n * Provides hierarchical visualization with indentation to show the call stack.\n */\nexport class GlobalTrajectoryMiddleware<T extends RunInstance = any> extends Middleware<T> {\n protected enabled: boolean;\n protected included: AnyConstructable[];\n protected excluded: AnyConstructable[];\n protected cleanups: (() => void)[] = [];\n protected target: (message: string) => void;\n protected ctx: RunContext<T> | null = null;\n protected pretty: boolean;\n protected traceLevel = new Map<string, TraceLevel>();\n protected prefixByType: Map<any, string>;\n protected matchNested: boolean;\n protected emitterPriority: number;\n protected formatter: (input: GlobalTrajectoryMiddlewareFormatterInput) => string;\n public readonly emitter: Emitter<GlobalTrajectoryMiddlewareCallbacks>;\n\n constructor(options: GlobalTrajectoryMiddlewareOptions = {}) {\n super();\n\n this.enabled = options.enabled ?? true;\n this.included = options.included ?? [];\n this.excluded = options.excluded ?? [];\n this.target = this.createTarget(options.target);\n this.pretty = options.pretty ?? false;\n this.matchNested = options.matchNested ?? true;\n this.emitterPriority = options.emitterPriority ?? -1; // run later\n\n // Default prefixes\n this.prefixByType = new Map([\n [BaseAgent, \"🤖 \"],\n [ChatModel, \"💬 \"],\n [Tool, \"🛠️ \"],\n [Requirement, \"🔎 \"],\n ...((options.prefixByType ? Array.from(options.prefixByType.entries()) : []) as any),\n ]);\n\n this.formatter =\n options.formatter ??\n ((x) => `${x.prefix}${x.className}[${x.instanceName || x.className}][${x.eventName}]`);\n\n this.emitter = Emitter.root.child<GlobalTrajectoryMiddlewareCallbacks>({\n namespace: [\"middleware\", \"globalTrajectory\"],\n });\n }\n\n /**\n * Bind the middleware to a run context\n */\n bind(ctx: RunContext<T>): void {\n // Cleanup previous bindings\n while (this.cleanups.length > 0) {\n this.cleanups.pop()!();\n }\n\n this.traceLevel.clear();\n this.traceLevel.set(ctx.runId, { relative: 0, absolute: 0 });\n this.ctx = ctx;\n\n this.bindEmitter(ctx.emitter);\n }\n\n private createTarget(input?: OutputTarget): OutputTargetFn {\n if (input === null || input === undefined) {\n // eslint-disable-next-line no-console\n return (msg) => console.log(msg);\n } else if (input instanceof Logger) {\n return (msg) => input.debug(msg);\n } else {\n return input;\n }\n }\n\n private bindEmitter(emitter: Emitter<any>): void {\n // Track all events for trace ID logging\n this.cleanups.push(\n emitter.match(\"*.*\", (_, event) => this.logTraceId(event), {\n matchNested: true,\n }),\n );\n\n // Handle top-level events\n const handleTopLevelEvent = async (data: any, meta: EventMeta) => {\n if (!(meta.creator instanceof RunContext)) {\n return;\n }\n if (!meta.trace) {\n return;\n }\n\n this.logTraceId(meta);\n if (!this.isAllowed(meta)) {\n return;\n }\n if (!this.enabled) {\n return;\n }\n\n const eventName = capitalize(meta.name) as \"Start\" | \"Success\" | \"Error\" | \"Finish\";\n await this[`onInternal${eventName}` as const].call(this, data, meta);\n };\n\n this.cleanups.push(\n emitter.match(\n (event) => [\"start\", \"success\", \"error\", \"finish\"].includes(event.name),\n handleTopLevelEvent,\n {\n matchNested: false,\n isBlocking: true,\n priority: this.emitterPriority,\n },\n ),\n );\n\n // Handle nested events if enabled\n if (this.matchNested) {\n const handleNestedEvent = async (data: any, meta: EventMeta) => {\n if (!(meta.creator instanceof RunContext)) {\n return;\n }\n if (meta.creator.emitter !== emitter) {\n await handleTopLevelEvent(data, meta);\n this.bindEmitter(meta.creator.emitter);\n }\n };\n\n this.cleanups.push(\n emitter.match((event) => event.name === \"start\", handleNestedEvent, {\n matchNested: true,\n isBlocking: true,\n priority: this.emitterPriority,\n }),\n );\n }\n }\n\n private logTraceId(meta: EventMeta): void {\n if (!meta.trace?.runId) {\n return;\n }\n if (this.traceLevel.has(meta.trace.runId)) {\n return;\n }\n if (meta.trace.parentRunId === meta.trace.runId) {\n return;\n }\n\n if (meta.trace.parentRunId) {\n const allowed = this.isAllowed(meta);\n const parentTrace = this.traceLevel.get(meta.trace.parentRunId) ?? {\n relative: 0,\n absolute: 0,\n };\n this.traceLevel.set(meta.trace.runId, {\n relative: parentTrace.relative + (allowed ? 1 : 0),\n absolute: parentTrace.absolute + 1,\n });\n }\n }\n\n private isAllowed(meta: EventMeta): boolean {\n let target: any = meta.creator;\n if (target instanceof RunContext) {\n target = target.instance;\n }\n\n for (const excluded of this.excluded) {\n if (target instanceof excluded) {\n return false;\n }\n }\n\n if (this.included.length === 0) {\n return true;\n }\n\n return this.included.some((included) => target instanceof included);\n }\n\n private extractName(meta: EventMeta): string {\n let target: any = meta.creator;\n if (target instanceof RunContext) {\n target = target.instance;\n }\n\n const className = target.constructor.name;\n let targetName: string | null = null;\n\n if (target instanceof BaseAgent && target.meta?.name) {\n targetName = target.meta.name;\n } else if (\"name\" in target && typeof target.name === \"string\") {\n targetName = target.name;\n }\n\n let prefix = \"\";\n for (const [type, typePrefix] of this.prefixByType.entries()) {\n if (target instanceof type) {\n prefix = typePrefix;\n break;\n }\n }\n\n const input: GlobalTrajectoryMiddlewareFormatterInput = {\n prefix,\n className,\n instanceName: targetName,\n eventName: meta.name,\n };\n\n return this.formatter(input);\n }\n\n private formatPrefix(meta: EventMeta): string {\n if (!meta.trace) {\n return \"\";\n }\n\n const indent = this.getTraceLevel(meta, \"self\").relative;\n const indentParent = this.getTraceLevel(meta, \"parent\").relative;\n const indentDiff = indent - indentParent;\n\n let prefix = \"\";\n prefix += \" \".repeat(indentParent * 2);\n\n if (meta.name !== \"start\" && indent) {\n prefix += \"<\";\n }\n\n prefix += \"--\".repeat(indentDiff);\n\n if (meta.name === \"start\" && prefix && indent) {\n prefix += \">\";\n }\n\n if (prefix) {\n prefix = `${prefix} `;\n }\n\n const name = this.extractName(meta);\n return `${prefix}${name}: `;\n }\n\n private getTraceLevel(meta: EventMeta, type: \"self\" | \"parent\" = \"self\"): TraceLevel {\n if (!meta.trace) {\n return { relative: 0, absolute: 0 };\n }\n\n const runId = type === \"parent\" ? meta.trace.parentRunId || \"\" : meta.trace.runId;\n return this.traceLevel.get(runId) ?? { relative: 0, absolute: 0 };\n }\n\n private async formatPayload(value: any): Promise<string> {\n if (isPrimitive(value)) {\n return String(value);\n }\n\n if (value instanceof FrameworkError) {\n return value.explain();\n }\n\n const serialized = await Serializer.serialize(value);\n return JSON.stringify(\n await Serializer.deserialize(serialized, [], true),\n (() => {\n const excludedKeys = new Set([\"emitter\", \"cleanups\", \"creator\", \"listeners\"]);\n return (key, value) => {\n if (excludedKeys.has(key)) {\n return undefined;\n }\n if (value && value instanceof Tool) {\n return value.name;\n }\n return value;\n };\n })(),\n this.pretty ? 2 : undefined,\n );\n }\n\n private async onInternalStart(\n payload: InferCallbackValue<RunContextCallbacks[\"start\"]>,\n meta: EventMeta,\n ): Promise<void> {\n const prefix = this.formatPrefix(meta);\n const message = `${prefix}${await this.formatPayload(payload.input)}`;\n\n await this.emitter.emit(\"start\", {\n message,\n level: this.getTraceLevel(meta),\n origin: [payload, meta],\n });\n\n this.target(message);\n }\n\n private async onInternalSuccess(\n payload: InferCallbackValue<RunContextCallbacks[\"success\"]>,\n meta: EventMeta,\n ): Promise<void> {\n const prefix = this.formatPrefix(meta);\n // TODO: change to payload.output once available\n const message = `${prefix}${await this.formatPayload(payload)}`;\n\n await this.emitter.emit(\"success\", {\n message,\n level: this.getTraceLevel(meta),\n origin: [payload, meta],\n });\n\n this.target(message);\n }\n\n private async onInternalError(\n payload: InferCallbackValue<RunContextCallbacks[\"error\"]>,\n meta: EventMeta,\n ): Promise<void> {\n const prefix = this.formatPrefix(meta);\n const message = `${prefix}${await this.formatPayload(payload)}`;\n\n await this.emitter.emit(\"error\", {\n message,\n level: this.getTraceLevel(meta),\n origin: [payload, meta],\n });\n\n this.target(message);\n }\n\n private async onInternalFinish(\n payload: InferCallbackValue<RunContextCallbacks[\"finish\"]>,\n meta: EventMeta,\n ): Promise<void> {\n const prefix = this.formatPrefix(meta);\n const message = `${prefix}${await this.formatPayload(payload.error || payload.output)}`;\n await this.emitter.emit(\"finish\", {\n message,\n level: this.getTraceLevel(meta),\n origin: [payload, meta],\n });\n }\n}\n"]}
@@ -1 +1 @@
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
+ {"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,5 @@
1
- import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-DWEsd-ud.cjs';
1
+ import * as node_modules_remeda_dist_ToString_DKW_jYvM_js from 'node_modules/remeda/dist/ToString-DKW-jYvM.js';
2
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-CGKd_-kK.cjs';
2
3
  import { Serializable } from '../internals/serializable.cjs';
3
4
  import { ParserField } from './field.cjs';
4
5
  import { ValueOf } from '../internals/types.cjs';
@@ -9,11 +10,6 @@ import '@streamparser/json';
9
10
  import 'jsonrepair/stream';
10
11
  import '../errors.cjs';
11
12
 
12
- /**
13
- * Copyright 2025 © BeeAI a Series of LF Projects, LLC
14
- * SPDX-License-Identifier: Apache-2.0
15
- */
16
-
17
13
  interface ParserNode<T extends string, P extends ParserField<any, any>> {
18
14
  prefix: string;
19
15
  next: readonly T[];
@@ -83,9 +79,9 @@ declare class LinePrefixParser<T extends Input<StringKey<T>>> extends Serializab
83
79
  end(): Promise<LinePrefixParser.infer<T>>;
84
80
  protected emitPartialUpdate(data: InferCallbackValue<Callbacks<T>["partialUpdate"]>): Promise<void>;
85
81
  protected emitFinalUpdate(key: StringKey<T>, field: ParserField<any, any>): Promise<void>;
86
- protected get normalizedNodes(): (readonly [string, {
82
+ protected get normalizedNodes(): (readonly [node_modules_remeda_dist_ToString_DKW_jYvM_js.ToString<Exclude<keyof T, symbol>>, {
87
83
  readonly lowerCasePrefix: string;
88
- readonly ref: Required<T>[string] | Required<T>[number];
84
+ readonly ref: Required<T>[Exclude<keyof T, symbol>];
89
85
  }])[];
90
86
  protected extractLine(line: string): ExtractedLine<T> | null;
91
87
  createSnapshot(): {
@@ -1,4 +1,5 @@
1
- import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-C9nwGLt6.js';
1
+ import * as node_modules_remeda_dist_ToString_DKW_jYvM_js from 'node_modules/remeda/dist/ToString-DKW-jYvM.js';
2
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-CN7I4uSV.js';
2
3
  import { Serializable } from '../internals/serializable.js';
3
4
  import { ParserField } from './field.js';
4
5
  import { ValueOf } from '../internals/types.js';
@@ -9,11 +10,6 @@ import '@streamparser/json';
9
10
  import 'jsonrepair/stream';
10
11
  import '../errors.js';
11
12
 
12
- /**
13
- * Copyright 2025 © BeeAI a Series of LF Projects, LLC
14
- * SPDX-License-Identifier: Apache-2.0
15
- */
16
-
17
13
  interface ParserNode<T extends string, P extends ParserField<any, any>> {
18
14
  prefix: string;
19
15
  next: readonly T[];
@@ -83,9 +79,9 @@ declare class LinePrefixParser<T extends Input<StringKey<T>>> extends Serializab
83
79
  end(): Promise<LinePrefixParser.infer<T>>;
84
80
  protected emitPartialUpdate(data: InferCallbackValue<Callbacks<T>["partialUpdate"]>): Promise<void>;
85
81
  protected emitFinalUpdate(key: StringKey<T>, field: ParserField<any, any>): Promise<void>;
86
- protected get normalizedNodes(): (readonly [string, {
82
+ protected get normalizedNodes(): (readonly [node_modules_remeda_dist_ToString_DKW_jYvM_js.ToString<Exclude<keyof T, symbol>>, {
87
83
  readonly lowerCasePrefix: string;
88
- readonly ref: Required<T>[string] | Required<T>[number];
84
+ readonly ref: Required<T>[Exclude<keyof T, symbol>];
89
85
  }])[];
90
86
  protected extractLine(line: string): ExtractedLine<T> | null;
91
87
  createSnapshot(): {