beeai-framework 0.1.21 → 0.1.23

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 (335) hide show
  1. package/dist/adapters/a2a/agents/agent.d.cts +6 -10
  2. package/dist/adapters/a2a/agents/agent.d.ts +6 -10
  3. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  4. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  5. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  6. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  7. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  8. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  9. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  10. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  11. package/dist/adapters/acp/agents/agent.d.cts +6 -10
  12. package/dist/adapters/acp/agents/agent.d.ts +6 -10
  13. package/dist/adapters/acp/agents/events.d.cts +1 -1
  14. package/dist/adapters/acp/agents/events.d.ts +1 -1
  15. package/dist/adapters/agentstack/agents/agent.d.cts +8 -6
  16. package/dist/adapters/agentstack/agents/agent.d.ts +8 -6
  17. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  18. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  19. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  20. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  21. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  22. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  23. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  24. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  25. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  26. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  27. package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
  28. package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
  29. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  30. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  31. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  32. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  33. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  34. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  35. package/dist/adapters/google-vertex/backend/chat.d.cts +2 -2
  36. package/dist/adapters/google-vertex/backend/chat.d.ts +2 -2
  37. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  38. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  39. package/dist/adapters/groq/backend/chat.d.cts +2 -2
  40. package/dist/adapters/groq/backend/chat.d.ts +2 -2
  41. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  42. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  43. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  44. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  45. package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
  46. package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
  47. package/dist/adapters/langchain/tools.d.cts +1 -1
  48. package/dist/adapters/langchain/tools.d.ts +1 -1
  49. package/dist/adapters/ollama/backend/chat.cjs +1 -2
  50. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  51. package/dist/adapters/ollama/backend/chat.d.cts +2 -3
  52. package/dist/adapters/ollama/backend/chat.d.ts +2 -3
  53. package/dist/adapters/ollama/backend/chat.js +1 -2
  54. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  55. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  56. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  57. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  58. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  59. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/vercel/backend/chat.cjs +77 -17
  62. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  63. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  64. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  65. package/dist/adapters/vercel/backend/chat.js +77 -17
  66. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  67. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  68. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  69. package/dist/adapters/vercel/backend/utils.cjs +32 -0
  70. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  71. package/dist/adapters/vercel/backend/utils.d.cts +6 -4
  72. package/dist/adapters/vercel/backend/utils.d.ts +6 -4
  73. package/dist/adapters/vercel/backend/utils.js +31 -1
  74. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  75. package/dist/adapters/watsonx/backend/chat.cjs +7 -8
  76. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  77. package/dist/adapters/watsonx/backend/chat.d.cts +4 -4
  78. package/dist/adapters/watsonx/backend/chat.d.ts +4 -4
  79. package/dist/adapters/watsonx/backend/chat.js +7 -8
  80. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  81. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  82. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  83. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  84. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  85. package/dist/{agent-DvvVGvLr.d.cts → agent-BVuc9Nfn.d.cts} +5 -4
  86. package/dist/{agent-CHebzsQB.d.ts → agent-Cuy8Q4gw.d.ts} +5 -4
  87. package/dist/agents/base.cjs +5 -2
  88. package/dist/agents/base.cjs.map +1 -1
  89. package/dist/agents/base.d.cts +2 -2
  90. package/dist/agents/base.d.ts +2 -2
  91. package/dist/agents/base.js +5 -2
  92. package/dist/agents/base.js.map +1 -1
  93. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  94. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  95. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  96. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  97. package/dist/agents/experimental/streamlit/agent.d.cts +8 -12
  98. package/dist/agents/experimental/streamlit/agent.d.ts +8 -12
  99. package/dist/agents/react/agent.d.cts +4 -4
  100. package/dist/agents/react/agent.d.ts +4 -4
  101. package/dist/agents/react/runners/base.d.cts +4 -4
  102. package/dist/agents/react/runners/base.d.ts +4 -4
  103. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  104. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  105. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  106. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  107. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  108. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  109. package/dist/agents/react/types.d.cts +2 -2
  110. package/dist/agents/react/types.d.ts +2 -2
  111. package/dist/agents/requirement/agent.cjs +162 -0
  112. package/dist/agents/requirement/agent.cjs.map +1 -0
  113. package/dist/agents/requirement/agent.d.cts +29 -0
  114. package/dist/agents/requirement/agent.d.ts +29 -0
  115. package/dist/agents/requirement/agent.js +160 -0
  116. package/dist/agents/requirement/agent.js.map +1 -0
  117. package/dist/agents/requirement/prompts.cjs +95 -0
  118. package/dist/agents/requirement/prompts.cjs.map +1 -0
  119. package/dist/agents/requirement/prompts.d.cts +107 -0
  120. package/dist/agents/requirement/prompts.d.ts +107 -0
  121. package/dist/agents/requirement/prompts.js +90 -0
  122. package/dist/agents/requirement/prompts.js.map +1 -0
  123. package/dist/agents/requirement/requirements/conditional.cjs +190 -0
  124. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -0
  125. package/dist/agents/requirement/requirements/conditional.d.cts +71 -0
  126. package/dist/agents/requirement/requirements/conditional.d.ts +71 -0
  127. package/dist/agents/requirement/requirements/conditional.js +188 -0
  128. package/dist/agents/requirement/requirements/conditional.js.map +1 -0
  129. package/dist/agents/requirement/requirements/requirement.cjs +107 -0
  130. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -0
  131. package/dist/agents/requirement/requirements/requirement.d.cts +59 -0
  132. package/dist/agents/requirement/requirements/requirement.d.ts +59 -0
  133. package/dist/agents/requirement/requirements/requirement.js +104 -0
  134. package/dist/agents/requirement/requirements/requirement.js.map +1 -0
  135. package/dist/agents/requirement/requirements/utils.cjs +74 -0
  136. package/dist/agents/requirement/requirements/utils.cjs.map +1 -0
  137. package/dist/agents/requirement/requirements/utils.d.cts +40 -0
  138. package/dist/agents/requirement/requirements/utils.d.ts +40 -0
  139. package/dist/agents/requirement/requirements/utils.js +69 -0
  140. package/dist/agents/requirement/requirements/utils.js.map +1 -0
  141. package/dist/agents/requirement/runner.cjs +268 -0
  142. package/dist/agents/requirement/runner.cjs.map +1 -0
  143. package/dist/agents/requirement/runner.d.cts +115 -0
  144. package/dist/agents/requirement/runner.d.ts +115 -0
  145. package/dist/agents/requirement/runner.js +266 -0
  146. package/dist/agents/requirement/runner.js.map +1 -0
  147. package/dist/agents/requirement/types.cjs +40 -0
  148. package/dist/agents/requirement/types.cjs.map +1 -0
  149. package/dist/agents/requirement/types.d.cts +24 -0
  150. package/dist/agents/requirement/types.d.ts +24 -0
  151. package/dist/agents/requirement/types.js +35 -0
  152. package/dist/agents/requirement/types.js.map +1 -0
  153. package/dist/agents/requirement/utils/llm.cjs +202 -0
  154. package/dist/agents/requirement/utils/llm.cjs.map +1 -0
  155. package/dist/agents/requirement/utils/llm.d.cts +50 -0
  156. package/dist/agents/requirement/utils/llm.d.ts +50 -0
  157. package/dist/agents/requirement/utils/llm.js +199 -0
  158. package/dist/agents/requirement/utils/llm.js.map +1 -0
  159. package/dist/agents/requirement/utils/tool.cjs +95 -0
  160. package/dist/agents/requirement/utils/tool.cjs.map +1 -0
  161. package/dist/agents/requirement/utils/tool.d.cts +24 -0
  162. package/dist/agents/requirement/utils/tool.d.ts +24 -0
  163. package/dist/agents/requirement/utils/tool.js +92 -0
  164. package/dist/agents/requirement/utils/tool.js.map +1 -0
  165. package/dist/agents/requirement/utils/toolCallChecker.cjs +61 -0
  166. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -0
  167. package/dist/agents/requirement/utils/toolCallChecker.d.cts +28 -0
  168. package/dist/agents/requirement/utils/toolCallChecker.d.ts +28 -0
  169. package/dist/agents/requirement/utils/toolCallChecker.js +59 -0
  170. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -0
  171. package/dist/agents/toolCalling/agent.cjs +4 -1
  172. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  173. package/dist/agents/toolCalling/agent.d.cts +11 -12
  174. package/dist/agents/toolCalling/agent.d.ts +11 -12
  175. package/dist/agents/toolCalling/agent.js +5 -2
  176. package/dist/agents/toolCalling/agent.js.map +1 -1
  177. package/dist/agents/toolCalling/types.d.cts +1 -1
  178. package/dist/agents/toolCalling/types.d.ts +1 -1
  179. package/dist/agents/types.d.cts +2 -2
  180. package/dist/agents/types.d.ts +2 -2
  181. package/dist/backend/backend.d.cts +2 -2
  182. package/dist/backend/backend.d.ts +2 -2
  183. package/dist/backend/chat.cjs +122 -4
  184. package/dist/backend/chat.cjs.map +1 -1
  185. package/dist/backend/chat.d.cts +3 -3
  186. package/dist/backend/chat.d.ts +3 -3
  187. package/dist/backend/chat.js +123 -5
  188. package/dist/backend/chat.js.map +1 -1
  189. package/dist/backend/core.d.cts +3 -3
  190. package/dist/backend/core.d.ts +3 -3
  191. package/dist/backend/embedding.d.cts +2 -2
  192. package/dist/backend/embedding.d.ts +2 -2
  193. package/dist/backend/message.cjs +20 -13
  194. package/dist/backend/message.cjs.map +1 -1
  195. package/dist/backend/message.d.cts +7 -3
  196. package/dist/backend/message.d.ts +7 -3
  197. package/dist/backend/message.js +20 -13
  198. package/dist/backend/message.js.map +1 -1
  199. package/dist/backend/utils.d.cts +2 -2
  200. package/dist/backend/utils.d.ts +2 -2
  201. package/dist/{base-BQgDlcGa.d.ts → base-CyFx7BRL.d.ts} +5 -3
  202. package/dist/{base-CwcxwybB.d.cts → base-XfWeXQ-S.d.cts} +5 -3
  203. package/dist/{chat-CRb3vUVg.d.cts → chat-BOb9n7AJ.d.cts} +7 -8
  204. package/dist/{chat-C0s-o6ll.d.ts → chat-DrqwUgD8.d.ts} +7 -8
  205. package/dist/context.cjs +22 -5
  206. package/dist/context.cjs.map +1 -1
  207. package/dist/context.d.cts +19 -6
  208. package/dist/context.d.ts +19 -6
  209. package/dist/context.js +23 -7
  210. package/dist/context.js.map +1 -1
  211. package/dist/emitter/emitter.cjs +21 -14
  212. package/dist/emitter/emitter.cjs.map +1 -1
  213. package/dist/emitter/emitter.d.cts +1 -1
  214. package/dist/emitter/emitter.d.ts +1 -1
  215. package/dist/emitter/emitter.js +21 -14
  216. package/dist/emitter/emitter.js.map +1 -1
  217. package/dist/emitter/types.d.cts +1 -1
  218. package/dist/emitter/types.d.ts +1 -1
  219. package/dist/{emitter-CZFbzlUi.d.ts → emitter-36-9MnvA.d.ts} +4 -3
  220. package/dist/{emitter-DpqUYjXH.d.cts → emitter-jN55XZZq.d.cts} +4 -3
  221. package/dist/index.d.cts +5 -5
  222. package/dist/index.d.ts +5 -5
  223. package/dist/internals/fetcher.d.cts +1 -1
  224. package/dist/internals/fetcher.d.ts +1 -1
  225. package/dist/internals/helpers/prototype.cjs +5 -0
  226. package/dist/internals/helpers/prototype.cjs.map +1 -1
  227. package/dist/internals/helpers/prototype.d.cts +2 -1
  228. package/dist/internals/helpers/prototype.d.ts +2 -1
  229. package/dist/internals/helpers/prototype.js +5 -1
  230. package/dist/internals/helpers/prototype.js.map +1 -1
  231. package/dist/internals/types.cjs.map +1 -1
  232. package/dist/internals/types.d.cts +1 -1
  233. package/dist/internals/types.d.ts +1 -1
  234. package/dist/internals/types.js.map +1 -1
  235. package/dist/memory/summarizeMemory.d.cts +2 -2
  236. package/dist/memory/summarizeMemory.d.ts +2 -2
  237. package/dist/middleware/streamToolCall.cjs +132 -0
  238. package/dist/middleware/streamToolCall.cjs.map +1 -0
  239. package/dist/middleware/streamToolCall.d.cts +94 -0
  240. package/dist/middleware/streamToolCall.d.ts +94 -0
  241. package/dist/middleware/streamToolCall.js +130 -0
  242. package/dist/middleware/streamToolCall.js.map +1 -0
  243. package/dist/middleware/trajectory.cjs +331 -0
  244. package/dist/middleware/trajectory.cjs.map +1 -0
  245. package/dist/middleware/trajectory.d.cts +115 -0
  246. package/dist/middleware/trajectory.d.ts +115 -0
  247. package/dist/middleware/trajectory.js +329 -0
  248. package/dist/middleware/trajectory.js.map +1 -0
  249. package/dist/parsers/linePrefix.d.cts +1 -1
  250. package/dist/parsers/linePrefix.d.ts +1 -1
  251. package/dist/serializer/serializer.cjs +5 -4
  252. package/dist/serializer/serializer.cjs.map +1 -1
  253. package/dist/serializer/serializer.d.cts +1 -1
  254. package/dist/serializer/serializer.d.ts +1 -1
  255. package/dist/serializer/serializer.js +5 -4
  256. package/dist/serializer/serializer.js.map +1 -1
  257. package/dist/serializer/utils.cjs +3 -0
  258. package/dist/serializer/utils.cjs.map +1 -1
  259. package/dist/serializer/utils.d.cts +1 -1
  260. package/dist/serializer/utils.d.ts +1 -1
  261. package/dist/serializer/utils.js +3 -0
  262. package/dist/serializer/utils.js.map +1 -1
  263. package/dist/{serializer-CQxucveV.d.ts → serializer-53t8gGQa.d.ts} +3 -2
  264. package/dist/{serializer-BKn50Vnx.d.cts → serializer-c51B2z6d.d.cts} +3 -2
  265. package/dist/template.cjs +20 -0
  266. package/dist/template.cjs.map +1 -1
  267. package/dist/template.d.cts +1 -0
  268. package/dist/template.d.ts +1 -0
  269. package/dist/template.js +20 -0
  270. package/dist/template.js.map +1 -1
  271. package/dist/tools/arxiv.d.cts +1 -1
  272. package/dist/tools/arxiv.d.ts +1 -1
  273. package/dist/tools/base.cjs.map +1 -1
  274. package/dist/tools/base.d.cts +3 -2
  275. package/dist/tools/base.d.ts +3 -2
  276. package/dist/tools/base.js.map +1 -1
  277. package/dist/tools/calculator.d.cts +1 -1
  278. package/dist/tools/calculator.d.ts +1 -1
  279. package/dist/tools/custom.d.cts +2 -2
  280. package/dist/tools/custom.d.ts +2 -2
  281. package/dist/tools/database/elasticsearch.d.cts +1 -1
  282. package/dist/tools/database/elasticsearch.d.ts +1 -1
  283. package/dist/tools/database/milvus.d.cts +3 -3
  284. package/dist/tools/database/milvus.d.ts +3 -3
  285. package/dist/tools/database/qdrant.d.cts +1 -1
  286. package/dist/tools/database/qdrant.d.ts +1 -1
  287. package/dist/tools/database/sql.d.cts +1 -1
  288. package/dist/tools/database/sql.d.ts +1 -1
  289. package/dist/tools/handoff.cjs +68 -0
  290. package/dist/tools/handoff.cjs.map +1 -0
  291. package/dist/tools/handoff.d.cts +47 -0
  292. package/dist/tools/handoff.d.ts +47 -0
  293. package/dist/tools/handoff.js +66 -0
  294. package/dist/tools/handoff.js.map +1 -0
  295. package/dist/tools/llm.d.cts +2 -2
  296. package/dist/tools/llm.d.ts +2 -2
  297. package/dist/tools/mcp.d.cts +1 -1
  298. package/dist/tools/mcp.d.ts +1 -1
  299. package/dist/tools/openapi.d.cts +1 -1
  300. package/dist/tools/openapi.d.ts +1 -1
  301. package/dist/tools/python/output.d.cts +1 -1
  302. package/dist/tools/python/output.d.ts +1 -1
  303. package/dist/tools/python/python.d.cts +2 -2
  304. package/dist/tools/python/python.d.ts +2 -2
  305. package/dist/tools/search/base.d.cts +1 -1
  306. package/dist/tools/search/base.d.ts +1 -1
  307. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  308. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  309. package/dist/tools/search/googleSearch.d.cts +1 -1
  310. package/dist/tools/search/googleSearch.d.ts +1 -1
  311. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  312. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  313. package/dist/tools/search/wikipedia.d.cts +1 -1
  314. package/dist/tools/search/wikipedia.d.ts +1 -1
  315. package/dist/tools/similarity.d.cts +1 -1
  316. package/dist/tools/similarity.d.ts +1 -1
  317. package/dist/tools/think.cjs +52 -0
  318. package/dist/tools/think.cjs.map +1 -0
  319. package/dist/tools/think.d.cts +47 -0
  320. package/dist/tools/think.d.ts +47 -0
  321. package/dist/tools/think.js +50 -0
  322. package/dist/tools/think.js.map +1 -0
  323. package/dist/tools/weather/openMeteo.d.cts +1 -1
  324. package/dist/tools/weather/openMeteo.d.ts +1 -1
  325. package/dist/tools/web/webCrawler.d.cts +1 -1
  326. package/dist/tools/web/webCrawler.d.ts +1 -1
  327. package/dist/types-CJwiMH3u.d.ts +213 -0
  328. package/dist/types-W0QttuP_.d.cts +213 -0
  329. package/dist/version.cjs +1 -1
  330. package/dist/version.js +1 -1
  331. package/dist/workflows/agent.d.cts +3 -3
  332. package/dist/workflows/agent.d.ts +3 -3
  333. package/dist/workflows/workflow.d.cts +1 -1
  334. package/dist/workflows/workflow.d.ts +1 -1
  335. package/package.json +11 -11
