beeai-framework 0.1.24 → 0.1.25

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 (227) hide show
  1. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  2. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  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 +2 -2
  12. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  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 +2 -2
  16. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  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 +3 -3
  24. package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
  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 +4 -2
  32. package/dist/adapters/dummy/backend/chat.d.ts +4 -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 +4 -2
  44. package/dist/adapters/langchain/backend/chat.d.ts +4 -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.d.cts +2 -2
  50. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  51. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  52. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  53. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  54. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  55. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  56. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  57. package/dist/adapters/vercel/backend/chat.d.cts +4 -2
  58. package/dist/adapters/vercel/backend/chat.d.ts +4 -2
  59. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  62. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  63. package/dist/adapters/watsonx/backend/chat.cjs +8 -0
  64. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  65. package/dist/adapters/watsonx/backend/chat.d.cts +4 -2
  66. package/dist/adapters/watsonx/backend/chat.d.ts +4 -2
  67. package/dist/adapters/watsonx/backend/chat.js +8 -0
  68. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  69. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  70. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  71. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  72. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  73. package/dist/{agent-Cy4QtsN8.d.cts → agent-CuJD7Szg.d.cts} +3 -3
  74. package/dist/{agent-DHLEPXEA.d.ts → agent-DIyHPkn2.d.ts} +3 -3
  75. package/dist/agents/base.d.cts +2 -2
  76. package/dist/agents/base.d.ts +2 -2
  77. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  78. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  79. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  80. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  81. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  82. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  83. package/dist/agents/react/agent.d.cts +4 -4
  84. package/dist/agents/react/agent.d.ts +4 -4
  85. package/dist/agents/react/runners/base.d.cts +4 -4
  86. package/dist/agents/react/runners/base.d.ts +4 -4
  87. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  88. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  89. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  90. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  91. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  92. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  93. package/dist/agents/react/types.d.cts +2 -2
  94. package/dist/agents/react/types.d.ts +2 -2
  95. package/dist/agents/requirement/agent.d.cts +4 -4
  96. package/dist/agents/requirement/agent.d.ts +4 -4
  97. package/dist/agents/requirement/requirements/conditional.d.cts +4 -4
  98. package/dist/agents/requirement/requirements/conditional.d.ts +4 -4
  99. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  100. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  101. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  102. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  103. package/dist/agents/requirement/runner.cjs +21 -13
  104. package/dist/agents/requirement/runner.cjs.map +1 -1
  105. package/dist/agents/requirement/runner.d.cts +4 -4
  106. package/dist/agents/requirement/runner.d.ts +4 -4
  107. package/dist/agents/requirement/runner.js +21 -13
  108. package/dist/agents/requirement/runner.js.map +1 -1
  109. package/dist/agents/requirement/types.d.cts +4 -4
  110. package/dist/agents/requirement/types.d.ts +4 -4
  111. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  112. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  113. package/dist/agents/requirement/utils/tool.cjs +13 -2
  114. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  115. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  116. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  117. package/dist/agents/requirement/utils/tool.js +11 -0
  118. package/dist/agents/requirement/utils/tool.js.map +1 -1
  119. package/dist/agents/toolCalling/agent.d.cts +3 -3
  120. package/dist/agents/toolCalling/agent.d.ts +3 -3
  121. package/dist/agents/toolCalling/types.d.cts +1 -1
  122. package/dist/agents/toolCalling/types.d.ts +1 -1
  123. package/dist/agents/types.d.cts +2 -2
  124. package/dist/agents/types.d.ts +2 -2
  125. package/dist/backend/backend.d.cts +2 -2
  126. package/dist/backend/backend.d.ts +2 -2
  127. package/dist/backend/chat.cjs +124 -45
  128. package/dist/backend/chat.cjs.map +1 -1
  129. package/dist/backend/chat.d.cts +2 -2
  130. package/dist/backend/chat.d.ts +2 -2
  131. package/dist/backend/chat.js +127 -48
  132. package/dist/backend/chat.js.map +1 -1
  133. package/dist/backend/core.d.cts +3 -3
  134. package/dist/backend/core.d.ts +3 -3
  135. package/dist/backend/embedding.d.cts +2 -2
  136. package/dist/backend/embedding.d.ts +2 -2
  137. package/dist/backend/errors.cjs +25 -0
  138. package/dist/backend/errors.cjs.map +1 -1
  139. package/dist/backend/errors.d.cts +34 -1
  140. package/dist/backend/errors.d.ts +34 -1
  141. package/dist/backend/errors.js +24 -1
  142. package/dist/backend/errors.js.map +1 -1
  143. package/dist/backend/utils.d.cts +2 -2
  144. package/dist/backend/utils.d.ts +2 -2
  145. package/dist/{base-CyFx7BRL.d.ts → base-BfhNzUYf.d.ts} +1 -1
  146. package/dist/{base-XfWeXQ-S.d.cts → base-BqzN2QwB.d.cts} +1 -1
  147. package/dist/{chat-D8SVtw5Q.d.ts → chat-DTxmaKP0.d.ts} +7 -1
  148. package/dist/{chat-CC0s8z23.d.cts → chat-DaqV3woF.d.cts} +7 -1
  149. package/dist/context.d.cts +1 -1
  150. package/dist/context.d.ts +1 -1
  151. package/dist/emitter/emitter.d.cts +1 -1
  152. package/dist/emitter/emitter.d.ts +1 -1
  153. package/dist/emitter/types.d.cts +1 -1
  154. package/dist/emitter/types.d.ts +1 -1
  155. package/dist/index.d.cts +3 -3
  156. package/dist/index.d.ts +3 -3
  157. package/dist/internals/fetcher.d.cts +1 -1
  158. package/dist/internals/fetcher.d.ts +1 -1
  159. package/dist/memory/summarizeMemory.d.cts +2 -2
  160. package/dist/memory/summarizeMemory.d.ts +2 -2
  161. package/dist/middleware/streamToolCall.cjs +9 -0
  162. package/dist/middleware/streamToolCall.cjs.map +1 -1
  163. package/dist/middleware/streamToolCall.d.cts +11 -3
  164. package/dist/middleware/streamToolCall.d.ts +11 -3
  165. package/dist/middleware/streamToolCall.js +9 -0
  166. package/dist/middleware/streamToolCall.js.map +1 -1
  167. package/dist/middleware/trajectory.d.cts +1 -1
  168. package/dist/middleware/trajectory.d.ts +1 -1
  169. package/dist/parsers/linePrefix.d.cts +1 -1
  170. package/dist/parsers/linePrefix.d.ts +1 -1
  171. package/dist/tools/arxiv.d.cts +1 -1
  172. package/dist/tools/arxiv.d.ts +1 -1
  173. package/dist/tools/base.d.cts +1 -1
  174. package/dist/tools/base.d.ts +1 -1
  175. package/dist/tools/calculator.d.cts +1 -1
  176. package/dist/tools/calculator.d.ts +1 -1
  177. package/dist/tools/custom.d.cts +2 -2
  178. package/dist/tools/custom.d.ts +2 -2
  179. package/dist/tools/database/elasticsearch.d.cts +1 -1
  180. package/dist/tools/database/elasticsearch.d.ts +1 -1
  181. package/dist/tools/database/milvus.d.cts +3 -3
  182. package/dist/tools/database/milvus.d.ts +3 -3
  183. package/dist/tools/database/qdrant.d.cts +1 -1
  184. package/dist/tools/database/qdrant.d.ts +1 -1
  185. package/dist/tools/database/sql.d.cts +1 -1
  186. package/dist/tools/database/sql.d.ts +1 -1
  187. package/dist/tools/handoff.d.cts +2 -2
  188. package/dist/tools/handoff.d.ts +2 -2
  189. package/dist/tools/llm.d.cts +2 -2
  190. package/dist/tools/llm.d.ts +2 -2
  191. package/dist/tools/mcp.d.cts +1 -1
  192. package/dist/tools/mcp.d.ts +1 -1
  193. package/dist/tools/openapi.d.cts +1 -1
  194. package/dist/tools/openapi.d.ts +1 -1
  195. package/dist/tools/python/output.d.cts +1 -1
  196. package/dist/tools/python/output.d.ts +1 -1
  197. package/dist/tools/python/python.d.cts +2 -2
  198. package/dist/tools/python/python.d.ts +2 -2
  199. package/dist/tools/search/base.d.cts +1 -1
  200. package/dist/tools/search/base.d.ts +1 -1
  201. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  202. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  203. package/dist/tools/search/googleSearch.d.cts +1 -1
  204. package/dist/tools/search/googleSearch.d.ts +1 -1
  205. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  206. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  207. package/dist/tools/search/wikipedia.d.cts +1 -1
  208. package/dist/tools/search/wikipedia.d.ts +1 -1
  209. package/dist/tools/similarity.d.cts +1 -1
  210. package/dist/tools/similarity.d.ts +1 -1
  211. package/dist/tools/think.d.cts +1 -1
  212. package/dist/tools/think.d.ts +1 -1
  213. package/dist/tools/weather/openMeteo.d.cts +1 -1
  214. package/dist/tools/weather/openMeteo.d.ts +1 -1
  215. package/dist/tools/web/webCrawler.d.cts +1 -1
  216. package/dist/tools/web/webCrawler.d.ts +1 -1
  217. package/dist/{types-Dyd4e1G6.d.ts → types-YT-WdK3m.d.ts} +11 -11
  218. package/dist/{types-D9pn62yF.d.cts → types-YoNQSxQH.d.cts} +11 -11
  219. package/dist/version.cjs +1 -1
  220. package/dist/version.js +1 -1
  221. package/dist/workflows/agent.d.cts +40 -40
  222. package/dist/workflows/agent.d.ts +40 -40
  223. package/dist/workflows/workflow.d.cts +1 -1
  224. package/dist/workflows/workflow.d.ts +1 -1
  225. package/package.json +1 -1
  226. package/dist/{emitter-36-9MnvA.d.ts → emitter-CL56qab4.d.ts} +1 -1
  227. package/dist/{emitter-jN55XZZq.d.cts → emitter-UkIkNrek.d.cts} +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","toolCall","getToolCalls","isString","JSON","parse","lastMsg","messages","at","parseBrokenJson","text","pair","ChatModelError","isFatal","isRetryable","content","length","type","toolCallId","randomString","toLowerCase","toolName","error","reject","middleware","createStructure","_createStructure","config","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","textResponse","getTextContent","validator","createSchemaValidator","success","context","UserMessage","output","maxRetries","get","createSnapshot","slice","destroy","_","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","Tool","includes","usage","finishReason","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","messagesById","Map","messagesByToolCallId","msgId","id","AssistantMessage","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","join","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n for (const toolCall of result.getToolCalls()) {\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n if (forceToolCallViaResponseFormat && isEmpty(result.getToolCalls())) {\n const lastMsg = result.messages.at(-1)!;\n const toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n isFatal: true,\n isRetryable: false,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
1
+ {"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","fixInvalidToolCalls","retryOnEmptyResponse","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","modelInputMessagesBackup","messages","slice","cacheEntry","createCacheAccessor","emitter","emit","result","Retryable","executor","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","ChatModelOutput","fromChunks","EmptyChatModelResponseError","getToolCalls","Tool","lastMsg","at","toolCall","parseBrokenJson","text","pair","ChatModelToolCallError","generatedContent","generatedError","response","content","length","type","toolCallId","randomString","toLowerCase","toolName","tool","find","t","availableTools","map","join","JSON","stringify","isString","isToolCallValid","parse","resolve","config","maxRetries","onRetry","_","lastError","data","AssistantMessage","tempMessage","toolNames","UserMessage","lastMessage","meta","get","error","reject","ChatModelError","middleware","createStructure","_createStructure","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","errorTemplate","errors","expected","received","textResponse","getTextContent","validator","createSchemaValidator","success","context","output","createSnapshot","destroy","key","ObjectHashKeyFn","Serializer","serialize","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","includes","usage","finishReason","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","messagesById","Map","messagesByToolCallId","msgId","id","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport {\n ChatModelError,\n ChatModelToolCallError,\n EmptyChatModelResponseError,\n} from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n maxRetries?: number;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n public readonly fixInvalidToolCalls: boolean = true;\n public readonly retryOnEmptyResponse: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run): Promise<ChatModelOutput> => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const modelInputMessagesBackup = input.messages.slice();\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n\n const result = await new Retryable({\n executor: async () => {\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n const result = ChatModelOutput.fromChunks(chunks);\n if (result.isEmpty()) {\n throw new EmptyChatModelResponseError();\n }\n\n if (\n isEmpty(result.getToolCalls()) &&\n (forceToolCallViaResponseFormat ||\n input.toolChoice === \"required\" ||\n input.toolChoice instanceof Tool)\n ) {\n const lastMsg = result.messages.at(-1)!;\n let toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (\n toolCall &&\n !toolCall.name &&\n !toolCall.parameters &&\n input.toolChoice instanceof Tool\n ) {\n toolCall = { name: input.toolChoice.name, parameters: toolCall };\n }\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelToolCallError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n generatedContent: lastMsg.text,\n generatedError: \"Tool call was not produced.\",\n response: result,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n for (const toolCall of result.getToolCalls()) {\n const tool = input.tools?.find((t) => t.name === toolCall.toolName);\n if (!tool) {\n const availableTools = input.tools?.map((t) => t.name).join(\",\") || \"None\";\n throw new ChatModelToolCallError(\"Non existing tool call.\", [], {\n generatedError: `Error: Unknown tool '${toolCall.toolName}'.\\nUse on of the available tools: ${availableTools}`,\n generatedContent: JSON.stringify({\n name: toolCall.toolName,\n input: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n }),\n response: result,\n });\n }\n\n if (!isToolCallValid(toolCall)) {\n throw new ChatModelToolCallError(\"Malformed tool call.\", [], {\n generatedContent: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n generatedError: `The tool call for the '${toolCall.toolName}' tool has malformed parameters. It must be a valid JSON.`,\n response: result,\n });\n }\n\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n cacheEntry.resolve(chunks);\n\n return result;\n },\n config: { maxRetries: input.maxRetries ?? 0 },\n onRetry: async (_, lastError) => {\n if (this.fixInvalidToolCalls && lastError instanceof ChatModelToolCallError) {\n input.messages = input.messages.slice();\n if (lastError.data.generatedContent) {\n input.messages.push(\n new AssistantMessage(lastError.data.generatedContent, {\n tempMessage: true,\n }),\n );\n }\n\n const toolNames = input.tools?.map((t) => t.name).join(\", \") || \"None\";\n input.messages.push(\n new UserMessage(\n `${lastError.data.generatedError}\\n\\nAvailable Tools: ${toolNames}`,\n {\n tempMessage: true,\n },\n ),\n );\n } else if (\n this.retryOnEmptyResponse &&\n lastError instanceof EmptyChatModelResponseError\n ) {\n input.messages = input.messages.slice();\n const lastMessage = input.messages.at(-1);\n if (\n lastMessage &&\n lastMessage instanceof AssistantMessage &&\n lastMessage.meta[\"tempMessage\"] &&\n lastMessage.text === \"\"\n ) {\n input.messages.push(\n new UserMessage(\n \"No output received. Please regenerate your previous response.\",\n { tempMessage: true },\n ),\n );\n } else {\n // Python compatibility\n input.messages.push(new AssistantMessage(\"\", { tempMessage: true }));\n }\n }\n },\n }).get();\n\n input.messages = modelInputMessagesBackup;\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n retryOnEmptyResponse: this.retryOnEmptyResponse,\n fixInvalidToolCalls: this.fixInvalidToolCalls,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n isEmpty() {\n if (this.messages.length === 0) {\n return true;\n }\n return this.getTextContent() === \"\" && this.getToolCalls().length === 0;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  export { Backend } from './backend.cjs';
2
- export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-CC0s8z23.cjs';
2
+ export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-DaqV3woF.cjs';
3
3
  export { EmbeddingModel, EmbeddingModelEmitter, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from './embedding.cjs';
4
4
  export { AssistantMessage, CustomMessage, Message, MessageContentPart, MessageInput, MessageMeta, MessageRole, Role, SystemMessage, ToolMessage, UserMessage } from './message.cjs';
5
- export { BackendError, ChatModelError, EmbeddingModelError } from './errors.cjs';
5
+ export { BackendError, ChatModelError, ChatModelToolCallError, EmbeddingModelError, EmptyChatModelResponseError } from './errors.cjs';
6
6
  import '../internals/serializable.cjs';
7
7
  import '../internals/types.cjs';
8
8
  import '../internals/helpers/guards.cjs';
9
9
  import './constants.cjs';
10
10
  import '../context.cjs';
11
- import '../emitter-jN55XZZq.cjs';
11
+ import '../emitter-UkIkNrek.cjs';
12
12
  import '../internals/helpers/promise.cjs';
13
13
  import '../errors.cjs';
14
14
  import 'promise-based-task';
@@ -1,14 +1,14 @@
1
1
  export { Backend } from './backend.js';
2
- export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-D8SVtw5Q.js';
2
+ export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-DTxmaKP0.js';
3
3
  export { EmbeddingModel, EmbeddingModelEmitter, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from './embedding.js';
4
4
  export { AssistantMessage, CustomMessage, Message, MessageContentPart, MessageInput, MessageMeta, MessageRole, Role, SystemMessage, ToolMessage, UserMessage } from './message.js';
5
- export { BackendError, ChatModelError, EmbeddingModelError } from './errors.js';
5
+ export { BackendError, ChatModelError, ChatModelToolCallError, EmbeddingModelError, EmptyChatModelResponseError } from './errors.js';
6
6
  import '../internals/serializable.js';
7
7
  import '../internals/types.js';
8
8
  import '../internals/helpers/guards.js';
9
9
  import './constants.js';
10
10
  import '../context.js';
11
- import '../emitter-36-9MnvA.js';
11
+ import '../emitter-CL56qab4.js';
12
12
  import '../internals/helpers/promise.js';
13
13
  import '../errors.js';
14
14
  import 'promise-based-task';
@@ -1,8 +1,8 @@
1
1
  import { Run, GetRunContext } from '../context.cjs';
2
2
  import { Serializable } from '../internals/serializable.cjs';
3
- import { C as Callback, E as Emitter } from '../emitter-jN55XZZq.cjs';
3
+ import { C as Callback, E as Emitter } from '../emitter-UkIkNrek.cjs';
4
4
  import { FrameworkError } from '../errors.cjs';
5
- import { F as FullModelName } from '../chat-CC0s8z23.cjs';
5
+ import { F as FullModelName } from '../chat-DaqV3woF.cjs';
6
6
  import { ProviderName } from './constants.cjs';
7
7
  import '../internals/helpers/promise.cjs';
8
8
  import '../internals/types.cjs';
@@ -1,8 +1,8 @@
1
1
  import { Run, GetRunContext } from '../context.js';
2
2
  import { Serializable } from '../internals/serializable.js';
3
- import { C as Callback, E as Emitter } from '../emitter-36-9MnvA.js';
3
+ import { C as Callback, E as Emitter } from '../emitter-CL56qab4.js';
4
4
  import { FrameworkError } from '../errors.js';
5
- import { F as FullModelName } from '../chat-D8SVtw5Q.js';
5
+ import { F as FullModelName } from '../chat-DTxmaKP0.js';
6
6
  import { ProviderName } from './constants.js';
7
7
  import '../internals/helpers/promise.js';
8
8
  import '../internals/types.js';
@@ -14,6 +14,29 @@ class ChatModelError extends BackendError {
14
14
  __name(this, "ChatModelError");
15
15
  }
16
16
  }
17
+ class EmptyChatModelResponseError extends ChatModelError {
18
+ static {
19
+ __name(this, "EmptyChatModelResponseError");
20
+ }
21
+ constructor(message = "Chat Model produced an empty response!") {
22
+ super(message, [], {
23
+ isFatal: true,
24
+ isRetryable: true
25
+ });
26
+ }
27
+ }
28
+ class ChatModelToolCallError extends ChatModelError {
29
+ static {
30
+ __name(this, "ChatModelToolCallError");
31
+ }
32
+ data;
33
+ constructor(message, errors = [], data) {
34
+ super(message, errors, {
35
+ isFatal: true,
36
+ isRetryable: true
37
+ }), this.data = data;
38
+ }
39
+ }
17
40
  class EmbeddingModelError extends BackendError {
18
41
  static {
19
42
  __name(this, "EmbeddingModelError");
@@ -22,6 +45,8 @@ class EmbeddingModelError extends BackendError {
22
45
 
23
46
  exports.BackendError = BackendError;
24
47
  exports.ChatModelError = ChatModelError;
48
+ exports.ChatModelToolCallError = ChatModelToolCallError;
25
49
  exports.EmbeddingModelError = EmbeddingModelError;
50
+ exports.EmptyChatModelResponseError = EmptyChatModelResponseError;
26
51
  //# sourceMappingURL=errors.cjs.map
27
52
  //# sourceMappingURL=errors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/backend/errors.ts"],"names":["BackendError","FrameworkError","ChatModelError","EmbeddingModelError"],"mappings":";;;;;;AAOO,MAAMA,qBAAqBC,yBAAAA,CAAAA;EAPlC;;;AAOkD;AAE3C,MAAMC,uBAAuBF,YAAAA,CAAAA;EATpC;;;AASkD;AAE3C,MAAMG,4BAA4BH,YAAAA,CAAAA;EAXzC;;;AAWuD","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\n\nexport class BackendError extends FrameworkError {}\n\nexport class ChatModelError extends BackendError {}\n\nexport class EmbeddingModelError extends BackendError {}\n"]}
1
+ {"version":3,"sources":["../../src/backend/errors.ts"],"names":["BackendError","FrameworkError","ChatModelError","EmptyChatModelResponseError","message","isFatal","isRetryable","ChatModelToolCallError","errors","data","EmbeddingModelError"],"mappings":";;;;;;AAQO,MAAMA,qBAAqBC,yBAAAA,CAAAA;EARlC;;;AAQkD;AAE3C,MAAMC,uBAAuBF,YAAAA,CAAAA;EAVpC;;;AAUkD;AAE3C,MAAMG,oCAAoCD,cAAAA,CAAAA;EAZjD;;;AAaE,EAAA,WAAA,CAAYE,UAAU,wCAAA,EAA0C;AAC9D,IAAA,KAAA,CAAMA,OAAAA,EAAS,EAAA,EAAI;MACjBC,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa;KACf,CAAA;AACF;AACF;AAEO,MAAMC,+BAA+BL,cAAAA,CAAAA;EArB5C;;;;AAsBE,EAAA,WAAA,CACEE,OAAAA,EACAI,MAAAA,GAAkB,EAAA,EACFC,IAAAA,EAKhB;AACA,IAAA,KAAA,CAAML,SAASI,MAAAA,EAAQ;MACrBH,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa;KACf,CAAA,EAAA,KATgBG,IAAAA,GAAAA,IAAAA;AAUlB;AACF;AAEO,MAAMC,4BAA4BV,YAAAA,CAAAA;EAtCzC;;;AAsCuD","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport type { ChatModelOutput } from \"@/backend/chat.js\";\n\nexport class BackendError extends FrameworkError {}\n\nexport class ChatModelError extends BackendError {}\n\nexport class EmptyChatModelResponseError extends ChatModelError {\n constructor(message = \"Chat Model produced an empty response!\") {\n super(message, [], {\n isFatal: true,\n isRetryable: true,\n });\n }\n}\n\nexport class ChatModelToolCallError extends ChatModelError {\n constructor(\n message: string,\n errors: Error[] = [],\n public readonly data: {\n generatedContent: string;\n generatedError: string;\n response?: ChatModelOutput;\n },\n ) {\n super(message, errors, {\n isFatal: true,\n isRetryable: true,\n });\n }\n}\n\nexport class EmbeddingModelError extends BackendError {}\n"]}
@@ -1,6 +1,24 @@
1
1
  import { FrameworkError } from '../errors.cjs';
2
+ import { n as ChatModelOutput } from '../chat-DaqV3woF.cjs';
2
3
  import '../internals/types.cjs';
3
4
  import '../internals/helpers/guards.cjs';
5
+ import './message.cjs';
6
+ import '../internals/serializable.cjs';
7
+ import 'ai';
8
+ import '../context.cjs';
9
+ import '../emitter-UkIkNrek.cjs';
10
+ import '../internals/helpers/promise.cjs';
11
+ import 'promise-based-task';
12
+ import '../cache/base.cjs';
13
+ import './constants.cjs';
14
+ import '../tools/base.cjs';
15
+ import 'ajv';
16
+ import '../internals/helpers/schema.cjs';
17
+ import 'zod';
18
+ import 'zod-to-json-schema';
19
+ import '../template.cjs';
20
+ import '../logger/logger.cjs';
21
+ import 'pino';
4
22
 
5
23
  /**
6
24
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -11,7 +29,22 @@ declare class BackendError extends FrameworkError {
11
29
  }
12
30
  declare class ChatModelError extends BackendError {
13
31
  }
32
+ declare class EmptyChatModelResponseError extends ChatModelError {
33
+ constructor(message?: string);
34
+ }
35
+ declare class ChatModelToolCallError extends ChatModelError {
36
+ readonly data: {
37
+ generatedContent: string;
38
+ generatedError: string;
39
+ response?: ChatModelOutput;
40
+ };
41
+ constructor(message: string, errors: Error[] | undefined, data: {
42
+ generatedContent: string;
43
+ generatedError: string;
44
+ response?: ChatModelOutput;
45
+ });
46
+ }
14
47
  declare class EmbeddingModelError extends BackendError {
15
48
  }
16
49
 
17
- export { BackendError, ChatModelError, EmbeddingModelError };
50
+ export { BackendError, ChatModelError, ChatModelToolCallError, EmbeddingModelError, EmptyChatModelResponseError };
@@ -1,6 +1,24 @@
1
1
  import { FrameworkError } from '../errors.js';
2
+ import { n as ChatModelOutput } from '../chat-DTxmaKP0.js';
2
3
  import '../internals/types.js';
3
4
  import '../internals/helpers/guards.js';
5
+ import './message.js';
6
+ import '../internals/serializable.js';
7
+ import 'ai';
8
+ import '../context.js';
9
+ import '../emitter-CL56qab4.js';
10
+ import '../internals/helpers/promise.js';
11
+ import 'promise-based-task';
12
+ import '../cache/base.js';
13
+ import './constants.js';
14
+ import '../tools/base.js';
15
+ import 'ajv';
16
+ import '../internals/helpers/schema.js';
17
+ import 'zod';
18
+ import 'zod-to-json-schema';
19
+ import '../template.js';
20
+ import '../logger/logger.js';
21
+ import 'pino';
4
22
 
5
23
  /**
6
24
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
@@ -11,7 +29,22 @@ declare class BackendError extends FrameworkError {
11
29
  }
12
30
  declare class ChatModelError extends BackendError {
13
31
  }
32
+ declare class EmptyChatModelResponseError extends ChatModelError {
33
+ constructor(message?: string);
34
+ }
35
+ declare class ChatModelToolCallError extends ChatModelError {
36
+ readonly data: {
37
+ generatedContent: string;
38
+ generatedError: string;
39
+ response?: ChatModelOutput;
40
+ };
41
+ constructor(message: string, errors: Error[] | undefined, data: {
42
+ generatedContent: string;
43
+ generatedError: string;
44
+ response?: ChatModelOutput;
45
+ });
46
+ }
14
47
  declare class EmbeddingModelError extends BackendError {
15
48
  }
16
49
 
17
- export { BackendError, ChatModelError, EmbeddingModelError };
50
+ export { BackendError, ChatModelError, ChatModelToolCallError, EmbeddingModelError, EmptyChatModelResponseError };
@@ -12,12 +12,35 @@ class ChatModelError extends BackendError {
12
12
  __name(this, "ChatModelError");
13
13
  }
14
14
  }
15
+ class EmptyChatModelResponseError extends ChatModelError {
16
+ static {
17
+ __name(this, "EmptyChatModelResponseError");
18
+ }
19
+ constructor(message = "Chat Model produced an empty response!") {
20
+ super(message, [], {
21
+ isFatal: true,
22
+ isRetryable: true
23
+ });
24
+ }
25
+ }
26
+ class ChatModelToolCallError extends ChatModelError {
27
+ static {
28
+ __name(this, "ChatModelToolCallError");
29
+ }
30
+ data;
31
+ constructor(message, errors = [], data) {
32
+ super(message, errors, {
33
+ isFatal: true,
34
+ isRetryable: true
35
+ }), this.data = data;
36
+ }
37
+ }
15
38
  class EmbeddingModelError extends BackendError {
16
39
  static {
17
40
  __name(this, "EmbeddingModelError");
18
41
  }
19
42
  }
20
43
 
21
- export { BackendError, ChatModelError, EmbeddingModelError };
44
+ export { BackendError, ChatModelError, ChatModelToolCallError, EmbeddingModelError, EmptyChatModelResponseError };
22
45
  //# sourceMappingURL=errors.js.map
23
46
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/backend/errors.ts"],"names":["BackendError","FrameworkError","ChatModelError","EmbeddingModelError"],"mappings":";;;;AAOO,MAAMA,qBAAqBC,cAAAA,CAAAA;EAPlC;;;AAOkD;AAE3C,MAAMC,uBAAuBF,YAAAA,CAAAA;EATpC;;;AASkD;AAE3C,MAAMG,4BAA4BH,YAAAA,CAAAA;EAXzC;;;AAWuD","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\n\nexport class BackendError extends FrameworkError {}\n\nexport class ChatModelError extends BackendError {}\n\nexport class EmbeddingModelError extends BackendError {}\n"]}
1
+ {"version":3,"sources":["../../src/backend/errors.ts"],"names":["BackendError","FrameworkError","ChatModelError","EmptyChatModelResponseError","message","isFatal","isRetryable","ChatModelToolCallError","errors","data","EmbeddingModelError"],"mappings":";;;;AAQO,MAAMA,qBAAqBC,cAAAA,CAAAA;EARlC;;;AAQkD;AAE3C,MAAMC,uBAAuBF,YAAAA,CAAAA;EAVpC;;;AAUkD;AAE3C,MAAMG,oCAAoCD,cAAAA,CAAAA;EAZjD;;;AAaE,EAAA,WAAA,CAAYE,UAAU,wCAAA,EAA0C;AAC9D,IAAA,KAAA,CAAMA,OAAAA,EAAS,EAAA,EAAI;MACjBC,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa;KACf,CAAA;AACF;AACF;AAEO,MAAMC,+BAA+BL,cAAAA,CAAAA;EArB5C;;;;AAsBE,EAAA,WAAA,CACEE,OAAAA,EACAI,MAAAA,GAAkB,EAAA,EACFC,IAAAA,EAKhB;AACA,IAAA,KAAA,CAAML,SAASI,MAAAA,EAAQ;MACrBH,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa;KACf,CAAA,EAAA,KATgBG,IAAAA,GAAAA,IAAAA;AAUlB;AACF;AAEO,MAAMC,4BAA4BV,YAAAA,CAAAA;EAtCzC;;;AAsCuD","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport type { ChatModelOutput } from \"@/backend/chat.js\";\n\nexport class BackendError extends FrameworkError {}\n\nexport class ChatModelError extends BackendError {}\n\nexport class EmptyChatModelResponseError extends ChatModelError {\n constructor(message = \"Chat Model produced an empty response!\") {\n super(message, [], {\n isFatal: true,\n isRetryable: true,\n });\n }\n}\n\nexport class ChatModelToolCallError extends ChatModelError {\n constructor(\n message: string,\n errors: Error[] = [],\n public readonly data: {\n generatedContent: string;\n generatedError: string;\n response?: ChatModelOutput;\n },\n ) {\n super(message, errors, {\n isFatal: true,\n isRetryable: true,\n });\n }\n}\n\nexport class EmbeddingModelError extends BackendError {}\n"]}
@@ -1,12 +1,12 @@
1
1
  import '../internals/types.cjs';
2
2
  import './constants.cjs';
3
3
  import '../tools/base.cjs';
4
- export { F as FullModelName, r as filterToolsByToolChoice, q as generateToolUnionSchema, o as loadModel, p as parseModel } from '../chat-CC0s8z23.cjs';
4
+ export { F as FullModelName, r as filterToolsByToolChoice, q as generateToolUnionSchema, o as loadModel, p as parseModel } from '../chat-DaqV3woF.cjs';
5
5
  import 'zod';
6
6
  import '../internals/helpers/guards.cjs';
7
7
  import 'ajv';
8
8
  import '../context.cjs';
9
- import '../emitter-jN55XZZq.cjs';
9
+ import '../emitter-UkIkNrek.cjs';
10
10
  import '../internals/serializable.cjs';
11
11
  import '../internals/helpers/promise.cjs';
12
12
  import '../errors.cjs';
@@ -1,12 +1,12 @@
1
1
  import '../internals/types.js';
2
2
  import './constants.js';
3
3
  import '../tools/base.js';
4
- export { F as FullModelName, r as filterToolsByToolChoice, q as generateToolUnionSchema, o as loadModel, p as parseModel } from '../chat-D8SVtw5Q.js';
4
+ export { F as FullModelName, r as filterToolsByToolChoice, q as generateToolUnionSchema, o as loadModel, p as parseModel } from '../chat-DTxmaKP0.js';
5
5
  import 'zod';
6
6
  import '../internals/helpers/guards.js';
7
7
  import 'ajv';
8
8
  import '../context.js';
9
- import '../emitter-36-9MnvA.js';
9
+ import '../emitter-CL56qab4.js';
10
10
  import '../internals/serializable.js';
11
11
  import '../internals/helpers/promise.js';
12
12
  import '../errors.js';
@@ -1,7 +1,7 @@
1
1
  import { MiddlewareType, Run, GetRunContext } from './context.js';
2
2
  import { FrameworkError } from './errors.js';
3
3
  import { Serializable } from './internals/serializable.js';
4
- import { E as Emitter } from './emitter-36-9MnvA.js';
4
+ import { E as Emitter } from './emitter-CL56qab4.js';
5
5
  import { BaseMemory } from './memory/base.js';
6
6
  import { OmitEmpty } from './internals/types.js';
7
7
  import { AnyTool } from './tools/base.js';
@@ -1,7 +1,7 @@
1
1
  import { MiddlewareType, Run, GetRunContext } from './context.cjs';
2
2
  import { FrameworkError } from './errors.cjs';
3
3
  import { Serializable } from './internals/serializable.cjs';
4
- import { E as Emitter } from './emitter-jN55XZZq.cjs';
4
+ import { E as Emitter } from './emitter-UkIkNrek.cjs';
5
5
  import { BaseMemory } from './memory/base.cjs';
6
6
  import { OmitEmpty } from './internals/types.cjs';
7
7
  import { AnyTool } from './tools/base.cjs';
@@ -1,7 +1,7 @@
1
1
  import { Message, AssistantMessage, MessageContentPart } from './backend/message.js';
2
2
  import { MiddlewareType, Run, GetRunContext } from './context.js';
3
3
  import { Serializable } from './internals/serializable.js';
4
- import { C as Callback, E as Emitter } from './emitter-36-9MnvA.js';
4
+ import { C as Callback, E as Emitter } from './emitter-CL56qab4.js';
5
5
  import { FrameworkError } from './errors.js';
6
6
  import { Task } from 'promise-based-task';
7
7
  import { BaseCache } from './cache/base.js';
@@ -69,6 +69,7 @@ interface ChatModelInput extends ChatModelParameters {
69
69
  toolChoice?: ChatModelToolChoice;
70
70
  messages: Message[];
71
71
  streamPartialToolCalls?: boolean;
72
+ maxRetries?: number;
72
73
  }
73
74
  type ChatModelFinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
74
75
  interface ChatModelUsage {
@@ -114,6 +115,8 @@ declare abstract class ChatModel extends Serializable {
114
115
  readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
115
116
  toolCallFallbackViaResponseFormat: boolean;
116
117
  readonly modelSupportsToolCalling: boolean;
118
+ readonly fixInvalidToolCalls: boolean;
119
+ readonly retryOnEmptyResponse: boolean;
117
120
  abstract get modelId(): string;
118
121
  abstract get providerId(): string;
119
122
  create(input: ChatModelInput): Run<ChatModelOutput, this, readonly [ChatModelInput]>;
@@ -132,6 +135,8 @@ declare abstract class ChatModel extends Serializable {
132
135
  toolChoiceSupport: ChatModelToolChoiceSupport[];
133
136
  toolCallFallbackViaResponseFormat: boolean;
134
137
  modelSupportsToolCalling: boolean;
138
+ retryOnEmptyResponse: boolean;
139
+ fixInvalidToolCalls: boolean;
135
140
  };
136
141
  destroy(): void;
137
142
  protected createCacheAccessor({ abortSignal: _, messages, tools, ...input }: ChatModelInput): Promise<{
@@ -149,6 +154,7 @@ declare class ChatModelOutput extends Serializable {
149
154
  finishReason?: ChatModelFinishReason | undefined;
150
155
  constructor(messages: Message[], usage?: ChatModelUsage | undefined, finishReason?: ChatModelFinishReason | undefined);
151
156
  static fromChunks(chunks: ChatModelOutput[]): ChatModelOutput;
157
+ isEmpty(): boolean;
152
158
  merge(other: ChatModelOutput): void;
153
159
  dedupe(): void;
154
160
  getToolCalls(): ToolCallPart[];
@@ -1,7 +1,7 @@
1
1
  import { Message, AssistantMessage, MessageContentPart } from './backend/message.cjs';
2
2
  import { MiddlewareType, Run, GetRunContext } from './context.cjs';
3
3
  import { Serializable } from './internals/serializable.cjs';
4
- import { C as Callback, E as Emitter } from './emitter-jN55XZZq.cjs';
4
+ import { C as Callback, E as Emitter } from './emitter-UkIkNrek.cjs';
5
5
  import { FrameworkError } from './errors.cjs';
6
6
  import { Task } from 'promise-based-task';
7
7
  import { BaseCache } from './cache/base.cjs';
@@ -69,6 +69,7 @@ interface ChatModelInput extends ChatModelParameters {
69
69
  toolChoice?: ChatModelToolChoice;
70
70
  messages: Message[];
71
71
  streamPartialToolCalls?: boolean;
72
+ maxRetries?: number;
72
73
  }
73
74
  type ChatModelFinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
74
75
  interface ChatModelUsage {
@@ -114,6 +115,8 @@ declare abstract class ChatModel extends Serializable {
114
115
  readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
115
116
  toolCallFallbackViaResponseFormat: boolean;
116
117
  readonly modelSupportsToolCalling: boolean;
118
+ readonly fixInvalidToolCalls: boolean;
119
+ readonly retryOnEmptyResponse: boolean;
117
120
  abstract get modelId(): string;
118
121
  abstract get providerId(): string;
119
122
  create(input: ChatModelInput): Run<ChatModelOutput, this, readonly [ChatModelInput]>;
@@ -132,6 +135,8 @@ declare abstract class ChatModel extends Serializable {
132
135
  toolChoiceSupport: ChatModelToolChoiceSupport[];
133
136
  toolCallFallbackViaResponseFormat: boolean;
134
137
  modelSupportsToolCalling: boolean;
138
+ retryOnEmptyResponse: boolean;
139
+ fixInvalidToolCalls: boolean;
135
140
  };
136
141
  destroy(): void;
137
142
  protected createCacheAccessor({ abortSignal: _, messages, tools, ...input }: ChatModelInput): Promise<{
@@ -149,6 +154,7 @@ declare class ChatModelOutput extends Serializable {
149
154
  finishReason?: ChatModelFinishReason | undefined;
150
155
  constructor(messages: Message[], usage?: ChatModelUsage | undefined, finishReason?: ChatModelFinishReason | undefined);
151
156
  static fromChunks(chunks: ChatModelOutput[]): ChatModelOutput;
157
+ isEmpty(): boolean;
152
158
  merge(other: ChatModelOutput): void;
153
159
  dedupe(): void;
154
160
  getToolCalls(): ToolCallPart[];
@@ -1,4 +1,4 @@
1
- import { E as Emitter, C as Callback } from './emitter-jN55XZZq.cjs';
1
+ import { E as Emitter, C as Callback } from './emitter-UkIkNrek.cjs';
2
2
  import { Serializable } from './internals/serializable.cjs';
3
3
  import { LazyPromise } from './internals/helpers/promise.cjs';
4
4
  import { FrameworkError } from './errors.cjs';
package/dist/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { E as Emitter, C as Callback } from './emitter-36-9MnvA.js';
1
+ import { E as Emitter, C as Callback } from './emitter-CL56qab4.js';
2
2
  import { Serializable } from './internals/serializable.js';
3
3
  import { LazyPromise } from './internals/helpers/promise.js';
4
4
  import { FrameworkError } from './errors.js';