@botonic/plugin-ai-agents 0.43.0-alpha.0 → 0.43.0-alpha.1

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.
@@ -1,11 +1,11 @@
1
- import { CampaignV2, ResolvedPlugins } from '@botonic/core';
2
- import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types';
1
+ import { CampaignV2, ContactInfo, ResolvedPlugins } from '@botonic/core';
2
+ import { AIAgent, GuardrailRule, Tool } from './types';
3
3
  interface AIAgentBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
4
4
  name: string;
5
5
  instructions: string;
6
6
  tools: Tool<TPlugins, TExtraData>[];
7
7
  campaignContext?: CampaignV2;
8
- contactInfo: ContactInfo;
8
+ contactInfo: ContactInfo[];
9
9
  inputGuardrailRules: GuardrailRule[];
10
10
  sourceIds: string[];
11
11
  }
@@ -57,10 +57,17 @@ class AIAgentBuilder {
57
57
  return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${campaignInstructions}\n\n${outputInstructions}`;
58
58
  }
59
59
  getContactInfoInstructions(contactInfo) {
60
- const structuredContactInfo = Object.entries(contactInfo)
61
- .map(([key, value]) => `${key}: ${value}`)
60
+ const structuredContactInfo = contactInfo
61
+ .map(info => ` <contact_info>
62
+ <name>${info.name}</name>
63
+ <value>${info.value}</value>
64
+ <type>${info.type}</type>
65
+ ${info.description
66
+ ? `<description>${info.description}</description>`
67
+ : ''}
68
+ </contact_info>`)
62
69
  .join('\n');
63
- return `<contact_info>\n${structuredContactInfo}\n</contact_info>`;
70
+ return `<contact_info_fields>\n${structuredContactInfo}</contact_info_fields>`;
64
71
  }
65
72
  getMetadataInstructions() {
66
73
  const metadata = `Current Date: ${new Date().toISOString()}`;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,23 @@
1
1
  import { BotContext } from '@botonic/core';
2
2
  import { AgenticInputMessage, Chunk } from './types';
3
+ export interface GetMessagesV2Options {
4
+ maxMessages?: number;
5
+ includeToolCalls?: boolean;
6
+ maxFullToolResults?: number;
7
+ debugMode?: boolean;
8
+ }
9
+ export interface GetMessagesV2Result {
10
+ messages: AgenticInputMessage[];
11
+ conversationId: string | null;
12
+ truncated: boolean;
13
+ }
3
14
  export declare class HubtypeApiClient {
4
15
  private readonly authToken;
5
16
  constructor(authToken: string);
6
17
  retrieveSimilarChunks(query: string, sourceIds: string[]): Promise<Chunk[]>;
7
18
  getLocalMessages(maxMemoryLength: number): Promise<AgenticInputMessage[]>;
8
19
  getMessages(request: BotContext, maxMemoryLength: number): Promise<AgenticInputMessage[]>;
20
+ getMessagesV2(request: BotContext, options?: GetMessagesV2Options): Promise<GetMessagesV2Result>;
21
+ private formatMessageV2;
9
22
  private formatMessage;
10
23
  }
@@ -70,6 +70,103 @@ class HubtypeApiClient {
70
70
  }
71
71
  });
72
72
  }
73
+ getMessagesV2(request, options = {}) {
74
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
75
+ const url = `${constants_1.HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`;
76
+ const headers = {
77
+ 'Content-Type': 'application/json',
78
+ Authorization: `Bearer ${this.authToken}`,
79
+ };
80
+ const params = Object.assign(Object.assign(Object.assign(Object.assign({ last_message_id: request.input.message_id }, (options.maxMessages !== undefined && {
81
+ max_messages: options.maxMessages,
82
+ })), (options.includeToolCalls !== undefined && {
83
+ include_tool_calls: options.includeToolCalls,
84
+ })), (options.maxFullToolResults !== undefined && {
85
+ max_full_tool_results: options.maxFullToolResults,
86
+ })), (options.debugMode !== undefined && {
87
+ debug_mode: options.debugMode,
88
+ }));
89
+ try {
90
+ const response = yield axios_1.default.get(url, {
91
+ headers,
92
+ params,
93
+ });
94
+ const { messages, conversation_id, truncated } = response.data;
95
+ const formattedMessages = messages
96
+ .map(message => this.formatMessageV2(message))
97
+ .filter((message) => message !== null);
98
+ return {
99
+ messages: formattedMessages,
100
+ conversationId: conversation_id,
101
+ truncated,
102
+ };
103
+ }
104
+ catch (error) {
105
+ console.error(error);
106
+ throw new Error('Failed to get messages from Hubtype V2 API');
107
+ }
108
+ });
109
+ }
110
+ formatMessageV2(message) {
111
+ var _a, _b, _c, _d, _e;
112
+ switch (message.role) {
113
+ case 'user':
114
+ return {
115
+ role: 'user',
116
+ content: (_a = message.content) !== null && _a !== void 0 ? _a : '',
117
+ };
118
+ case 'assistant': {
119
+ const assistantMessage = message;
120
+ // If assistant message has tool_calls, include them for context
121
+ // Using double assertion as the OpenAI API supports this format,
122
+ // but the agents SDK types are more restrictive
123
+ if (assistantMessage.tool_calls &&
124
+ assistantMessage.tool_calls.length > 0) {
125
+ return {
126
+ role: 'assistant',
127
+ content: (_b = assistantMessage.content) !== null && _b !== void 0 ? _b : '',
128
+ tool_calls: assistantMessage.tool_calls.map(tc => ({
129
+ id: tc.id,
130
+ type: tc.type,
131
+ function: {
132
+ name: tc.function.name,
133
+ arguments: tc.function.arguments,
134
+ },
135
+ })),
136
+ };
137
+ }
138
+ // Regular assistant message without tool_calls
139
+ return {
140
+ role: 'assistant',
141
+ content: [
142
+ {
143
+ type: 'output_text',
144
+ text: (_c = assistantMessage.content) !== null && _c !== void 0 ? _c : '',
145
+ },
146
+ ],
147
+ status: 'completed',
148
+ };
149
+ }
150
+ case 'tool': {
151
+ // Tool messages provide context about previous tool executions
152
+ // Using double assertion as the OpenAI API supports this format,
153
+ // but the agents SDK types are more restrictive
154
+ const toolMessage = message;
155
+ return {
156
+ role: 'tool',
157
+ tool_call_id: toolMessage.tool_call_id,
158
+ content: (_d = toolMessage.content) !== null && _d !== void 0 ? _d : '',
159
+ };
160
+ }
161
+ case 'system':
162
+ return {
163
+ role: 'system',
164
+ content: (_e = message.content) !== null && _e !== void 0 ? _e : '',
165
+ };
166
+ default:
167
+ throw new Error(`Invalid message role: ${message.role}`);
168
+ }
169
+ }
73
170
  formatMessage(message) {
74
171
  if (message.role === 'user') {
75
172
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { AiAgentArgs, BotContext, Plugin, ResolvedPlugins } from '@botonic/core'
2
2
  import { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
3
3
  export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> implements Plugin {
4
4
  private readonly authToken?;
5
+ private readonly messageHistoryApiVersion;
6
+ private readonly memory;
5
7
  toolDefinitions: CustomTool<TPlugins, TExtraData>[];
6
8
  constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>);
7
9
  pre(): void;
package/lib/cjs/index.js CHANGED
@@ -9,10 +9,17 @@ const openai_1 = require("./openai");
9
9
  const runner_1 = require("./runner");
10
10
  class BotonicPluginAiAgents {
11
11
  constructor(options) {
12
+ var _a, _b;
12
13
  this.toolDefinitions = [];
13
14
  (0, openai_1.setUpOpenAI)(options === null || options === void 0 ? void 0 : options.maxRetries, options === null || options === void 0 ? void 0 : options.timeout);
15
+ if ((options === null || options === void 0 ? void 0 : options.messageHistoryApiVersion) === 'v1' && (options === null || options === void 0 ? void 0 : options.memory)) {
16
+ throw new Error('Cannot use memory when messageHistoryApiVersion is "v1". ' +
17
+ 'Either set messageHistoryApiVersion to "v2" or remove memory.');
18
+ }
14
19
  this.authToken = options === null || options === void 0 ? void 0 : options.authToken;
15
20
  this.toolDefinitions = (options === null || options === void 0 ? void 0 : options.customTools) || [];
21
+ this.messageHistoryApiVersion = (_a = options === null || options === void 0 ? void 0 : options.messageHistoryApiVersion) !== null && _a !== void 0 ? _a : 'v2';
22
+ this.memory = (_b = options === null || options === void 0 ? void 0 : options.memory) !== null && _b !== void 0 ? _b : {};
16
23
  }
17
24
  pre() {
18
25
  return;
@@ -30,7 +37,7 @@ class BotonicPluginAiAgents {
30
37
  name: aiAgentArgs.name,
31
38
  instructions: aiAgentArgs.instructions,
32
39
  tools: tools,
33
- contactInfo: request.session.user.contact_info || {},
40
+ contactInfo: request.session.user.contact_info || [],
34
41
  inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
35
42
  sourceIds: aiAgentArgs.sourceIds || [],
36
43
  campaignContext: (_b = request.input.context) === null || _b === void 0 ? void 0 : _b.campaign_v2,
@@ -65,13 +72,23 @@ class BotonicPluginAiAgents {
65
72
  });
66
73
  }
67
74
  getMessages(request, authToken, memoryLength) {
75
+ var _a, _b, _c, _d;
68
76
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
69
- if (constants_1.isProd) {
70
- const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
77
+ const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
78
+ if (!constants_1.isProd) {
79
+ return yield hubtypeClient.getLocalMessages(memoryLength);
80
+ }
81
+ if (this.messageHistoryApiVersion === 'v1') {
71
82
  return yield hubtypeClient.getMessages(request, memoryLength);
72
83
  }
73
- const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
74
- return yield hubtypeClient.getLocalMessages(memoryLength);
84
+ // Default to V2
85
+ const result = yield hubtypeClient.getMessagesV2(request, {
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
+ });
91
+ return result.messages;
75
92
  });
76
93
  }
77
94
  buildTools(activeToolNames) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,2CAAqC;AAErC,mDAAgD;AAChD,2CAAuD;AACvD,6DAAuD;AACvD,qCAAsC;AACtC,qCAAwC;AAYxC,MAAqB,qBAAqB;IAUxC,YAAY,OAAoD;;QAFzD,oBAAe,GAAuC,EAAE,CAAA;QAG7D,IAAA,oBAAW,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAA;QAElD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,MAAK,IAAI,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE;YACjE,MAAM,IAAI,KAAK,CACb,2DAA2D;gBACzD,+DAA+D,CAClE,CAAA;SACF;QAED,IAAI,CAAC,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA;QACnC,IAAI,CAAC,eAAe,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,EAAE,CAAA;QACjD,IAAI,CAAC,wBAAwB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,mCAAI,IAAI,CAAA;QACzE,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,EAAE,CAAA;IACrC,CAAC;IAED,GAAG;QACD,OAAM;IACR,CAAC;IAEK,YAAY,CAChB,OAAyC,EACzC,WAAwB;;;YAExB,IAAI;gBACF,MAAM,SAAS,GAAG,kBAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;gBACzE,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;iBAC1C;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAC3B,CAAA,MAAA,WAAW,CAAC,WAAW,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,EAAE,CACtD,CAAA;gBACD,MAAM,KAAK,GAAG,IAAI,8BAAc,CAAuB;oBACrD,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,YAAY,EAAE,WAAW,CAAC,YAAY;oBACtC,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;oBACpD,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,IAAI,EAAE;oBAC1D,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;oBACtC,eAAe,EAAE,MAAA,OAAO,CAAC,KAAK,CAAC,OAAO,0CAAE,WAAW;iBACpD,CAAC,CAAC,KAAK,EAAE,CAAA;gBAEV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,OAAO,EACP,SAAS,EACT,6BAAiB,CAClB,CAAA;gBACD,MAAM,OAAO,GAAkC;oBAC7C,SAAS;oBACT,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;oBACtC,aAAa,EAAE;wBACb,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,UAAU,EAAE,EAAE;qBACf;oBACD,OAAO;iBACR,CAAA;gBAED,MAAM,MAAM,GAAG,IAAI,sBAAa,CAAuB,KAAK,CAAC,CAAA;gBAC7D,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;aAC3C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;gBACtD,OAAO;oBACL,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,CAAC;oBACf,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;oBACX,wBAAwB,EAAE,EAAE;oBAC5B,yBAAyB,EAAE,EAAE;iBAC9B,CAAA;aACF;;KACF;IAEa,WAAW,CACvB,OAAmB,EACnB,SAAiB,EACjB,YAAoB;;;YAEpB,MAAM,aAAa,GAAG,IAAI,qCAAgB,CAAC,SAAS,CAAC,CAAA;YAErD,IAAI,CAAC,kBAAM,EAAE;gBACX,OAAO,MAAM,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;aAC1D;YAED,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE;gBAC1C,OAAO,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;aAC9D;YAED,gBAAgB;YAChB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE;gBACxD,WAAW,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,WAAW,mCAAI,YAAY;gBACpD,gBAAgB,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,mCAAI,IAAI;gBACtD,kBAAkB,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,mCAAI,CAAC;gBACvD,SAAS,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,SAAS,mCAAI,KAAK;aAC1C,CAAC,CAAA;YACF,OAAO,MAAM,CAAC,QAAQ,CAAA;;KACvB;IAEO,UAAU,CAAC,eAAyB;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACxD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAA;QACD,OAAO,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YACzC,OAAO,IAAA,aAAI,EAA0C;gBACnD,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,UAAU,EAAE,cAAc,CAAC,MAAM;gBACjC,OAAO,EAAE,cAAc,CAAC,IAAI;aAC7B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AA5HD,wCA4HC;AAED,kDAAuB"}
@@ -24,14 +24,24 @@ export interface Chunk {
24
24
  id: string;
25
25
  text: string;
26
26
  }
27
- export type ContactInfo = Record<string, string>;
28
27
  export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
29
28
  export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, AgentOutputType<typeof OutputSchema>>;
29
+ export type MessageHistoryApiVersion = 'v1' | 'v2';
30
+ export interface MemoryOptions {
31
+ maxMessages?: number;
32
+ includeToolCalls?: boolean;
33
+ maxFullToolResults?: number;
34
+ debugMode?: boolean;
35
+ }
30
36
  export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
31
37
  authToken?: string;
32
38
  customTools?: CustomTool<TPlugins, TExtraData>[];
33
39
  maxRetries?: number;
34
40
  timeout?: number;
41
+ /** API version for message history endpoint. Defaults to 'v2'. */
42
+ messageHistoryApiVersion?: MessageHistoryApiVersion;
43
+ /** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
44
+ memory?: MemoryOptions;
35
45
  }
36
46
  export type AgenticInputMessage = AgentInputItem;
37
47
  export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
@@ -1,11 +1,11 @@
1
- import { CampaignV2, ResolvedPlugins } from '@botonic/core';
2
- import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types';
1
+ import { CampaignV2, ContactInfo, ResolvedPlugins } from '@botonic/core';
2
+ import { AIAgent, GuardrailRule, Tool } from './types';
3
3
  interface AIAgentBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
4
4
  name: string;
5
5
  instructions: string;
6
6
  tools: Tool<TPlugins, TExtraData>[];
7
7
  campaignContext?: CampaignV2;
8
- contactInfo: ContactInfo;
8
+ contactInfo: ContactInfo[];
9
9
  inputGuardrailRules: GuardrailRule[];
10
10
  sourceIds: string[];
11
11
  }
@@ -54,10 +54,17 @@ export class AIAgentBuilder {
54
54
  return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${campaignInstructions}\n\n${outputInstructions}`;
55
55
  }
56
56
  getContactInfoInstructions(contactInfo) {
57
- const structuredContactInfo = Object.entries(contactInfo)
58
- .map(([key, value]) => `${key}: ${value}`)
57
+ const structuredContactInfo = contactInfo
58
+ .map(info => ` <contact_info>
59
+ <name>${info.name}</name>
60
+ <value>${info.value}</value>
61
+ <type>${info.type}</type>
62
+ ${info.description
63
+ ? `<description>${info.description}</description>`
64
+ : ''}
65
+ </contact_info>`)
59
66
  .join('\n');
60
- return `<contact_info>\n${structuredContactInfo}\n</contact_info>`;
67
+ return `<contact_info_fields>\n${structuredContactInfo}</contact_info_fields>`;
61
68
  }
62
69
  getMetadataInstructions() {
63
70
  const metadata = `Current Date: ${new Date().toISOString()}`;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,23 @@
1
1
  import { BotContext } from '@botonic/core';
2
2
  import { AgenticInputMessage, Chunk } from './types';
3
+ export interface GetMessagesV2Options {
4
+ maxMessages?: number;
5
+ includeToolCalls?: boolean;
6
+ maxFullToolResults?: number;
7
+ debugMode?: boolean;
8
+ }
9
+ export interface GetMessagesV2Result {
10
+ messages: AgenticInputMessage[];
11
+ conversationId: string | null;
12
+ truncated: boolean;
13
+ }
3
14
  export declare class HubtypeApiClient {
4
15
  private readonly authToken;
5
16
  constructor(authToken: string);
6
17
  retrieveSimilarChunks(query: string, sourceIds: string[]): Promise<Chunk[]>;
7
18
  getLocalMessages(maxMemoryLength: number): Promise<AgenticInputMessage[]>;
8
19
  getMessages(request: BotContext, maxMemoryLength: number): Promise<AgenticInputMessage[]>;
20
+ getMessagesV2(request: BotContext, options?: GetMessagesV2Options): Promise<GetMessagesV2Result>;
21
+ private formatMessageV2;
9
22
  private formatMessage;
10
23
  }
@@ -67,6 +67,103 @@ export class HubtypeApiClient {
67
67
  }
68
68
  });
