@botonic/plugin-ai-agents 0.58.0-alpha-new-stack.0 → 0.58.0-alpha.1

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 (223) hide show
  1. package/lib/{agents → cjs/agents}/base-agent.d.ts +4 -4
  2. package/lib/cjs/agents/base-agent.js +39 -0
  3. package/lib/cjs/agents/base-agent.js.map +1 -0
  4. package/lib/cjs/agents/index.d.ts +2 -0
  5. package/lib/cjs/agents/index.js +8 -0
  6. package/lib/cjs/agents/index.js.map +1 -0
  7. package/lib/{agents → cjs/agents}/router-agent.d.ts +5 -5
  8. package/lib/cjs/agents/router-agent.js +33 -0
  9. package/lib/cjs/agents/router-agent.js.map +1 -0
  10. package/lib/{agents → cjs/agents}/specialist-agent.d.ts +5 -5
  11. package/lib/{agents → cjs/agents}/specialist-agent.js +45 -65
  12. package/lib/cjs/agents/specialist-agent.js.map +1 -0
  13. package/lib/{bot-config-tools.d.ts → cjs/bot-config-tools.d.ts} +1 -1
  14. package/lib/cjs/bot-config-tools.js +18 -0
  15. package/lib/cjs/bot-config-tools.js.map +1 -0
  16. package/lib/cjs/constants.js +25 -0
  17. package/lib/cjs/constants.js.map +1 -0
  18. package/lib/{debug-logger.d.ts → cjs/debug-logger.d.ts} +1 -1
  19. package/lib/{debug-logger.js → cjs/debug-logger.js} +9 -14
  20. package/lib/cjs/debug-logger.js.map +1 -0
  21. package/lib/cjs/guardrails/index.d.ts +1 -0
  22. package/lib/cjs/guardrails/index.js +5 -0
  23. package/lib/cjs/guardrails/index.js.map +1 -0
  24. package/lib/{guardrails → cjs/guardrails}/input.d.ts +2 -2
  25. package/lib/cjs/guardrails/input.js +96 -0
  26. package/lib/cjs/guardrails/input.js.map +1 -0
  27. package/lib/{index.d.ts → cjs/index.d.ts} +3 -3
  28. package/lib/{index.js → cjs/index.js} +74 -114
  29. package/lib/cjs/index.js.map +1 -0
  30. package/lib/{llm-config.d.ts → cjs/llm-config.d.ts} +1 -1
  31. package/lib/cjs/llm-config.js +121 -0
  32. package/lib/cjs/llm-config.js.map +1 -0
  33. package/lib/{runners → cjs/runners}/base-runner.d.ts +3 -3
  34. package/lib/{runners → cjs/runners}/base-runner.js +72 -85
  35. package/lib/cjs/runners/base-runner.js.map +1 -0
  36. package/lib/cjs/runners/index.d.ts +2 -0
  37. package/lib/cjs/runners/index.js +8 -0
  38. package/lib/cjs/runners/index.js.map +1 -0
  39. package/lib/{runners → cjs/runners}/router-runner.d.ts +2 -2
  40. package/lib/{runners → cjs/runners}/router-runner.js +14 -19
  41. package/lib/cjs/runners/router-runner.js.map +1 -0
  42. package/lib/{runners → cjs/runners}/specialist-runner.d.ts +1 -1
  43. package/lib/cjs/runners/specialist-runner.js +8 -0
  44. package/lib/cjs/runners/specialist-runner.js.map +1 -0
  45. package/lib/{services → cjs/services}/hubtype-api-client.d.ts +2 -2
  46. package/lib/cjs/services/hubtype-api-client.js +176 -0
  47. package/lib/cjs/services/hubtype-api-client.js.map +1 -0
  48. package/lib/{services → cjs/services}/types.d.ts +1 -1
  49. package/lib/cjs/services/types.js +13 -0
  50. package/lib/cjs/services/types.js.map +1 -0
  51. package/lib/cjs/structured-output/bot-executor.js +18 -0
  52. package/lib/cjs/structured-output/bot-executor.js.map +1 -0
  53. package/lib/cjs/structured-output/carousel.js +23 -0
  54. package/lib/cjs/structured-output/carousel.js.map +1 -0
  55. package/lib/cjs/structured-output/do-nothing.js +11 -0
  56. package/lib/cjs/structured-output/do-nothing.js.map +1 -0
  57. package/lib/cjs/structured-output/exit.js +11 -0
  58. package/lib/cjs/structured-output/exit.js.map +1 -0
  59. package/lib/cjs/structured-output/index.js +47 -0
  60. package/lib/cjs/structured-output/index.js.map +1 -0
  61. package/lib/cjs/structured-output/request-contact-info.js +14 -0
  62. package/lib/cjs/structured-output/request-contact-info.js.map +1 -0
  63. package/lib/cjs/structured-output/text-with-buttons.js +24 -0
  64. package/lib/cjs/structured-output/text-with-buttons.js.map +1 -0
  65. package/lib/cjs/structured-output/text.js +14 -0
  66. package/lib/cjs/structured-output/text.js.map +1 -0
  67. package/lib/{tools → cjs/tools}/index.d.ts +2 -2
  68. package/lib/cjs/tools/index.js +8 -0
  69. package/lib/cjs/tools/index.js.map +1 -0
  70. package/lib/{tools → cjs/tools}/retrieve-knowledge.d.ts +2 -2
  71. package/lib/cjs/tools/retrieve-knowledge.js +34 -0
  72. package/lib/cjs/tools/retrieve-knowledge.js.map +1 -0
  73. package/lib/{types.d.ts → cjs/types.d.ts} +1 -1
  74. package/lib/cjs/types.js +3 -0
  75. package/lib/cjs/types.js.map +1 -0
  76. package/lib/esm/agents/base-agent.d.ts +28 -0
  77. package/lib/esm/agents/base-agent.js +39 -0
  78. package/lib/esm/agents/base-agent.js.map +1 -0
  79. package/lib/esm/agents/index.d.ts +2 -0
  80. package/lib/esm/agents/index.js +8 -0
  81. package/lib/esm/agents/index.js.map +1 -0
  82. package/lib/esm/agents/router-agent.d.ts +25 -0
  83. package/lib/esm/agents/router-agent.js +33 -0
  84. package/lib/esm/agents/router-agent.js.map +1 -0
  85. package/lib/esm/agents/specialist-agent.d.ts +39 -0
  86. package/lib/esm/agents/specialist-agent.js +108 -0
  87. package/lib/esm/agents/specialist-agent.js.map +1 -0
  88. package/lib/esm/bot-config-tools.d.ts +7 -0
  89. package/lib/esm/bot-config-tools.js +18 -0
  90. package/lib/esm/bot-config-tools.js.map +1 -0
  91. package/lib/esm/constants.d.ts +21 -0
  92. package/lib/esm/constants.js +25 -0
  93. package/lib/esm/constants.js.map +1 -0
  94. package/lib/esm/debug-logger.d.ts +33 -0
  95. package/lib/esm/debug-logger.js +116 -0
  96. package/lib/esm/debug-logger.js.map +1 -0
  97. package/lib/esm/guardrails/index.d.ts +1 -0
  98. package/lib/esm/guardrails/index.js +5 -0
  99. package/lib/esm/guardrails/index.js.map +1 -0
  100. package/lib/esm/guardrails/input.d.ts +10 -0
  101. package/lib/esm/guardrails/input.js +96 -0
  102. package/lib/esm/guardrails/input.js.map +1 -0
  103. package/lib/esm/index.d.ts +22 -0
  104. package/lib/esm/index.js +220 -0
  105. package/lib/esm/index.js.map +1 -0
  106. package/lib/esm/llm-config.d.ts +30 -0
  107. package/lib/esm/llm-config.js +121 -0
  108. package/lib/esm/llm-config.js.map +1 -0
  109. package/lib/esm/runners/base-runner.d.ts +31 -0
  110. package/lib/esm/runners/base-runner.js +194 -0
  111. package/lib/esm/runners/base-runner.js.map +1 -0
  112. package/lib/esm/runners/index.d.ts +2 -0
  113. package/lib/esm/runners/index.js +8 -0
  114. package/lib/esm/runners/index.js.map +1 -0
  115. package/lib/esm/runners/router-runner.d.ts +8 -0
  116. package/lib/esm/runners/router-runner.js +44 -0
  117. package/lib/esm/runners/router-runner.js.map +1 -0
  118. package/lib/esm/runners/specialist-runner.d.ts +4 -0
  119. package/lib/esm/runners/specialist-runner.js +8 -0
  120. package/lib/esm/runners/specialist-runner.js.map +1 -0
  121. package/lib/esm/services/hubtype-api-client.d.ts +13 -0
  122. package/lib/esm/services/hubtype-api-client.js +176 -0
  123. package/lib/esm/services/hubtype-api-client.js.map +1 -0
  124. package/lib/esm/services/types.d.ts +72 -0
  125. package/lib/esm/services/types.js +13 -0
  126. package/lib/esm/services/types.js.map +1 -0
  127. package/lib/esm/structured-output/bot-executor.d.ts +13 -0
  128. package/lib/esm/structured-output/bot-executor.js +18 -0
  129. package/lib/esm/structured-output/bot-executor.js.map +1 -0
  130. package/lib/esm/structured-output/carousel.d.ts +18 -0
  131. package/lib/esm/structured-output/carousel.js +23 -0
  132. package/lib/esm/structured-output/carousel.js.map +1 -0
  133. package/lib/esm/structured-output/do-nothing.d.ts +6 -0
  134. package/lib/esm/structured-output/do-nothing.js +11 -0
  135. package/lib/esm/structured-output/do-nothing.js.map +1 -0
  136. package/lib/esm/structured-output/exit.d.ts +6 -0
  137. package/lib/esm/structured-output/exit.js +11 -0
  138. package/lib/esm/structured-output/exit.js.map +1 -0
  139. package/lib/esm/structured-output/index.d.ts +112 -0
  140. package/lib/esm/structured-output/index.js +47 -0
  141. package/lib/esm/structured-output/index.js.map +1 -0
  142. package/lib/esm/structured-output/request-contact-info.d.ts +9 -0
  143. package/lib/esm/structured-output/request-contact-info.js +14 -0
  144. package/lib/esm/structured-output/request-contact-info.js.map +1 -0
  145. package/lib/esm/structured-output/text-with-buttons.d.ts +17 -0
  146. package/lib/esm/structured-output/text-with-buttons.js +24 -0
  147. package/lib/esm/structured-output/text-with-buttons.js.map +1 -0
  148. package/lib/esm/structured-output/text.d.ts +9 -0
  149. package/lib/esm/structured-output/text.js +14 -0
  150. package/lib/esm/structured-output/text.js.map +1 -0
  151. package/lib/esm/tools/index.d.ts +3 -0
  152. package/lib/esm/tools/index.js +8 -0
  153. package/lib/esm/tools/index.js.map +1 -0
  154. package/lib/esm/tools/retrieve-knowledge.d.ts +6 -0
  155. package/lib/esm/tools/retrieve-knowledge.js +34 -0
  156. package/lib/esm/tools/retrieve-knowledge.js.map +1 -0
  157. package/lib/esm/types.d.ts +53 -0
  158. package/lib/esm/types.js +3 -0
  159. package/lib/esm/types.js.map +1 -0
  160. package/package.json +9 -11
  161. package/lib/agents/base-agent.js +0 -66
  162. package/lib/agents/base-agent.js.map +0 -1
  163. package/lib/agents/index.d.ts +0 -2
  164. package/lib/agents/index.js +0 -9
  165. package/lib/agents/index.js.map +0 -1
  166. package/lib/agents/router-agent.js +0 -50
  167. package/lib/agents/router-agent.js.map +0 -1
  168. package/lib/agents/specialist-agent.js.map +0 -1
  169. package/lib/bot-config-tools.js +0 -20
  170. package/lib/bot-config-tools.js.map +0 -1
  171. package/lib/constants.js +0 -26
  172. package/lib/constants.js.map +0 -1
  173. package/lib/debug-logger.js.map +0 -1
  174. package/lib/guardrails/index.d.ts +0 -1
  175. package/lib/guardrails/index.js +0 -6
  176. package/lib/guardrails/index.js.map +0 -1
  177. package/lib/guardrails/input.js +0 -119
  178. package/lib/guardrails/input.js.map +0 -1
  179. package/lib/index.js.map +0 -1
  180. package/lib/llm-config.js +0 -150
  181. package/lib/llm-config.js.map +0 -1
  182. package/lib/runners/base-runner.js.map +0 -1
  183. package/lib/runners/index.d.ts +0 -2
  184. package/lib/runners/index.js +0 -9
  185. package/lib/runners/index.js.map +0 -1
  186. package/lib/runners/router-runner.js.map +0 -1
  187. package/lib/runners/specialist-runner.js +0 -10
  188. package/lib/runners/specialist-runner.js.map +0 -1
  189. package/lib/services/hubtype-api-client.js +0 -191
  190. package/lib/services/hubtype-api-client.js.map +0 -1
  191. package/lib/services/types.js +0 -13
  192. package/lib/services/types.js.map +0 -1
  193. package/lib/structured-output/bot-executor.js +0 -21
  194. package/lib/structured-output/bot-executor.js.map +0 -1
  195. package/lib/structured-output/carousel.js +0 -26
  196. package/lib/structured-output/carousel.js.map +0 -1
  197. package/lib/structured-output/do-nothing.js +0 -14
  198. package/lib/structured-output/do-nothing.js.map +0 -1
  199. package/lib/structured-output/exit.js +0 -14
  200. package/lib/structured-output/exit.js.map +0 -1
  201. package/lib/structured-output/index.js +0 -63
  202. package/lib/structured-output/index.js.map +0 -1
  203. package/lib/structured-output/request-contact-info.js +0 -17
  204. package/lib/structured-output/request-contact-info.js.map +0 -1
  205. package/lib/structured-output/text-with-buttons.js +0 -25
  206. package/lib/structured-output/text-with-buttons.js.map +0 -1
  207. package/lib/structured-output/text.js +0 -17
  208. package/lib/structured-output/text.js.map +0 -1
  209. package/lib/tools/index.js +0 -8
  210. package/lib/tools/index.js.map +0 -1
  211. package/lib/tools/retrieve-knowledge.js +0 -40
  212. package/lib/tools/retrieve-knowledge.js.map +0 -1
  213. package/lib/types.js +0 -5
  214. package/lib/types.js.map +0 -1
  215. /package/lib/{constants.d.ts → cjs/constants.d.ts} +0 -0
  216. /package/lib/{structured-output → cjs/structured-output}/bot-executor.d.ts +0 -0
  217. /package/lib/{structured-output → cjs/structured-output}/carousel.d.ts +0 -0
  218. /package/lib/{structured-output → cjs/structured-output}/do-nothing.d.ts +0 -0
  219. /package/lib/{structured-output → cjs/structured-output}/exit.d.ts +0 -0
  220. /package/lib/{structured-output → cjs/structured-output}/index.d.ts +0 -0
  221. /package/lib/{structured-output → cjs/structured-output}/request-contact-info.d.ts +0 -0
  222. /package/lib/{structured-output → cjs/structured-output}/text-with-buttons.d.ts +0 -0
  223. /package/lib/{structured-output → cjs/structured-output}/text.d.ts +0 -0