@@ -0,0 +1,329 @@
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 { Serializer } from '../serializer/serializer.js';
11
+ import { isPrimitive } from '../internals/helpers/guards.js';
12
+ import { getProp } from '../internals/helpers/object.js';
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
+ class GlobalTrajectoryMiddleware extends Middleware {
17
+ static {
18
+ __name(this, "GlobalTrajectoryMiddleware");
19
+ }
20
+ enabled;
21
+ included;
22
+ excluded;
23
+ cleanups = [];
24
+ target;
25
+ ctx = null;
26
+ pretty;
27
+ traceLevel = /* @__PURE__ */ new Map();
28
+ prefixByType;
29
+ matchNested;
30
+ emitterPriority;
31
+ formatter;
32
+ emitter;
33
+ constructor(options = {}) {
34
+ super();
35
+ this.enabled = options.enabled ?? true;
36
+ this.included = options.included ?? [];
37
+ this.excluded = options.excluded ?? [];
38
+ this.target = this.createTarget(options.target);
39
+ this.pretty = options.pretty ?? false;
40
+ this.matchNested = options.matchNested ?? true;
41
+ this.emitterPriority = options.emitterPriority ?? -1;
42
+ this.prefixByType = new Map([
43
+ [
44
+ BaseAgent,
45
+ "\u{1F916} "
46
+ ],
47
+ [
48
+ ChatModel,
49
+ "\u{1F4AC} "
50
+ ],
51
+ [
52
+ Tool,
53
+ "\u{1F6E0}\uFE0F "
54
+ ],
55
+ [
56
+ Requirement,
57
+ "\u{1F50E} "
58
+ ],
59
+ ...options.prefixByType ? Array.from(options.prefixByType.entries()) : []
60
+ ]);
61
+ this.formatter = options.formatter ?? ((x) => `${x.prefix}${x.className}[${x.instanceName || x.className}][${x.eventName}]`);
62
+ this.emitter = Emitter.root.child({
63
+ namespace: [
64
+ "middleware",
65
+ "globalTrajectory"
66
+ ]
67
+ });
68
+ }
69
+ /**
70
+ * Bind the middleware to a run context
71
+ */
72
+ bind(ctx) {
73
+ while (this.cleanups.length > 0) {
74
+ this.cleanups.pop()();
75
+ }
76
+ this.traceLevel.clear();
77
+ this.traceLevel.set(ctx.runId, {
78
+ relative: 0,
79
+ absolute: 0
80
+ });
81
+ this.ctx = ctx;
82
+ this.bindEmitter(ctx.emitter);
83
+ }
84
+ createTarget(input) {
85
+ if (input === null || input === void 0) {
86
+ return (msg) => console.log(msg);
87
+ } else if (input instanceof Logger) {
88
+ return (msg) => input.debug(msg);
89
+ } else {
90
+ return input;
91
+ }
92
+ }
93
+ bindEmitter(emitter) {
94
+ this.cleanups.push(emitter.match("*.*", (_, event) => this.logTraceId(event), {
95
+ matchNested: true
96
+ }));
97
+ const handleTopLevelEvent = /* @__PURE__ */ __name(async (data, meta) => {
98
+ if (!(meta.creator instanceof RunContext)) {
99
+ return;
100
+ }
101
+ if (!meta.trace) {
102
+ return;
103
+ }
104
+ this.logTraceId(meta);
105
+ if (!this.isAllowed(meta)) {
106
+ return;
107
+ }
108
+ if (!this.enabled) {
109
+ return;
110
+ }
111
+ const eventName = capitalize(meta.name);
112
+ await this[`onInternal${eventName}`].call(this, data, meta);
113
+ }, "handleTopLevelEvent");
114
+ this.cleanups.push(emitter.match(matchInternalEvent([
115
+ "start",
116
+ "success",
117
+ "error",
118
+ "finish"
119
+ ]), handleTopLevelEvent, {
120
+ matchNested: false,
121
+ isBlocking: true,
122
+ priority: this.emitterPriority
123
+ }));
124
+ if (this.matchNested) {
125
+ const handleNestedEvent = /* @__PURE__ */ __name(async (data, meta) => {
126
+ if (!(meta.creator instanceof RunContext)) {
127
+ return;
128
+ }
129
+ if (meta.creator.emitter !== emitter) {
130
+ await handleTopLevelEvent(data, meta);
131
+ this.bindEmitter(meta.creator.emitter);
132
+ }
133
+ }, "handleNestedEvent");
134
+ this.cleanups.push(emitter.match(matchInternalEvent([
135
+ "start"
136
+ ]), handleNestedEvent, {
137
+ matchNested: true,
138
+ isBlocking: true,
139
+ priority: this.emitterPriority
140
+ }));
141
+ }
142
+ }
143
+ logTraceId(meta) {
144
+ if (!meta.trace?.runId) {
145
+ return;
146
+ }
147
+ if (this.traceLevel.has(meta.trace.runId)) {
148
+ return;
149
+ }
150
+ if (meta.trace.parentRunId === meta.trace.runId) {
151
+ return;
152
+ }
153
+ if (meta.trace.parentRunId) {
154
+ const allowed = this.isAllowed(meta);
155
+ const parentTrace = this.traceLevel.get(meta.trace.parentRunId) ?? {
156
+ relative: 0,
157
+ absolute: 0
158
+ };
159
+ this.traceLevel.set(meta.trace.runId, {
160
+ relative: parentTrace.relative + (allowed ? 1 : 0),
161
+ absolute: parentTrace.absolute + 1
162
+ });
163
+ }
164
+ }
165
+ isAllowed(meta) {
166
+ let target = meta.creator;
167
+ if (target instanceof RunContext) {
168
+ target = target.instance;
169
+ }
170
+ for (const excluded of this.excluded) {
171
+ if (target instanceof excluded) {
172
+ return false;
173
+ }
174
+ }
175
+ if (this.included.length === 0) {
176
+ return true;
177
+ }
178
+ return this.included.some((included) => target instanceof included);
179
+ }
180
+ extractName(meta) {
181
+ let target = meta.creator;
182
+ if (target instanceof RunContext) {
183
+ target = target.instance;
184
+ }
185
+ const className = target.constructor.name;
186
+ let targetName = null;
187
+ if (target instanceof BaseAgent && target.meta?.name) {
188
+ targetName = target.meta.name;
189
+ } else if ("name" in target && typeof target.name === "string") {
190
+ targetName = target.name;
191
+ }
192
+ let prefix = "";
193
+ for (const [type, typePrefix] of this.prefixByType.entries()) {
194
+ if (target instanceof type) {
195
+ prefix = typePrefix;
196
+ break;
197
+ }
198
+ }
199
+ const input = {
200
+ prefix,
201
+ className,
202
+ instanceName: targetName,
203
+ eventName: meta.name
204
+ };
205
+ return this.formatter(input);
206
+ }
207
+ formatPrefix(meta) {
208
+ if (!meta.trace) {
209
+ return "";
210
+ }
211
+ const indent = this.getTraceLevel(meta, "self").relative;
212
+ const indentParent = this.getTraceLevel(meta, "parent").relative;
213
+ const indentDiff = indent - indentParent;
214
+ let prefix = "";
215
+ prefix += " ".repeat(indentParent * 2);
216
+ if (meta.name !== "start" && indent) {
217
+ prefix += "<";
218
+ }
219
+ prefix += "--".repeat(indentDiff);
220
+ if (meta.name === "start" && prefix && indent) {
221
+ prefix += ">";
222
+ }
223
+ if (prefix) {
224
+ prefix = `${prefix} `;
225
+ }
226
+ const name = this.extractName(meta);
227
+ return `${prefix}${name}: `;
228
+ }
229
+ getTraceLevel(meta, type = "self") {
230
+ if (!meta.trace) {
231
+ return {
232
+ relative: 0,
233
+ absolute: 0
234
+ };
235
+ }
236
+ const runId = type === "parent" ? meta.trace.parentRunId || "" : meta.trace.runId;
237
+ return this.traceLevel.get(runId) ?? {
238
+ relative: 0,
239
+ absolute: 0
240
+ };
241
+ }
242
+ async formatPayload(value) {
243
+ if (isPrimitive(value)) {
244
+ return String(value);
245
+ }
246
+ if (value instanceof FrameworkError) {
247
+ return value.explain();
248
+ }
249
+ const serialized = await Serializer.serialize(value);
250
+ return JSON.stringify(await Serializer.deserialize(serialized, [], true), /* @__PURE__ */ (() => {
251
+ const excludedKeys = /* @__PURE__ */ new Set([
252
+ "emitter",
253
+ "cleanups",
254
+ "creator",
255
+ "listeners"
256
+ ]);
257
+ return (key, value2) => {
258
+ if (excludedKeys.has(key)) {
259
+ return void 0;
260
+ }
261
+ if (value2 && value2 instanceof Tool) {
262
+ return value2.name;
263
+ }
264
+ return value2;
265
+ };
266
+ })(), this.pretty ? 2 : void 0);
267
+ }
268
+ async onInternalStart(payload, meta) {
269
+ const prefix = this.formatPrefix(meta);
270
+ const message = `${prefix}${await this.formatPayload(payload.input)}`;
271
+ await this.emitter.emit("start", {
272
+ message,
273
+ level: this.getTraceLevel(meta),
274
+ origin: [
275
+ payload,
276
+ meta
277
+ ]
278
+ });
279
+ this.target(message);
280
+ }
281
+ async onInternalSuccess(payload, meta) {
282
+ const prefix = this.formatPrefix(meta);
283
+ const message = `${prefix}${await this.formatPayload(payload)}`;
284
+ await this.emitter.emit("success", {
285
+ message,
286
+ level: this.getTraceLevel(meta),
287
+ origin: [
288
+ payload,
289
+ meta
290
+ ]
291
+ });
292
+ this.target(message);
293
+ }
294
+ async onInternalError(payload, meta) {
295
+ const prefix = this.formatPrefix(meta);
296
+ const message = `${prefix}${await this.formatPayload(payload)}`;
297
+ await this.emitter.emit("error", {
298
+ message,
299
+ level: this.getTraceLevel(meta),
300
+ origin: [
301
+ payload,
302
+ meta
303
+ ]
304
+ });
305
+ this.target(message);
306
+ }
307
+ async onInternalFinish(payload, meta) {
308
+ const prefix = this.formatPrefix(meta);
309
+ const message = `${prefix}${await this.formatPayload(payload.error || payload.output)}`;
310
+ await this.emitter.emit("finish", {
311
+ message,
312
+ level: this.getTraceLevel(meta),
313
+ origin: [
314
+ payload,
315
+ meta
316
+ ]
317
+ });
318
+ }
319
+ }
320
+ function matchInternalEvent(names) {
321
+ return (meta) => names.includes(meta.name) && getProp(meta.context, [
322
+ "internal"
323
+ ], false);
324
+ }
325
+ __name(matchInternalEvent, "matchInternalEvent");
326
+
327
+ export { GlobalTrajectoryMiddleware };
328
+ //# sourceMappingURL=trajectory.js.map
329
+ //# 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","matchInternalEvent","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","names","includes","getProp","context"],"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 type { InferCallbackValue } from \"@/emitter/types.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { isPrimitive } from \"@/internals/helpers/guards.js\";\nimport { getProp } from \"@/internals/helpers/object.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 matchInternalEvent([\"start\", \"success\", \"error\", \"finish\"]),\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(matchInternalEvent([\"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\nfunction matchInternalEvent(names: (keyof RunContextCallbacks)[]) {\n return (meta: EventMeta): boolean =>\n names.includes(meta.name as keyof RunContextCallbacks) &&\n getProp(meta.context, [\"internal\"], false);\n}\n"]}
@@ -1,5 +1,5 @@
1
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-DpqUYjXH.cjs';
2
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-jN55XZZq.cjs';
3
3
  import { Serializable } from '../internals/serializable.cjs';
