@botonic/plugin-ai-agents 2.29.0 → 2.31.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/CHANGELOG.md +15 -0
- package/package.json +7 -5
- package/src/index.d.ts +2 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/agents/base-agent.d.ts +25 -0
- package/src/lib/agents/base-agent.js +39 -0
- package/src/lib/agents/base-agent.js.map +1 -0
- package/src/lib/agents/index.d.ts +2 -0
- package/src/lib/agents/index.js +3 -0
- package/src/lib/agents/index.js.map +1 -0
- package/src/lib/agents/router-agent.d.ts +23 -0
- package/src/lib/agents/router-agent.js +32 -0
- package/src/lib/agents/router-agent.js.map +1 -0
- package/src/lib/agents/specialist-agent.d.ts +33 -0
- package/src/lib/agents/specialist-agent.js +103 -0
- package/src/lib/agents/specialist-agent.js.map +1 -0
- package/src/lib/bot-config-tools.d.ts +7 -0
- package/src/lib/bot-config-tools.js +11 -0
- package/src/lib/bot-config-tools.js.map +1 -0
- package/src/lib/constants.d.ts +16 -6
- package/src/lib/constants.js +16 -8
- package/src/lib/constants.js.map +1 -1
- package/src/lib/debug-logger.d.ts +4 -2
- package/src/lib/debug-logger.js +20 -22
- package/src/lib/debug-logger.js.map +1 -1
- package/src/lib/guardrails/input.d.ts +9 -3
- package/src/lib/guardrails/input.js +100 -24
- package/src/lib/guardrails/input.js.map +1 -1
- package/src/lib/index.d.ts +12 -8
- package/src/lib/index.js +131 -48
- package/src/lib/index.js.map +1 -1
- package/src/lib/llm-config.d.ts +31 -0
- package/src/lib/llm-config.js +111 -0
- package/src/lib/llm-config.js.map +1 -0
- package/src/lib/runners/base-runner.d.ts +32 -0
- package/src/lib/runners/base-runner.js +182 -0
- package/src/lib/runners/base-runner.js.map +1 -0
- package/src/lib/runners/index.d.ts +2 -0
- package/src/lib/runners/index.js +3 -0
- package/src/lib/runners/index.js.map +1 -0
- package/src/lib/runners/router-runner.d.ts +8 -0
- package/src/lib/runners/router-runner.js +40 -0
- package/src/lib/runners/router-runner.js.map +1 -0
- package/src/lib/runners/specialist-runner.d.ts +4 -0
- package/src/lib/runners/specialist-runner.js +4 -0
- package/src/lib/runners/specialist-runner.js.map +1 -0
- package/src/lib/services/hubtype-api-client.d.ts +13 -0
- package/src/lib/{hubtype-api-client.js → services/hubtype-api-client.js} +32 -51
- package/src/lib/services/hubtype-api-client.js.map +1 -0
- package/src/lib/services/types.d.ts +71 -0
- package/src/lib/services/types.js +10 -0
- package/src/lib/services/types.js.map +1 -0
- package/src/lib/structured-output/bot-executor.d.ts +15 -0
- package/src/lib/structured-output/bot-executor.js +15 -0
- package/src/lib/structured-output/bot-executor.js.map +1 -0
- package/src/lib/structured-output/carousel.d.ts +8 -78
- package/src/lib/structured-output/carousel.js +2 -1
- package/src/lib/structured-output/carousel.js.map +1 -1
- package/src/lib/structured-output/exit.d.ts +5 -7
- package/src/lib/structured-output/exit.js +2 -1
- package/src/lib/structured-output/exit.js.map +1 -1
- package/src/lib/structured-output/flow-builder-content.d.ts +9 -0
- package/src/lib/structured-output/flow-builder-content.js +9 -0
- package/src/lib/structured-output/flow-builder-content.js.map +1 -0
- package/src/lib/structured-output/index.d.ts +103 -203
- package/src/lib/structured-output/index.js +30 -3
- package/src/lib/structured-output/index.js.map +1 -1
- package/src/lib/structured-output/text-with-buttons.d.ts +11 -41
- package/src/lib/structured-output/text-with-buttons.js +8 -1
- package/src/lib/structured-output/text-with-buttons.js.map +1 -1
- package/src/lib/structured-output/text.d.ts +6 -18
- package/src/lib/structured-output/text.js +2 -1
- package/src/lib/structured-output/text.js.map +1 -1
- package/src/lib/test-llm-config.d.ts +10 -0
- package/src/lib/test-llm-config.js +18 -0
- package/src/lib/test-llm-config.js.map +1 -0
- package/src/lib/tools/index.d.ts +1 -1
- package/src/lib/tools/index.js +1 -1
- package/src/lib/tools/index.js.map +1 -1
- package/src/lib/tools/retrieve-knowledge.d.ts +3 -6
- package/src/lib/tools/retrieve-knowledge.js +4 -4
- package/src/lib/tools/retrieve-knowledge.js.map +1 -1
- package/src/lib/types.d.ts +15 -9
- package/src/lib/agent-builder.d.ts +0 -30
- package/src/lib/agent-builder.js +0 -111
- package/src/lib/agent-builder.js.map +0 -1
- package/src/lib/hubtype-api-client.d.ts +0 -22
- package/src/lib/hubtype-api-client.js.map +0 -1
- package/src/lib/openai.d.ts +0 -1
- package/src/lib/openai.js +0 -21
- package/src/lib/openai.js.map +0 -1
- package/src/lib/runner.d.ts +0 -13
- package/src/lib/runner.js +0 -96
- package/src/lib/runner.js.map +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { InputGuardrailTripwireTriggered, Runner, RunToolCallItem, RunToolCallOutputItem, } from '@openai/agents';
|
|
3
|
+
import { HubtypeApiClient } from '../services/hubtype-api-client';
|
|
4
|
+
import { TrackFeature, TrackProductName } from '../services/types';
|
|
5
|
+
import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from '../tools';
|
|
6
|
+
export class BaseRunner {
|
|
7
|
+
constructor(agent, llmConfig, inferenceId, logger) {
|
|
8
|
+
this.agent = agent;
|
|
9
|
+
this.llmConfig = llmConfig;
|
|
10
|
+
this.inferenceId = inferenceId;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
run(messages, context) {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const startTime = Date.now();
|
|
16
|
+
this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings);
|
|
17
|
+
try {
|
|
18
|
+
const runner = new Runner({
|
|
19
|
+
tracingDisabled: true,
|
|
20
|
+
});
|
|
21
|
+
const result = (yield runner.run(this.agent, messages, {
|
|
22
|
+
context,
|
|
23
|
+
}));
|
|
24
|
+
const endTime = Date.now();
|
|
25
|
+
yield this.sendLlmRunTracking(result, context, startTime, endTime);
|
|
26
|
+
const runResult = this.buildRunResult(result, context, messages.length);
|
|
27
|
+
this.logger.logRunResult(runResult, startTime);
|
|
28
|
+
return runResult;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const runResult = this.handleInputGuardrailTripwireTriggered(error, startTime);
|
|
32
|
+
if (runResult) {
|
|
33
|
+
return runResult;
|
|
34
|
+
}
|
|
35
|
+
this.logger.logRunnerError(startTime, error);
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
getToolsExecuted(result, context) {
|
|
41
|
+
var _a;
|
|
42
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
43
|
+
return (((_a = result.newItems) === null || _a === void 0 ? void 0 : _a.filter(item => item instanceof RunToolCallItem).map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId)).filter((toolExecution) => toolExecution.toolName !== '')) || []);
|
|
44
|
+
}
|
|
45
|
+
getToolResultsByCallId(newItems = []) {
|
|
46
|
+
const map = new Map();
|
|
47
|
+
for (const item of newItems) {
|
|
48
|
+
if (!(item instanceof RunToolCallOutputItem)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const rawItem = item.rawItem;
|
|
52
|
+
const callId = rawItem === null || rawItem === void 0 ? void 0 : rawItem.callId;
|
|
53
|
+
const output = rawItem === null || rawItem === void 0 ? void 0 : rawItem.output;
|
|
54
|
+
if (callId == null || output == null) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const text = this.extractToolResult(output);
|
|
58
|
+
if (text != null) {
|
|
59
|
+
map.set(callId, text);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return map;
|
|
63
|
+
}
|
|
64
|
+
extractToolResult(output) {
|
|
65
|
+
if (typeof output === 'string') {
|
|
66
|
+
return output;
|
|
67
|
+
}
|
|
68
|
+
return (output === null || output === void 0 ? void 0 : output.type) === 'text' && typeof (output === null || output === void 0 ? void 0 : output.text) === 'string'
|
|
69
|
+
? output.text
|
|
70
|
+
: undefined;
|
|
71
|
+
}
|
|
72
|
+
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
73
|
+
if (item.rawItem.type !== 'function_call') {
|
|
74
|
+
return {
|
|
75
|
+
toolName: '',
|
|
76
|
+
toolArguments: {},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const toolName = item.rawItem.name;
|
|
80
|
+
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
81
|
+
const toolResults = item.rawItem.callId
|
|
82
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
83
|
+
: undefined;
|
|
84
|
+
const toolExecution = {
|
|
85
|
+
toolName,
|
|
86
|
+
toolArguments,
|
|
87
|
+
toolResults,
|
|
88
|
+
};
|
|
89
|
+
if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
90
|
+
return Object.assign(Object.assign({}, toolExecution), { knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds, knowledgebaseChunksIds: context.knowledgeUsed.chunksIds });
|
|
91
|
+
}
|
|
92
|
+
return toolExecution;
|
|
93
|
+
}
|
|
94
|
+
getSafeToolArguments(rawToolArguments) {
|
|
95
|
+
try {
|
|
96
|
+
return JSON.parse(rawToolArguments);
|
|
97
|
+
}
|
|
98
|
+
catch (_error) {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
buildRunResult(result, context, memoryLength) {
|
|
103
|
+
var _a;
|
|
104
|
+
const outputMessages = ((_a = result.finalOutput) === null || _a === void 0 ? void 0 : _a.messages) || [];
|
|
105
|
+
const hasExit = outputMessages.length === 0 ||
|
|
106
|
+
outputMessages.some(message => message.type === 'exit');
|
|
107
|
+
return {
|
|
108
|
+
startingAgentName: '',
|
|
109
|
+
lastAgentName: '',
|
|
110
|
+
availableSpecialists: [],
|
|
111
|
+
isTransferredToSpecialist: false,
|
|
112
|
+
messages: hasExit
|
|
113
|
+
? []
|
|
114
|
+
: outputMessages.filter(message => message.type !== 'exit'),
|
|
115
|
+
toolsExecuted: this.getToolsExecuted(result, context),
|
|
116
|
+
exit: hasExit,
|
|
117
|
+
memoryLength,
|
|
118
|
+
error: false,
|
|
119
|
+
inputGuardrailsTriggered: [],
|
|
120
|
+
outputGuardrailsTriggered: [],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
sendLlmRunTracking(result, context, startTime, endTime) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
var _a, _b, _c;
|
|
126
|
+
const rawResponses = (_a = result.rawResponses) !== null && _a !== void 0 ? _a : [];
|
|
127
|
+
if (rawResponses.length === 0) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const botonicContext = context.botonicContext;
|
|
131
|
+
const botId = botonicContext.session.bot.id;
|
|
132
|
+
const isTest = botonicContext.session.isTestIntegration;
|
|
133
|
+
const totalDuration = endTime - startTime;
|
|
134
|
+
const durationPerCall = Math.round(totalDuration / rawResponses.length);
|
|
135
|
+
const temperature = (_b = this.llmConfig.modelSettings.temperature) !== null && _b !== void 0 ? _b : 0;
|
|
136
|
+
const apiVersion = (_c = this.llmConfig.getApiVersion()) !== null && _c !== void 0 ? _c : 'NOT_API_VERSION_FOR_LITELLM';
|
|
137
|
+
const llmRuns = rawResponses.map(response => {
|
|
138
|
+
var _a, _b;
|
|
139
|
+
return ({
|
|
140
|
+
inference_id: this.inferenceId,
|
|
141
|
+
is_test: isTest,
|
|
142
|
+
product_name: TrackProductName.AI_AGENT,
|
|
143
|
+
deployment_name: this.llmConfig.modelName,
|
|
144
|
+
model_name: (_b = (_a = response.providerData) === null || _a === void 0 ? void 0 : _a['model']) !== null && _b !== void 0 ? _b : this.llmConfig.modelName,
|
|
145
|
+
feature: TrackFeature.AI_AGENT_RUN,
|
|
146
|
+
api_version: apiVersion,
|
|
147
|
+
num_prompt_tokens: response.usage.inputTokens,
|
|
148
|
+
num_completion_tokens: response.usage.outputTokens,
|
|
149
|
+
duration_in_milliseconds: durationPerCall,
|
|
150
|
+
temperature,
|
|
151
|
+
error: null,
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
const client = new HubtypeApiClient(botonicContext);
|
|
155
|
+
yield client.trackLlmRuns(botId, {
|
|
156
|
+
llm_runs: llmRuns,
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
handleInputGuardrailTripwireTriggered(error, startTime) {
|
|
161
|
+
if (error instanceof InputGuardrailTripwireTriggered) {
|
|
162
|
+
const runResult = {
|
|
163
|
+
startingAgentName: '',
|
|
164
|
+
lastAgentName: '',
|
|
165
|
+
availableSpecialists: [],
|
|
166
|
+
isTransferredToSpecialist: false,
|
|
167
|
+
messages: [],
|
|
168
|
+
memoryLength: 0,
|
|
169
|
+
toolsExecuted: [],
|
|
170
|
+
exit: true,
|
|
171
|
+
error: false,
|
|
172
|
+
inputGuardrailsTriggered: error.result.output.outputInfo,
|
|
173
|
+
outputGuardrailsTriggered: [],
|
|
174
|
+
};
|
|
175
|
+
this.logger.logGuardrailTriggered();
|
|
176
|
+
this.logger.logRunResult(runResult, startTime);
|
|
177
|
+
return runResult;
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=base-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/runners/base-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/runners/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ResolvedPlugins, UserExtraData } from '@botonic/core';
|
|
2
|
+
import type { AiAgentContext, RunResult } from '../types';
|
|
3
|
+
import { BaseRunner, type RunnerResult } from './base-runner';
|
|
4
|
+
export declare class RouterRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> extends BaseRunner<TPlugins, TExtraData> {
|
|
5
|
+
protected buildRunResult(result: RunnerResult, context: AiAgentContext<TPlugins, TExtraData>, memoryLength: number): RunResult;
|
|
6
|
+
protected handleInputGuardrailTripwireTriggered(error: unknown, startTime: number): RunResult | undefined;
|
|
7
|
+
private getAvailableSpecialists;
|
|
8
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Handoff } from '@openai/agents';
|
|
2
|
+
import { BaseRunner } from './base-runner';
|
|
3
|
+
export class RouterRunner extends BaseRunner {
|
|
4
|
+
buildRunResult(result, context, memoryLength) {
|
|
5
|
+
var _a, _b, _c;
|
|
6
|
+
const base = super.buildRunResult(result, context, memoryLength);
|
|
7
|
+
const availableSpecialists = this.getAvailableSpecialists();
|
|
8
|
+
const startingAgentName = (_a = this.agent.name) !== null && _a !== void 0 ? _a : '';
|
|
9
|
+
const lastAgentName = (_c = (_b = result.lastAgent) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '';
|
|
10
|
+
return Object.assign(Object.assign({}, base), { startingAgentName,
|
|
11
|
+
lastAgentName,
|
|
12
|
+
availableSpecialists, isTransferredToSpecialist: startingAgentName !== lastAgentName });
|
|
13
|
+
}
|
|
14
|
+
handleInputGuardrailTripwireTriggered(error, startTime) {
|
|
15
|
+
const runResult = super.handleInputGuardrailTripwireTriggered(error, startTime);
|
|
16
|
+
if (runResult) {
|
|
17
|
+
runResult.startingAgentName = this.agent.name;
|
|
18
|
+
runResult.lastAgentName = this.agent.name;
|
|
19
|
+
runResult.availableSpecialists = this.getAvailableSpecialists();
|
|
20
|
+
runResult.isTransferredToSpecialist = false;
|
|
21
|
+
return runResult;
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
getAvailableSpecialists() {
|
|
26
|
+
var _a;
|
|
27
|
+
return ((_a = this.agent.handoffs) !== null && _a !== void 0 ? _a : []).map(
|
|
28
|
+
// biome-ignore lint/suspicious/noExplicitAny: handoff entries use internal SDK types
|
|
29
|
+
(entry) => {
|
|
30
|
+
const isHandoff = entry instanceof Handoff;
|
|
31
|
+
// biome-ignore lint/suspicious/noExplicitAny: SDK types
|
|
32
|
+
const agent = isHandoff ? entry.agent : entry;
|
|
33
|
+
const description = isHandoff
|
|
34
|
+
? entry.toolDescription
|
|
35
|
+
: agent.handoffDescription;
|
|
36
|
+
return { name: agent.name, description };
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=router-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-runner.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/runners/router-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAA;AAE7D,MAAM,OAAO,YAGX,SAAQ,UAAgC;IACrB,cAAc,CAC/B,MAAoB,EACpB,OAA6C,EAC7C,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,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAA;QAC/C,MAAM,aAAa,GAAG,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,IAAI,mCAAI,EAAE,CAAA;QAElD,uCACK,IAAI,KACP,iBAAiB;YACjB,aAAa;YACb,oBAAoB,EACpB,yBAAyB,EAAE,iBAAiB,KAAK,aAAa,IAC/D;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,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,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG;QACpC,qFAAqF;QACrF,CAAC,KAA0C,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,KAAK,YAAY,OAAO,CAAA;YAC1C,wDAAwD;YACxD,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,EAAyB,CAAA;QACjE,CAAC,CACF,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResolvedPlugins, UserExtraData } from '@botonic/core';
|
|
2
|
+
import { BaseRunner } from './base-runner';
|
|
3
|
+
export declare class SpecialistRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> extends BaseRunner<TPlugins, TExtraData> {
|
|
4
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/runners/specialist-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,OAAO,gBAGX,SAAQ,UAAgC;CAAG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BotonicContext } from '@botonic/core';
|
|
2
|
+
import { HubtypeAssistantMessage } from '@botonic/shared';
|
|
3
|
+
import type { Chunk, MemoryOptions } from '../types';
|
|
4
|
+
import type { GetMessagesV2Result, TrackLlmRunsData } from './types';
|
|
5
|
+
export declare class HubtypeApiClient {
|
|
6
|
+
private readonly botonicContext;
|
|
7
|
+
constructor(botonicContext: BotonicContext);
|
|
8
|
+
retrieveSimilarChunks(query: string, sourceIds: string[]): Promise<Chunk[]>;
|
|
9
|
+
getMessagesV2(botonicContext: BotonicContext, options: MemoryOptions, previousHubtypeMessages: HubtypeAssistantMessage[]): Promise<GetMessagesV2Result>;
|
|
10
|
+
private formatMessageV2;
|
|
11
|
+
private formatMessage;
|
|
12
|
+
trackLlmRuns(botId: string, data: TrackLlmRunsData): Promise<void>;
|
|
13
|
+
}
|
|
@@ -32,67 +32,25 @@ export class HubtypeApiClient {
|
|
|
32
32
|
return chunks;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
getMessagesV2(botonicContext, options, previousHubtypeMessages) {
|
|
36
36
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
-
|
|
38
|
-
const headers = {
|
|
39
|
-
'Content-Type': 'application/json',
|
|
40
|
-
Authorization: `Bearer ${this.botonicContext.secrets.hubtypeAccessToken}`,
|
|
41
|
-
};
|
|
42
|
-
const params = new URLSearchParams({
|
|
43
|
-
last_message_id: botonicContext.input.messageId || '',
|
|
44
|
-
num_messages: maxMemoryLength.toString(),
|
|
45
|
-
});
|
|
46
|
-
const urlWithParams = `${url}?${params.toString()}`;
|
|
47
|
-
try {
|
|
48
|
-
const response = yield fetch(urlWithParams, {
|
|
49
|
-
method: 'GET',
|
|
50
|
-
headers,
|
|
51
|
-
});
|
|
52
|
-
if (!response.ok) {
|
|
53
|
-
throw new Error(`Failed to get messages: ${response.statusText}`);
|
|
54
|
-
}
|
|
55
|
-
const data = yield response.json();
|
|
56
|
-
const messages = data.messages;
|
|
57
|
-
return messages.map(message => this.formatMessage(message));
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.error(error);
|
|
61
|
-
throw new Error('Failed to get messages from Hubtype');
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
getMessagesV2(botonicContext_1) {
|
|
66
|
-
return __awaiter(this, arguments, void 0, function* (botonicContext, options = {}) {
|
|
37
|
+
var _a;
|
|
67
38
|
const url = `${this.botonicContext.settings.hubtypeApiUrl}/external/v2/ai/agent/message_history/`;
|
|
68
39
|
const headers = {
|
|
69
40
|
'Content-Type': 'application/json',
|
|
70
41
|
Authorization: `Bearer ${this.botonicContext.secrets.hubtypeAccessToken}`,
|
|
71
42
|
};
|
|
72
|
-
const params =
|
|
43
|
+
const params = {
|
|
44
|
+
last_message_id: (_a = botonicContext.input.messageId) !== null && _a !== void 0 ? _a : 'NO_MESSAGE_ID',
|
|
73
45
|
max_messages: options.maxMessages,
|
|
74
|
-
})), (options.includeToolCalls !== undefined && {
|
|
75
46
|
include_tool_calls: options.includeToolCalls,
|
|
76
|
-
})), (options.maxFullToolResults !== undefined && {
|
|
77
47
|
max_full_tool_results: options.maxFullToolResults,
|
|
78
|
-
})), (options.debugMode !== undefined && {
|
|
79
48
|
debug_mode: options.debugMode,
|
|
80
|
-
}
|
|
49
|
+
};
|
|
81
50
|
try {
|
|
82
|
-
const searchParams = new URLSearchParams()
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
searchParams.set('max_messages', params.max_messages.toString());
|
|
86
|
-
}
|
|
87
|
-
if (params.include_tool_calls !== undefined) {
|
|
88
|
-
searchParams.set('include_tool_calls', params.include_tool_calls.toString());
|
|
89
|
-
}
|
|
90
|
-
if (params.max_full_tool_results !== undefined) {
|
|
91
|
-
searchParams.set('max_full_tool_results', params.max_full_tool_results.toString());
|
|
92
|
-
}
|
|
93
|
-
if (params.debug_mode !== undefined) {
|
|
94
|
-
searchParams.set('debug_mode', params.debug_mode.toString());
|
|
95
|
-
}
|
|
51
|
+
const searchParams = new URLSearchParams(Object.entries(params)
|
|
52
|
+
.filter(([, value]) => value !== undefined)
|
|
53
|
+
.map(([key, value]) => [key, String(value)]));
|
|
96
54
|
const urlWithParams = `${url}?${searchParams.toString()}`;
|
|
97
55
|
const response = yield fetch(urlWithParams, {
|
|
98
56
|
method: 'GET',
|
|
@@ -103,7 +61,7 @@ export class HubtypeApiClient {
|
|
|
103
61
|
}
|
|
104
62
|
const data = yield response.json();
|
|
105
63
|
const { messages, conversation_id, truncated } = data;
|
|
106
|
-
const formattedMessages = messages
|
|
64
|
+
const formattedMessages = [...messages, ...previousHubtypeMessages]
|
|
107
65
|
.map((message) => this.formatMessageV2(message))
|
|
108
66
|
.filter((message) => message !== null);
|
|
109
67
|
return {
|
|
@@ -201,5 +159,28 @@ export class HubtypeApiClient {
|
|
|
201
159
|
throw new Error('Invalid message role');
|
|
202
160
|
}
|
|
203
161
|
}
|
|
162
|
+
trackLlmRuns(botId, data) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
// Not stop the bot execution if the tracking fails, just log the error
|
|
165
|
+
try {
|
|
166
|
+
const url = `${this.botonicContext.settings.hubtypeApiUrl}/external/v2/conversational_apps/${botId}/track_llm_runs/`;
|
|
167
|
+
const headers = {
|
|
168
|
+
'Content-Type': 'application/json',
|
|
169
|
+
Authorization: `Bearer ${this.botonicContext.secrets.hubtypeAccessToken}`,
|
|
170
|
+
};
|
|
171
|
+
const response = yield fetch(url, {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
headers,
|
|
174
|
+
body: JSON.stringify(data),
|
|
175
|
+
});
|
|
176
|
+
if (!response.ok) {
|
|
177
|
+
throw new Error(`Failed to track LLM runs to Hubtype: ${response.status} ${response.statusText}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error(error);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
204
185
|
}
|
|
205
186
|
//# sourceMappingURL=hubtype-api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/services/hubtype-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { HubtypeAssistantMessage, HubtypeUserMessage } from '@botonic/shared';
|
|
2
|
+
import { AgenticInputMessage } from '../types';
|
|
3
|
+
export declare enum TrackProductName {
|
|
4
|
+
AI_AGENT = "ai_agent"
|
|
5
|
+
}
|
|
6
|
+
export declare enum TrackFeature {
|
|
7
|
+
AI_AGENT_RUN = "ai_agent_run",
|
|
8
|
+
AI_AGENT_GUARDRAIL = "ai_agent_guardrail"
|
|
9
|
+
}
|
|
10
|
+
export interface LlmRunData {
|
|
11
|
+
inference_id: string;
|
|
12
|
+
is_test: boolean;
|
|
13
|
+
product_name: string;
|
|
14
|
+
deployment_name: string;
|
|
15
|
+
model_name: string;
|
|
16
|
+
feature: string;
|
|
17
|
+
api_version: string;
|
|
18
|
+
num_prompt_tokens: number;
|
|
19
|
+
num_completion_tokens: number;
|
|
20
|
+
duration_in_milliseconds: number;
|
|
21
|
+
temperature: number;
|
|
22
|
+
error: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface TrackLlmRunsData {
|
|
25
|
+
llm_runs: LlmRunData[];
|
|
26
|
+
}
|
|
27
|
+
export type HubtypeMessage = HubtypeAssistantMessage | HubtypeUserMessage;
|
|
28
|
+
export interface HubtypeToolCall {
|
|
29
|
+
id: string;
|
|
30
|
+
type: 'function';
|
|
31
|
+
function: {
|
|
32
|
+
name: string;
|
|
33
|
+
arguments: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface HubtypeUserMessageV2 {
|
|
37
|
+
role: 'user';
|
|
38
|
+
content: string | null;
|
|
39
|
+
}
|
|
40
|
+
export interface HubtypeAssistantMessageV2 {
|
|
41
|
+
role: 'assistant';
|
|
42
|
+
content: string | null;
|
|
43
|
+
tool_calls?: HubtypeToolCall[] | null;
|
|
44
|
+
}
|
|
45
|
+
export interface HubtypeToolMessageV2 {
|
|
46
|
+
role: 'tool';
|
|
47
|
+
content: string | null;
|
|
48
|
+
tool_call_id: string;
|
|
49
|
+
}
|
|
50
|
+
export interface HubtypeSystemMessageV2 {
|
|
51
|
+
role: 'system';
|
|
52
|
+
content: string | null;
|
|
53
|
+
}
|
|
54
|
+
export type HubtypeMessageV2 = HubtypeUserMessageV2 | HubtypeAssistantMessageV2 | HubtypeToolMessageV2 | HubtypeSystemMessageV2;
|
|
55
|
+
export interface MessageHistoryResponseV2 {
|
|
56
|
+
messages: HubtypeMessageV2[];
|
|
57
|
+
conversation_id: string | null;
|
|
58
|
+
truncated: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface GetMessagesV2Result {
|
|
61
|
+
messages: AgenticInputMessage[];
|
|
62
|
+
conversationId: string | null;
|
|
63
|
+
truncated: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface MessageHistoryV2Params {
|
|
66
|
+
last_message_id: string;
|
|
67
|
+
max_messages?: number;
|
|
68
|
+
include_tool_calls?: boolean;
|
|
69
|
+
max_full_tool_results?: number;
|
|
70
|
+
debug_mode?: boolean;
|
|
71
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var TrackProductName;
|
|
2
|
+
(function (TrackProductName) {
|
|
3
|
+
TrackProductName["AI_AGENT"] = "ai_agent";
|
|
4
|
+
})(TrackProductName || (TrackProductName = {}));
|
|
5
|
+
export var TrackFeature;
|
|
6
|
+
(function (TrackFeature) {
|
|
7
|
+
TrackFeature["AI_AGENT_RUN"] = "ai_agent_run";
|
|
8
|
+
TrackFeature["AI_AGENT_GUARDRAIL"] = "ai_agent_guardrail";
|
|
9
|
+
})(TrackFeature || (TrackFeature = {}));
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/services/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;AACvB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,yDAAyC,CAAA;AAC3C,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BotExecutorMessage, OutputAiAgentMessageType } from '@botonic/shared';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
export type { BotExecutorMessage };
|
|
4
|
+
export declare const BotExecutorSchema: z.ZodObject<{
|
|
5
|
+
type: z.ZodEnum<{
|
|
6
|
+
botExecutor: OutputAiAgentMessageType.BotExecutor;
|
|
7
|
+
}>;
|
|
8
|
+
content: z.ZodObject<{
|
|
9
|
+
text: z.ZodString;
|
|
10
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
11
|
+
text: z.ZodString;
|
|
12
|
+
payload: z.ZodString;
|
|
13
|
+
}, z.core.$strip>>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OutputAiAgentMessageType } from '@botonic/shared';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
export const BotExecutorSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
type: z.enum([OutputAiAgentMessageType.BotExecutor]),
|
|
6
|
+
content: z.object({
|
|
7
|
+
text: z.string(),
|
|
8
|
+
buttons: z.array(z.object({
|
|
9
|
+
text: z.string(),
|
|
10
|
+
payload: z.string(),
|
|
11
|
+
})),
|
|
12
|
+
}),
|
|
13
|
+
})
|
|
14
|
+
.describe('A text message with buttons to allow the bot to execute a specific action. Use it only when asked explicitly in the prompt');
|
|
15
|
+
//# sourceMappingURL=bot-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-executor.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/structured-output/bot-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,CAAC,MAAM,KAAK,CAAA;AAInB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC,CACH;KACF,CAAC;CACH,CAAC;KACD,QAAQ,CACP,4HAA4H,CAC7H,CAAA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { CarouselMessage } from '@botonic/shared';
|
|
1
|
+
import { CarouselMessage, OutputAiAgentMessageType } from '@botonic/shared';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
export type { CarouselMessage };
|
|
4
4
|
export declare const CarouselSchema: z.ZodObject<{
|
|
5
|
-
type: z.ZodEnum<
|
|
5
|
+
type: z.ZodEnum<{
|
|
6
|
+
carousel: OutputAiAgentMessageType.Carousel;
|
|
7
|
+
}>;
|
|
6
8
|
content: z.ZodObject<{
|
|
7
9
|
text: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
8
10
|
elements: z.ZodArray<z.ZodObject<{
|
|
@@ -12,79 +14,7 @@ export declare const CarouselSchema: z.ZodObject<{
|
|
|
12
14
|
button: z.ZodObject<{
|
|
13
15
|
text: z.ZodString;
|
|
14
16
|
url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
text: string;
|
|
20
|
-
url?: string | null | undefined;
|
|
21
|
-
}>;
|
|
22
|
-
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
title: string;
|
|
24
|
-
subtitle: string;
|
|
25
|
-
image: string;
|
|
26
|
-
button: {
|
|
27
|
-
text: string;
|
|
28
|
-
url?: string | null | undefined;
|
|
29
|
-
};
|
|
30
|
-
}, {
|
|
31
|
-
title: string;
|
|
32
|
-
subtitle: string;
|
|
33
|
-
image: string;
|
|
34
|
-
button: {
|
|
35
|
-
text: string;
|
|
36
|
-
url?: string | null | undefined;
|
|
37
|
-
};
|
|
38
|
-
}>, "many">;
|
|
39
|
-
}, "strip", z.ZodTypeAny, {
|
|
40
|
-
elements: {
|
|
41
|
-
title: string;
|
|
42
|
-
subtitle: string;
|
|
43
|
-
image: string;
|
|
44
|
-
button: {
|
|
45
|
-
text: string;
|
|
46
|
-
url?: string | null | undefined;
|
|
47
|
-
};
|
|
48
|
-
}[];
|
|
49
|
-
text?: string | null | undefined;
|
|
50
|
-
}, {
|
|
51
|
-
elements: {
|
|
52
|
-
title: string;
|
|
53
|
-
subtitle: string;
|
|
54
|
-
image: string;
|
|
55
|
-
button: {
|
|
56
|
-
text: string;
|
|
57
|
-
url?: string | null | undefined;
|
|
58
|
-
};
|
|
59
|
-
}[];
|
|
60
|
-
text?: string | null | undefined;
|
|
61
|
-
}>;
|
|
62
|
-
}, "strip", z.ZodTypeAny, {
|
|
63
|
-
type: "carousel";
|
|
64
|
-
content: {
|
|
65
|
-
elements: {
|
|
66
|
-
title: string;
|
|
67
|
-
subtitle: string;
|
|
68
|
-
image: string;
|
|
69
|
-
button: {
|
|
70
|
-
text: string;
|
|
71
|
-
url?: string | null | undefined;
|
|
72
|
-
};
|
|
73
|
-
}[];
|
|
74
|
-
text?: string | null | undefined;
|
|
75
|
-
};
|
|
76
|
-
}, {
|
|
77
|
-
type: "carousel";
|
|
78
|
-
content: {
|
|
79
|
-
elements: {
|
|
80
|
-
title: string;
|
|
81
|
-
subtitle: string;
|
|
82
|
-
image: string;
|
|
83
|
-
button: {
|
|
84
|
-
text: string;
|
|
85
|
-
url?: string | null | undefined;
|
|
86
|
-
};
|
|
87
|
-
}[];
|
|
88
|
-
text?: string | null | undefined;
|
|
89
|
-
};
|
|
90
|
-
}>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
}, z.core.$strip>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { OutputAiAgentMessageType } from '@botonic/shared';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
export const CarouselSchema = z
|
|
3
4
|
.object({
|
|
4
|
-
type: z.enum([
|
|
5
|
+
type: z.enum([OutputAiAgentMessageType.Carousel]),
|
|
5
6
|
content: z.object({
|
|
6
7
|
text: z.string().nullable().optional(),
|
|
7
8
|
elements: z.array(z.object({
|