beeai-framework 0.1.9 → 0.1.10

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 (155) hide show
  1. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +1 -1
  2. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +1 -1
  3. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +1 -1
  4. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +1 -1
  5. package/dist/adapters/anthropic/backend/chat.d.cts +1 -1
  6. package/dist/adapters/anthropic/backend/chat.d.ts +1 -1
  7. package/dist/adapters/anthropic/backend/embedding.d.cts +1 -1
  8. package/dist/adapters/anthropic/backend/embedding.d.ts +1 -1
  9. package/dist/adapters/azure-openai/backend/chat.d.cts +1 -1
  10. package/dist/adapters/azure-openai/backend/chat.d.ts +1 -1
  11. package/dist/adapters/azure-openai/backend/embedding.d.cts +1 -1
  12. package/dist/adapters/azure-openai/backend/embedding.d.ts +1 -1
  13. package/dist/adapters/dummy/backend/chat.d.cts +1 -1
  14. package/dist/adapters/dummy/backend/chat.d.ts +1 -1
  15. package/dist/adapters/dummy/backend/embedding.d.cts +1 -1
  16. package/dist/adapters/dummy/backend/embedding.d.ts +1 -1
  17. package/dist/adapters/google-vertex/backend/chat.d.cts +1 -1
  18. package/dist/adapters/google-vertex/backend/chat.d.ts +1 -1
  19. package/dist/adapters/google-vertex/backend/embedding.d.cts +1 -1
  20. package/dist/adapters/google-vertex/backend/embedding.d.ts +1 -1
  21. package/dist/adapters/groq/backend/chat.d.cts +1 -1
  22. package/dist/adapters/groq/backend/chat.d.ts +1 -1
  23. package/dist/adapters/groq/backend/embedding.d.cts +1 -1
  24. package/dist/adapters/groq/backend/embedding.d.ts +1 -1
  25. package/dist/adapters/langchain/backend/chat.d.cts +1 -1
  26. package/dist/adapters/langchain/backend/chat.d.ts +1 -1
  27. package/dist/adapters/langchain/backend/embedding.d.cts +1 -1
  28. package/dist/adapters/langchain/backend/embedding.d.ts +1 -1
  29. package/dist/adapters/langchain/tools.d.cts +1 -1
  30. package/dist/adapters/langchain/tools.d.ts +1 -1
  31. package/dist/adapters/ollama/backend/chat.d.cts +1 -1
  32. package/dist/adapters/ollama/backend/chat.d.ts +1 -1
  33. package/dist/adapters/ollama/backend/embedding.d.cts +1 -1
  34. package/dist/adapters/ollama/backend/embedding.d.ts +1 -1
  35. package/dist/adapters/openai/backend/chat.d.cts +1 -1
  36. package/dist/adapters/openai/backend/chat.d.ts +1 -1
  37. package/dist/adapters/openai/backend/embedding.d.cts +1 -1
  38. package/dist/adapters/openai/backend/embedding.d.ts +1 -1
  39. package/dist/adapters/vercel/backend/chat.cjs +11 -1
  40. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  41. package/dist/adapters/vercel/backend/chat.d.cts +1 -1
  42. package/dist/adapters/vercel/backend/chat.d.ts +1 -1
  43. package/dist/adapters/vercel/backend/chat.js +12 -2
  44. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  45. package/dist/adapters/vercel/backend/embedding.d.cts +1 -1
  46. package/dist/adapters/vercel/backend/embedding.d.ts +1 -1
  47. package/dist/adapters/watsonx/backend/chat.d.cts +1 -1
  48. package/dist/adapters/watsonx/backend/chat.d.ts +1 -1
  49. package/dist/adapters/watsonx/backend/embedding.d.cts +1 -1
  50. package/dist/adapters/watsonx/backend/embedding.d.ts +1 -1
  51. package/dist/{agent-Bpt7IFa_.d.cts → agent-COg8SPbf.d.cts} +2 -2
  52. package/dist/{agent-Bf2FaCKy.d.ts → agent-Dv5YSk8H.d.ts} +2 -2
  53. package/dist/agents/base.d.cts +2 -2
  54. package/dist/agents/base.d.ts +2 -2
  55. package/dist/agents/experimental/remote/agent.d.cts +2 -2
  56. package/dist/agents/experimental/remote/agent.d.ts +2 -2
  57. package/dist/agents/experimental/replan/agent.d.cts +2 -2
  58. package/dist/agents/experimental/replan/agent.d.ts +2 -2
  59. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  60. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  61. package/dist/agents/experimental/streamlit/agent.d.cts +2 -2
  62. package/dist/agents/experimental/streamlit/agent.d.ts +2 -2
  63. package/dist/agents/react/agent.d.cts +3 -3
  64. package/dist/agents/react/agent.d.ts +3 -3
  65. package/dist/agents/react/runners/base.d.cts +3 -3
  66. package/dist/agents/react/runners/base.d.ts +3 -3
  67. package/dist/agents/react/runners/deep-think/runner.d.cts +3 -3
  68. package/dist/agents/react/runners/deep-think/runner.d.ts +3 -3
  69. package/dist/agents/react/runners/default/runner.d.cts +3 -3
  70. package/dist/agents/react/runners/default/runner.d.ts +3 -3
  71. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  72. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  73. package/dist/agents/react/types.d.cts +1 -1
  74. package/dist/agents/react/types.d.ts +1 -1
  75. package/dist/agents/toolCalling/agent.d.cts +2 -2
  76. package/dist/agents/toolCalling/agent.d.ts +2 -2
  77. package/dist/agents/toolCalling/types.d.cts +1 -1
  78. package/dist/agents/toolCalling/types.d.ts +1 -1
  79. package/dist/agents/types.d.cts +2 -2
  80. package/dist/agents/types.d.ts +2 -2
  81. package/dist/backend/backend.d.cts +1 -1
  82. package/dist/backend/backend.d.ts +1 -1
  83. package/dist/backend/chat.d.cts +1 -1
  84. package/dist/backend/chat.d.ts +1 -1
  85. package/dist/backend/core.d.cts +1 -1
  86. package/dist/backend/core.d.ts +1 -1
  87. package/dist/backend/embedding.d.cts +1 -1
  88. package/dist/backend/embedding.d.ts +1 -1
  89. package/dist/{base-daM6fHUP.d.cts → base-Csr9guq2.d.cts} +1 -1
  90. package/dist/{base-mmG-8Pk9.d.ts → base-DHhpWHQm.d.ts} +1 -1
  91. package/dist/context.d.cts +1 -1
  92. package/dist/context.d.ts +1 -1
  93. package/dist/emitter/emitter.d.cts +1 -1
  94. package/dist/emitter/emitter.d.ts +1 -1
  95. package/dist/emitter/types.d.cts +1 -1
  96. package/dist/emitter/types.d.ts +1 -1
  97. package/dist/index.d.cts +2 -2
  98. package/dist/index.d.ts +2 -2
  99. package/dist/internals/fetcher.d.cts +1 -1
  100. package/dist/internals/fetcher.d.ts +1 -1
  101. package/dist/memory/summarizeMemory.d.cts +1 -1
  102. package/dist/memory/summarizeMemory.d.ts +1 -1
  103. package/dist/parsers/linePrefix.d.cts +1 -1
  104. package/dist/parsers/linePrefix.d.ts +1 -1
  105. package/dist/tools/arxiv.d.cts +1 -1
  106. package/dist/tools/arxiv.d.ts +1 -1
  107. package/dist/tools/base.d.cts +1 -1
  108. package/dist/tools/base.d.ts +1 -1
  109. package/dist/tools/calculator.d.cts +1 -1
  110. package/dist/tools/calculator.d.ts +1 -1
  111. package/dist/tools/custom.d.cts +1 -1
  112. package/dist/tools/custom.d.ts +1 -1
  113. package/dist/tools/database/elasticsearch.d.cts +1 -1
  114. package/dist/tools/database/elasticsearch.d.ts +1 -1
  115. package/dist/tools/database/milvus.d.cts +3 -3
  116. package/dist/tools/database/milvus.d.ts +3 -3
  117. package/dist/tools/database/sql.d.cts +1 -1
  118. package/dist/tools/database/sql.d.ts +1 -1
  119. package/dist/tools/llm.d.cts +1 -1
  120. package/dist/tools/llm.d.ts +1 -1
  121. package/dist/tools/mcp.d.cts +1 -1
  122. package/dist/tools/mcp.d.ts +1 -1
  123. package/dist/tools/openapi.d.cts +1 -1
  124. package/dist/tools/openapi.d.ts +1 -1
  125. package/dist/tools/python/output.d.cts +1 -1
  126. package/dist/tools/python/output.d.ts +1 -1
  127. package/dist/tools/python/python.d.cts +1 -1
  128. package/dist/tools/python/python.d.ts +1 -1
  129. package/dist/tools/search/base.d.cts +1 -1
  130. package/dist/tools/search/base.d.ts +1 -1
  131. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  132. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  133. package/dist/tools/search/googleSearch.d.cts +1 -1
  134. package/dist/tools/search/googleSearch.d.ts +1 -1
  135. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  136. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  137. package/dist/tools/search/wikipedia.d.cts +1 -1
  138. package/dist/tools/search/wikipedia.d.ts +1 -1
  139. package/dist/tools/similarity.d.cts +1 -1
  140. package/dist/tools/similarity.d.ts +1 -1
  141. package/dist/tools/weather/openMeteo.d.cts +1 -1
  142. package/dist/tools/weather/openMeteo.d.ts +1 -1
  143. package/dist/tools/web/webCrawler.d.cts +1 -1
  144. package/dist/tools/web/webCrawler.d.ts +1 -1
  145. package/dist/version.cjs +1 -1
  146. package/dist/version.cjs.map +1 -1
  147. package/dist/version.js +1 -1
  148. package/dist/version.js.map +1 -1
  149. package/dist/workflows/agent.d.cts +39 -39
  150. package/dist/workflows/agent.d.ts +39 -39
  151. package/dist/workflows/workflow.d.cts +1 -1
  152. package/dist/workflows/workflow.d.ts +1 -1
  153. package/package.json +1 -1
  154. package/dist/{emitter-C9EN5B0j.d.cts → emitter-BWtGHYn0.d.cts} +1 -1
  155. package/dist/{emitter-BxVxGBbJ.d.ts → emitter-l0W9gC1A.d.ts} +1 -1
