@botonic/plugin-ai-agents 2.28.0 → 2.30.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 (95) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/package.json +7 -5
  3. package/src/index.d.ts +2 -1
  4. package/src/index.js +2 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/agents/base-agent.d.ts +25 -0
  7. package/src/lib/agents/base-agent.js +39 -0
  8. package/src/lib/agents/base-agent.js.map +1 -0
  9. package/src/lib/agents/index.d.ts +2 -0
  10. package/src/lib/agents/index.js +3 -0
  11. package/src/lib/agents/index.js.map +1 -0
  12. package/src/lib/agents/router-agent.d.ts +23 -0
  13. package/src/lib/agents/router-agent.js +32 -0
  14. package/src/lib/agents/router-agent.js.map +1 -0
  15. package/src/lib/agents/specialist-agent.d.ts +33 -0
  16. package/src/lib/agents/specialist-agent.js +103 -0
  17. package/src/lib/agents/specialist-agent.js.map +1 -0
  18. package/src/lib/bot-config-tools.d.ts +7 -0
  19. package/src/lib/bot-config-tools.js +11 -0
  20. package/src/lib/bot-config-tools.js.map +1 -0
  21. package/src/lib/constants.d.ts +16 -6
  22. package/src/lib/constants.js +16 -8
  23. package/src/lib/constants.js.map +1 -1
  24. package/src/lib/debug-logger.d.ts +4 -2
  25. package/src/lib/debug-logger.js +20 -22
  26. package/src/lib/debug-logger.js.map +1 -1
  27. package/src/lib/guardrails/input.d.ts +9 -3
  28. package/src/lib/guardrails/input.js +100 -24
  29. package/src/lib/guardrails/input.js.map +1 -1
  30. package/src/lib/index.d.ts +9 -3
  31. package/src/lib/index.js +128 -36
  32. package/src/lib/index.js.map +1 -1
  33. package/src/lib/llm-config.d.ts +31 -0
  34. package/src/lib/llm-config.js +111 -0
  35. package/src/lib/llm-config.js.map +1 -0
  36. package/src/lib/runners/base-runner.d.ts +32 -0
  37. package/src/lib/runners/base-runner.js +182 -0
  38. package/src/lib/runners/base-runner.js.map +1 -0
  39. package/src/lib/runners/index.d.ts +2 -0
  40. package/src/lib/runners/index.js +3 -0
  41. package/src/lib/runners/index.js.map +1 -0
  42. package/src/lib/runners/router-runner.d.ts +8 -0
  43. package/src/lib/runners/router-runner.js +40 -0
  44. package/src/lib/runners/router-runner.js.map +1 -0
  45. package/src/lib/runners/specialist-runner.d.ts +4 -0
  46. package/src/lib/runners/specialist-runner.js +4 -0
  47. package/src/lib/runners/specialist-runner.js.map +1 -0
  48. package/src/lib/services/hubtype-api-client.d.ts +13 -0
  49. package/src/lib/{hubtype-api-client.js → services/hubtype-api-client.js} +32 -51
  50. package/src/lib/services/hubtype-api-client.js.map +1 -0
  51. package/src/lib/services/types.d.ts +71 -0
  52. package/src/lib/services/types.js +10 -0
  53. package/src/lib/services/types.js.map +1 -0
  54. package/src/lib/structured-output/bot-executor.d.ts +15 -0
  55. package/src/lib/structured-output/bot-executor.js +15 -0
  56. package/src/lib/structured-output/bot-executor.js.map +1 -0
  57. package/src/lib/structured-output/carousel.d.ts +8 -78
  58. package/src/lib/structured-output/carousel.js +2 -1
  59. package/src/lib/structured-output/carousel.js.map +1 -1
  60. package/src/lib/structured-output/exit.d.ts +5 -7
  61. package/src/lib/structured-output/exit.js +2 -1
  62. package/src/lib/structured-output/exit.js.map +1 -1
  63. package/src/lib/structured-output/flow-builder-content.d.ts +9 -0
  64. package/src/lib/structured-output/flow-builder-content.js +9 -0
  65. package/src/lib/structured-output/flow-builder-content.js.map +1 -0
  66. package/src/lib/structured-output/index.d.ts +103 -203
  67. package/src/lib/structured-output/index.js +30 -3
  68. package/src/lib/structured-output/index.js.map +1 -1
  69. package/src/lib/structured-output/text-with-buttons.d.ts +11 -41
  70. package/src/lib/structured-output/text-with-buttons.js +8 -1
  71. package/src/lib/structured-output/text-with-buttons.js.map +1 -1
  72. package/src/lib/structured-output/text.d.ts +6 -18
  73. package/src/lib/structured-output/text.js +2 -1
  74. package/src/lib/structured-output/text.js.map +1 -1
  75. package/src/lib/test-llm-config.d.ts +10 -0
  76. package/src/lib/test-llm-config.js +18 -0
  77. package/src/lib/test-llm-config.js.map +1 -0
  78. package/src/lib/tools/index.d.ts +1 -1
  79. package/src/lib/tools/index.js +1 -1
  80. package/src/lib/tools/index.js.map +1 -1
  81. package/src/lib/tools/retrieve-knowledge.d.ts +3 -6
  82. package/src/lib/tools/retrieve-knowledge.js +4 -4
  83. package/src/lib/tools/retrieve-knowledge.js.map +1 -1
  84. package/src/lib/types.d.ts +15 -9
  85. package/src/lib/agent-builder.d.ts +0 -30
  86. package/src/lib/agent-builder.js +0 -111
  87. package/src/lib/agent-builder.js.map +0 -1
  88. package/src/lib/hubtype-api-client.d.ts +0 -22
  89. package/src/lib/hubtype-api-client.js.map +0 -1
  90. package/src/lib/openai.d.ts +0 -1
  91. package/src/lib/openai.js +0 -21
  92. package/src/lib/openai.js.map +0 -1
  93. package/src/lib/runner.d.ts +0 -13
  94. package/src/lib/runner.js +0 -96
  95. package/src/lib/runner.js.map +0 -1
