@botonic/plugin-ai-agents 0.57.0-rslib-esm.2 → 0.57.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 (225) 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} +75 -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 +4 -4
  34. package/lib/{runners → cjs/runners}/base-runner.js +74 -81
  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.d.ts +6 -0
  56. package/lib/cjs/structured-output/do-nothing.js +11 -0
  57. package/lib/cjs/structured-output/do-nothing.js.map +1 -0
  58. package/lib/cjs/structured-output/exit.js +11 -0
  59. package/lib/cjs/structured-output/exit.js.map +1 -0
  60. package/lib/{structured-output → cjs/structured-output}/index.d.ts +4 -0
  61. package/lib/cjs/structured-output/index.js +47 -0
  62. package/lib/cjs/structured-output/index.js.map +1 -0
  63. package/lib/cjs/structured-output/request-contact-info.js +14 -0
  64. package/lib/cjs/structured-output/request-contact-info.js.map +1 -0
  65. package/lib/cjs/structured-output/text-with-buttons.js +24 -0
  66. package/lib/cjs/structured-output/text-with-buttons.js.map +1 -0
  67. package/lib/cjs/structured-output/text.js +14 -0
  68. package/lib/cjs/structured-output/text.js.map +1 -0
  69. package/lib/{tools → cjs/tools}/index.d.ts +2 -2
  70. package/lib/cjs/tools/index.js +8 -0
  71. package/lib/cjs/tools/index.js.map +1 -0
  72. package/lib/{tools → cjs/tools}/retrieve-knowledge.d.ts +2 -2
  73. package/lib/cjs/tools/retrieve-knowledge.js +34 -0
  74. package/lib/cjs/tools/retrieve-knowledge.js.map +1 -0
  75. package/lib/{types.d.ts → cjs/types.d.ts} +1 -1
  76. package/lib/cjs/types.js +3 -0
  77. package/lib/cjs/types.js.map +1 -0
  78. package/lib/esm/agents/base-agent.d.ts +28 -0
  79. package/lib/esm/agents/base-agent.js +39 -0
  80. package/lib/esm/agents/base-agent.js.map +1 -0
  81. package/lib/esm/agents/index.d.ts +2 -0
  82. package/lib/esm/agents/index.js +8 -0
  83. package/lib/esm/agents/index.js.map +1 -0
  84. package/lib/esm/agents/router-agent.d.ts +25 -0
  85. package/lib/esm/agents/router-agent.js +33 -0
  86. package/lib/esm/agents/router-agent.js.map +1 -0
  87. package/lib/esm/agents/specialist-agent.d.ts +39 -0
  88. package/lib/esm/agents/specialist-agent.js +108 -0
  89. package/lib/esm/agents/specialist-agent.js.map +1 -0
  90. package/lib/esm/bot-config-tools.d.ts +7 -0
  91. package/lib/esm/bot-config-tools.js +18 -0
  92. package/lib/esm/bot-config-tools.js.map +1 -0
  93. package/lib/esm/constants.d.ts +21 -0
  94. package/lib/esm/constants.js +25 -0
  95. package/lib/esm/constants.js.map +1 -0
  96. package/lib/esm/debug-logger.d.ts +33 -0
  97. package/lib/esm/debug-logger.js +116 -0
  98. package/lib/esm/debug-logger.js.map +1 -0
  99. package/lib/esm/guardrails/index.d.ts +1 -0
  100. package/lib/esm/guardrails/index.js +5 -0
  101. package/lib/esm/guardrails/index.js.map +1 -0
  102. package/lib/esm/guardrails/input.d.ts +10 -0
  103. package/lib/esm/guardrails/input.js +96 -0
  104. package/lib/esm/guardrails/input.js.map +1 -0
  105. package/lib/esm/index.d.ts +22 -0
  106. package/lib/esm/index.js +220 -0
  107. package/lib/esm/index.js.map +1 -0
  108. package/lib/esm/llm-config.d.ts +30 -0
  109. package/lib/esm/llm-config.js +121 -0
  110. package/lib/esm/llm-config.js.map +1 -0
  111. package/lib/esm/runners/base-runner.d.ts +31 -0
  112. package/lib/esm/runners/base-runner.js +194 -0
  113. package/lib/esm/runners/base-runner.js.map +1 -0
  114. package/lib/esm/runners/index.d.ts +2 -0
  115. package/lib/esm/runners/index.js +8 -0
  116. package/lib/esm/runners/index.js.map +1 -0
  117. package/lib/esm/runners/router-runner.d.ts +8 -0
  118. package/lib/esm/runners/router-runner.js +44 -0
  119. package/lib/esm/runners/router-runner.js.map +1 -0
  120. package/lib/esm/runners/specialist-runner.d.ts +4 -0
  121. package/lib/esm/runners/specialist-runner.js +8 -0
  122. package/lib/esm/runners/specialist-runner.js.map +1 -0
  123. package/lib/esm/services/hubtype-api-client.d.ts +13 -0
  124. package/lib/esm/services/hubtype-api-client.js +176 -0
  125. package/lib/esm/services/hubtype-api-client.js.map +1 -0
  126. package/lib/esm/services/types.d.ts +72 -0
  127. package/lib/esm/services/types.js +13 -0
  128. package/lib/esm/services/types.js.map +1 -0
  129. package/lib/esm/structured-output/bot-executor.d.ts +13 -0
  130. package/lib/esm/structured-output/bot-executor.js +18 -0
  131. package/lib/esm/structured-output/bot-executor.js.map +1 -0
  132. package/lib/esm/structured-output/carousel.d.ts +18 -0
  133. package/lib/esm/structured-output/carousel.js +23 -0
  134. package/lib/esm/structured-output/carousel.js.map +1 -0
  135. package/lib/esm/structured-output/do-nothing.d.ts +6 -0
  136. package/lib/esm/structured-output/do-nothing.js +11 -0
  137. package/lib/esm/structured-output/do-nothing.js.map +1 -0
  138. package/lib/esm/structured-output/exit.d.ts +6 -0
  139. package/lib/esm/structured-output/exit.js +11 -0
  140. package/lib/esm/structured-output/exit.js.map +1 -0
  141. package/lib/esm/structured-output/index.d.ts +112 -0
  142. package/lib/esm/structured-output/index.js +47 -0
  143. package/lib/esm/structured-output/index.js.map +1 -0
  144. package/lib/esm/structured-output/request-contact-info.d.ts +9 -0
  145. package/lib/esm/structured-output/request-contact-info.js +14 -0
  146. package/lib/esm/structured-output/request-contact-info.js.map +1 -0
  147. package/lib/esm/structured-output/text-with-buttons.d.ts +17 -0
  148. package/lib/esm/structured-output/text-with-buttons.js +24 -0
  149. package/lib/esm/structured-output/text-with-buttons.js.map +1 -0
  150. package/lib/esm/structured-output/text.d.ts +9 -0
  151. package/lib/esm/structured-output/text.js +14 -0
  152. package/lib/esm/structured-output/text.js.map +1 -0
  153. package/lib/esm/tools/index.d.ts +3 -0
  154. package/lib/esm/tools/index.js +8 -0
  155. package/lib/esm/tools/index.js.map +1 -0
  156. package/lib/esm/tools/retrieve-knowledge.d.ts +6 -0
  157. package/lib/esm/tools/retrieve-knowledge.js +34 -0
  158. package/lib/esm/tools/retrieve-knowledge.js.map +1 -0
  159. package/lib/esm/types.d.ts +53 -0
  160. package/lib/esm/types.js +3 -0
  161. package/lib/esm/types.js.map +1 -0
  162. package/package.json +10 -12
  163. package/src/index.ts +1 -0
  164. package/src/runners/base-runner.ts +20 -10
  165. package/src/structured-output/do-nothing.ts +12 -0
  166. package/src/structured-output/index.ts +2 -0
  167. package/lib/agents/base-agent.js +0 -66
  168. package/lib/agents/base-agent.js.map +0 -1
  169. package/lib/agents/index.d.ts +0 -2
  170. package/lib/agents/index.js +0 -9
  171. package/lib/agents/index.js.map +0 -1
  172. package/lib/agents/router-agent.js +0 -50
  173. package/lib/agents/router-agent.js.map +0 -1
  174. package/lib/agents/specialist-agent.js.map +0 -1
  175. package/lib/bot-config-tools.js +0 -20
  176. package/lib/bot-config-tools.js.map +0 -1
  177. package/lib/constants.js +0 -26
  178. package/lib/constants.js.map +0 -1
  179. package/lib/debug-logger.js.map +0 -1
  180. package/lib/guardrails/index.d.ts +0 -1
  181. package/lib/guardrails/index.js +0 -6
  182. package/lib/guardrails/index.js.map +0 -1
  183. package/lib/guardrails/input.js +0 -119
  184. package/lib/guardrails/input.js.map +0 -1
  185. package/lib/index.js.map +0 -1
  186. package/lib/llm-config.js +0 -150
  187. package/lib/llm-config.js.map +0 -1
  188. package/lib/runners/base-runner.js.map +0 -1
  189. package/lib/runners/index.d.ts +0 -2
  190. package/lib/runners/index.js +0 -9
  191. package/lib/runners/index.js.map +0 -1
  192. package/lib/runners/router-runner.js.map +0 -1
  193. package/lib/runners/specialist-runner.js +0 -10
  194. package/lib/runners/specialist-runner.js.map +0 -1
  195. package/lib/services/hubtype-api-client.js +0 -191
  196. package/lib/services/hubtype-api-client.js.map +0 -1
  197. package/lib/services/types.js +0 -13
  198. package/lib/services/types.js.map +0 -1
  199. package/lib/structured-output/bot-executor.js +0 -21
  200. package/lib/structured-output/bot-executor.js.map +0 -1
  201. package/lib/structured-output/carousel.js +0 -26
  202. package/lib/structured-output/carousel.js.map +0 -1
  203. package/lib/structured-output/exit.js +0 -14
  204. package/lib/structured-output/exit.js.map +0 -1
  205. package/lib/structured-output/index.js +0 -59
  206. package/lib/structured-output/index.js.map +0 -1
  207. package/lib/structured-output/request-contact-info.js +0 -17
  208. package/lib/structured-output/request-contact-info.js.map +0 -1
  209. package/lib/structured-output/text-with-buttons.js +0 -25
  210. package/lib/structured-output/text-with-buttons.js.map +0 -1
  211. package/lib/structured-output/text.js +0 -17
  212. package/lib/structured-output/text.js.map +0 -1
  213. package/lib/tools/index.js +0 -8
  214. package/lib/tools/index.js.map +0 -1
  215. package/lib/tools/retrieve-knowledge.js +0 -40
  216. package/lib/tools/retrieve-knowledge.js.map +0 -1
  217. package/lib/types.js +0 -5
  218. package/lib/types.js.map +0 -1
  219. /package/lib/{constants.d.ts → cjs/constants.d.ts} +0 -0
  220. /package/lib/{structured-output → cjs/structured-output}/bot-executor.d.ts +0 -0
  221. /package/lib/{structured-output → cjs/structured-output}/carousel.d.ts +0 -0
  222. /package/lib/{structured-output → cjs/structured-output}/exit.d.ts +0 -0
  223. /package/lib/{structured-output → cjs/structured-output}/request-contact-info.d.ts +0 -0
  224. /package/lib/{structured-output → cjs/structured-output}/text-with-buttons.d.ts +0 -0
  225. /package/lib/{structured-output → cjs/structured-output}/text.d.ts +0 -0
