@botonic/plugin-ai-agents 0.56.0-alpha.0 → 0.57.0-rslib-esm.0

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 (161) hide show
  1. package/lib/esm/agents/base-agent.d.ts +4 -4
  2. package/lib/esm/agents/base-agent.js +47 -20
  3. package/lib/esm/agents/base-agent.js.map +1 -1
  4. package/lib/esm/agents/index.d.ts +2 -2
  5. package/lib/esm/agents/index.js +8 -7
  6. package/lib/esm/agents/index.js.map +1 -1
  7. package/lib/esm/agents/router-agent.d.ts +5 -5
  8. package/lib/esm/agents/router-agent.js +32 -15
  9. package/lib/esm/agents/router-agent.js.map +1 -1
  10. package/lib/esm/agents/specialist-agent.d.ts +5 -5
  11. package/lib/esm/agents/specialist-agent.js +65 -45
  12. package/lib/esm/agents/specialist-agent.js.map +1 -1
  13. package/lib/esm/bot-config-tools.d.ts +1 -1
  14. package/lib/esm/bot-config-tools.js +15 -13
  15. package/lib/esm/bot-config-tools.js.map +1 -1
  16. package/lib/esm/constants.js +18 -17
  17. package/lib/esm/constants.js.map +1 -1
  18. package/lib/esm/debug-logger.d.ts +1 -1
  19. package/lib/esm/debug-logger.js +14 -9
  20. package/lib/esm/debug-logger.js.map +1 -1
  21. package/lib/esm/guardrails/index.d.ts +1 -1
  22. package/lib/esm/guardrails/index.js +5 -4
  23. package/lib/esm/guardrails/index.js.map +1 -1
  24. package/lib/esm/guardrails/input.d.ts +2 -2
  25. package/lib/esm/guardrails/input.js +65 -42
  26. package/lib/esm/guardrails/input.js.map +1 -1
  27. package/lib/esm/index.d.ts +3 -3
  28. package/lib/esm/index.js +114 -74
  29. package/lib/esm/index.js.map +1 -1
  30. package/lib/esm/llm-config.d.ts +1 -1
  31. package/lib/esm/llm-config.js +81 -52
  32. package/lib/esm/llm-config.js.map +1 -1
  33. package/lib/esm/package.json +3 -0
  34. package/lib/esm/runners/base-runner.d.ts +3 -3
  35. package/lib/esm/runners/base-runner.js +81 -69
  36. package/lib/esm/runners/base-runner.js.map +1 -1
  37. package/lib/esm/runners/index.d.ts +2 -2
  38. package/lib/esm/runners/index.js +8 -7
  39. package/lib/esm/runners/index.js.map +1 -1
  40. package/lib/esm/runners/router-runner.d.ts +2 -2
  41. package/lib/esm/runners/router-runner.js +19 -14
  42. package/lib/esm/runners/router-runner.js.map +1 -1
  43. package/lib/esm/runners/specialist-runner.d.ts +1 -1
  44. package/lib/esm/runners/specialist-runner.js +8 -6
  45. package/lib/esm/runners/specialist-runner.js.map +1 -1
  46. package/lib/esm/services/hubtype-api-client.d.ts +2 -2
  47. package/lib/esm/services/hubtype-api-client.js +110 -95
  48. package/lib/esm/services/hubtype-api-client.js.map +1 -1
  49. package/lib/esm/services/types.d.ts +1 -1
  50. package/lib/esm/services/types.js +9 -9
  51. package/lib/esm/services/types.js.map +1 -1
  52. package/lib/esm/structured-output/bot-executor.js +20 -17
  53. package/lib/esm/structured-output/bot-executor.js.map +1 -1
  54. package/lib/esm/structured-output/carousel.js +25 -22
  55. package/lib/esm/structured-output/carousel.js.map +1 -1
  56. package/lib/esm/structured-output/exit.js +13 -10
  57. package/lib/esm/structured-output/exit.js.map +1 -1
  58. package/lib/esm/structured-output/index.d.ts +0 -10
  59. package/lib/esm/structured-output/index.js +39 -29
  60. package/lib/esm/structured-output/index.js.map +1 -1
  61. package/lib/esm/structured-output/text-with-buttons.js +24 -23
  62. package/lib/esm/structured-output/text-with-buttons.js.map +1 -1
  63. package/lib/esm/structured-output/text.js +16 -13
  64. package/lib/esm/structured-output/text.js.map +1 -1
  65. package/lib/esm/tools/index.d.ts +2 -2
  66. package/lib/esm/tools/index.js +7 -7
  67. package/lib/esm/tools/index.js.map +1 -1
  68. package/lib/esm/tools/retrieve-knowledge.d.ts +2 -2
  69. package/lib/esm/tools/retrieve-knowledge.js +38 -32
  70. package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
  71. package/lib/esm/types.d.ts +3 -3
  72. package/lib/esm/types.js +4 -2
  73. package/lib/esm/types.js.map +1 -1
  74. package/package.json +8 -7
  75. package/src/structured-output/index.ts +0 -2
  76. package/src/types.ts +4 -4
  77. package/lib/cjs/agents/base-agent.d.ts +0 -28
  78. package/lib/cjs/agents/base-agent.js +0 -39
  79. package/lib/cjs/agents/base-agent.js.map +0 -1
  80. package/lib/cjs/agents/index.d.ts +0 -2
  81. package/lib/cjs/agents/index.js +0 -8
  82. package/lib/cjs/agents/index.js.map +0 -1
  83. package/lib/cjs/agents/router-agent.d.ts +0 -25
  84. package/lib/cjs/agents/router-agent.js +0 -33
  85. package/lib/cjs/agents/router-agent.js.map +0 -1
  86. package/lib/cjs/agents/specialist-agent.d.ts +0 -39
  87. package/lib/cjs/agents/specialist-agent.js +0 -108
  88. package/lib/cjs/agents/specialist-agent.js.map +0 -1
  89. package/lib/cjs/bot-config-tools.d.ts +0 -7
  90. package/lib/cjs/bot-config-tools.js +0 -18
  91. package/lib/cjs/bot-config-tools.js.map +0 -1
  92. package/lib/cjs/constants.d.ts +0 -21
  93. package/lib/cjs/constants.js +0 -25
  94. package/lib/cjs/constants.js.map +0 -1
  95. package/lib/cjs/debug-logger.d.ts +0 -33
  96. package/lib/cjs/debug-logger.js +0 -116
  97. package/lib/cjs/debug-logger.js.map +0 -1
  98. package/lib/cjs/guardrails/index.d.ts +0 -1
  99. package/lib/cjs/guardrails/index.js +0 -5
  100. package/lib/cjs/guardrails/index.js.map +0 -1
  101. package/lib/cjs/guardrails/input.d.ts +0 -10
  102. package/lib/cjs/guardrails/input.js +0 -96
  103. package/lib/cjs/guardrails/input.js.map +0 -1
  104. package/lib/cjs/index.d.ts +0 -22
  105. package/lib/cjs/index.js +0 -219
  106. package/lib/cjs/index.js.map +0 -1
  107. package/lib/cjs/llm-config.d.ts +0 -30
  108. package/lib/cjs/llm-config.js +0 -121
  109. package/lib/cjs/llm-config.js.map +0 -1
  110. package/lib/cjs/runners/base-runner.d.ts +0 -31
  111. package/lib/cjs/runners/base-runner.js +0 -189
  112. package/lib/cjs/runners/base-runner.js.map +0 -1
  113. package/lib/cjs/runners/index.d.ts +0 -2
  114. package/lib/cjs/runners/index.js +0 -8
  115. package/lib/cjs/runners/index.js.map +0 -1
  116. package/lib/cjs/runners/router-runner.d.ts +0 -8
  117. package/lib/cjs/runners/router-runner.js +0 -44
  118. package/lib/cjs/runners/router-runner.js.map +0 -1
  119. package/lib/cjs/runners/specialist-runner.d.ts +0 -4
  120. package/lib/cjs/runners/specialist-runner.js +0 -8
  121. package/lib/cjs/runners/specialist-runner.js.map +0 -1
  122. package/lib/cjs/services/hubtype-api-client.d.ts +0 -13
  123. package/lib/cjs/services/hubtype-api-client.js +0 -176
  124. package/lib/cjs/services/hubtype-api-client.js.map +0 -1
  125. package/lib/cjs/services/types.d.ts +0 -72
  126. package/lib/cjs/services/types.js +0 -13
  127. package/lib/cjs/services/types.js.map +0 -1
  128. package/lib/cjs/structured-output/bot-executor.d.ts +0 -13
  129. package/lib/cjs/structured-output/bot-executor.js +0 -18
  130. package/lib/cjs/structured-output/bot-executor.js.map +0 -1
  131. package/lib/cjs/structured-output/carousel.d.ts +0 -18
  132. package/lib/cjs/structured-output/carousel.js +0 -23
  133. package/lib/cjs/structured-output/carousel.js.map +0 -1
  134. package/lib/cjs/structured-output/exit.d.ts +0 -6
  135. package/lib/cjs/structured-output/exit.js +0 -11
  136. package/lib/cjs/structured-output/exit.js.map +0 -1
  137. package/lib/cjs/structured-output/index.d.ts +0 -108
  138. package/lib/cjs/structured-output/index.js +0 -45
  139. package/lib/cjs/structured-output/index.js.map +0 -1
  140. package/lib/cjs/structured-output/request-contact-info.d.ts +0 -9
  141. package/lib/cjs/structured-output/request-contact-info.js +0 -14
  142. package/lib/cjs/structured-output/request-contact-info.js.map +0 -1
  143. package/lib/cjs/structured-output/text-with-buttons.d.ts +0 -17
  144. package/lib/cjs/structured-output/text-with-buttons.js +0 -24
  145. package/lib/cjs/structured-output/text-with-buttons.js.map +0 -1
  146. package/lib/cjs/structured-output/text.d.ts +0 -9
  147. package/lib/cjs/structured-output/text.js +0 -14
  148. package/lib/cjs/structured-output/text.js.map +0 -1
  149. package/lib/cjs/tools/index.d.ts +0 -3
  150. package/lib/cjs/tools/index.js +0 -8
  151. package/lib/cjs/tools/index.js.map +0 -1
  152. package/lib/cjs/tools/retrieve-knowledge.d.ts +0 -6
  153. package/lib/cjs/tools/retrieve-knowledge.js +0 -34
  154. package/lib/cjs/tools/retrieve-knowledge.js.map +0 -1
  155. package/lib/cjs/types.d.ts +0 -53
  156. package/lib/cjs/types.js +0 -3
  157. package/lib/cjs/types.js.map +0 -1
  158. package/lib/esm/structured-output/request-contact-info.d.ts +0 -9
  159. package/lib/esm/structured-output/request-contact-info.js +0 -14
  160. package/lib/esm/structured-output/request-contact-info.js.map +0 -1
  161. package/src/structured-output/request-contact-info.ts +0 -18