@@ -9,7 +9,7 @@ import '../../../backend/chat.cjs';
9
9
  import '../../../backend/message.cjs';
10
10
  import 'ai';
11
11
  import '../../../context.cjs';
12
- import '../../../emitter-C9EN5B0j.cjs';
12
+ import '../../../emitter-BWtGHYn0.cjs';
13
13
  import '../../../internals/helpers/promise.cjs';
14
14
  import '../../../errors.cjs';
15
15
  import 'promise-based-task';
@@ -9,7 +9,7 @@ import '../../../backend/chat.js';
9
9
  import '../../../backend/message.js';
10
10
  import 'ai';
11
11
  import '../../../context.js';
12
- import '../../../emitter-BxVxGBbJ.js';
12
+ import '../../../emitter-l0W9gC1A.js';
13
13
  import '../../../internals/helpers/promise.js';
14
14
  import '../../../errors.js';
15
15
  import 'promise-based-task';
@@ -3,7 +3,7 @@ import { AmazonBedrockProvider } from '@ai-sdk/amazon-bedrock';
3
3
  import { AmazonBedrockClient, AmazonBedrockClientSettings } from './client.cjs';
4
4
  import '../../../backend/embedding.cjs';
5
5
  import '../../../context.cjs';
6
- import '../../../emitter-C9EN5B0j.cjs';
6
+ import '../../../emitter-BWtGHYn0.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import '../../../internals/serializable.cjs';
@@ -3,7 +3,7 @@ import { AmazonBedrockProvider } from '@ai-sdk/amazon-bedrock';
3
3
  import { AmazonBedrockClient, AmazonBedrockClientSettings } from './client.js';