4
4
  import { ParserField } from './field.cjs';
5
5
  import { ValueOf } from '../internals/types.cjs';
@@ -1,5 +1,5 @@
1
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-CZFbzlUi.js';
2
+ import { E as Emitter, C as Callback, I as InferCallbackValue } from '../emitter-36-9MnvA.js';
3
3
  import { Serializable } from '../internals/serializable.js';
4
4
  import { ParserField } from './field.js';
5
5
  import { ValueOf } from '../internals/types.js';
@@ -191,7 +191,8 @@ class Serializer {
191
191
  return output.toJSON();
192
192
  }
193
193
  /** @internal */
194
- static async deserializeWithMeta(raw, extraClasses) {
194
+ static async deserializeWithMeta(raw, extraClasses, keepPlain) {
195
+ keepPlain = keepPlain ?? false;
195
196
  extraClasses?.forEach((ref) => Serializer.registerSerializable(ref));
196
197
  const output = Serializer._createOutputBuilder();
197
198
  const instances = /* @__PURE__ */ new Map();
@@ -224,7 +225,7 @@ class Serializer {
224
225
  const placeholder = new utils_cjs.RefPlaceholder(contentRaw, factory);
225
226
  instances.set(contentRaw.__ref, placeholder);
226
227
  await traverseNested();
227
- const final = await placeholder.final();
228
+ const final = keepPlain ? placeholder.rawValue : await placeholder.final();
228
229
  instances.set(contentRaw.__ref, final);
229
230
  return final;
230
231
  }
@@ -239,8 +240,8 @@ class Serializer {
239
240
  }, (_obj) => utils_cjs.isSerializerNode(_obj));
240
241
  return output.get();
241
242
  }
242
- static async deserialize(raw, extraClasses) {
243
- const response = await Serializer.deserializeWithMeta(raw, extraClasses);
243
+ static async deserialize(raw, extraClasses, keepPlain) {
244
+ const response = await Serializer.deserializeWithMeta(raw, extraClasses, keepPlain);
244
245
  return response.__root;
245
246
  }
246
247
  static _createOutputBuilder() {