package/lib/esm/index.js CHANGED
@@ -1,61 +1,71 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const core_1 = require("@botonic/core");
5
- const agents_1 = require("@openai/agents");
6
- const uuid_1 = require("uuid");
7
- const agents_2 = require("./agents");
8
- const constants_1 = require("./constants");
9
- const debug_logger_1 = require("./debug-logger");
10
- const llm_config_1 = require("./llm-config");
11
- const runners_1 = require("./runners");
12
- const hubtype_api_client_1 = require("./services/hubtype-api-client");
13
- class BotonicPluginAiAgents {
14
- constructor(options) {
15
- this.toolDefinitions = [];
16
- this.authToken = options?.authToken;
17
- this.toolDefinitions = options?.customTools || [];
18
- this.memory = this.getMemoryOptions(options?.memory);
19
- this.timeout = options?.timeout ?? constants_1.DEFAULT_TIMEOUT_16_SECONDS;
20
- this.maxRetries = options?.maxRetries ?? constants_1.DEFAULT_MAX_RETRIES;
21
- this.logger = (0, debug_logger_1.createDebugLogger)(options?.enableDebug ?? false);
22
- this.localStorageKey = options?.localStorageKey ?? 'botonicState';
23
- (0, agents_1.setTracingDisabled)(true);
24
- this.logger.logInitialConfig({
25
- messageHistoryApiVersion: 'v2',
26
- maxRetries: options?.maxRetries ?? constants_1.DEFAULT_MAX_RETRIES,
27
- timeout: options?.timeout ?? constants_1.DEFAULT_TIMEOUT_16_SECONDS,
28
- customToolNames: this.toolDefinitions.map(t => t.name),
29
- memory: this.memory,
1
+ import { AiAgentType } from "@botonic/core";
2
+ import { handoff, setTracingDisabled, tool as agents_tool } from "@openai/agents";
3
+ import { v7 } from "uuid";
4
+ import { RouterAgent, SpecialistAgent } from "./agents/index.js";
5
+ import { DEFAULT_MAX_RETRIES, DEFAULT_TIMEOUT_16_SECONDS, MAX_MEMORY_LENGTH, isProd } from "./constants.js";
6
+ import { createDebugLogger } from "./debug-logger.js";
7
+ import { LLMConfig } from "./llm-config.js";
8
+ import { RouterRunner, SpecialistRunner } from "./runners/index.js";
9
+ import { HubtypeApiClient } from "./services/hubtype-api-client.js";
10
+
11
+ export * from "./bot-config-tools.js";
12
+ export * from "./types.js";
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+ function _define_property(obj, key, value) {
23
+ if (key in obj) {
24
+ Object.defineProperty(obj, key, {
25
+ value: value,
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true
30
29
  });
31
- }
30
+ } else obj[key] = value;
31
+ return obj;
32
+ }
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+ class BotonicPluginAiAgents {
32
43
  getMemoryOptions(memory) {
33
44
  return {
34
- maxMessages: memory?.maxMessages ?? constants_1.MAX_MEMORY_LENGTH,
45
+ maxMessages: memory?.maxMessages ?? MAX_MEMORY_LENGTH,
35
46
  includeToolCalls: memory?.includeToolCalls ?? true,
36
47
  maxFullToolResults: memory?.maxFullToolResults ?? 1,
37
- debugMode: memory?.debugMode ?? false,
48
+ debugMode: memory?.debugMode ?? false
38
49
  };
39
50
  }
40
51
  pre() {
41
52
  return;
42
53
  }
43
54
  async getInference(botContext, aiAgentArgs) {
44
- const authToken = constants_1.isProd ? botContext.session._access_token : this.authToken;
55
+ const authToken = isProd ? botContext.session._access_token : this.authToken;
45
56
  if (!authToken) {
46
57
  throw new Error('Auth token is required');
47
58
  }
48
- const inferenceId = (0, uuid_1.v7)();
59
+ const inferenceId = v7();
49
60
  try {
50
- if (aiAgentArgs.type === core_1.AiAgentType.Specialist) {
61
+ if (aiAgentArgs.type === AiAgentType.Specialist) {
51
62
  return await this.executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
52
63
  }
53
- if (aiAgentArgs.type === core_1.AiAgentType.Router) {
64
+ if (aiAgentArgs.type === AiAgentType.Router) {
54
65
  return await this.executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
55
66
  }
56
67
  throw new Error('Invalid agent type');
57
- }
58
- catch (error) {
68
+ } catch (error) {
59
69
  console.error('error plugin returns undefined', error);
60
70
  return {
61
71
  messages: [],
@@ -68,18 +78,18 @@ class BotonicPluginAiAgents {
68
78
  startingAgentName: '',
69
79
  lastAgentName: '',
70
80
  availableSpecialists: [],
71
- isTransferredToSpecialist: false,
81
+ isTransferredToSpecialist: false
72
82
  };
73
83
  }
74
84
  }
75
85
  async executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
76
- const llmConfig = new llm_config_1.LLMConfig({
86
+ const llmConfig = new LLMConfig({
77
87
  maxRetries: this.maxRetries,
78
88
  timeout: this.timeout,
79
89
  modelName: aiAgentArgs.model,
80
90
  verbosity: aiAgentArgs.verbosity,
81
91
  botContext,
82
- reasoningEffort: aiAgentArgs.reasoningEffort,
92
+ reasoningEffort: aiAgentArgs.reasoningEffort
83
93
  });
84
94
  // Get LLM config, tools and agent
85
95
  const { tools, agent } = await this.getSpecialistAgentAndTools(botContext, aiAgentArgs, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
@@ -92,27 +102,27 @@ class BotonicPluginAiAgents {
92
102
  query: '',
93
103
  sourceIds: [],
94
104
  chunksIds: [],
95
- chunkTexts: [],
105
+ chunkTexts: []
96
106
  },
97
- request: botContext,
107
+ request: botContext
98
108
  };
99
109
  // Log agent debug info
100
- this.logger.logAgentDebugInfo(aiAgentArgs, tools.map(t => t.name), messages);
110
+ this.logger.logAgentDebugInfo(aiAgentArgs, tools.map((t)=>t.name), messages);
101
111
  // Run agent
102
- const runner = new runners_1.SpecialistRunner(agent, llmConfig, inferenceId, this.logger);
112
+ const runner = new SpecialistRunner(agent, llmConfig, inferenceId, this.logger);
103
113
  return await runner.run(messages, context);
104
114
  }
105
115
  async executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
106
116
  const { specialists, name, instructions } = aiAgentArgs;
107
- const llmConfig = new llm_config_1.LLMConfig({
117
+ const llmConfig = new LLMConfig({
108
118
  maxRetries: this.maxRetries,
109
119
  timeout: this.timeout,
110
120
  modelName: aiAgentArgs.model,
111
121
  verbosity: aiAgentArgs.verbosity,
112
122
  botContext,
113
- reasoningEffort: aiAgentArgs.reasoningEffort,
123
+ reasoningEffort: aiAgentArgs.reasoningEffort
114
124
  });
115
- const specialistsAgents = await Promise.all(specialists.map(async (specialistData) => {
125
+ const specialistsAgents = await Promise.all(specialists.map(async (specialistData)=>{
116
126
  // If the forceToolNameOverride is set, we force this override for all specialists
117
127
  const forceToolNameOverride = aiAgentArgs.forceToolNameOverride;
118
128
  const reasoningEffort = aiAgentArgs.reasoningEffort;
@@ -122,15 +132,15 @@ class BotonicPluginAiAgents {
122
132
  ...specialistData,
123
133
  forceToolNameOverride,
124
134
  reasoningEffort,
125
- disableForceRetrieveKnowledge,
135
+ disableForceRetrieveKnowledge
126
136
  };
127
137
  const { agent } = await this.getSpecialistAgentAndTools(botContext, aiAgentSpecialistArgs, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
128
- return (0, agents_1.handoff)(agent, {
138
+ return handoff(agent, {
129
139
  toolNameOverride: specialistData.name,
130
- toolDescriptionOverride: specialistData.description,
140
+ toolDescriptionOverride: specialistData.description
131
141
  });
132
142
  }));
133
- const router = await agents_2.RouterAgent.create({
143
+ const router = await RouterAgent.create({
134
144
  name,
135
145
  instructions,
136
146
  llmConfig,
@@ -141,8 +151,8 @@ class BotonicPluginAiAgents {
141
151
  botId: botContext.session.bot.id,
142
152
  isTest: botContext.session.is_test_integration,
143
153
  authToken,
144
- inferenceId,
145
- },
154
+ inferenceId
155
+ }
146
156
  });
147
157
  // Get messages
148
158
  const messages = await this.getMessages(botContext, authToken, aiAgentArgs.previousHubtypeMessages || []);
@@ -153,21 +163,21 @@ class BotonicPluginAiAgents {
153
163
  query: '',
154
164
  sourceIds: [],
155
165
  chunksIds: [],
156
- chunkTexts: [],
166
+ chunkTexts: []
157
167
  },
158
- request: botContext,
168
+ request: botContext
159
169
  };
160
170
  // Run agent
161
171
  const routerAgent = router.getAgent();
162
- const runner = new runners_1.RouterRunner(routerAgent, llmConfig, inferenceId, this.logger);
172
+ const runner = new RouterRunner(routerAgent, llmConfig, inferenceId, this.logger);
163
173
  return await runner.run(messages, context);
164
174
  }
165
175
  async getSpecialistAgentAndTools(botContext, aiAgentArgs, outputMessagesSchemas, authToken, inferenceId, llmConfig) {
166
176
  // Build tools
167
177
  const tools = this.buildTools(aiAgentArgs);
168
178
  // Build agent
169
- const sourceIds = aiAgentArgs.type === core_1.AiAgentType.Specialist ? aiAgentArgs.sourceIds : [];
170
- const specialist = await agents_2.SpecialistAgent.create({
179
+ const sourceIds = aiAgentArgs.type === AiAgentType.Specialist ? aiAgentArgs.sourceIds : [];
180
+ const specialist = await SpecialistAgent.create({
171
181
  name: aiAgentArgs.name,
172
182
  instructions: aiAgentArgs.instructions,
173
183
  tools: tools,
@@ -182,38 +192,68 @@ class BotonicPluginAiAgents {
182
192
  botId: botContext.session.bot.id,
183
193
  isTest: botContext.session.is_test_integration,
184
194
  authToken,
185
- inferenceId,
195
+ inferenceId
186
196
  },
187
197
  forceToolNameOverride: aiAgentArgs.forceToolNameOverride,
188
- disableForceRetrieveKnowledge: aiAgentArgs.disableForceRetrieveKnowledge,
198
+ disableForceRetrieveKnowledge: aiAgentArgs.disableForceRetrieveKnowledge
189
199
  });
190
200
  const specialistAgent = specialist.getAgent();
191
- return { agent: specialistAgent, tools };
201
+ return {
202
+ agent: specialistAgent,
203
+ tools
204
+ };
192
205
  }
193
206
  async getMessages(botContext, authToken, previousHubtypeMessages) {
194
- const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
195
- if (!constants_1.isProd) {
196
- return await hubtypeClient.getLocalMessages(constants_1.MAX_MEMORY_LENGTH, previousHubtypeMessages, this.localStorageKey);
207
+ const hubtypeClient = new HubtypeApiClient(authToken);
208
+ if (!isProd) {
209
+ return await hubtypeClient.getLocalMessages(MAX_MEMORY_LENGTH, previousHubtypeMessages, this.localStorageKey);
197
210
  }
198
211
  // Default to V2
199
212
  const result = await hubtypeClient.getMessagesV2(botContext, this.memory, previousHubtypeMessages);
200
213
  return result.messages;
201
214
  }
202
215
  buildTools(aiAgentArgs) {
203
- const activeTools = aiAgentArgs.type === core_1.AiAgentType.Router ? [] : aiAgentArgs.activeTools;
204
- const activeToolNames = activeTools.map(tool => tool.name);
205
- const availableTools = this.toolDefinitions.filter(tool => activeToolNames.includes(tool.name));
206
- return availableTools.map(toolDefinition => {
207
- return (0, agents_1.tool)({
216
+ const activeTools = aiAgentArgs.type === AiAgentType.Router ? [] : aiAgentArgs.activeTools;
217
+ const activeToolNames = activeTools.map((tool)=>tool.name);
218
+ const availableTools = this.toolDefinitions.filter((tool)=>activeToolNames.includes(tool.name));
219
+ return availableTools.map((toolDefinition)=>{
220
+ return agents_tool({
208
221
  name: toolDefinition.name,
209
222
  description: toolDefinition.description,
210
223
  parameters: toolDefinition.schema,
211
- execute: toolDefinition.func,
224
+ execute: toolDefinition.func
212
225
  });
213
226
  });
214
227
  }
228
+ constructor(options){
229
+ _define_property(this, "authToken", void 0);
230
+ _define_property(this, "memory", void 0);
231
+ _define_property(this, "logger", void 0);
232
+ _define_property(this, "timeout", void 0);
233
+ _define_property(this, "maxRetries", void 0);
234
+ _define_property(this, "toolDefinitions", []);
235
+ _define_property(this, "localStorageKey", void 0);
236
+ this.authToken = options?.authToken;
237
+ this.toolDefinitions = options?.customTools || [];
238
+ this.memory = this.getMemoryOptions(options?.memory);
239
+ this.timeout = options?.timeout ?? DEFAULT_TIMEOUT_16_SECONDS;
240
+ this.maxRetries = options?.maxRetries ?? DEFAULT_MAX_RETRIES;
241
+ this.logger = createDebugLogger(options?.enableDebug ?? false);
242
+ this.localStorageKey = options?.localStorageKey ?? 'botonicState';
243
+ setTracingDisabled(true);
244
+ this.logger.logInitialConfig({
245
+ messageHistoryApiVersion: 'v2',
246
+ maxRetries: options?.maxRetries ?? DEFAULT_MAX_RETRIES,
247
+ timeout: options?.timeout ?? DEFAULT_TIMEOUT_16_SECONDS,
248
+ customToolNames: this.toolDefinitions.map((t)=>t.name),
249
+ memory: this.memory
250
+ });
251
+ }
215
252
  }
216
- exports.default = BotonicPluginAiAgents;
217
- tslib_1.__exportStar(require("./bot-config-tools"), exports);
218
- tslib_1.__exportStar(require("./types"), exports);
253
+
254
+
255
+
256
+
257
+ export default BotonicPluginAiAgents;
258
+
219
259
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import {\n type AIAgentRouterArgs,\n type AiAgentArgs,\n type AiAgentSpecialistArgs,\n AiAgentType,\n type BotContext,\n type HubtypeAssistantMessage,\n type Plugin,\n type ResolvedPlugins,\n} from '@botonic/core'\nimport { handoff, setTracingDisabled, tool } from '@openai/agents'\nimport { v7 as uuidv7 } from 'uuid'\nimport type { ZodObject } from 'zod'\nimport { RouterAgent, SpecialistAgent } from './agents'\nimport {\n DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT_16_SECONDS,\n isProd,\n MAX_MEMORY_LENGTH,\n} from './constants'\nimport { createDebugLogger, type DebugLogger } from './debug-logger'\nimport { LLMConfig } from './llm-config'\nimport { RouterRunner, SpecialistRunner } from './runners'\nimport { HubtypeApiClient } from './services/hubtype-api-client'\nimport type {\n AgenticInputMessage,\n Context,\n CustomTool,\n InferenceResponse,\n MemoryOptions,\n PluginAiAgentOptions,\n Tool,\n} from './types'\n\nexport default class BotonicPluginAiAgents<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = any,\n> implements Plugin\n{\n private readonly authToken?: string\n private readonly memory: MemoryOptions\n private readonly logger: DebugLogger\n private readonly timeout: number\n private readonly maxRetries: number\n public toolDefinitions: CustomTool<TPlugins, TExtraData>[] = []\n private readonly localStorageKey: string\n\n constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>) {\n this.authToken = options?.authToken\n this.toolDefinitions = options?.customTools || []\n this.memory = this.getMemoryOptions(options?.memory)\n this.timeout = options?.timeout ?? DEFAULT_TIMEOUT_16_SECONDS\n this.maxRetries = options?.maxRetries ?? DEFAULT_MAX_RETRIES\n this.logger = createDebugLogger(options?.enableDebug ?? false)\n this.localStorageKey = options?.localStorageKey ?? 'botonicState'\n setTracingDisabled(true)\n\n this.logger.logInitialConfig({\n messageHistoryApiVersion: 'v2',\n maxRetries: options?.maxRetries ?? DEFAULT_MAX_RETRIES,\n timeout: options?.timeout ?? DEFAULT_TIMEOUT_16_SECONDS,\n customToolNames: this.toolDefinitions.map(t => t.name),\n memory: this.memory,\n })\n }\n\n private getMemoryOptions(memory?: Partial<MemoryOptions>): MemoryOptions {\n return {\n maxMessages: memory?.maxMessages ?? MAX_MEMORY_LENGTH,\n includeToolCalls: memory?.includeToolCalls ?? true,\n maxFullToolResults: memory?.maxFullToolResults ?? 1,\n debugMode: memory?.debugMode ?? false,\n }\n }\n\n pre(): void {\n return\n }\n\n async getInference(\n botContext: BotContext<TPlugins, TExtraData>,\n aiAgentArgs: AiAgentArgs\n ): Promise<InferenceResponse> {\n const authToken = isProd ? botContext.session._access_token : this.authToken\n if (!authToken) {\n throw new Error('Auth token is required')\n }\n\n const inferenceId = uuidv7()\n\n try {\n if (aiAgentArgs.type === AiAgentType.Specialist) {\n return await this.executeSpecialistAIAgent(\n botContext,\n aiAgentArgs,\n authToken,\n inferenceId\n )\n }\n\n if (aiAgentArgs.type === AiAgentType.Router) {\n return await this.executeRouterAIAgent(\n botContext,\n aiAgentArgs,\n authToken,\n inferenceId\n )\n }\n\n throw new Error('Invalid agent type')\n } catch (error) {\n console.error('error plugin returns undefined', error)\n return {\n messages: [],\n toolsExecuted: [],\n memoryLength: 0,\n exit: true,\n error: true,\n inputGuardrailsTriggered: [],\n outputGuardrailsTriggered: [],\n startingAgentName: '',\n lastAgentName: '',\n availableSpecialists: [],\n isTransferredToSpecialist: false,\n }\n }\n }\n\n private async executeSpecialistAIAgent(\n botContext: BotContext<TPlugins, TExtraData>,\n aiAgentArgs: AiAgentSpecialistArgs,\n authToken: string,\n inferenceId: string\n ) {\n const llmConfig = new LLMConfig({\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n modelName: aiAgentArgs.model,\n verbosity: aiAgentArgs.verbosity,\n botContext,\n reasoningEffort: aiAgentArgs.reasoningEffort,\n })\n\n // Get LLM config, tools and agent\n const { tools, agent } = await this.getSpecialistAgentAndTools(\n botContext,\n aiAgentArgs,\n aiAgentArgs.outputMessagesSchemas || [],\n authToken,\n inferenceId,\n llmConfig\n )\n\n // Get messages\n const messages = await this.getMessages(\n botContext,\n authToken,\n aiAgentArgs.previousHubtypeMessages || []\n )\n\n // Build context\n const context: Context<TPlugins, TExtraData> = {\n authToken,\n knowledgeUsed: {\n query: '',\n sourceIds: [],\n chunksIds: [],\n chunkTexts: [],\n },\n request: botContext,\n }\n\n // Log agent debug info\n this.logger.logAgentDebugInfo(\n aiAgentArgs,\n tools.map(t => t.name),\n messages\n )\n\n // Run agent\n const runner = new SpecialistRunner<TPlugins, TExtraData>(\n agent,\n llmConfig,\n inferenceId,\n this.logger\n )\n return await runner.run(messages, context)\n }\n\n private async executeRouterAIAgent(\n botContext: BotContext<TPlugins, TExtraData>,\n aiAgentArgs: AIAgentRouterArgs,\n authToken: string,\n inferenceId: string\n ) {\n const { specialists, name, instructions } = aiAgentArgs\n\n const llmConfig = new LLMConfig({\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n modelName: aiAgentArgs.model,\n verbosity: aiAgentArgs.verbosity,\n botContext,\n reasoningEffort: aiAgentArgs.reasoningEffort,\n })\n\n const specialistsAgents = await Promise.all(\n specialists.map(async specialistData => {\n // If the forceToolNameOverride is set, we force this override for all specialists\n const forceToolNameOverride = aiAgentArgs.forceToolNameOverride\n const reasoningEffort = aiAgentArgs.reasoningEffort\n const disableForceRetrieveKnowledge =\n aiAgentArgs.disableForceRetrieveKnowledge\n\n // Create AiAgentArgs for the specialist, with values from AIAgentRouterArgs\n const aiAgentSpecialistArgs: AiAgentArgs = {\n ...specialistData,\n forceToolNameOverride,\n reasoningEffort,\n disableForceRetrieveKnowledge,\n }\n\n const { agent } = await this.getSpecialistAgentAndTools(\n botContext,\n aiAgentSpecialistArgs,\n aiAgentArgs.outputMessagesSchemas || [],\n authToken,\n inferenceId,\n llmConfig\n )\n\n return handoff(agent, {\n toolNameOverride: specialistData.name,\n toolDescriptionOverride: specialistData.description,\n })\n })\n )\n\n const router = await RouterAgent.create<TPlugins, TExtraData>({\n name,\n instructions,\n llmConfig,\n handoffs: specialistsAgents,\n inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],\n outputMessagesSchemas: aiAgentArgs.outputMessagesSchemas || [],\n guardrailTrackingContext: {\n botId: botContext.session.bot.id,\n isTest: botContext.session.is_test_integration,\n authToken,\n inferenceId,\n },\n })\n\n // Get messages\n const messages = await this.getMessages(\n botContext,\n authToken,\n aiAgentArgs.previousHubtypeMessages || []\n )\n\n // Build context\n const context: Context<TPlugins, TExtraData> = {\n authToken,\n knowledgeUsed: {\n query: '',\n sourceIds: [],\n chunksIds: [],\n chunkTexts: [],\n },\n request: botContext,\n }\n\n // Run agent\n const routerAgent = router.getAgent()\n const runner = new RouterRunner<TPlugins, TExtraData>(\n routerAgent,\n llmConfig,\n inferenceId,\n this.logger\n )\n\n return await runner.run(messages, context)\n }\n\n private async getSpecialistAgentAndTools(\n botContext: BotContext,\n aiAgentArgs: AiAgentArgs,\n outputMessagesSchemas: ZodObject<any>[],\n authToken: string,\n inferenceId: string,\n llmConfig: LLMConfig\n ) {\n // Build tools\n const tools = this.buildTools(aiAgentArgs)\n\n // Build agent\n const sourceIds =\n aiAgentArgs.type === AiAgentType.Specialist ? aiAgentArgs.sourceIds : []\n\n const specialist = await SpecialistAgent.create<TPlugins, TExtraData>({\n name: aiAgentArgs.name,\n instructions: aiAgentArgs.instructions,\n tools: tools,\n contactInfo: botContext.session.user.contact_info || [],\n inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],\n sourceIds,\n outputMessagesSchemas: outputMessagesSchemas || [],\n campaignsContext: botContext.input.context?.campaigns_v2,\n logger: this.logger,\n llmConfig,\n guardrailTrackingContext: {\n botId: botContext.session.bot.id,\n isTest: botContext.session.is_test_integration,\n authToken,\n inferenceId,\n },\n forceToolNameOverride: aiAgentArgs.forceToolNameOverride,\n disableForceRetrieveKnowledge: aiAgentArgs.disableForceRetrieveKnowledge,\n })\n const specialistAgent = specialist.getAgent()\n\n return { agent: specialistAgent, tools }\n }\n\n private async getMessages(\n botContext: BotContext,\n authToken: string,\n previousHubtypeMessages: HubtypeAssistantMessage[]\n ): Promise<AgenticInputMessage[]> {\n const hubtypeClient = new HubtypeApiClient(authToken)\n if (!isProd) {\n return await hubtypeClient.getLocalMessages(\n MAX_MEMORY_LENGTH,\n previousHubtypeMessages,\n this.localStorageKey\n )\n }\n\n // Default to V2\n const result = await hubtypeClient.getMessagesV2(\n botContext,\n this.memory,\n previousHubtypeMessages\n )\n return result.messages\n }\n\n private buildTools(aiAgentArgs: AiAgentArgs): Tool<TPlugins, TExtraData>[] {\n const activeTools =\n aiAgentArgs.type === AiAgentType.Router ? [] : aiAgentArgs.activeTools\n const activeToolNames = activeTools.map(tool => tool.name)\n const availableTools = this.toolDefinitions.filter(tool =>\n activeToolNames.includes(tool.name)\n )\n return availableTools.map(toolDefinition => {\n return tool<any, Context<TPlugins, TExtraData>, any>({\n name: toolDefinition.name,\n description: toolDefinition.description,\n parameters: toolDefinition.schema,\n execute: toolDefinition.func,\n })\n })\n }\n}\n\nexport * from './bot-config-tools'\nexport * from './types'\n"],"names":["AiAgentType","handoff","setTracingDisabled","tool","v7","uuidv7","RouterAgent","SpecialistAgent","DEFAULT_MAX_RETRIES","DEFAULT_TIMEOUT_16_SECONDS","isProd","MAX_MEMORY_LENGTH","createDebugLogger","LLMConfig","RouterRunner","SpecialistRunner","HubtypeApiClient","BotonicPluginAiAgents","memory","botContext","aiAgentArgs","authToken","Error","inferenceId","error","console","llmConfig","tools","agent","messages","context","t","runner","specialists","name","instructions","specialistsAgents","Promise","specialistData","forceToolNameOverride","reasoningEffort","disableForceRetrieveKnowledge","aiAgentSpecialistArgs","router","routerAgent","outputMessagesSchemas","sourceIds","specialist","specialistAgent","previousHubtypeMessages","hubtypeClient","result","activeTools","activeToolNames","availableTools","toolDefinition","options"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type BotContext, type ReasoningEffort, VerbosityLevel } from '@botonic/core';
2
2
  import { type Model, type ModelProvider, type ModelSettings } from '@openai/agents';
3
- import { type LLMProviderType } from './constants';
3
+ import { type LLMProviderType } from './constants.js';
4
4
  export interface LLMConfigParams {
5
5
  maxRetries: number;
6
6
  timeout: number;
@@ -1,44 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LLMConfig = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@botonic/core");
6
- const agents_1 = require("@openai/agents");
7
- const openai_1 = tslib_1.__importStar(require("openai"));
8
- const constants_1 = require("./constants");
1
+ import { VerbosityLevel } from "@botonic/core";
2
+ import { OpenAIProvider } from "@openai/agents";
3
+ import openai, { AzureOpenAI } from "openai";
4
+ import { LITELLM_TAG_KEYS, LLM_API_KEY, LLM_API_URL, LLM_AZURE_API_VERSION, LLM_OPENAI_MODEL, LLM_PROVIDER, LLM_PROVIDERS, isProd } from "./constants.js";
5
+
6
+
7
+
8
+
9
+
10
+ function _define_property(obj, key, value) {
11
+ if (key in obj) {
12
+ Object.defineProperty(obj, key, {
13
+ value: value,
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true
17
+ });
18
+ } else obj[key] = value;
19
+ return obj;
20
+ }
21
+
22
+
23
+
24
+
9
25
  class LLMConfig {
10
- constructor({ maxRetries, timeout, modelName, verbosity, botContext, reasoningEffort, }) {
11
- this.maxRetries = maxRetries;
12
- this.timeout = timeout;
13
- this.botContext = botContext;
14
- this.modelName =
15
- constants_1.LLM_PROVIDER === constants_1.LLM_PROVIDERS.OPENAI ? constants_1.LLM_OPENAI_MODEL : modelName;
16
- this.modelProvider = this.getModelProvider();
17
- this.modelSettings = this.getModelSettings(modelName, verbosity, reasoningEffort);
18
- }
19
26
  async getModel() {
20
27
  return await this.modelProvider.getModel(this.modelName);
21
28
  }
22
29
  getModelProvider() {
23
30
  const client = this.getClient();
24
- return new agents_1.OpenAIProvider({
31
+ return new OpenAIProvider({
25
32
  openAIClient: client,
26
- useResponses: false,
33
+ useResponses: false
27
34
  });
28
35
  }
29
36
  getProviderName() {
30
- if (this.botContext.settings.LITELLM_API_URL ||
31
- constants_1.LLM_PROVIDER === constants_1.LLM_PROVIDERS.LITELLM) {
32
- return constants_1.LLM_PROVIDERS.LITELLM;
37
+ if (this.botContext.settings.LITELLM_API_URL || LLM_PROVIDER === LLM_PROVIDERS.LITELLM) {
38
+ return LLM_PROVIDERS.LITELLM;
33
39
  }
34
- return constants_1.LLM_PROVIDER;
40
+ return LLM_PROVIDER;
35
41
  }
36
42
  getClient() {
37
- if (this.getProviderName() === constants_1.LLM_PROVIDERS.LITELLM) {
38
- const litellmUrl = this.botContext.settings.LITELLM_API_URL || constants_1.LLM_API_URL || '';
43
+ if (this.getProviderName() === LLM_PROVIDERS.LITELLM) {
44
+ const litellmUrl = this.botContext.settings.LITELLM_API_URL || LLM_API_URL || '';
39
45
  return this.getLiteLLMClient(litellmUrl);
40
46
  }
41
- if (constants_1.LLM_PROVIDER === constants_1.LLM_PROVIDERS.OPENAI) {
47
+ if (LLM_PROVIDER === LLM_PROVIDERS.OPENAI) {
42
48
  return this.getOpenAIClient();
43
49
  }
44
50
  return this.getAzureOpenAiClient();
@@ -48,74 +54,97 @@ class LLMConfig {
48
54
  const orgId = this.botContext.session.organization_id;
49
55
  const parts = [];
50
56
  if (botId) {
51
- parts.push(`${constants_1.LITELLM_TAG_KEYS.BOT_ID}:${botId}`);
57
+ parts.push(`${LITELLM_TAG_KEYS.BOT_ID}:${botId}`);
52
58
  }
53
59
  if (orgId) {
54
- parts.push(`${constants_1.LITELLM_TAG_KEYS.ORG_ID}:${orgId}`);
60
+ parts.push(`${LITELLM_TAG_KEYS.ORG_ID}:${orgId}`);
55
61
  }
56
- return parts.length > 0
57
- ? { 'x-litellm-tags': parts.join(constants_1.LITELLM_TAG_KEYS.SEPARATOR) }
58
- : undefined;
62
+ return parts.length > 0 ? {
63
+ 'x-litellm-tags': parts.join(LITELLM_TAG_KEYS.SEPARATOR)
64
+ } : undefined;
59
65
  }
60
66
  getLiteLLMClient(litellmUrl) {
61
- return new openai_1.default({
62
- apiKey: this.botContext.secrets.LITELLM_API_KEY || constants_1.LLM_API_KEY,
67
+ return new openai({
68
+ apiKey: this.botContext.secrets.LITELLM_API_KEY || LLM_API_KEY,
63
69
  baseURL: litellmUrl,
64
70
  timeout: this.timeout,
65
71
  maxRetries: this.maxRetries,
66
- dangerouslyAllowBrowser: !constants_1.isProd,
67
- defaultHeaders: this.buildLiteLLMTags(),
72
+ dangerouslyAllowBrowser: !isProd,
73
+ defaultHeaders: this.buildLiteLLMTags()
68
74
  });
69
75
  }
70
76
  getOpenAIClient() {
71
- return new openai_1.default({
72
- apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || constants_1.LLM_API_KEY,
77
+ return new openai({
78
+ apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || LLM_API_KEY,
73
79
  timeout: this.timeout,
74
80
  maxRetries: this.maxRetries,
75
- dangerouslyAllowBrowser: !constants_1.isProd,
81
+ dangerouslyAllowBrowser: !isProd
76
82
  });
77
83
  }
78
84
  getAzureOpenAiClient() {
79
- const baseURL = `${this.botContext.settings.AZURE_OPENAI_API_BASE || constants_1.LLM_API_URL}openai/`;
80
- return new openai_1.AzureOpenAI({
81
- apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || constants_1.LLM_API_KEY,
82
- apiVersion: this.botContext.settings.AZURE_OPENAI_API_VERSION ||
83
- constants_1.LLM_AZURE_API_VERSION,
85
+ const baseURL = `${this.botContext.settings.AZURE_OPENAI_API_BASE || LLM_API_URL}openai/`;
86
+ return new AzureOpenAI({
87
+ apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || LLM_API_KEY,
88
+ apiVersion: this.botContext.settings.AZURE_OPENAI_API_VERSION || LLM_AZURE_API_VERSION,
84
89
  deployment: this.modelName,
85
90
  baseURL,
86
91
  timeout: this.timeout,
87
92
  maxRetries: this.maxRetries,
88
- dangerouslyAllowBrowser: !constants_1.isProd,
93
+ dangerouslyAllowBrowser: !isProd
89
94
  });
90
95
  }
91
96
  getModelSettings(model, verbosity, reasoningEffort) {
92
97
  if (model.includes('gpt-4')) {
93
98
  return {
94
99
  temperature: 0,
95
- text: { verbosity: core_1.VerbosityLevel.Medium },
100
+ text: {
101
+ verbosity: VerbosityLevel.Medium
102
+ }
96
103
  };
97
104
  }
98
105
  if (reasoningEffort) {
99
106
  return {
100
- reasoning: { effort: reasoningEffort },
107
+ reasoning: {
108
+ effort: reasoningEffort
109
+ },
101
110
  temperature: 1,
102
- text: { verbosity },
111
+ text: {
112
+ verbosity
113
+ }
103
114
  };
104
115
  }
105
116
  return {
106
117
  temperature: 1,
107
- text: { verbosity },
118
+ text: {
119
+ verbosity
120
+ }
108
121
  };
109
122
  }
110
123
  getApiVersion() {
111
- if (this.getProviderName() === constants_1.LLM_PROVIDERS.LITELLM) {
124
+ if (this.getProviderName() === LLM_PROVIDERS.LITELLM) {
112
125
  return undefined;
113
126
  }
114
- if (constants_1.LLM_PROVIDER !== constants_1.LLM_PROVIDERS.AZURE) {
127
+ if (LLM_PROVIDER !== LLM_PROVIDERS.AZURE) {
115
128
  return 'NOT_API_VERSION_FOR_OPENAI_PROVIDER';
116
129
  }
117
- return (this.botContext.settings.AZURE_OPENAI_API_VERSION || constants_1.LLM_AZURE_API_VERSION);
130
+ return this.botContext.settings.AZURE_OPENAI_API_VERSION || LLM_AZURE_API_VERSION;
131
+ }
132
+ constructor({ maxRetries, timeout, modelName, verbosity, botContext, reasoningEffort }){
133
+ _define_property(this, "maxRetries", void 0);
134
+ _define_property(this, "timeout", void 0);
135
+ _define_property(this, "botContext", void 0);
136
+ _define_property(this, "modelName", void 0);
137
+ _define_property(this, "modelSettings", void 0);
138
+ _define_property(this, "modelProvider", void 0);
139
+ this.maxRetries = maxRetries;
140
+ this.timeout = timeout;
141
+ this.botContext = botContext;
142
+ this.modelName = LLM_PROVIDER === LLM_PROVIDERS.OPENAI ? LLM_OPENAI_MODEL : modelName;
143
+ this.modelProvider = this.getModelProvider();
144
+ this.modelSettings = this.getModelSettings(modelName, verbosity, reasoningEffort);
118
145
  }
119
146
  }
120
- exports.LLMConfig = LLMConfig;
147
+
148
+ export { LLMConfig };
149
+
121
150
  //# sourceMappingURL=llm-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-config.js","sourceRoot":"","sources":["../../src/llm-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-config.js","sources":["../../src/llm-config.ts"],"sourcesContent":["import {\n type BotContext,\n type ReasoningEffort,\n VerbosityLevel,\n} from '@botonic/core'\nimport {\n type Model,\n type ModelProvider,\n type ModelSettings,\n OpenAIProvider,\n} from '@openai/agents'\nimport OpenAI, { AzureOpenAI } from 'openai'\nimport {\n isProd,\n LITELLM_TAG_KEYS,\n LLM_API_KEY,\n LLM_API_URL,\n LLM_AZURE_API_VERSION,\n LLM_OPENAI_MODEL,\n LLM_PROVIDER,\n LLM_PROVIDERS,\n type LLMProviderType,\n} from './constants'\n\nexport interface LLMConfigParams {\n maxRetries: number\n timeout: number\n modelName: string\n verbosity: VerbosityLevel\n botContext: BotContext\n reasoningEffort?: ReasoningEffort\n}\n\nexport class LLMConfig {\n private readonly maxRetries: number\n private readonly timeout: number\n private readonly botContext: BotContext\n public readonly modelName: string\n public readonly modelSettings: ModelSettings\n public readonly modelProvider: ModelProvider\n\n constructor({\n maxRetries,\n timeout,\n modelName,\n verbosity,\n botContext,\n reasoningEffort,\n }: LLMConfigParams) {\n this.maxRetries = maxRetries\n this.timeout = timeout\n this.botContext = botContext\n this.modelName =\n LLM_PROVIDER === LLM_PROVIDERS.OPENAI ? LLM_OPENAI_MODEL : modelName\n this.modelProvider = this.getModelProvider()\n this.modelSettings = this.getModelSettings(\n modelName,\n verbosity,\n reasoningEffort\n )\n }\n\n async getModel(): Promise<Model> {\n return await this.modelProvider.getModel(this.modelName)\n }\n\n private getModelProvider(): ModelProvider {\n const client = this.getClient()\n return new OpenAIProvider({\n openAIClient: client,\n useResponses: false,\n })\n }\n\n getProviderName(): LLMProviderType {\n if (\n this.botContext.settings.LITELLM_API_URL ||\n LLM_PROVIDER === LLM_PROVIDERS.LITELLM\n ) {\n return LLM_PROVIDERS.LITELLM\n }\n return LLM_PROVIDER\n }\n\n private getClient(): OpenAI | AzureOpenAI {\n if (this.getProviderName() === LLM_PROVIDERS.LITELLM) {\n const litellmUrl =\n this.botContext.settings.LITELLM_API_URL || LLM_API_URL || ''\n return this.getLiteLLMClient(litellmUrl)\n }\n if (LLM_PROVIDER === LLM_PROVIDERS.OPENAI) {\n return this.getOpenAIClient()\n }\n return this.getAzureOpenAiClient()\n }\n\n private buildLiteLLMTags(): { 'x-litellm-tags': string } | undefined {\n const botId = this.botContext.session.bot.id\n const orgId = this.botContext.session.organization_id\n const parts: string[] = []\n if (botId) {\n parts.push(`${LITELLM_TAG_KEYS.BOT_ID}:${botId}`)\n }\n if (orgId) {\n parts.push(`${LITELLM_TAG_KEYS.ORG_ID}:${orgId}`)\n }\n return parts.length > 0\n ? { 'x-litellm-tags': parts.join(LITELLM_TAG_KEYS.SEPARATOR) }\n : undefined\n }\n\n private getLiteLLMClient(litellmUrl: string): OpenAI {\n return new OpenAI({\n apiKey: this.botContext.secrets.LITELLM_API_KEY || LLM_API_KEY,\n baseURL: litellmUrl,\n timeout: this.timeout,\n maxRetries: this.maxRetries,\n dangerouslyAllowBrowser: !isProd,\n defaultHeaders: this.buildLiteLLMTags(),\n })\n }\n\n private getOpenAIClient(): OpenAI {\n return new OpenAI({\n apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || LLM_API_KEY,\n timeout: this.timeout,\n maxRetries: this.maxRetries,\n dangerouslyAllowBrowser: !isProd,\n })\n }\n\n private getAzureOpenAiClient(): AzureOpenAI {\n const baseURL = `${this.botContext.settings.AZURE_OPENAI_API_BASE || LLM_API_URL}openai/`\n\n return new AzureOpenAI({\n apiKey: this.botContext.secrets.AZURE_OPENAI_API_KEY || LLM_API_KEY,\n apiVersion:\n this.botContext.settings.AZURE_OPENAI_API_VERSION ||\n LLM_AZURE_API_VERSION,\n deployment: this.modelName,\n baseURL,\n timeout: this.timeout,\n maxRetries: this.maxRetries,\n dangerouslyAllowBrowser: !isProd,\n })\n }\n\n private getModelSettings(\n model: string,\n verbosity: VerbosityLevel,\n reasoningEffort?: ReasoningEffort\n ): ModelSettings {\n if (model.includes('gpt-4')) {\n return {\n temperature: 0,\n text: { verbosity: VerbosityLevel.Medium },\n }\n }\n\n if (reasoningEffort) {\n return {\n reasoning: { effort: reasoningEffort },\n temperature: 1,\n text: { verbosity },\n }\n }\n\n return {\n temperature: 1,\n text: { verbosity },\n }\n }\n\n getApiVersion(): string | undefined {\n if (this.getProviderName() === LLM_PROVIDERS.LITELLM) {\n return undefined\n }\n if (LLM_PROVIDER !== LLM_PROVIDERS.AZURE) {\n return 'NOT_API_VERSION_FOR_OPENAI_PROVIDER'\n }\n return (\n this.botContext.settings.AZURE_OPENAI_API_VERSION || LLM_AZURE_API_VERSION\n )\n }\n}\n"],"names":["VerbosityLevel","OpenAIProvider","OpenAI","AzureOpenAI","isProd","LITELLM_TAG_KEYS","LLM_API_KEY","LLM_API_URL","LLM_AZURE_API_VERSION","LLM_OPENAI_MODEL","LLM_PROVIDER","LLM_PROVIDERS","LLMConfig","client","litellmUrl","botId","orgId","parts","undefined","baseURL","model","verbosity","reasoningEffort","maxRetries","timeout","modelName","botContext"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -1,7 +1,7 @@
1
1
  import type { OutputMessage, ResolvedPlugins, ToolExecution } from '@botonic/core';
2
- import type { DebugLogger } from '../debug-logger';
3
- import type { LLMConfig } from '../llm-config';
4
- import type { AgenticInputMessage, AIAgent, Context, ResultRawResponse, RunResult } from '../types';
2
+ import type { DebugLogger } from '../debug-logger.js';
3
+ import type { LLMConfig } from '../llm-config.js';
4
+ import type { AgenticInputMessage, AIAgent, Context, ResultRawResponse, RunResult } from '../types.js';
5
5
  export interface RunnerResult {
6
6
  finalOutput?: {
7
7
  messages?: OutputMessage[];