4
4
  import '../../../backend/embedding.js';
5
5
  import '../../../context.js';
6
- import '../../../emitter-BxVxGBbJ.js';
6
+ import '../../../emitter-l0W9gC1A.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import '../../../internals/serializable.js';
@@ -8,7 +8,7 @@ import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
10
  import '../../../context.cjs';
11
- import '../../../emitter-C9EN5B0j.cjs';
11
+ import '../../../emitter-BWtGHYn0.cjs';
12
12
  import '../../../internals/helpers/promise.cjs';
13
13
  import '../../../errors.cjs';
14
14
  import 'promise-based-task';
@@ -8,7 +8,7 @@ import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
10
  import '../../../context.js';
11
- import '../../../emitter-BxVxGBbJ.js';
11
+ import '../../../emitter-l0W9gC1A.js';
12
12
  import '../../../internals/helpers/promise.js';
13
13
  import '../../../errors.js';
14
14
  import 'promise-based-task';
@@ -3,7 +3,7 @@ import { AnthropicClientSettings, AnthropicClient } from './client.cjs';
3
3
  import { AnthropicProvider } from '@ai-sdk/anthropic';
4
4
  import '../../../backend/embedding.cjs';
5
5
  import '../../../context.cjs';
6
- import '../../../emitter-C9EN5B0j.cjs';
6
+ import '../../../emitter-BWtGHYn0.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import '../../../internals/serializable.cjs';
@@ -3,7 +3,7 @@ import { AnthropicClientSettings, AnthropicClient } from './client.js';
3
3
  import { AnthropicProvider } from '@ai-sdk/anthropic';
