@botonic/plugin-ai-agents 0.42.4 → 0.43.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/hubtype-api-client.d.ts +13 -0
- package/lib/cjs/hubtype-api-client.js +103 -0
- package/lib/cjs/hubtype-api-client.js.map +1 -1
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +21 -4
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/runner.js +1 -0
- package/lib/cjs/runner.js.map +1 -1
- package/lib/cjs/types.d.ts +11 -0
- package/lib/esm/hubtype-api-client.d.ts +13 -0
- package/lib/esm/hubtype-api-client.js +103 -0
- package/lib/esm/hubtype-api-client.js.map +1 -1
- package/lib/esm/index.d.ts +2 -0
- package/lib/esm/index.js +21 -4
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/runner.js +1 -0
- package/lib/esm/runner.js.map +1 -1
- package/lib/esm/types.d.ts +11 -0
- package/package.json +1 -1
- package/src/hubtype-api-client.ts +169 -0
- package/src/index.ts +30 -4
- package/src/runner.ts +4 -0
- package/src/types.ts +13 -0
|
@@ -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,109 @@ 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 = {
|
|
81
|
+
last_message_id: request.input.message_id,
|
|
82
|
+
};
|
|
83
|
+
if (options.maxMessages !== undefined) {
|
|
84
|
+
params.max_messages = options.maxMessages;
|
|
85
|
+
}
|
|
86
|
+
if (options.includeToolCalls !== undefined) {
|
|
87
|
+
params.include_tool_calls = options.includeToolCalls;
|
|
88
|
+
}
|
|
89
|
+
if (options.maxFullToolResults !== undefined) {
|
|
90
|
+
params.max_full_tool_results = options.maxFullToolResults;
|
|
91
|
+
}
|
|
92
|
+
if (options.debugMode !== undefined) {
|
|
93
|
+
params.debug_mode = options.debugMode;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const response = yield axios_1.default.get(url, {
|
|
97
|
+
headers,
|
|
98
|
+
params,
|
|
99
|
+
});
|
|
100
|
+
const { messages, conversation_id, truncated } = response.data;
|
|
101
|
+
const formattedMessages = messages
|
|
102
|
+
.map(message => this.formatMessageV2(message))
|
|
103
|
+
.filter((message) => message !== null);
|
|
104
|
+
return {
|
|
105
|
+
messages: formattedMessages,
|
|
106
|
+
conversationId: conversation_id,
|
|
107
|
+
truncated,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(error);
|
|
112
|
+
throw new Error('Failed to get messages from Hubtype V2 API');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
formatMessageV2(message) {
|
|
117
|
+
var _a, _b, _c, _d, _e;
|
|
118
|
+
switch (message.role) {
|
|
119
|
+
case 'user':
|
|
120
|
+
return {
|
|
121
|
+
role: 'user',
|
|
122
|
+
content: (_a = message.content) !== null && _a !== void 0 ? _a : '',
|
|
123
|
+
};
|
|
124
|
+
case 'assistant': {
|
|
125
|
+
const assistantMessage = message;
|
|
126
|
+
// If assistant message has tool_calls, include them for context
|
|
127
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
128
|
+
// but the agents SDK types are more restrictive
|
|
129
|
+
if (assistantMessage.tool_calls &&
|
|
130
|
+
assistantMessage.tool_calls.length > 0) {
|
|
131
|
+
return {
|
|
132
|
+
role: 'assistant',
|
|
133
|
+
content: (_b = assistantMessage.content) !== null && _b !== void 0 ? _b : '',
|
|
134
|
+
tool_calls: assistantMessage.tool_calls.map(tc => ({
|
|
135
|
+
id: tc.id,
|
|
136
|
+
type: tc.type,
|
|
137
|
+
function: {
|
|
138
|
+
name: tc.function.name,
|
|
139
|
+
arguments: tc.function.arguments,
|
|
140
|
+
},
|
|
141
|
+
})),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// Regular assistant message without tool_calls
|
|
145
|
+
return {
|
|
146
|
+
role: 'assistant',
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: 'output_text',
|
|
150
|
+
text: (_c = assistantMessage.content) !== null && _c !== void 0 ? _c : '',
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
status: 'completed',
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
case 'tool': {
|
|
157
|
+
// Tool messages provide context about previous tool executions
|
|
158
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
159
|
+
// but the agents SDK types are more restrictive
|
|
160
|
+
const toolMessage = message;
|
|
161
|
+
return {
|
|
162
|
+
role: 'tool',
|
|
163
|
+
tool_call_id: toolMessage.tool_call_id,
|
|
164
|
+
content: (_d = toolMessage.content) !== null && _d !== void 0 ? _d : '',
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
case 'system':
|
|
168
|
+
return {
|
|
169
|
+
role: 'system',
|
|
170
|
+
content: (_e = message.content) !== null && _e !== void 0 ? _e : '',
|
|
171
|
+
};
|
|
172
|
+
default:
|
|
173
|
+
throw new Error(`Invalid message role: ${message.role}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
73
176
|
formatMessage(message) {
|
|
74
177
|
if (message.role === 'user') {
|
|
75
178
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":";;;;AAEA,0DAAyB;AAEzB,2CAA6C;
|
|
1
|
+
{"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -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;
|
|
@@ -57,13 +64,23 @@ class BotonicPluginAiAgents {
|
|
|
57
64
|
});
|
|
58
65
|
}
|
|
59
66
|
getMessages(request, authToken, memoryLength) {
|
|
67
|
+
var _a, _b, _c, _d;
|
|
60
68
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
|
|
70
|
+
if (!constants_1.isProd) {
|
|
71
|
+
return yield hubtypeClient.getLocalMessages(memoryLength);
|
|
72
|
+
}
|
|
73
|
+
if (this.messageHistoryApiVersion === 'v1') {
|
|
63
74
|
return yield hubtypeClient.getMessages(request, memoryLength);
|
|
64
75
|
}
|
|
65
|
-
|
|
66
|
-
|
|
76
|
+
// Default to V2
|
|
77
|
+
const result = yield hubtypeClient.getMessagesV2(request, {
|
|
78
|
+
maxMessages: (_a = this.memory.maxMessages) !== null && _a !== void 0 ? _a : memoryLength,
|
|
79
|
+
includeToolCalls: (_b = this.memory.includeToolCalls) !== null && _b !== void 0 ? _b : true,
|
|
80
|
+
maxFullToolResults: (_c = this.memory.maxFullToolResults) !== null && _c !== void 0 ? _c : 1,
|
|
81
|
+
debugMode: (_d = this.memory.debugMode) !== null && _d !== void 0 ? _d : false,
|
|
82
|
+
});
|
|
83
|
+
return result.messages;
|
|
67
84
|
});
|
|
68
85
|
}
|
|
69
86
|
buildTools(activeToolNames) {
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/runner.js
CHANGED
|
@@ -11,6 +11,7 @@ class AIAgentRunner {
|
|
|
11
11
|
run(messages, context) {
|
|
12
12
|
var _a;
|
|
13
13
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
console.log('Running agent with messages', JSON.stringify(messages, null, 2));
|
|
14
15
|
try {
|
|
15
16
|
const runner = new agents_1.Runner({
|
|
16
17
|
modelSettings: { temperature: 0 },
|
package/lib/cjs/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/types.d.ts
CHANGED
|
@@ -27,11 +27,22 @@ export interface Chunk {
|
|
|
27
27
|
export type ContactInfo = Record<string, string>;
|
|
28
28
|
export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
|
|
29
29
|
export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>;
|
|
30
|
+
export type MessageHistoryApiVersion = 'v1' | 'v2';
|
|
31
|
+
export interface MemoryOptions {
|
|
32
|
+
maxMessages?: number;
|
|
33
|
+
includeToolCalls?: boolean;
|
|
34
|
+
maxFullToolResults?: number;
|
|
35
|
+
debugMode?: boolean;
|
|
36
|
+
}
|
|
30
37
|
export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
31
38
|
authToken?: string;
|
|
32
39
|
customTools?: CustomTool<TPlugins, TExtraData>[];
|
|
33
40
|
maxRetries?: number;
|
|
34
41
|
timeout?: number;
|
|
42
|
+
/** API version for message history endpoint. Defaults to 'v2'. */
|
|
43
|
+
messageHistoryApiVersion?: MessageHistoryApiVersion;
|
|
44
|
+
/** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
|
|
45
|
+
memory?: MemoryOptions;
|
|
35
46
|
}
|
|
36
47
|
export type AgenticInputMessage = AgentInputItem;
|
|
37
48
|
export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
|
|
@@ -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,109 @@ 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 = {
|
|
78
|
+
last_message_id: request.input.message_id,
|
|
79
|
+
};
|
|
80
|
+
if (options.maxMessages !== undefined) {
|
|
81
|
+
params.max_messages = options.maxMessages;
|
|
82
|
+
}
|
|
83
|
+
if (options.includeToolCalls !== undefined) {
|
|
84
|
+
params.include_tool_calls = options.includeToolCalls;
|
|
85
|
+
}
|
|
86
|
+
if (options.maxFullToolResults !== undefined) {
|
|
87
|
+
params.max_full_tool_results = options.maxFullToolResults;
|
|
88
|
+
}
|
|
89
|
+
if (options.debugMode !== undefined) {
|
|
90
|
+
params.debug_mode = options.debugMode;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const response = yield axios.get(url, {
|
|
94
|
+
headers,
|
|
95
|
+
params,
|
|
96
|
+
});
|
|
97
|
+
const { messages, conversation_id, truncated } = response.data;
|
|
98
|
+
const formattedMessages = messages
|
|
99
|
+
.map(message => this.formatMessageV2(message))
|
|
100
|
+
.filter((message) => message !== null);
|
|
101
|
+
return {
|
|
102
|
+
messages: formattedMessages,
|
|
103
|
+
conversationId: conversation_id,
|
|
104
|
+
truncated,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error(error);
|
|
109
|
+
throw new Error('Failed to get messages from Hubtype V2 API');
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
formatMessageV2(message) {
|
|
114
|
+
var _a, _b, _c, _d, _e;
|
|
115
|
+
switch (message.role) {
|
|
116
|
+
case 'user':
|
|
117
|
+
return {
|
|
118
|
+
role: 'user',
|
|
119
|
+
content: (_a = message.content) !== null && _a !== void 0 ? _a : '',
|
|
120
|
+
};
|
|
121
|
+
case 'assistant': {
|
|
122
|
+
const assistantMessage = message;
|
|
123
|
+
// If assistant message has tool_calls, include them for context
|
|
124
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
125
|
+
// but the agents SDK types are more restrictive
|
|
126
|
+
if (assistantMessage.tool_calls &&
|
|
127
|
+
assistantMessage.tool_calls.length > 0) {
|
|
128
|
+
return {
|
|
129
|
+
role: 'assistant',
|
|
130
|
+
content: (_b = assistantMessage.content) !== null && _b !== void 0 ? _b : '',
|
|
131
|
+
tool_calls: assistantMessage.tool_calls.map(tc => ({
|
|
132
|
+
id: tc.id,
|
|
133
|
+
type: tc.type,
|
|
134
|
+
function: {
|
|
135
|
+
name: tc.function.name,
|
|
136
|
+
arguments: tc.function.arguments,
|
|
137
|
+
},
|
|
138
|
+
})),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Regular assistant message without tool_calls
|
|
142
|
+
return {
|
|
143
|
+
role: 'assistant',
|
|
144
|
+
content: [
|
|
145
|
+
{
|
|
146
|
+
type: 'output_text',
|
|
147
|
+
text: (_c = assistantMessage.content) !== null && _c !== void 0 ? _c : '',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
status: 'completed',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case 'tool': {
|
|
154
|
+
// Tool messages provide context about previous tool executions
|
|
155
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
156
|
+
// but the agents SDK types are more restrictive
|
|
157
|
+
const toolMessage = message;
|
|
158
|
+
return {
|
|
159
|
+
role: 'tool',
|
|
160
|
+
tool_call_id: toolMessage.tool_call_id,
|
|
161
|
+
content: (_d = toolMessage.content) !== null && _d !== void 0 ? _d : '',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
case 'system':
|
|
165
|
+
return {
|
|
166
|
+
role: 'system',
|
|
167
|
+
content: (_e = message.content) !== null && _e !== void 0 ? _e : '',
|
|
168
|
+
};
|
|
169
|
+
default:
|
|
170
|
+
throw new Error(`Invalid message role: ${message.role}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
70
173
|
formatMessage(message) {
|
|
71
174
|
if (message.role === 'user') {
|
|
72
175
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"hubtype-api-client.js","sourceRoot":"","sources":["../../src/hubtype-api-client.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -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;
|
|
@@ -55,13 +62,23 @@ export default class BotonicPluginAiAgents {
|
|
|
55
62
|
});
|
|
56
63
|
}
|
|
57
64
|
getMessages(request, authToken, memoryLength) {
|
|
65
|
+
var _a, _b, _c, _d;
|
|
58
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
const hubtypeClient = new HubtypeApiClient(authToken);
|
|
68
|
+
if (!isProd) {
|
|
69
|
+
return yield hubtypeClient.getLocalMessages(memoryLength);
|
|
70
|
+
}
|
|
71
|
+
if (this.messageHistoryApiVersion === 'v1') {
|
|
61
72
|
return yield hubtypeClient.getMessages(request, memoryLength);
|
|
62
73
|
}
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
// Default to V2
|
|
75
|
+
const result = yield hubtypeClient.getMessagesV2(request, {
|
|
76
|
+
maxMessages: (_a = this.memory.maxMessages) !== null && _a !== void 0 ? _a : memoryLength,
|
|
77
|
+
includeToolCalls: (_b = this.memory.includeToolCalls) !== null && _b !== void 0 ? _b : true,
|
|
78
|
+
maxFullToolResults: (_c = this.memory.maxFullToolResults) !== null && _c !== void 0 ? _c : 1,
|
|
79
|
+
debugMode: (_d = this.memory.debugMode) !== null && _d !== void 0 ? _d : false,
|
|
80
|
+
});
|
|
81
|
+
return result.messages;
|
|
65
82
|
});
|
|
66
83
|
}
|
|
67
84
|
buildTools(activeToolNames) {
|
package/lib/esm/index.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/runner.js
CHANGED
|
@@ -8,6 +8,7 @@ export class AIAgentRunner {
|
|
|
8
8
|
run(messages, context) {
|
|
9
9
|
var _a;
|
|
10
10
|
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
+
console.log('Running agent with messages', JSON.stringify(messages, null, 2));
|
|
11
12
|
try {
|
|
12
13
|
const runner = new Runner({
|
|
13
14
|
modelSettings: { temperature: 0 },
|
package/lib/esm/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -27,11 +27,22 @@ export interface Chunk {
|
|
|
27
27
|
export type ContactInfo = Record<string, string>;
|
|
28
28
|
export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
|
|
29
29
|
export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>;
|
|
30
|
+
export type MessageHistoryApiVersion = 'v1' | 'v2';
|
|
31
|
+
export interface MemoryOptions {
|
|
32
|
+
maxMessages?: number;
|
|
33
|
+
includeToolCalls?: boolean;
|
|
34
|
+
maxFullToolResults?: number;
|
|
35
|
+
debugMode?: boolean;
|
|
36
|
+
}
|
|
30
37
|
export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
31
38
|
authToken?: string;
|
|
32
39
|
customTools?: CustomTool<TPlugins, TExtraData>[];
|
|
33
40
|
maxRetries?: number;
|
|
34
41
|
timeout?: number;
|
|
42
|
+
/** API version for message history endpoint. Defaults to 'v2'. */
|
|
43
|
+
messageHistoryApiVersion?: MessageHistoryApiVersion;
|
|
44
|
+
/** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
|
|
45
|
+
memory?: MemoryOptions;
|
|
35
46
|
}
|
|
36
47
|
export type AgenticInputMessage = AgentInputItem;
|
|
37
48
|
export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
|
package/package.json
CHANGED
|
@@ -17,6 +17,63 @@ 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
|
+
|
|
20
77
|
export class HubtypeApiClient {
|
|
21
78
|
private readonly authToken: string
|
|
22
79
|
|
|
@@ -92,6 +149,118 @@ export class HubtypeApiClient {
|
|
|
92
149
|
}
|
|
93
150
|
}
|
|
94
151
|
|
|
152
|
+
async getMessagesV2(
|
|
153
|
+
request: BotContext,
|
|
154
|
+
options: GetMessagesV2Options = {}
|
|
155
|
+
): Promise<GetMessagesV2Result> {
|
|
156
|
+
const url = `${HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`
|
|
157
|
+
const headers = {
|
|
158
|
+
'Content-Type': 'application/json',
|
|
159
|
+
Authorization: `Bearer ${this.authToken}`,
|
|
160
|
+
}
|
|
161
|
+
const params: Record<string, string | number | boolean> = {
|
|
162
|
+
last_message_id: request.input.message_id,
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (options.maxMessages !== undefined) {
|
|
166
|
+
params.max_messages = options.maxMessages
|
|
167
|
+
}
|
|
168
|
+
if (options.includeToolCalls !== undefined) {
|
|
169
|
+
params.include_tool_calls = options.includeToolCalls
|
|
170
|
+
}
|
|
171
|
+
if (options.maxFullToolResults !== undefined) {
|
|
172
|
+
params.max_full_tool_results = options.maxFullToolResults
|
|
173
|
+
}
|
|
174
|
+
if (options.debugMode !== undefined) {
|
|
175
|
+
params.debug_mode = options.debugMode
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
const response = await axios.get<MessageHistoryResponseV2>(url, {
|
|
180
|
+
headers,
|
|
181
|
+
params,
|
|
182
|
+
})
|
|
183
|
+
const { messages, conversation_id, truncated } = response.data
|
|
184
|
+
const formattedMessages = messages
|
|
185
|
+
.map(message => this.formatMessageV2(message))
|
|
186
|
+
.filter((message): message is AgenticInputMessage => message !== null)
|
|
187
|
+
return {
|
|
188
|
+
messages: formattedMessages,
|
|
189
|
+
conversationId: conversation_id,
|
|
190
|
+
truncated,
|
|
191
|
+
}
|
|
192
|
+
} catch (error) {
|
|
193
|
+
console.error(error)
|
|
194
|
+
throw new Error('Failed to get messages from Hubtype V2 API')
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
private formatMessageV2(
|
|
199
|
+
message: HubtypeMessageV2
|
|
200
|
+
): AgenticInputMessage | null {
|
|
201
|
+
switch (message.role) {
|
|
202
|
+
case 'user':
|
|
203
|
+
return {
|
|
204
|
+
role: 'user',
|
|
205
|
+
content: message.content ?? '',
|
|
206
|
+
}
|
|
207
|
+
case 'assistant': {
|
|
208
|
+
const assistantMessage = message as HubtypeAssistantMessageV2
|
|
209
|
+
// If assistant message has tool_calls, include them for context
|
|
210
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
211
|
+
// but the agents SDK types are more restrictive
|
|
212
|
+
if (
|
|
213
|
+
assistantMessage.tool_calls &&
|
|
214
|
+
assistantMessage.tool_calls.length > 0
|
|
215
|
+
) {
|
|
216
|
+
return {
|
|
217
|
+
role: 'assistant',
|
|
218
|
+
content: assistantMessage.content ?? '',
|
|
219
|
+
tool_calls: assistantMessage.tool_calls.map(tc => ({
|
|
220
|
+
id: tc.id,
|
|
221
|
+
type: tc.type,
|
|
222
|
+
function: {
|
|
223
|
+
name: tc.function.name,
|
|
224
|
+
arguments: tc.function.arguments,
|
|
225
|
+
},
|
|
226
|
+
})),
|
|
227
|
+
} as unknown as AgenticInputMessage
|
|
228
|
+
}
|
|
229
|
+
// Regular assistant message without tool_calls
|
|
230
|
+
return {
|
|
231
|
+
role: 'assistant',
|
|
232
|
+
content: [
|
|
233
|
+
{
|
|
234
|
+
type: 'output_text',
|
|
235
|
+
text: assistantMessage.content ?? '',
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
status: 'completed',
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
case 'tool': {
|
|
242
|
+
// Tool messages provide context about previous tool executions
|
|
243
|
+
// Using double assertion as the OpenAI API supports this format,
|
|
244
|
+
// but the agents SDK types are more restrictive
|
|
245
|
+
const toolMessage = message as HubtypeToolMessageV2
|
|
246
|
+
return {
|
|
247
|
+
role: 'tool',
|
|
248
|
+
tool_call_id: toolMessage.tool_call_id,
|
|
249
|
+
content: toolMessage.content ?? '',
|
|
250
|
+
} as unknown as AgenticInputMessage
|
|
251
|
+
}
|
|
252
|
+
case 'system':
|
|
253
|
+
return {
|
|
254
|
+
role: 'system',
|
|
255
|
+
content: message.content ?? '',
|
|
256
|
+
}
|
|
257
|
+
default:
|
|
258
|
+
throw new Error(
|
|
259
|
+
`Invalid message role: ${(message as HubtypeMessageV2).role}`
|
|
260
|
+
)
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
95
264
|
private formatMessage(message: HubtypeMessage): AgenticInputMessage {
|
|
96
265
|
if (message.role === 'user') {
|
|
97
266
|
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 {
|
|
@@ -93,12 +107,24 @@ export default class BotonicPluginAiAgents<
|
|
|
93
107
|
authToken: string,
|
|
94
108
|
memoryLength: number
|
|
95
109
|
): Promise<AgenticInputMessage[]> {
|
|
96
|
-
|
|
97
|
-
|
|
110
|
+
const hubtypeClient = new HubtypeApiClient(authToken)
|
|
111
|
+
|
|
112
|
+
if (!isProd) {
|
|
113
|
+
return await hubtypeClient.getLocalMessages(memoryLength)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (this.messageHistoryApiVersion === 'v1') {
|
|
98
117
|
return await hubtypeClient.getMessages(request, memoryLength)
|
|
99
118
|
}
|
|
100
|
-
|
|
101
|
-
|
|
119
|
+
|
|
120
|
+
// Default to V2
|
|
121
|
+
const result = await hubtypeClient.getMessagesV2(request, {
|
|
122
|
+
maxMessages: this.memory.maxMessages ?? memoryLength,
|
|
123
|
+
includeToolCalls: this.memory.includeToolCalls ?? true,
|
|
124
|
+
maxFullToolResults: this.memory.maxFullToolResults ?? 1,
|
|
125
|
+
debugMode: this.memory.debugMode ?? false,
|
|
126
|
+
})
|
|
127
|
+
return result.messages
|
|
102
128
|
}
|
|
103
129
|
|
|
104
130
|
private buildTools(activeToolNames: string[]): Tool<TPlugins, TExtraData>[] {
|
package/src/runner.ts
CHANGED
|
@@ -28,6 +28,10 @@ export class AIAgentRunner<
|
|
|
28
28
|
messages: AgenticInputMessage[],
|
|
29
29
|
context: Context<TPlugins, TExtraData>
|
|
30
30
|
): Promise<RunResult> {
|
|
31
|
+
console.log(
|
|
32
|
+
'Running agent with messages',
|
|
33
|
+
JSON.stringify(messages, null, 2)
|
|
34
|
+
)
|
|
31
35
|
try {
|
|
32
36
|
const runner = new Runner({
|
|
33
37
|
modelSettings: { temperature: 0 },
|
package/src/types.ts
CHANGED
|
@@ -65,6 +65,15 @@ export type AIAgent<
|
|
|
65
65
|
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
66
66
|
TExtraData = any,
|
|
67
67
|
> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>
|
|
68
|
+
export type MessageHistoryApiVersion = 'v1' | 'v2'
|
|
69
|
+
|
|
70
|
+
export interface MemoryOptions {
|
|
71
|
+
maxMessages?: number
|
|
72
|
+
includeToolCalls?: boolean
|
|
73
|
+
maxFullToolResults?: number
|
|
74
|
+
debugMode?: boolean
|
|
75
|
+
}
|
|
76
|
+
|
|
68
77
|
export interface PluginAiAgentOptions<
|
|
69
78
|
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
70
79
|
TExtraData = any,
|
|
@@ -73,6 +82,10 @@ export interface PluginAiAgentOptions<
|
|
|
73
82
|
customTools?: CustomTool<TPlugins, TExtraData>[]
|
|
74
83
|
maxRetries?: number
|
|
75
84
|
timeout?: number
|
|
85
|
+
/** API version for message history endpoint. Defaults to 'v2'. */
|
|
86
|
+
messageHistoryApiVersion?: MessageHistoryApiVersion
|
|
87
|
+
/** Options for V2 message history API. Only used when messageHistoryApiVersion is 'v2'. */
|
|
88
|
+
memory?: MemoryOptions
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
export type AgenticInputMessage = AgentInputItem
|