@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.
- package/lib/esm/agents/base-agent.d.ts +4 -4
- package/lib/esm/agents/base-agent.js +47 -20
- package/lib/esm/agents/base-agent.js.map +1 -1
- package/lib/esm/agents/index.d.ts +2 -2
- package/lib/esm/agents/index.js +8 -7
- package/lib/esm/agents/index.js.map +1 -1
- package/lib/esm/agents/router-agent.d.ts +5 -5
- package/lib/esm/agents/router-agent.js +32 -15
- package/lib/esm/agents/router-agent.js.map +1 -1
- package/lib/esm/agents/specialist-agent.d.ts +5 -5
- package/lib/esm/agents/specialist-agent.js +65 -45
- package/lib/esm/agents/specialist-agent.js.map +1 -1
- package/lib/esm/bot-config-tools.d.ts +1 -1
- package/lib/esm/bot-config-tools.js +15 -13
- package/lib/esm/bot-config-tools.js.map +1 -1
- package/lib/esm/constants.js +18 -17
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/debug-logger.d.ts +1 -1
- package/lib/esm/debug-logger.js +14 -9
- package/lib/esm/debug-logger.js.map +1 -1
- package/lib/esm/guardrails/index.d.ts +1 -1
- package/lib/esm/guardrails/index.js +5 -4
- package/lib/esm/guardrails/index.js.map +1 -1
- package/lib/esm/guardrails/input.d.ts +2 -2
- package/lib/esm/guardrails/input.js +65 -42
- package/lib/esm/guardrails/input.js.map +1 -1
- package/lib/esm/index.d.ts +3 -3
- package/lib/esm/index.js +114 -74
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/llm-config.d.ts +1 -1
- package/lib/esm/llm-config.js +81 -52
- package/lib/esm/llm-config.js.map +1 -1
- package/lib/esm/package.json +3 -0
- package/lib/esm/runners/base-runner.d.ts +3 -3
- package/lib/esm/runners/base-runner.js +81 -69
- package/lib/esm/runners/base-runner.js.map +1 -1
- package/lib/esm/runners/index.d.ts +2 -2
- package/lib/esm/runners/index.js +8 -7
- package/lib/esm/runners/index.js.map +1 -1
- package/lib/esm/runners/router-runner.d.ts +2 -2
- package/lib/esm/runners/router-runner.js +19 -14
- package/lib/esm/runners/router-runner.js.map +1 -1
- package/lib/esm/runners/specialist-runner.d.ts +1 -1
- package/lib/esm/runners/specialist-runner.js +8 -6
- package/lib/esm/runners/specialist-runner.js.map +1 -1
- package/lib/esm/services/hubtype-api-client.d.ts +2 -2
- package/lib/esm/services/hubtype-api-client.js +110 -95
- package/lib/esm/services/hubtype-api-client.js.map +1 -1
- package/lib/esm/services/types.d.ts +1 -1
- package/lib/esm/services/types.js +9 -9
- package/lib/esm/services/types.js.map +1 -1
- package/lib/esm/structured-output/bot-executor.js +20 -17
- package/lib/esm/structured-output/bot-executor.js.map +1 -1
- package/lib/esm/structured-output/carousel.js +25 -22
- package/lib/esm/structured-output/carousel.js.map +1 -1
- package/lib/esm/structured-output/exit.js +13 -10
- package/lib/esm/structured-output/exit.js.map +1 -1
- package/lib/esm/structured-output/index.d.ts +0 -10
- package/lib/esm/structured-output/index.js +39 -29
- package/lib/esm/structured-output/index.js.map +1 -1
- package/lib/esm/structured-output/text-with-buttons.js +24 -23
- package/lib/esm/structured-output/text-with-buttons.js.map +1 -1
- package/lib/esm/structured-output/text.js +16 -13
- package/lib/esm/structured-output/text.js.map +1 -1
- package/lib/esm/tools/index.d.ts +2 -2
- package/lib/esm/tools/index.js +7 -7
- package/lib/esm/tools/index.js.map +1 -1
- package/lib/esm/tools/retrieve-knowledge.d.ts +2 -2
- package/lib/esm/tools/retrieve-knowledge.js +38 -32
- package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
- package/lib/esm/types.d.ts +3 -3
- package/lib/esm/types.js +4 -2
- package/lib/esm/types.js.map +1 -1
- package/package.json +8 -7
- package/src/structured-output/index.ts +0 -2
- package/src/types.ts +4 -4
- package/lib/cjs/agents/base-agent.d.ts +0 -28
- package/lib/cjs/agents/base-agent.js +0 -39
- package/lib/cjs/agents/base-agent.js.map +0 -1
- package/lib/cjs/agents/index.d.ts +0 -2
- package/lib/cjs/agents/index.js +0 -8
- package/lib/cjs/agents/index.js.map +0 -1
- package/lib/cjs/agents/router-agent.d.ts +0 -25
- package/lib/cjs/agents/router-agent.js +0 -33
- package/lib/cjs/agents/router-agent.js.map +0 -1
- package/lib/cjs/agents/specialist-agent.d.ts +0 -39
- package/lib/cjs/agents/specialist-agent.js +0 -108
- package/lib/cjs/agents/specialist-agent.js.map +0 -1
- package/lib/cjs/bot-config-tools.d.ts +0 -7
- package/lib/cjs/bot-config-tools.js +0 -18
- package/lib/cjs/bot-config-tools.js.map +0 -1
- package/lib/cjs/constants.d.ts +0 -21
- package/lib/cjs/constants.js +0 -25
- package/lib/cjs/constants.js.map +0 -1
- package/lib/cjs/debug-logger.d.ts +0 -33
- package/lib/cjs/debug-logger.js +0 -116
- package/lib/cjs/debug-logger.js.map +0 -1
- package/lib/cjs/guardrails/index.d.ts +0 -1
- package/lib/cjs/guardrails/index.js +0 -5
- package/lib/cjs/guardrails/index.js.map +0 -1
- package/lib/cjs/guardrails/input.d.ts +0 -10
- package/lib/cjs/guardrails/input.js +0 -96
- package/lib/cjs/guardrails/input.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -22
- package/lib/cjs/index.js +0 -219
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/llm-config.d.ts +0 -30
- package/lib/cjs/llm-config.js +0 -121
- package/lib/cjs/llm-config.js.map +0 -1
- package/lib/cjs/runners/base-runner.d.ts +0 -31
- package/lib/cjs/runners/base-runner.js +0 -189
- package/lib/cjs/runners/base-runner.js.map +0 -1
- package/lib/cjs/runners/index.d.ts +0 -2
- package/lib/cjs/runners/index.js +0 -8
- package/lib/cjs/runners/index.js.map +0 -1
- package/lib/cjs/runners/router-runner.d.ts +0 -8
- package/lib/cjs/runners/router-runner.js +0 -44
- package/lib/cjs/runners/router-runner.js.map +0 -1
- package/lib/cjs/runners/specialist-runner.d.ts +0 -4
- package/lib/cjs/runners/specialist-runner.js +0 -8
- package/lib/cjs/runners/specialist-runner.js.map +0 -1
- package/lib/cjs/services/hubtype-api-client.d.ts +0 -13
- package/lib/cjs/services/hubtype-api-client.js +0 -176
- package/lib/cjs/services/hubtype-api-client.js.map +0 -1
- package/lib/cjs/services/types.d.ts +0 -72
- package/lib/cjs/services/types.js +0 -13
- package/lib/cjs/services/types.js.map +0 -1
- package/lib/cjs/structured-output/bot-executor.d.ts +0 -13
- package/lib/cjs/structured-output/bot-executor.js +0 -18
- package/lib/cjs/structured-output/bot-executor.js.map +0 -1
- package/lib/cjs/structured-output/carousel.d.ts +0 -18
- package/lib/cjs/structured-output/carousel.js +0 -23
- package/lib/cjs/structured-output/carousel.js.map +0 -1
- package/lib/cjs/structured-output/exit.d.ts +0 -6
- package/lib/cjs/structured-output/exit.js +0 -11
- package/lib/cjs/structured-output/exit.js.map +0 -1
- package/lib/cjs/structured-output/index.d.ts +0 -108
- package/lib/cjs/structured-output/index.js +0 -45
- package/lib/cjs/structured-output/index.js.map +0 -1
- package/lib/cjs/structured-output/request-contact-info.d.ts +0 -9
- package/lib/cjs/structured-output/request-contact-info.js +0 -14
- package/lib/cjs/structured-output/request-contact-info.js.map +0 -1
- package/lib/cjs/structured-output/text-with-buttons.d.ts +0 -17
- package/lib/cjs/structured-output/text-with-buttons.js +0 -24
- package/lib/cjs/structured-output/text-with-buttons.js.map +0 -1
- package/lib/cjs/structured-output/text.d.ts +0 -9
- package/lib/cjs/structured-output/text.js +0 -14
- package/lib/cjs/structured-output/text.js.map +0 -1
- package/lib/cjs/tools/index.d.ts +0 -3
- package/lib/cjs/tools/index.js +0 -8
- package/lib/cjs/tools/index.js.map +0 -1
- package/lib/cjs/tools/retrieve-knowledge.d.ts +0 -6
- package/lib/cjs/tools/retrieve-knowledge.js +0 -34
- package/lib/cjs/tools/retrieve-knowledge.js.map +0 -1
- package/lib/cjs/types.d.ts +0 -53
- package/lib/cjs/types.js +0 -3
- package/lib/cjs/types.js.map +0 -1
- package/lib/esm/structured-output/request-contact-info.d.ts +0 -9
- package/lib/esm/structured-output/request-contact-info.js +0 -14
- package/lib/esm/structured-output/request-contact-info.js.map +0 -1
- package/src/structured-output/request-contact-info.ts +0 -18
|
@@ -1,37 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
19
|
-
const prompt =
|
|
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
|
|
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
|
|
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
|
|
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 ===
|
|
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 (!
|
|
133
|
+
if (!isProd) {
|
|
133
134
|
return;
|
|
134
135
|
}
|
|
135
|
-
if (this.llmConfig.getProviderName() ===
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
|
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
|
-
|
|
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';
|
package/lib/esm/runners/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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","
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
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
|
-
|
|
38
|
-
: agent.
|
|
39
|
-
|
|
38
|
+
const description = isHandoff ? entry.toolDescription : agent.handoffDescription;
|
|
39
|
+
return {
|
|
40
|
+
name: agent.name,
|
|
41
|
+
description
|
|
42
|
+
};
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
|
-
|
|
46
|
+
|
|
47
|
+
export { RouterRunner };
|
|
48
|
+
|
|
44
49
|
//# sourceMappingURL=router-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-runner.js","
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class SpecialistRunner extends
|
|
1
|
+
import { BaseRunner } from "./base-runner.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class SpecialistRunner extends BaseRunner {
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
export { SpecialistRunner };
|
|
9
|
+
|
|
8
10
|
//# sourceMappingURL=specialist-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specialist-runner.js","
|
|
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);
|