4
4
  import '../../../backend/embedding.js';
5
5
  import '../../../context.js';
6
- import '../../../emitter-BxVxGBbJ.js';
6
+ import '../../../emitter-l0W9gC1A.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import '../../../internals/serializable.js';
@@ -8,7 +8,7 @@ import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
10
  import '../../../context.cjs';
11
- import '../../../emitter-C9EN5B0j.cjs';
11
+ import '../../../emitter-BWtGHYn0.cjs';
12
12
  import '../../../internals/helpers/promise.cjs';
13
13
  import '../../../errors.cjs';
14
14
  import 'promise-based-task';
@@ -8,7 +8,7 @@ import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
10
  import '../../../context.js';
11
- import '../../../emitter-BxVxGBbJ.js';
11
+ import '../../../emitter-l0W9gC1A.js';
12
12
  import '../../../internals/helpers/promise.js';
13
13
  import '../../../errors.js';
14
14
  import 'promise-based-task';
@@ -3,7 +3,7 @@ import { AzureOpenAIClient, AzureOpenAIClientSettings } from './client.cjs';
3
3
  import { AzureOpenAIProvider } from '@ai-sdk/azure';
4
4
  import '../../../backend/embedding.cjs';
5
5
  import '../../../context.cjs';
6
- import '../../../emitter-C9EN5B0j.cjs';
6
+ import '../../../emitter-BWtGHYn0.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import '../../../internals/serializable.cjs';
@@ -3,7 +3,7 @@ import { AzureOpenAIClient, AzureOpenAIClientSettings } from './client.js';
3
3
  import { AzureOpenAIProvider } from '@ai-sdk/azure';
4
4
  import '../../../backend/embedding.js';
5
5
  import '../../../context.js';
