apexify.js 4.9.23 → 4.9.25
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/cjs/canvas/ApexPainter.js +1 -1
- package/dist/cjs/canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -22
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -17
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/utils.d.ts +1 -3
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +1 -11
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/canvas/ApexPainter.js +1 -1
- package/dist/esm/canvas/ApexPainter.js.map +1 -1
- package/dist/esm/index.d.ts +2 -22
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +1 -3
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +1 -11
- package/dist/esm/utils.js.map +1 -1
- package/lib/canvas/ApexPainter.ts +3 -3
- package/lib/index.ts +4 -11
- package/lib/utils.ts +1 -3
- package/package.json +3 -12
- package/dist/cjs/ai/ApexAI.d.ts +0 -145
- package/dist/cjs/ai/ApexAI.d.ts.map +0 -1
- package/dist/cjs/ai/ApexAI.js +0 -494
- package/dist/cjs/ai/ApexAI.js.map +0 -1
- package/dist/cjs/ai/ApexModules.d.ts +0 -53
- package/dist/cjs/ai/ApexModules.d.ts.map +0 -1
- package/dist/cjs/ai/ApexModules.js +0 -824
- package/dist/cjs/ai/ApexModules.js.map +0 -1
- package/dist/cjs/ai/functions/readFiles.d.ts +0 -2
- package/dist/cjs/ai/functions/readFiles.d.ts.map +0 -1
- package/dist/cjs/ai/functions/readFiles.js +0 -96
- package/dist/cjs/ai/functions/readFiles.js.map +0 -1
- package/dist/cjs/ai/functions/tokenizer.d.ts +0 -10
- package/dist/cjs/ai/functions/tokenizer.d.ts.map +0 -1
- package/dist/cjs/ai/functions/tokenizer.js +0 -64
- package/dist/cjs/ai/functions/tokenizer.js.map +0 -1
- package/dist/cjs/ai/functions/validOptions.d.ts +0 -22
- package/dist/cjs/ai/functions/validOptions.d.ts.map +0 -1
- package/dist/cjs/ai/functions/validOptions.js +0 -103
- package/dist/cjs/ai/functions/validOptions.js.map +0 -1
- package/dist/cjs/ai/modals/electronHub/chatmodels.d.ts +0 -7
- package/dist/cjs/ai/modals/electronHub/chatmodels.d.ts.map +0 -1
- package/dist/cjs/ai/modals/electronHub/chatmodels.js +0 -51
- package/dist/cjs/ai/modals/electronHub/chatmodels.js.map +0 -1
- package/dist/cjs/ai/modals/electronHub/imageModels.d.ts +0 -12
- package/dist/cjs/ai/modals/electronHub/imageModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals/electronHub/imageModels.js +0 -92
- package/dist/cjs/ai/modals/electronHub/imageModels.js.map +0 -1
- package/dist/cjs/ai/modals/electronHub/speechModels.d.ts +0 -7
- package/dist/cjs/ai/modals/electronHub/speechModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals/electronHub/speechModels.js +0 -63
- package/dist/cjs/ai/modals/electronHub/speechModels.js.map +0 -1
- package/dist/cjs/ai/modals/electronHub/videoModels.d.ts +0 -6
- package/dist/cjs/ai/modals/electronHub/videoModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals/electronHub/videoModels.js +0 -63
- package/dist/cjs/ai/modals/electronHub/videoModels.js.map +0 -1
- package/dist/cjs/ai/modals/groq/chatgroq.d.ts +0 -9
- package/dist/cjs/ai/modals/groq/chatgroq.d.ts.map +0 -1
- package/dist/cjs/ai/modals/groq/chatgroq.js +0 -64
- package/dist/cjs/ai/modals/groq/chatgroq.js.map +0 -1
- package/dist/cjs/ai/modals/groq/imageAnalyzer.d.ts +0 -8
- package/dist/cjs/ai/modals/groq/imageAnalyzer.d.ts.map +0 -1
- package/dist/cjs/ai/modals/groq/imageAnalyzer.js +0 -82
- package/dist/cjs/ai/modals/groq/imageAnalyzer.js.map +0 -1
- package/dist/cjs/ai/modals/groq/whisper.d.ts +0 -5
- package/dist/cjs/ai/modals/groq/whisper.d.ts.map +0 -1
- package/dist/cjs/ai/modals/groq/whisper.js +0 -108
- package/dist/cjs/ai/modals/groq/whisper.js.map +0 -1
- package/dist/cjs/ai/modals/hercai/chatModels.d.ts +0 -7
- package/dist/cjs/ai/modals/hercai/chatModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals/hercai/chatModels.js +0 -23
- package/dist/cjs/ai/modals/hercai/chatModels.js.map +0 -1
- package/dist/cjs/ai/utils.d.ts +0 -5
- package/dist/cjs/ai/utils.d.ts.map +0 -1
- package/dist/cjs/ai/utils.js +0 -15
- package/dist/cjs/ai/utils.js.map +0 -1
- package/dist/esm/ai/ApexAI.d.ts +0 -145
- package/dist/esm/ai/ApexAI.d.ts.map +0 -1
- package/dist/esm/ai/ApexAI.js +0 -494
- package/dist/esm/ai/ApexAI.js.map +0 -1
- package/dist/esm/ai/ApexModules.d.ts +0 -53
- package/dist/esm/ai/ApexModules.d.ts.map +0 -1
- package/dist/esm/ai/ApexModules.js +0 -824
- package/dist/esm/ai/ApexModules.js.map +0 -1
- package/dist/esm/ai/functions/readFiles.d.ts +0 -2
- package/dist/esm/ai/functions/readFiles.d.ts.map +0 -1
- package/dist/esm/ai/functions/readFiles.js +0 -96
- package/dist/esm/ai/functions/readFiles.js.map +0 -1
- package/dist/esm/ai/functions/tokenizer.d.ts +0 -10
- package/dist/esm/ai/functions/tokenizer.d.ts.map +0 -1
- package/dist/esm/ai/functions/tokenizer.js +0 -64
- package/dist/esm/ai/functions/tokenizer.js.map +0 -1
- package/dist/esm/ai/functions/validOptions.d.ts +0 -22
- package/dist/esm/ai/functions/validOptions.d.ts.map +0 -1
- package/dist/esm/ai/functions/validOptions.js +0 -103
- package/dist/esm/ai/functions/validOptions.js.map +0 -1
- package/dist/esm/ai/modals/electronHub/chatmodels.d.ts +0 -7
- package/dist/esm/ai/modals/electronHub/chatmodels.d.ts.map +0 -1
- package/dist/esm/ai/modals/electronHub/chatmodels.js +0 -51
- package/dist/esm/ai/modals/electronHub/chatmodels.js.map +0 -1
- package/dist/esm/ai/modals/electronHub/imageModels.d.ts +0 -12
- package/dist/esm/ai/modals/electronHub/imageModels.d.ts.map +0 -1
- package/dist/esm/ai/modals/electronHub/imageModels.js +0 -92
- package/dist/esm/ai/modals/electronHub/imageModels.js.map +0 -1
- package/dist/esm/ai/modals/electronHub/speechModels.d.ts +0 -7
- package/dist/esm/ai/modals/electronHub/speechModels.d.ts.map +0 -1
- package/dist/esm/ai/modals/electronHub/speechModels.js +0 -63
- package/dist/esm/ai/modals/electronHub/speechModels.js.map +0 -1
- package/dist/esm/ai/modals/electronHub/videoModels.d.ts +0 -6
- package/dist/esm/ai/modals/electronHub/videoModels.d.ts.map +0 -1
- package/dist/esm/ai/modals/electronHub/videoModels.js +0 -63
- package/dist/esm/ai/modals/electronHub/videoModels.js.map +0 -1
- package/dist/esm/ai/modals/groq/chatgroq.d.ts +0 -9
- package/dist/esm/ai/modals/groq/chatgroq.d.ts.map +0 -1
- package/dist/esm/ai/modals/groq/chatgroq.js +0 -64
- package/dist/esm/ai/modals/groq/chatgroq.js.map +0 -1
- package/dist/esm/ai/modals/groq/imageAnalyzer.d.ts +0 -8
- package/dist/esm/ai/modals/groq/imageAnalyzer.d.ts.map +0 -1
- package/dist/esm/ai/modals/groq/imageAnalyzer.js +0 -82
- package/dist/esm/ai/modals/groq/imageAnalyzer.js.map +0 -1
- package/dist/esm/ai/modals/groq/whisper.d.ts +0 -5
- package/dist/esm/ai/modals/groq/whisper.d.ts.map +0 -1
- package/dist/esm/ai/modals/groq/whisper.js +0 -108
- package/dist/esm/ai/modals/groq/whisper.js.map +0 -1
- package/dist/esm/ai/modals/hercai/chatModels.d.ts +0 -7
- package/dist/esm/ai/modals/hercai/chatModels.d.ts.map +0 -1
- package/dist/esm/ai/modals/hercai/chatModels.js +0 -23
- package/dist/esm/ai/modals/hercai/chatModels.js.map +0 -1
- package/dist/esm/ai/utils.d.ts +0 -5
- package/dist/esm/ai/utils.d.ts.map +0 -1
- package/dist/esm/ai/utils.js +0 -15
- package/dist/esm/ai/utils.js.map +0 -1
- package/lib/ai/ApexAI.ts +0 -758
- package/lib/ai/ApexModules.ts +0 -916
- package/lib/ai/functions/readFiles.ts +0 -66
- package/lib/ai/functions/tokenizer.ts +0 -69
- package/lib/ai/functions/validOptions.ts +0 -116
- package/lib/ai/modals/electronHub/chatmodels.ts +0 -57
- package/lib/ai/modals/electronHub/imageModels.ts +0 -116
- package/lib/ai/modals/electronHub/speechModels.ts +0 -75
- package/lib/ai/modals/electronHub/videoModels.ts +0 -75
- package/lib/ai/modals/groq/chatgroq.ts +0 -78
- package/lib/ai/modals/groq/imageAnalyzer.ts +0 -83
- package/lib/ai/modals/groq/whisper.ts +0 -114
- package/lib/ai/modals/hercai/chatModels.ts +0 -20
- package/lib/ai/utils.ts +0 -15
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import Groq from "groq-sdk";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
import fs from "fs";
|
|
4
|
-
import path from "path";
|
|
5
|
-
|
|
6
|
-
interface GroqAnalyzerOptions {
|
|
7
|
-
img: string | Buffer;
|
|
8
|
-
ApiKey?: string;
|
|
9
|
-
prompt?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function convertUrlToDataUrl(url: string): Promise<string> {
|
|
13
|
-
try {
|
|
14
|
-
const response = await axios.get(url, { responseType: "arraybuffer" });
|
|
15
|
-
const buffer = Buffer.from(response.data, "binary");
|
|
16
|
-
return `data:${response.headers["content-type"]};base64,${buffer.toString("base64")}`;
|
|
17
|
-
} catch (error) {
|
|
18
|
-
console.error("Error converting URL to Data URL:", error);
|
|
19
|
-
throw new Error("Failed to convert image URL to data URL");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async function convertFileToDataUrl(filePath: string): Promise<string> {
|
|
24
|
-
try {
|
|
25
|
-
const absolutePath = path.resolve(filePath);
|
|
26
|
-
const buffer = fs.readFileSync(absolutePath);
|
|
27
|
-
const mimeType = "image/png";
|
|
28
|
-
return `data:${mimeType};base64,${buffer.toString("base64")}`;
|
|
29
|
-
} catch (error) {
|
|
30
|
-
console.error("Error converting file to Data URL:", error);
|
|
31
|
-
throw new Error("Failed to convert file to data URL");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function convertBufferToDataUrl(buffer: Buffer): string {
|
|
36
|
-
const mimeType = "image/png"; // Adjust dynamically if needed
|
|
37
|
-
return `data:${mimeType};base64,${buffer.toString("base64")}`;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export async function groqAnalyzer({ img, ApiKey, prompt }: GroqAnalyzerOptions): Promise<string> {
|
|
41
|
-
try {
|
|
42
|
-
const groq = new Groq({
|
|
43
|
-
apiKey: ApiKey || "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",
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
let imageDataUrl: string;
|
|
47
|
-
|
|
48
|
-
if (typeof img === "string") {
|
|
49
|
-
if (img.startsWith("http")) {
|
|
50
|
-
imageDataUrl = await convertUrlToDataUrl(img);
|
|
51
|
-
} else {
|
|
52
|
-
imageDataUrl = await convertFileToDataUrl(img);
|
|
53
|
-
}
|
|
54
|
-
} else if (Buffer.isBuffer(img)) {
|
|
55
|
-
imageDataUrl = convertBufferToDataUrl(img);
|
|
56
|
-
} else {
|
|
57
|
-
throw new Error("Invalid image input. Must be a URL, file path, or Buffer.");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const chatCompletion = await groq.chat.completions.create({
|
|
61
|
-
messages: [
|
|
62
|
-
{
|
|
63
|
-
role: "user",
|
|
64
|
-
content: [
|
|
65
|
-
{ type: "text", text: prompt || "" },
|
|
66
|
-
{ type: "image_url", image_url: { url: imageDataUrl } },
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
model: "llama-3.2-90b-vision-preview",
|
|
71
|
-
temperature: 0,
|
|
72
|
-
max_tokens: 8192,
|
|
73
|
-
top_p: 1,
|
|
74
|
-
stream: false,
|
|
75
|
-
stop: null,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
return chatCompletion.choices[0].message.content as string;
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.error("Error in groqAnalyzer:", error);
|
|
81
|
-
return "❌ Error occurred while analyzing the image.";
|
|
82
|
-
}
|
|
83
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import Groq from "groq-sdk";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import { URL } from "url";
|
|
5
|
-
import https from "https";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Gets the file size of a given path.
|
|
9
|
-
*/
|
|
10
|
-
function getFileSize(filePath: string): number {
|
|
11
|
-
return fs.statSync(filePath).size;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Creates a readable stream from a local file or a remote URL.
|
|
16
|
-
*/
|
|
17
|
-
async function createReadableStream(filepathOrUrl: string): Promise<{ stream: fs.ReadStream | null; tempFilePath?: string; error?: string }> {
|
|
18
|
-
const maxFileSizeBytes = 25 * 1024 * 1024; // 25MB limit
|
|
19
|
-
|
|
20
|
-
if (filepathOrUrl.startsWith("http")) {
|
|
21
|
-
const parsedUrl = new URL(filepathOrUrl);
|
|
22
|
-
const fileExtension = path.extname(parsedUrl.pathname);
|
|
23
|
-
const tempFilePath = `temp-file-${Date.now()}${fileExtension}`;
|
|
24
|
-
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
const file = fs.createWriteStream(tempFilePath);
|
|
27
|
-
const request = https.get(filepathOrUrl, (response) => {
|
|
28
|
-
let fileSize = 0;
|
|
29
|
-
|
|
30
|
-
response.on("data", (chunk) => {
|
|
31
|
-
fileSize += chunk.length;
|
|
32
|
-
if (fileSize > maxFileSizeBytes) {
|
|
33
|
-
request.destroy();
|
|
34
|
-
file.close();
|
|
35
|
-
fs.unlink(tempFilePath, () => resolve({ stream: null, error: "File size exceeds the limit (25MB)" }));
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
response.pipe(file);
|
|
41
|
-
file.on("finish", () => {
|
|
42
|
-
file.close();
|
|
43
|
-
resolve({ stream: fs.createReadStream(tempFilePath), tempFilePath }); // ✅ Ensure fs.ReadStream
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
request.on("error", (err) => {
|
|
48
|
-
fs.unlink(tempFilePath, () => reject(err));
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
} else {
|
|
52
|
-
if (getFileSize(filepathOrUrl) > maxFileSizeBytes) {
|
|
53
|
-
return { stream: null, error: "File size exceeds the limit (25MB)" };
|
|
54
|
-
}
|
|
55
|
-
return { stream: fs.createReadStream(filepathOrUrl) }; // ✅ Ensure fs.ReadStream
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Transcribes audio using Groq Whisper API.
|
|
61
|
-
*/
|
|
62
|
-
export async function whisper(prompt: string, filepath: string, lang?: string, API_KEY?: string) {
|
|
63
|
-
try {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const groq = new Groq({
|
|
67
|
-
apiKey: API_KEY || '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',
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// Ensure filepath is properly resolved
|
|
72
|
-
const resolvedFilePath = filepath.startsWith("http") || path.isAbsolute(filepath)
|
|
73
|
-
? filepath
|
|
74
|
-
: path.join(process.cwd(), filepath);
|
|
75
|
-
|
|
76
|
-
const { stream: fileStream, tempFilePath, error } = await createReadableStream(resolvedFilePath);
|
|
77
|
-
|
|
78
|
-
if (error) return error;
|
|
79
|
-
if (!fileStream) return "Failed to create a readable file stream.";
|
|
80
|
-
|
|
81
|
-
// ✅ Ensure `fileStream` is a valid `fs.ReadStream`
|
|
82
|
-
const transcription = await groq.audio.transcriptions.create({
|
|
83
|
-
file: fileStream as fs.ReadStream, // ✅ Ensure correct type
|
|
84
|
-
model: "whisper-large-v3-turbo",
|
|
85
|
-
prompt: prompt,
|
|
86
|
-
temperature: 1,
|
|
87
|
-
language: lang || "eng",
|
|
88
|
-
response_format: "verbose_json",
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
// ✅ Delete the temp file if it was downloaded from a URL
|
|
92
|
-
if (tempFilePath && fs.existsSync(tempFilePath)) {
|
|
93
|
-
fs.unlinkSync(tempFilePath);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return transcription.text;
|
|
97
|
-
} catch (err: any) {
|
|
98
|
-
if (err?.status) {
|
|
99
|
-
switch (err.status) {
|
|
100
|
-
case 400:
|
|
101
|
-
return "Bad request, try again after a minute.";
|
|
102
|
-
case 429:
|
|
103
|
-
return "Rate limit exceeded, try again later or provide your own API key.";
|
|
104
|
-
case 401:
|
|
105
|
-
return "Invalid API key provided.";
|
|
106
|
-
default:
|
|
107
|
-
console.error(err);
|
|
108
|
-
return "An unknown error occurred.";
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
console.error(err);
|
|
112
|
-
return "An unknown error occurred.";
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Hercai } from "hercai";
|
|
2
|
-
const hercai = new Hercai('6eZZOdDwm6Epdzn8mnhcX9SBDkxvoNYcNj9ILS0P44=');
|
|
3
|
-
type hercaiModels = "v3" | "v3-32k" | "turbo" | "turbo-16k" | "gemini" | "llama3-70b" | "llama3-8b" | "mixtral-8x7b" | "gemma-7b" | "gemma2-9b"
|
|
4
|
-
|
|
5
|
-
export async function chatHercai(prompt: string, model: hercaiModels, instructions?: string, memory?: { enable?: boolean, id?: string}): Promise<string> {
|
|
6
|
-
try {
|
|
7
|
-
|
|
8
|
-
if (memory && memory.enable && memory.id) {
|
|
9
|
-
return (await hercai.betaQuestion({ content: prompt, user: memory.id })).reply;
|
|
10
|
-
} else if (["v3", "v3-32k", "turbo", "turbo-16k", "gemini", "llama3-70b", "llama3-8b", "mixtral-8x7b", "gemma-7b", "gemma2-9b"].includes(model)) {
|
|
11
|
-
|
|
12
|
-
return (await hercai.question({ model, content: prompt, personality: instructions })).reply;
|
|
13
|
-
} else {
|
|
14
|
-
throw new Error('Invalid model name.');
|
|
15
|
-
}
|
|
16
|
-
} catch (e: any) {
|
|
17
|
-
console.error(e.message);
|
|
18
|
-
return 'An Error has occurred in the API';
|
|
19
|
-
}
|
|
20
|
-
}
|
package/lib/ai/utils.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { readFile } from "./functions/readFiles";
|
|
2
|
-
import { ApexChat, ApexImagine, ApexListener, ApexVideo, ApexText2Speech, resetHistory } from "./ApexModules";
|
|
3
|
-
import { groqAnalyzer } from "./modals/groq/imageAnalyzer";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
readFile,
|
|
8
|
-
ApexChat,
|
|
9
|
-
ApexImagine,
|
|
10
|
-
ApexListener,
|
|
11
|
-
groqAnalyzer,
|
|
12
|
-
ApexVideo,
|
|
13
|
-
ApexText2Speech,
|
|
14
|
-
resetHistory
|
|
15
|
-
};
|