11/* eslint-disable @typescript-eslint/naming-convention */
2- import type { BotContext } from '@botonic/core'
2+ import type { BotContext , HubtypeAssistantMessage } from '@botonic/core'
33import axios from 'axios'
44
55import { HUBTYPE_API_URL } from '../constants'
6- import type { AgenticInputMessage , Chunk } from '../types'
6+ import type { AgenticInputMessage , Chunk , MemoryOptions } from '../types'
77import type {
8- GetMessagesV2Options ,
98 GetMessagesV2Result ,
109 HubtypeAssistantMessageV2 ,
1110 HubtypeMessage ,
@@ -46,7 +45,8 @@ export class HubtypeApiClient {
4645 }
4746
4847 async getLocalMessages (
49- maxMemoryLength : number
48+ maxMemoryLength : number ,
49+ previousHubtypeMessages : HubtypeAssistantMessage [ ]
5050 ) : Promise < AgenticInputMessage [ ] > {
5151 const localBotonicState =
5252 typeof globalThis !== 'undefined' && globalThis . localStorage
@@ -61,39 +61,15 @@ export class HubtypeApiClient {
6161 content : message . data . text ,
6262 } ) )
6363 . map ( message => this . formatMessage ( message ) )
64- return filteredMessages . slice ( - maxMemoryLength )
65- }
66-
67- // async getMessages(
68- // botContext: BotContext,
69- // maxMemoryLength: number
70- // ): Promise<AgenticInputMessage[]> {
71- // const url = `${HUBTYPE_API_URL}/external/v1/ai/agent/message_history/`
72- // const headers = {
73- // 'Content-Type': 'application/json',
74- // Authorization: `Bearer ${this.authToken}`,
75- // }
76- // const params = {
77- // last_message_id: botContext.input.message_id,
78- // num_messages: maxMemoryLength,
79- // }
64+ const resultMessages = [ ...filteredMessages , ...previousHubtypeMessages ]
8065
81- // try {
82- // const response = await axios.get<{ messages: HubtypeMessage[] }>(url, {
83- // headers,
84- // params,
85- // })
86- // const messages = response.data.messages
87- // return messages.map(message => this.formatMessage(message))
88- // } catch (error) {
89- // console.error(error)
90- // throw new Error('Failed to get messages from Hubtype')
91- // }
92- // }
66+ return resultMessages . slice ( - maxMemoryLength )
67+ }
9368
9469 async getMessagesV2 (
9570 botContext : BotContext ,
96- options : GetMessagesV2Options = { }
71+ options : MemoryOptions ,
72+ previousHubtypeMessages : HubtypeAssistantMessage [ ]
9773 ) : Promise < GetMessagesV2Result > {
9874 const url = `${ HUBTYPE_API_URL } /external/v2/ai/agent/message_history/`
9975 const headers = {
@@ -102,18 +78,10 @@ export class HubtypeApiClient {
10278 }
10379 const params : MessageHistoryV2Params = {
10480 last_message_id : botContext . input . message_id ,
105- ...( options . maxMessages !== undefined && {
106- max_messages : options . maxMessages ,
107- } ) ,
108- ...( options . includeToolCalls !== undefined && {
109- include_tool_calls : options . includeToolCalls ,
110- } ) ,
111- ...( options . maxFullToolResults !== undefined && {
112- max_full_tool_results : options . maxFullToolResults ,
113- } ) ,
114- ...( options . debugMode !== undefined && {
115- debug_mode : options . debugMode ,
116- } ) ,
81+ max_messages : options . maxMessages ,
82+ include_tool_calls : options . includeToolCalls ,
83+ max_full_tool_results : options . maxFullToolResults ,
84+ debug_mode : options . debugMode ,
11785 }
11886
11987 try {
@@ -122,9 +90,10 @@ export class HubtypeApiClient {
12290 params,
12391 } )
12492 const { messages, conversation_id, truncated } = response . data
125- const formattedMessages = messages
93+ const formattedMessages = [ ... messages , ... previousHubtypeMessages ]
12694 . map ( message => this . formatMessageV2 ( message ) )
12795 . filter ( ( message ) : message is AgenticInputMessage => message !== null )
96+
12897 return {
12998 messages : formattedMessages ,
13099 conversationId : conversation_id ,
0 commit comments