6
- import '../../../emitter-BxVxGBbJ.js';
6
+ import '../../../emitter-l0W9gC1A.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import '../../../internals/serializable.js';
@@ -1,6 +1,6 @@
1
1
  import { ChatModel, ChatModelParameters, ChatModelEvents, ChatModelInput, ChatModelOutput, ChatModelCache } from '../../../backend/chat.cjs';
2
2
  import { GetRunContext } from '../../../context.cjs';
3
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
3
+ import { E as Emitter } from '../../../emitter-BWtGHYn0.cjs';
4
4
  import '../../../backend/message.cjs';
5
5
  import '../../../internals/serializable.cjs';
6
6
  import '../../../internals/types.cjs';
@@ -1,6 +1,6 @@
1
1
  import { ChatModel, ChatModelParameters, ChatModelEvents, ChatModelInput, ChatModelOutput, ChatModelCache } from '../../../backend/chat.js';
2
2
  import { GetRunContext } from '../../../context.js';
3
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
3
+ import { E as Emitter } from '../../../emitter-l0W9gC1A.js';
4
4
  import '../../../backend/message.js';
5
5
  import '../../../internals/serializable.js';
6
6
  import '../../../internals/types.js';
@@ -1,5 +1,5 @@
1
1
  import { GetRunContext } from '../../../context.cjs';
2
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
2
+ import { E as Emitter } from '../../../emitter-BWtGHYn0.cjs';
3
3
  import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
4
4
  import '../../../internals/serializable.cjs';
5
5
  import '../../../internals/types.cjs';
@@ -1,5 +1,5 @@
1
1
  import { GetRunContext } from '../../../context.js';
2
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
2
+ import { E as Emitter } from '../../../emitter-l0W9gC1A.js';
3
3
  import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
4
4
  import '../../../internals/serializable.js';
5
5
  import '../../../internals/types.js';
@@ -8,7 +8,7 @@ import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
10
  import '../../../context.cjs';
11
- import '../../../emitter-C9EN5B0j.cjs';
11
+ import '../../../emitter-BWtGHYn0.cjs';
12
12
  import '../../../internals/helpers/promise.cjs';
13
13
  import '../../../errors.cjs';
14
14
  import 'promise-based-task';
@@ -8,7 +8,7 @@ import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
10
  import '../../../context.js';
11
- import '../../../emitter-BxVxGBbJ.js';
11
+ import '../../../emitter-l0W9gC1A.js';
12
12
  import '../../../internals/helpers/promise.js';
13
13
  import '../../../errors.js';
14
14
  import 'promise-based-task';
@@ -7,7 +7,7 @@ import '../../../internals/types.cjs';
7
7
  import '../../../internals/helpers/guards.cjs';
8
8
  import '../../../backend/embedding.cjs';
9
9
  import '../../../context.cjs';
10
- import '../../../emitter-C9EN5B0j.cjs';
10
+ import '../../../emitter-BWtGHYn0.cjs';
11
11
  import '../../../internals/helpers/promise.cjs';
12
12
  import '../../../errors.cjs';
13
13
  import '../../../backend/utils.cjs';
@@ -7,7 +7,7 @@ import '../../../internals/types.js';
7
7
  import '../../../internals/helpers/guards.js';
8
8
  import '../../../backend/embedding.js';
9
9
  import '../../../context.js';
10
- import '../../../emitter-BxVxGBbJ.js';
10
+ import '../../../emitter-l0W9gC1A.js';
11
11
  import '../../../internals/helpers/promise.js';
12
12
  import '../../../errors.js';
13
13
  import '../../../backend/utils.js';
@@ -8,7 +8,7 @@ import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
10
  import '../../../context.cjs';
11
- import '../../../emitter-C9EN5B0j.cjs';
11
+ import '../../../emitter-BWtGHYn0.cjs';
12
12
  import '../../../internals/helpers/promise.cjs';
13
13
  import '../../../errors.cjs';
14
14
  import 'promise-based-task';