@@ -1,52 +1,38 @@
1
- import { OutputMessageType } from "@botonic/core";
2
- import { InputGuardrailTripwireTriggered, RunContext, RunToolCallItem, RunToolCallOutputItem, Runner } from "@openai/agents";
3
- import { LLM_PROVIDERS, isProd } from "../constants.js";
4
- import { HubtypeApiClient } from "../services/hubtype-api-client.js";
5
- import { TrackFeature, TrackProductName } from "../services/types.js";
6
- import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from "../tools/index.js";
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
- function _define_property(obj, key, value) {
15
- if (key in obj) {
16
- Object.defineProperty(obj, key, {
17
- value: value,
18
- enumerable: true,
19
- configurable: true,
20
- writable: true
21
- });
22
- } else obj[key] = value;
23
- return obj;
24
- }
25
-
26
-
27
-
28
-
29
-
30
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRunner = void 0;
4
+ const core_1 = require("@botonic/core");
5
+ const agents_1 = require("@openai/agents");
6
+ const constants_1 = require("../constants");
7
+ const hubtype_api_client_1 = require("../services/hubtype-api-client");
8
+ const types_1 = require("../services/types");
9
+ const tools_1 = require("../tools");
31
10
  class BaseRunner {
11
+ constructor(agent, llmConfig, inferenceId, logger) {
12
+ this.agent = agent;
13
+ this.llmConfig = llmConfig;
14
+ this.inferenceId = inferenceId;
15
+ this.logger = logger;
16
+ }
32
17
  async run(messages, context) {
33
18
  const startTime = Date.now();
34
- const runContext = new RunContext(context);
35
- const prompt = await this.agent.getSystemPrompt(runContext) ?? '';
19
+ const runContext = new agents_1.RunContext(context);
20
+ const prompt = (await this.agent.getSystemPrompt(runContext)) ?? '';
36
21
  this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings, prompt);
37
22
  try {
38
- const runner = new Runner({
39
- tracingDisabled: true
40
- });
41
- const result = await runner.run(this.agent, messages, {
42
- context
23
+ const runner = new agents_1.Runner({
24
+ tracingDisabled: true,
43
25
  });
26
+ const result = (await runner.run(this.agent, messages, {
27
+ context,
28
+ }));
44
29
  const endTime = Date.now();
45
30
  await this.sendLlmRunTracking(result, context, startTime, endTime);
46
31
  const runResult = this.buildRunResult(result, context, messages.length);
47
32
  this.logger.logRunResult(runResult, startTime);
48
33
  return runResult;
49
- } catch (error) {
34
+ }
35
+ catch (error) {
50
36
  const runResult = this.handleInputGuardrailTripwireTriggered(error, startTime);
51
37
  if (runResult) {
52
38
  return runResult;
@@ -57,12 +43,15 @@ class BaseRunner {
57
43
  }
58
44
  getToolsExecuted(result, context) {
59
45
  const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
60
- return result.newItems?.filter((item)=>item instanceof RunToolCallItem).map((item)=>this.getToolExecutionInfo(item, context, toolResultsByCallId)).filter((toolExecution)=>toolExecution.toolName !== '') || [];
46
+ return (result.newItems
47
+ ?.filter(item => item instanceof agents_1.RunToolCallItem)
48
+ .map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
49
+ .filter((toolExecution) => toolExecution.toolName !== '') || []);
61
50
  }
62
51
  getToolResultsByCallId(newItems = []) {
63
52
  const map = new Map();
64
- for (const item of newItems){
65
- if (!(item instanceof RunToolCallOutputItem)) {
53
+ for (const item of newItems) {
54
+ if (!(item instanceof agents_1.RunToolCallOutputItem)) {
66
55
  continue;
67
56
  }
68
57
  const rawItem = item.rawItem;
@@ -82,28 +71,32 @@ class BaseRunner {
82
71
  if (typeof output === 'string') {
83
72
  return output;
84
73
  }
85
- return output?.type === 'text' && typeof output?.text === 'string' ? output.text : undefined;
74
+ return output?.type === 'text' && typeof output?.text === 'string'
75
+ ? output.text
76
+ : undefined;
86
77
  }
87
78
  getToolExecutionInfo(item, context, toolResultsByCallId) {
88
79
  if (item.rawItem.type !== 'function_call') {
89
80
  return {
90
81
  toolName: '',
91
- toolArguments: {}
82
+ toolArguments: {},
92
83
  };
93
84
  }
94
85
  const toolName = item.rawItem.name;
95
86
  const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
96
- const toolResults = item.rawItem.callId ? toolResultsByCallId.get(item.rawItem.callId) : undefined;
87
+ const toolResults = item.rawItem.callId
88
+ ? toolResultsByCallId.get(item.rawItem.callId)
89
+ : undefined;
97
90
  const toolExecution = {
98
91
  toolName,
99
92
  toolArguments,
100
- toolResults
93
+ toolResults,
101
94
  };
102
- if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
95
+ if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
103
96
  return {
104
97
  ...toolExecution,
105
98
  knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
106
- knowledgebaseChunksIds: context.knowledgeUsed.chunksIds
99
+ knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
107
100
  };
108
101
  }
109
102
  return toolExecution;
@@ -111,34 +104,39 @@ class BaseRunner {
111
104
  getSafeToolArguments(rawToolArguments) {
112
105
  try {
113
106
  return JSON.parse(rawToolArguments);
114
- } catch (_error) {
107
+ }
108
+ catch (_error) {
115
109
  return {};
116
110
  }
117
111
  }
118
112
  buildRunResult(result, context, memoryLength) {
119
113
  const outputMessages = result.finalOutput?.messages || [];
120
- const hasExit = outputMessages.length === 0 || outputMessages.some((message)=>message.type === OutputMessageType.Exit);
121
- const hasDoNothing = outputMessages.some((message)=>message.type === OutputMessageType.DoNothing);
114
+ const hasExit = outputMessages.length === 0 ||
115
+ outputMessages.some(message => message.type === core_1.OutputMessageType.Exit);
116
+ const hasDoNothing = outputMessages.some(message => message.type === core_1.OutputMessageType.DoNothing);
122
117
  return {
123
118
  startingAgentName: '',
124
119
  lastAgentName: '',
125
120
  availableSpecialists: [],
126
121
  isTransferredToSpecialist: false,
127
- messages: hasExit || hasDoNothing ? [] : outputMessages.filter((message)=>message.type !== OutputMessageType.Exit && message.type !== OutputMessageType.DoNothing),
122
+ messages: hasExit || hasDoNothing
123
+ ? []
124
+ : outputMessages.filter(message => message.type !== core_1.OutputMessageType.Exit &&
125
+ message.type !== core_1.OutputMessageType.DoNothing),
128
126
  toolsExecuted: this.getToolsExecuted(result, context),
129
127
  exit: hasExit,
130
128
  memoryLength,
131
129
  error: false,
132
130
  doNothing: hasDoNothing,
133
131
  inputGuardrailsTriggered: [],
134
- outputGuardrailsTriggered: []
132
+ outputGuardrailsTriggered: [],
135
133
  };
136
134
  }
137
135
  async sendLlmRunTracking(result, context, startTime, endTime) {
138
- if (!isProd) {
136
+ if (!constants_1.isProd) {
139
137
  return;
140
138
  }
141
- if (this.llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {
139
+ if (this.llmConfig.getProviderName() === constants_1.LLM_PROVIDERS.LITELLM) {
142
140
  return;
143
141
  }
144
142
  const rawResponses = result.rawResponses ?? [];
@@ -150,27 +148,28 @@ class BaseRunner {
150
148
  const totalDuration = endTime - startTime;
151
149
  const durationPerCall = Math.round(totalDuration / rawResponses.length);
152
150
  const temperature = this.llmConfig.modelSettings.temperature ?? 0;
153
- const llmRuns = rawResponses.map((response)=>({
154
- inference_id: this.inferenceId,
155
- is_test: isTest,
156
- product_name: TrackProductName.AI_AGENT,
157
- deployment_name: this.llmConfig.modelName,
158
- model_name: response.providerData?.model ?? this.llmConfig.modelName,
159
- feature: TrackFeature.AI_AGENT_RUN,
160
- api_version: this.llmConfig.getApiVersion(),
161
- num_prompt_tokens: response.usage.inputTokens,
162
- num_completion_tokens: response.usage.outputTokens,
163
- duration_in_milliseconds: durationPerCall,
164
- temperature,
165
- error: null
166
- }));
167
- const client = new HubtypeApiClient(context.authToken);
151
+ const llmRuns = rawResponses.map(response => ({
152
+ inference_id: this.inferenceId,
153
+ is_test: isTest,
154
+ product_name: types_1.TrackProductName.AI_AGENT,
155
+ deployment_name: this.llmConfig.modelName,
156
+ model_name: response.providerData?.model ??
157
+ this.llmConfig.modelName,
158
+ feature: types_1.TrackFeature.AI_AGENT_RUN,
159
+ api_version: this.llmConfig.getApiVersion(),
160
+ num_prompt_tokens: response.usage.inputTokens,
161
+ num_completion_tokens: response.usage.outputTokens,
162
+ duration_in_milliseconds: durationPerCall,
163
+ temperature,
164
+ error: null,
165
+ }));
166
+ const client = new hubtype_api_client_1.HubtypeApiClient(context.authToken);
168
167
  await client.trackLlmRuns(botId, {
169
- llm_runs: llmRuns
168
+ llm_runs: llmRuns,
170
169
  });
171
170
  }
172
171
  handleInputGuardrailTripwireTriggered(error, startTime) {
173
- if (error instanceof InputGuardrailTripwireTriggered) {
172
+ if (error instanceof agents_1.InputGuardrailTripwireTriggered) {
174
173
  const runResult = {
175
174
  startingAgentName: '',
176
175
  lastAgentName: '',
@@ -183,25 +182,13 @@ class BaseRunner {
183
182
  error: false,
184
183
  doNothing: false,
185
184
  inputGuardrailsTriggered: error.result.output.outputInfo,
186
- outputGuardrailsTriggered: []
185
+ outputGuardrailsTriggered: [],
187
186
  };
188
187
  this.logger.logGuardrailTriggered();
189
188
  this.logger.logRunResult(runResult, startTime);
190
189
  return runResult;
191
190
  }
192
191
  }
193
- constructor(agent, llmConfig, inferenceId, logger){
194
- _define_property(this, "agent", void 0);
195
- _define_property(this, "llmConfig", void 0);
196
- _define_property(this, "inferenceId", void 0);
197
- _define_property(this, "logger", void 0);
198
- this.agent = agent;
199
- this.llmConfig = llmConfig;
200
- this.inferenceId = inferenceId;
201
- this.logger = logger;
202
- }
203
192
  }
204
-
205
- export { BaseRunner };
206
-
193
+ exports.BaseRunner = BaseRunner;
207
194
  //# sourceMappingURL=base-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { RouterRunner } from './router-runner';
2
+ export { SpecialistRunner } from './specialist-runner';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecialistRunner = exports.RouterRunner = void 0;
4
+ var router_runner_1 = require("./router-runner");
5
+ Object.defineProperty(exports, "RouterRunner", { enumerable: true, get: function () { return router_runner_1.RouterRunner; } });
6
+ var specialist_runner_1 = require("./specialist-runner");
7
+ Object.defineProperty(exports, "SpecialistRunner", { enumerable: true, get: function () { return specialist_runner_1.SpecialistRunner; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runners/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { ResolvedPlugins } from '@botonic/core';
2
- import type { Context, RunResult } from '../types.js';
3
- import { BaseRunner, type RunnerResult } from './base-runner.js';
2
+ import type { Context, RunResult } from '../types';
3
+ import { BaseRunner, type RunnerResult } from './base-runner';
4
4
  export declare class RouterRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = unknown> extends BaseRunner<TPlugins, TExtraData> {
5
5
  protected buildRunResult(result: RunnerResult, context: Context<TPlugins, TExtraData>, memoryLength: number): RunResult;
6
6
  protected handleInputGuardrailTripwireTriggered(error: unknown, startTime: number): RunResult | undefined;
@@ -1,11 +1,9 @@
1
- import { Handoff } from "@openai/agents";
2
- import { BaseRunner } from "./base-runner.js";
3
-
4
-
5
-
6
-
7
-
8
- class RouterRunner extends BaseRunner {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouterRunner = void 0;
4
+ const agents_1 = require("@openai/agents");
5
+ const base_runner_1 = require("./base-runner");
6
+ class RouterRunner extends base_runner_1.BaseRunner {
9
7
  buildRunResult(result, context, memoryLength) {
10
8
  const base = super.buildRunResult(result, context, memoryLength);
11
9
  const availableSpecialists = this.getAvailableSpecialists();
@@ -16,7 +14,7 @@ class RouterRunner extends BaseRunner {
16
14
  startingAgentName,
17
15
  lastAgentName,
18
16
  availableSpecialists,
19
- isTransferredToSpecialist: startingAgentName !== lastAgentName
17
+ isTransferredToSpecialist: startingAgentName !== lastAgentName,
20
18
  };
21
19
  }
22
20
  handleInputGuardrailTripwireTriggered(error, startTime) {
@@ -32,18 +30,15 @@ class RouterRunner extends BaseRunner {
32
30
  return undefined;
33
31
  }
34
32
  getAvailableSpecialists() {
35
- return (this.agent.handoffs ?? []).map((entry)=>{
36
- const isHandoff = entry instanceof Handoff;
33
+ return (this.agent.handoffs ?? []).map((entry) => {
34
+ const isHandoff = entry instanceof agents_1.Handoff;
37
35
  const agent = isHandoff ? entry.agent : entry;
38
- const description = isHandoff ? entry.toolDescription : agent.handoffDescription;
39
- return {
40
- name: agent.name,
41
- description
42
- };
36
+ const description = isHandoff
37
+ ? entry.toolDescription
38
+ : agent.handoffDescription;
39
+ return { name: agent.name, description };
43
40
  });
44
41
  }
45
42
  }
46
-
47
- export { RouterRunner };
48
-
43
+ exports.RouterRunner = RouterRunner;
49
44
  //# sourceMappingURL=router-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-runner.js","sourceRoot":"","sources":["../../../src/runners/router-runner.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAIxC,+CAA6D;AAE7D,MAAa,YAGX,SAAQ,wBAAgC;IACrB,cAAc,CAC/B,MAAoB,EACpB,OAAsC,EACtC,YAAoB;QAEpB,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;QAEhE,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAA;QAElD,OAAO;YACL,GAAG,IAAI;YACP,iBAAiB;YACjB,aAAa;YACb,oBAAoB;YACpB,yBAAyB,EAAE,iBAAiB,KAAK,aAAa;SAC/D,CAAA;IACH,CAAC;IAEkB,qCAAqC,CACtD,KAAc,EACd,SAAiB;QAEjB,MAAM,SAAS,GAAG,KAAK,CAAC,qCAAqC,CAC3D,KAAK,EACL,SAAS,CACV,CAAA;QACD,IAAI,SAAS,EAAE,CAAC;YACd,4CAA4C;YAC5C,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YAC7C,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YACzC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;YAC/D,SAAS,CAAC,yBAAyB,GAAG,KAAK,CAAA;YAE3C,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,uBAAuB;QAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CACpC,CAAC,KAA0C,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,KAAK,YAAY,gBAAO,CAAA;YAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,KAAyB,CAAA;YAClE,MAAM,WAAW,GAAG,SAAS;gBAC3B,CAAC,CAAC,KAAK,CAAC,eAAe;gBACvB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAA;YAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAA;QAC1C,CAAC,CACF,CAAA;IACH,CAAC;CACF;AAxDD,oCAwDC"}
@@ -1,4 +1,4 @@
1
1
  import type { ResolvedPlugins } from '@botonic/core';
2
- import { BaseRunner } from './base-runner.js';
2
+ import { BaseRunner } from './base-runner';
3
3
  export declare class SpecialistRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = unknown> extends BaseRunner<TPlugins, TExtraData> {
4
4
  }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecialistRunner = void 0;
4
+ const base_runner_1 = require("./base-runner");
5
+ class SpecialistRunner extends base_runner_1.BaseRunner {
6
+ }
7
+ exports.SpecialistRunner = SpecialistRunner;
8
+ //# sourceMappingURL=specialist-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../src/runners/specialist-runner.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE1C,MAAa,gBAGX,SAAQ,wBAAgC;CAAG;AAH7C,4CAG6C"}
@@ -1,6 +1,6 @@
1
1
  import type { BotContext, HubtypeAssistantMessage } from '@botonic/core';
2
- import type { AgenticInputMessage, Chunk, MemoryOptions } from '../types.js';
3
- import type { GetMessagesV2Result, TrackLlmRunsData } from './types.js';
2
+ import type { AgenticInputMessage, Chunk, MemoryOptions } from '../types';
3
+ import type { GetMessagesV2Result, TrackLlmRunsData } from './types';
4
4
  export declare class HubtypeApiClient {
5
5
  private readonly authToken;
6
6
  constructor(authToken: string);
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HubtypeApiClient = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ const constants_1 = require("../constants");
7
+ class HubtypeApiClient {
8
+ constructor(authToken) {
9
+ this.authToken = authToken;
10
+ }
11
+ async retrieveSimilarChunks(query, sourceIds) {
12
+ const url = `${constants_1.HUBTYPE_API_URL}/external/v1/ai/knowledge_base/similar_chunks/`;
13
+ const headers = {
14
+ 'Content-Type': 'application/json',
15
+ Authorization: `Bearer ${this.authToken}`,
16
+ };
17
+ const params = {
18
+ query,
19
+ source_ids: sourceIds,
20
+ num_chunks: 5,
21
+ };
22
+ const response = await axios_1.default.post(url, params, { headers });
23
+ const chunks = response.data.chunks.map((chunk) => ({
24
+ id: chunk.id,
25
+ text: chunk.text,
26
+ }));
27
+ return chunks;
28
+ }
29
+ async getLocalMessages(maxMemoryLength, previousHubtypeMessages, localStorageKey) {
30
+ const localBotonicState = typeof globalThis !== 'undefined' && globalThis.localStorage
31
+ ? globalThis.localStorage.getItem(localStorageKey)
32
+ : null;
33
+ const botonicState = JSON.parse(localBotonicState || '{}');
34
+ const messages = botonicState.messages;
35
+ const filteredMessages = messages
36
+ .filter(message => message.data.text)
37
+ .map(message => ({
38
+ role: message.sentBy === 'user' ? 'user' : 'assistant',
39
+ content: message.data.text,
40
+ }))
41
+ .map(message => this.formatMessage(message));
42
+ const resultMessages = [...filteredMessages, ...previousHubtypeMessages];
43
+ return resultMessages.slice(-maxMemoryLength);
44
+ }
45
+ async getMessagesV2(botContext, options, previousHubtypeMessages) {
46
+ const url = `${constants_1.HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`;
47
+ const headers = {
48
+ 'Content-Type': 'application/json',
49
+ Authorization: `Bearer ${this.authToken}`,
50
+ };
51
+ const params = {
52
+ last_message_id: botContext.input.message_id,
53
+ max_messages: options.maxMessages,
54
+ include_tool_calls: options.includeToolCalls,
55
+ max_full_tool_results: options.maxFullToolResults,
56
+ debug_mode: options.debugMode,
57
+ };
58
+ try {
59
+ const response = await axios_1.default.get(url, {
60
+ headers,
61
+ params,
62
+ });
63
+ const { messages, conversation_id, truncated } = response.data;
64
+ const formattedMessages = [...messages, ...previousHubtypeMessages]
65
+ .map(message => this.formatMessageV2(message))
66
+ .filter((message) => message !== null);
67
+ return {
68
+ messages: formattedMessages,
69
+ conversationId: conversation_id,
70
+ truncated,
71
+ };
72
+ }
73
+ catch (error) {
74
+ console.error(error);
75
+ throw new Error('Failed to get messages from Hubtype V2 API');
76
+ }
77
+ }
78
+ formatMessageV2(message) {
79
+ switch (message.role) {
80
+ case 'user':
81
+ return {
82
+ role: 'user',
83
+ content: message.content ?? '',
84
+ };
85
+ case 'assistant': {
86
+ const assistantMessage = message;
87
+ // If assistant message has tool_calls, include them for context
88
+ // Using double assertion as the OpenAI API supports this format,
89
+ // but the agents SDK types are more restrictive
90
+ if (assistantMessage.tool_calls &&
91
+ assistantMessage.tool_calls.length > 0) {
92
+ return {
93
+ role: 'assistant',
94
+ content: assistantMessage.content ?? '',
95
+ tool_calls: assistantMessage.tool_calls.map(tc => ({
96
+ id: tc.id,
97
+ type: tc.type,
98
+ function: {
99
+ name: tc.function.name,
100
+ arguments: tc.function.arguments,
101
+ },
102
+ })),
103
+ };
104
+ }
105
+ // Regular assistant message without tool_calls
106
+ return {
107
+ role: 'assistant',
108
+ content: [
109
+ {
110
+ type: 'output_text',
111
+ text: assistantMessage.content ?? '',
112
+ },
113
+ ],
114
+ status: 'completed',
115
+ };
116
+ }
117
+ case 'tool': {
118
+ // Tool messages provide context about previous tool executions
119
+ // Using double assertion as the OpenAI API supports this format,
120
+ // but the agents SDK types are more restrictive
121
+ const toolMessage = message;
122
+ return {
123
+ role: 'tool',
124
+ tool_call_id: toolMessage.tool_call_id,
125
+ content: toolMessage.content ?? '',
126
+ };
127
+ }
128
+ case 'system':
129
+ return {
130
+ role: 'system',
131
+ content: message.content ?? '',
132
+ };
133
+ default:
134
+ throw new Error(`Invalid message role: ${message.role}`);
135
+ }
136
+ }
137
+ async trackLlmRuns(botId, data) {
138
+ // Not stop the bot execution if the tracking fails, just log the error
139
+ try {
140
+ const url = `${constants_1.HUBTYPE_API_URL}/external/v2/conversational_apps/${botId}/track_llm_runs/`;
141
+ const headers = {
142
+ 'Content-Type': 'application/json',
143
+ Authorization: `Bearer ${this.authToken}`,
144
+ };
145
+ await axios_1.default.post(url, data, { headers });
146
+ }
147
+ catch (error) {
148
+ console.error('Failed to track LLM runs:', error);
149
+ }
150
+ }
151
+ formatMessage(message) {
152
+ if (message.role === 'user') {
153
+ return {
154
+ content: message.content,
155
+ role: 'user',
156
+ };
157
+ }
158
+ else if (message.role === 'assistant') {
159
+ return {
160
+ role: 'assistant',
161
+ content: [
162
+ {
163
+ type: 'output_text',
164
+ text: message.content,
165
+ },
166
+ ],
167
+ status: 'completed',
168
+ };
169
+ }
170
+ else {
171
+ throw new Error('Invalid message role');
172
+ }
173
+ }
174
+ }
175
+ exports.HubtypeApiClient = HubtypeApiClient;
176
+ //# sourceMappingURL=hubtype-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../../src/services/hubtype-api-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { HubtypeAssistantMessage, HubtypeUserMessage } from '@botonic/core';
2
- import type { AgenticInputMessage } from '../types.js';
2
+ import type { AgenticInputMessage } from '../types';
3
3
  export declare enum TrackProductName {
4
4
  AI_AGENT = "ai_agent"
5
5
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrackFeature = exports.TrackProductName = void 0;
4
+ var TrackProductName;
5
+ (function (TrackProductName) {
6
+ TrackProductName["AI_AGENT"] = "ai_agent";
7
+ })(TrackProductName || (exports.TrackProductName = TrackProductName = {}));
8
+ var TrackFeature;
9
+ (function (TrackFeature) {
10
+ TrackFeature["AI_AGENT_RUN"] = "ai_agent_run";
11
+ TrackFeature["AI_AGENT_GUARDRAIL"] = "ai_agent_guardrail";
12
+ })(TrackFeature || (exports.TrackFeature = TrackFeature = {}));
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;AACvB,CAAC,EAFW,gBAAgB,gCAAhB,gBAAgB,QAE3B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,yDAAyC,CAAA;AAC3C,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BotExecutorSchema = void 0;
4
+ const core_1 = require("@botonic/core");
5
+ const zod_1 = require("zod");
6
+ exports.BotExecutorSchema = zod_1.z
7
+ .object({
8
+ type: zod_1.z.literal(core_1.OutputMessageType.BotExecutor),
9
+ content: zod_1.z.object({
10
+ text: zod_1.z.string(),
11
+ buttons: zod_1.z.array(zod_1.z.object({
12
+ text: zod_1.z.string(),
13
+ payload: zod_1.z.string(),
14
+ })),
15
+ }),
16
+ })
17
+ .describe('A text message with buttons to allow the bot to execute a specific action. Use it only when asked explicitly in the prompt');
18
+ //# sourceMappingURL=bot-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-executor.js","sourceRoot":"","sources":["../../../src/structured-output/bot-executor.ts"],"names":[],"mappings":";;;AAAA,wCAA0E;AAC1E,6BAAuB;AAIV,QAAA,iBAAiB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,wBAAiB,CAAC,WAAW,CAAC;IAC9C,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,OAAC,CAAC,KAAK,CACd,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;SACpB,CAAC,CACH;KACF,CAAC;CACH,CAAC;KACD,QAAQ,CACP,4HAA4H,CAC7H,CAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarouselSchema = void 0;
4
+ const core_1 = require("@botonic/core");
5
+ const zod_1 = require("zod");
6
+ exports.CarouselSchema = zod_1.z
7
+ .object({
8
+ type: zod_1.z.literal(core_1.OutputMessageType.Carousel),
9
+ content: zod_1.z.object({
10
+ text: zod_1.z.string().nullable().optional(),
11
+ elements: zod_1.z.array(zod_1.z.object({
12
+ title: zod_1.z.string(),
13
+ subtitle: zod_1.z.string(),
14
+ image: zod_1.z.string(),
15
+ button: zod_1.z.object({
16
+ text: zod_1.z.string(),
17
+ url: zod_1.z.string().nullable().optional(),
18
+ }),
19
+ })),
20
+ }),
21
+ })
22
+ .describe('A carousel message containing a list of elements');
23
+ //# sourceMappingURL=carousel.js.map