@alquimia-ai/tools 1.4.1 → 1.6.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.
@@ -13,6 +13,12 @@ declare function useAlquimia(sdk: AlquimiaSDK): {
13
13
  handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
14
14
  handleReplaceInput: (input: string) => void;
15
15
  handleSubmit: (event: React.FormEvent<HTMLFormElement>, traceParentId?: string, sessionId?: string, additionalInfo?: string) => Promise<void>;
16
+ handleSystemMessage: (message: string, options?: {
17
+ traceParentId?: string;
18
+ sessionId?: string;
19
+ additionalInfo?: string;
20
+ messageType?: string;
21
+ }) => Promise<void>;
16
22
  handleLoadingCancel: () => void;
17
23
  input: string;
18
24
  isLoading: boolean;
@@ -13,6 +13,12 @@ declare function useAlquimia(sdk: AlquimiaSDK): {
13
13
  handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
14
14
  handleReplaceInput: (input: string) => void;
15
15
  handleSubmit: (event: React.FormEvent<HTMLFormElement>, traceParentId?: string, sessionId?: string, additionalInfo?: string) => Promise<void>;
16
+ handleSystemMessage: (message: string, options?: {
17
+ traceParentId?: string;
18
+ sessionId?: string;
19
+ additionalInfo?: string;
20
+ messageType?: string;
21
+ }) => Promise<void>;
16
22
  handleLoadingCancel: () => void;
17
23
  input: string;
18
24
  isLoading: boolean;
@@ -56,9 +56,6 @@ function getTopicSessionId(topicId) {
56
56
  function createMessageId() {
57
57
  return Math.floor(Math.random() * 1e6).toString();
58
58
  }
59
- function hasToolSummary(data) {
60
- return data.tool_summary && Object.keys(data.tool_summary).length > 0;
61
- }
62
59
 
63
60
  // src/hooks/alquimia.hook.tsx
64
61
  function useAlquimia(sdk) {
@@ -100,7 +97,10 @@ function useAlquimia(sdk) {
100
97
  additionalInfo,
101
98
  created_at: (/* @__PURE__ */ new Date()).getTime().toString(),
102
99
  loading,
103
- tooler
100
+ tooler: {
101
+ ...updatedMessages[messageIndex]?.tooler || {},
102
+ ...tooler || {}
103
+ }
104
104
  };
105
105
  updatedMessages[messageIndex] = updatedMessage;
106
106
  return updatedMessages;
@@ -120,29 +120,51 @@ function useAlquimia(sdk) {
120
120
  }
121
121
  });
122
122
  }
123
- async function handleSubmit(event, traceParentId, sessionId2, additionalInfo) {
124
- setIsMessageLoading(true);
125
- event.preventDefault();
126
- if (input) {
127
- addUserMessage(input);
128
- const messageId = createMessageId();
129
- setCurrentMessageIdChuncked(messageId);
130
- setStreamingMessageId(messageId);
131
- await sendMessage(input, (chunk) => {
123
+ async function processAndSendMessage(message, options) {
124
+ addUserMessage(message, options?.messageType);
125
+ const messageId = createMessageId();
126
+ setCurrentMessageIdChuncked(messageId);
127
+ setStreamingMessageId(messageId);
128
+ await sendMessage(
129
+ message,
130
+ (chunk) => {
132
131
  processMessageChunk(
133
132
  messageId,
134
133
  chunk?.answer || "",
135
134
  chunk?.error_code,
136
135
  chunk?.error_detail,
137
- additionalInfo,
136
+ options?.additionalInfo,
138
137
  chunk?.loading,
139
138
  chunk?.tooler
140
139
  );
141
- }, traceParentId, sessionId2);
142
- setInput("");
140
+ },
141
+ options?.traceParentId,
142
+ options?.sessionId
143
+ );
144
+ setInput("");
145
+ }
146
+ async function handleSubmit(event, traceParentId, sessionId2, additionalInfo) {
147
+ setIsMessageLoading(true);
148
+ event.preventDefault();
149
+ if (input) {
150
+ await processAndSendMessage(input, {
151
+ traceParentId,
152
+ sessionId: sessionId2,
153
+ additionalInfo
154
+ });
143
155
  }
144
156
  setIsMessageLoading(false);
145
157
  }
158
+ async function handleSystemMessage(message, options) {
159
+ setIsMessageLoading(true);
160
+ await processAndSendMessage(message, {
161
+ messageType: options?.messageType || "system",
162
+ traceParentId: options?.traceParentId,
163
+ sessionId: options?.sessionId,
164
+ additionalInfo: options?.additionalInfo
165
+ });
166
+ setIsMessageLoading(false);
167
+ }
146
168
  function handleInputChange(event) {
147
169
  setInput(event.target.value);
148
170
  }
@@ -157,12 +179,13 @@ function useAlquimia(sdk) {
157
179
  setIsMessageStreaming(false);
158
180
  setInput("");
159
181
  }
160
- function addUserMessage(message) {
182
+ function addUserMessage(message, type) {
161
183
  setMessages((prevMessages) => [
162
184
  ...prevMessages,
163
185
  {
164
186
  content: message,
165
187
  role: "user",
188
+ type,
166
189
  id: createMessageId(),
167
190
  created_at: (/* @__PURE__ */ new Date()).getTime().toString()
168
191
  }
@@ -178,6 +201,12 @@ function useAlquimia(sdk) {
178
201
  }
179
202
  return null;
180
203
  }
204
+ function cleanup(isStreaming, event) {
205
+ setIsMessageStreaming(isStreaming);
206
+ setStreamingMessageId(null);
207
+ setIsStreamingLoading(false);
208
+ event.close();
209
+ }
181
210
  async function sendMessage(message, callBack, traceParentId, sessionId2) {
182
211
  setIsStreamingLoading(true);
183
212
  callBack({
@@ -191,45 +220,10 @@ function useAlquimia(sdk) {
191
220
  try {
192
221
  const response = await sdk.widthConversationId(conversationId || "").sendMessage(message, traceParentId);
193
222
  const eventSource = new EventSource(response.getUrlStream());
194
- const cleanup = (isStreaming) => {
195
- setIsMessageStreaming(isStreaming);
196
- setStreamingMessageId(null);
197
- setIsStreamingLoading(false);
198
- eventSource.close();
199
- };
200
- eventSource.onmessage = (event) => {
201
- const parsedData = JSON.parse(event.data);
202
- if (parsedData.tooler?.length > 0 && !activeTool) {
203
- setActiveTool({ tooler: parsedData.tooler });
204
- }
205
- if (parsedData.error_code) {
206
- callBack({
207
- type: "error",
208
- error_code: parsedData.error_code,
209
- error_detail: parsedData.error_detail
210
- });
211
- cleanup(false);
212
- return;
213
- }
214
- if (parsedData.is_complete) {
215
- cleanup(false);
216
- } else {
217
- setIsStreamingLoading(false);
218
- callBack({
219
- type: "answer",
220
- answer: parsedData.answer,
221
- ...hasToolSummary(parsedData) && {
222
- tooler: {
223
- tool_summary: parsedData.tool_summary,
224
- tool_output: parsedData.tool_output
225
- }
226
- }
227
- });
228
- }
229
- };
223
+ eventSource.onmessage = (event) => handleMessageEvent(event, callBack, eventSource);
230
224
  eventSource.onerror = (event) => {
231
225
  console.error("Stream connection error", event);
232
- cleanup(false);
226
+ cleanup(false, eventSource);
233
227
  callBack({
234
228
  type: "error",
235
229
  error_code: "STREAM_ERROR",
@@ -247,6 +241,60 @@ function useAlquimia(sdk) {
247
241
  });
248
242
  }
249
243
  }
244
+ function parseToolOutput(tool) {
245
+ if (tool.event_class === "ServerToolExecutionCommand") {
246
+ return {
247
+ tooler: {
248
+ tool_summary: { name: tool.data, parameters: { ...tool } }
249
+ }
250
+ };
251
+ } else if (tool.event_class === "ToolExecutionResponse") {
252
+ return {
253
+ tooler: {
254
+ tool_output: { result: tool.data }
255
+ }
256
+ };
257
+ }
258
+ return {};
259
+ }
260
+ function handleMessageEvent(event, callBack, eventSource) {
261
+ const data = JSON.parse(event.data);
262
+ if (data.errors?.length) {
263
+ for (const error of data.errors) {
264
+ console.error("Stream error:", error);
265
+ callBack({
266
+ type: "error",
267
+ error_code: error.error_code,
268
+ error_detail: error.error_detail
269
+ });
270
+ }
271
+ cleanup(false, eventSource);
272
+ return;
273
+ }
274
+ for (const tool of data.tools_output ?? []) {
275
+ callBack({
276
+ type: "answer",
277
+ answer: "",
278
+ tooler: parseToolOutput(tool).tooler
279
+ });
280
+ }
281
+ for (const thinking of data.thinkings ?? []) {
282
+ callBack({
283
+ type: "answer"
284
+ // TBD: add `thinking` payload
285
+ });
286
+ }
287
+ const response = data.response;
288
+ const content = response?.event_class === "AssistantInferenceResponse" ? response?.data?.content : null;
289
+ if (content) {
290
+ setIsStreamingLoading(false);
291
+ callBack({
292
+ type: "answer",
293
+ answer: content
294
+ });
295
+ cleanup(false, eventSource);
296
+ }
297
+ }
250
298
  return {
251
299
  activeTool,
252
300
  cleanMessages,
@@ -254,6 +302,7 @@ function useAlquimia(sdk) {
254
302
  handleInputChange,
255
303
  handleReplaceInput,
256
304
  handleSubmit,
305
+ handleSystemMessage,
257
306
  handleLoadingCancel,
258
307
  input,
259
308
  isLoading,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/alquimia.hook.tsx","../../src/utils/utils.ts","../../src/hooks/useRatings.ts"],"sourcesContent":["export { useAlquimia } from \"./alquimia.hook\";\nexport { useRatings } from \"./useRatings\";","import { Message } from \"ai\";\n\nimport { useEffect, useState } from \"react\";\nimport { AlquimiaSDK } from \"../sdk\";\nimport { AIMessageChunk, AlquimiaMessage, Tooler } from \"../types/type\";\nimport { createMessageId, hasToolSummary } from \"../utils\";\nexport function useAlquimia(sdk: AlquimiaSDK) {\n const [chunkReceived, setChunkReceived] = useState<string>(\"\");\n const [currentMessageIdChuncked, setCurrentMessageIdChuncked] =\n useState<string>(\"\");\n const [input, setInput] = useState<string>(\"\");\n const [isMessageLoading, setIsMessageLoading] = useState<boolean>(false);\n const [isStreamingLoading, setIsStreamingLoading] = useState<boolean>(false);\n const [isMessageStreaming, setIsMessageStreaming] = useState<boolean>(false);\n const [streamingMessageId, setStreamingMessageId] = useState<string | null>(null);\n const [isAudioRecording, setIsAudioRecording] = useState<boolean>(false);\n const [messageMetaData, setMessageMetaData] = useState<any>(null);\n const [messages, setMessages] = useState<AlquimiaMessage[]>([]);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [activeTool, setActiveTool] = useState<any | null>(null);\n const [lastRequest, setLastRequest] = useState<string | null>(null);\n\n const isLoading = isMessageLoading || isStreamingLoading;\n\n useEffect(() => {\n if (chunkReceived)\n processMessageChunk(currentMessageIdChuncked, chunkReceived);\n }, [chunkReceived]);\n\n\n function cleanMessages() {\n setMessages([]);\n }\n async function processMessageChunk(\n messageId: string,\n chunk: string,\n error_code?: string,\n error_detail?: string,\n additionalInfo?: string,\n loading?: boolean,\n tooler?: Tooler\n ) {\n setMessages((currentMessages) => {\n const messageIndex = currentMessages.findIndex(\n (message) => message?.id === messageId\n );\n if (messageIndex !== -1) {\n const updatedMessages = [...currentMessages];\n\n const updatedMessage: AlquimiaMessage = {\n ...updatedMessages[messageIndex],\n content: `${updatedMessages[messageIndex]?.content || \"\"}${chunk}`,\n id: updatedMessages[messageIndex]?.id || \"\",\n role: updatedMessages[messageIndex]?.role || \"assistant\",\n error_code,\n error_detail,\n additionalInfo,\n created_at: new Date().getTime().toString(),\n loading,\n tooler,\n };\n updatedMessages[messageIndex] = updatedMessage;\n return updatedMessages;\n } else {\n return [\n ...currentMessages,\n {\n content: `${chunk}`,\n role: \"assistant\",\n id: messageId,\n error_code,\n error_detail,\n created_at: new Date().getTime().toString(),\n loading,\n },\n ];\n }\n });\n }\n\n async function handleSubmit(event: React.FormEvent<HTMLFormElement>, traceParentId?: string, sessionId?: string, additionalInfo?: string) {\n setIsMessageLoading(true);\n event.preventDefault();\n \n if (input) {\n addUserMessage(input);\n const messageId = createMessageId();\n setCurrentMessageIdChuncked(messageId);\n setStreamingMessageId(messageId);\n await sendMessage(input, (chunk: AIMessageChunk) => {\n processMessageChunk(\n messageId,\n chunk?.answer || \"\",\n chunk?.error_code,\n chunk?.error_detail,\n additionalInfo,\n chunk?.loading,\n chunk?.tooler\n );\n }, traceParentId, sessionId);\n setInput(\"\");\n }\n setIsMessageLoading(false);\n }\n\n function handleInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n setInput(event.target.value);\n }\n\n function handleReplaceInput(input: string) {\n setInput(input);\n }\n\n function populateMessages(messages: Message[]) {\n setMessages(messages);\n }\n\n function handleLoadingCancel() {\n setIsMessageLoading(false);\n setIsMessageStreaming(false);\n setInput(\"\");\n }\n\n function addUserMessage(message: string) {\n setMessages((prevMessages: AlquimiaMessage[]) => [\n ...prevMessages,\n {\n content: message,\n role: \"user\",\n id: createMessageId(),\n created_at: new Date().getTime().toString(),\n },\n ]);\n }\n\n function getCookie(name: string): string | null {\n const cookies = document.cookie.split(\";\");\n for (let cookie of cookies) {\n const [cookieName, cookieValue] = cookie.trim().split(\"=\");\n if (cookieName === name) {\n return decodeURIComponent(cookieValue as string);\n }\n }\n return null;\n }\n\n async function sendMessage(\n message: string,\n callBack: (chunk: AIMessageChunk) => void,\n traceParentId?: string,\n sessionId?: string\n ) { \n setIsStreamingLoading(true);\n callBack({\n type: \"loading\",\n loading: true,\n });\n const conversationId = sessionId || getCookie(\"alquimia-session\");\n setIsMessageStreaming(true);\n setActiveTool(null);\n setLastRequest(message);\n\n try {\n const response = await sdk\n .widthConversationId(conversationId || \"\")\n .sendMessage(message, traceParentId);\n const eventSource = new EventSource(response.getUrlStream());\n\n const cleanup = (isStreaming: boolean) => {\n setIsMessageStreaming(isStreaming);\n setStreamingMessageId(null);\n setIsStreamingLoading(false);\n eventSource.close();\n };\n\n eventSource.onmessage = (event: MessageEvent) => {\n const parsedData = JSON.parse(event.data);\n\n if (parsedData.tooler?.length > 0 && !activeTool) {\n setActiveTool({ tooler: parsedData.tooler });\n }\n\n if (parsedData.error_code) {\n callBack({\n type: \"error\",\n error_code: parsedData.error_code,\n error_detail: parsedData.error_detail,\n });\n cleanup(false);\n return;\n }\n\n if (parsedData.is_complete) {\n cleanup(false);\n } else {\n setIsStreamingLoading(false);\n callBack({\n type: \"answer\",\n answer: parsedData.answer,\n ...(hasToolSummary(parsedData) && {\n tooler: {\n tool_summary: parsedData.tool_summary,\n tool_output: parsedData.tool_output,\n }\n })\n });\n }\n };\n\n eventSource.onerror = (event: Event) => {\n console.error(\"Stream connection error\", event);\n cleanup(false);\n callBack({\n type: \"error\",\n error_code: \"STREAM_ERROR\",\n error_detail: \"Failed to establish stream connection.\",\n });\n };\n } catch (error: any) {\n console.error(\"Error sending message:\", error);\n setIsMessageStreaming(false);\n setStreamingMessageId(null);\n callBack({\n type: \"error\",\n error_code: error.status?.toString() || \"REQUEST_ERROR\",\n error_detail: error.message || \"Error initiating the stream.\",\n });\n }\n }\n\n return {\n activeTool,\n cleanMessages,\n createMessageId,\n handleInputChange,\n handleReplaceInput,\n handleSubmit,\n handleLoadingCancel,\n input,\n isLoading,\n isMessageStreaming,\n streamingMessageId,\n isAudioRecording,\n lastRequest,\n messageMetaData,\n messages,\n populateMessages,\n processMessageChunk,\n sendMessage,\n sessionId,\n setActiveTool,\n setSessionId,\n setLastRequest,\n setIsAudioRecording,\n };\n}\n","import { BaseAPIConfig, ApiError, ConversationsMap } from \"../types/type\";\n\nexport function generateTranslatePrompt(text: string) {\n const prompt = `\n Arrange the following text according to the given object structure and return it as plain json, values summarized to one word, no formatting:\n {\n restrictions: {\n value: [''],\n description: 'Restrictions to certain foods'\n },\n alergies: {\n value: [''],\n description: 'Alergies to certain foods'\n },\n wine_preference: {\n value: [''],\n description: 'Preferences for the wine'\n },\n meal_preference: {\n value: [''],\n description: 'Preferences for the meal'\n }\n }\n\n Text: \"${text}\"\n\n Output:\n `;\n\n return prompt;\n}\n\nexport function getCookies(name: string) {\n if (typeof document === 'undefined') return undefined;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop()?.split(\";\").shift();\n}\n\nexport function generateHeaders(config: BaseAPIConfig): HeadersInit {\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (config.token) {\n headers[\"Authorization\"] = `Bearer ${config.token}`;\n }\n\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers[key] = value;\n });\n }\n\n return headers;\n}\n\nexport function isTextContent(buffer: ArrayBuffer): boolean {\n try {\n const text = new TextDecoder().decode(buffer);\n return /^[\\w\\#\\-\\*\\|\\[\\]\\-\\+\\=]/.test(text.trim());\n } catch {\n return false;\n }\n}\n\nexport function getQueryParam(param: string): string | null {\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(param);\n }\n return null;\n}\n\nexport function defineAssistantId(defaultId: string): string {\n if (typeof window !== 'undefined' && window.location.pathname === '/') {\n const queryAssistantId = getQueryParam('talkwith');\n if (queryAssistantId) {\n localStorage.setItem('assistantId', queryAssistantId);\n return queryAssistantId;\n }\n const storedAssistantId = localStorage.getItem('assistantId');\n return storedAssistantId || defaultId;\n }\n return defaultId;\n}\n\nexport function formatTimeWithUnit(timeMs: number): string {\n if (timeMs >= 1000) {\n return `${(timeMs / 1000).toFixed(1)}s`;\n }\n return `${Math.round(timeMs)}ms`;\n};\n\nexport function serializeAxiosError(error: unknown){\n if (error instanceof Error) {\n const customError = error as ApiError;\n return {\n message: customError?.message, \n name: customError?.name,\n stack: customError?.stack,\n code: customError?.code,\n status: customError?.status,\n };\n }\n return {\n message: String(error),\n name: 'Unknown Error',\n };\n};\n\nexport function parseConversationsMapCookie(cookieValue: string): ConversationsMap {\n try {\n const decodedValue = decodeURIComponent(cookieValue);\n return JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n return {};\n }\n}\n\nexport function getTopicSessionId(topicId: string): string {\n const conversationsStr = getCookies(\"alquimia-sessions\") || \"{}\";\n if (!conversationsStr) {\n const sessionCookie = getCookies(\"alquimia-session\");\n return sessionCookie || \"\";\n }\n\n const conversationsMap = parseConversationsMapCookie(conversationsStr);\n return conversationsMap[topicId] || \"\";\n}\n\nexport function createMessageId() {\n return Math.floor(Math.random() * 1000000).toString();\n}\n\nexport function hasToolSummary(data: any) {\n return data.tool_summary && Object.keys(data.tool_summary).length > 0;\n}\n\n\n","\nimport { useState, useReducer } from \"react\";\nimport { RatingData } from \"../types/type\";\nimport { getTopicSessionId } from \"../utils/utils\";\n\ninterface RatingState {\n ratingStars: number;\n ratingThumbs: \"thumbsUp\" | \"thumbsDown\" | \"\";\n ratingComment: string;\n}\n\ntype RatingAction =\n | { type: \"SET_RATING_STARS\"; payload: number }\n | { type: \"SET_RATING_THUMBS\"; payload: \"thumbsUp\" | \"thumbsDown\" | \"\" }\n | { type: \"SET_RATING_COMMENT\"; payload: string };\n\nconst initialState: RatingState = {\n ratingStars: 0,\n ratingThumbs: \"\",\n ratingComment: \"\",\n};\n\nfunction ratingReducer(state: RatingState, action: RatingAction): RatingState {\n switch (action.type) {\n case \"SET_RATING_STARS\":\n return { ...state, ratingStars: action.payload };\n case \"SET_RATING_THUMBS\":\n return { ...state, ratingThumbs: action.payload };\n case \"SET_RATING_COMMENT\":\n return { ...state, ratingComment: action.payload };\n default:\n return state;\n }\n}\n\ninterface UseRatingsParams {\n assistantId: string;\n topicId: string;\n sendRating: (ratingData: RatingData) => Promise<any>;\n onError?: (componentName: string, error: Error) => void;\n}\n\n\nexport function useRatings({ assistantId, sendRating, topicId }: UseRatingsParams) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [hasReviewed, setHasReviewed] = useState<boolean>(false);\n const [state, dispatch] = useReducer(ratingReducer, initialState);\n\n const setRatingStars = (rating: number) => {\n dispatch({ type: \"SET_RATING_STARS\", payload: rating });\n };\n\n const setRatingThumbs = (rating: \"thumbsUp\" | \"thumbsDown\" | \"\") => {\n dispatch({ type: \"SET_RATING_THUMBS\", payload: rating });\n };\n\n const setRatingComment = (comment: string) => {\n dispatch({ type: \"SET_RATING_COMMENT\", payload: comment });\n };\n\n const thumbsScore = (value: string) => {\n return value === \"thumbsUp\" ? 5 : value === \"thumbsDown\" ? 0 : 0;\n }\n\n const handleRate = async (key: string, value: any | string, onHandleRateSuccess: (success: boolean, err?: string) => void) => {\n setIsLoading(true);\n const sessionId = getTopicSessionId(topicId);\n\n const ratingObj: RatingData = {\n topicId: parseInt(topicId),\n sessionId: sessionId || \"\",\n assistantId: assistantId,\n score: key === \"score\" ? value : thumbsScore(value),\n description: key === \"description\" ? value : state.ratingComment,\n };\n\n try {\n const response = await sendRating(ratingObj);\n if (!response.success) {\n setIsLoading(false);\n onHandleRateSuccess(false, response.error.message);\n return;\n }\n \n if (key === \"score\") {\n setRatingStars(value);\n } else if (key === \"description\") {\n setRatingComment(value);\n }\n setHasReviewed(true);\n setIsLoading(false);\n onHandleRateSuccess(true);\n } catch (err) {\n setIsLoading(false);\n onHandleRateSuccess(false, String(err));\n }\n };\n\n return {\n handleRate,\n ratingStars: state.ratingStars,\n ratingThumbs: state.ratingThumbs,\n ratingComment: state.ratingComment,\n isLoading,\n hasReviewed\n };\n}\n"],"mappings":"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","names":["sessionId","input","messages","import_react"]}
1
+ {"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/alquimia.hook.tsx","../../src/utils/utils.ts","../../src/hooks/useRatings.ts"],"sourcesContent":["export { useAlquimia } from \"./alquimia.hook\";\nexport { useRatings } from \"./useRatings\";","import { Message } from \"ai\";\n\nimport { useEffect, useState } from \"react\";\nimport { AlquimiaSDK } from \"../sdk\";\nimport {\n AIMessageChunk,\n AlquimiaMessage,\n Tooler,\n AlquimiaEventData,\n} from \"../types/type\";\nimport { createMessageId } from \"../utils\";\nexport function useAlquimia(sdk: AlquimiaSDK) {\n const [chunkReceived, setChunkReceived] = useState<string>(\"\");\n const [currentMessageIdChuncked, setCurrentMessageIdChuncked] =\n useState<string>(\"\");\n const [input, setInput] = useState<string>(\"\");\n const [isMessageLoading, setIsMessageLoading] = useState<boolean>(false);\n const [isStreamingLoading, setIsStreamingLoading] = useState<boolean>(false);\n const [isMessageStreaming, setIsMessageStreaming] = useState<boolean>(false);\n const [streamingMessageId, setStreamingMessageId] = useState<string | null>(null);\n const [isAudioRecording, setIsAudioRecording] = useState<boolean>(false);\n const [messageMetaData, setMessageMetaData] = useState<any>(null);\n const [messages, setMessages] = useState<AlquimiaMessage[]>([]);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [activeTool, setActiveTool] = useState<any | null>(null);\n const [lastRequest, setLastRequest] = useState<string | null>(null);\n\n const isLoading = isMessageLoading || isStreamingLoading;\n\n useEffect(() => {\n if (chunkReceived)\n processMessageChunk(currentMessageIdChuncked, chunkReceived);\n }, [chunkReceived]);\n\n\n function cleanMessages() {\n setMessages([]);\n }\n async function processMessageChunk(\n messageId: string,\n chunk: string,\n error_code?: string,\n error_detail?: string,\n additionalInfo?: string,\n loading?: boolean,\n tooler?: Tooler\n ) {\n setMessages((currentMessages) => {\n const messageIndex = currentMessages.findIndex(\n (message) => message?.id === messageId\n );\n if (messageIndex !== -1) {\n const updatedMessages = [...currentMessages];\n\n const updatedMessage: AlquimiaMessage = {\n ...updatedMessages[messageIndex],\n content: `${updatedMessages[messageIndex]?.content || \"\"}${chunk}`,\n id: updatedMessages[messageIndex]?.id || \"\",\n role: updatedMessages[messageIndex]?.role || \"assistant\",\n error_code,\n error_detail,\n additionalInfo,\n created_at: new Date().getTime().toString(),\n loading,\n tooler: {\n ...(updatedMessages[messageIndex]?.tooler || {}),\n ...(tooler || {}),\n }\n };\n updatedMessages[messageIndex] = updatedMessage;\n return updatedMessages;\n } else {\n return [\n ...currentMessages,\n {\n content: `${chunk}`,\n role: \"assistant\",\n id: messageId,\n error_code,\n error_detail,\n created_at: new Date().getTime().toString(),\n loading,\n },\n ];\n }\n });\n }\n\n async function processAndSendMessage(\n message: string,\n options?: {\n messageType?: string;\n traceParentId?: string;\n sessionId?: string;\n additionalInfo?: string;\n }\n ) {\n addUserMessage(message, options?.messageType);\n \n const messageId = createMessageId();\n setCurrentMessageIdChuncked(messageId);\n setStreamingMessageId(messageId);\n \n await sendMessage(\n message,\n (chunk: AIMessageChunk) => {\n processMessageChunk(\n messageId,\n chunk?.answer || \"\",\n chunk?.error_code,\n chunk?.error_detail,\n options?.additionalInfo,\n chunk?.loading,\n chunk?.tooler\n );\n },\n options?.traceParentId,\n options?.sessionId\n );\n \n setInput(\"\");\n }\n\n async function handleSubmit(\n event: React.FormEvent<HTMLFormElement>,\n traceParentId?: string,\n sessionId?: string,\n additionalInfo?: string\n ) {\n setIsMessageLoading(true);\n event.preventDefault();\n \n if (input) {\n await processAndSendMessage(input, {\n traceParentId,\n sessionId,\n additionalInfo,\n });\n }\n \n setIsMessageLoading(false);\n }\n \n async function handleSystemMessage(\n message: string,\n options?: {\n traceParentId?: string;\n sessionId?: string;\n additionalInfo?: string;\n messageType?: string;\n }\n ) {\n setIsMessageLoading(true);\n \n await processAndSendMessage(message, {\n messageType: options?.messageType || \"system\",\n traceParentId: options?.traceParentId,\n sessionId: options?.sessionId,\n additionalInfo: options?.additionalInfo,\n });\n \n setIsMessageLoading(false);\n }\n\n function handleInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n setInput(event.target.value);\n }\n\n function handleReplaceInput(input: string) {\n setInput(input);\n }\n\n function populateMessages(messages: Message[]) {\n setMessages(messages);\n }\n\n function handleLoadingCancel() {\n setIsMessageLoading(false);\n setIsMessageStreaming(false);\n setInput(\"\");\n }\n\n function addUserMessage(message: string, type?: string) {\n setMessages((prevMessages: AlquimiaMessage[]) => [\n ...prevMessages,\n {\n content: message,\n role: \"user\",\n type: type,\n id: createMessageId(),\n created_at: new Date().getTime().toString(),\n },\n ]);\n }\n\n function getCookie(name: string): string | null {\n const cookies = document.cookie.split(\";\");\n for (let cookie of cookies) {\n const [cookieName, cookieValue] = cookie.trim().split(\"=\");\n if (cookieName === name) {\n return decodeURIComponent(cookieValue as string);\n }\n }\n return null;\n }\n\n function cleanup(isStreaming: boolean, event: EventSource) {\n setIsMessageStreaming(isStreaming);\n setStreamingMessageId(null);\n setIsStreamingLoading(false);\n event.close();\n }\n\n async function sendMessage(\n message: string,\n callBack: (chunk: AIMessageChunk) => void,\n traceParentId?: string,\n sessionId?: string\n ) { \n setIsStreamingLoading(true);\n callBack({\n type: \"loading\",\n loading: true,\n });\n const conversationId = sessionId || getCookie(\"alquimia-session\");\n setIsMessageStreaming(true);\n setActiveTool(null);\n setLastRequest(message);\n\n try {\n const response = await sdk\n .widthConversationId(conversationId || \"\")\n .sendMessage(message, traceParentId);\n const eventSource = new EventSource(response.getUrlStream());\n\n eventSource.onmessage = (event) =>\n handleMessageEvent(event, callBack, eventSource);\n\n eventSource.onerror = (event) => {\n console.error(\"Stream connection error\", event);\n cleanup(false, eventSource);\n callBack({\n type: \"error\",\n error_code: \"STREAM_ERROR\",\n error_detail: \"Failed to establish stream connection.\",\n });\n };\n } catch (error: any) {\n console.error(\"Error sending message:\", error);\n setIsMessageStreaming(false);\n setStreamingMessageId(null);\n callBack({\n type: \"error\",\n error_code: error.status?.toString() || \"REQUEST_ERROR\",\n error_detail: error.message || \"Error initiating the stream.\",\n });\n }\n }\n\n function parseToolOutput(tool: any) {\n if (tool.event_class === \"ServerToolExecutionCommand\") {\n return {\n tooler: {\n tool_summary: { name: tool.data, parameters: {...tool} },\n },\n };\n } else if (tool.event_class === \"ToolExecutionResponse\") {\n return {\n tooler: {\n tool_output: { result: tool.data },\n },\n };\n }\n return {};\n }\n\n function handleMessageEvent(\n event: MessageEvent,\n callBack: (chunk: AIMessageChunk) => void,\n eventSource: EventSource\n ) {\n const data: AlquimiaEventData = JSON.parse(event.data);\n \n if (data.errors?.length) {\n for (const error of data.errors) {\n console.error(\"Stream error:\", error);\n callBack({\n type: \"error\",\n error_code: error.error_code,\n error_detail: error.error_detail,\n });\n }\n cleanup(false, eventSource);\n return;\n }\n \n for (const tool of data.tools_output ?? []) {\n callBack({\n type: \"answer\",\n answer: \"\",\n tooler: parseToolOutput(tool).tooler,\n });\n }\n \n for (const thinking of data.thinkings ?? []) {\n callBack({\n type: \"answer\",\n // TBD: add `thinking` payload\n });\n }\n \n const response = data.response;\n const content = response?.event_class === \"AssistantInferenceResponse\"\n ? response?.data?.content\n : null;\n \n if (content) {\n setIsStreamingLoading(false);\n callBack({\n type: \"answer\",\n answer: content,\n });\n cleanup(false, eventSource);\n }\n }\n\n return {\n activeTool,\n cleanMessages,\n createMessageId,\n handleInputChange,\n handleReplaceInput,\n handleSubmit,\n handleSystemMessage,\n handleLoadingCancel,\n input,\n isLoading,\n isMessageStreaming,\n streamingMessageId,\n isAudioRecording,\n lastRequest,\n messageMetaData,\n messages,\n populateMessages,\n processMessageChunk,\n sendMessage,\n sessionId,\n setActiveTool,\n setSessionId,\n setLastRequest,\n setIsAudioRecording,\n };\n}\n","import { BaseAPIConfig, ApiError, ConversationsMap } from \"../types/type\";\n\nexport function generateTranslatePrompt(text: string) {\n const prompt = `\n Arrange the following text according to the given object structure and return it as plain json, values summarized to one word, no formatting:\n {\n restrictions: {\n value: [''],\n description: 'Restrictions to certain foods'\n },\n alergies: {\n value: [''],\n description: 'Alergies to certain foods'\n },\n wine_preference: {\n value: [''],\n description: 'Preferences for the wine'\n },\n meal_preference: {\n value: [''],\n description: 'Preferences for the meal'\n }\n }\n\n Text: \"${text}\"\n\n Output:\n `;\n\n return prompt;\n}\n\nexport function getCookies(name: string) {\n if (typeof document === 'undefined') return undefined;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop()?.split(\";\").shift();\n}\n\nexport function generateHeaders(config: BaseAPIConfig): HeadersInit {\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (config.token) {\n headers[\"Authorization\"] = `Bearer ${config.token}`;\n }\n\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers[key] = value;\n });\n }\n\n return headers;\n}\n\nexport function isTextContent(buffer: ArrayBuffer): boolean {\n try {\n const text = new TextDecoder().decode(buffer);\n return /^[\\w\\#\\-\\*\\|\\[\\]\\-\\+\\=]/.test(text.trim());\n } catch {\n return false;\n }\n}\n\nexport function getQueryParam(param: string): string | null {\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(param);\n }\n return null;\n}\n\nexport function defineAssistantId(defaultId: string): string {\n if (typeof window !== 'undefined' && window.location.pathname === '/') {\n const queryAssistantId = getQueryParam('talkwith');\n if (queryAssistantId) {\n localStorage.setItem('assistantId', queryAssistantId);\n return queryAssistantId;\n }\n const storedAssistantId = localStorage.getItem('assistantId');\n return storedAssistantId || defaultId;\n }\n return defaultId;\n}\n\nexport function formatTimeWithUnit(timeMs: number): string {\n if (timeMs >= 1000) {\n return `${(timeMs / 1000).toFixed(1)}s`;\n }\n return `${Math.round(timeMs)}ms`;\n};\n\nexport function serializeAxiosError(error: unknown){\n if (error instanceof Error) {\n const customError = error as ApiError;\n return {\n message: customError?.message, \n name: customError?.name,\n stack: customError?.stack,\n code: customError?.code,\n status: customError?.status,\n };\n }\n return {\n message: String(error),\n name: 'Unknown Error',\n };\n};\n\nexport function parseConversationsMapCookie(cookieValue: string): ConversationsMap {\n try {\n const decodedValue = decodeURIComponent(cookieValue);\n return JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n return {};\n }\n}\n\nexport function getTopicSessionId(topicId: string): string {\n const conversationsStr = getCookies(\"alquimia-sessions\") || \"{}\";\n if (!conversationsStr) {\n const sessionCookie = getCookies(\"alquimia-session\");\n return sessionCookie || \"\";\n }\n\n const conversationsMap = parseConversationsMapCookie(conversationsStr);\n return conversationsMap[topicId] || \"\";\n}\n\nexport function createMessageId() {\n return Math.floor(Math.random() * 1000000).toString();\n}\n\nexport function hasToolSummary(data: any) {\n return data.tool_summary && Object.keys(data.tool_summary).length > 0;\n}\n\n\n","\nimport { useState, useReducer } from \"react\";\nimport { RatingData } from \"../types/type\";\nimport { getTopicSessionId } from \"../utils/utils\";\n\ninterface RatingState {\n ratingStars: number;\n ratingThumbs: \"thumbsUp\" | \"thumbsDown\" | \"\";\n ratingComment: string;\n}\n\ntype RatingAction =\n | { type: \"SET_RATING_STARS\"; payload: number }\n | { type: \"SET_RATING_THUMBS\"; payload: \"thumbsUp\" | \"thumbsDown\" | \"\" }\n | { type: \"SET_RATING_COMMENT\"; payload: string };\n\nconst initialState: RatingState = {\n ratingStars: 0,\n ratingThumbs: \"\",\n ratingComment: \"\",\n};\n\nfunction ratingReducer(state: RatingState, action: RatingAction): RatingState {\n switch (action.type) {\n case \"SET_RATING_STARS\":\n return { ...state, ratingStars: action.payload };\n case \"SET_RATING_THUMBS\":\n return { ...state, ratingThumbs: action.payload };\n case \"SET_RATING_COMMENT\":\n return { ...state, ratingComment: action.payload };\n default:\n return state;\n }\n}\n\ninterface UseRatingsParams {\n assistantId: string;\n topicId: string;\n sendRating: (ratingData: RatingData) => Promise<any>;\n onError?: (componentName: string, error: Error) => void;\n}\n\n\nexport function useRatings({ assistantId, sendRating, topicId }: UseRatingsParams) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [hasReviewed, setHasReviewed] = useState<boolean>(false);\n const [state, dispatch] = useReducer(ratingReducer, initialState);\n\n const setRatingStars = (rating: number) => {\n dispatch({ type: \"SET_RATING_STARS\", payload: rating });\n };\n\n const setRatingThumbs = (rating: \"thumbsUp\" | \"thumbsDown\" | \"\") => {\n dispatch({ type: \"SET_RATING_THUMBS\", payload: rating });\n };\n\n const setRatingComment = (comment: string) => {\n dispatch({ type: \"SET_RATING_COMMENT\", payload: comment });\n };\n\n const thumbsScore = (value: string) => {\n return value === \"thumbsUp\" ? 5 : value === \"thumbsDown\" ? 0 : 0;\n }\n\n const handleRate = async (key: string, value: any | string, onHandleRateSuccess: (success: boolean, err?: string) => void) => {\n setIsLoading(true);\n const sessionId = getTopicSessionId(topicId);\n\n const ratingObj: RatingData = {\n topicId: parseInt(topicId),\n sessionId: sessionId || \"\",\n assistantId: assistantId,\n score: key === \"score\" ? value : thumbsScore(value),\n description: key === \"description\" ? value : state.ratingComment,\n };\n\n try {\n const response = await sendRating(ratingObj);\n if (!response.success) {\n setIsLoading(false);\n onHandleRateSuccess(false, response.error.message);\n return;\n }\n \n if (key === \"score\") {\n setRatingStars(value);\n } else if (key === \"description\") {\n setRatingComment(value);\n }\n setHasReviewed(true);\n setIsLoading(false);\n onHandleRateSuccess(true);\n } catch (err) {\n setIsLoading(false);\n onHandleRateSuccess(false, String(err));\n }\n };\n\n return {\n handleRate,\n ratingStars: state.ratingStars,\n ratingThumbs: state.ratingThumbs,\n ratingComment: state.ratingComment,\n isLoading,\n hasReviewed\n };\n}\n"],"mappings":"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","names":["sessionId","input","messages","import_react"]}
@@ -29,9 +29,6 @@ function getTopicSessionId(topicId) {
29
29
  function createMessageId() {
30
30
  return Math.floor(Math.random() * 1e6).toString();
31
31
  }
32
- function hasToolSummary(data) {
33
- return data.tool_summary && Object.keys(data.tool_summary).length > 0;
34
- }
35
32
 
36
33
  // src/hooks/alquimia.hook.tsx
37
34
  function useAlquimia(sdk) {
@@ -73,7 +70,10 @@ function useAlquimia(sdk) {
73
70
  additionalInfo,
74
71
  created_at: (/* @__PURE__ */ new Date()).getTime().toString(),
75
72
  loading,
76
- tooler
73
+ tooler: {
74
+ ...updatedMessages[messageIndex]?.tooler || {},
75
+ ...tooler || {}
76
+ }
77
77
  };
78
78
  updatedMessages[messageIndex] = updatedMessage;
79
79
  return updatedMessages;
@@ -93,29 +93,51 @@ function useAlquimia(sdk) {
93
93
  }
94
94
  });
95
95
  }
96
- async function handleSubmit(event, traceParentId, sessionId2, additionalInfo) {
97
- setIsMessageLoading(true);
98
- event.preventDefault();
99
- if (input) {
100
- addUserMessage(input);
101
- const messageId = createMessageId();
102
- setCurrentMessageIdChuncked(messageId);
103
- setStreamingMessageId(messageId);
104
- await sendMessage(input, (chunk) => {
96
+ async function processAndSendMessage(message, options) {
97
+ addUserMessage(message, options?.messageType);
98
+ const messageId = createMessageId();
99
+ setCurrentMessageIdChuncked(messageId);
100
+ setStreamingMessageId(messageId);
101
+ await sendMessage(
102
+ message,
103
+ (chunk) => {
105
104
  processMessageChunk(
106
105
  messageId,
107
106
  chunk?.answer || "",
108
107
  chunk?.error_code,
109
108
  chunk?.error_detail,
110
- additionalInfo,
109
+ options?.additionalInfo,
111
110
  chunk?.loading,
112
111
  chunk?.tooler
113
112
  );
114
- }, traceParentId, sessionId2);
115
- setInput("");
113
+ },
114
+ options?.traceParentId,
115
+ options?.sessionId
116
+ );
117
+ setInput("");
118
+ }
119
+ async function handleSubmit(event, traceParentId, sessionId2, additionalInfo) {
120
+ setIsMessageLoading(true);
121
+ event.preventDefault();
122
+ if (input) {
123
+ await processAndSendMessage(input, {
124
+ traceParentId,
125
+ sessionId: sessionId2,
126
+ additionalInfo
127
+ });
116
128
  }
117
129
  setIsMessageLoading(false);
118
130
  }
131
+ async function handleSystemMessage(message, options) {
132
+ setIsMessageLoading(true);
133
+ await processAndSendMessage(message, {
134
+ messageType: options?.messageType || "system",
135
+ traceParentId: options?.traceParentId,
136
+ sessionId: options?.sessionId,
137
+ additionalInfo: options?.additionalInfo
138
+ });
139
+ setIsMessageLoading(false);
140
+ }
119
141
  function handleInputChange(event) {
120
142
  setInput(event.target.value);
121
143
  }
@@ -130,12 +152,13 @@ function useAlquimia(sdk) {
130
152
  setIsMessageStreaming(false);
131
153
  setInput("");
132
154
  }
133
- function addUserMessage(message) {
155
+ function addUserMessage(message, type) {
134
156
  setMessages((prevMessages) => [
135
157
  ...prevMessages,
136
158
  {
137
159
  content: message,
138
160
  role: "user",
161
+ type,
139
162
  id: createMessageId(),
140
163
  created_at: (/* @__PURE__ */ new Date()).getTime().toString()
141
164
  }
@@ -151,6 +174,12 @@ function useAlquimia(sdk) {
151
174
  }
152
175
  return null;
153
176
  }
177
+ function cleanup(isStreaming, event) {
178
+ setIsMessageStreaming(isStreaming);
179
+ setStreamingMessageId(null);
180
+ setIsStreamingLoading(false);
181
+ event.close();
182
+ }
154
183
  async function sendMessage(message, callBack, traceParentId, sessionId2) {
155
184
  setIsStreamingLoading(true);
156
185
  callBack({
@@ -164,45 +193,10 @@ function useAlquimia(sdk) {
164
193
  try {
165
194
  const response = await sdk.widthConversationId(conversationId || "").sendMessage(message, traceParentId);
166
195
  const eventSource = new EventSource(response.getUrlStream());
167
- const cleanup = (isStreaming) => {
168
- setIsMessageStreaming(isStreaming);
169
- setStreamingMessageId(null);
170
- setIsStreamingLoading(false);
171
- eventSource.close();
172
- };
173
- eventSource.onmessage = (event) => {
174
- const parsedData = JSON.parse(event.data);
175
- if (parsedData.tooler?.length > 0 && !activeTool) {
176
- setActiveTool({ tooler: parsedData.tooler });
177
- }
178
- if (parsedData.error_code) {
179
- callBack({
180
- type: "error",
181
- error_code: parsedData.error_code,
182
- error_detail: parsedData.error_detail
183
- });
184
- cleanup(false);
185
- return;
186
- }
187
- if (parsedData.is_complete) {
188
- cleanup(false);
189
- } else {
190
- setIsStreamingLoading(false);
191
- callBack({
192
- type: "answer",
193
- answer: parsedData.answer,
194
- ...hasToolSummary(parsedData) && {
195
- tooler: {
196
- tool_summary: parsedData.tool_summary,
197
- tool_output: parsedData.tool_output
198
- }
199
- }
200
- });
201
- }
202
- };
196
+ eventSource.onmessage = (event) => handleMessageEvent(event, callBack, eventSource);
203
197
  eventSource.onerror = (event) => {
204
198
  console.error("Stream connection error", event);
205
- cleanup(false);
199
+ cleanup(false, eventSource);
206
200
  callBack({
207
201
  type: "error",
208
202
  error_code: "STREAM_ERROR",
@@ -220,6 +214,60 @@ function useAlquimia(sdk) {
220
214
  });
221
215
  }
222
216
  }
217
+ function parseToolOutput(tool) {
218
+ if (tool.event_class === "ServerToolExecutionCommand") {
219
+ return {
220
+ tooler: {
221
+ tool_summary: { name: tool.data, parameters: { ...tool } }
222
+ }
223
+ };
224
+ } else if (tool.event_class === "ToolExecutionResponse") {
225
+ return {
226
+ tooler: {
227
+ tool_output: { result: tool.data }
228
+ }
229
+ };
230
+ }
231
+ return {};
232
+ }
233
+ function handleMessageEvent(event, callBack, eventSource) {
234
+ const data = JSON.parse(event.data);
235
+ if (data.errors?.length) {
236
+ for (const error of data.errors) {
237
+ console.error("Stream error:", error);
238
+ callBack({
239
+ type: "error",
240
+ error_code: error.error_code,
241
+ error_detail: error.error_detail
242
+ });
243
+ }
244
+ cleanup(false, eventSource);
245
+ return;
246
+ }
247
+ for (const tool of data.tools_output ?? []) {
248
+ callBack({
249
+ type: "answer",
250
+ answer: "",
251
+ tooler: parseToolOutput(tool).tooler
252
+ });
253
+ }
254
+ for (const thinking of data.thinkings ?? []) {
255
+ callBack({
256
+ type: "answer"
257
+ // TBD: add `thinking` payload
258
+ });
259
+ }
260
+ const response = data.response;
261
+ const content = response?.event_class === "AssistantInferenceResponse" ? response?.data?.content : null;
262
+ if (content) {
263
+ setIsStreamingLoading(false);
264
+ callBack({
265
+ type: "answer",
266
+ answer: content
267
+ });
268
+ cleanup(false, eventSource);
269
+ }
270
+ }
223
271
  return {
224
272
  activeTool,
225
273
  cleanMessages,
@@ -227,6 +275,7 @@ function useAlquimia(sdk) {
227
275
  handleInputChange,
228
276
  handleReplaceInput,
229
277
  handleSubmit,
278
+ handleSystemMessage,
230
279
  handleLoadingCancel,
231
280
  input,
232
281
  isLoading,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/alquimia.hook.tsx","../../src/utils/utils.ts","../../src/hooks/useRatings.ts"],"sourcesContent":["import { Message } from \"ai\";\n\nimport { useEffect, useState } from \"react\";\nimport { AlquimiaSDK } from \"../sdk\";\nimport { AIMessageChunk, AlquimiaMessage, Tooler } from \"../types/type\";\nimport { createMessageId, hasToolSummary } from \"../utils\";\nexport function useAlquimia(sdk: AlquimiaSDK) {\n const [chunkReceived, setChunkReceived] = useState<string>(\"\");\n const [currentMessageIdChuncked, setCurrentMessageIdChuncked] =\n useState<string>(\"\");\n const [input, setInput] = useState<string>(\"\");\n const [isMessageLoading, setIsMessageLoading] = useState<boolean>(false);\n const [isStreamingLoading, setIsStreamingLoading] = useState<boolean>(false);\n const [isMessageStreaming, setIsMessageStreaming] = useState<boolean>(false);\n const [streamingMessageId, setStreamingMessageId] = useState<string | null>(null);\n const [isAudioRecording, setIsAudioRecording] = useState<boolean>(false);\n const [messageMetaData, setMessageMetaData] = useState<any>(null);\n const [messages, setMessages] = useState<AlquimiaMessage[]>([]);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [activeTool, setActiveTool] = useState<any | null>(null);\n const [lastRequest, setLastRequest] = useState<string | null>(null);\n\n const isLoading = isMessageLoading || isStreamingLoading;\n\n useEffect(() => {\n if (chunkReceived)\n processMessageChunk(currentMessageIdChuncked, chunkReceived);\n }, [chunkReceived]);\n\n\n function cleanMessages() {\n setMessages([]);\n }\n async function processMessageChunk(\n messageId: string,\n chunk: string,\n error_code?: string,\n error_detail?: string,\n additionalInfo?: string,\n loading?: boolean,\n tooler?: Tooler\n ) {\n setMessages((currentMessages) => {\n const messageIndex = currentMessages.findIndex(\n (message) => message?.id === messageId\n );\n if (messageIndex !== -1) {\n const updatedMessages = [...currentMessages];\n\n const updatedMessage: AlquimiaMessage = {\n ...updatedMessages[messageIndex],\n content: `${updatedMessages[messageIndex]?.content || \"\"}${chunk}`,\n id: updatedMessages[messageIndex]?.id || \"\",\n role: updatedMessages[messageIndex]?.role || \"assistant\",\n error_code,\n error_detail,\n additionalInfo,\n created_at: new Date().getTime().toString(),\n loading,\n tooler,\n };\n updatedMessages[messageIndex] = updatedMessage;\n return updatedMessages;\n } else {\n return [\n ...currentMessages,\n {\n content: `${chunk}`,\n role: \"assistant\",\n id: messageId,\n error_code,\n error_detail,\n created_at: new Date().getTime().toString(),\n loading,\n },\n ];\n }\n });\n }\n\n async function handleSubmit(event: React.FormEvent<HTMLFormElement>, traceParentId?: string, sessionId?: string, additionalInfo?: string) {\n setIsMessageLoading(true);\n event.preventDefault();\n \n if (input) {\n addUserMessage(input);\n const messageId = createMessageId();\n setCurrentMessageIdChuncked(messageId);\n setStreamingMessageId(messageId);\n await sendMessage(input, (chunk: AIMessageChunk) => {\n processMessageChunk(\n messageId,\n chunk?.answer || \"\",\n chunk?.error_code,\n chunk?.error_detail,\n additionalInfo,\n chunk?.loading,\n chunk?.tooler\n );\n }, traceParentId, sessionId);\n setInput(\"\");\n }\n setIsMessageLoading(false);\n }\n\n function handleInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n setInput(event.target.value);\n }\n\n function handleReplaceInput(input: string) {\n setInput(input);\n }\n\n function populateMessages(messages: Message[]) {\n setMessages(messages);\n }\n\n function handleLoadingCancel() {\n setIsMessageLoading(false);\n setIsMessageStreaming(false);\n setInput(\"\");\n }\n\n function addUserMessage(message: string) {\n setMessages((prevMessages: AlquimiaMessage[]) => [\n ...prevMessages,\n {\n content: message,\n role: \"user\",\n id: createMessageId(),\n created_at: new Date().getTime().toString(),\n },\n ]);\n }\n\n function getCookie(name: string): string | null {\n const cookies = document.cookie.split(\";\");\n for (let cookie of cookies) {\n const [cookieName, cookieValue] = cookie.trim().split(\"=\");\n if (cookieName === name) {\n return decodeURIComponent(cookieValue as string);\n }\n }\n return null;\n }\n\n async function sendMessage(\n message: string,\n callBack: (chunk: AIMessageChunk) => void,\n traceParentId?: string,\n sessionId?: string\n ) { \n setIsStreamingLoading(true);\n callBack({\n type: \"loading\",\n loading: true,\n });\n const conversationId = sessionId || getCookie(\"alquimia-session\");\n setIsMessageStreaming(true);\n setActiveTool(null);\n setLastRequest(message);\n\n try {\n const response = await sdk\n .widthConversationId(conversationId || \"\")\n .sendMessage(message, traceParentId);\n const eventSource = new EventSource(response.getUrlStream());\n\n const cleanup = (isStreaming: boolean) => {\n setIsMessageStreaming(isStreaming);\n setStreamingMessageId(null);\n setIsStreamingLoading(false);\n eventSource.close();\n };\n\n eventSource.onmessage = (event: MessageEvent) => {\n const parsedData = JSON.parse(event.data);\n\n if (parsedData.tooler?.length > 0 && !activeTool) {\n setActiveTool({ tooler: parsedData.tooler });\n }\n\n if (parsedData.error_code) {\n callBack({\n type: \"error\",\n error_code: parsedData.error_code,\n error_detail: parsedData.error_detail,\n });\n cleanup(false);\n return;\n }\n\n if (parsedData.is_complete) {\n cleanup(false);\n } else {\n setIsStreamingLoading(false);\n callBack({\n type: \"answer\",\n answer: parsedData.answer,\n ...(hasToolSummary(parsedData) && {\n tooler: {\n tool_summary: parsedData.tool_summary,\n tool_output: parsedData.tool_output,\n }\n })\n });\n }\n };\n\n eventSource.onerror = (event: Event) => {\n console.error(\"Stream connection error\", event);\n cleanup(false);\n callBack({\n type: \"error\",\n error_code: \"STREAM_ERROR\",\n error_detail: \"Failed to establish stream connection.\",\n });\n };\n } catch (error: any) {\n console.error(\"Error sending message:\", error);\n setIsMessageStreaming(false);\n setStreamingMessageId(null);\n callBack({\n type: \"error\",\n error_code: error.status?.toString() || \"REQUEST_ERROR\",\n error_detail: error.message || \"Error initiating the stream.\",\n });\n }\n }\n\n return {\n activeTool,\n cleanMessages,\n createMessageId,\n handleInputChange,\n handleReplaceInput,\n handleSubmit,\n handleLoadingCancel,\n input,\n isLoading,\n isMessageStreaming,\n streamingMessageId,\n isAudioRecording,\n lastRequest,\n messageMetaData,\n messages,\n populateMessages,\n processMessageChunk,\n sendMessage,\n sessionId,\n setActiveTool,\n setSessionId,\n setLastRequest,\n setIsAudioRecording,\n };\n}\n","import { BaseAPIConfig, ApiError, ConversationsMap } from \"../types/type\";\n\nexport function generateTranslatePrompt(text: string) {\n const prompt = `\n Arrange the following text according to the given object structure and return it as plain json, values summarized to one word, no formatting:\n {\n restrictions: {\n value: [''],\n description: 'Restrictions to certain foods'\n },\n alergies: {\n value: [''],\n description: 'Alergies to certain foods'\n },\n wine_preference: {\n value: [''],\n description: 'Preferences for the wine'\n },\n meal_preference: {\n value: [''],\n description: 'Preferences for the meal'\n }\n }\n\n Text: \"${text}\"\n\n Output:\n `;\n\n return prompt;\n}\n\nexport function getCookies(name: string) {\n if (typeof document === 'undefined') return undefined;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop()?.split(\";\").shift();\n}\n\nexport function generateHeaders(config: BaseAPIConfig): HeadersInit {\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (config.token) {\n headers[\"Authorization\"] = `Bearer ${config.token}`;\n }\n\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers[key] = value;\n });\n }\n\n return headers;\n}\n\nexport function isTextContent(buffer: ArrayBuffer): boolean {\n try {\n const text = new TextDecoder().decode(buffer);\n return /^[\\w\\#\\-\\*\\|\\[\\]\\-\\+\\=]/.test(text.trim());\n } catch {\n return false;\n }\n}\n\nexport function getQueryParam(param: string): string | null {\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(param);\n }\n return null;\n}\n\nexport function defineAssistantId(defaultId: string): string {\n if (typeof window !== 'undefined' && window.location.pathname === '/') {\n const queryAssistantId = getQueryParam('talkwith');\n if (queryAssistantId) {\n localStorage.setItem('assistantId', queryAssistantId);\n return queryAssistantId;\n }\n const storedAssistantId = localStorage.getItem('assistantId');\n return storedAssistantId || defaultId;\n }\n return defaultId;\n}\n\nexport function formatTimeWithUnit(timeMs: number): string {\n if (timeMs >= 1000) {\n return `${(timeMs / 1000).toFixed(1)}s`;\n }\n return `${Math.round(timeMs)}ms`;\n};\n\nexport function serializeAxiosError(error: unknown){\n if (error instanceof Error) {\n const customError = error as ApiError;\n return {\n message: customError?.message, \n name: customError?.name,\n stack: customError?.stack,\n code: customError?.code,\n status: customError?.status,\n };\n }\n return {\n message: String(error),\n name: 'Unknown Error',\n };\n};\n\nexport function parseConversationsMapCookie(cookieValue: string): ConversationsMap {\n try {\n const decodedValue = decodeURIComponent(cookieValue);\n return JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n return {};\n }\n}\n\nexport function getTopicSessionId(topicId: string): string {\n const conversationsStr = getCookies(\"alquimia-sessions\") || \"{}\";\n if (!conversationsStr) {\n const sessionCookie = getCookies(\"alquimia-session\");\n return sessionCookie || \"\";\n }\n\n const conversationsMap = parseConversationsMapCookie(conversationsStr);\n return conversationsMap[topicId] || \"\";\n}\n\nexport function createMessageId() {\n return Math.floor(Math.random() * 1000000).toString();\n}\n\nexport function hasToolSummary(data: any) {\n return data.tool_summary && Object.keys(data.tool_summary).length > 0;\n}\n\n\n","\nimport { useState, useReducer } from \"react\";\nimport { RatingData } from \"../types/type\";\nimport { getTopicSessionId } from \"../utils/utils\";\n\ninterface RatingState {\n ratingStars: number;\n ratingThumbs: \"thumbsUp\" | \"thumbsDown\" | \"\";\n ratingComment: string;\n}\n\ntype RatingAction =\n | { type: \"SET_RATING_STARS\"; payload: number }\n | { type: \"SET_RATING_THUMBS\"; payload: \"thumbsUp\" | \"thumbsDown\" | \"\" }\n | { type: \"SET_RATING_COMMENT\"; payload: string };\n\nconst initialState: RatingState = {\n ratingStars: 0,\n ratingThumbs: \"\",\n ratingComment: \"\",\n};\n\nfunction ratingReducer(state: RatingState, action: RatingAction): RatingState {\n switch (action.type) {\n case \"SET_RATING_STARS\":\n return { ...state, ratingStars: action.payload };\n case \"SET_RATING_THUMBS\":\n return { ...state, ratingThumbs: action.payload };\n case \"SET_RATING_COMMENT\":\n return { ...state, ratingComment: action.payload };\n default:\n return state;\n }\n}\n\ninterface UseRatingsParams {\n assistantId: string;\n topicId: string;\n sendRating: (ratingData: RatingData) => Promise<any>;\n onError?: (componentName: string, error: Error) => void;\n}\n\n\nexport function useRatings({ assistantId, sendRating, topicId }: UseRatingsParams) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [hasReviewed, setHasReviewed] = useState<boolean>(false);\n const [state, dispatch] = useReducer(ratingReducer, initialState);\n\n const setRatingStars = (rating: number) => {\n dispatch({ type: \"SET_RATING_STARS\", payload: rating });\n };\n\n const setRatingThumbs = (rating: \"thumbsUp\" | \"thumbsDown\" | \"\") => {\n dispatch({ type: \"SET_RATING_THUMBS\", payload: rating });\n };\n\n const setRatingComment = (comment: string) => {\n dispatch({ type: \"SET_RATING_COMMENT\", payload: comment });\n };\n\n const thumbsScore = (value: string) => {\n return value === \"thumbsUp\" ? 5 : value === \"thumbsDown\" ? 0 : 0;\n }\n\n const handleRate = async (key: string, value: any | string, onHandleRateSuccess: (success: boolean, err?: string) => void) => {\n setIsLoading(true);\n const sessionId = getTopicSessionId(topicId);\n\n const ratingObj: RatingData = {\n topicId: parseInt(topicId),\n sessionId: sessionId || \"\",\n assistantId: assistantId,\n score: key === \"score\" ? value : thumbsScore(value),\n description: key === \"description\" ? value : state.ratingComment,\n };\n\n try {\n const response = await sendRating(ratingObj);\n if (!response.success) {\n setIsLoading(false);\n onHandleRateSuccess(false, response.error.message);\n return;\n }\n \n if (key === \"score\") {\n setRatingStars(value);\n } else if (key === \"description\") {\n setRatingComment(value);\n }\n setHasReviewed(true);\n setIsLoading(false);\n onHandleRateSuccess(true);\n } catch (err) {\n setIsLoading(false);\n onHandleRateSuccess(false, String(err));\n }\n };\n\n return {\n handleRate,\n ratingStars: state.ratingStars,\n ratingThumbs: state.ratingThumbs,\n ratingComment: state.ratingComment,\n isLoading,\n hasReviewed\n };\n}\n"],"mappings":"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","names":["sessionId","input","messages","useState","useState"]}
1
+ {"version":3,"sources":["../../src/hooks/alquimia.hook.tsx","../../src/utils/utils.ts","../../src/hooks/useRatings.ts"],"sourcesContent":["import { Message } from \"ai\";\n\nimport { useEffect, useState } from \"react\";\nimport { AlquimiaSDK } from \"../sdk\";\nimport {\n AIMessageChunk,\n AlquimiaMessage,\n Tooler,\n AlquimiaEventData,\n} from \"../types/type\";\nimport { createMessageId } from \"../utils\";\nexport function useAlquimia(sdk: AlquimiaSDK) {\n const [chunkReceived, setChunkReceived] = useState<string>(\"\");\n const [currentMessageIdChuncked, setCurrentMessageIdChuncked] =\n useState<string>(\"\");\n const [input, setInput] = useState<string>(\"\");\n const [isMessageLoading, setIsMessageLoading] = useState<boolean>(false);\n const [isStreamingLoading, setIsStreamingLoading] = useState<boolean>(false);\n const [isMessageStreaming, setIsMessageStreaming] = useState<boolean>(false);\n const [streamingMessageId, setStreamingMessageId] = useState<string | null>(null);\n const [isAudioRecording, setIsAudioRecording] = useState<boolean>(false);\n const [messageMetaData, setMessageMetaData] = useState<any>(null);\n const [messages, setMessages] = useState<AlquimiaMessage[]>([]);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [activeTool, setActiveTool] = useState<any | null>(null);\n const [lastRequest, setLastRequest] = useState<string | null>(null);\n\n const isLoading = isMessageLoading || isStreamingLoading;\n\n useEffect(() => {\n if (chunkReceived)\n processMessageChunk(currentMessageIdChuncked, chunkReceived);\n }, [chunkReceived]);\n\n\n function cleanMessages() {\n setMessages([]);\n }\n async function processMessageChunk(\n messageId: string,\n chunk: string,\n error_code?: string,\n error_detail?: string,\n additionalInfo?: string,\n loading?: boolean,\n tooler?: Tooler\n ) {\n setMessages((currentMessages) => {\n const messageIndex = currentMessages.findIndex(\n (message) => message?.id === messageId\n );\n if (messageIndex !== -1) {\n const updatedMessages = [...currentMessages];\n\n const updatedMessage: AlquimiaMessage = {\n ...updatedMessages[messageIndex],\n content: `${updatedMessages[messageIndex]?.content || \"\"}${chunk}`,\n id: updatedMessages[messageIndex]?.id || \"\",\n role: updatedMessages[messageIndex]?.role || \"assistant\",\n error_code,\n error_detail,\n additionalInfo,\n created_at: new Date().getTime().toString(),\n loading,\n tooler: {\n ...(updatedMessages[messageIndex]?.tooler || {}),\n ...(tooler || {}),\n }\n };\n updatedMessages[messageIndex] = updatedMessage;\n return updatedMessages;\n } else {\n return [\n ...currentMessages,\n {\n content: `${chunk}`,\n role: \"assistant\",\n id: messageId,\n error_code,\n error_detail,\n created_at: new Date().getTime().toString(),\n loading,\n },\n ];\n }\n });\n }\n\n async function processAndSendMessage(\n message: string,\n options?: {\n messageType?: string;\n traceParentId?: string;\n sessionId?: string;\n additionalInfo?: string;\n }\n ) {\n addUserMessage(message, options?.messageType);\n \n const messageId = createMessageId();\n setCurrentMessageIdChuncked(messageId);\n setStreamingMessageId(messageId);\n \n await sendMessage(\n message,\n (chunk: AIMessageChunk) => {\n processMessageChunk(\n messageId,\n chunk?.answer || \"\",\n chunk?.error_code,\n chunk?.error_detail,\n options?.additionalInfo,\n chunk?.loading,\n chunk?.tooler\n );\n },\n options?.traceParentId,\n options?.sessionId\n );\n \n setInput(\"\");\n }\n\n async function handleSubmit(\n event: React.FormEvent<HTMLFormElement>,\n traceParentId?: string,\n sessionId?: string,\n additionalInfo?: string\n ) {\n setIsMessageLoading(true);\n event.preventDefault();\n \n if (input) {\n await processAndSendMessage(input, {\n traceParentId,\n sessionId,\n additionalInfo,\n });\n }\n \n setIsMessageLoading(false);\n }\n \n async function handleSystemMessage(\n message: string,\n options?: {\n traceParentId?: string;\n sessionId?: string;\n additionalInfo?: string;\n messageType?: string;\n }\n ) {\n setIsMessageLoading(true);\n \n await processAndSendMessage(message, {\n messageType: options?.messageType || \"system\",\n traceParentId: options?.traceParentId,\n sessionId: options?.sessionId,\n additionalInfo: options?.additionalInfo,\n });\n \n setIsMessageLoading(false);\n }\n\n function handleInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n setInput(event.target.value);\n }\n\n function handleReplaceInput(input: string) {\n setInput(input);\n }\n\n function populateMessages(messages: Message[]) {\n setMessages(messages);\n }\n\n function handleLoadingCancel() {\n setIsMessageLoading(false);\n setIsMessageStreaming(false);\n setInput(\"\");\n }\n\n function addUserMessage(message: string, type?: string) {\n setMessages((prevMessages: AlquimiaMessage[]) => [\n ...prevMessages,\n {\n content: message,\n role: \"user\",\n type: type,\n id: createMessageId(),\n created_at: new Date().getTime().toString(),\n },\n ]);\n }\n\n function getCookie(name: string): string | null {\n const cookies = document.cookie.split(\";\");\n for (let cookie of cookies) {\n const [cookieName, cookieValue] = cookie.trim().split(\"=\");\n if (cookieName === name) {\n return decodeURIComponent(cookieValue as string);\n }\n }\n return null;\n }\n\n function cleanup(isStreaming: boolean, event: EventSource) {\n setIsMessageStreaming(isStreaming);\n setStreamingMessageId(null);\n setIsStreamingLoading(false);\n event.close();\n }\n\n async function sendMessage(\n message: string,\n callBack: (chunk: AIMessageChunk) => void,\n traceParentId?: string,\n sessionId?: string\n ) { \n setIsStreamingLoading(true);\n callBack({\n type: \"loading\",\n loading: true,\n });\n const conversationId = sessionId || getCookie(\"alquimia-session\");\n setIsMessageStreaming(true);\n setActiveTool(null);\n setLastRequest(message);\n\n try {\n const response = await sdk\n .widthConversationId(conversationId || \"\")\n .sendMessage(message, traceParentId);\n const eventSource = new EventSource(response.getUrlStream());\n\n eventSource.onmessage = (event) =>\n handleMessageEvent(event, callBack, eventSource);\n\n eventSource.onerror = (event) => {\n console.error(\"Stream connection error\", event);\n cleanup(false, eventSource);\n callBack({\n type: \"error\",\n error_code: \"STREAM_ERROR\",\n error_detail: \"Failed to establish stream connection.\",\n });\n };\n } catch (error: any) {\n console.error(\"Error sending message:\", error);\n setIsMessageStreaming(false);\n setStreamingMessageId(null);\n callBack({\n type: \"error\",\n error_code: error.status?.toString() || \"REQUEST_ERROR\",\n error_detail: error.message || \"Error initiating the stream.\",\n });\n }\n }\n\n function parseToolOutput(tool: any) {\n if (tool.event_class === \"ServerToolExecutionCommand\") {\n return {\n tooler: {\n tool_summary: { name: tool.data, parameters: {...tool} },\n },\n };\n } else if (tool.event_class === \"ToolExecutionResponse\") {\n return {\n tooler: {\n tool_output: { result: tool.data },\n },\n };\n }\n return {};\n }\n\n function handleMessageEvent(\n event: MessageEvent,\n callBack: (chunk: AIMessageChunk) => void,\n eventSource: EventSource\n ) {\n const data: AlquimiaEventData = JSON.parse(event.data);\n \n if (data.errors?.length) {\n for (const error of data.errors) {\n console.error(\"Stream error:\", error);\n callBack({\n type: \"error\",\n error_code: error.error_code,\n error_detail: error.error_detail,\n });\n }\n cleanup(false, eventSource);\n return;\n }\n \n for (const tool of data.tools_output ?? []) {\n callBack({\n type: \"answer\",\n answer: \"\",\n tooler: parseToolOutput(tool).tooler,\n });\n }\n \n for (const thinking of data.thinkings ?? []) {\n callBack({\n type: \"answer\",\n // TBD: add `thinking` payload\n });\n }\n \n const response = data.response;\n const content = response?.event_class === \"AssistantInferenceResponse\"\n ? response?.data?.content\n : null;\n \n if (content) {\n setIsStreamingLoading(false);\n callBack({\n type: \"answer\",\n answer: content,\n });\n cleanup(false, eventSource);\n }\n }\n\n return {\n activeTool,\n cleanMessages,\n createMessageId,\n handleInputChange,\n handleReplaceInput,\n handleSubmit,\n handleSystemMessage,\n handleLoadingCancel,\n input,\n isLoading,\n isMessageStreaming,\n streamingMessageId,\n isAudioRecording,\n lastRequest,\n messageMetaData,\n messages,\n populateMessages,\n processMessageChunk,\n sendMessage,\n sessionId,\n setActiveTool,\n setSessionId,\n setLastRequest,\n setIsAudioRecording,\n };\n}\n","import { BaseAPIConfig, ApiError, ConversationsMap } from \"../types/type\";\n\nexport function generateTranslatePrompt(text: string) {\n const prompt = `\n Arrange the following text according to the given object structure and return it as plain json, values summarized to one word, no formatting:\n {\n restrictions: {\n value: [''],\n description: 'Restrictions to certain foods'\n },\n alergies: {\n value: [''],\n description: 'Alergies to certain foods'\n },\n wine_preference: {\n value: [''],\n description: 'Preferences for the wine'\n },\n meal_preference: {\n value: [''],\n description: 'Preferences for the meal'\n }\n }\n\n Text: \"${text}\"\n\n Output:\n `;\n\n return prompt;\n}\n\nexport function getCookies(name: string) {\n if (typeof document === 'undefined') return undefined;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop()?.split(\";\").shift();\n}\n\nexport function generateHeaders(config: BaseAPIConfig): HeadersInit {\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (config.token) {\n headers[\"Authorization\"] = `Bearer ${config.token}`;\n }\n\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers[key] = value;\n });\n }\n\n return headers;\n}\n\nexport function isTextContent(buffer: ArrayBuffer): boolean {\n try {\n const text = new TextDecoder().decode(buffer);\n return /^[\\w\\#\\-\\*\\|\\[\\]\\-\\+\\=]/.test(text.trim());\n } catch {\n return false;\n }\n}\n\nexport function getQueryParam(param: string): string | null {\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(param);\n }\n return null;\n}\n\nexport function defineAssistantId(defaultId: string): string {\n if (typeof window !== 'undefined' && window.location.pathname === '/') {\n const queryAssistantId = getQueryParam('talkwith');\n if (queryAssistantId) {\n localStorage.setItem('assistantId', queryAssistantId);\n return queryAssistantId;\n }\n const storedAssistantId = localStorage.getItem('assistantId');\n return storedAssistantId || defaultId;\n }\n return defaultId;\n}\n\nexport function formatTimeWithUnit(timeMs: number): string {\n if (timeMs >= 1000) {\n return `${(timeMs / 1000).toFixed(1)}s`;\n }\n return `${Math.round(timeMs)}ms`;\n};\n\nexport function serializeAxiosError(error: unknown){\n if (error instanceof Error) {\n const customError = error as ApiError;\n return {\n message: customError?.message, \n name: customError?.name,\n stack: customError?.stack,\n code: customError?.code,\n status: customError?.status,\n };\n }\n return {\n message: String(error),\n name: 'Unknown Error',\n };\n};\n\nexport function parseConversationsMapCookie(cookieValue: string): ConversationsMap {\n try {\n const decodedValue = decodeURIComponent(cookieValue);\n return JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n return {};\n }\n}\n\nexport function getTopicSessionId(topicId: string): string {\n const conversationsStr = getCookies(\"alquimia-sessions\") || \"{}\";\n if (!conversationsStr) {\n const sessionCookie = getCookies(\"alquimia-session\");\n return sessionCookie || \"\";\n }\n\n const conversationsMap = parseConversationsMapCookie(conversationsStr);\n return conversationsMap[topicId] || \"\";\n}\n\nexport function createMessageId() {\n return Math.floor(Math.random() * 1000000).toString();\n}\n\nexport function hasToolSummary(data: any) {\n return data.tool_summary && Object.keys(data.tool_summary).length > 0;\n}\n\n\n","\nimport { useState, useReducer } from \"react\";\nimport { RatingData } from \"../types/type\";\nimport { getTopicSessionId } from \"../utils/utils\";\n\ninterface RatingState {\n ratingStars: number;\n ratingThumbs: \"thumbsUp\" | \"thumbsDown\" | \"\";\n ratingComment: string;\n}\n\ntype RatingAction =\n | { type: \"SET_RATING_STARS\"; payload: number }\n | { type: \"SET_RATING_THUMBS\"; payload: \"thumbsUp\" | \"thumbsDown\" | \"\" }\n | { type: \"SET_RATING_COMMENT\"; payload: string };\n\nconst initialState: RatingState = {\n ratingStars: 0,\n ratingThumbs: \"\",\n ratingComment: \"\",\n};\n\nfunction ratingReducer(state: RatingState, action: RatingAction): RatingState {\n switch (action.type) {\n case \"SET_RATING_STARS\":\n return { ...state, ratingStars: action.payload };\n case \"SET_RATING_THUMBS\":\n return { ...state, ratingThumbs: action.payload };\n case \"SET_RATING_COMMENT\":\n return { ...state, ratingComment: action.payload };\n default:\n return state;\n }\n}\n\ninterface UseRatingsParams {\n assistantId: string;\n topicId: string;\n sendRating: (ratingData: RatingData) => Promise<any>;\n onError?: (componentName: string, error: Error) => void;\n}\n\n\nexport function useRatings({ assistantId, sendRating, topicId }: UseRatingsParams) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [hasReviewed, setHasReviewed] = useState<boolean>(false);\n const [state, dispatch] = useReducer(ratingReducer, initialState);\n\n const setRatingStars = (rating: number) => {\n dispatch({ type: \"SET_RATING_STARS\", payload: rating });\n };\n\n const setRatingThumbs = (rating: \"thumbsUp\" | \"thumbsDown\" | \"\") => {\n dispatch({ type: \"SET_RATING_THUMBS\", payload: rating });\n };\n\n const setRatingComment = (comment: string) => {\n dispatch({ type: \"SET_RATING_COMMENT\", payload: comment });\n };\n\n const thumbsScore = (value: string) => {\n return value === \"thumbsUp\" ? 5 : value === \"thumbsDown\" ? 0 : 0;\n }\n\n const handleRate = async (key: string, value: any | string, onHandleRateSuccess: (success: boolean, err?: string) => void) => {\n setIsLoading(true);\n const sessionId = getTopicSessionId(topicId);\n\n const ratingObj: RatingData = {\n topicId: parseInt(topicId),\n sessionId: sessionId || \"\",\n assistantId: assistantId,\n score: key === \"score\" ? value : thumbsScore(value),\n description: key === \"description\" ? value : state.ratingComment,\n };\n\n try {\n const response = await sendRating(ratingObj);\n if (!response.success) {\n setIsLoading(false);\n onHandleRateSuccess(false, response.error.message);\n return;\n }\n \n if (key === \"score\") {\n setRatingStars(value);\n } else if (key === \"description\") {\n setRatingComment(value);\n }\n setHasReviewed(true);\n setIsLoading(false);\n onHandleRateSuccess(true);\n } catch (err) {\n setIsLoading(false);\n onHandleRateSuccess(false, String(err));\n }\n };\n\n return {\n handleRate,\n ratingStars: state.ratingStars,\n ratingThumbs: state.ratingThumbs,\n ratingComment: state.ratingComment,\n isLoading,\n hasReviewed\n };\n}\n"],"mappings":"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","names":["sessionId","input","messages","useState","useState"]}
package/dist/sdk/index.js CHANGED
@@ -137,7 +137,6 @@ var AlquimiaSDK = class {
137
137
  const initMessage = {
138
138
  query,
139
139
  session_id: this.conversationId,
140
- tools: this.tools,
141
140
  extra_data: this.extraData,
142
141
  force_profile: this.forceProfile
143
142
  };
@@ -147,7 +146,7 @@ var AlquimiaSDK = class {
147
146
  "x-trace-parent": traceParent || ""
148
147
  }
149
148
  })).data;
150
- this.streamId = result.data.stream_id;
149
+ this.streamId = result.stream_id;
151
150
  return this;
152
151
  }
153
152
  async generateImage(query) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sdk/index.ts","../../src/sdk/alquimia-sdk.ts"],"sourcesContent":["export { default as AlquimiaSDK } from './alquimia-sdk';","import axios, { AxiosInstance } from \"axios\";\nimport {\n StableDiffusionProvider,\n WhisperProvider,\n CharacterizationProvider,\n RatingsProvider,\n LoggerProvider,\n} from \"../providers\";\nimport { TTSResult } from \"../types\";\ninterface AlquimiaSDKConfig {\n apiKey: string;\n chatUrl: string;\n streamUrl: string;\n assistantId: string;\n}\n\n\nclass AlquimiaSDK {\n private config: AlquimiaSDKConfig;\n private axiosInstance: AxiosInstance;\n private conversationId: string | null = null;\n private sessionId: string | null = null;\n private streamId: string | null = null;\n private tools: any = {};\n private extraData: any = {};\n private forceProfile: any = {};\n private whisperProvider?: WhisperProvider\n private stableDiffusionProvider?: StableDiffusionProvider\n private analyzeCharacterizationProvider?: CharacterizationProvider\n private ratingsProvider?: RatingsProvider\n private loggerProvider?: LoggerProvider\n private enforceCharacterization?: boolean\n \n constructor(config: AlquimiaSDKConfig, enforceCharacterization: boolean = true) {\n this.config = config;\n this.enforceCharacterization = enforceCharacterization;\n\n this.axiosInstance = axios.create();\n this.axiosInstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n if (error.response?.status) {\n if (this.loggerProvider) {\n await this.loggerProvider.logError(\n 'Server Error',\n error,\n {\n url: error.config.url,\n method: error.config.method,\n data: error.config.data,\n status: error.response.status,\n responseData: error.response.data\n }\n );\n }\n }\n return Promise.reject(error);\n }\n );\n \n this.textToSpeech = this.textToSpeech.bind(this);\n this.speechToText = this.speechToText.bind(this);\n }\n\n static configure(\n apiKey: string,\n inferUrl: string,\n streamUrl: string,\n assistantId: string\n ): AlquimiaSDKConfig {\n return {\n apiKey,\n chatUrl: `${inferUrl}/chat/${assistantId}`,\n streamUrl: `${streamUrl}`,\n assistantId: assistantId\n };\n }\n\n widthConversationId(conversationId: string ): AlquimiaSDK {\n this.conversationId = conversationId \n return this;\n }\n\n withWhisperProvider(provider: WhisperProvider): AlquimiaSDK {\n this.whisperProvider = provider;\n return this;\n }\n\n withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK {\n this.stableDiffusionProvider = provider\n return this\n }\n\n withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK {\n this.analyzeCharacterizationProvider = provider\n return this\n }\n\n withRatingsProvider(provider: RatingsProvider): AlquimiaSDK {\n this.ratingsProvider = provider\n return this\n }\n\n withLoggerProvider(provider: LoggerProvider): AlquimiaSDK {\n this.loggerProvider = provider\n return this\n }\n\n getEnforceCharacterization(): boolean {\n return this.enforceCharacterization ?? true;\n }\n\n withTools(tools: any): AlquimiaSDK {\n this.tools = tools;\n return this;\n }\n\n withExtraData(extraData: any): AlquimiaSDK {\n this.extraData = extraData;\n return this;\n }\n\n withForceProfile(forceProfile: any): AlquimiaSDK {\n this.forceProfile = forceProfile;\n return this;\n }\n\n textToSpeech(text: string): Promise<TTSResult> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.textToSpeech(text)\n }\n\n speechToText(audio: string): Promise<string> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.speechToText(audio)\n }\n\n async sendMessage(query: string, traceParent?: string) {\n if (!this.conversationId) {\n throw new Error(\"Conversation not initialized\");\n }\n\n const initMessage = {\n query,\n session_id: this.conversationId,\n tools: this.tools,\n extra_data: this.extraData,\n force_profile: this.forceProfile\n };\n \n const result = (await this.axiosInstance.post(this.config.chatUrl, initMessage, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-trace-parent\": traceParent || \"\",\n },\n })).data\n \n this.streamId = result.data.stream_id;\n return this\n }\n\n async generateImage(query: string) {\n if (!this.stableDiffusionProvider) {\n throw new Error(\"Stable Diffusion provider not initialized\");\n }\n return this.stableDiffusionProvider.generateImage(query)\n }\n\n async analyzeCharacterization(text: string) {\n if (!this.analyzeCharacterizationProvider) {\n throw new Error(\"analyze characterization provider not initialized\");\n }\n return this.analyzeCharacterizationProvider.analyzeCharacterization(text)\n }\n\n async rate(data: any) {\n if (!this.ratingsProvider) {\n throw new Error(\"ratings provider not initialized\");\n }\n return this.ratingsProvider.rate(data)\n }\n\n async logInfo(message: string, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logInfo(message, data)\n }\n\n async logError(message: string, error: Error, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logError(message, error, data)\n }\n\n getUrlStream() {\n return `${this.config.streamUrl}/${this.streamId}`;\n }\n}\n\nexport default AlquimiaSDK;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAqC;AAiBrC,IAAM,cAAN,MAAkB;AAAA,EAgBhB,YAAY,QAA2B,0BAAmC,MAAM;AAbhF,SAAQ,iBAAgC;AACxC,SAAQ,YAA2B;AACnC,SAAQ,WAA0B;AAClC,SAAQ,QAAa,CAAC;AACtB,SAAQ,YAAiB,CAAC;AAC1B,SAAQ,eAAoB,CAAC;AAS3B,SAAK,SAAS;AACd,SAAK,0BAA0B;AAE/B,SAAK,gBAAgB,aAAAA,QAAM,OAAO;AAClC,SAAK,cAAc,aAAa,SAAS;AAAA,MACvC,CAAC,aAAa;AAAA,MACd,OAAO,UAAU;AACf,YAAI,MAAM,UAAU,QAAQ;AAC1B,cAAI,KAAK,gBAAgB;AACvB,kBAAM,KAAK,eAAe;AAAA,cACxB;AAAA,cACA;AAAA,cACA;AAAA,gBACE,KAAK,MAAM,OAAO;AAAA,gBAClB,QAAQ,MAAM,OAAO;AAAA,gBACrB,MAAM,MAAM,OAAO;AAAA,gBACnB,QAAQ,MAAM,SAAS;AAAA,gBACvB,cAAc,MAAM,SAAS;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAEA,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAC/C,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,UACL,QACA,UACA,WACA,aACmB;AACnB,WAAO;AAAA,MACL;AAAA,MACA,SAAS,GAAG,QAAQ,SAAS,WAAW;AAAA,MACxC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB,gBAAsC;AACxD,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,UAAwC;AAC1D,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,4BAA4B,UAAgD;AAC1E,SAAK,0BAA0B;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,oCAAoC,UAAiD;AACnF,SAAK,kCAAkC;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,UAAwC;AAC1D,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB,UAAuC;AACxD,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,6BAAsC;AACpC,WAAO,KAAK,2BAA2B;AAAA,EACzC;AAAA,EAEA,UAAU,OAAyB;AACjC,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,WAA6B;AACzC,SAAK,YAAY;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,cAAgC;AAC/C,SAAK,eAAe;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,MAAkC;AAC7C,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,aAAa,IAAI;AAAA,EAC/C;AAAA,EAEA,aAAa,OAAgC;AAC3C,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,aAAa,KAAK;AAAA,EAChD;AAAA,EAEA,MAAM,YAAY,OAAe,aAAsB;AACrD,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAEA,UAAM,cAAc;AAAA,MAChB;AAAA,MACA,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,YAAY,KAAK;AAAA,MACjB,eAAe,KAAK;AAAA,IACtB;AAEA,UAAM,UAAU,MAAM,KAAK,cAAc,KAAK,KAAK,OAAO,SAAS,aAAa;AAAA,MAC9E,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,kBAAkB,eAAe;AAAA,MACnC;AAAA,IACF,CAAC,GAAG;AAEJ,SAAK,WAAW,OAAO,KAAK;AAC5B,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,OAAe;AACjC,QAAI,CAAC,KAAK,yBAAyB;AACjC,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,KAAK,wBAAwB,cAAc,KAAK;AAAA,EACzD;AAAA,EAEA,MAAM,wBAAwB,MAAc;AAC1C,QAAI,CAAC,KAAK,iCAAiC;AACzC,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AACA,WAAO,KAAK,gCAAgC,wBAAwB,IAAI;AAAA,EAC1E;AAAA,EAEA,MAAM,KAAK,MAAW;AACpB,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,KAAK,IAAI;AAAA,EACvC;AAAA,EAEA,MAAM,QAAQ,SAAiB,MAAW;AACxC,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AACA,WAAO,KAAK,eAAe,QAAQ,SAAS,IAAI;AAAA,EAClD;AAAA,EAEA,MAAM,SAAS,SAAiB,OAAc,MAAW;AACvD,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AACA,WAAO,KAAK,eAAe,SAAS,SAAS,OAAO,IAAI;AAAA,EAC1D;AAAA,EAEA,eAAe;AACb,WAAO,GAAG,KAAK,OAAO,SAAS,IAAI,KAAK,QAAQ;AAAA,EAClD;AACF;AAEA,IAAO,uBAAQ;","names":["axios"]}
1
+ {"version":3,"sources":["../../src/sdk/index.ts","../../src/sdk/alquimia-sdk.ts"],"sourcesContent":["export { default as AlquimiaSDK } from './alquimia-sdk';","import axios, { AxiosInstance } from \"axios\";\nimport {\n StableDiffusionProvider,\n WhisperProvider,\n CharacterizationProvider,\n RatingsProvider,\n LoggerProvider,\n} from \"../providers\";\nimport { TTSResult } from \"../types\";\ninterface AlquimiaSDKConfig {\n apiKey: string;\n chatUrl: string;\n streamUrl: string;\n assistantId: string;\n}\n\n\nclass AlquimiaSDK {\n private config: AlquimiaSDKConfig;\n private axiosInstance: AxiosInstance;\n private conversationId: string | null = null;\n private sessionId: string | null = null;\n private streamId: string | null = null;\n private tools: any = {};\n private extraData: any = {};\n private forceProfile: any = {};\n private whisperProvider?: WhisperProvider\n private stableDiffusionProvider?: StableDiffusionProvider\n private analyzeCharacterizationProvider?: CharacterizationProvider\n private ratingsProvider?: RatingsProvider\n private loggerProvider?: LoggerProvider\n private enforceCharacterization?: boolean\n \n constructor(config: AlquimiaSDKConfig, enforceCharacterization: boolean = true) {\n this.config = config;\n this.enforceCharacterization = enforceCharacterization;\n\n this.axiosInstance = axios.create();\n this.axiosInstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n if (error.response?.status) {\n if (this.loggerProvider) {\n await this.loggerProvider.logError(\n 'Server Error',\n error,\n {\n url: error.config.url,\n method: error.config.method,\n data: error.config.data,\n status: error.response.status,\n responseData: error.response.data\n }\n );\n }\n }\n return Promise.reject(error);\n }\n );\n \n this.textToSpeech = this.textToSpeech.bind(this);\n this.speechToText = this.speechToText.bind(this);\n }\n\n static configure(\n apiKey: string,\n inferUrl: string,\n streamUrl: string,\n assistantId: string\n ): AlquimiaSDKConfig {\n return {\n apiKey,\n chatUrl: `${inferUrl}/chat/${assistantId}`,\n streamUrl: `${streamUrl}`,\n assistantId: assistantId\n };\n }\n\n widthConversationId(conversationId: string ): AlquimiaSDK {\n this.conversationId = conversationId \n return this;\n }\n\n withWhisperProvider(provider: WhisperProvider): AlquimiaSDK {\n this.whisperProvider = provider;\n return this;\n }\n\n withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK {\n this.stableDiffusionProvider = provider\n return this\n }\n\n withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK {\n this.analyzeCharacterizationProvider = provider\n return this\n }\n\n withRatingsProvider(provider: RatingsProvider): AlquimiaSDK {\n this.ratingsProvider = provider\n return this\n }\n\n withLoggerProvider(provider: LoggerProvider): AlquimiaSDK {\n this.loggerProvider = provider\n return this\n }\n\n getEnforceCharacterization(): boolean {\n return this.enforceCharacterization ?? true;\n }\n\n withTools(tools: any): AlquimiaSDK {\n this.tools = tools;\n return this;\n }\n\n withExtraData(extraData: any): AlquimiaSDK {\n this.extraData = extraData;\n return this;\n }\n\n withForceProfile(forceProfile: any): AlquimiaSDK {\n this.forceProfile = forceProfile;\n return this;\n }\n\n textToSpeech(text: string): Promise<TTSResult> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.textToSpeech(text)\n }\n\n speechToText(audio: string): Promise<string> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.speechToText(audio)\n }\n\n async sendMessage(query: string, traceParent?: string) {\n if (!this.conversationId) {\n throw new Error(\"Conversation not initialized\");\n }\n\n const initMessage = {\n query,\n session_id: this.conversationId,\n extra_data: this.extraData,\n force_profile: this.forceProfile\n };\n \n const result = (await this.axiosInstance.post(this.config.chatUrl, initMessage, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-trace-parent\": traceParent || \"\",\n },\n })).data\n \n this.streamId = result.stream_id;\n return this\n }\n\n async generateImage(query: string) {\n if (!this.stableDiffusionProvider) {\n throw new Error(\"Stable Diffusion provider not initialized\");\n }\n return this.stableDiffusionProvider.generateImage(query)\n }\n\n async analyzeCharacterization(text: string) {\n if (!this.analyzeCharacterizationProvider) {\n throw new Error(\"analyze characterization provider not initialized\");\n }\n return this.analyzeCharacterizationProvider.analyzeCharacterization(text)\n }\n\n async rate(data: any) {\n if (!this.ratingsProvider) {\n throw new Error(\"ratings provider not initialized\");\n }\n return this.ratingsProvider.rate(data)\n }\n\n async logInfo(message: string, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logInfo(message, data)\n }\n\n async logError(message: string, error: Error, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logError(message, error, data)\n }\n\n getUrlStream() {\n return `${this.config.streamUrl}/${this.streamId}`;\n }\n}\n\nexport default AlquimiaSDK;\n"],"mappings":"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","names":["axios"]}
@@ -101,7 +101,6 @@ var AlquimiaSDK = class {
101
101
  const initMessage = {
102
102
  query,
103
103
  session_id: this.conversationId,
104
- tools: this.tools,
105
104
  extra_data: this.extraData,
106
105
  force_profile: this.forceProfile
107
106
  };
@@ -111,7 +110,7 @@ var AlquimiaSDK = class {
111
110
  "x-trace-parent": traceParent || ""
112
111
  }
113
112
  })).data;
114
- this.streamId = result.data.stream_id;
113
+ this.streamId = result.stream_id;
115
114
  return this;
116
115
  }
117
116
  async generateImage(query) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sdk/alquimia-sdk.ts"],"sourcesContent":["import axios, { AxiosInstance } from \"axios\";\nimport {\n StableDiffusionProvider,\n WhisperProvider,\n CharacterizationProvider,\n RatingsProvider,\n LoggerProvider,\n} from \"../providers\";\nimport { TTSResult } from \"../types\";\ninterface AlquimiaSDKConfig {\n apiKey: string;\n chatUrl: string;\n streamUrl: string;\n assistantId: string;\n}\n\n\nclass AlquimiaSDK {\n private config: AlquimiaSDKConfig;\n private axiosInstance: AxiosInstance;\n private conversationId: string | null = null;\n private sessionId: string | null = null;\n private streamId: string | null = null;\n private tools: any = {};\n private extraData: any = {};\n private forceProfile: any = {};\n private whisperProvider?: WhisperProvider\n private stableDiffusionProvider?: StableDiffusionProvider\n private analyzeCharacterizationProvider?: CharacterizationProvider\n private ratingsProvider?: RatingsProvider\n private loggerProvider?: LoggerProvider\n private enforceCharacterization?: boolean\n \n constructor(config: AlquimiaSDKConfig, enforceCharacterization: boolean = true) {\n this.config = config;\n this.enforceCharacterization = enforceCharacterization;\n\n this.axiosInstance = axios.create();\n this.axiosInstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n if (error.response?.status) {\n if (this.loggerProvider) {\n await this.loggerProvider.logError(\n 'Server Error',\n error,\n {\n url: error.config.url,\n method: error.config.method,\n data: error.config.data,\n status: error.response.status,\n responseData: error.response.data\n }\n );\n }\n }\n return Promise.reject(error);\n }\n );\n \n this.textToSpeech = this.textToSpeech.bind(this);\n this.speechToText = this.speechToText.bind(this);\n }\n\n static configure(\n apiKey: string,\n inferUrl: string,\n streamUrl: string,\n assistantId: string\n ): AlquimiaSDKConfig {\n return {\n apiKey,\n chatUrl: `${inferUrl}/chat/${assistantId}`,\n streamUrl: `${streamUrl}`,\n assistantId: assistantId\n };\n }\n\n widthConversationId(conversationId: string ): AlquimiaSDK {\n this.conversationId = conversationId \n return this;\n }\n\n withWhisperProvider(provider: WhisperProvider): AlquimiaSDK {\n this.whisperProvider = provider;\n return this;\n }\n\n withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK {\n this.stableDiffusionProvider = provider\n return this\n }\n\n withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK {\n this.analyzeCharacterizationProvider = provider\n return this\n }\n\n withRatingsProvider(provider: RatingsProvider): AlquimiaSDK {\n this.ratingsProvider = provider\n return this\n }\n\n withLoggerProvider(provider: LoggerProvider): AlquimiaSDK {\n this.loggerProvider = provider\n return this\n }\n\n getEnforceCharacterization(): boolean {\n return this.enforceCharacterization ?? true;\n }\n\n withTools(tools: any): AlquimiaSDK {\n this.tools = tools;\n return this;\n }\n\n withExtraData(extraData: any): AlquimiaSDK {\n this.extraData = extraData;\n return this;\n }\n\n withForceProfile(forceProfile: any): AlquimiaSDK {\n this.forceProfile = forceProfile;\n return this;\n }\n\n textToSpeech(text: string): Promise<TTSResult> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.textToSpeech(text)\n }\n\n speechToText(audio: string): Promise<string> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.speechToText(audio)\n }\n\n async sendMessage(query: string, traceParent?: string) {\n if (!this.conversationId) {\n throw new Error(\"Conversation not initialized\");\n }\n\n const initMessage = {\n query,\n session_id: this.conversationId,\n tools: this.tools,\n extra_data: this.extraData,\n force_profile: this.forceProfile\n };\n \n const result = (await this.axiosInstance.post(this.config.chatUrl, initMessage, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-trace-parent\": traceParent || \"\",\n },\n })).data\n \n this.streamId = result.data.stream_id;\n return this\n }\n\n async generateImage(query: string) {\n if (!this.stableDiffusionProvider) {\n throw new Error(\"Stable Diffusion provider not initialized\");\n }\n return this.stableDiffusionProvider.generateImage(query)\n }\n\n async analyzeCharacterization(text: string) {\n if (!this.analyzeCharacterizationProvider) {\n throw new Error(\"analyze characterization provider not initialized\");\n }\n return this.analyzeCharacterizationProvider.analyzeCharacterization(text)\n }\n\n async rate(data: any) {\n if (!this.ratingsProvider) {\n throw new Error(\"ratings provider not initialized\");\n }\n return this.ratingsProvider.rate(data)\n }\n\n async logInfo(message: string, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logInfo(message, data)\n }\n\n async logError(message: string, error: Error, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logError(message, error, data)\n }\n\n getUrlStream() {\n return `${this.config.streamUrl}/${this.streamId}`;\n }\n}\n\nexport default AlquimiaSDK;\n"],"mappings":";AAAA,OAAO,WAA8B;AAiBrC,IAAM,cAAN,MAAkB;AAAA,EAgBhB,YAAY,QAA2B,0BAAmC,MAAM;AAbhF,SAAQ,iBAAgC;AACxC,SAAQ,YAA2B;AACnC,SAAQ,WAA0B;AAClC,SAAQ,QAAa,CAAC;AACtB,SAAQ,YAAiB,CAAC;AAC1B,SAAQ,eAAoB,CAAC;AAS3B,SAAK,SAAS;AACd,SAAK,0BAA0B;AAE/B,SAAK,gBAAgB,MAAM,OAAO;AAClC,SAAK,cAAc,aAAa,SAAS;AAAA,MACvC,CAAC,aAAa;AAAA,MACd,OAAO,UAAU;AACf,YAAI,MAAM,UAAU,QAAQ;AAC1B,cAAI,KAAK,gBAAgB;AACvB,kBAAM,KAAK,eAAe;AAAA,cACxB;AAAA,cACA;AAAA,cACA;AAAA,gBACE,KAAK,MAAM,OAAO;AAAA,gBAClB,QAAQ,MAAM,OAAO;AAAA,gBACrB,MAAM,MAAM,OAAO;AAAA,gBACnB,QAAQ,MAAM,SAAS;AAAA,gBACvB,cAAc,MAAM,SAAS;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAEA,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAC/C,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,UACL,QACA,UACA,WACA,aACmB;AACnB,WAAO;AAAA,MACL;AAAA,MACA,SAAS,GAAG,QAAQ,SAAS,WAAW;AAAA,MACxC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB,gBAAsC;AACxD,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,UAAwC;AAC1D,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,4BAA4B,UAAgD;AAC1E,SAAK,0BAA0B;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,oCAAoC,UAAiD;AACnF,SAAK,kCAAkC;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,UAAwC;AAC1D,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB,UAAuC;AACxD,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,6BAAsC;AACpC,WAAO,KAAK,2BAA2B;AAAA,EACzC;AAAA,EAEA,UAAU,OAAyB;AACjC,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,WAA6B;AACzC,SAAK,YAAY;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,cAAgC;AAC/C,SAAK,eAAe;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,MAAkC;AAC7C,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,aAAa,IAAI;AAAA,EAC/C;AAAA,EAEA,aAAa,OAAgC;AAC3C,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,aAAa,KAAK;AAAA,EAChD;AAAA,EAEA,MAAM,YAAY,OAAe,aAAsB;AACrD,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAEA,UAAM,cAAc;AAAA,MAChB;AAAA,MACA,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,YAAY,KAAK;AAAA,MACjB,eAAe,KAAK;AAAA,IACtB;AAEA,UAAM,UAAU,MAAM,KAAK,cAAc,KAAK,KAAK,OAAO,SAAS,aAAa;AAAA,MAC9E,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,kBAAkB,eAAe;AAAA,MACnC;AAAA,IACF,CAAC,GAAG;AAEJ,SAAK,WAAW,OAAO,KAAK;AAC5B,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,OAAe;AACjC,QAAI,CAAC,KAAK,yBAAyB;AACjC,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,KAAK,wBAAwB,cAAc,KAAK;AAAA,EACzD;AAAA,EAEA,MAAM,wBAAwB,MAAc;AAC1C,QAAI,CAAC,KAAK,iCAAiC;AACzC,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AACA,WAAO,KAAK,gCAAgC,wBAAwB,IAAI;AAAA,EAC1E;AAAA,EAEA,MAAM,KAAK,MAAW;AACpB,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AACA,WAAO,KAAK,gBAAgB,KAAK,IAAI;AAAA,EACvC;AAAA,EAEA,MAAM,QAAQ,SAAiB,MAAW;AACxC,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AACA,WAAO,KAAK,eAAe,QAAQ,SAAS,IAAI;AAAA,EAClD;AAAA,EAEA,MAAM,SAAS,SAAiB,OAAc,MAAW;AACvD,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AACA,WAAO,KAAK,eAAe,SAAS,SAAS,OAAO,IAAI;AAAA,EAC1D;AAAA,EAEA,eAAe;AACb,WAAO,GAAG,KAAK,OAAO,SAAS,IAAI,KAAK,QAAQ;AAAA,EAClD;AACF;AAEA,IAAO,uBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/sdk/alquimia-sdk.ts"],"sourcesContent":["import axios, { AxiosInstance } from \"axios\";\nimport {\n StableDiffusionProvider,\n WhisperProvider,\n CharacterizationProvider,\n RatingsProvider,\n LoggerProvider,\n} from \"../providers\";\nimport { TTSResult } from \"../types\";\ninterface AlquimiaSDKConfig {\n apiKey: string;\n chatUrl: string;\n streamUrl: string;\n assistantId: string;\n}\n\n\nclass AlquimiaSDK {\n private config: AlquimiaSDKConfig;\n private axiosInstance: AxiosInstance;\n private conversationId: string | null = null;\n private sessionId: string | null = null;\n private streamId: string | null = null;\n private tools: any = {};\n private extraData: any = {};\n private forceProfile: any = {};\n private whisperProvider?: WhisperProvider\n private stableDiffusionProvider?: StableDiffusionProvider\n private analyzeCharacterizationProvider?: CharacterizationProvider\n private ratingsProvider?: RatingsProvider\n private loggerProvider?: LoggerProvider\n private enforceCharacterization?: boolean\n \n constructor(config: AlquimiaSDKConfig, enforceCharacterization: boolean = true) {\n this.config = config;\n this.enforceCharacterization = enforceCharacterization;\n\n this.axiosInstance = axios.create();\n this.axiosInstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n if (error.response?.status) {\n if (this.loggerProvider) {\n await this.loggerProvider.logError(\n 'Server Error',\n error,\n {\n url: error.config.url,\n method: error.config.method,\n data: error.config.data,\n status: error.response.status,\n responseData: error.response.data\n }\n );\n }\n }\n return Promise.reject(error);\n }\n );\n \n this.textToSpeech = this.textToSpeech.bind(this);\n this.speechToText = this.speechToText.bind(this);\n }\n\n static configure(\n apiKey: string,\n inferUrl: string,\n streamUrl: string,\n assistantId: string\n ): AlquimiaSDKConfig {\n return {\n apiKey,\n chatUrl: `${inferUrl}/chat/${assistantId}`,\n streamUrl: `${streamUrl}`,\n assistantId: assistantId\n };\n }\n\n widthConversationId(conversationId: string ): AlquimiaSDK {\n this.conversationId = conversationId \n return this;\n }\n\n withWhisperProvider(provider: WhisperProvider): AlquimiaSDK {\n this.whisperProvider = provider;\n return this;\n }\n\n withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK {\n this.stableDiffusionProvider = provider\n return this\n }\n\n withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK {\n this.analyzeCharacterizationProvider = provider\n return this\n }\n\n withRatingsProvider(provider: RatingsProvider): AlquimiaSDK {\n this.ratingsProvider = provider\n return this\n }\n\n withLoggerProvider(provider: LoggerProvider): AlquimiaSDK {\n this.loggerProvider = provider\n return this\n }\n\n getEnforceCharacterization(): boolean {\n return this.enforceCharacterization ?? true;\n }\n\n withTools(tools: any): AlquimiaSDK {\n this.tools = tools;\n return this;\n }\n\n withExtraData(extraData: any): AlquimiaSDK {\n this.extraData = extraData;\n return this;\n }\n\n withForceProfile(forceProfile: any): AlquimiaSDK {\n this.forceProfile = forceProfile;\n return this;\n }\n\n textToSpeech(text: string): Promise<TTSResult> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.textToSpeech(text)\n }\n\n speechToText(audio: string): Promise<string> {\n if (!this.whisperProvider) {\n throw new Error(\"Whisper provider not initialized\");\n }\n return this.whisperProvider.speechToText(audio)\n }\n\n async sendMessage(query: string, traceParent?: string) {\n if (!this.conversationId) {\n throw new Error(\"Conversation not initialized\");\n }\n\n const initMessage = {\n query,\n session_id: this.conversationId,\n extra_data: this.extraData,\n force_profile: this.forceProfile\n };\n \n const result = (await this.axiosInstance.post(this.config.chatUrl, initMessage, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-trace-parent\": traceParent || \"\",\n },\n })).data\n \n this.streamId = result.stream_id;\n return this\n }\n\n async generateImage(query: string) {\n if (!this.stableDiffusionProvider) {\n throw new Error(\"Stable Diffusion provider not initialized\");\n }\n return this.stableDiffusionProvider.generateImage(query)\n }\n\n async analyzeCharacterization(text: string) {\n if (!this.analyzeCharacterizationProvider) {\n throw new Error(\"analyze characterization provider not initialized\");\n }\n return this.analyzeCharacterizationProvider.analyzeCharacterization(text)\n }\n\n async rate(data: any) {\n if (!this.ratingsProvider) {\n throw new Error(\"ratings provider not initialized\");\n }\n return this.ratingsProvider.rate(data)\n }\n\n async logInfo(message: string, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logInfo(message, data)\n }\n\n async logError(message: string, error: Error, data: any) {\n if (!this.loggerProvider) {\n throw new Error(\"logger provider not initialized\");\n }\n return this.loggerProvider.logError(message, error, data)\n }\n\n getUrlStream() {\n return `${this.config.streamUrl}/${this.streamId}`;\n }\n}\n\nexport default AlquimiaSDK;\n"],"mappings":"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","names":[]}
@@ -138,5 +138,79 @@ type TTSResult = {
138
138
  type: 'error';
139
139
  message: string;
140
140
  };
141
+ interface AlquimiaEventData {
142
+ stream_id: string;
143
+ response: AssistantInferenceResponse;
144
+ experts: ExpertInferenceResponse[];
145
+ thinkings: ThinkingsInferenceResponse[];
146
+ tools_output: any[];
147
+ agents_output: any[];
148
+ tools_pending_approval: any[];
149
+ tools_pending_execution: any[];
150
+ errors: any[];
151
+ event_class: string;
152
+ date_submitted: string;
153
+ control_id: string;
154
+ }
155
+ interface AssistantInferenceResponse {
156
+ event_class: string;
157
+ control_id: string;
158
+ data: AssistantResponseData;
159
+ status: string;
160
+ date_submitted: string;
161
+ }
162
+ interface AssistantResponseData {
163
+ content: string;
164
+ additional_kwargs: Record<string, any>;
165
+ response_metadata: ResponseMetadata;
166
+ type: string;
167
+ id: string;
168
+ example: boolean;
169
+ tool_calls: any[];
170
+ invalid_tool_calls: any[];
171
+ usage_metadata: UsageMetadata;
172
+ }
173
+ interface ResponseMetadata {
174
+ token_usage: TokenUsage;
175
+ model_name: string;
176
+ system_fingerprint: string;
177
+ finish_reason: string;
178
+ logprobs: any | null;
179
+ }
180
+ interface TokenUsage {
181
+ completion_tokens: number;
182
+ prompt_tokens: number;
183
+ total_tokens: number;
184
+ completion_time: number;
185
+ prompt_time: number;
186
+ queue_time: number;
187
+ total_time: number;
188
+ }
189
+ interface UsageMetadata {
190
+ input_tokens: number;
191
+ output_tokens: number;
192
+ total_tokens: number;
193
+ }
194
+ interface ExpertInferenceResponse {
195
+ event_class: string;
196
+ control_id: string;
197
+ data: {
198
+ label: string;
199
+ score: number;
200
+ };
201
+ status: string;
202
+ date_submitted: string;
203
+ }
204
+ interface ThinkingsInferenceResponse {
205
+ event_class: string;
206
+ control_id: string;
207
+ data: {
208
+ content: AssistantResponseData;
209
+ is_complete: boolean;
210
+ is_partial: boolean;
211
+ };
212
+ status: string;
213
+ date_submitted: string;
214
+ }
141
215
 
142
- export { type AIMessageChunk, type AIMessageChunkData, type ActionResponse, type AlquimiaMessage, type ApiError, type ApmSpan, type BaseAPIConfig, type ConversationsMap, type DocumentSearchResult, type ElevenLabsRequestSpecs, type ElevenLabsVoiceSettings, type IToolSpec, type ITooler, type RatingData, type TTSResult, ToolFactory, type ToolSummary, type Tooler };
216
+ export { type AIMessageChunk, type AIMessageChunkData, type ActionResponse, type AlquimiaEventData, type AlquimiaMessage, type ApiError, type ApmSpan, type AssistantInferenceResponse, type AssistantResponseData, type BaseAPIConfig, type ConversationsMap, type DocumentSearchResult, type ElevenLabsRequestSpecs, type ElevenLabsVoiceSettings, type ExpertInferenceResponse, type IToolSpec, type ITooler, type RatingData, type ResponseMetadata, type TTSResult, type ThinkingsInferenceResponse, type TokenUsage, ToolFactory, type ToolSummary, type Tooler, type UsageMetadata };
@@ -138,5 +138,79 @@ type TTSResult = {
138
138
  type: 'error';
139
139
  message: string;
140
140
  };
141
+ interface AlquimiaEventData {
142
+ stream_id: string;
143
+ response: AssistantInferenceResponse;
144
+ experts: ExpertInferenceResponse[];
145
+ thinkings: ThinkingsInferenceResponse[];
146
+ tools_output: any[];
147
+ agents_output: any[];
148
+ tools_pending_approval: any[];
149
+ tools_pending_execution: any[];
150
+ errors: any[];
151
+ event_class: string;
152
+ date_submitted: string;
153
+ control_id: string;
154
+ }
155
+ interface AssistantInferenceResponse {
156
+ event_class: string;
157
+ control_id: string;
158
+ data: AssistantResponseData;
159
+ status: string;
160
+ date_submitted: string;
161
+ }
162
+ interface AssistantResponseData {
163
+ content: string;
164
+ additional_kwargs: Record<string, any>;
165
+ response_metadata: ResponseMetadata;
166
+ type: string;
167
+ id: string;
168
+ example: boolean;
169
+ tool_calls: any[];
170
+ invalid_tool_calls: any[];
171
+ usage_metadata: UsageMetadata;
172
+ }
173
+ interface ResponseMetadata {
174
+ token_usage: TokenUsage;
175
+ model_name: string;
176
+ system_fingerprint: string;
177
+ finish_reason: string;
178
+ logprobs: any | null;
179
+ }
180
+ interface TokenUsage {
181
+ completion_tokens: number;
182
+ prompt_tokens: number;
183
+ total_tokens: number;
184
+ completion_time: number;
185
+ prompt_time: number;
186
+ queue_time: number;
187
+ total_time: number;
188
+ }
189
+ interface UsageMetadata {
190
+ input_tokens: number;
191
+ output_tokens: number;
192
+ total_tokens: number;
193
+ }
194
+ interface ExpertInferenceResponse {
195
+ event_class: string;
196
+ control_id: string;
197
+ data: {
198
+ label: string;
199
+ score: number;
200
+ };
201
+ status: string;
202
+ date_submitted: string;
203
+ }
204
+ interface ThinkingsInferenceResponse {
205
+ event_class: string;
206
+ control_id: string;
207
+ data: {
208
+ content: AssistantResponseData;
209
+ is_complete: boolean;
210
+ is_partial: boolean;
211
+ };
212
+ status: string;
213
+ date_submitted: string;
214
+ }
141
215
 
142
- export { type AIMessageChunk, type AIMessageChunkData, type ActionResponse, type AlquimiaMessage, type ApiError, type ApmSpan, type BaseAPIConfig, type ConversationsMap, type DocumentSearchResult, type ElevenLabsRequestSpecs, type ElevenLabsVoiceSettings, type IToolSpec, type ITooler, type RatingData, type TTSResult, ToolFactory, type ToolSummary, type Tooler };
216
+ export { type AIMessageChunk, type AIMessageChunkData, type ActionResponse, type AlquimiaEventData, type AlquimiaMessage, type ApiError, type ApmSpan, type AssistantInferenceResponse, type AssistantResponseData, type BaseAPIConfig, type ConversationsMap, type DocumentSearchResult, type ElevenLabsRequestSpecs, type ElevenLabsVoiceSettings, type ExpertInferenceResponse, type IToolSpec, type ITooler, type RatingData, type ResponseMetadata, type TTSResult, type ThinkingsInferenceResponse, type TokenUsage, ToolFactory, type ToolSummary, type Tooler, type UsageMetadata };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts","../../src/types/type.ts"],"sourcesContent":["export * from './type'","import { Span } from \"@elastic/apm-rum\";\nimport { Message } from \"ai\";\nexport interface ITooler {\n tooler: Array<{\n name: string;\n parameters: Record<string, any>;\n }>;\n}\n\nexport interface IToolSpec {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport abstract class ToolFactory {\n protected toolSpec: IToolSpec | null = null;\n\n constructor(toolSpec: IToolSpec) {\n this.toolSpec = toolSpec;\n }\n\n static createTool(toolSpec: IToolSpec): IToolSpec {\n return toolSpec;\n }\n\n abstract execute(): Promise<any>;\n}\n\nexport interface AIMessageChunk {\n type: string;\n data?: AIMessageChunkData;\n answer?: string;\n tooler?: Tooler;\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n}\n\nexport interface AIMessageChunkData {\n content: string;\n additional_kwargs?: Record<string, unknown>;\n response_metadata?: Record<string, unknown>;\n type: string;\n name?: string | null;\n id?: string | null;\n example?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: any;\n tool_call_chunks?: unknown[];\n error_code?: string;\n error_detail?: string;\n}\n\ntype ToolCall = {\n name: string;\n args: Record<string, any>;\n id?: string | null;\n};\n\ntype InvalidToolCall = {\n name: string | null;\n args: string | null;\n id: string | null;\n error: string | null;\n};\n\nexport interface BaseAPIConfig {\n baseUrl: string;\n route: string;\n token?: string;\n headers?: Record<string, string>;\n}\n\nexport interface RatingData {\n assistantId: string;\n sessionId: string;\n topicId: number;\n score?: number;\n description?: string;\n}\n\nexport type AlquimiaMessage = Message & {\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n created_at?: string;\n additionalInfo?: string;\n tooler?: Tooler;\n};\n\nexport interface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n error?: {\n message: string;\n code?: string;\n details?: any;\n name?: string;\n cause?: string;\n status?: string;\n };\n}\n\nexport type ApmSpan = Span & {\n id?: string \n traceId?: string\n} | undefined\n\nexport type ApiError = Error & {\n message: string;\n name: string;\n cause: string;\n code?: string | number;\n status?: string | number;\n}\n\nexport type Tooler = {\n tool_summary?: ToolSummary;\n tool_output?: Record<string, any>;\n}\n\nexport type ToolSummary = {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport interface ConversationsMap {\n [topicId: string]: string;\n}\n\nexport interface DocumentSearchResult {\n pageContent: string;\n metadata: {\n source: string;\n _id: string;\n _collection_name: string;\n };\n score: number;\n}\n\nexport type ElevenLabsVoiceSettings = {\n stability: number;\n similarity_boost: number;\n style: number;\n};\n\nexport type ElevenLabsRequestSpecs = {\n optimize_streaming_latency: string;\n output_format: string;\n model_id: string;\n language: string;\n voice_settings: ElevenLabsVoiceSettings;\n};\n\nexport type TTSResult =\n | { type: 'blob'; data: Blob }\n | { type: 'url'; data: string }\n | { type: 'error'; message: string };"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACcO,IAAe,cAAf,MAA2B;AAAA,EAGhC,YAAY,UAAqB;AAFjC,SAAU,WAA6B;AAGrC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAO,WAAW,UAAgC;AAChD,WAAO;AAAA,EACT;AAGF;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts","../../src/types/type.ts"],"sourcesContent":["export * from './type'","import { Span } from \"@elastic/apm-rum\";\nimport { Message } from \"ai\";\nexport interface ITooler {\n tooler: Array<{\n name: string;\n parameters: Record<string, any>;\n }>;\n}\n\nexport interface IToolSpec {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport abstract class ToolFactory {\n protected toolSpec: IToolSpec | null = null;\n\n constructor(toolSpec: IToolSpec) {\n this.toolSpec = toolSpec;\n }\n\n static createTool(toolSpec: IToolSpec): IToolSpec {\n return toolSpec;\n }\n\n abstract execute(): Promise<any>;\n}\n\nexport interface AIMessageChunk {\n type: string;\n data?: AIMessageChunkData;\n answer?: string;\n tooler?: Tooler;\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n}\n\nexport interface AIMessageChunkData {\n content: string;\n additional_kwargs?: Record<string, unknown>;\n response_metadata?: Record<string, unknown>;\n type: string;\n name?: string | null;\n id?: string | null;\n example?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: any;\n tool_call_chunks?: unknown[];\n error_code?: string;\n error_detail?: string;\n}\n\ntype ToolCall = {\n name: string;\n args: Record<string, any>;\n id?: string | null;\n};\n\ntype InvalidToolCall = {\n name: string | null;\n args: string | null;\n id: string | null;\n error: string | null;\n};\n\nexport interface BaseAPIConfig {\n baseUrl: string;\n route: string;\n token?: string;\n headers?: Record<string, string>;\n}\n\nexport interface RatingData {\n assistantId: string;\n sessionId: string;\n topicId: number;\n score?: number;\n description?: string;\n}\n\nexport type AlquimiaMessage = Message & {\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n created_at?: string;\n additionalInfo?: string;\n tooler?: Tooler;\n};\n\nexport interface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n error?: {\n message: string;\n code?: string;\n details?: any;\n name?: string;\n cause?: string;\n status?: string;\n };\n}\n\nexport type ApmSpan = Span & {\n id?: string \n traceId?: string\n} | undefined\n\nexport type ApiError = Error & {\n message: string;\n name: string;\n cause: string;\n code?: string | number;\n status?: string | number;\n}\n\nexport type Tooler = {\n tool_summary?: ToolSummary;\n tool_output?: Record<string, any>;\n}\n\nexport type ToolSummary = {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport interface ConversationsMap {\n [topicId: string]: string;\n}\n\nexport interface DocumentSearchResult {\n pageContent: string;\n metadata: {\n source: string;\n _id: string;\n _collection_name: string;\n };\n score: number;\n}\n\nexport type ElevenLabsVoiceSettings = {\n stability: number;\n similarity_boost: number;\n style: number;\n};\n\nexport type ElevenLabsRequestSpecs = {\n optimize_streaming_latency: string;\n output_format: string;\n model_id: string;\n language: string;\n voice_settings: ElevenLabsVoiceSettings;\n};\n\nexport type TTSResult =\n | { type: 'blob'; data: Blob }\n | { type: 'url'; data: string }\n | { type: 'error'; message: string };\n\n export interface AlquimiaEventData {\n stream_id: string;\n response: AssistantInferenceResponse;\n experts: ExpertInferenceResponse[];\n thinkings: ThinkingsInferenceResponse[];\n tools_output: any[];\n agents_output: any[];\n tools_pending_approval: any[];\n tools_pending_execution: any[];\n errors: any[];\n event_class: string;\n date_submitted: string;\n control_id: string;\n }\n\n export interface AssistantInferenceResponse {\n event_class: string;\n control_id: string;\n data: AssistantResponseData;\n status: string;\n date_submitted: string;\n }\n\n export interface AssistantResponseData {\n content: string;\n additional_kwargs: Record<string, any>;\n response_metadata: ResponseMetadata;\n type: string;\n id: string;\n example: boolean;\n tool_calls: any[];\n invalid_tool_calls: any[];\n usage_metadata: UsageMetadata;\n }\n\n export interface ResponseMetadata {\n token_usage: TokenUsage;\n model_name: string;\n system_fingerprint: string;\n finish_reason: string;\n logprobs: any | null;\n }\n\n export interface TokenUsage {\n completion_tokens: number;\n prompt_tokens: number;\n total_tokens: number;\n completion_time: number;\n prompt_time: number;\n queue_time: number;\n total_time: number;\n }\n\n export interface UsageMetadata {\n input_tokens: number;\n output_tokens: number;\n total_tokens: number;\n }\n\n export interface ExpertInferenceResponse {\n event_class: string;\n control_id: string;\n data: {\n label: string;\n score: number;\n };\n status: string;\n date_submitted: string;\n }\n\n export interface ThinkingsInferenceResponse {\n event_class: string;\n control_id: string;\n data: {\n content: AssistantResponseData;\n is_complete: boolean;\n is_partial: boolean;\n };\n status: string;\n date_submitted: string;\n }"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACcO,IAAe,cAAf,MAA2B;AAAA,EAGhC,YAAY,UAAqB;AAFjC,SAAU,WAA6B;AAGrC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAO,WAAW,UAAgC;AAChD,WAAO;AAAA,EACT;AAGF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/type.ts"],"sourcesContent":["import { Span } from \"@elastic/apm-rum\";\nimport { Message } from \"ai\";\nexport interface ITooler {\n tooler: Array<{\n name: string;\n parameters: Record<string, any>;\n }>;\n}\n\nexport interface IToolSpec {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport abstract class ToolFactory {\n protected toolSpec: IToolSpec | null = null;\n\n constructor(toolSpec: IToolSpec) {\n this.toolSpec = toolSpec;\n }\n\n static createTool(toolSpec: IToolSpec): IToolSpec {\n return toolSpec;\n }\n\n abstract execute(): Promise<any>;\n}\n\nexport interface AIMessageChunk {\n type: string;\n data?: AIMessageChunkData;\n answer?: string;\n tooler?: Tooler;\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n}\n\nexport interface AIMessageChunkData {\n content: string;\n additional_kwargs?: Record<string, unknown>;\n response_metadata?: Record<string, unknown>;\n type: string;\n name?: string | null;\n id?: string | null;\n example?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: any;\n tool_call_chunks?: unknown[];\n error_code?: string;\n error_detail?: string;\n}\n\ntype ToolCall = {\n name: string;\n args: Record<string, any>;\n id?: string | null;\n};\n\ntype InvalidToolCall = {\n name: string | null;\n args: string | null;\n id: string | null;\n error: string | null;\n};\n\nexport interface BaseAPIConfig {\n baseUrl: string;\n route: string;\n token?: string;\n headers?: Record<string, string>;\n}\n\nexport interface RatingData {\n assistantId: string;\n sessionId: string;\n topicId: number;\n score?: number;\n description?: string;\n}\n\nexport type AlquimiaMessage = Message & {\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n created_at?: string;\n additionalInfo?: string;\n tooler?: Tooler;\n};\n\nexport interface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n error?: {\n message: string;\n code?: string;\n details?: any;\n name?: string;\n cause?: string;\n status?: string;\n };\n}\n\nexport type ApmSpan = Span & {\n id?: string \n traceId?: string\n} | undefined\n\nexport type ApiError = Error & {\n message: string;\n name: string;\n cause: string;\n code?: string | number;\n status?: string | number;\n}\n\nexport type Tooler = {\n tool_summary?: ToolSummary;\n tool_output?: Record<string, any>;\n}\n\nexport type ToolSummary = {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport interface ConversationsMap {\n [topicId: string]: string;\n}\n\nexport interface DocumentSearchResult {\n pageContent: string;\n metadata: {\n source: string;\n _id: string;\n _collection_name: string;\n };\n score: number;\n}\n\nexport type ElevenLabsVoiceSettings = {\n stability: number;\n similarity_boost: number;\n style: number;\n};\n\nexport type ElevenLabsRequestSpecs = {\n optimize_streaming_latency: string;\n output_format: string;\n model_id: string;\n language: string;\n voice_settings: ElevenLabsVoiceSettings;\n};\n\nexport type TTSResult =\n | { type: 'blob'; data: Blob }\n | { type: 'url'; data: string }\n | { type: 'error'; message: string };"],"mappings":";AAcO,IAAe,cAAf,MAA2B;AAAA,EAGhC,YAAY,UAAqB;AAFjC,SAAU,WAA6B;AAGrC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAO,WAAW,UAAgC;AAChD,WAAO;AAAA,EACT;AAGF;","names":[]}
1
+ {"version":3,"sources":["../../src/types/type.ts"],"sourcesContent":["import { Span } from \"@elastic/apm-rum\";\nimport { Message } from \"ai\";\nexport interface ITooler {\n tooler: Array<{\n name: string;\n parameters: Record<string, any>;\n }>;\n}\n\nexport interface IToolSpec {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport abstract class ToolFactory {\n protected toolSpec: IToolSpec | null = null;\n\n constructor(toolSpec: IToolSpec) {\n this.toolSpec = toolSpec;\n }\n\n static createTool(toolSpec: IToolSpec): IToolSpec {\n return toolSpec;\n }\n\n abstract execute(): Promise<any>;\n}\n\nexport interface AIMessageChunk {\n type: string;\n data?: AIMessageChunkData;\n answer?: string;\n tooler?: Tooler;\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n}\n\nexport interface AIMessageChunkData {\n content: string;\n additional_kwargs?: Record<string, unknown>;\n response_metadata?: Record<string, unknown>;\n type: string;\n name?: string | null;\n id?: string | null;\n example?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: any;\n tool_call_chunks?: unknown[];\n error_code?: string;\n error_detail?: string;\n}\n\ntype ToolCall = {\n name: string;\n args: Record<string, any>;\n id?: string | null;\n};\n\ntype InvalidToolCall = {\n name: string | null;\n args: string | null;\n id: string | null;\n error: string | null;\n};\n\nexport interface BaseAPIConfig {\n baseUrl: string;\n route: string;\n token?: string;\n headers?: Record<string, string>;\n}\n\nexport interface RatingData {\n assistantId: string;\n sessionId: string;\n topicId: number;\n score?: number;\n description?: string;\n}\n\nexport type AlquimiaMessage = Message & {\n error_code?: string;\n error_detail?: string;\n loading?: boolean;\n created_at?: string;\n additionalInfo?: string;\n tooler?: Tooler;\n};\n\nexport interface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n error?: {\n message: string;\n code?: string;\n details?: any;\n name?: string;\n cause?: string;\n status?: string;\n };\n}\n\nexport type ApmSpan = Span & {\n id?: string \n traceId?: string\n} | undefined\n\nexport type ApiError = Error & {\n message: string;\n name: string;\n cause: string;\n code?: string | number;\n status?: string | number;\n}\n\nexport type Tooler = {\n tool_summary?: ToolSummary;\n tool_output?: Record<string, any>;\n}\n\nexport type ToolSummary = {\n name: string;\n parameters: Record<string, any>;\n}\n\nexport interface ConversationsMap {\n [topicId: string]: string;\n}\n\nexport interface DocumentSearchResult {\n pageContent: string;\n metadata: {\n source: string;\n _id: string;\n _collection_name: string;\n };\n score: number;\n}\n\nexport type ElevenLabsVoiceSettings = {\n stability: number;\n similarity_boost: number;\n style: number;\n};\n\nexport type ElevenLabsRequestSpecs = {\n optimize_streaming_latency: string;\n output_format: string;\n model_id: string;\n language: string;\n voice_settings: ElevenLabsVoiceSettings;\n};\n\nexport type TTSResult =\n | { type: 'blob'; data: Blob }\n | { type: 'url'; data: string }\n | { type: 'error'; message: string };\n\n export interface AlquimiaEventData {\n stream_id: string;\n response: AssistantInferenceResponse;\n experts: ExpertInferenceResponse[];\n thinkings: ThinkingsInferenceResponse[];\n tools_output: any[];\n agents_output: any[];\n tools_pending_approval: any[];\n tools_pending_execution: any[];\n errors: any[];\n event_class: string;\n date_submitted: string;\n control_id: string;\n }\n\n export interface AssistantInferenceResponse {\n event_class: string;\n control_id: string;\n data: AssistantResponseData;\n status: string;\n date_submitted: string;\n }\n\n export interface AssistantResponseData {\n content: string;\n additional_kwargs: Record<string, any>;\n response_metadata: ResponseMetadata;\n type: string;\n id: string;\n example: boolean;\n tool_calls: any[];\n invalid_tool_calls: any[];\n usage_metadata: UsageMetadata;\n }\n\n export interface ResponseMetadata {\n token_usage: TokenUsage;\n model_name: string;\n system_fingerprint: string;\n finish_reason: string;\n logprobs: any | null;\n }\n\n export interface TokenUsage {\n completion_tokens: number;\n prompt_tokens: number;\n total_tokens: number;\n completion_time: number;\n prompt_time: number;\n queue_time: number;\n total_time: number;\n }\n\n export interface UsageMetadata {\n input_tokens: number;\n output_tokens: number;\n total_tokens: number;\n }\n\n export interface ExpertInferenceResponse {\n event_class: string;\n control_id: string;\n data: {\n label: string;\n score: number;\n };\n status: string;\n date_submitted: string;\n }\n\n export interface ThinkingsInferenceResponse {\n event_class: string;\n control_id: string;\n data: {\n content: AssistantResponseData;\n is_complete: boolean;\n is_partial: boolean;\n };\n status: string;\n date_submitted: string;\n }"],"mappings":";AAcO,IAAe,cAAf,MAA2B;AAAA,EAGhC,YAAY,UAAqB;AAFjC,SAAU,WAA6B;AAGrC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAO,WAAW,UAAgC;AAChD,WAAO;AAAA,EACT;AAGF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alquimia-ai/tools",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "author": "Alquimia AI",
5
5
  "description": "tools for Alquimia SDK",
6
6
  "private": false,