@@ -8,7 +8,7 @@ import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
10
  import '../../../context.js';
11
- import '../../../emitter-BxVxGBbJ.js';
11
+ import '../../../emitter-l0W9gC1A.js';
12
12
  import '../../../internals/helpers/promise.js';
13
13
  import '../../../errors.js';
14
14
  import 'promise-based-task';
@@ -3,7 +3,7 @@ import { GroqClientSettings, GroqClient } from './client.cjs';
3
3
  import { GroqProvider } from '@ai-sdk/groq';
4
4
  import '../../../backend/embedding.cjs';
5
5
  import '../../../context.cjs';
6
- import '../../../emitter-C9EN5B0j.cjs';
6
+ import '../../../emitter-BWtGHYn0.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import '../../../internals/serializable.cjs';
@@ -3,7 +3,7 @@ import { GroqClientSettings, GroqClient } from './client.js';
3
3
  import { GroqProvider } from '@ai-sdk/groq';
4
4
  import '../../../backend/embedding.js';
5
5
  import '../../../context.js';
6
- import '../../../emitter-BxVxGBbJ.js';
6
+ import '../../../emitter-l0W9gC1A.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import '../../../internals/serializable.js';
@@ -7,7 +7,7 @@ import '../../../internals/serializable.cjs';
7
7
  import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
- import '../../../emitter-C9EN5B0j.cjs';
10
+ import '../../../emitter-BWtGHYn0.cjs';
11
11
  import '../../../errors.cjs';
12
12
  import 'promise-based-task';
13
13
  import '../../../cache/base.cjs';
@@ -7,7 +7,7 @@ import '../../../internals/serializable.js';
7
7
  import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
- import '../../../emitter-BxVxGBbJ.js';
10
+ import '../../../emitter-l0W9gC1A.js';
11
11
  import '../../../errors.js';
12
12
  import 'promise-based-task';
13
13
  import '../../../cache/base.js';
@@ -1,6 +1,6 @@
1
1
  import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
2
2
  import { RunContext } from '../../../context.cjs';
3
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
3
+ import { E as Emitter } from '../../../emitter-BWtGHYn0.cjs';
4
4
  import { Embeddings } from '@langchain/core/embeddings';
5
5
  import '../../../internals/serializable.cjs';
6
6
  import '../../../internals/types.cjs';