69
69
  }
70
+ getMessagesV2(request, options = {}) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const url = `${HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`;
73
+ const headers = {
74
+ 'Content-Type': 'application/json',
75
+ Authorization: `Bearer ${this.authToken}`,
76
+ };
77
+ const params = Object.assign(Object.assign(Object.assign(Object.assign({ last_message_id: request.input.message_id }, (options.maxMessages !== undefined && {
78
+ max_messages: options.maxMessages,
79
+ })), (options.includeToolCalls !== undefined && {
80
+ include_tool_calls: options.includeToolCalls,
81
+ })), (options.maxFullToolResults !== undefined && {
82
+ max_full_tool_results: options.maxFullToolResults,
83
+ })), (options.debugMode !== undefined && {
84
+ debug_mode: options.debugMode,
85
+ }));
86
+ try {
87
+ const response = yield axios.get(url, {
88
+ headers,
89
+ params,
90
+ });
91
+ const { messages, conversation_id, truncated } = response.data;
92
+ const formattedMessages = messages
93
+ .map(message => this.formatMessageV2(message))
94
+ .filter((message) => message !== null);
95
+ return {
96
+ messages: formattedMessages,
97
+ conversationId: conversation_id,
98
+ truncated,
99
+ };
100
+ }
101
+ catch (error) {
102
+ console.error(error);
103
+ throw new Error('Failed to get messages from Hubtype V2 API');
104
+ }
105
+ });
106
+ }
107
+ formatMessageV2(message) {
108
+ var _a, _b, _c, _d, _e;
109
+ switch (message.role) {
110
+ case 'user':
111
+ return {
112
+ role: 'user',
113
+ content: (_a = message.content) !== null && _a !== void 0 ? _a : '',
114
+ };
115
+ case 'assistant': {
116
+ const assistantMessage = message;
117
+ // If assistant message has tool_calls, include them for context
118
+ // Using double assertion as the OpenAI API supports this format,
119
+ // but the agents SDK types are more restrictive
120
+ if (assistantMessage.tool_calls &&
121
+ assistantMessage.tool_calls.length > 0) {
122
+ return {
123
+ role: 'assistant',
124
+ content: (_b = assistantMessage.content) !== null && _b !== void 0 ? _b : '',
125
+ tool_calls: assistantMessage.tool_calls.map(tc => ({
126
+ id: tc.id,
127
+ type: tc.type,
128
+ function: {
129
+ name: tc.function.name,
130
+ arguments: tc.function.arguments,
131
+ },
132
+ })),
133
+ };
134
+ }
135
+ // Regular assistant message without tool_calls
136
+ return {
137
+ role: 'assistant',
138
+ content: [
139
+ {
140
+ type: 'output_text',
141
+ text: (_c = assistantMessage.content) !== null && _c !== void 0 ? _c : '',
142
+ },
143
+ ],
144
+ status: 'completed',
145
+ };
146
+ }
147
+ case 'tool': {
148
+ // Tool messages provide context about previous tool executions
149
+ // Using double assertion as the OpenAI API supports this format,
150
+ // but the agents SDK types are more restrictive
151
+ const toolMessage = message;
152
+ return {
153
+ role: 'tool',
154
+ tool_call_id: toolMessage.tool_call_id,
155
+ content: (_d = toolMessage.content) !== null && _d !== void 0 ? _d : '',
156
+ };
157
+ }
158
+ case 'system':
159
+ return {
160
+ role: 'system',
161
+ content: (_e = message.content) !== null && _e !== void 0 ? _e : '',
162
+ };
163
+ default:
164
+ throw new Error(`Invalid message role: ${message.role}`);
165
+ }
166
+ }
70
167
  formatMessage(message) {
71
168
  if (message.role === 'user') {
72
169
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { AiAgentArgs, BotContext, Plugin, ResolvedPlugins } from '@botonic/core'
2
2
  import { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
3
3
  export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> implements Plugin {
4
4
  private readonly authToken?;
5
+ private readonly messageHistoryApiVersion;
6
+ private readonly memory;
5
7
  toolDefinitions: CustomTool<TPlugins, TExtraData>[];
6
8
  constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>);
7
9
  pre(): void;
package/lib/esm/index.js CHANGED
@@ -7,10 +7,17 @@ import { setUpOpenAI } from './openai';
7
7
  import { AIAgentRunner } from './runner';
8
8
  export default class BotonicPluginAiAgents {
9
9
  constructor(options) {
10
+ var _a, _b;
10
11
  this.toolDefinitions = [];
11
12
  setUpOpenAI(options === null || options === void 0 ? void 0 : options.maxRetries, options === null || options === void 0 ? void 0 : options.timeout);
13
+ if ((options === null || options === void 0 ? void 0 : options.messageHistoryApiVersion) === 'v1' && (options === null || options === void 0 ? void 0 : options.memory)) {
14
+ throw new Error('Cannot use memory when messageHistoryApiVersion is "v1". ' +
15
+ 'Either set messageHistoryApiVersion to "v2" or remove memory.');
16
+ }
12
17
  this.authToken = options === null || options === void 0 ? void 0 : options.authToken;
13
18
  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 : {};
14
21
  }
15
22
  pre() {
16
23
  return;
@@ -28,7 +35,7 @@ export default class BotonicPluginAiAgents {
28
35
  name: aiAgentArgs.name,
29
36
  instructions: aiAgentArgs.instructions,
30
37
  tools: tools,
31
- contactInfo: request.session.user.contact_info || {},
38
+ contactInfo: request.session.user.contact_info || [],
32
39
  inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
33
40
  sourceIds: aiAgentArgs.sourceIds || [],
34
41
  campaignContext: (_b = request.input.context) === null || _b === void 0 ? void 0 : _b.campaign_v2,
@@ -63,13 +70,23 @@ export default class BotonicPluginAiAgents {
63
70
  });
64
71
  }
65
72
  getMessages(request, authToken, memoryLength) {
73
+ var _a, _b, _c, _d;
66
74
  return __awaiter(this, void 0, void 0, function* () {
67
- if (isProd) {
68
- const hubtypeClient = new HubtypeApiClient(authToken);
75
+ const hubtypeClient = new HubtypeApiClient(authToken);
76
+ if (!isProd) {
77
+ return yield hubtypeClient.getLocalMessages(memoryLength);
78
+ }
79
+ if (this.messageHistoryApiVersion === 'v1') {
69
80
  return yield hubtypeClient.getMessages(request, memoryLength);
70
81
  }
71
- const hubtypeClient = new HubtypeApiClient(authToken);
72
- return yield hubtypeClient.getLocalMessages(memoryLength);
82
+ // Default to V2
83
+ const result = yield hubtypeClient.getMessagesV2(request, {
84
+ maxMessages: (_a = this.memory.maxMessages) !== null && _a !== void 0 ? _a : memoryLength,
85
+ includeToolCalls: (_b = this.memory.includeToolCalls) !== null && _b !== void 0 ? _b : true,
86
+ maxFullToolResults: (_c = this.memory.maxFullToolResults) !== null && _c !== void 0 ? _c : 1,
87
+ debugMode: (_d = this.memory.debugMode) !== null && _d !== void 0 ? _d : false,
88
+ });
89
+ return result.messages;
73
90
  });
74
91
  }
75
92
  buildTools(activeToolNames) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAUxC,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAQxC,YAAY,OAAoD;QAFzD,oBAAe,GAAuC,EAAE,CAAA;QAG7D,WAAW,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA;QACnC,IAAI,CAAC,eAAe,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,EAAE,CAAA;IACnD,CAAC;IAED,GAAG;QACD,OAAM;IACR,CAAC;IAEK,YAAY,CAChB,OAAyC,EACzC,WAAwB;;;YAExB,IAAI;gBACF,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;gBACzE,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;iBAC1C;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAC3B,CAAA,MAAA,WAAW,CAAC,WAAW,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,EAAE,CACtD,CAAA;gBACD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAuB;oBACrD,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,YAAY,EAAE,WAAW,CAAC,YAAY;oBACtC,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;oBACpD,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,IAAI,EAAE;oBAC1D,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;oBACtC,eAAe,EAAE,MAAA,OAAO,CAAC,KAAK,CAAC,OAAO,0CAAE,WAAW;iBACpD,CAAC,CAAC,KAAK,EAAE,CAAA;gBAEV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,OAAO,EACP,SAAS,EACT,iBAAiB,CAClB,CAAA;gBACD,MAAM,OAAO,GAAkC;oBAC7C,SAAS;oBACT,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;oBACtC,aAAa,EAAE;wBACb,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,UAAU,EAAE,EAAE;qBACf;oBACD,OAAO;iBACR,CAAA;gBAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAuB,KAAK,CAAC,CAAA;gBAC7D,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;aAC3C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;gBACtD,OAAO;oBACL,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,CAAC;oBACf,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;oBACX,wBAAwB,EAAE,EAAE;oBAC5B,yBAAyB,EAAE,EAAE;iBAC9B,CAAA;aACF;;KACF;IAEa,WAAW,CACvB,OAAmB,EACnB,SAAiB,EACjB,YAAoB;;YAEpB,IAAI,MAAM,EAAE;gBACV,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAA;gBACrD,OAAO,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;aAC9D;YACD,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACrD,OAAO,MAAM,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEO,UAAU,CAAC,eAAyB;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACxD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAA;QACD,OAAO,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YACzC,OAAO,IAAI,CAA0C;gBACnD,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,UAAU,EAAE,cAAc,CAAC,MAAM;gBACjC,OAAO,EAAE,cAAc,CAAC,IAAI;aAC7B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAED,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -24,14 +24,24 @@ export interface Chunk {
24
24
  id: string;
25
25
  text: string;
26
26
  }
27
- export type ContactInfo = Record<string, string>;
28
27
  export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
29
28
  export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, AgentOutputType<typeof OutputSchema>>;
29
+ export type MessageHistoryApiVersion = 'v1' | 'v2';
30
+ export interface MemoryOptions {
31
+ maxMessages?: number;
32
+ includeToolCalls?: boolean;
33
+ maxFullToolResults?: number;
34
+ debugMode?: boolean;
35
+ }
30
36
  export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
31
37
  authToken?: string;
32
38
  customTools?: CustomTool<TPlugins, TExtraData>[];
33
39
  maxRetries?: number;
34
40
  timeout?: number;
41
+ /** API version for message history endpoint. Defaults to 'v2'. */
42
+ messageHistoryApiVersion?: MessageHistoryApiVersion;
43
+ /** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
44
+ memory?: MemoryOptions;
35
45
  }
36
46
  export type AgenticInputMessage = AgentInputItem;
37
47
  export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-ai-agents",
3
- "version": "0.43.0-alpha.0",
3
+ "version": "0.43.0-alpha.1",
4
4
  "main": "./lib/cjs/index.js",
5
5
  "module": "./lib/esm/index.js",
6
6
  "description": "Use AI Agents to generate your contents",
@@ -13,7 +13,7 @@
13
13
  "lint_core": "../../node_modules/.bin/eslint_d --cache --quiet 'src/**/*.ts*'"
14
14
  },
15
15
  "dependencies": {
16
- "@botonic/core": "0.43.0-alpha.0",
16
+ "@botonic/core": "0.43.0-alpha.1",
17
17
  "@openai/agents": "^0.1.11",
18
18
  "axios": "^1.12.2",
19
19
  "openai": "^5.23.2",
@@ -1,4 +1,4 @@
1
- import { CampaignV2, ResolvedPlugins } from '@botonic/core'
1
+ import { CampaignV2, ContactInfo, ResolvedPlugins } from '@botonic/core'
2
2
  import {
3
3
  Agent,
4
4
  AgentOutputType,
@@ -10,7 +10,7 @@ import { OPENAI_MODEL, OPENAI_PROVIDER } from './constants'
10
10
  import { createInputGuardrail } from './guardrails'
11
11
  import { OutputSchema } from './structured-output'
12
12
  import { mandatoryTools, retrieveKnowledge } from './tools'
13
- import { AIAgent, ContactInfo, Context, GuardrailRule, Tool } from './types'
13
+ import { AIAgent, Context, GuardrailRule, Tool } from './types'
14
14
 
15
15
  interface AIAgentBuilderOptions<
16
16
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
@@ -20,7 +20,7 @@ interface AIAgentBuilderOptions<
20
20
  instructions: string
21
21
  tools: Tool<TPlugins, TExtraData>[]
22
22
  campaignContext?: CampaignV2
23
- contactInfo: ContactInfo
23
+ contactInfo: ContactInfo[]
24
24
  inputGuardrailRules: GuardrailRule[]
25
25
  sourceIds: string[]
26
26
  }
@@ -86,7 +86,7 @@ export class AIAgentBuilder<
86
86
 
87
87
  private addExtraInstructions(
88
88
  initialInstructions: string,
89
- contactInfo: ContactInfo,
89
+ contactInfo: ContactInfo[],
90
90
  campaignContext?: CampaignV2
91
91
  ): string {
92
92
  const instructions = `<instructions>\n${initialInstructions.trim()}\n</instructions>`
@@ -97,11 +97,23 @@ export class AIAgentBuilder<
97
97
  return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${campaignInstructions}\n\n${outputInstructions}`
98
98
  }
99
99
 
100
- private getContactInfoInstructions(contactInfo: ContactInfo): string {
101
- const structuredContactInfo = Object.entries(contactInfo)
102
- .map(([key, value]) => `${key}: ${value}`)
100
+ private getContactInfoInstructions(contactInfo: ContactInfo[]): string {
101
+ const structuredContactInfo = contactInfo
102
+ .map(
103
+ info =>
104
+ ` <contact_info>
105
+ <name>${info.name}</name>
106
+ <value>${info.value}</value>
107
+ <type>${info.type}</type>
108
+ ${
109
+ info.description
110
+ ? `<description>${info.description}</description>`
111
+ : ''
112
+ }
113
+ </contact_info>`
114
+ )
103
115
  .join('\n')
104
- return `<contact_info>\n${structuredContactInfo}\n</contact_info>`
116
+ return `<contact_info_fields>\n${structuredContactInfo}</contact_info_fields>`
105
117
  }
106
118
 
107
119
  private getMetadataInstructions(): string {
@@ -17,6 +17,71 @@ interface HubtypeUserMessage {
17
17
 
18
18
  type HubtypeMessage = HubtypeAssistantMessage | HubtypeUserMessage
19
19
 
20
+ // V2 API Types
21
+ interface HubtypeToolCall {
22
+ id: string
23
+ type: 'function'
24
+ function: {
25
+ name: string
26
+ arguments: string
27
+ }
28
+ }
29
+
30
+ interface HubtypeUserMessageV2 {
31
+ role: 'user'
32
+ content: string | null
33
+ }
34
+
35
+ interface HubtypeAssistantMessageV2 {
36
+ role: 'assistant'
37
+ content: string | null
38
+ tool_calls?: HubtypeToolCall[] | null
39
+ }
40
+
41
+ interface HubtypeToolMessageV2 {
42
+ role: 'tool'
43
+ content: string | null
44
+ tool_call_id: string
45
+ }
46
+
47
+ interface HubtypeSystemMessageV2 {
48
+ role: 'system'
49
+ content: string | null
50
+ }
51
+
52
+ type HubtypeMessageV2 =
53
+ | HubtypeUserMessageV2
54
+ | HubtypeAssistantMessageV2
55
+ | HubtypeToolMessageV2
56
+ | HubtypeSystemMessageV2
57
+
58
+ interface MessageHistoryResponseV2 {
59
+ messages: HubtypeMessageV2[]
60
+ conversation_id: string | null
61
+ truncated: boolean
62
+ }
63
+
64
+ export interface GetMessagesV2Options {
65
+ maxMessages?: number
66
+ includeToolCalls?: boolean
67
+ maxFullToolResults?: number
68
+ debugMode?: boolean
69
+ }
70
+
71
+ export interface GetMessagesV2Result {
72
+ messages: AgenticInputMessage[]
73
+ conversationId: string | null
74
+ truncated: boolean
75
+ }
76
+
77
+ interface MessageHistoryV2Params {
78
+ last_message_id: string
79
+ max_messages?: number
80
+ include_tool_calls?: boolean
81
+ max_full_tool_results?: number
82
+ debug_mode?: boolean
83
+ }
84
+
20
85
  export class HubtypeApiClient {
21
86
  private readonly authToken: string
22
87
 
@@ -92,6 +157,117 @@ export class HubtypeApiClient {
92
157
  }
93
158
  }
94
159
 
160
+ async getMessagesV2(
161
+ request: BotContext,
162
+ options: GetMessagesV2Options = {}
163
+ ): Promise<GetMessagesV2Result> {
164
+ const url = `${HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`
165
+ const headers = {
166
+ 'Content-Type': 'application/json',
167
+ Authorization: `Bearer ${this.authToken}`,
168
+ }
169
+ const params: MessageHistoryV2Params = {
170
+ last_message_id: request.input.message_id,
171
+ ...(options.maxMessages !== undefined && {
172
+ max_messages: options.maxMessages,
173
+ }),
174
+ ...(options.includeToolCalls !== undefined && {
175
+ include_tool_calls: options.includeToolCalls,
176
+ }),
177
+ ...(options.maxFullToolResults !== undefined && {
178
+ max_full_tool_results: options.maxFullToolResults,
179
+ }),
180
+ ...(options.debugMode !== undefined && {
181
+ debug_mode: options.debugMode,
182
+ }),
183
+ }
184
+
185
+ try {
186
+ const response = await axios.get<MessageHistoryResponseV2>(url, {
187
+ headers,
188
+ params,
189
+ })
190
+ const { messages, conversation_id, truncated } = response.data
191
+ const formattedMessages = messages
192
+ .map(message => this.formatMessageV2(message))
193
+ .filter((message): message is AgenticInputMessage => message !== null)
194
+ return {
195
+ messages: formattedMessages,
196
+ conversationId: conversation_id,
197
+ truncated,
198
+ }
199
+ } catch (error) {
200
+ console.error(error)
201
+ throw new Error('Failed to get messages from Hubtype V2 API')
202
+ }
203
+ }
204
+
205
+ private formatMessageV2(
206
+ message: HubtypeMessageV2
207
+ ): AgenticInputMessage | null {
208
+ switch (message.role) {
209
+ case 'user':
210
+ return {
211
+ role: 'user',
212
+ content: message.content ?? '',
213
+ }
214
+ case 'assistant': {
215
+ const assistantMessage = message as HubtypeAssistantMessageV2
216
+ // If assistant message has tool_calls, include them for context
217
+ // Using double assertion as the OpenAI API supports this format,
218
+ // but the agents SDK types are more restrictive
219
+ if (
220
+ assistantMessage.tool_calls &&
221
+ assistantMessage.tool_calls.length > 0
222
+ ) {
223
+ return {
224
+ role: 'assistant',
225
+ content: assistantMessage.content ?? '',
226
+ tool_calls: assistantMessage.tool_calls.map(tc => ({
227
+ id: tc.id,
228
+ type: tc.type,
229
+ function: {
230
+ name: tc.function.name,
231
+ arguments: tc.function.arguments,
232
+ },
233
+ })),
234
+ } as unknown as AgenticInputMessage
235
+ }
236
+ // Regular assistant message without tool_calls
237
+ return {
238
+ role: 'assistant',
239
+ content: [
240
+ {
241
+ type: 'output_text',
242
+ text: assistantMessage.content ?? '',
243
+ },
244
+ ],
245
+ status: 'completed',
246
+ }
247
+ }
248
+ case 'tool': {
249
+ // Tool messages provide context about previous tool executions
250
+ // Using double assertion as the OpenAI API supports this format,
251
+ // but the agents SDK types are more restrictive
252
+ const toolMessage = message as HubtypeToolMessageV2
253
+ return {
254
+ role: 'tool',
255
+ tool_call_id: toolMessage.tool_call_id,
256
+ content: toolMessage.content ?? '',
257
+ } as unknown as AgenticInputMessage
258
+ }
259
+ case 'system':
260
+ return {
261
+ role: 'system',
262
+ content: message.content ?? '',
263
+ }
264
+ default:
265
+ throw new Error(
266
+ `Invalid message role: ${(message as HubtypeMessageV2).role}`
267
+ )
268
+ }
269
+ }
270
+
95
271
  private formatMessage(message: HubtypeMessage): AgenticInputMessage {
96
272
  if (message.role === 'user') {
97
273
  return {
package/src/index.ts CHANGED
@@ -11,6 +11,8 @@ import {
11
11
  Context,
12
12
  CustomTool,
13
13
  InferenceResponse,
14
+ MemoryOptions,
15
+ MessageHistoryApiVersion,
14
16
  PluginAiAgentOptions,
15
17
  Tool,
16
18
  } from './types'
@@ -21,12 +23,24 @@ export default class BotonicPluginAiAgents<
21
23
  > implements Plugin
22
24
  {
23
25
  private readonly authToken?: string
26
+ private readonly messageHistoryApiVersion: MessageHistoryApiVersion
27
+ private readonly memory: MemoryOptions
24
28
  public toolDefinitions: CustomTool<TPlugins, TExtraData>[] = []
25
29
 
26
30
  constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>) {
27
31
  setUpOpenAI(options?.maxRetries, options?.timeout)
32
+
33
+ if (options?.messageHistoryApiVersion === 'v1' && options?.memory) {
34
+ throw new Error(
35
+ 'Cannot use memory when messageHistoryApiVersion is "v1". ' +
36
+ 'Either set messageHistoryApiVersion to "v2" or remove memory.'
37
+ )
38
+ }
39
+
28
40
  this.authToken = options?.authToken
29
41
  this.toolDefinitions = options?.customTools || []
42
+ this.messageHistoryApiVersion = options?.messageHistoryApiVersion ?? 'v2'
43
+ this.memory = options?.memory ?? {}
30
44
  }
31
45
 
32
46
  pre(): void {
@@ -50,7 +64,7 @@ export default class BotonicPluginAiAgents<
50
64
  name: aiAgentArgs.name,
51
65
  instructions: aiAgentArgs.instructions,
52
66
  tools: tools,
53
- contactInfo: request.session.user.contact_info || {},
67
+ contactInfo: request.session.user.contact_info || [],
54
68
  inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
55
69
  sourceIds: aiAgentArgs.sourceIds || [],
56
70
  campaignContext: request.input.context?.campaign_v2,
@@ -94,12 +108,24 @@ export default class BotonicPluginAiAgents<
94
108
  authToken: string,
95
109
  memoryLength: number
96
110
  ): Promise<AgenticInputMessage[]> {
97
- if (isProd) {
98
- const hubtypeClient = new HubtypeApiClient(authToken)
111
+ const hubtypeClient = new HubtypeApiClient(authToken)
112
+
113
+ if (!isProd) {
114
+ return await hubtypeClient.getLocalMessages(memoryLength)
115
+ }
116
+
117
+ if (this.messageHistoryApiVersion === 'v1') {
99
118
  return await hubtypeClient.getMessages(request, memoryLength)
100
119
  }
101
- const hubtypeClient = new HubtypeApiClient(authToken)
102
- return await hubtypeClient.getLocalMessages(memoryLength)
120
+
121
+ // Default to V2
122
+ const result = await hubtypeClient.getMessagesV2(request, {
123
+ maxMessages: this.memory.maxMessages ?? memoryLength,
124
+ includeToolCalls: this.memory.includeToolCalls ?? true,
125
+ maxFullToolResults: this.memory.maxFullToolResults ?? 1,
126
+ debugMode: this.memory.debugMode ?? false,
127
+ })
128
+ return result.messages
103
129
  }
104
130
 
105
131
  private buildTools(activeToolNames: string[]): Tool<TPlugins, TExtraData>[] {
package/src/types.ts CHANGED
@@ -56,16 +56,25 @@ export interface Chunk {
56
56
  text: string
57
57
  }
58
58
 
59
- export type ContactInfo = Record<string, string>
60
-
61
59
  export type Tool<
62
60
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
63
61
  TExtraData = any,
64
62
  > = OpenAITool<Context<TPlugins, TExtraData>>
63
+
65
64
  export type AIAgent<
66
65
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
67
66
  TExtraData = any,
68
67
  > = Agent<Context<TPlugins, TExtraData>, AgentOutputType<typeof OutputSchema>>
68
+
69
+ export type MessageHistoryApiVersion = 'v1' | 'v2'
70
+
71
+ export interface MemoryOptions {
72
+ maxMessages?: number
73
+ includeToolCalls?: boolean
74
+ maxFullToolResults?: number
75
+ debugMode?: boolean
76
+ }
77
+
69
78
  export interface PluginAiAgentOptions<
70
79
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
71
80
  TExtraData = any,
@@ -74,6 +83,10 @@ export interface PluginAiAgentOptions<
74
83
  customTools?: CustomTool<TPlugins, TExtraData>[]
75
84
  maxRetries?: number
76
85
  timeout?: number
86
+ /** API version for message history endpoint. Defaults to 'v2'. */
87
+ messageHistoryApiVersion?: MessageHistoryApiVersion
88
+ /** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
89
+ memory?: MemoryOptions
77
90
  }
78
91
 
79
92
  export type AgenticInputMessage = AgentInputItem