@@ -1,29 +1,105 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Agent, run } from '@openai/agents';
2
+ import { Agent, Runner, } from '@openai/agents';
3
3
  import { z } from 'zod';
4
- export function createInputGuardrail(rules) {
5
- const outputType = z.object(Object.fromEntries(rules.map(rule => [rule.name, z.boolean().describe(rule.description)])));
6
- const agent = new Agent({
7
- name: 'InputGuardrail',
8
- instructions: 'Check if the user triggers some of the following guardrails.',
9
- outputType,
4
+ import { isProd, LLM_PROVIDERS } from '../constants';
5
+ import { HubtypeApiClient } from '../services/hubtype-api-client';
6
+ import { TrackFeature, TrackProductName } from '../services/types';
7
+ export function createInputGuardrails(rules, llmConfig, trackingContext) {
8
+ return __awaiter(this, void 0, void 0, function* () {
9
+ if (rules.length === 0) {
10
+ return [];
11
+ }
12
+ return [yield buildInputGuardrail(rules, llmConfig, trackingContext)];
13
+ });
14
+ }
15
+ function buildInputGuardrail(rules, llmConfig, trackingContext) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const outputType = z.object(Object.fromEntries(rules.map(rule => [rule.name, z.boolean().describe(rule.description)])));
18
+ const modelSettings = createInputGuardrailModelSettings(llmConfig);
19
+ const agent = new Agent({
20
+ name: 'InputGuardrail',
21
+ model: llmConfig.modelName,
22
+ modelSettings,
23
+ instructions: 'Check if the user triggers some of the following guardrails.',
24
+ outputType,
25
+ });
26
+ return {
27
+ name: 'InputGuardrail',
28
+ execute: (_a) => __awaiter(this, [_a], void 0, function* ({ input, context }) {
29
+ const aiAgentContext = context.context;
30
+ const lastMessage = input[input.length - 1];
31
+ const modelProvider = llmConfig.modelProvider;
32
+ const runner = new Runner({
33
+ modelProvider,
34
+ tracingDisabled: true,
35
+ });
36
+ const startTime = Date.now();
37
+ const result = yield runner.run(agent, [lastMessage], { context });
38
+ const endTime = Date.now();
39
+ const botonicContext = aiAgentContext.botonicContext;
40
+ yield sendGuardrailLlmRunTracking(result, trackingContext, llmConfig, startTime, endTime, botonicContext);
41
+ const finalOutput = result.finalOutput;
42
+ if (finalOutput === undefined) {
43
+ throw new Error('Guardrail agent failed to produce output');
44
+ }
45
+ const triggered = Object.values(finalOutput).some(value => value === true);
46
+ const triggeredGuardrails = Object.keys(finalOutput).filter(key => finalOutput[key] === true);
47
+ return {
48
+ outputInfo: triggeredGuardrails,
49
+ tripwireTriggered: triggered,
50
+ };
51
+ }),
52
+ };
53
+ });
54
+ }
55
+ function createInputGuardrailModelSettings(llmConfig) {
56
+ const modelSettings = Object.assign(Object.assign({}, llmConfig.modelSettings), { toolChoice: undefined });
57
+ if (llmConfig.modelSettings.reasoning) {
58
+ modelSettings.reasoning = Object.assign({}, llmConfig.modelSettings.reasoning);
59
+ }
60
+ if (llmConfig.modelSettings.text) {
61
+ modelSettings.text = Object.assign({}, llmConfig.modelSettings.text);
62
+ }
63
+ return modelSettings;
64
+ }
65
+ function sendGuardrailLlmRunTracking(result, trackingContext, llmConfig, startTime, endTime, botonicContext) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ var _a, _b, _c;
68
+ if (!isProd) {
69
+ return;
70
+ }
71
+ if (llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {
72
+ return;
73
+ }
74
+ const rawResponses = (_a = result.rawResponses) !== null && _a !== void 0 ? _a : [];
75
+ if (rawResponses.length === 0) {
76
+ return;
77
+ }
78
+ const totalDuration = endTime - startTime;
79
+ const durationPerCall = Math.round(totalDuration / rawResponses.length);
80
+ const temperature = (_b = llmConfig.modelSettings.temperature) !== null && _b !== void 0 ? _b : 0;
81
+ const apiVersion = (_c = llmConfig.getApiVersion()) !== null && _c !== void 0 ? _c : 'NOT_API_VERSION_FOR_LITELLM';
82
+ const llmRuns = rawResponses.map(response => {
83
+ var _a, _b;
84
+ return ({
85
+ inference_id: trackingContext.inferenceId,
86
+ is_test: trackingContext.isTest,
87
+ product_name: TrackProductName.AI_AGENT,
88
+ deployment_name: llmConfig.modelName,
89
+ model_name: (_b = (_a = response.providerData) === null || _a === void 0 ? void 0 : _a['model']) !== null && _b !== void 0 ? _b : llmConfig.modelName,
90
+ feature: TrackFeature.AI_AGENT_GUARDRAIL,
91
+ api_version: apiVersion,
92
+ num_prompt_tokens: response.usage.inputTokens,
93
+ num_completion_tokens: response.usage.outputTokens,
94
+ duration_in_milliseconds: durationPerCall,
95
+ temperature,
96
+ error: null,
97
+ });
98
+ });
99
+ const client = new HubtypeApiClient(botonicContext);
100
+ yield client.trackLlmRuns(trackingContext.botId, {
101
+ llm_runs: llmRuns,
102
+ });
10
103
  });