@@ -1,6 +1,6 @@
1
1
  import { EmbeddingModel, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
2
2
  import { RunContext } from '../../../context.js';
3
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
3
+ import { E as Emitter } from '../../../emitter-l0W9gC1A.js';
4
4
  import { Embeddings } from '@langchain/core/embeddings';
5
5
  import '../../../internals/serializable.js';
6
6
  import '../../../internals/types.js';
@@ -4,7 +4,7 @@ import { BaseToolRunOptions, BaseToolOptions, JSONToolOutput, Tool, ToolEmitter,
4
4
  import { GetRunContext } from '../../context.cjs';
5
5
  import { RunnableConfig } from '@langchain/core/runnables';
6
6
  import * as LCTools from '@langchain/core/tools';
7
- import { E as Emitter } from '../../emitter-C9EN5B0j.cjs';
7
+ import { E as Emitter } from '../../emitter-BWtGHYn0.cjs';
8
8
  import '../../internals/serializable.cjs';
9
9
  import '../../internals/types.cjs';
10
10
  import '../../internals/helpers/guards.cjs';
@@ -4,7 +4,7 @@ import { BaseToolRunOptions, BaseToolOptions, JSONToolOutput, Tool, ToolEmitter,
4
4
  import { GetRunContext } from '../../context.js';
5
5
  import { RunnableConfig } from '@langchain/core/runnables';
6
6
  import * as LCTools from '@langchain/core/tools';
7
- import { E as Emitter } from '../../emitter-BxVxGBbJ.js';
7
+ import { E as Emitter } from '../../emitter-l0W9gC1A.js';
8
8
  import '../../internals/serializable.js';
9
9
  import '../../internals/types.js';
10
10
  import '../../internals/helpers/guards.js';
@@ -8,7 +8,7 @@ import '../../../internals/types.cjs';
8
8
  import '../../../internals/helpers/guards.cjs';
9
9
  import 'ai';
10
10
  import '../../../context.cjs';
11
- import '../../../emitter-C9EN5B0j.cjs';
11
+ import '../../../emitter-BWtGHYn0.cjs';
12
12
  import '../../../internals/helpers/promise.cjs';
13
13
  import '../../../errors.cjs';
14
14
  import 'promise-based-task';
@@ -8,7 +8,7 @@ import '../../../internals/types.js';
8
8
  import '../../../internals/helpers/guards.js';
9
9
  import 'ai';
10
10
  import '../../../context.js';
11
- import '../../../emitter-BxVxGBbJ.js';
11
+ import '../../../emitter-l0W9gC1A.js';
12
12
  import '../../../internals/helpers/promise.js';
13
13
  import '../../../errors.js';
14
14
  import 'promise-based-task';
@@ -7,7 +7,7 @@ import '../../../internals/types.cjs';
7
7
  import '../../../internals/helpers/guards.cjs';
8
8
  import '../../../backend/embedding.cjs';
9
9
  import '../../../context.cjs';
10
- import '../../../emitter-C9EN5B0j.cjs';
10
+ import '../../../emitter-BWtGHYn0.cjs';
11
11
  import '../../../internals/helpers/promise.cjs';
12
12
  import '../../../errors.cjs';
13
13
  import '../../../backend/utils.cjs';
@@ -7,7 +7,7 @@ import '../../../internals/types.js';
7
7
  import '../../../internals/helpers/guards.js';
8
8
  import '../../../backend/embedding.js';
9
9
  import '../../../context.js';
10
- import '../../../emitter-BxVxGBbJ.js';
10
+ import '../../../emitter-l0W9gC1A.js';
11
11
  import '../../../internals/helpers/promise.js';
12
12
  import '../../../errors.js';
13
13
  import '../../../backend/utils.js';
@@ -9,7 +9,7 @@ import '../../../backend/chat.cjs';
9
9
  import '../../../backend/message.cjs';
10
10
  import 'ai';
11
11
  import '../../../context.cjs';
12
- import '../../../emitter-C9EN5B0j.cjs';
12
+ import '../../../emitter-BWtGHYn0.cjs';
13
13
  import '../../../internals/helpers/promise.cjs';
14
14
  import '../../../errors.cjs';
15
15
  import 'promise-based-task';
@@ -9,7 +9,7 @@ import '../../../backend/chat.js';
9
9
  import '../../../backend/message.js';
10
10
  import 'ai';
11
11
  import '../../../context.js';
12
- import '../../../emitter-BxVxGBbJ.js';
12
+ import '../../../emitter-l0W9gC1A.js';
13
13
  import '../../../internals/helpers/promise.js';
14
14
  import '../../../errors.js';
15
15
  import 'promise-based-task';
@@ -7,7 +7,7 @@ import '../../../internals/types.cjs';
7
7
  import '../../../internals/helpers/guards.cjs';
8
8
  import '../../../backend/embedding.cjs';
9
9
  import '../../../context.cjs';
10
- import '../../../emitter-C9EN5B0j.cjs';
10
+ import '../../../emitter-BWtGHYn0.cjs';
11
11
  import '../../../internals/helpers/promise.cjs';
12
12
  import '../../../errors.cjs';
13
13
  import '../../../backend/utils.cjs';
@@ -7,7 +7,7 @@ import '../../../internals/types.js';
7
7
  import '../../../internals/helpers/guards.js';
8
8
  import '../../../backend/embedding.js';
9
9
  import '../../../context.js';
10
- import '../../../emitter-BxVxGBbJ.js';
10
+ import '../../../emitter-l0W9gC1A.js';
11
11
  import '../../../internals/helpers/promise.js';
12
12
  import '../../../errors.js';
13
13
  import '../../../backend/utils.js';
@@ -135,10 +135,20 @@ class VercelChatModel extends chat_cjs.ChatModel {
135
135
  role: "tool",
136
136
  content: msg.content
137
137
  };
138
+ } else if (msg instanceof message_cjs.UserMessage) {
139
+ return {
140
+ role: "user",
141
+ content: msg.content
142
+ };
143
+ } else if (msg instanceof message_cjs.SystemMessage) {
144
+ return {
145
+ role: "user",
146
+ content: msg.content
147
+ };
138
148
  }
139
149
  return {
140
150
  role: msg.role,
141
- content: msg.text
151
+ content: msg.content
142
152
  };
143
153
  });
