@alquimia-ai/tools 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/alquimia.action.d.mts +3 -0
- package/dist/actions/alquimia.action.d.ts +3 -0
- package/dist/actions/alquimia.action.js +62 -0
- package/dist/actions/alquimia.action.js.map +1 -0
- package/dist/actions/alquimia.action.mjs +38 -0
- package/dist/actions/alquimia.action.mjs.map +1 -0
- package/dist/actions/baseApi.action.d.mts +20 -0
- package/dist/actions/baseApi.action.d.ts +20 -0
- package/dist/actions/baseApi.action.js +202 -0
- package/dist/actions/baseApi.action.js.map +1 -0
- package/dist/actions/baseApi.action.mjs +173 -0
- package/dist/actions/baseApi.action.mjs.map +1 -0
- package/dist/actions/index.d.mts +5 -0
- package/dist/actions/index.d.ts +5 -0
- package/dist/actions/index.js +236 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/index.mjs +205 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/alquimia-sdk-DK0XLjol.d.mts +77 -0
- package/dist/alquimia-sdk-DK0XLjol.d.ts +77 -0
- package/dist/context/index.d.mts +22 -0
- package/dist/context/index.d.ts +22 -0
- package/dist/context/index.js +124 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/index.mjs +96 -0
- package/dist/context/index.mjs.map +1 -0
- package/dist/hooks/index.d.mts +54 -0
- package/dist/hooks/index.d.ts +54 -0
- package/dist/hooks/index.js +344 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +316 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/index.d.mts +14 -303
- package/dist/index.d.ts +14 -303
- package/dist/index.js +1143 -2448
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1079 -2213
- package/dist/index.mjs.map +1 -1
- package/dist/sdk/index.d.mts +74 -0
- package/dist/sdk/index.d.ts +74 -0
- package/dist/sdk/index.js +561 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/index.mjs +510 -0
- package/dist/sdk/index.mjs.map +1 -0
- package/dist/services/index.d.mts +26 -0
- package/dist/services/index.d.ts +26 -0
- package/dist/services/index.js +93 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/index.mjs +63 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/types/index.d.mts +105 -0
- package/dist/types/index.d.ts +105 -0
- package/dist/types/index.js +41 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +14 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/index.d.mts +29 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.js +170 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +133 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +42 -13
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/actions/index.ts
|
|
21
|
+
var actions_exports = {};
|
|
22
|
+
__export(actions_exports, {
|
|
23
|
+
createResource: () => createResource,
|
|
24
|
+
deleteResource: () => deleteResource,
|
|
25
|
+
initConversation: () => initConversation,
|
|
26
|
+
readResource: () => readResource,
|
|
27
|
+
updateResource: () => updateResource
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(actions_exports);
|
|
30
|
+
|
|
31
|
+
// src/actions/alquimia.action.ts
|
|
32
|
+
var import_crypto = require("crypto");
|
|
33
|
+
var import_headers = require("next/headers");
|
|
34
|
+
async function initConversation(reset, topicId) {
|
|
35
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
36
|
+
if (!topicId) {
|
|
37
|
+
let conversationId = (0, import_crypto.randomUUID)().toString();
|
|
38
|
+
const alquimia_session = cookieStore.get("alquimia-session");
|
|
39
|
+
if (!alquimia_session || reset) {
|
|
40
|
+
cookieStore.set("alquimia-session", conversationId);
|
|
41
|
+
} else {
|
|
42
|
+
conversationId = alquimia_session.value;
|
|
43
|
+
}
|
|
44
|
+
return conversationId;
|
|
45
|
+
}
|
|
46
|
+
let conversationsMap = {};
|
|
47
|
+
const existingConversations = cookieStore.get("alquimia-sessions");
|
|
48
|
+
if (existingConversations) {
|
|
49
|
+
try {
|
|
50
|
+
const decodedValue = decodeURIComponent(existingConversations.value);
|
|
51
|
+
conversationsMap = JSON.parse(decodedValue);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
console.error("Error parsing conversations cookie:", e);
|
|
54
|
+
conversationsMap = {};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!conversationsMap[topicId] || reset) {
|
|
58
|
+
conversationsMap[topicId] = (0, import_crypto.randomUUID)().toString();
|
|
59
|
+
}
|
|
60
|
+
cookieStore.set("alquimia-sessions", JSON.stringify(conversationsMap));
|
|
61
|
+
return conversationsMap[topicId];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/utils/utils.ts
|
|
65
|
+
function generateHeaders(config) {
|
|
66
|
+
const headers = {
|
|
67
|
+
"Content-Type": "application/json"
|
|
68
|
+
};
|
|
69
|
+
if (config.token) {
|
|
70
|
+
headers["Authorization"] = `Bearer ${config.token}`;
|
|
71
|
+
}
|
|
72
|
+
if (config.headers) {
|
|
73
|
+
Object.entries(config.headers).forEach(([key, value]) => {
|
|
74
|
+
headers[key] = value;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return headers;
|
|
78
|
+
}
|
|
79
|
+
function isTextContent(buffer) {
|
|
80
|
+
try {
|
|
81
|
+
const text = new TextDecoder().decode(buffer);
|
|
82
|
+
return /^[\w\#\-\*]/.test(text.trim());
|
|
83
|
+
} catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/actions/baseApi.action.ts
|
|
89
|
+
async function createResource(config, payload) {
|
|
90
|
+
try {
|
|
91
|
+
const headers = generateHeaders(config);
|
|
92
|
+
const response = await fetch(`${config.baseUrl}${config.route}`, {
|
|
93
|
+
method: "POST",
|
|
94
|
+
headers,
|
|
95
|
+
body: JSON.stringify(payload),
|
|
96
|
+
cache: "default"
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
const error = await response.json();
|
|
100
|
+
return {
|
|
101
|
+
success: false,
|
|
102
|
+
error: {
|
|
103
|
+
message: error.message || `Server returned ${response.status}`,
|
|
104
|
+
code: response.status.toString(),
|
|
105
|
+
details: {
|
|
106
|
+
status: response.status,
|
|
107
|
+
statusText: response.statusText
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
success: true,
|
|
114
|
+
data: await response.json()
|
|
115
|
+
};
|
|
116
|
+
} catch (error) {
|
|
117
|
+
throw new Error("Failed to create resource");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function readResource(config, id) {
|
|
121
|
+
try {
|
|
122
|
+
const headers = generateHeaders(config);
|
|
123
|
+
const url = id ? `${config.baseUrl}${config.route}/${id}` : `${config.baseUrl}${config.route}`;
|
|
124
|
+
const response = await fetch(url, {
|
|
125
|
+
method: "GET",
|
|
126
|
+
headers,
|
|
127
|
+
cache: "default"
|
|
128
|
+
});
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
const error = await response.json();
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
error: {
|
|
134
|
+
message: error.message || `Server returned ${response.status}`,
|
|
135
|
+
code: response.status.toString(),
|
|
136
|
+
details: {
|
|
137
|
+
status: response.status,
|
|
138
|
+
statusText: response.statusText
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const contentType = response.headers.get("content-type");
|
|
144
|
+
if (contentType?.includes("application/json")) {
|
|
145
|
+
return {
|
|
146
|
+
success: true,
|
|
147
|
+
data: await response.json(),
|
|
148
|
+
contentType: contentType || void 0
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
152
|
+
if (contentType?.includes("octet-stream") && isTextContent(arrayBuffer)) {
|
|
153
|
+
return {
|
|
154
|
+
success: true,
|
|
155
|
+
data: arrayBuffer,
|
|
156
|
+
contentType: "text/plain"
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
success: true,
|
|
161
|
+
data: await response.json(),
|
|
162
|
+
contentType: contentType || void 0
|
|
163
|
+
};
|
|
164
|
+
} catch (error) {
|
|
165
|
+
throw new Error("Failed to read resource");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async function updateResource(config, id, data) {
|
|
169
|
+
try {
|
|
170
|
+
const headers = generateHeaders(config);
|
|
171
|
+
const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {
|
|
172
|
+
method: "PUT",
|
|
173
|
+
headers,
|
|
174
|
+
body: JSON.stringify(data),
|
|
175
|
+
cache: "default"
|
|
176
|
+
});
|
|
177
|
+
if (!response.ok) {
|
|
178
|
+
const error = await response.json();
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
error: {
|
|
182
|
+
message: error.message || `Server returned ${response.status}`,
|
|
183
|
+
code: response.status.toString(),
|
|
184
|
+
details: {
|
|
185
|
+
status: response.status,
|
|
186
|
+
statusText: response.statusText
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
success: true,
|
|
193
|
+
data: await response.json()
|
|
194
|
+
};
|
|
195
|
+
} catch (error) {
|
|
196
|
+
throw new Error("Failed to update resource");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function deleteResource(config, id) {
|
|
200
|
+
try {
|
|
201
|
+
const headers = generateHeaders(config);
|
|
202
|
+
const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {
|
|
203
|
+
method: "DELETE",
|
|
204
|
+
headers,
|
|
205
|
+
cache: "default"
|
|
206
|
+
});
|
|
207
|
+
if (!response.ok) {
|
|
208
|
+
const error = await response.json();
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: {
|
|
212
|
+
message: error.message || `Server returned ${response.status}`,
|
|
213
|
+
code: response.status.toString(),
|
|
214
|
+
details: {
|
|
215
|
+
status: response.status,
|
|
216
|
+
statusText: response.statusText
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
success: true
|
|
223
|
+
};
|
|
224
|
+
} catch (error) {
|
|
225
|
+
throw new Error("Failed to delete resource");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
229
|
+
0 && (module.exports = {
|
|
230
|
+
createResource,
|
|
231
|
+
deleteResource,
|
|
232
|
+
initConversation,
|
|
233
|
+
readResource,
|
|
234
|
+
updateResource
|
|
235
|
+
});
|
|
236
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/index.ts","../../src/actions/alquimia.action.ts","../../src/utils/utils.ts","../../src/actions/baseApi.action.ts"],"sourcesContent":["export * from './alquimia.action'\nexport * from './baseApi.action'","'use server'\nimport { randomUUID } from \"crypto\";\nimport { cookies } from \"next/headers\";\nimport { ConversationsMap } from \"../types/type\";\n\nexport async function initConversation(reset?: boolean, topicId?: string) {\n const cookieStore = await cookies();\n\n if (!topicId) {\n let conversationId = randomUUID().toString();\n const alquimia_session = cookieStore.get(\"alquimia-session\");\n\n if (!alquimia_session || reset) {\n cookieStore.set(\"alquimia-session\", conversationId);\n } else {\n conversationId = alquimia_session.value;\n }\n\n return conversationId;\n }\n\n let conversationsMap: ConversationsMap = {};\n const existingConversations = cookieStore.get(\"alquimia-sessions\");\n \n if (existingConversations) {\n try {\n const decodedValue = decodeURIComponent(existingConversations.value);\n conversationsMap = JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n conversationsMap = {};\n }\n }\n\n if (!conversationsMap[topicId] || reset) {\n conversationsMap[topicId] = randomUUID().toString();\n }\n\n cookieStore.set(\"alquimia-sessions\", JSON.stringify(conversationsMap));\n \n return conversationsMap[topicId];\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\n\n","\"use server\";\nimport { BaseAPIConfig } from \"../types/type\";\nimport { generateHeaders, isTextContent } from \"../utils\";\n\ninterface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n contentType?: string;\n error?: {\n message: string;\n code?: string;\n details?: any;\n };\n}\n\nexport async function createResource<TResponse, TPayload>(\n config: BaseAPIConfig,\n payload: TPayload\n): Promise<ActionResponse<TResponse>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n \n return {\n success: true,\n data: await response.json(),\n };\n } catch (error) {\n throw new Error(\"Failed to create resource\");\n }\n}\n\nexport async function readResource<T>(\n config: BaseAPIConfig,\n id?: string\n): Promise<ActionResponse<T>> {\n try {\n const headers = generateHeaders(config);\n const url = id\n ? `${config.baseUrl}${config.route}/${id}`\n : `${config.baseUrl}${config.route}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers,\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n const contentType = response.headers.get(\"content-type\");\n if (contentType?.includes(\"application/json\")) {\n return {\n success: true,\n data: await response.json(),\n contentType: contentType || undefined,\n };\n }\n\n const arrayBuffer = await response.arrayBuffer();\n\n if (contentType?.includes(\"octet-stream\") && isTextContent(arrayBuffer)) {\n return {\n success: true,\n data: arrayBuffer as T,\n contentType: \"text/plain\",\n };\n }\n\n return {\n success: true,\n data: await response.json(),\n contentType: contentType || undefined,\n };\n } catch (error) {\n throw new Error(\"Failed to read resource\");\n }\n}\n\nexport async function updateResource<T>(\n config: BaseAPIConfig,\n id: string,\n data: T\n): Promise<ActionResponse<T>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {\n method: \"PUT\",\n headers,\n body: JSON.stringify(data),\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n return {\n success: true,\n data: await response.json(),\n };\n } catch (error) {\n throw new Error(\"Failed to update resource\");\n }\n}\n\nexport async function deleteResource(\n config: BaseAPIConfig,\n id: string\n): Promise<ActionResponse<void>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {\n method: \"DELETE\",\n headers,\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n return {\n success: true,\n };\n } catch (error) {\n throw new Error(\"Failed to delete resource\");\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// src/actions/alquimia.action.ts
|
|
2
|
+
import { randomUUID } from "crypto";
|
|
3
|
+
import { cookies } from "next/headers";
|
|
4
|
+
async function initConversation(reset, topicId) {
|
|
5
|
+
const cookieStore = await cookies();
|
|
6
|
+
if (!topicId) {
|
|
7
|
+
let conversationId = randomUUID().toString();
|
|
8
|
+
const alquimia_session = cookieStore.get("alquimia-session");
|
|
9
|
+
if (!alquimia_session || reset) {
|
|
10
|
+
cookieStore.set("alquimia-session", conversationId);
|
|
11
|
+
} else {
|
|
12
|
+
conversationId = alquimia_session.value;
|
|
13
|
+
}
|
|
14
|
+
return conversationId;
|
|
15
|
+
}
|
|
16
|
+
let conversationsMap = {};
|
|
17
|
+
const existingConversations = cookieStore.get("alquimia-sessions");
|
|
18
|
+
if (existingConversations) {
|
|
19
|
+
try {
|
|
20
|
+
const decodedValue = decodeURIComponent(existingConversations.value);
|
|
21
|
+
conversationsMap = JSON.parse(decodedValue);
|
|
22
|
+
} catch (e) {
|
|
23
|
+
console.error("Error parsing conversations cookie:", e);
|
|
24
|
+
conversationsMap = {};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!conversationsMap[topicId] || reset) {
|
|
28
|
+
conversationsMap[topicId] = randomUUID().toString();
|
|
29
|
+
}
|
|
30
|
+
cookieStore.set("alquimia-sessions", JSON.stringify(conversationsMap));
|
|
31
|
+
return conversationsMap[topicId];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/utils/utils.ts
|
|
35
|
+
function generateHeaders(config) {
|
|
36
|
+
const headers = {
|
|
37
|
+
"Content-Type": "application/json"
|
|
38
|
+
};
|
|
39
|
+
if (config.token) {
|
|
40
|
+
headers["Authorization"] = `Bearer ${config.token}`;
|
|
41
|
+
}
|
|
42
|
+
if (config.headers) {
|
|
43
|
+
Object.entries(config.headers).forEach(([key, value]) => {
|
|
44
|
+
headers[key] = value;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return headers;
|
|
48
|
+
}
|
|
49
|
+
function isTextContent(buffer) {
|
|
50
|
+
try {
|
|
51
|
+
const text = new TextDecoder().decode(buffer);
|
|
52
|
+
return /^[\w\#\-\*]/.test(text.trim());
|
|
53
|
+
} catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/actions/baseApi.action.ts
|
|
59
|
+
async function createResource(config, payload) {
|
|
60
|
+
try {
|
|
61
|
+
const headers = generateHeaders(config);
|
|
62
|
+
const response = await fetch(`${config.baseUrl}${config.route}`, {
|
|
63
|
+
method: "POST",
|
|
64
|
+
headers,
|
|
65
|
+
body: JSON.stringify(payload),
|
|
66
|
+
cache: "default"
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
const error = await response.json();
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
error: {
|
|
73
|
+
message: error.message || `Server returned ${response.status}`,
|
|
74
|
+
code: response.status.toString(),
|
|
75
|
+
details: {
|
|
76
|
+
status: response.status,
|
|
77
|
+
statusText: response.statusText
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
data: await response.json()
|
|
85
|
+
};
|
|
86
|
+
} catch (error) {
|
|
87
|
+
throw new Error("Failed to create resource");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function readResource(config, id) {
|
|
91
|
+
try {
|
|
92
|
+
const headers = generateHeaders(config);
|
|
93
|
+
const url = id ? `${config.baseUrl}${config.route}/${id}` : `${config.baseUrl}${config.route}`;
|
|
94
|
+
const response = await fetch(url, {
|
|
95
|
+
method: "GET",
|
|
96
|
+
headers,
|
|
97
|
+
cache: "default"
|
|
98
|
+
});
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
const error = await response.json();
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: {
|
|
104
|
+
message: error.message || `Server returned ${response.status}`,
|
|
105
|
+
code: response.status.toString(),
|
|
106
|
+
details: {
|
|
107
|
+
status: response.status,
|
|
108
|
+
statusText: response.statusText
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const contentType = response.headers.get("content-type");
|
|
114
|
+
if (contentType?.includes("application/json")) {
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
data: await response.json(),
|
|
118
|
+
contentType: contentType || void 0
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
122
|
+
if (contentType?.includes("octet-stream") && isTextContent(arrayBuffer)) {
|
|
123
|
+
return {
|
|
124
|
+
success: true,
|
|
125
|
+
data: arrayBuffer,
|
|
126
|
+
contentType: "text/plain"
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
data: await response.json(),
|
|
132
|
+
contentType: contentType || void 0
|
|
133
|
+
};
|
|
134
|
+
} catch (error) {
|
|
135
|
+
throw new Error("Failed to read resource");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async function updateResource(config, id, data) {
|
|
139
|
+
try {
|
|
140
|
+
const headers = generateHeaders(config);
|
|
141
|
+
const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {
|
|
142
|
+
method: "PUT",
|
|
143
|
+
headers,
|
|
144
|
+
body: JSON.stringify(data),
|
|
145
|
+
cache: "default"
|
|
146
|
+
});
|
|
147
|
+
if (!response.ok) {
|
|
148
|
+
const error = await response.json();
|
|
149
|
+
return {
|
|
150
|
+
success: false,
|
|
151
|
+
error: {
|
|
152
|
+
message: error.message || `Server returned ${response.status}`,
|
|
153
|
+
code: response.status.toString(),
|
|
154
|
+
details: {
|
|
155
|
+
status: response.status,
|
|
156
|
+
statusText: response.statusText
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
data: await response.json()
|
|
164
|
+
};
|
|
165
|
+
} catch (error) {
|
|
166
|
+
throw new Error("Failed to update resource");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async function deleteResource(config, id) {
|
|
170
|
+
try {
|
|
171
|
+
const headers = generateHeaders(config);
|
|
172
|
+
const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {
|
|
173
|
+
method: "DELETE",
|
|
174
|
+
headers,
|
|
175
|
+
cache: "default"
|
|
176
|
+
});
|
|
177
|
+
if (!response.ok) {
|
|
178
|
+
const error = await response.json();
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
error: {
|
|
182
|
+
message: error.message || `Server returned ${response.status}`,
|
|
183
|
+
code: response.status.toString(),
|
|
184
|
+
details: {
|
|
185
|
+
status: response.status,
|
|
186
|
+
statusText: response.statusText
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
success: true
|
|
193
|
+
};
|
|
194
|
+
} catch (error) {
|
|
195
|
+
throw new Error("Failed to delete resource");
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export {
|
|
199
|
+
createResource,
|
|
200
|
+
deleteResource,
|
|
201
|
+
initConversation,
|
|
202
|
+
readResource,
|
|
203
|
+
updateResource
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/alquimia.action.ts","../../src/utils/utils.ts","../../src/actions/baseApi.action.ts"],"sourcesContent":["'use server'\nimport { randomUUID } from \"crypto\";\nimport { cookies } from \"next/headers\";\nimport { ConversationsMap } from \"../types/type\";\n\nexport async function initConversation(reset?: boolean, topicId?: string) {\n const cookieStore = await cookies();\n\n if (!topicId) {\n let conversationId = randomUUID().toString();\n const alquimia_session = cookieStore.get(\"alquimia-session\");\n\n if (!alquimia_session || reset) {\n cookieStore.set(\"alquimia-session\", conversationId);\n } else {\n conversationId = alquimia_session.value;\n }\n\n return conversationId;\n }\n\n let conversationsMap: ConversationsMap = {};\n const existingConversations = cookieStore.get(\"alquimia-sessions\");\n \n if (existingConversations) {\n try {\n const decodedValue = decodeURIComponent(existingConversations.value);\n conversationsMap = JSON.parse(decodedValue) as ConversationsMap;\n } catch (e) {\n console.error('Error parsing conversations cookie:', e);\n conversationsMap = {};\n }\n }\n\n if (!conversationsMap[topicId] || reset) {\n conversationsMap[topicId] = randomUUID().toString();\n }\n\n cookieStore.set(\"alquimia-sessions\", JSON.stringify(conversationsMap));\n \n return conversationsMap[topicId];\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\n\n","\"use server\";\nimport { BaseAPIConfig } from \"../types/type\";\nimport { generateHeaders, isTextContent } from \"../utils\";\n\ninterface ActionResponse<T = void> {\n success: boolean;\n data?: T;\n contentType?: string;\n error?: {\n message: string;\n code?: string;\n details?: any;\n };\n}\n\nexport async function createResource<TResponse, TPayload>(\n config: BaseAPIConfig,\n payload: TPayload\n): Promise<ActionResponse<TResponse>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n \n return {\n success: true,\n data: await response.json(),\n };\n } catch (error) {\n throw new Error(\"Failed to create resource\");\n }\n}\n\nexport async function readResource<T>(\n config: BaseAPIConfig,\n id?: string\n): Promise<ActionResponse<T>> {\n try {\n const headers = generateHeaders(config);\n const url = id\n ? `${config.baseUrl}${config.route}/${id}`\n : `${config.baseUrl}${config.route}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers,\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n const contentType = response.headers.get(\"content-type\");\n if (contentType?.includes(\"application/json\")) {\n return {\n success: true,\n data: await response.json(),\n contentType: contentType || undefined,\n };\n }\n\n const arrayBuffer = await response.arrayBuffer();\n\n if (contentType?.includes(\"octet-stream\") && isTextContent(arrayBuffer)) {\n return {\n success: true,\n data: arrayBuffer as T,\n contentType: \"text/plain\",\n };\n }\n\n return {\n success: true,\n data: await response.json(),\n contentType: contentType || undefined,\n };\n } catch (error) {\n throw new Error(\"Failed to read resource\");\n }\n}\n\nexport async function updateResource<T>(\n config: BaseAPIConfig,\n id: string,\n data: T\n): Promise<ActionResponse<T>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {\n method: \"PUT\",\n headers,\n body: JSON.stringify(data),\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n return {\n success: true,\n data: await response.json(),\n };\n } catch (error) {\n throw new Error(\"Failed to update resource\");\n }\n}\n\nexport async function deleteResource(\n config: BaseAPIConfig,\n id: string\n): Promise<ActionResponse<void>> {\n try {\n const headers = generateHeaders(config);\n\n const response = await fetch(`${config.baseUrl}${config.route}/${id}`, {\n method: \"DELETE\",\n headers,\n cache: \"default\",\n });\n\n if (!response.ok) {\n const error = await response.json();\n return {\n success: false,\n error: {\n message: error.message || `Server returned ${response.status}`,\n code: response.status.toString(),\n details: {\n status: response.status,\n statusText: response.statusText,\n },\n },\n };\n }\n\n return {\n success: true,\n };\n } catch (error) {\n throw new Error(\"Failed to delete resource\");\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
declare abstract class GenerativeProvider {
|
|
2
|
+
private config;
|
|
3
|
+
constructor(config: Record<string, any>);
|
|
4
|
+
}
|
|
5
|
+
declare abstract class WhisperProvider {
|
|
6
|
+
protected config: Record<string, any>;
|
|
7
|
+
constructor(config: Record<string, any>);
|
|
8
|
+
abstract textToSpeech(text: string): Promise<Blob>;
|
|
9
|
+
abstract speechToText(audio: string): Promise<string>;
|
|
10
|
+
}
|
|
11
|
+
declare abstract class StableDiffusionProvider {
|
|
12
|
+
protected config: Record<string, any>;
|
|
13
|
+
constructor(config: Record<string, any>);
|
|
14
|
+
abstract generateImage(query: string): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
declare abstract class CharacterizationProvider {
|
|
17
|
+
protected config: Record<string, any>;
|
|
18
|
+
constructor(config: Record<string, any>);
|
|
19
|
+
abstract analyzeCharacterization(text: string): Promise<Record<string, any>>;
|
|
20
|
+
}
|
|
21
|
+
declare abstract class RatingsProvider {
|
|
22
|
+
protected config: Record<string, any>;
|
|
23
|
+
constructor(config: Record<string, any>);
|
|
24
|
+
abstract rate(data: Record<string, any>): Promise<Record<string, any>>;
|
|
25
|
+
}
|
|
26
|
+
declare abstract class LoggerProvider {
|
|
27
|
+
protected config: Record<string, any>;
|
|
28
|
+
constructor(config: Record<string, any>);
|
|
29
|
+
abstract logInfo(message: string, data?: Record<string, any>): void;
|
|
30
|
+
abstract logError(message: string, error: Error, data?: Record<string, any>): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface AlquimiaSDKConfig {
|
|
34
|
+
apiKey: string;
|
|
35
|
+
chatUrl: string;
|
|
36
|
+
streamUrl: string;
|
|
37
|
+
assistantId: string;
|
|
38
|
+
}
|
|
39
|
+
declare class AlquimiaSDK {
|
|
40
|
+
private config;
|
|
41
|
+
private axiosInstance;
|
|
42
|
+
private conversationId;
|
|
43
|
+
private sessionId;
|
|
44
|
+
private streamId;
|
|
45
|
+
private tools;
|
|
46
|
+
private extraData;
|
|
47
|
+
private forceProfile;
|
|
48
|
+
private whisperProvider?;
|
|
49
|
+
private stableDiffusionProvider?;
|
|
50
|
+
private analyzeCharacterizationProvider?;
|
|
51
|
+
private ratingsProvider?;
|
|
52
|
+
private loggerProvider?;
|
|
53
|
+
private enforceCharacterization?;
|
|
54
|
+
constructor(config: AlquimiaSDKConfig, enforceCharacterization?: boolean);
|
|
55
|
+
static configure(apiKey: string, inferUrl: string, streamUrl: string, assistantId: string): AlquimiaSDKConfig;
|
|
56
|
+
widthConversationId(conversationId: string): AlquimiaSDK;
|
|
57
|
+
withWhisperProvider(provider: WhisperProvider): AlquimiaSDK;
|
|
58
|
+
withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK;
|
|
59
|
+
withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK;
|
|
60
|
+
withRatingsProvider(provider: RatingsProvider): AlquimiaSDK;
|
|
61
|
+
withLoggerProvider(provider: LoggerProvider): AlquimiaSDK;
|
|
62
|
+
getEnforceCharacterization(): boolean;
|
|
63
|
+
withTools(tools: any[]): AlquimiaSDK;
|
|
64
|
+
withExtraData(extraData: any): AlquimiaSDK;
|
|
65
|
+
withForceProfile(forceProfile: any): AlquimiaSDK;
|
|
66
|
+
textToSpeech(text: string): Promise<Blob>;
|
|
67
|
+
speechToText(audio: string): Promise<string>;
|
|
68
|
+
sendMessage(query: string, traceParent?: string): Promise<this>;
|
|
69
|
+
generateImage(query: string): Promise<string>;
|
|
70
|
+
analyzeCharacterization(text: string): Promise<Record<string, any>>;
|
|
71
|
+
rate(data: any): Promise<Record<string, any>>;
|
|
72
|
+
logInfo(message: string, data: any): Promise<void>;
|
|
73
|
+
logError(message: string, error: Error, data: any): Promise<void>;
|
|
74
|
+
getUrlStream(): string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AlquimiaSDK as A, CharacterizationProvider as C, GenerativeProvider as G, LoggerProvider as L, RatingsProvider as R, StableDiffusionProvider as S, WhisperProvider as W };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
declare abstract class GenerativeProvider {
|
|
2
|
+
private config;
|
|
3
|
+
constructor(config: Record<string, any>);
|
|
4
|
+
}
|
|
5
|
+
declare abstract class WhisperProvider {
|
|
6
|
+
protected config: Record<string, any>;
|
|
7
|
+
constructor(config: Record<string, any>);
|
|
8
|
+
abstract textToSpeech(text: string): Promise<Blob>;
|
|
9
|
+
abstract speechToText(audio: string): Promise<string>;
|
|
10
|
+
}
|
|
11
|
+
declare abstract class StableDiffusionProvider {
|
|
12
|
+
protected config: Record<string, any>;
|
|
13
|
+
constructor(config: Record<string, any>);
|
|
14
|
+
abstract generateImage(query: string): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
declare abstract class CharacterizationProvider {
|
|
17
|
+
protected config: Record<string, any>;
|
|
18
|
+
constructor(config: Record<string, any>);
|
|
19
|
+
abstract analyzeCharacterization(text: string): Promise<Record<string, any>>;
|
|
20
|
+
}
|
|
21
|
+
declare abstract class RatingsProvider {
|
|
22
|
+
protected config: Record<string, any>;
|
|
23
|
+
constructor(config: Record<string, any>);
|
|
24
|
+
abstract rate(data: Record<string, any>): Promise<Record<string, any>>;
|
|
25
|
+
}
|
|
26
|
+
declare abstract class LoggerProvider {
|
|
27
|
+
protected config: Record<string, any>;
|
|
28
|
+
constructor(config: Record<string, any>);
|
|
29
|
+
abstract logInfo(message: string, data?: Record<string, any>): void;
|
|
30
|
+
abstract logError(message: string, error: Error, data?: Record<string, any>): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface AlquimiaSDKConfig {
|
|
34
|
+
apiKey: string;
|
|
35
|
+
chatUrl: string;
|
|
36
|
+
streamUrl: string;
|
|
37
|
+
assistantId: string;
|
|
38
|
+
}
|
|
39
|
+
declare class AlquimiaSDK {
|
|
40
|
+
private config;
|
|
41
|
+
private axiosInstance;
|
|
42
|
+
private conversationId;
|
|
43
|
+
private sessionId;
|
|
44
|
+
private streamId;
|
|
45
|
+
private tools;
|
|
46
|
+
private extraData;
|
|
47
|
+
private forceProfile;
|
|
48
|
+
private whisperProvider?;
|
|
49
|
+
private stableDiffusionProvider?;
|
|
50
|
+
private analyzeCharacterizationProvider?;
|
|
51
|
+
private ratingsProvider?;
|
|
52
|
+
private loggerProvider?;
|
|
53
|
+
private enforceCharacterization?;
|
|
54
|
+
constructor(config: AlquimiaSDKConfig, enforceCharacterization?: boolean);
|
|
55
|
+
static configure(apiKey: string, inferUrl: string, streamUrl: string, assistantId: string): AlquimiaSDKConfig;
|
|
56
|
+
widthConversationId(conversationId: string): AlquimiaSDK;
|
|
57
|
+
withWhisperProvider(provider: WhisperProvider): AlquimiaSDK;
|
|
58
|
+
withStableDiffusionProvider(provider: StableDiffusionProvider): AlquimiaSDK;
|
|
59
|
+
withAnalyzeCharacterizationProvider(provider: CharacterizationProvider): AlquimiaSDK;
|
|
60
|
+
withRatingsProvider(provider: RatingsProvider): AlquimiaSDK;
|
|
61
|
+
withLoggerProvider(provider: LoggerProvider): AlquimiaSDK;
|
|
62
|
+
getEnforceCharacterization(): boolean;
|
|
63
|
+
withTools(tools: any[]): AlquimiaSDK;
|
|
64
|
+
withExtraData(extraData: any): AlquimiaSDK;
|
|
65
|
+
withForceProfile(forceProfile: any): AlquimiaSDK;
|
|
66
|
+
textToSpeech(text: string): Promise<Blob>;
|
|
67
|
+
speechToText(audio: string): Promise<string>;
|
|
68
|
+
sendMessage(query: string, traceParent?: string): Promise<this>;
|
|
69
|
+
generateImage(query: string): Promise<string>;
|
|
70
|
+
analyzeCharacterization(text: string): Promise<Record<string, any>>;
|
|
71
|
+
rate(data: any): Promise<Record<string, any>>;
|
|
72
|
+
logInfo(message: string, data: any): Promise<void>;
|
|
73
|
+
logError(message: string, error: Error, data: any): Promise<void>;
|
|
74
|
+
getUrlStream(): string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AlquimiaSDK as A, CharacterizationProvider as C, GenerativeProvider as G, LoggerProvider as L, RatingsProvider as R, StableDiffusionProvider as S, WhisperProvider as W };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import react__default, { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
interface CharacterizationState {
|
|
4
|
+
sessionId: string | null;
|
|
5
|
+
characterizationData: any;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface SessionProviderProps {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
interface AlquimiaContextType {
|
|
12
|
+
getSessionData: () => CharacterizationState;
|
|
13
|
+
userSessionState?: CharacterizationState;
|
|
14
|
+
saveUserSession: (id: string, data: any) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
declare const useSessionContext: () => AlquimiaContextType | {
|
|
17
|
+
userSessionState: CharacterizationState;
|
|
18
|
+
saveUserSession: null;
|
|
19
|
+
};
|
|
20
|
+
declare const SessionProvider: react__default.FC<SessionProviderProps>;
|
|
21
|
+
|
|
22
|
+
export { SessionProvider, useSessionContext };
|