@@ -1,49 +1,38 @@
1
- import { InputGuardrailTripwireTriggered, RunContext, RunToolCallItem, RunToolCallOutputItem, Runner } from "@openai/agents";
2
- import { LLM_PROVIDERS, isProd } from "../constants.js";
3
- import { HubtypeApiClient } from "../services/hubtype-api-client.js";
4
- import { TrackFeature, TrackProductName } from "../services/types.js";
5
- import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from "../tools/index.js";
6
-
7
-
8
-
9
-
10
-
11
-
12
- function _define_property(obj, key, value) {
13
- if (key in obj) {
14
- Object.defineProperty(obj, key, {
15
- value: value,
16
- enumerable: true,
17
- configurable: true,
18
- writable: true
19
- });
20
- } else obj[key] = value;
21
- return obj;
22
- }
23
-
24
-
25
-
26
-
27
-
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");
28
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
+ }
29
17
  async run(messages, context) {
30
18
  const startTime = Date.now();
31
- const runContext = new RunContext(context);
32
- const prompt = await this.agent.getSystemPrompt(runContext) ?? '';
19
+ const runContext = new agents_1.RunContext(context);
20
+ const prompt = (await this.agent.getSystemPrompt(runContext)) ?? '';
33
21
  this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings, prompt);