144
154
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","text","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n }\n return { role: msg.role as \"user\" | \"system\", content: msg.text };\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","UserMessage","SystemMessage","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"user\", content: msg.content };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { ChatModel, ChatModelEvents, ChatModelInput, ChatModelOutput, ChatModelObjectInput, ChatModelObjectOutput, ChatModelCache, ChatModelParameters } from '../../../backend/chat.cjs';
2
2
  import { LanguageModelV1, generateText, CoreAssistantMessage, CoreToolMessage } from 'ai';
3
- import { E as Emitter } from '../../../emitter-C9EN5B0j.cjs';
3
+ import { E as Emitter } from '../../../emitter-BWtGHYn0.cjs';
4
4
  import { Message } from '../../../backend/message.cjs';
5
5
  import { GetRunContext } from '../../../context.cjs';
6
6
  import '../../../internals/serializable.cjs';
@@ -1,6 +1,6 @@
1
1
  import { ChatModel, ChatModelEvents, ChatModelInput, ChatModelOutput, ChatModelObjectInput, ChatModelObjectOutput, ChatModelCache, ChatModelParameters } from '../../../backend/chat.js';
2
2
  import { LanguageModelV1, generateText, CoreAssistantMessage, CoreToolMessage } from 'ai';
3
- import { E as Emitter } from '../../../emitter-BxVxGBbJ.js';
3
+ import { E as Emitter } from '../../../emitter-l0W9gC1A.js';
4
4
  import { Message } from '../../../backend/message.js';
5
5
  import { GetRunContext } from '../../../context.js';
6
6
  import '../../../internals/serializable.js';
@@ -1,7 +1,7 @@
1
1
  import { ChatModel, ChatModelOutput } from '../../../backend/chat.js';
2
2
  import { generateText, generateObject, streamText, jsonSchema } from 'ai';
3
3
  import { Emitter } from '../../../emitter/emitter.js';
4
- import { ToolMessage, AssistantMessage } from '../../../backend/message.js';
4
+ import { ToolMessage, AssistantMessage, UserMessage, SystemMessage } from '../../../backend/message.js';
5
5
  import { ValueError } from '../../../errors.js';
6
6
  import { toCamelCase, isEmpty, mapToObj } from 'remeda';
7
7
  import { ChatModelError } from '../../../backend/errors.js';
@@ -133,10 +133,20 @@ class VercelChatModel extends ChatModel {
133
133
  role: "tool",
134
134
  content: msg.content
135
135
  };
136
+ } else if (msg instanceof UserMessage) {
137
+ return {
138
+ role: "user",
139
+ content: msg.content
140
+ };
141
+ } else if (msg instanceof SystemMessage) {
142
+ return {
143
+ role: "user",
144
+ content: msg.content
145
+ };
136
146
  }
137
147
  return {
138
148
  role: msg.role,
139
- content: msg.text
149
+ content: msg.content
140
150
  };
141
151
  });
142
152
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","text","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n }\n return { role: msg.role as \"user\" | \"system\", content: msg.text };\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","UserMessage","SystemMessage","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"user\", content: msg.content };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}