11
- return {
12
- name: 'InputGuardrail',
13
- execute: (_a) => __awaiter(this, [_a], void 0, function* ({ input, context }) {
14
- const lastMessage = input[input.length - 1];
15
- const result = yield run(agent, [lastMessage], { context });
16
- const finalOutput = result.finalOutput;
17
- if (finalOutput === undefined) {
18
- throw new Error('Guardrail agent failed to produce output');
19
- }
20
- const triggered = Object.values(finalOutput).some(value => value === true);
21
- const triggeredGuardrails = Object.keys(finalOutput).filter(key => finalOutput[key] === true);
22
- return {
23
- outputInfo: triggeredGuardrails,
24
- tripwireTriggered: triggered,
25
- };
26
- }),
27
- };
28
104
  }
29
105
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/guardrails/input.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAkB,GAAG,EAAmB,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CACzB,MAAM,CAAC,WAAW,CAChB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACvE,CACF,CAAA;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,gBAAgB;QACtB,YAAY,EACV,8DAA8D;QAChE,UAAU;KACX,CAAC,CAAA;IAEF,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,KAA2B,EAAE,0CAAtB,EAAE,KAAK,EAAE,OAAO,EAAE;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAA;YAC9D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAsC,CAAA;YACjE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC7D,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;YAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CACzD,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CACjC,CAAA;YACD,OAAO;gBACL,UAAU,EAAE,mBAAmB;gBAC/B,iBAAiB,EAAE,SAAS;aAC7B,CAAA;QACH,CAAC,CAAA;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-ai-agents/src/lib/guardrails/input.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
1
  import type { BotonicContext, Plugin, ResolvedPlugins } from '@botonic/core';