34
22
  try {
35
- const runner = new Runner({
36
- tracingDisabled: true
37
- });
38
- const result = await runner.run(this.agent, messages, {
39
- context
23
+ const runner = new agents_1.Runner({
24
+ tracingDisabled: true,
40
25
  });
26
+ const result = (await runner.run(this.agent, messages, {
27
+ context,
28
+ }));
41
29
  const endTime = Date.now();
42
30
  await this.sendLlmRunTracking(result, context, startTime, endTime);
43
31
  const runResult = this.buildRunResult(result, context, messages.length);
44
32
  this.logger.logRunResult(runResult, startTime);
45
33
  return runResult;
46
- } catch (error) {
34
+ }
35
+ catch (error) {
47
36
  const runResult = this.handleInputGuardrailTripwireTriggered(error, startTime);
48
37
  if (runResult) {
49
38
  return runResult;
@@ -54,12 +43,15 @@ class BaseRunner {
54
43
  }
55
44
  getToolsExecuted(result, context) {
56
45
  const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
57
- 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 !== '') || []);
58
50
  }
59
51
  getToolResultsByCallId(newItems = []) {
60
52
  const map = new Map();
61
- for (const item of newItems){
62
- if (!(item instanceof RunToolCallOutputItem)) {
53
+ for (const item of newItems) {
54
+ if (!(item instanceof agents_1.RunToolCallOutputItem)) {
63
55
  continue;
64
56
  }
65
57
  const rawItem = item.rawItem;
@@ -79,28 +71,32 @@ class BaseRunner {
79
71
  if (typeof output === 'string') {
80
72
  return output;
81
73
  }
82
- 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;
83
77
  }
84
78
  getToolExecutionInfo(item, context, toolResultsByCallId) {
85
79
  if (item.rawItem.type !== 'function_call') {
86
80
  return {
87
81
  toolName: '',
88
- toolArguments: {}
82
+ toolArguments: {},
89
83
  };
90
84
  }
91
85
  const toolName = item.rawItem.name;
92
86
  const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
93
- 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;
94
90
  const toolExecution = {
95
91
  toolName,
96
92
  toolArguments,
97
- toolResults
93
+ toolResults,
98
94
  };
99
- if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
95
+ if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
100
96
  return {
101
97
  ...toolExecution,
102
98
  knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
103
- knowledgebaseChunksIds: context.knowledgeUsed.chunksIds
99
+ knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
104
100
  };
105
101
  }
106
102
  return toolExecution;
@@ -108,32 +104,39 @@ class BaseRunner {
108
104
  getSafeToolArguments(rawToolArguments) {
109
105
  try {
110
106
  return JSON.parse(rawToolArguments);
111
- } catch (_error) {
107
+ }
108
+ catch (_error) {
112
109
  return {};
113
110
  }
114
111
  }
115
112
  buildRunResult(result, context, memoryLength) {
116
113
  const outputMessages = result.finalOutput?.messages || [];
117
- const hasExit = outputMessages.length === 0 || outputMessages.some((message)=>message.type === 'exit');
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);
118
117
  return {
119
118
  startingAgentName: '',
120
119
  lastAgentName: '',
121
120
  availableSpecialists: [],
122
121
  isTransferredToSpecialist: false,
123
- messages: hasExit ? [] : outputMessages.filter((message)=>message.type !== 'exit'),
122
+ messages: hasExit || hasDoNothing
123
+ ? []
124
+ : outputMessages.filter(message => message.type !== core_1.OutputMessageType.Exit &&
125
+ message.type !== core_1.OutputMessageType.DoNothing),
124
126
  toolsExecuted: this.getToolsExecuted(result, context),
125
127
  exit: hasExit,
126
128
  memoryLength,
127
129
  error: false,
130
+ doNothing: hasDoNothing,
128
131
  inputGuardrailsTriggered: [],
129
- outputGuardrailsTriggered: []
132
+ outputGuardrailsTriggered: [],
130
133
  };
131
134
  }
132
135
  async sendLlmRunTracking(result, context, startTime, endTime) {
133
- if (!isProd) {
136
+ if (!constants_1.isProd) {
134
137
  return;
135
138
  }
136
- if (this.llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {
139
+ if (this.llmConfig.getProviderName() === constants_1.LLM_PROVIDERS.LITELLM) {
137
140
  return;
138
141
  }
139
142
  const rawResponses = result.rawResponses ?? [];
@@ -145,27 +148,28 @@ class BaseRunner {
145
148
  const totalDuration = endTime - startTime;
146
149
  const durationPerCall = Math.round(totalDuration / rawResponses.length);
147
150
  const temperature = this.llmConfig.modelSettings.temperature ?? 0;
148
- const llmRuns = rawResponses.map((response)=>({
149
- inference_id: this.inferenceId,
150
- is_test: isTest,
151
- product_name: TrackProductName.AI_AGENT,
152
- deployment_name: this.llmConfig.modelName,
153
- model_name: response.providerData?.model ?? this.llmConfig.modelName,
154
- feature: TrackFeature.AI_AGENT_RUN,
155
- api_version: this.llmConfig.getApiVersion(),
156
- num_prompt_tokens: response.usage.inputTokens,
157
- num_completion_tokens: response.usage.outputTokens,
158
- duration_in_milliseconds: durationPerCall,
159
- temperature,
160
- error: null
161
- }));
162
- 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);
163
167
  await client.trackLlmRuns(botId, {
164
- llm_runs: llmRuns
168
+ llm_runs: llmRuns,
165
169
  });
166
170
  }
167
171
  handleInputGuardrailTripwireTriggered(error, startTime) {
168
- if (error instanceof InputGuardrailTripwireTriggered) {
172
+ if (error instanceof agents_1.InputGuardrailTripwireTriggered) {
169
173
  const runResult = {
170
174
  startingAgentName: '',
171
175
  lastAgentName: '',
@@ -176,26 +180,15 @@ class BaseRunner {
176
180
  toolsExecuted: [],
177
181
  exit: true,
178
182
  error: false,
183
+ doNothing: false,
179
184
  inputGuardrailsTriggered: error.result.output.outputInfo,
180
- outputGuardrailsTriggered: []
185
+ outputGuardrailsTriggered: [],
181
186
  };
182
187
  this.logger.logGuardrailTriggered();
183
188
  this.logger.logRunResult(runResult, startTime);
184
189
  return runResult;
185
190
  }
186
191
  }
187
- constructor(agent, llmConfig, inferenceId, logger){
188
- _define_property(this, "agent", void 0);
189
- _define_property(this, "llmConfig", void 0);
190
- _define_property(this, "inferenceId", void 0);
191
- _define_property(this, "logger", void 0);
192
- this.agent = agent;
193
- this.llmConfig = llmConfig;
194
- this.inferenceId = inferenceId;
195
- this.logger = logger;
196
- }
197
192
  }
198
-
199
- export { BaseRunner };
200
-
193
+ exports.BaseRunner = BaseRunner;
201
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