@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
@@ -1,37 +1,49 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseRunner = void 0;
4
- const agents_1 = require("@openai/agents");
5
- const constants_1 = require("../constants");
6
- const hubtype_api_client_1 = require("../services/hubtype-api-client");
7
- const types_1 = require("../services/types");
8
- const tools_1 = require("../tools");
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
+
9
28
  class BaseRunner {
10
- constructor(agent, llmConfig, inferenceId, logger) {
11
- this.agent = agent;
12
- this.llmConfig = llmConfig;
13
- this.inferenceId = inferenceId;
14
- this.logger = logger;
15
- }
16
29
  async run(messages, context) {
17
30
  const startTime = Date.now();
18
- const runContext = new agents_1.RunContext(context);
19
- const prompt = (await this.agent.getSystemPrompt(runContext)) ?? '';
31
+ const runContext = new RunContext(context);
32
+ const prompt = await this.agent.getSystemPrompt(runContext) ?? '';
20
33
  this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings, prompt);
21
34
  try {
22
- const runner = new agents_1.Runner({
23
- tracingDisabled: true,
35
+ const runner = new Runner({
36
+ tracingDisabled: true
37
+ });
38
+ const result = await runner.run(this.agent, messages, {
39
+ context
24
40
  });
25
- const result = (await runner.run(this.agent, messages, {
26
- context,
27
- }));
28
41
  const endTime = Date.now();
29
42
  await this.sendLlmRunTracking(result, context, startTime, endTime);
30
43
  const runResult = this.buildRunResult(result, context, messages.length);
31
44
  this.logger.logRunResult(runResult, startTime);
32
45
  return runResult;
33
- }
34
- catch (error) {
46
+ } catch (error) {
35
47
  const runResult = this.handleInputGuardrailTripwireTriggered(error, startTime);
36
48
  if (runResult) {
37
49
  return runResult;
@@ -42,15 +54,12 @@ class BaseRunner {
42
54
  }
43
55
  getToolsExecuted(result, context) {
44
56
  const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
45
- return (result.newItems
46
- ?.filter(item => item instanceof agents_1.RunToolCallItem)
47
- .map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
48
- .filter((toolExecution) => toolExecution.toolName !== '') || []);
57
+ return result.newItems?.filter((item)=>item instanceof RunToolCallItem).map((item)=>this.getToolExecutionInfo(item, context, toolResultsByCallId)).filter((toolExecution)=>toolExecution.toolName !== '') || [];
49
58
  }
50
59
  getToolResultsByCallId(newItems = []) {
51
60
  const map = new Map();
52
- for (const item of newItems) {
53
- if (!(item instanceof agents_1.RunToolCallOutputItem)) {
61
+ for (const item of newItems){
62
+ if (!(item instanceof RunToolCallOutputItem)) {
54
63
  continue;
55
64
  }
56
65
  const rawItem = item.rawItem;
@@ -70,32 +79,28 @@ class BaseRunner {
70
79
  if (typeof output === 'string') {
71
80
  return output;
72
81
  }
73
- return output?.type === 'text' && typeof output?.text === 'string'
74
- ? output.text
75
- : undefined;
82
+ return output?.type === 'text' && typeof output?.text === 'string' ? output.text : undefined;
76
83
  }
77
84
  getToolExecutionInfo(item, context, toolResultsByCallId) {
78
85
  if (item.rawItem.type !== 'function_call') {
79
86
  return {
80
87
  toolName: '',
81
- toolArguments: {},
88
+ toolArguments: {}
82
89
  };
83
90
  }
84
91
  const toolName = item.rawItem.name;
85
92
  const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
86
- const toolResults = item.rawItem.callId
87
- ? toolResultsByCallId.get(item.rawItem.callId)
88
- : undefined;
93
+ const toolResults = item.rawItem.callId ? toolResultsByCallId.get(item.rawItem.callId) : undefined;
89
94
  const toolExecution = {
90
95
  toolName,
91
96
  toolArguments,
92
- toolResults,
97
+ toolResults
93
98
  };
94
- if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
99
+ if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
95
100
  return {
96
101
  ...toolExecution,
97
102
  knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
98
- knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
103
+ knowledgebaseChunksIds: context.knowledgeUsed.chunksIds
99
104
  };
100
105
  }
101
106
  return toolExecution;
@@ -103,36 +108,32 @@ class BaseRunner {
103
108
  getSafeToolArguments(rawToolArguments) {
104
109
  try {
105
110
  return JSON.parse(rawToolArguments);
106
- }
107
- catch (_error) {
111
+ } catch (_error) {
108
112
  return {};
109
113
  }
110
114
  }
111
115
  buildRunResult(result, context, memoryLength) {
112
116
  const outputMessages = result.finalOutput?.messages || [];
113
- const hasExit = outputMessages.length === 0 ||
114
- outputMessages.some(message => message.type === 'exit');
117
+ const hasExit = outputMessages.length === 0 || outputMessages.some((message)=>message.type === 'exit');
115
118
  return {
116
119
  startingAgentName: '',
117
120
  lastAgentName: '',
118
121
  availableSpecialists: [],
119
122
  isTransferredToSpecialist: false,
120
- messages: hasExit
121
- ? []
122
- : outputMessages.filter(message => message.type !== 'exit'),
123
+ messages: hasExit ? [] : outputMessages.filter((message)=>message.type !== 'exit'),
123
124
  toolsExecuted: this.getToolsExecuted(result, context),
124
125
  exit: hasExit,
125
126
  memoryLength,
126
127
  error: false,
127
128
  inputGuardrailsTriggered: [],
128
- outputGuardrailsTriggered: [],
129
+ outputGuardrailsTriggered: []
129
130
  };
130
131
  }
131
132
  async sendLlmRunTracking(result, context, startTime, endTime) {
132
- if (!constants_1.isProd) {
133
+ if (!isProd) {
133
134
  return;
134
135
  }
135
- if (this.llmConfig.getProviderName() === constants_1.LLM_PROVIDERS.LITELLM) {
136
+ if (this.llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {
136
137
  return;
137
138
  }
138
139
  const rawResponses = result.rawResponses ?? [];
@@ -144,28 +145,27 @@ class BaseRunner {
144
145
  const totalDuration = endTime - startTime;
145
146
  const durationPerCall = Math.round(totalDuration / rawResponses.length);
146
147
  const temperature = this.llmConfig.modelSettings.temperature ?? 0;
147
- const llmRuns = rawResponses.map(response => ({
148
- inference_id: this.inferenceId,
149
- is_test: isTest,
150
- product_name: types_1.TrackProductName.AI_AGENT,
151
- deployment_name: this.llmConfig.modelName,
152
- model_name: response.providerData?.model ??
153
- this.llmConfig.modelName,
154
- feature: types_1.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 hubtype_api_client_1.HubtypeApiClient(context.authToken);
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);
163
163
  await client.trackLlmRuns(botId, {
164
- llm_runs: llmRuns,
164
+ llm_runs: llmRuns
165
165
  });
166
166
  }
167
167
  handleInputGuardrailTripwireTriggered(error, startTime) {
168
- if (error instanceof agents_1.InputGuardrailTripwireTriggered) {
168
+ if (error instanceof InputGuardrailTripwireTriggered) {
169
169
  const runResult = {
170
170
  startingAgentName: '',
171
171
  lastAgentName: '',
@@ -177,13 +177,25 @@ class BaseRunner {
177
177
  exit: true,
178
178
  error: false,
179
179
  inputGuardrailsTriggered: error.result.output.outputInfo,
180
- outputGuardrailsTriggered: [],
180
+ outputGuardrailsTriggered: []
181
181
  };
182
182
  this.logger.logGuardrailTriggered();
183
183
  this.logger.logRunResult(runResult, startTime);
184
184
  return runResult;
185
185
  }
186
186
  }
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
+ }
187
197
  }
188
- exports.BaseRunner = BaseRunner;
198
+
199
+ export { BaseRunner };
200
+
189
201
  //# sourceMappingURL=base-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runners/base-runner.js","sources":["../../../src/runners/base-runner.ts"],"sourcesContent":["import type {\n OutputMessage,\n ResolvedPlugins,\n ToolExecution,\n} from '@botonic/core'\nimport {\n InputGuardrailTripwireTriggered,\n RunContext,\n Runner,\n RunToolCallItem,\n RunToolCallOutputItem,\n} from '@openai/agents'\nimport { isProd, LLM_PROVIDERS } from '../constants'\nimport type { DebugLogger } from '../debug-logger'\nimport type { LLMConfig } from '../llm-config'\nimport { HubtypeApiClient } from '../services/hubtype-api-client'\nimport { TrackFeature, TrackProductName } from '../services/types'\nimport { RETRIEVE_KNOWLEDGE_TOOL_NAME } from '../tools'\nimport type {\n AgenticInputMessage,\n AgenticOutputMessage,\n AIAgent,\n Context,\n ResultRawResponse,\n RunResult,\n} from '../types'\n\n// Minimal interface matching the properties we actually use from Runner.run() result.\n// This bypasses strict type checking while maintaining type safety for accessed properties.\nexport interface RunnerResult {\n finalOutput?: {\n messages?: OutputMessage[]\n }\n rawResponses?: ResultRawResponse[]\n newItems?: unknown[]\n lastAgent?: { name?: string }\n // biome-ignore lint/suspicious/noExplicitAny: state is a complex internal type\n state?: any\n}\n\nexport abstract class BaseRunner<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = unknown,\n> {\n protected agent: AIAgent<TPlugins, TExtraData>\n protected llmConfig: LLMConfig\n protected inferenceId: string\n protected logger: DebugLogger\n\n constructor(\n agent: AIAgent<TPlugins, TExtraData>,\n llmConfig: LLMConfig,\n inferenceId: string,\n logger: DebugLogger\n ) {\n this.agent = agent\n this.llmConfig = llmConfig\n this.inferenceId = inferenceId\n this.logger = logger\n }\n\n async run(\n messages: AgenticInputMessage[],\n context: Context<TPlugins, TExtraData>\n ): Promise<RunResult> {\n const startTime = Date.now()\n\n const runContext = new RunContext(context)\n const prompt = (await this.agent.getSystemPrompt(runContext)) ?? ''\n this.logger.logRunnerStart(\n this.llmConfig.modelName,\n this.llmConfig.modelSettings,\n prompt\n )\n\n try {\n const runner = new Runner({\n tracingDisabled: true,\n })\n const result = (await runner.run(this.agent, messages, {\n context,\n })) as RunnerResult\n const endTime = Date.now()\n\n await this.sendLlmRunTracking(result, context, startTime, endTime)\n\n const runResult = this.buildRunResult(result, context, messages.length)\n\n this.logger.logRunResult(runResult, startTime)\n\n return runResult\n } catch (error) {\n const runResult = this.handleInputGuardrailTripwireTriggered(\n error,\n startTime\n )\n if (runResult) {\n return runResult\n }\n\n this.logger.logRunnerError(startTime, error)\n\n throw error\n }\n }\n\n protected getToolsExecuted(\n result: RunnerResult,\n context: Context<TPlugins, TExtraData>\n ): ToolExecution[] {\n const toolResultsByCallId = this.getToolResultsByCallId(result.newItems)\n\n return (\n result.newItems\n ?.filter(item => item instanceof RunToolCallItem)\n .map((item: RunToolCallItem) =>\n this.getToolExecutionInfo(\n item as RunToolCallItem,\n context,\n toolResultsByCallId\n )\n )\n .filter(\n (toolExecution: ToolExecution) => toolExecution.toolName !== ''\n ) || []\n )\n }\n\n private getToolResultsByCallId(\n newItems: unknown[] = []\n ): Map<string, string> {\n const map = new Map<string, string>()\n for (const item of newItems) {\n if (!(item instanceof RunToolCallOutputItem)) {\n continue\n }\n const rawItem = item.rawItem as {\n callId?: string\n output?: string | { type?: string; text?: string }\n }\n const callId = rawItem?.callId\n const output = rawItem?.output\n if (callId == null || output == null) {\n continue\n }\n const text = this.extractToolResult(output)\n if (text != null) {\n map.set(callId, text)\n }\n }\n return map\n }\n\n private extractToolResult(\n output: string | { type?: string; text?: string }\n ): string | undefined {\n if (typeof output === 'string') {\n return output\n }\n return output?.type === 'text' && typeof output?.text === 'string'\n ? output.text\n : undefined\n }\n\n private getToolExecutionInfo(\n item: RunToolCallItem,\n context: Context<TPlugins, TExtraData>,\n toolResultsByCallId: Map<string, string>\n ): ToolExecution {\n if (item.rawItem.type !== 'function_call') {\n return {\n toolName: '',\n toolArguments: {},\n }\n }\n const toolName = item.rawItem.name\n const toolArguments = this.getSafeToolArguments(item.rawItem.arguments)\n const toolResults = item.rawItem.callId\n ? toolResultsByCallId.get(item.rawItem.callId)\n : undefined\n\n const toolExecution: ToolExecution = {\n toolName,\n toolArguments,\n toolResults,\n }\n\n if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {\n return {\n ...toolExecution,\n knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,\n knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,\n }\n }\n\n return toolExecution\n }\n\n private getSafeToolArguments(\n rawToolArguments: string\n ): Record<string, unknown> {\n try {\n return JSON.parse(rawToolArguments)\n } catch (_error) {\n return {}\n }\n }\n\n protected buildRunResult(\n result: RunnerResult,\n context: Context<TPlugins, TExtraData>,\n memoryLength: number\n ): RunResult {\n const outputMessages = result.finalOutput?.messages || []\n const hasExit =\n outputMessages.length === 0 ||\n outputMessages.some(message => message.type === 'exit')\n\n return {\n startingAgentName: '',\n lastAgentName: '',\n availableSpecialists: [],\n isTransferredToSpecialist: false,\n messages: hasExit\n ? []\n : (outputMessages.filter(\n message => message.type !== 'exit'\n ) as AgenticOutputMessage[]),\n toolsExecuted: this.getToolsExecuted(result, context),\n exit: hasExit,\n memoryLength,\n error: false,\n inputGuardrailsTriggered: [],\n outputGuardrailsTriggered: [],\n }\n }\n\n private async sendLlmRunTracking(\n result: RunnerResult,\n context: Context<TPlugins, TExtraData>,\n startTime: number,\n endTime: number\n ): Promise<void> {\n if (!isProd) {\n return\n }\n if (this.llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {\n return\n }\n const rawResponses = result.rawResponses ?? []\n if (rawResponses.length === 0) {\n return\n }\n const botId = context.request.session.bot.id\n const isTest = context.request.session.is_test_integration\n const totalDuration = endTime - startTime\n const durationPerCall = Math.round(totalDuration / rawResponses.length)\n const temperature =\n (this.llmConfig.modelSettings.temperature as number | undefined) ?? 0\n const llmRuns = rawResponses.map(response => ({\n inference_id: this.inferenceId,\n is_test: isTest,\n product_name: TrackProductName.AI_AGENT,\n deployment_name: this.llmConfig.modelName,\n model_name:\n (response.providerData?.model as string | undefined) ??\n this.llmConfig.modelName,\n feature: TrackFeature.AI_AGENT_RUN,\n api_version: this.llmConfig.getApiVersion(),\n num_prompt_tokens: response.usage.inputTokens,\n num_completion_tokens: response.usage.outputTokens,\n duration_in_milliseconds: durationPerCall,\n temperature,\n error: null,\n }))\n\n const client = new HubtypeApiClient(context.authToken)\n await client.trackLlmRuns(botId, {\n llm_runs: llmRuns,\n })\n }\n\n protected handleInputGuardrailTripwireTriggered(\n error: unknown,\n startTime: number\n ): RunResult | undefined {\n if (error instanceof InputGuardrailTripwireTriggered) {\n const runResult: RunResult = {\n startingAgentName: '',\n lastAgentName: '',\n availableSpecialists: [],\n isTransferredToSpecialist: false,\n messages: [],\n memoryLength: 0,\n toolsExecuted: [],\n exit: true,\n error: false,\n inputGuardrailsTriggered: error.result.output.outputInfo,\n outputGuardrailsTriggered: [],\n }\n\n this.logger.logGuardrailTriggered()\n this.logger.logRunResult(runResult, startTime)\n\n return runResult\n }\n }\n}\n"],"names":["InputGuardrailTripwireTriggered","RunContext","Runner","RunToolCallItem","RunToolCallOutputItem","isProd","LLM_PROVIDERS","HubtypeApiClient","TrackFeature","TrackProductName","RETRIEVE_KNOWLEDGE_TOOL_NAME","BaseRunner","messages","context","startTime","Date","runContext","prompt","runner","result","endTime","runResult","error","toolResultsByCallId","item","toolExecution","newItems","map","Map","rawItem","callId","output","text","undefined","toolName","toolArguments","toolResults","rawToolArguments","JSON","_error","memoryLength","outputMessages","hasExit","message","rawResponses","botId","isTest","totalDuration","durationPerCall","Math","temperature","llmRuns","response","client","agent","llmConfig","inferenceId","logger"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { RouterRunner } from './router-runner';
2
- export { SpecialistRunner } from './specialist-runner';
1
+ export { RouterRunner } from './router-runner.js';
2
+ export { SpecialistRunner } from './specialist-runner.js';
@@ -1,8 +1,9 @@
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; } });
1
+
2
+
3
+
4
+
5
+
6
+ export { RouterRunner } from "./router-runner.js";
7
+ export { SpecialistRunner } from "./specialist-runner.js";
8
+
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +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
+ {"version":3,"file":"runners/index.js","sources":["../../../src/runners/index.ts"],"sourcesContent":["export { RouterRunner } from './router-runner'\nexport { SpecialistRunner } from './specialist-runner'\n"],"names":["RouterRunner","SpecialistRunner"],"mappings":";;AAA8C;AACQ"}
@@ -1,6 +1,6 @@
1
1
  import type { ResolvedPlugins } from '@botonic/core';
2
- import type { Context, RunResult } from '../types';
3
- import { BaseRunner, type RunnerResult } from './base-runner';
2
+ import type { Context, RunResult } from '../types.js';
3
+ import { BaseRunner, type RunnerResult } from './base-runner.js';
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,9 +1,11 @@
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 {
1
+ import { Handoff } from "@openai/agents";
2
+ import { BaseRunner } from "./base-runner.js";
3
+
4
+
5
+
6
+
7
+
8
+ class RouterRunner extends BaseRunner {
7
9
  buildRunResult(result, context, memoryLength) {
8
10
  const base = super.buildRunResult(result, context, memoryLength);
9
11
  const availableSpecialists = this.getAvailableSpecialists();
@@ -14,7 +16,7 @@ class RouterRunner extends base_runner_1.BaseRunner {
14
16
  startingAgentName,
15
17
  lastAgentName,
16
18
  availableSpecialists,
17
- isTransferredToSpecialist: startingAgentName !== lastAgentName,
19
+ isTransferredToSpecialist: startingAgentName !== lastAgentName
18
20
  };
19
21
  }
20
22
  handleInputGuardrailTripwireTriggered(error, startTime) {
@@ -30,15 +32,18 @@ class RouterRunner extends base_runner_1.BaseRunner {
30
32
  return undefined;
31
33
  }
32
34
  getAvailableSpecialists() {
33
- return (this.agent.handoffs ?? []).map((entry) => {
34
- const isHandoff = entry instanceof agents_1.Handoff;
35
+ return (this.agent.handoffs ?? []).map((entry)=>{
36
+ const isHandoff = entry instanceof Handoff;
35
37
  const agent = isHandoff ? entry.agent : entry;
36
- const description = isHandoff
37
- ? entry.toolDescription
38
- : agent.handoffDescription;
39
- return { name: agent.name, description };
38
+ const description = isHandoff ? entry.toolDescription : agent.handoffDescription;
39
+ return {
40
+ name: agent.name,
41
+ description
42
+ };
40
43
  });
41
44
  }
42
45
  }
43
- exports.RouterRunner = RouterRunner;
46
+
47
+ export { RouterRunner };
48
+
44
49
  //# sourceMappingURL=router-runner.js.map
@@ -1 +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
+ {"version":3,"file":"runners/router-runner.js","sources":["../../../src/runners/router-runner.ts"],"sourcesContent":["import type { AvailableSpecialist, ResolvedPlugins } from '@botonic/core'\nimport { Handoff } from '@openai/agents'\nimport type { Agent } from '@openai/agents-core'\n\nimport type { Context, RunResult } from '../types'\nimport { BaseRunner, type RunnerResult } from './base-runner'\n\nexport class RouterRunner<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = unknown,\n> extends BaseRunner<TPlugins, TExtraData> {\n protected override buildRunResult(\n result: RunnerResult,\n context: Context<TPlugins, TExtraData>,\n memoryLength: number\n ): RunResult {\n const base = super.buildRunResult(result, context, memoryLength)\n\n const availableSpecialists = this.getAvailableSpecialists()\n const startingAgentName = this.agent.name ?? ''\n const lastAgentName = result.lastAgent?.name ?? ''\n\n return {\n ...base,\n startingAgentName,\n lastAgentName,\n availableSpecialists,\n isTransferredToSpecialist: startingAgentName !== lastAgentName,\n }\n }\n\n protected override handleInputGuardrailTripwireTriggered(\n error: unknown,\n startTime: number\n ): RunResult | undefined {\n const runResult = super.handleInputGuardrailTripwireTriggered(\n error,\n startTime\n )\n if (runResult) {\n // Override attributes to match router agent\n runResult.startingAgentName = this.agent.name\n runResult.lastAgentName = this.agent.name\n runResult.availableSpecialists = this.getAvailableSpecialists()\n runResult.isTransferredToSpecialist = false\n\n return runResult\n }\n return undefined\n }\n\n private getAvailableSpecialists(): AvailableSpecialist[] {\n return (this.agent.handoffs ?? []).map(\n (entry: Agent<any, any> | Handoff<any, any>) => {\n const isHandoff = entry instanceof Handoff\n const agent = isHandoff ? entry.agent : (entry as Agent<any, any>)\n const description = isHandoff\n ? entry.toolDescription\n : agent.handoffDescription\n return { name: agent.name, description }\n }\n )\n }\n}\n"],"names":["Handoff","BaseRunner","RouterRunner","result","context","memoryLength","base","availableSpecialists","startingAgentName","lastAgentName","error","startTime","runResult","undefined","entry","isHandoff","agent","description"],"mappings":";;;;;AACwC;AAIqB;AAEtD,MAAME,YAAYA,SAGfD,UAAUA;IACC,eACjBE,MAAoB,EACpBC,OAAsC,EACtCC,YAAoB,EACT;QACX,MAAMC,OAAO,KAAK,CAAC,eAAeH,QAAQC,SAASC;QAEnD,MAAME,uBAAuB,IAAI,CAAC,uBAAuB;QACzD,MAAMC,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;QAC7C,MAAMC,gBAAgBN,OAAO,SAAS,EAAE,QAAQ;QAEhD,OAAO;YACL,GAAGG,IAAI;YACPE;YACAC;YACAF;YACA,2BAA2BC,sBAAsBC;QACnD;IACF;IAEmB,sCACjBC,KAAc,EACdC,SAAiB,EACM;QACvB,MAAMC,YAAY,KAAK,CAAC,sCACtBF,OACAC;QAEF,IAAIC,WAAW;YACb,4CAA4C;YAC5CA,UAAU,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;YAC7CA,UAAU,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;YACzCA,UAAU,oBAAoB,GAAG,IAAI,CAAC,uBAAuB;YAC7DA,UAAU,yBAAyB,GAAG;YAEtC,OAAOA;QACT;QACA,OAAOC;IACT;IAEQ,0BAAiD;QACvD,OAAQ,KAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAC,EAAG,GAAG,CACpC,CAACC;YACC,MAAMC,YAAYD,iBAAiBd,OAAOA;YAC1C,MAAMgB,QAAQD,YAAYD,MAAM,KAAK,GAAIA;YACzC,MAAMG,cAAcF,YAChBD,MAAM,eAAe,GACrBE,MAAM,kBAAkB;YAC5B,OAAO;gBAAE,MAAMA,MAAM,IAAI;gBAAEC;YAAY;QACzC;IAEJ;AACF"}
@@ -1,4 +1,4 @@
1
1
  import type { ResolvedPlugins } from '@botonic/core';
2
- import { BaseRunner } from './base-runner';
2
+ import { BaseRunner } from './base-runner.js';
3
3
  export declare class SpecialistRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = unknown> extends BaseRunner<TPlugins, TExtraData> {
4
4
  }
@@ -1,8 +1,10 @@
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 {
1
+ import { BaseRunner } from "./base-runner.js";
2
+
3
+
4
+
5
+ class SpecialistRunner extends BaseRunner {
6
6
  }
7
- exports.SpecialistRunner = SpecialistRunner;
7
+
8
+ export { SpecialistRunner };
9
+
8
10
  //# sourceMappingURL=specialist-runner.js.map
@@ -1 +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
+ {"version":3,"file":"runners/specialist-runner.js","sources":["../../../src/runners/specialist-runner.ts"],"sourcesContent":["import type { ResolvedPlugins } from '@botonic/core'\nimport { BaseRunner } from './base-runner'\n\nexport class SpecialistRunner<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = unknown,\n> extends BaseRunner<TPlugins, TExtraData> {}\n"],"names":["BaseRunner","SpecialistRunner"],"mappings":";;;AAC0C;AAEnC,MAAMC,gBAAgBA,SAGnBD,UAAUA;AAAwB"}
@@ -1,6 +1,6 @@
1
1
  import type { BotContext, HubtypeAssistantMessage } from '@botonic/core';
2
- import type { AgenticInputMessage, Chunk, MemoryOptions } from '../types';
3
- import type { GetMessagesV2Result, TrackLlmRunsData } from './types';
2
+ import type { AgenticInputMessage, Chunk, MemoryOptions } from '../types.js';
3
+ import type { GetMessagesV2Result, TrackLlmRunsData } from './types.js';
4
4
  export declare class HubtypeApiClient {
5
5
  private readonly authToken;
6
6
  constructor(authToken: string);