2
- import type { AiAgentArgs, UserExtraData } from '@botonic/shared';
2
+ import { type AiAgentArgs, type UserExtraData } from '@botonic/shared';
3
3
  import type { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
4
4
  export declare class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> implements Plugin {
5
- private readonly messageHistoryApiVersion;
6
5
  private readonly memory;
7
6
  private readonly logger;
7
+ private readonly timeout;
8
+ private readonly maxRetries;
9
+ private readonly provider;
8
10
  toolDefinitions: CustomTool<TPlugins, TExtraData>[];
9
11
  constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>);
12
+ private getMemoryOptions;
10
13
  pre(): void;
11
- getInference(botonicContext: BotonicContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
14
+ getInference(botonicContext: BotonicContext<ResolvedPlugins, UserExtraData>, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
15
+ private buildLLMConfig;
16
+ private executeSpecialistAIAgent;
17
+ private executeRouterAIAgent;
12
18
  private getMessages;
13
19
  private buildTools;
14
20
  }
package/src/lib/index.js CHANGED
@@ -1,41 +1,63 @@
1
1
  import { __awaiter } from "tslib";
2
- import { tool } from '@openai/agents';
3
- import { AIAgentBuilder } from './agent-builder';
4
- import { MAX_MEMORY_LENGTH } from './constants';
2
+ import { AiAgentType, } from '@botonic/shared';
3
+ import { handoff, setTracingDisabled, tool } from '@openai/agents';
4
+ import { v7 as uuidv7 } from 'uuid';
5
+ import { RouterAgent, SpecialistAgent } from './agents';
6
+ import { DEFAULT_MAX_RETRIES, DEFAULT_TIMEOUT_16_SECONDS, MAX_MEMORY_LENGTH, } from './constants';
5
7
  import { createDebugLogger } from './debug-logger';
6
- import { HubtypeApiClient } from './hubtype-api-client';
7
- import { setUpOpenAI } from './openai';
8
- import { AIAgentRunner } from './runner';
8
+ import { LLMConfig } from './llm-config';
9
+ import { RouterRunner, SpecialistRunner } from './runners';
10
+ import { HubtypeApiClient } from './services/hubtype-api-client';
9
11
  export class BotonicPluginAiAgents {
10
12
  constructor(options) {
11
- var _a, _b, _c, _d, _e;
13
+ var _a, _b, _c, _d, _e, _f;
12
14
  this.toolDefinitions = [];
13
- setUpOpenAI(options === null || options === void 0 ? void 0 : options.maxRetries, options === null || options === void 0 ? void 0 : options.timeout);
14
- if ((options === null || options === void 0 ? void 0 : options.messageHistoryApiVersion) === 'v1' && (options === null || options === void 0 ? void 0 : options.memory)) {
15
- throw new Error('Cannot use memory when messageHistoryApiVersion is "v1". ' +
16
- 'Either set messageHistoryApiVersion to "v2" or remove memory.');
17
- }
18
15
  this.toolDefinitions = (options === null || options === void 0 ? void 0 : options.customTools) || [];
19
- this.messageHistoryApiVersion = (_a = options === null || options === void 0 ? void 0 : options.messageHistoryApiVersion) !== null && _a !== void 0 ? _a : 'v2';
20
- this.memory = (_b = options === null || options === void 0 ? void 0 : options.memory) !== null && _b !== void 0 ? _b : {};
21
- this.logger = createDebugLogger((_c = options === null || options === void 0 ? void 0 : options.enableDebug) !== null && _c !== void 0 ? _c : false);
16
+ this.memory = this.getMemoryOptions(options === null || options === void 0 ? void 0 : options.memory);
17
+ this.timeout = (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : DEFAULT_TIMEOUT_16_SECONDS;
18
+ this.maxRetries = (_b = options === null || options === void 0 ? void 0 : options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_MAX_RETRIES;
19
+ this.provider = (_c = options === null || options === void 0 ? void 0 : options.provider) !== null && _c !== void 0 ? _c : 'azure';
20
+ this.logger = createDebugLogger((_d = options === null || options === void 0 ? void 0 : options.enableDebug) !== null && _d !== void 0 ? _d : false);
21
+ setTracingDisabled(true);
22
22
  this.logger.logInitialConfig({
23
- messageHistoryApiVersion: this.messageHistoryApiVersion,
24
- maxRetries: (_d = options === null || options === void 0 ? void 0 : options.maxRetries) !== null && _d !== void 0 ? _d : 2,
25
- timeout: (_e = options === null || options === void 0 ? void 0 : options.timeout) !== null && _e !== void 0 ? _e : 16000,
23
+ messageHistoryApiVersion: 'v2',
24
+ maxRetries: (_e = options === null || options === void 0 ? void 0 : options.maxRetries) !== null && _e !== void 0 ? _e : DEFAULT_MAX_RETRIES,
25
+ timeout: (_f = options === null || options === void 0 ? void 0 : options.timeout) !== null && _f !== void 0 ? _f : DEFAULT_TIMEOUT_16_SECONDS,
26
26
  customToolNames: this.toolDefinitions.map(t => t.name),
27
27
  memory: this.memory,
28
28
  });
29
29
  }
30
+ getMemoryOptions(memory) {
31
+ var _a, _b, _c, _d;
32
+ return {
33
+ maxMessages: (_a = memory === null || memory === void 0 ? void 0 : memory.maxMessages) !== null && _a !== void 0 ? _a : MAX_MEMORY_LENGTH,
34
+ includeToolCalls: (_b = memory === null || memory === void 0 ? void 0 : memory.includeToolCalls) !== null && _b !== void 0 ? _b : true,
35
+ maxFullToolResults: (_c = memory === null || memory === void 0 ? void 0 : memory.maxFullToolResults) !== null && _c !== void 0 ? _c : 1,
36
+ debugMode: (_d = memory === null || memory === void 0 ? void 0 : memory.debugMode) !== null && _d !== void 0 ? _d : false,
37
+ };
38
+ }
30
39
  pre() {
31
40
  return;
32
41
  }
33
42
  getInference(botonicContext, aiAgentArgs) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ if (aiAgentArgs.type === AiAgentType.Router) {
45
+ return this.executeRouterAIAgent(botonicContext, aiAgentArgs);
46
+ }
47
+ return this.executeSpecialistAIAgent(botonicContext, aiAgentArgs);
48
+ });
49
+ }
50
+ buildLLMConfig(botonicContext, modelName, verbosity) {
51
+ return new LLMConfig(this.maxRetries, this.timeout, modelName, verbosity, this.provider, botonicContext);
52
+ }
53
+ executeSpecialistAIAgent(botonicContext, aiAgentArgs) {
34
54
  return __awaiter(this, void 0, void 0, function* () {
35
55
  var _a, _b;
36
56
  try {
37
- const tools = this.buildTools(((_a = aiAgentArgs.activeTools) === null || _a === void 0 ? void 0 : _a.map(tool => tool.name)) || []);
38
- const agent = new AIAgentBuilder({
57
+ const inferenceId = uuidv7();
58
+ const llmConfig = this.buildLLMConfig(botonicContext, aiAgentArgs.model, aiAgentArgs.verbosity);
59
+ const tools = this.buildTools(((_a = aiAgentArgs.activeTools) === null || _a === void 0 ? void 0 : _a.map(t => t.name)) || []);
60
+ const specialist = yield SpecialistAgent.create({
39
61
  name: aiAgentArgs.name,
40
62
  instructions: aiAgentArgs.instructions,
41
63
  tools,
@@ -44,8 +66,15 @@ export class BotonicPluginAiAgents {
44
66
  inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
45
67
  sourceIds: aiAgentArgs.sourceIds || [],
46
68
  logger: this.logger,
47
- }).build();
48
- const messages = yield this.getMessages(botonicContext, MAX_MEMORY_LENGTH);
69
+ llmConfig,
70
+ guardrailTrackingContext: {
71
+ botId: botonicContext.session.bot.id,
72
+ isTest: botonicContext.session.isTestIntegration,
73
+ inferenceId,
74
+ },
75
+ });
76
+ const agent = specialist.getAgent();
77
+ const messages = yield this.getMessages(botonicContext, aiAgentArgs.previousHubtypeMessages || []);
49
78
  const aiAgentContext = {
50
79
  botonicContext: botonicContext,
51
80
  sourceIds: aiAgentArgs.sourceIds || [],
@@ -57,7 +86,7 @@ export class BotonicPluginAiAgents {
57
86
  },
58
87
  };
59
88
  this.logger.logAgentDebugInfo(aiAgentArgs, tools.map(t => t.name), messages);
60
- const runner = new AIAgentRunner(agent, this.logger);
89
+ const runner = new SpecialistRunner(agent, llmConfig, inferenceId, this.logger);
61
90
  return yield runner.run(messages, aiAgentContext);
62
91
  }
63
92
  catch (error) {
@@ -74,25 +103,88 @@ export class BotonicPluginAiAgents {
74
103
  }
75
104
  });
76
105
  }
77
- getMessages(botonicContext, memoryLength) {
106
+ executeRouterAIAgent(botonicContext, aiAgentArgs) {
78
107
  return __awaiter(this, void 0, void 0, function* () {
79
- var _a, _b, _c, _d;
80
- const hubtypeClient = new HubtypeApiClient(botonicContext);
81
- if (this.messageHistoryApiVersion === 'v1') {
82
- return yield hubtypeClient.getMessages(botonicContext, memoryLength);
108
+ try {
109
+ const inferenceId = uuidv7();
110
+ const llmConfig = this.buildLLMConfig(botonicContext, aiAgentArgs.model, aiAgentArgs.verbosity);
111
+ const specialistHandoffs = yield Promise.all(aiAgentArgs.specialists.map((specialistArgs) => __awaiter(this, void 0, void 0, function* () {
112
+ var _a, _b;
113
+ const specialistTools = this.buildTools(((_a = specialistArgs.activeTools) === null || _a === void 0 ? void 0 : _a.map(t => t.name)) || []);
114
+ const specialist = yield SpecialistAgent.create({
115
+ name: specialistArgs.name,
116
+ instructions: specialistArgs.instructions,
117
+ tools: specialistTools,
118
+ campaignsContext: (_b = botonicContext.input.context) === null || _b === void 0 ? void 0 : _b.campaigns_v2,
119
+ contactInfo: botonicContext.session.user.contactInfo || [],
120
+ inputGuardrailRules: specialistArgs.inputGuardrailRules || [],
121
+ sourceIds: specialistArgs.sourceIds || [],
122
+ logger: this.logger,
123
+ llmConfig,
124
+ guardrailTrackingContext: {
125
+ botId: botonicContext.session.bot.id,
126
+ isTest: botonicContext.session.isTestIntegration,
127
+ inferenceId,
128
+ },
129
+ });
130
+ return handoff(specialist.getAgent(), {
131
+ toolNameOverride: specialistArgs.name,
132
+ toolDescriptionOverride: specialistArgs.description,
133
+ });
134
+ })));
135
+ const router = yield RouterAgent.create({
136
+ name: aiAgentArgs.name,
137
+ instructions: aiAgentArgs.instructions,
138
+ llmConfig,
139
+ handoffs: specialistHandoffs,
140
+ inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
141
+ guardrailTrackingContext: {
142
+ botId: botonicContext.session.bot.id,
143
+ isTest: botonicContext.session.isTestIntegration,
144
+ inferenceId,
145
+ },
146
+ });
147
+ const messages = yield this.getMessages(botonicContext, aiAgentArgs.previousHubtypeMessages || []);
148
+ const aiAgentContext = {
149
+ botonicContext: botonicContext,
150
+ sourceIds: [],
151
+ knowledgeUsed: {
152
+ query: '',
153
+ sourceIds: [],
154
+ chunksIds: [],
155
+ chunkTexts: [],
156
+ },
157
+ };
158
+ const runner = new RouterRunner(router.getAgent(), llmConfig, inferenceId, this.logger);
159
+ return yield runner.run(messages, aiAgentContext);
83
160
  }
84
- // Default to V2
85
- const result = yield hubtypeClient.getMessagesV2(botonicContext, {
86
- maxMessages: (_a = this.memory.maxMessages) !== null && _a !== void 0 ? _a : memoryLength,
87
- includeToolCalls: (_b = this.memory.includeToolCalls) !== null && _b !== void 0 ? _b : true,
88
- maxFullToolResults: (_c = this.memory.maxFullToolResults) !== null && _c !== void 0 ? _c : 1,
89
- debugMode: (_d = this.memory.debugMode) !== null && _d !== void 0 ? _d : false,
90
- });
161
+ catch (error) {
162
+ console.error('error plugin returns undefined', error);
163
+ return {
164
+ messages: [],
165
+ toolsExecuted: [],
166
+ memoryLength: 0,
167
+ exit: true,
168
+ error: true,
169
+ inputGuardrailsTriggered: [],
170
+ outputGuardrailsTriggered: [],
171
+ startingAgentName: '',
172
+ lastAgentName: '',
173
+ availableSpecialists: [],
174
+ isTransferredToSpecialist: false,
175
+ };
176
+ }
177
+ });
178
+ }
179
+ getMessages(botonicContext, previousHubtypeMessages) {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ const hubtypeClient = new HubtypeApiClient(botonicContext);
182
+ const result = yield hubtypeClient.getMessagesV2(botonicContext, this.memory, previousHubtypeMessages);
91
183
  return result.messages;
92
184
  });
93
185
  }
94
186
  buildTools(activeToolNames) {
95
- const availableTools = this.toolDefinitions.filter(tool => activeToolNames.includes(tool.name));
187
+ const availableTools = this.toolDefinitions.filter(t => activeToolNames.includes(t.name));
96
188
  return availableTools.map(toolDefinition => {
97
189
  return tool({
98
190
  name: toolDefinition.name,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/botonic/plugin-ai-agents/src/lib/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/botonic/plugin-ai-agents/src/lib/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { BotonicContext } from '@botonic/core';
2
+ import type { VerbosityLevel } from '@botonic/shared';
3
+ import { Model, type ModelProvider, type ModelSettings } from '@openai/agents';
4
+ import { type LLMProviderType } from './constants';
5
+ export interface LLMConfigParams {
6
+ maxRetries: number;
7
+ timeout: number;
8
+ modelName: string;
9
+ verbosity: VerbosityLevel;
10
+ botContext: BotonicContext;
11
+ }
12
+ export declare class LLMConfig {
13
+ private readonly maxRetries;
14
+ private readonly timeout;
15
+ private readonly provider;
16
+ private readonly botonicContext;
17
+ readonly modelName: string;
18
+ readonly modelSettings: ModelSettings;
19
+ readonly modelProvider: ModelProvider;
20
+ constructor(maxRetries: number, timeout: number, modelName: string, verbosity: VerbosityLevel, provider: "openai" | "azure" | undefined, botonicContext: BotonicContext);
21
+ getProviderName(): LLMProviderType;
22
+ getModel(): Promise<Model>;
23
+ private getModelProvider;
24
+ private getClient;
25
+ private buildLiteLLMTags;
26
+ private getOpenAIClient;
27
+ private getLiteLLMClient;
28
+ private getAzureClient;
29
+ private getModelSettings;
30
+ getApiVersion(): string | undefined;
31
+ }
@@ -0,0 +1,111 @@
1
+ import { __awaiter } from "tslib";
2
+ import { OpenAIProvider, } from '@openai/agents';
3
+ import OpenAI, { AzureOpenAI } from 'openai';
4
+ import { LITELLM_TAG_KEYS, LLM_PROVIDERS, OPENAI_API_KEY, OPENAI_MODEL, } from './constants';
5
+ export class LLMConfig {
6
+ constructor(maxRetries, timeout, modelName, verbosity, provider = 'azure', botonicContext) {
7
+ this.maxRetries = maxRetries;
8
+ this.timeout = timeout;
9
+ this.provider = provider;
10
+ this.botonicContext = botonicContext;
11
+ this.modelName = provider === 'openai' ? OPENAI_MODEL : modelName;
12
+ this.modelProvider = this.getModelProvider();
13
+ this.modelSettings = this.getModelSettings(this.modelName, verbosity);
14
+ }
15
+ getProviderName() {
16
+ if (this.botonicContext.settings.litellmApiUrl) {
17
+ return LLM_PROVIDERS.LITELLM;
18
+ }
19
+ return this.provider;
20
+ }
21
+ getModel() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ return yield this.modelProvider.getModel(this.modelName);
24
+ });
25
+ }
26
+ getModelProvider() {
27
+ const client = this.getClient();
28
+ return new OpenAIProvider({
29
+ openAIClient: client,
30
+ useResponses: false,
31
+ });
32
+ }
33
+ getClient() {
34
+ if (this.provider === LLM_PROVIDERS.OPENAI) {
35
+ return this.getOpenAIClient();
36
+ }
37
+ if (this.botonicContext.settings.litellmApiUrl) {
38
+ return this.getLiteLLMClient();
39
+ }
40
+ return this.getAzureClient();
41
+ }
42
+ buildLiteLLMTags() {
43
+ const parts = [];
44
+ if (this.botonicContext.session.bot.id) {
45
+ parts.push(`${LITELLM_TAG_KEYS.BOT_ID}:${this.botonicContext.session.bot.id}`);
46
+ }
47
+ if (this.botonicContext.session.organizationId) {
48
+ parts.push(`${LITELLM_TAG_KEYS.ORG_ID}:${this.botonicContext.session.organizationId}`);
49
+ }
50
+ return parts.length > 0
51
+ ? { 'x-litellm-tags': parts.join(LITELLM_TAG_KEYS.SEPARATOR) }
52
+ : undefined;
53
+ }
54
+ getOpenAIClient() {
55
+ return new OpenAI({
56
+ apiKey: OPENAI_API_KEY,
57
+ timeout: this.timeout,
58
+ maxRetries: this.maxRetries,
59
+ });
60
+ }
61
+ getLiteLLMClient() {
62
+ return new OpenAI({
63
+ apiKey: this.botonicContext.secrets.litellmApiKey,
64
+ baseURL: this.botonicContext.settings.litellmApiUrl,
65
+ timeout: this.timeout,
66
+ maxRetries: this.maxRetries,
67
+ defaultHeaders: this.buildLiteLLMTags(),
68
+ });
69
+ }
70
+ getAzureClient() {
71
+ return new AzureOpenAI({
72
+ apiKey: this.botonicContext.secrets.azureOpenAiApiKey,
73
+ apiVersion: this.botonicContext.settings.azureOpenAiApiVersion,
74
+ deployment: this.modelName,
75
+ baseURL: `${this.botonicContext.settings.azureOpenAiApiBase}openai/`,
76
+ timeout: this.timeout,
77
+ maxRetries: this.maxRetries,
78
+ });
79
+ }
80
+ getModelSettings(model, verbosity) {
81
+ if (model.includes('gpt-5')) {
82
+ return {
83
+ reasoning: { effort: 'none' },
84
+ temperature: 1,
85
+ text: { verbosity },
86
+ };
87
+ }
88
+ if (model.includes('gpt-4')) {
89
+ return {
90
+ temperature: 0,
91
+ text: { verbosity: 'medium' },
92
+ };
93
+ }
94
+ // LiteLLM can proxy any model — fall back to reasoning settings
95
+ return {
96
+ reasoning: { effort: 'none' },
97
+ temperature: 1,
98
+ text: { verbosity },
99
+ };
100
+ }
101
+ getApiVersion() {
102
+ if (this.getProviderName() === LLM_PROVIDERS.LITELLM) {
103
+ return undefined;
104
+ }
105
+ // Return sentinel string for non-azure providers to avoid error in llm_runs tracking endpoint
106
+ return this.provider === LLM_PROVIDERS.AZURE
107
+ ? this.botonicContext.settings.azureOpenAiApiVersion
108
+ : 'NOT_API_VERSION_FOR_OPENAI_PROVIDER';
109
+ }
110
+ }
111
+ //# sourceMappingURL=llm-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-config.js","sourceRoot":"","sources":["../../../../../../libs/botonic/plugin-ai-agents/src/lib/llm-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ResolvedPlugins, UserExtraData } from '@botonic/core';
2
+ import type { OutputMessage, ToolExecution } from '@botonic/shared';
3
+ import type { DebugLogger } from '../debug-logger';
4
+ import type { LLMConfig } from '../llm-config';
5
+ import type { AgenticInputMessage, AIAgent, AiAgentContext, ResultRawResponse, RunResult } from '../types';
6
+ export interface RunnerResult {
7
+ finalOutput?: {
8
+ messages?: OutputMessage[];
9
+ };
10
+ rawResponses?: ResultRawResponse[];
11
+ newItems?: unknown[];
12
+ lastAgent?: {
13
+ name?: string;
14
+ };
15
+ state?: any;
16
+ }
17
+ export declare abstract class BaseRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> {
18
+ protected agent: AIAgent<TPlugins, TExtraData>;
19
+ protected llmConfig: LLMConfig;
20
+ protected inferenceId: string;
21
+ protected logger: DebugLogger;
22
+ constructor(agent: AIAgent<TPlugins, TExtraData>, llmConfig: LLMConfig, inferenceId: string, logger: DebugLogger);
23
+ run(messages: AgenticInputMessage[], context: AiAgentContext<TPlugins, TExtraData>): Promise<RunResult>;
24
+ protected getToolsExecuted(result: RunnerResult, context: AiAgentContext<TPlugins, TExtraData>): ToolExecution[];
25
+ private getToolResultsByCallId;
26
+ private extractToolResult;
27
+ private getToolExecutionInfo;
28
+ private getSafeToolArguments;
29
+ protected buildRunResult(result: RunnerResult, context: AiAgentContext<TPlugins, TExtraData>, memoryLength: number): RunResult;
30
+ private sendLlmRunTracking;
31
+ protected handleInputGuardrailTripwireTriggered(error: unknown, startTime: number): RunResult | undefined;
32
+ }