@ikyyofc/gemini-cli 2.0.7 → 2.0.8
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/index.js +38 -10
- package/package.json +6 -16
- package/src/agent.js +96 -77
- package/src/extensions.js +2 -2
- package/src/gemini-bak.js.js +119 -0
- package/src/gemini.js +1 -1
- package/src/memory.js +1 -1
- package/src/renderer.js +158 -156
- package/src/tools.js +3 -3
- package/src/utils/proxy.js +1 -0
- package/src/utils/spinner.js +79 -0
- package/docs/API.md +0 -37
- package/docs/ARCHITECTURE.md +0 -40
- package/docs/EXTENSIONS.md +0 -65
- package/docs/MEMORY.md +0 -36
- package/docs/TOOLS.md +0 -44
- package/utils/proxy-manager.js +0 -1
package/index.js
CHANGED
|
@@ -22,11 +22,14 @@ import {
|
|
|
22
22
|
PasteTransform, restorePaste,
|
|
23
23
|
enableBracketedPaste, disableBracketedPaste
|
|
24
24
|
} from "./src/input.js";
|
|
25
|
+
import { setupGlobalProxy, proxyStatus, setProxyEnabled } from "./src/utils/proxy.js";
|
|
26
|
+
import { Spinner } from "./src/utils/spinner.js";
|
|
25
27
|
|
|
26
28
|
// ─────────────────────────────────────────────────────────────────
|
|
27
29
|
// Bootstrap
|
|
28
30
|
// ─────────────────────────────────────────────────────────────────
|
|
29
31
|
ensureGlobalDir();
|
|
32
|
+
setupGlobalProxy(); // aktifkan rotasi proxy sebelum request apapun
|
|
30
33
|
|
|
31
34
|
let extensions = loadExtensions();
|
|
32
35
|
let memoryLoaded = [];
|
|
@@ -81,13 +84,20 @@ function cleanup() {
|
|
|
81
84
|
disableBracketedPaste();
|
|
82
85
|
try { if (process.stdin.isTTY) process.stdin.setRawMode(false); } catch {}
|
|
83
86
|
}
|
|
84
|
-
process.on("exit",
|
|
87
|
+
process.on("exit", cleanup);
|
|
85
88
|
process.on("SIGTERM", () => { cleanup(); process.exit(0); });
|
|
86
89
|
|
|
90
|
+
// When terminal is resized (or focus returns on some terminals),
|
|
91
|
+
// only redraw prompt if we are NOT currently processing
|
|
92
|
+
process.on("SIGWINCH", () => { if (!processing) showPrompt(); });
|
|
93
|
+
|
|
87
94
|
// ─────────────────────────────────────────────────────────────────
|
|
88
95
|
// Prompt
|
|
89
96
|
// ─────────────────────────────────────────────────────────────────
|
|
90
97
|
function showPrompt() {
|
|
98
|
+
// Never redraw prompt while a request is in flight
|
|
99
|
+
if (processing) return;
|
|
100
|
+
|
|
91
101
|
const mode = agentMode ? chalk.hex("#4EC9B0")("agent") : chalk.dim("chat");
|
|
92
102
|
const yolo = autoApprove ? chalk.red(" yolo") : "";
|
|
93
103
|
const file = pendingFile ? chalk.yellow(` +${path.basename(pendingPath)}`) : "";
|
|
@@ -127,29 +137,25 @@ async function send(rawLine) {
|
|
|
127
137
|
const res = await runAgentLoop(userText, history, {
|
|
128
138
|
systemInstruction: sysInstruction(),
|
|
129
139
|
autoApprove,
|
|
130
|
-
maxIterations: 5000,
|
|
131
140
|
});
|
|
132
141
|
if (res?.finalResponse) {
|
|
133
142
|
history.push({ role: "user", content: userText });
|
|
134
143
|
history.push({ role: "assistant", content: res.finalResponse });
|
|
135
144
|
}
|
|
136
145
|
} else {
|
|
137
|
-
const
|
|
138
|
-
const sp = ora({
|
|
139
|
-
text: "thinking…", spinner: "dots", color: "cyan",
|
|
140
|
-
prefixText: " ", discardStdin: false
|
|
141
|
-
}).start();
|
|
146
|
+
const sp = new Spinner();
|
|
142
147
|
const msgs = [];
|
|
143
148
|
if (sysInstruction()) msgs.push({ role: "system", content: sysInstruction() });
|
|
144
149
|
msgs.push(...history, { role: "user", content: userText });
|
|
150
|
+
sp.start("thinking…", "#4A9EFF");
|
|
145
151
|
try {
|
|
146
152
|
const t0 = Date.now();
|
|
147
153
|
const reply = await chat(msgs, pendingFile || null);
|
|
148
|
-
sp.succeed(
|
|
154
|
+
sp.succeed(`done ${((Date.now()-t0)/1000).toFixed(1)}s`);
|
|
149
155
|
history.push({ role: "user", content: userText }, { role: "assistant", content: reply });
|
|
150
156
|
printAssistant(reply);
|
|
151
157
|
} catch (e) {
|
|
152
|
-
sp.fail(
|
|
158
|
+
sp.fail(e.message);
|
|
153
159
|
printError(e.message);
|
|
154
160
|
}
|
|
155
161
|
}
|
|
@@ -275,13 +281,35 @@ async function handleCommand(input) {
|
|
|
275
281
|
catch (e) { printError(e.message); }
|
|
276
282
|
break;
|
|
277
283
|
|
|
278
|
-
case "/model":
|
|
284
|
+
case "/model": {
|
|
285
|
+
const px = proxyStatus();
|
|
279
286
|
printInfo(`model gemini-pro-latest`);
|
|
280
287
|
printInfo(`tools ${agentMode ? "on (native function calling)" : "off"}`);
|
|
281
288
|
printInfo(`yolo ${autoApprove ? "on" : "off"}`);
|
|
282
289
|
printInfo(`memory ${memoryLoaded.length} file(s) · extensions: ${extensions.length}`);
|
|
290
|
+
printInfo(`proxy ${px.available}/${px.total} available · ${px.blocked} blocked · ${px.enabled ? "on" : "off"}`);
|
|
283
291
|
printInfo(`config ${GLOBAL_DIR}`);
|
|
284
292
|
break;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
case "/proxy": {
|
|
296
|
+
const px = proxyStatus();
|
|
297
|
+
const sub = tokens[1];
|
|
298
|
+
if (sub === "off") {
|
|
299
|
+
setProxyEnabled(false);
|
|
300
|
+
printInfo("proxy rotation off — direct connection");
|
|
301
|
+
} else if (sub === "on") {
|
|
302
|
+
setProxyEnabled(true);
|
|
303
|
+
printSuccess("proxy rotation on");
|
|
304
|
+
} else {
|
|
305
|
+
// Show status
|
|
306
|
+
printInfo(`status ${px.enabled ? "on" : "off"}`);
|
|
307
|
+
printInfo(`available ${px.available} / ${px.total}`);
|
|
308
|
+
printInfo(`blocked ${px.blocked} (auto-unblock setelah 15 menit)`);
|
|
309
|
+
printInfo(`usage /proxy on | /proxy off`);
|
|
310
|
+
}
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
285
313
|
|
|
286
314
|
case "/exit": case "/quit":
|
|
287
315
|
cleanup(); console.log(""); process.exit(0); break;
|
package/package.json
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikyyofc/gemini-cli",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "AI CLI
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "AI Agent CLI — native function calling · GEMINI.md context · extensions",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"gemini": "./index.js"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"start": "node index.js",
|
|
12
|
-
"dev": "node --watch index.js"
|
|
13
|
-
},
|
|
6
|
+
"bin": { "gemini": "./index.js" },
|
|
7
|
+
"scripts": { "start": "node index.js" },
|
|
14
8
|
"dependencies": {
|
|
15
9
|
"axios": "^1.7.9",
|
|
16
10
|
"chalk": "^5.3.0",
|
|
17
|
-
"cli-spinners": "^2.9.2",
|
|
18
11
|
"file-type": "^19.6.0",
|
|
19
12
|
"ora": "^8.1.1",
|
|
20
|
-
"
|
|
21
|
-
"marked": "^12.0.0",
|
|
22
|
-
"marked-terminal": "^7.1.0",
|
|
23
|
-
"minimist": "^1.2.8"
|
|
13
|
+
"toml": "^3.0.0"
|
|
24
14
|
}
|
|
25
|
-
}
|
|
15
|
+
}
|
package/src/agent.js
CHANGED
|
@@ -1,117 +1,136 @@
|
|
|
1
|
-
// src/agent.js — ReAct agent loop
|
|
1
|
+
// src/agent.js — ReAct agent loop, native Gemini function calling
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
import { callGemini } from "./gemini.js";
|
|
4
|
+
import { GEMINI_TOOLS, FUNCTION_DECLARATIONS, executeTool } from "./tools.js";
|
|
5
|
+
import { Spinner } from "./utils/spinner.js";
|
|
6
|
+
import {
|
|
7
|
+
printAssistant, printError, printWarning,
|
|
8
|
+
printToolCall, printToolResult,
|
|
9
|
+
printStepHeader, printStepFooter,
|
|
10
|
+
} from "./renderer.js";
|
|
11
|
+
|
|
12
|
+
const TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
13
|
+
|
|
14
|
+
// ─────────────────────────────────────────────────────────────────
|
|
15
|
+
// System prompt
|
|
16
|
+
// ─────────────────────────────────────────────────────────────────
|
|
17
|
+
function buildSystemPrompt(extra = "") {
|
|
18
|
+
const toolList = FUNCTION_DECLARATIONS.map(t => `- ${t.name}: ${t.description}`).join("\n");
|
|
19
|
+
return `You are an autonomous AI coding agent running in the user's terminal. You have full access to their filesystem and shell through tools.
|
|
20
|
+
|
|
21
|
+
## CORE RULE — NEVER ASK, ALWAYS ACT
|
|
22
|
+
|
|
23
|
+
You MUST use tools to complete tasks. You are NEVER allowed to:
|
|
24
|
+
- Ask the user to run a command themselves
|
|
25
|
+
- Ask the user to write or edit any code themselves
|
|
26
|
+
- Say "you can run...", "try running...", "create a file...", "add this code to..."
|
|
27
|
+
- Give instructions instead of taking action
|
|
28
|
+
|
|
29
|
+
If you need to run something → use run_shell.
|
|
30
|
+
If you need to read a file → use read_file first.
|
|
31
|
+
If you need to create/edit a file → use write_file or patch_file.
|
|
32
|
+
If something fails → diagnose and retry automatically, never ask user.
|
|
33
|
+
|
|
34
|
+
## WORKFLOW
|
|
35
|
+
1. EXPLORE — read existing structure/files before acting
|
|
36
|
+
2. ACT — use tools to complete the task fully
|
|
37
|
+
3. VERIFY — run/test after changes to confirm it works
|
|
38
|
+
4. REPORT — brief summary of what was done
|
|
39
|
+
|
|
40
|
+
## TOOLS
|
|
41
|
+
${toolList}
|
|
42
|
+
|
|
43
|
+
## RULES
|
|
44
|
+
- Always read files before editing them
|
|
45
|
+
- Use patch_file for targeted edits (safer than full rewrite)
|
|
46
|
+
- Verify code works by running it after changes
|
|
47
|
+
- If a command fails, fix it yourself and retry
|
|
48
|
+
- Only ask the user if the request is genuinely ambiguous
|
|
49
|
+
- Current working directory: ${process.cwd()}
|
|
50
|
+
- Platform: ${process.platform}
|
|
51
|
+
|
|
52
|
+
${extra ? `## EXTRA INSTRUCTIONS\n${extra}` : ""}`.trim();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// ─────────────────────────────────────────────────────────────────
|
|
56
|
+
// Agent loop
|
|
57
|
+
// ─────────────────────────────────────────────────────────────────
|
|
18
58
|
export async function runAgentLoop(userMessage, history, {
|
|
19
59
|
systemInstruction = null,
|
|
20
60
|
autoApprove = false,
|
|
21
|
-
maxIterations = 5000,
|
|
22
61
|
} = {}) {
|
|
23
62
|
|
|
24
|
-
|
|
25
|
-
const messages
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
63
|
+
const fullSystem = buildSystemPrompt(systemInstruction ?? "");
|
|
64
|
+
const messages = [...history, { role: "user", content: userMessage }];
|
|
65
|
+
const spinner = new Spinner();
|
|
66
|
+
const deadline = Date.now() + TIMEOUT_MS;
|
|
67
|
+
let iteration = 0;
|
|
29
68
|
|
|
30
|
-
|
|
69
|
+
while (true) {
|
|
70
|
+
if (Date.now() > deadline) {
|
|
71
|
+
spinner.stop();
|
|
72
|
+
printWarning("timeout: 10 menit tercapai, agent dihentikan");
|
|
73
|
+
return { finalResponse: null, iterations: iteration };
|
|
74
|
+
}
|
|
31
75
|
|
|
32
|
-
while (iteration < maxIterations) {
|
|
33
76
|
iteration++;
|
|
34
77
|
|
|
35
|
-
// ──
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
prefixText: " ",
|
|
41
|
-
discardStdin: false, // prevent ora from pausing stdin after stop
|
|
42
|
-
}).start();
|
|
78
|
+
// ── Animated spinner while waiting for LLM ─────────────────
|
|
79
|
+
spinner.start(
|
|
80
|
+
iteration === 1 ? "thinking…" : `thinking… (step ${iteration})`,
|
|
81
|
+
"#4A9EFF"
|
|
82
|
+
);
|
|
43
83
|
|
|
44
84
|
let parts;
|
|
45
85
|
try {
|
|
46
|
-
const res = await callGemini({ messages, tools: GEMINI_TOOLS, systemInstruction });
|
|
86
|
+
const res = await callGemini({ messages, tools: GEMINI_TOOLS, systemInstruction: fullSystem });
|
|
47
87
|
parts = res.parts;
|
|
48
|
-
spinner.stop();
|
|
49
|
-
clearLine();
|
|
88
|
+
spinner.stop(); // clear line silently
|
|
50
89
|
} catch (err) {
|
|
51
|
-
spinner.fail(
|
|
90
|
+
spinner.fail(err.message);
|
|
52
91
|
printError(err.message);
|
|
53
|
-
printError(JSON.stringify(err.response.data, null, 2));
|
|
54
92
|
return null;
|
|
55
93
|
}
|
|
56
94
|
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
const callParts = parts.filter(p => p.functionCall != null);
|
|
60
|
-
|
|
61
|
-
// Print any accompanying text (model thinking aloud)
|
|
95
|
+
const textParts = parts.filter(p => p.text != null);
|
|
96
|
+
const callParts = parts.filter(p => p.functionCall != null);
|
|
62
97
|
const textContent = textParts.map(p => p.text).join("").trim();
|
|
63
|
-
if (textContent && callParts.length > 0) {
|
|
64
|
-
process.stdout.write(
|
|
65
|
-
chalk.dim(" … " + textContent.replace(/\n/g, "\n ")) + "\n"
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
98
|
|
|
69
|
-
// ──
|
|
99
|
+
// ── Final answer — no more tool calls ─────────────────────
|
|
70
100
|
if (callParts.length === 0) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (iteration > 1) {
|
|
74
|
-
process.stdout.write(
|
|
75
|
-
chalk.hex("#4A9EFF")(" ╰") +
|
|
76
|
-
chalk.hex("#555566")("─".repeat(47)) + "\n"
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
if (final) printAssistant(final);
|
|
80
|
-
return { finalResponse: final, iterations: iteration };
|
|
101
|
+
if (textContent) printAssistant(textContent);
|
|
102
|
+
return { finalResponse: textContent, iterations: iteration };
|
|
81
103
|
}
|
|
82
104
|
|
|
83
|
-
// ──
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// Print tool section header on first iteration
|
|
87
|
-
if (iteration === 1) {
|
|
105
|
+
// ── Model reasoning text (before tool block) ───────────────
|
|
106
|
+
if (textContent) {
|
|
88
107
|
process.stdout.write(
|
|
89
|
-
|
|
90
|
-
chalk.hex("#
|
|
108
|
+
chalk.hex("#4A4A5E")(" ┄ ") +
|
|
109
|
+
chalk.hex("#7A7A9A").italic(textContent.split("\n")[0].slice(0, 72)) +
|
|
110
|
+
"\n"
|
|
91
111
|
);
|
|
92
112
|
}
|
|
93
113
|
|
|
94
|
-
|
|
114
|
+
// ── Step block — fresh per iteration ──────────────────────
|
|
115
|
+
printStepHeader(iteration);
|
|
116
|
+
messages.push({ role: "model", parts });
|
|
95
117
|
|
|
118
|
+
const responseParts = [];
|
|
96
119
|
for (const part of callParts) {
|
|
97
120
|
const { name, args } = part.functionCall;
|
|
98
|
-
|
|
121
|
+
|
|
122
|
+
// Animate the tool name while it runs
|
|
123
|
+
spinner.start(name + "…", "#FFD080");
|
|
124
|
+
printToolCall(name, args ?? {});
|
|
125
|
+
spinner.stop();
|
|
99
126
|
|
|
100
127
|
const result = await executeTool(name, args ?? {}, { autoApprove });
|
|
101
128
|
printToolResult(result);
|
|
102
129
|
|
|
103
|
-
responseParts.push({
|
|
104
|
-
functionResponse: { name, response: result }
|
|
105
|
-
});
|
|
130
|
+
responseParts.push({ functionResponse: { name, response: result } });
|
|
106
131
|
}
|
|
107
132
|
|
|
133
|
+
printStepFooter();
|
|
108
134
|
messages.push({ role: "user", parts: responseParts });
|
|
109
135
|
}
|
|
110
|
-
|
|
111
|
-
printWarning(`Max iterations (${maxIterations}) reached.`);
|
|
112
|
-
return { finalResponse: null, iterations: iteration };
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function clearLine() {
|
|
116
|
-
if (process.stdout.clearLine) { process.stdout.clearLine(0); process.stdout.cursorTo(0); }
|
|
117
136
|
}
|
package/src/extensions.js
CHANGED
|
@@ -67,7 +67,7 @@ export function getExtensionContextDirs(extensions) {
|
|
|
67
67
|
return extensions.map(e => e.path);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
/** Build all custom commands from
|
|
70
|
+
/** Build all custom commands from extensions + ~/.gemini/commands/** */
|
|
71
71
|
export async function loadCustomCommands(extensions) {
|
|
72
72
|
const cmds = {}; // "namespace:name" → { description, prompt, source }
|
|
73
73
|
|
|
@@ -192,4 +192,4 @@ export async function updateExtension(name) {
|
|
|
192
192
|
} catch (e) {
|
|
193
193
|
return { error: e.message };
|
|
194
194
|
}
|
|
195
|
-
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// src/gemini.js — Gemini API client with native function calling
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
import { fileTypeFromBuffer } from "file-type";
|
|
4
|
+
|
|
5
|
+
const CONFIG = {
|
|
6
|
+
URL: "https://us-central1-gemmy-ai-bdc03.cloudfunctions.net/gemini",
|
|
7
|
+
MODEL: "gemini-pro-latest",
|
|
8
|
+
HEADERS: {
|
|
9
|
+
"User-Agent": "okhttp/5.3.2",
|
|
10
|
+
"Accept-Encoding": "gzip",
|
|
11
|
+
"content-type": "application/json; charset=UTF-8"
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const SUPPORTED_MIMES = new Set([
|
|
16
|
+
"image/jpeg","image/png","image/gif","image/webp","image/heic","image/heif",
|
|
17
|
+
"video/mp4","video/mpeg","video/mov","video/avi","video/x-flv","video/mpg",
|
|
18
|
+
"video/webm","video/wmv","video/3gpp",
|
|
19
|
+
"audio/wav","audio/mp3","audio/aiff","audio/aac","audio/ogg","audio/flac",
|
|
20
|
+
"audio/mpeg","audio/ogg; codecs=opus",
|
|
21
|
+
"application/pdf","text/plain","text/html","text/css","text/javascript",
|
|
22
|
+
"text/x-typescript","text/csv","text/markdown","text/x-python",
|
|
23
|
+
"application/json","application/xml","application/rtf"
|
|
24
|
+
]);
|
|
25
|
+
|
|
26
|
+
async function getToken() {
|
|
27
|
+
const { data } = await axios.post(
|
|
28
|
+
"https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyAxof8_SbpDcww38NEQRhNh0Pzvbphh-IQ",
|
|
29
|
+
{ clientType: "CLIENT_TYPE_ANDROID" },
|
|
30
|
+
{ headers: {
|
|
31
|
+
"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 12; SM-S9280 Build/AP3A.240905.015.A2)",
|
|
32
|
+
"Content-Type": "application/json",
|
|
33
|
+
"X-Android-Package":"com.jetkite.gemmy",
|
|
34
|
+
"X-Android-Cert": "037CD2976D308B4EFD63EC63C48DC6E7AB7E5AF2",
|
|
35
|
+
"X-Firebase-GMPID": "1:652803432695:android:c4341db6033e62814f33f2"
|
|
36
|
+
}}
|
|
37
|
+
);
|
|
38
|
+
return data.idToken;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Core API call — supports:
|
|
43
|
+
* - plain chat (messages only)
|
|
44
|
+
* - file attachment (fileBuffer)
|
|
45
|
+
* - native function calling (tools = [{ functionDeclarations: [...] }])
|
|
46
|
+
* - function responses in history (parts with functionCall / functionResponse)
|
|
47
|
+
*/
|
|
48
|
+
export async function callGemini({ messages = [], fileBuffer = null, tools = null, systemInstruction = null } = {}) {
|
|
49
|
+
const token = await getToken();
|
|
50
|
+
|
|
51
|
+
// Separate system message
|
|
52
|
+
const sysMsg = messages.find(m => m.role === "system");
|
|
53
|
+
const sysText = systemInstruction
|
|
54
|
+
?? (sysMsg ? (typeof sysMsg.content === "string" ? sysMsg.content : sysMsg.parts?.[0]?.text ?? "") : null);
|
|
55
|
+
|
|
56
|
+
// Build contents array — support both {role,content} and {role,parts} formats
|
|
57
|
+
const contents = messages
|
|
58
|
+
.filter(m => m.role !== "system")
|
|
59
|
+
.map(m => {
|
|
60
|
+
if (m.parts) {
|
|
61
|
+
// Already in Gemini parts format (used for functionCall / functionResponse turns)
|
|
62
|
+
return { role: m.role === "assistant" ? "model" : m.role, parts: m.parts };
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
role: m.role === "assistant" ? "model" : m.role,
|
|
66
|
+
parts: [{ text: typeof m.content === "string" ? m.content : JSON.stringify(m.content) }]
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Attach file to last user message if provided
|
|
71
|
+
if (fileBuffer) {
|
|
72
|
+
const result = await fileTypeFromBuffer(fileBuffer);
|
|
73
|
+
const mimeType = result?.mime ?? "application/octet-stream";
|
|
74
|
+
if (!SUPPORTED_MIMES.has(mimeType)) throw new Error(`Unsupported file type: ${mimeType}`);
|
|
75
|
+
const filePart = { inlineData: { mimeType, data: fileBuffer.toString("base64") } };
|
|
76
|
+
const last = contents[contents.length - 1];
|
|
77
|
+
if (last?.role === "user") last.parts.push(filePart);
|
|
78
|
+
else contents.push({ role: "user", parts: [filePart] });
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const payload = {
|
|
82
|
+
model: CONFIG.MODEL,
|
|
83
|
+
request: {
|
|
84
|
+
contents,
|
|
85
|
+
generationConfig: {
|
|
86
|
+
thinkingConfig: { thinkingLevel: "HIGH" },
|
|
87
|
+
temperature: 0
|
|
88
|
+
},
|
|
89
|
+
safetySettings: [
|
|
90
|
+
{ category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE" },
|
|
91
|
+
{ category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE" },
|
|
92
|
+
{ category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE" },
|
|
93
|
+
{ category: "HARM_CATEGORY_DANGEROUS_CONTENT", threshold: "BLOCK_NONE" }
|
|
94
|
+
],
|
|
95
|
+
// ── Native function calling ──────────────────────────────────────
|
|
96
|
+
...(tools?.length && { tools }),
|
|
97
|
+
// ── System instruction ───────────────────────────────────────────
|
|
98
|
+
...(sysText && { systemInstruction: { role: "user", parts: [{ text: sysText }] } })
|
|
99
|
+
},
|
|
100
|
+
stream: false
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const { data } = await axios.post(CONFIG.URL, payload, {
|
|
104
|
+
headers: { ...CONFIG.HEADERS, authorization: `Bearer ${token}` }
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
if (!data?.candidates?.length) throw new Error("No response candidates from API");
|
|
108
|
+
|
|
109
|
+
const candidate = data.candidates[0];
|
|
110
|
+
const parts = candidate.content?.parts ?? [];
|
|
111
|
+
|
|
112
|
+
return { parts, candidate, raw: data };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Convenience: plain text chat (no tools) */
|
|
116
|
+
export async function chat(messages = [], fileBuffer = null) {
|
|
117
|
+
const { parts } = await callGemini({ messages, fileBuffer });
|
|
118
|
+
return parts.map(p => p.text ?? "").join("");
|
|
119
|
+
}
|
package/src/gemini.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x4d79e7=_0xd2f4;function _0xd2f4(_0x581284,_0x25f364){_0x581284=_0x581284-0x116;const _0x1f5b6a=_0x120f();let _0x199d65=_0x1f5b6a[_0x581284];if(_0xd2f4['RqljDs']===undefined){var _0x1126e9=function(_0x4d2b7f){const _0x26996c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x23d236='',_0x3a0666='';for(let _0x574dbf=0x0,_0xb75242,_0x25f5c8,_0x2da917=0x0;_0x25f5c8=_0x4d2b7f['charAt'](_0x2da917++);~_0x25f5c8&&(_0xb75242=_0x574dbf%0x4?_0xb75242*0x40+_0x25f5c8:_0x25f5c8,_0x574dbf++%0x4)?_0x23d236+=String['fromCharCode'](0xff&_0xb75242>>(-0x2*_0x574dbf&0x6)):0x0){_0x25f5c8=_0x26996c['indexOf'](_0x25f5c8);}for(let _0x24881d=0x0,_0xfbfde8=_0x23d236['length'];_0x24881d<_0xfbfde8;_0x24881d++){_0x3a0666+='%'+('00'+_0x23d236['charCodeAt'](_0x24881d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3a0666);};const _0x3ec76b=function(_0x5d265b,_0x3f303e){let _0x71e7d4=[],_0x532713=0x0,_0x15637d,_0x2a86a2='';_0x5d265b=_0x1126e9(_0x5d265b);let _0x5efa07;for(_0x5efa07=0x0;_0x5efa07<0x100;_0x5efa07++){_0x71e7d4[_0x5efa07]=_0x5efa07;}for(_0x5efa07=0x0;_0x5efa07<0x100;_0x5efa07++){_0x532713=(_0x532713+_0x71e7d4[_0x5efa07]+_0x3f303e['charCodeAt'](_0x5efa07%_0x3f303e['length']))%0x100,_0x15637d=_0x71e7d4[_0x5efa07],_0x71e7d4[_0x5efa07]=_0x71e7d4[_0x532713],_0x71e7d4[_0x532713]=_0x15637d;}_0x5efa07=0x0,_0x532713=0x0;for(let _0x143cd2=0x0;_0x143cd2<_0x5d265b['length'];_0x143cd2++){_0x5efa07=(_0x5efa07+0x1)%0x100,_0x532713=(_0x532713+_0x71e7d4[_0x5efa07])%0x100,_0x15637d=_0x71e7d4[_0x5efa07],_0x71e7d4[_0x5efa07]=_0x71e7d4[_0x532713],_0x71e7d4[_0x532713]=_0x15637d,_0x2a86a2+=String['fromCharCode'](_0x5d265b['charCodeAt'](_0x143cd2)^_0x71e7d4[(_0x71e7d4[_0x5efa07]+_0x71e7d4[_0x532713])%0x100]);}return _0x2a86a2;};_0xd2f4['xeXpsj']=_0x3ec76b,_0xd2f4['jNrClT']={},_0xd2f4['RqljDs']=!![];}const _0x160ada=_0x1f5b6a[0x0],_0x120f59=_0x581284+_0x160ada,_0xd2f431=_0xd2f4['jNrClT'][_0x120f59];return!_0xd2f431?(_0xd2f4['kKVojV']===undefined&&(_0xd2f4['kKVojV']=!![]),_0x199d65=_0xd2f4['xeXpsj'](_0x199d65,_0x25f364),_0xd2f4['jNrClT'][_0x120f59]=_0x199d65):_0x199d65=_0xd2f431,_0x199d65;}function _0x120f(){const _0x5a415c=['WPxcVL/dVhddRSkgzt8','aWtcNJ8','ls1iWRlcMCofjbyK','W5NcVCoVWPtcNJRcVHhdJG','WOFcPHOHAa','WRPWWPpdS0q','FH5xW4RdJG','WQ9oWOZdPNq','WP40W4JdStq','WQZdTt7cG8kVsCoogqtdSqieW6xdJmkl','pa/cPH8I','udLoW7NdMCopW4Xv','BmoXW590W7BdHSolW4vh','gCoqxIdcHq','WO00W5tdOs7dGmkvkSoI','CCk8W4/dGSkAWQ5hr3VdOr4ZW67dLLulgmkYbqeBWOFdIZG','W5DBC8kXu0hcTqZcGa','WR3cLsdcTCk8','rJXaW5ddRq','kWvOkSkm','W4VcPSoUWOq','urvXW7NdMq','Cmk7W7NdJSkb','gmoXvvZdKW','d8oMyaBcRSkwWOxdNG','W5RdQSkPfYm','cmolWQNcVCo9W5GXz07dPcqgW7m','Bmopcbu','yrRcN8knW5K','WQhcSrtcI8ks','lmoFvfZdTW','W7pcG1dcNCo7WRrEeI/cJa4dWPf0WONdLhtdTCo3','g8o6W4ZcSa','hCkdW5GGW4K','WRzjySoiag3cMW','W4xdPxVdImo5jwHuW5BcTCkrWOLg','W5DNW4bjW4u','kSkVW61RW7K','WRjNWPldR1CxW7RcJW','DCoZWOz9WRpcMSo8W6rhWPFdRSoFsq','W6dcK0dcGCoMW7utsNO','a8oQCgS','AHFdTdFcLq','EJRcMYr6','iZP3W4qZ','W71wW7vHW58','WQe8bmk4ra','lZLnW5i','luZdMxFcRG','W7tdMKHTus8iWR/dQSkLDxfXBsGoELddI8oAkv/dQujTs8ozg8kzW7BdJ8kjWR4lwmoyW7X/W4tdRSk2W7ldHSoCtaPgrclcPCkJWO4gySkCWOuqzCkxCa','W5yOW5q','awNcOW','DSozyNip','F8oNW5HOW7FdNmkkWOnvhaBdHxmnW5xdT8oYDCoy','fmkJW6vAW6xdOSkRy8oxya','p8oZWQeQWRfzWRmoW6XcWR5aWOzf','eeldMgO','xr7dGqFcPG','WRVcQSorzbRcJq','W63cRSoSWPBcMcxdQfpcHCk3W5rvW7z3WQdcISk3W7uqhxZdUCouWP9LzYBdNYxdTwbeWP5kW5/cNLW5WQTmDmkrW5xdLaNcOmkfWOCiutbgsGL5W5VcGCoArstcJsmZgSoqeb3dQ8oiW4W','tHFdRqNcPZL5','W7pdHvrPvMuiWQxcSCoLDIa','gmkAW6bkW4W','jCkyW490W4u','i8oMF30Tyuq','p8oPWQKNWR8','wmoSW59OW7xdGSofW5LhdaZcHMenW5BdVmo6kmkbWO7cUmoOEG','WOG+W4RdKqa','W5RcUe7dUmo3','btruW7KFWR4','b8keFeFdU33cLhHQ','j8o0WQ8','dCkCWRqCW5tdNCkrWQrw','ud7cPIO','hSoJvGVcSa','W5xcTgfCW7WRW74GdI8EbCkGDmo8v8ojBgK','ycPUhSou','W4hcLh9VW5e','W60dW7FdVGu','W5FcTNtcN8o6','WPW6W5BdOa','WPtcUYdcGSk+BIH4W4FcNCkB','WPnnWQ7dKKe','W5G9W4hdPWO','WOBcJaFcOSkV','WR7cVZFcMmkd','aaHmWPpcKG','WR7cJNZdUM3dS8khxq','DtPXW7/dUq','BdlcPILM','WO17WPpcOJ19WPaDW6xdHq','z8olbXzYhSkAW7T4oW','c8oOqqBcRW','zSkIW63dVCkQWPLPtge','jtnAWRZcJ8kEnry3','kSoUWQWTWRuFWRioW4G','a1GCWRi','Bc/cGSknW78','uIHkW7ddL8odW59ym8o3W4rQWRfEWRK','auuFWQm5gmkrW6ZdOG','amkJW69B','oXvSW75VW6/dOmk6WRtdQW','W48SW5ZdOMDeWRyd','vrZdUI7cOq','AmopcGvYqW','qt7cPdX4uSkP','DmoImsnr','WRddLHhdNCk4W6XoCa/cRrGPWQ0','WO8LW4RdQs7dH8kvkSoUcCoRdCofW5ldS04','WR53WOxdTvLFW7dcM8obh8kjvCkZwSoFWPhcKSofWOKZWPhdRG','WR1hFW','ACoxCq','EHlcU8k6W78','acLcW7uEW7BcJqnp','jsTXWRNcGW','nJn5iCkZ','W7RdH1j5','qCooB0qo','W6W2W5NcQGfaW4/cNSootmo7Da','qSkbWQDE','W49pW6zcW5W','i8oqvwOz','W64YW5tcQqDgWQ/cTSoGCmorF8ku','h1iBWPWf','vSoosMWd','WRVcSmkVlYBdR1xcSq','eCoXyM3dIa','BmoYW5XXW7W','W7OKW6ldRai','x8kEW7hdVmkW','W5xcSNFcMmoG','WRtcOmorDWVcI8k1','WPRdUSkXW5ldHx7dVZtdHSo3WR8oWPK','W7hcO8o5WONcNa','WQRcLIilyW','hCoXDfNdVa','zmoVW416W6dcNCocW45AdW','WPHSqmoZkW','lsTFWRlcHCkEiXqXmW','WRn1A8oHla','EbZdRb/cQq','tXhdRrK','xmodxLen','tSoKsG','WQNcGehdQNBdVSkitGuw','W5XSW5z7W7u','W6hcMvP3','vJ7cMtTLv8kIW7m','eXfuW7mc','W4/dG8oXc8oYWQmw','WO7cSbJcKmkF','pxG/WPKH','fmokW4RcJqO','wr3dUWNdRt95W7ddNG','cmoHW4FcRcS','WPtcTsdcLCkJEdXVW5BcGq','pr16W69Z','W4ZcOSoxWPNcOa','W5bCFCohFLxcTrlcQbK','oSkbWQWIW6W','mmkVW7TqW6W','vCoLx0SneWtcH8oCr8kV','krzOWRZcJq','bGb6W7BdQ8obxGNdKSoHWPpdUsJdNSkEAmo6W43cS8o8WQZdS8oWfW','W7/dGvjPr3Tt','WQ4Rc8k3tL3cSW','fKJdJhS','WQNcJKhdUNRdTmkD','fCodWOddTSk4','W7/cLuL+W5DqW4SemHG','b8kez0ZdO3ZcLxncW5emW7VcLq','dCkBWQGa','arr3WPpcRG','o3JdKgZcImkbAHBdPG','WOCGW7ddPY4','mCkRz1tdJW','d8kRW4yNW44','eGtcNc4XW48C','W6/dMK50thjoW7BdPG','wr3dUWNdRs8GW63dIXCzEfS','W7iZW4RdOJK','W7xcMvX8W5uqW5mn','W6ytpCkjwZhdHN4mj8kLW6zw','kcumhCkLAxFcISojfCk6xqBdL2BcQJy7o8oxW4mhbmkpeZZcQSkaW4nwEG','W4pcQMq','hSoPW4VcPa','bsvcg8kLDhm','nHP/W7FdSq','WPhcNHSE','wSkCW6NdQSkIWOj0AG','nG5AWQ7cRa','gCo/WQNdQSkqWQBcVq','WRNdGXBcQCkO','cCoMxXC','DrRcPsrp','iCo0WQeQ','W6JdR3b4sa','lSorsK0','dMNcOmkTm0a','pYDiWQ/cJ8oC','W7FcJ0dcJCoMW7utsI4','WRKWW4RdNXy','WRtcRSolzGNcISkZhq','fcLiW7q','WOG8W5BdOaxdKCksomoIfa','FYnUkSoX','lSoZyIBcNG','WQfdDmopqgVcN10ajCkdW79WWO1y','AIRdJtBcJq','WQnpAmoEac7cIu4doW','qY1jW7q','W4pcTf3dQ8oHWPBcIL98','nLGhWP0b','DJ3cGIPp','oIP1WPJcUa','p8kCueqLcCoDWQ0UEfODWRBcTmoccSo+WPOwlNG6WPeVWP1Uc0SnWRxdMYZdJg3dHK8+W7fQW6ddOIaMvCo+','oxyIWPOjl8kPW4JdGSkbxb7cJ8oxW4xdUtXYW5D4W7RcUtDpW4D1W5XCBGDT','k8kNW50JW7tdIW','tmo1lrrg','zGvQgmod','rK1fghy','vKi+WQRcSSkucuxdVCoEWPZcSttdSG','W6BcG0NcGCoNWRntsJVcLK0mWOrPWOpdIsG','W6/dR8oBkmoT','WOCXW67dQIZdGCkA','dcvqW4NdPa','W5CSW4RdStXp','W4JcV8oWWOZcMc3cPHxdGSoPWPrkWRWSWOpcJq','WQFcRSonDX0','iYFcHIKB','ouhcQ8kGDG','fmoBsNZdTW','tdFcNmkJW6u','W7ZdO8kOdtC','eSk+dX5scKRcKSo8E8k4WOJcLSk4','o8o6WROWWQK','oCkRwMVdRW','t8kuW7NdQSkQW4jXFKG','cSoPW4hcPshcHmkPfSoK','WO97WRtdKKu','rZ1cW6JcKCoyWPnyi8oOW482WQPbWRXDW74','W7JdP8kIdq','zSoseGfKc8ocWRfTpb8fW6JdRSkxdmo8WPSfmxGTWOuVW4yWebmnWRlcG2JcLIRdMG1JWQy3WR/dRwC6rCo/wgW8W6xdJ8oAWQldHxanW5NcT8k6gsZcG8kXf8kKqbKxWOBdRI0YtxNdSCo+ctZcKxTHW7BcQcRcTSkUaIv/WOXhW6tdNmk7vri/WPZdLmosu8oXWOOEfSkdDZijgmoxaCk/kSk5WRbC','WRXTWO/dQfmEW6VdKCosxCozuW','gmoMxqhcS8ktWO4','bI1vW5m+','AW9Vj8o1W6tdUG','WRJdPtJcLmoYFmkeoqtdPG','c2CrWQiq','wCoOmIfu','WR53WOxdTvLFW77cLCoaqG','aCkLW6WrW6dcQmoSB8oozmoOW79Og1O2WQC','WRdcMXa0sa','amk5W4jiW6i','WPuOWPtdPIJdISkhkSo1e8oMvSoaW5pcTaiyaqVdRmkKpLdcPCohsmolq1ddNSk/fq','EmkVW7bYW60aWO0lW4DfWOjK','W67cNffkW5e','AmocDh4ngW','BY52gCoc','nCotr0/dOtHFWOCcWRW','WOBcPCokBH0','fe8tWRiMgmkbW7pdQq','WPypomkhEa','W73dNKXXs3zgW6tdTSk5nJ1MDZO','srxcLCkqW4FcPKD4W69q','bgPpW4RdNmoPW7DU','W4xcI2tdU8o8','umksW69sdSo+WRtcH8kpEvv2WPyfmSoTaLm6WO7cNmkbewLaWP9IW5KKjJ7cTq','bq7cII57W4WjEmoUaCo7WPr9','W4FdVmoRgmod','vqBcVG5u','eSkLW7jl','cmoWqaBcUCks','oHrtW5C5','fmo/DgxdM1r2WRyUWPJdQ8kqW5q3mmkLW7iqW6/cH8kRW5D3wCk/ASo4efzjaW','tSkCW6/dOq','Bmo3W4H0W6RcNCoDW4Pf','fSkIW7nAW7NcPCo3Amod','W5JdHmoTgSoKWQunlCoB','aSoSChW8yrfWWQBdOeK','W4xdGSo5ea','aZjpcSkWBM7cISoj','hgFcOmk8','W54aW4ZdGXO','WRxcGSo0zGK','BIRdRG7cGW','WPNdTZ/cISk6','i8ovWOtdIW','BGxcVWHF','irLMW7X0WQG','W5JcSwJdTCoi','W6tcL0r8','W7RdQ8k+hcVcIxhcNmkC','ESojnqvLwmkdW7K','WQKTdCk0yW','W4RcOmoUWPpcHtZcSGldN8oPWOG','kedcHSkYtG','W4tdG8kinbVdPv3cP8kVne/cVSouWR5lESomW4tdPNqgWRBcKCkvgG','dSkLW6y','Fa9sj8oIW6pdOmog','WO/cLbKCuCoy','WQxcOmotzG','BSoTW4jPW6ddNmoE','rZ1cW6JcKCodW41F','sSkFWRfDcmoZWQBcH8kuy1GTWOKtFa','kSkTW5CHW6W','WPFcLa8pcSoahdX8W4m','W6/dV05ZCG','FGXjgCoP','h8oVW4VcSYhdH8kH','mb1JhSkH','B8krW5JdTCkN','j2a/WQy3','zLHNcwrHlmkmfmoW','W4iTW7ldTX0','qYhcUIn+xCkTW6dcRSkqWO/dO8kqbSkmeLRdLCo1W4KdWONdLc7cHmkKmxLqWPSC','g8kiW7jxW7m','gSo8vXVcS8oqWORdMfG','o8osWOddImkA','pGLSW5DI','b8kTqKFdOG','kCoEWQSRWPG','W7VcKuv8','WPJcGhxdM2W','p8ktxZnpF8k4W6Hl','DCoJW4fvW4W','cCklWRyyW57dM8kjWQbgW4bB','c8k0zghdQW','WOdcPmoEtX8','WPxcIq4RAG','l8okvehdQNbEWOqs','WPxcHtK4DW','uCk/WQbejW','uwDnoa','a2SnW5/dUSksWOCBBmoCWPL1W7fXW6fOW4XMW4VcO3dcMCk/WR9EvSoCWOW8W54gWOqYWPHRWQ96c8kHFG','yw1Qkeq','buurWRqZ','W5VcOmoSWOu','W48HW5BdSZTpWQOzW7G','W4FcRCokWQZcUG','iSozWQ8GWOO','qf3dHMHSWPrFFSo1j8oHWOrx','wCkaWQ1u','WOxcTHZcOCk9','uCkRWPzJjW'];_0x120f=function(){return _0x5a415c;};return _0x120f();}(function(_0x393a57,_0x37538a){const _0x1c9112=_0xd2f4,_0x43b703=_0x393a57();while(!![]){try{const _0x8afd6b=parseInt(_0x1c9112(0x15e,'8[TO'))/0x1*(parseInt(_0x1c9112(0x1a8,'OHj^'))/0x2)+-parseInt(_0x1c9112(0x168,'SuUg'))/0x3+parseInt(_0x1c9112(0x1b9,'$Tz@'))/0x4+parseInt(_0x1c9112(0x171,']2xs'))/0x5+-parseInt(_0x1c9112(0x257,'n#(H'))/0x6*(-parseInt(_0x1c9112(0x24d,'0flv'))/0x7)+parseInt(_0x1c9112(0x204,'ESIT'))/0x8+-parseInt(_0x1c9112(0x22b,'DbfG'))/0x9;if(_0x8afd6b===_0x37538a)break;else _0x43b703['push'](_0x43b703['shift']());}catch(_0x4bb233){_0x43b703['push'](_0x43b703['shift']());}}}(_0x120f,0x4aa58));const _0x1126e9=(function(){const _0x293944=_0xd2f4,_0x1b9696={'eIhUR':function(_0x4e6949,_0x475b02){return _0x4e6949===_0x475b02;},'LTuGH':_0x293944(0x15a,'qoJ]'),'bYmRY':_0x293944(0x126,'n((O'),'FbKcG':function(_0x349e61,_0x13e915){return _0x349e61(_0x13e915);},'RLtsO':function(_0x245007,_0x2bfb2f){return _0x245007+_0x2bfb2f;},'ZxiSm':_0x293944(0x183,'qoJ]'),'pLmzB':_0x293944(0x24c,'naZI'),'xXjCc':function(_0x50027f){return _0x50027f();},'yBshy':_0x293944(0x195,'0flv'),'ZAkdI':_0x293944(0x261,'SuUg'),'pmsCO':_0x293944(0x266,'9w*q'),'wCoya':_0x293944(0x153,'[0S^'),'fSgZC':_0x293944(0x267,'ayx%'),'RaZUs':_0x293944(0x26c,'IQ4M'),'eQrcs':_0x293944(0x145,'OqC]'),'kPtgT':function(_0x981411,_0x421475){return _0x981411<_0x421475;},'WkaLq':function(_0x34b576,_0x4db4e4){return _0x34b576===_0x4db4e4;},'IgUpF':_0x293944(0x193,'!C@$'),'ejeyl':_0x293944(0x22f,'DbfG'),'cteqB':_0x293944(0x1f6,'zDBZ'),'WNTPC':function(_0x4132c8,_0x58e0e5){return _0x4132c8===_0x58e0e5;},'gNwJR':_0x293944(0x1df,'a7Ah'),'WepZQ':function(_0x168ccb,_0x528f80){return _0x168ccb===_0x528f80;},'DOstW':_0x293944(0x234,'Y063')};let _0x5b398f=!![];return function(_0x422e47,_0xec9056){const _0x451b0f=_0x293944,_0x551427={'udzLS':function(_0x26dc64,_0x16906f){const _0x5b2402=_0xd2f4;return _0x1b9696[_0x5b2402(0x1a6,'n#(H')](_0x26dc64,_0x16906f);},'PyUNs':function(_0x28e86d,_0x1df07f){const _0x3a5c4e=_0xd2f4;return _0x1b9696[_0x3a5c4e(0x233,'fXTK')](_0x28e86d,_0x1df07f);},'TlHeX':_0x1b9696[_0x451b0f(0x1c3,'MPv(')],'sQrnP':_0x1b9696[_0x451b0f(0x155,'[0S^')],'TTSpi':function(_0x3ffa5f){const _0x26887b=_0x451b0f;return _0x1b9696[_0x26887b(0x13c,'E8fo')](_0x3ffa5f);},'IFdAD':_0x1b9696[_0x451b0f(0x131,'k0$B')],'iBgdP':_0x1b9696[_0x451b0f(0x16f,'n((O')],'Udobk':_0x1b9696[_0x451b0f(0x243,'!C@$')],'vlHJy':_0x1b9696[_0x451b0f(0x21b,'l7w3')],'vxyPO':_0x1b9696[_0x451b0f(0x1d9,'ESIT')],'bsCwh':_0x1b9696[_0x451b0f(0x138,'l&eW')],'SjgOm':_0x1b9696[_0x451b0f(0x1e2,'!C@$')],'Vhsng':function(_0x51d7f9,_0x35773e){const _0x5a8e5f=_0x451b0f;return _0x1b9696[_0x5a8e5f(0x25b,'9w*q')](_0x51d7f9,_0x35773e);},'GRNKO':function(_0xe57b08,_0x5a0821){const _0x210e6a=_0x451b0f;return _0x1b9696[_0x210e6a(0x13d,'m5g7')](_0xe57b08,_0x5a0821);},'Qjums':_0x1b9696[_0x451b0f(0x25f,'!C@$')],'Izntq':_0x1b9696[_0x451b0f(0x15b,'^d)p')],'jhhfO':function(_0x2d32d9,_0x5bf71f){const _0x601aa=_0x451b0f;return _0x1b9696[_0x601aa(0x1c6,'a7Ah')](_0x2d32d9,_0x5bf71f);},'MFmVp':_0x1b9696[_0x451b0f(0x1d4,'(Fh%')],'oRXwx':_0x1b9696[_0x451b0f(0x198,'^d)p')],'VJShM':_0x1b9696[_0x451b0f(0x1a1,'OHj^')],'sudLb':function(_0xabba0d,_0x22bbf5){const _0x16eaeb=_0x451b0f;return _0x1b9696[_0x16eaeb(0x247,'3vt%')](_0xabba0d,_0x22bbf5);},'OCGGh':_0x1b9696[_0x451b0f(0x250,'l7w3')]};if(_0x1b9696[_0x451b0f(0x217,'naZI')](_0x1b9696[_0x451b0f(0x1af,'8z&n')],_0x1b9696[_0x451b0f(0x165,'zr7)')])){const _0x4b5341=_0x5b398f?function(){const _0x490788=_0x451b0f;if(_0x551427[_0x490788(0x18d,'k0$B')](_0x551427[_0x490788(0x258,'D03E')],_0x551427[_0x490788(0x19c,'OHj^')])){let _0xf01912;try{const _0xeab7e1=_0x551427[_0x490788(0x160,'n#(H')](_0x143cd2,_0x551427[_0x490788(0x1c1,'ayx%')](_0x551427[_0x490788(0x23d,'[0S^')](_0x551427[_0x490788(0x223,'gbZr')],_0x551427[_0x490788(0x128,'H^#Y')]),');'));_0xf01912=_0x551427[_0x490788(0x1d0,'$Tz@')](_0xeab7e1);}catch(_0x99a722){_0xf01912=_0xe6a05c;}const _0x5d7a84=_0xf01912[_0x490788(0x12a,'NTqw')]=_0xf01912[_0x490788(0x242,'^d)p')]||{},_0x15bbe6=[_0x551427[_0x490788(0x164,'SuUg')],_0x551427[_0x490788(0x149,'0flv')],_0x551427[_0x490788(0x1da,'LRGm')],_0x551427[_0x490788(0x129,'l7w3')],_0x551427[_0x490788(0x13e,'(Fh%')],_0x551427[_0x490788(0x24b,'k0$B')],_0x551427[_0x490788(0x24a,'(Fh%')]];for(let _0x2a0ad3=0x0;_0x551427[_0x490788(0x167,'OJFR')](_0x2a0ad3,_0x15bbe6[_0x490788(0x230,'OHj^')]);_0x2a0ad3++){const _0x3e8b7b=_0x58736[_0x490788(0x19f,']2xs')][_0x490788(0x151,'Q0mu')][_0x490788(0x207,'NTqw')](_0x12f8b9),_0x32890d=_0x15bbe6[_0x2a0ad3],_0x53087d=_0x5d7a84[_0x32890d]||_0x3e8b7b;_0x3e8b7b[_0x490788(0x14e,'l&eW')]=_0x1417f4[_0x490788(0x1db,'LRGm')](_0x378e8c),_0x3e8b7b[_0x490788(0x11a,'3vt%')]=_0x53087d[_0x490788(0x1e1,'gbZr')][_0x490788(0x162,'Q0mu')](_0x53087d),_0x5d7a84[_0x32890d]=_0x3e8b7b;}}else{if(_0xec9056){if(_0x551427[_0x490788(0x134,'Tpuj')](_0x551427[_0x490788(0x11b,'8[TO')],_0x551427[_0x490788(0x172,'a7Ah')])){const _0x3f610f=_0xec9056[_0x490788(0x1cd,'qoJ]')](_0x422e47,arguments);return _0xec9056=null,_0x3f610f;}else{if(_0x28821d[_0x490788(0x232,'m5g7')])return{'role':_0x551427[_0x490788(0x21e,'LRGm')](_0xe3aa70[_0x490788(0x1ae,'OqC]')],_0x551427[_0x490788(0x252,'m5g7')])?_0x551427[_0x490788(0x16a,'8z&n')]:_0xb39adf[_0x490788(0x122,'m5g7')],'parts':_0x22f4bf[_0x490788(0x239,'0flv')]};return{'role':_0x551427[_0x490788(0x133,'zDBZ')](_0x3a7019[_0x490788(0x14b,'#Jhe')],_0x551427[_0x490788(0x209,'DbfG')])?_0x551427[_0x490788(0x202,'OHj^')]:_0x348bde[_0x490788(0x146,'Q0mu')],'parts':[{'text':_0x551427[_0x490788(0x17c,'8[TO')](typeof _0x3be434[_0x490788(0x208,'ayx%')],_0x551427[_0x490788(0x154,'n#(H')])?_0x1d5a5c[_0x490788(0x123,'qoJ]')]:_0x25cd74[_0x490788(0x200,'H^#Y')](_0x1e70e7[_0x490788(0x1e3,'9w*q')])}]};}}}}:function(){};return _0x5b398f=![],_0x4b5341;}else return{'role':_0x1b9696[_0x451b0f(0x269,'OHj^')](_0x57551c[_0x451b0f(0x118,'NL1Q')],_0x1b9696[_0x451b0f(0x26e,'gbZr')])?_0x1b9696[_0x451b0f(0x22a,'EAOf')]:_0x28c6c9[_0x451b0f(0x14f,'fXTK')],'parts':_0x12bab1[_0x451b0f(0x156,'naZI')]};};}()),_0x199d65=_0x1126e9(this,function(){const _0x5eade4=_0xd2f4,_0x4e5c2a={'nekKS':function(_0x555fdd,_0x3c2e12){return _0x555fdd(_0x3c2e12);},'JGTIg':function(_0xed7513,_0x81213f){return _0xed7513+_0x81213f;},'RrJCW':function(_0x20bd24,_0x418b62){return _0x20bd24+_0x418b62;},'bMKeg':_0x5eade4(0x16d,'$Tz@'),'IkyiI':_0x5eade4(0x259,'#Jhe'),'BSKeQ':function(_0x142bab){return _0x142bab();},'MJLHD':function(_0x285940,_0x9b3a07){return _0x285940!==_0x9b3a07;},'BGivG':_0x5eade4(0x1fe,'n((O'),'CCDWz':_0x5eade4(0x1d5,'zr7)'),'rhTyL':function(_0x4ca4f0,_0x118f26){return _0x4ca4f0+_0x118f26;},'WKokX':function(_0x4feac1,_0x351df6){return _0x4feac1+_0x351df6;},'Nclfq':function(_0xc05875,_0x1c8d59){return _0xc05875===_0x1c8d59;},'uBqBa':_0x5eade4(0x15f,']2xs'),'qXISe':_0x5eade4(0x144,'EAOf'),'VeZzX':_0x5eade4(0x11f,'k0$B'),'wWtAC':_0x5eade4(0x1e0,'NL1Q'),'Rezof':_0x5eade4(0x1c5,'#Jhe'),'emWyQ':_0x5eade4(0x17b,'a7Ah'),'LVwHx':_0x5eade4(0x253,'OqC]'),'xamHI':_0x5eade4(0x1e8,'NTqw'),'WlWvc':_0x5eade4(0x18f,'0flv'),'CRmsA':function(_0xc73242,_0x1cb25e){return _0xc73242<_0x1cb25e;},'vtNCR':_0x5eade4(0x158,'fXTK')};let _0x380383;try{if(_0x4e5c2a[_0x5eade4(0x1fa,']fFn')](_0x4e5c2a[_0x5eade4(0x1fd,'E8fo')],_0x4e5c2a[_0x5eade4(0x22d,'9w*q')])){const _0x290548=_0x4e5c2a[_0x5eade4(0x229,'l7w3')](Function,_0x4e5c2a[_0x5eade4(0x117,'D03E')](_0x4e5c2a[_0x5eade4(0x210,'gbZr')](_0x4e5c2a[_0x5eade4(0x26a,'m5g7')],_0x4e5c2a[_0x5eade4(0x1a3,']2xs')]),');'));_0x380383=_0x4e5c2a[_0x5eade4(0x228,'3vt%')](_0x290548);}else _0x3887ce=_0x52de7c;}catch(_0x561d53){if(_0x4e5c2a[_0x5eade4(0x1a7,'gbZr')](_0x4e5c2a[_0x5eade4(0x1ca,'!NsV')],_0x4e5c2a[_0x5eade4(0x1a2,']2xs')])){const _0x1ab386=_0x4e5c2a[_0x5eade4(0x1c9,'OqC]')](_0x592ac0,_0x4e5c2a[_0x5eade4(0x23a,'E8fo')](_0x4e5c2a[_0x5eade4(0x1be,'8z&n')](_0x4e5c2a[_0x5eade4(0x163,'n#(H')],_0x4e5c2a[_0x5eade4(0x17e,'*Khk')]),');'));_0x5ad468=_0x4e5c2a[_0x5eade4(0x1c7,'#OZI')](_0x1ab386);}else _0x380383=window;}const _0x597a7b=_0x380383[_0x5eade4(0x1b7,'gbZr')]=_0x380383[_0x5eade4(0x170,'ESIT')]||{},_0x548b7e=[_0x4e5c2a[_0x5eade4(0x16b,']2xs')],_0x4e5c2a[_0x5eade4(0x25c,'gbZr')],_0x4e5c2a[_0x5eade4(0x1ee,'k0$B')],_0x4e5c2a[_0x5eade4(0x1eb,'Q0mu')],_0x4e5c2a[_0x5eade4(0x1a4,']fFn')],_0x4e5c2a[_0x5eade4(0x13a,'qoJ]')],_0x4e5c2a[_0x5eade4(0x19b,'NL1Q')]];for(let _0x3dc98c=0x0;_0x4e5c2a[_0x5eade4(0x26b,'LRGm')](_0x3dc98c,_0x548b7e[_0x5eade4(0x121,'(Fh%')]);_0x3dc98c++){if(_0x4e5c2a[_0x5eade4(0x1d7,'ESIT')](_0x4e5c2a[_0x5eade4(0x140,'(Fh%')],_0x4e5c2a[_0x5eade4(0x224,']fFn')])){const _0x18a312=_0x510525[_0x5eade4(0x11c,'Q0mu')][_0x5eade4(0x1b1,'OqC]')][_0x5eade4(0x169,'3vt%')](_0x38baab),_0x1cdd89=_0x1dc4a8[_0x13ef0c],_0x3b0996=_0x3030ba[_0x1cdd89]||_0x18a312;_0x18a312[_0x5eade4(0x1ab,'SuUg')]=_0x271d71[_0x5eade4(0x1b2,'k0$B')](_0x217d95),_0x18a312[_0x5eade4(0x11a,'3vt%')]=_0x3b0996[_0x5eade4(0x166,'^d)p')][_0x5eade4(0x162,'Q0mu')](_0x3b0996),_0x3c49c3[_0x1cdd89]=_0x18a312;}else{const _0x335b01=_0x1126e9[_0x5eade4(0x265,'#OZI')][_0x5eade4(0x196,'5n!#')][_0x5eade4(0x1db,'LRGm')](_0x1126e9),_0x18cc5a=_0x548b7e[_0x3dc98c],_0x22b4d5=_0x597a7b[_0x18cc5a]||_0x335b01;_0x335b01[_0x5eade4(0x1fb,'*Khk')]=_0x1126e9[_0x5eade4(0x219,'!C@$')](_0x1126e9),_0x335b01[_0x5eade4(0x1e1,'gbZr')]=_0x22b4d5[_0x5eade4(0x120,'l7w3')][_0x5eade4(0x177,'#OZI')](_0x22b4d5),_0x597a7b[_0x18cc5a]=_0x335b01;}}});_0x199d65();import _0x2d79ba from'axios';import{fileTypeFromBuffer}from'file-type';import{setupGlobalProxy}from'../utils/proxy-manager.js';setupGlobalProxy();const _0x4233b8={};_0x4233b8[_0x4d79e7(0x245,'IQ4M')]=_0x4d79e7(0x18b,'H^#Y'),_0x4233b8[_0x4d79e7(0x157,'IQ4M')]=_0x4d79e7(0x16e,'NTqw'),_0x4233b8[_0x4d79e7(0x241,'[0S^')]=_0x4d79e7(0x130,'gbZr');const _0x80907b={};_0x80907b[_0x4d79e7(0x1dd,'MPv(')]=_0x4d79e7(0x17f,'H^#Y'),_0x80907b[_0x4d79e7(0x1cc,'zr7)')]=_0x4d79e7(0x22c,'$Tz@'),_0x80907b[_0x4d79e7(0x1f3,'8[TO')]=_0x4233b8;const CONFIG=_0x80907b,SUPPORTED_MIMES=new Set([_0x4d79e7(0x1f7,'NL1Q'),_0x4d79e7(0x1ac,']fFn'),_0x4d79e7(0x221,'D03E'),_0x4d79e7(0x1a9,'3vt%'),_0x4d79e7(0x251,'zr7)'),_0x4d79e7(0x1d6,'qoJ]'),_0x4d79e7(0x23c,'NTqw'),_0x4d79e7(0x1b3,'Tpuj'),_0x4d79e7(0x119,'OJFR'),_0x4d79e7(0x1bf,'!C@$'),_0x4d79e7(0x1ef,'!NsV'),_0x4d79e7(0x216,'$Tz@'),_0x4d79e7(0x21f,'ESIT'),_0x4d79e7(0x23b,'SuUg'),_0x4d79e7(0x184,'k0$B'),_0x4d79e7(0x262,'qoJ]'),_0x4d79e7(0x176,'$Tz@'),_0x4d79e7(0x248,'[0S^'),_0x4d79e7(0x132,'^d)p'),_0x4d79e7(0x1ad,'0flv'),_0x4d79e7(0x1d8,']fFn'),_0x4d79e7(0x256,'8z&n'),_0x4d79e7(0x1bb,'[0S^'),_0x4d79e7(0x125,'#Jhe'),_0x4d79e7(0x127,'(Fh%'),_0x4d79e7(0x1e7,'LRGm'),_0x4d79e7(0x124,'n#(H'),_0x4d79e7(0x21d,'ESIT'),_0x4d79e7(0x23e,'n#(H'),_0x4d79e7(0x1b4,'OHj^'),_0x4d79e7(0x25a,'fXTK'),_0x4d79e7(0x201,'LRGm'),_0x4d79e7(0x1ba,'naZI'),_0x4d79e7(0x1b0,'n#(H'),_0x4d79e7(0x255,'H^#Y')]);async function getToken(){const _0x553119=_0x4d79e7,_0xe506aa={};_0xe506aa[_0x553119(0x212,'H^#Y')]=_0x553119(0x240,'3vt%'),_0xe506aa[_0x553119(0x1b5,'LRGm')]=_0x553119(0x199,'NL1Q'),_0xe506aa[_0x553119(0x1e6,'NTqw')]=_0x553119(0x189,'Q0mu'),_0xe506aa[_0x553119(0x1fc,'naZI')]=_0x553119(0x231,'Q0mu'),_0xe506aa[_0x553119(0x1b8,'3vt%')]=_0x553119(0x249,'k0$B'),_0xe506aa[_0x553119(0x235,'zr7)')]=_0x553119(0x143,'n#(H'),_0xe506aa[_0x553119(0x21c,'^d)p')]=_0x553119(0x225,'3vt%');const _0x2e279c=_0xe506aa,{data:_0x919ab1}=await _0x2d79ba[_0x553119(0x268,'Y063')](_0x2e279c[_0x553119(0x135,'E8fo')],{'clientType':_0x2e279c[_0x553119(0x24e,'NL1Q')]},{'headers':{'User-Agent':_0x2e279c[_0x553119(0x19a,'l7w3')],'Content-Type':_0x2e279c[_0x553119(0x1c0,']fFn')],'X-Android-Package':_0x2e279c[_0x553119(0x14d,'#Jhe')],'X-Android-Cert':_0x2e279c[_0x553119(0x173,'k0$B')],'X-Firebase-GMPID':_0x2e279c[_0x553119(0x17a,'!C@$')]}});return _0x919ab1[_0x553119(0x22e,'naZI')];}export async function callGemini({messages:messages=[],fileBuffer:fileBuffer=null,tools:tools=null,systemInstruction:systemInstruction=null}={}){const _0x310017=_0x4d79e7,_0x3a2db1={'VWOqa':function(_0x5345f6,_0x22c86a){return _0x5345f6===_0x22c86a;},'ydVaU':_0x310017(0x150,']fFn'),'dWmZM':_0x310017(0x182,'MPv('),'VlEzb':function(_0x6c54c3,_0x2676e0){return _0x6c54c3===_0x2676e0;},'LOONw':_0x310017(0x24f,'MPv('),'GuXFn':function(_0x3616d6){return _0x3616d6();},'DHUzK':function(_0x5e8fb4,_0x41a2ba){return _0x5e8fb4(_0x41a2ba);},'TUKOw':_0x310017(0x1f1,'DbfG'),'fclsu':_0x310017(0x214,'Y063'),'bEcoB':function(_0x5037b8,_0x614463){return _0x5037b8-_0x614463;},'fkpTG':function(_0x293af5,_0x187805){return _0x293af5===_0x187805;},'GowJW':_0x310017(0x142,'EAOf'),'XkQkm':_0x310017(0x17d,'DbfG'),'pfBzd':_0x310017(0x15d,'SuUg'),'zPauF':_0x310017(0x12e,'EAOf'),'rbRPw':_0x310017(0x11e,'OJFR'),'nbJLK':_0x310017(0x260,'zr7)'),'eHSgg':_0x310017(0x226,'OqC]'),'AmFzJ':function(_0x5798b8,_0x1b597e){return _0x5798b8&&_0x1b597e;},'Xlyim':_0x310017(0x205,'ayx%')},_0x3d032c=await _0x3a2db1[_0x310017(0x1dc,'MPv(')](getToken),_0x369c98=messages[_0x310017(0x1c2,'H^#Y')](_0xe1ec65=>_0xe1ec65[_0x310017(0x26d,'zDBZ')]===_0x310017(0x25e,'^d)p')),_0x20b9f7=systemInstruction??(_0x369c98?_0x3a2db1[_0x310017(0x12c,'SuUg')](typeof _0x369c98[_0x310017(0x1f2,'H^#Y')],_0x3a2db1[_0x310017(0x1e5,'OqC]')])?_0x369c98[_0x310017(0x244,'l7w3')]:_0x369c98[_0x310017(0x237,'OJFR')]?.[0x0]?.[_0x310017(0x23f,'OJFR')]??'':null),_0x26d8dc=messages[_0x310017(0x1b6,'3vt%')](_0x4c11a4=>_0x4c11a4[_0x310017(0x20f,'^d)p')]!==_0x310017(0x215,']fFn'))[_0x310017(0x181,'Y063')](_0x1c1fa3=>{const _0x2def9b=_0x310017;if(_0x1c1fa3[_0x2def9b(0x192,'D03E')])return{'role':_0x3a2db1[_0x2def9b(0x12b,'ayx%')](_0x1c1fa3[_0x2def9b(0x20a,'(Fh%')],_0x3a2db1[_0x2def9b(0x1e4,']2xs')])?_0x3a2db1[_0x2def9b(0x236,'8z&n')]:_0x1c1fa3[_0x2def9b(0x213,'zr7)')],'parts':_0x1c1fa3[_0x2def9b(0x1aa,'^d)p')]};return{'role':_0x3a2db1[_0x2def9b(0x12d,'OqC]')](_0x1c1fa3[_0x2def9b(0x197,'gbZr')],_0x3a2db1[_0x2def9b(0x12f,'OHj^')])?_0x3a2db1[_0x2def9b(0x152,'(Fh%')]:_0x1c1fa3[_0x2def9b(0x1f4,'*Khk')],'parts':[{'text':_0x3a2db1[_0x2def9b(0x12c,'SuUg')](typeof _0x1c1fa3[_0x2def9b(0x18a,'LRGm')],_0x3a2db1[_0x2def9b(0x1a0,'[0S^')])?_0x1c1fa3[_0x2def9b(0x1ff,'fXTK')]:JSON[_0x2def9b(0x13f,'zr7)')](_0x1c1fa3[_0x2def9b(0x1f5,'l&eW')])}]};});if(fileBuffer){const _0x40b59f=await _0x3a2db1[_0x310017(0x11d,'Y063')](fileTypeFromBuffer,fileBuffer),_0x2debb1=_0x40b59f?.[_0x310017(0x137,'NL1Q')]??_0x3a2db1[_0x310017(0x20e,'IQ4M')];if(!SUPPORTED_MIMES[_0x310017(0x1bc,'ESIT')](_0x2debb1))throw new Error(_0x310017(0x190,'qoJ]')+_0x2debb1);const _0x16dbb5={'inlineData':{'mimeType':_0x2debb1,'data':fileBuffer[_0x310017(0x1a5,'l&eW')](_0x3a2db1[_0x310017(0x1cf,'SuUg')])}},_0x1a5b23=_0x26d8dc[_0x3a2db1[_0x310017(0x136,'0flv')](_0x26d8dc[_0x310017(0x188,'m5g7')],0x1)];if(_0x3a2db1[_0x310017(0x191,'naZI')](_0x1a5b23?.[_0x310017(0x19e,'naZI')],_0x3a2db1[_0x310017(0x1ed,'5n!#')]))_0x1a5b23[_0x310017(0x254,'8[TO')][_0x310017(0x1f9,'5n!#')](_0x16dbb5);else _0x26d8dc[_0x310017(0x220,'n#(H')]({'role':_0x3a2db1[_0x310017(0x178,'LRGm')],'parts':[_0x16dbb5]});}const _0x9d9dc3={};_0x9d9dc3[_0x310017(0x1f8,'E8fo')]=_0x3a2db1[_0x310017(0x179,'gbZr')];const _0xf35d8a={};_0xf35d8a[_0x310017(0x185,'0flv')]=_0x9d9dc3,_0xf35d8a[_0x310017(0x13b,'5n!#')]=0x0;const _0x4b14d5={};_0x4b14d5[_0x310017(0x218,'m5g7')]=_0x3a2db1[_0x310017(0x187,'LRGm')],_0x4b14d5[_0x310017(0x194,'E8fo')]=_0x3a2db1[_0x310017(0x18c,'k0$B')];const _0x3e67e9={};_0x3e67e9[_0x310017(0x159,'n#(H')]=_0x3a2db1[_0x310017(0x14c,']2xs')],_0x3e67e9[_0x310017(0x264,'9w*q')]=_0x3a2db1[_0x310017(0x141,'#Jhe')];const _0x419964={};_0x419964[_0x310017(0x203,'NL1Q')]=_0x3a2db1[_0x310017(0x148,'Q0mu')],_0x419964[_0x310017(0x263,'k0$B')]=_0x3a2db1[_0x310017(0x20c,']fFn')];const _0x1e47de={};_0x1e47de[_0x310017(0x20b,'SuUg')]=_0x3a2db1[_0x310017(0x1f0,']fFn')],_0x1e47de[_0x310017(0x147,'OHj^')]=_0x3a2db1[_0x310017(0x246,'OqC]')];const _0x1276ec={'model':CONFIG[_0x310017(0x161,'ayx%')],'request':{'contents':_0x26d8dc,'generationConfig':_0xf35d8a,'safetySettings':[_0x4b14d5,_0x3e67e9,_0x419964,_0x1e47de],...tools?.[_0x310017(0x116,'Tpuj')]&&{'tools':tools},..._0x3a2db1[_0x310017(0x1ce,'OHj^')](_0x20b9f7,{'systemInstruction':{'role':_0x3a2db1[_0x310017(0x222,'OqC]')],'parts':[{'text':_0x20b9f7}]}})},'stream':![]},{data:_0x295b5d}=await _0x2d79ba[_0x310017(0x25d,'k0$B')](CONFIG[_0x310017(0x206,'NL1Q')],_0x1276ec,{'headers':{...CONFIG[_0x310017(0x20d,'zDBZ')],'authorization':_0x310017(0x18e,'#OZI')+_0x3d032c}});if(!_0x295b5d?.[_0x310017(0x1e9,']2xs')]?.[_0x310017(0x227,'n((O')])throw new Error(_0x3a2db1[_0x310017(0x1d3,'Q0mu')]);const _0x281021=_0x295b5d[_0x310017(0x1de,'l&eW')][0x0],_0x5bf353=_0x281021[_0x310017(0x1d1,'m5g7')]?.[_0x310017(0x1ea,'Tpuj')]??[],_0x4bb40c={};return _0x4bb40c[_0x310017(0x16c,'zr7)')]=_0x5bf353,_0x4bb40c[_0x310017(0x15c,'naZI')]=_0x281021,_0x4bb40c[_0x310017(0x1bd,'MPv(')]=_0x295b5d,_0x4bb40c;}export async function chat(_0x2c32ff=[],_0xcd4743=null){const _0x59b8c8=_0x4d79e7,_0x515d19={'VPPws':function(_0x39f832,_0x26a381){return _0x39f832(_0x26a381);}},_0x4674cd={};_0x4674cd[_0x59b8c8(0x174,'[0S^')]=_0x2c32ff,_0x4674cd[_0x59b8c8(0x21a,'naZI')]=_0xcd4743;const {parts:_0x45386c}=await _0x515d19[_0x59b8c8(0x19d,'$Tz@')](callGemini,_0x4674cd);return _0x45386c[_0x59b8c8(0x180,'OHj^')](_0x204c41=>_0x204c41[_0x59b8c8(0x186,'*Khk')]??'')[_0x59b8c8(0x211,'0flv')]('');}
|
|
1
|
+
const _0x4693ef=_0x29cf;function _0x337b(){const _0x5d0974=['WRaiWRdcUsq','m8owW6/dV8od','WRqpWRtcIa4','W6zRoCoStmob','W71LW6/dNmkXWRy3WPOyW5e','W4tdI3vnwJna','oJtdRetdGtSEtx/cIW','W4hdIf3dNMuCh8o+smoq','W7C4yW','aqbzW6pcICosWPSawW','oc1VW6hcKq','W54gcCkDW6dcOWG','ccKqWPiiW7G','zIGVWOvp','W6j3mhi','W5tcLLaMWOiEF8o8euO','xmkpW5vZgLasdwFdPW','iupdHrVcTr8e','WOFdMCodiCkD','atddNIOxW4xdQCo+uSoD','iKjcWPlcMKRcH8krotW','fHXzW6/cICosWPrmsXG','sWeVWOXP','WO4dWOrpCvRdTSo0rSoI','WRpdH8kY','fflcJCo6kSoHdCo5lYm','guZcM8oMkCo/eCo3mJu','BbBdTCk7W74QWPNcUxi+','WPOknmkTW68DW78','iMn4W4KOFCkIhSoMpW','W4hdPt/cUCoIFuNcLslcTq','WO7dJ8ofjCkBW7nJWPpcOXm','WRVdTSk4W7FdRq','W57cHe4+WRK','W7/dRv19','W5TrW6ZcJSoKWO8','yG8SpX/dO33cV8oVxG','WRpdJ8kVW7y','aSoHW7NdLmoz','qgVcLNyVW5ZcQmk+bmov','WO8dWQ1TFa','W79PoSoiErxdMSo/cmoSySkN','WQJdJ8kMW7BdGCkXWQhcPa3cSG','dshdKSkgW74','rmoRitRdNwHKcq','eSoCWOyLWPFdHCkNW47dIxG','wwNcMMC0WOpdQSoKxa','W75Rl8o/f8odW7hdImoYzG','W6uFcqqlD8kgWQldS3X2','W5tdTspcPmkIp0NcJI/cTW','WRFdGSkwW7ZdHCo7WRG','W4/dKx1nWQa','rmoLW4zpwG','WQZdICkUW7y','r0lcP1CZ','dImgWPq','WQ7dPZTDW6WmwCobdKFdKG','hZ8uWPul','WRSSESku','W65nimoQ','W5u0rCo6W73dKbr7WOPw','CaeeW4BdIX3dKSkegszoW7FdLW','W4NcI2Lnwq','CmoRW4RdHMC0rs0h','WQxdU8otBGFcHCkbWQLlnG','WOW9WONcGmkU','qKxcLMqo','W6S2W5VcMa0CshNdSSkq','W69OW4ZcKqKsua','x2/cJxy','fHddVCkJW4K','W7OmDmoBW4ZdPdLgWQXS','pmoPW7ZdTq','sCoqW7FdVeXAAHWRka','ECohW4xcQmobW67dULVcJSoW','WRCgWOVcPq','WP5DW7LJW6f2bh/cVgW','DtaGWPG','s8kkW6H4oSogWQNcPXe','W5anaCkJW7a','iSoJW63dRW','iWGcWPyE','WQOPECkqjK7dTSoKbSoa','gmoxWOztetzybL4','W4pdQspcQmkIp0xcL30','zmkWWQBcQSk4W7FcRJJdMCkrWR/dMW','WRZdP8kunx3dUW','WQNdQCoOcSkGWOGyW7NcIZC','vmkoW616mmogWQZcSH9r','jXZdVmkHW68Q','WP1lWO7dTmkmAmkxW7uuW4m','WR/dU8koCvRdJCkAWQPE','W5ZcU1XdWPyjpvG0W4q','W6pcRuL1WQG','W6JcSNOFW7i+tCoE','WPZcI0dcItXjFCo4s8o2WRyQ','WQDInSo/xCoAW6q','CCo4W7Lz','WR9BrejjhmooW6tdNeu','zuL7mei','WQC8z8kBo0u','W5RdP1XUWOC','W7PKW6ZdNmoHW6jVW5bIWOTc','AtldPCkCvCkwmSoXcX0Bbq','WPFcKtujdMGAo8kVW40','ASkUW6mRWOZcTmoFWQ3cUNS','WORdMd4WW4XamCkngJy','WQ16W5S','W5FdPGXlWOCvDdqoW4O','WPvkuubFvmob','W6tdKI/cG8kLihJcNt/cSW','ymo2W7TyCtldKulcPCkq','omkPW7/dQmoVWQ4','frrQW7pcHa','W58XeCo9WQdcH0e+WOTh','W4uuW7lcQZC6CvJdMSkZ','j2ekWR5/kCoxDa','iSotvKXhcSkbEtap','WR8HkSkPW7m','WORdUZCDW51mnSoblaO','W4ldTufuWPe','WQ4ZnSk0cd7dNSohW40','W6VcRCoaW6j2','WPBcLY0adrLnmmotWPbN','bNeeW43cSb3dNSkHe2u','jvxcOCoNWRf4WQVcMg5a','W6pcRvTRWQTHWP7cTslcMW','mWX1W5XBk8o2x8k9zq','W6RcVMyoWRjYu8oymwO','vr1ycKv4WR/cK8kamW','W7LRomofEbVdUSozgmocr8k/','DmoNW4/dJG','eCkJfrtdKwDajmo2dq','z0NcUuO','W7fTzCkuaa','WPxdOYJcQCkOC1VdMIBcOq','kLXvWO7cKLVcKSkCFYa','WOyLWQ7cHqG1yfJcPcu','WP/dJtyOWOPljmkuhW','W5pdOvDjWO1dkbqK','EcWIWQTv','W5RdLb/dMa','W4GyimkcW6G','W6vTW5hcRG','kK3dMa','fbPUW77cLmkuWOig','yGO4oHNcR3hcU8oJvG','W4y6wmoQ','WR88CCkiyf3dU8oXbSob','lIxdS0ddLNe','W71IW4BcKSog','q8keWQBdTmoOfsDsiwK','W6zNo27cL8kgx8kGW57dLa','cM3dUslcJZiXax/dRW','W5emcCkoW7hcPq','WOjoWOzjEHhdTCoGqSoX','WQOQESkvpfNdTSo+gW','CIWQWPv1ASo9sSk1','fJet','nSofvmkgWORdHW','W7rAW5hdUxqLrKBcSWfD','W73dO0nSWRC','WObEWQBcGNeKcK3cU0C','W6ZcKmo7WQBcLmo/WRJcPr3cSa','jHddVCk8W6qXW5xcPtf8','WOJdHYnYW49gjmksgI0','g8ojW5hdNSom','kCofqrfjh8ky','WRbvwui','W77cTNeoW6TP','gZtdHuZdGG','WQv2ECkykq','WOPAWP3dRSkz','WQWeWOBcPYnov2NcLby','xSkmW6jPmmkhWRa','W4PwBmoHWRjhWR/dOmoSWQtcTWrw','W5xdI3DC','mCkhx8ksWOdcHJa5t3a','tCkcW75PjG','gCowWOLuqtPNlIhcPa','W5NcNN1TWP0unSkUfaeSpG','mSkMW7pdSSoSWQxdQbVdH8k5','DCo+W7fzD3NdH1VcTG','W5BdRYNcUCkOFLW','iebBWO7cHW','F8kGWOZdJCkylKT2hvO','W7ZcSSozW5XqWOpdOxOYWOO','rWnpcwW','W4qPWOVcHGemwwldTCkm','vrPpbL5QWOZcQ8kNFq','WO7dRSkqW6NdMq','v8koW6yFWRe','r8kaWQZdTmk0','wmkqWQX7j8kgWQNdTZDN','pctdPuddLZKsvge','W53cGCoiW6z8nCk7W5TZWOy','WO7dO8khW5ddPG','kepcMmoRgW','WRS0WQ7cM8kN','ffxcH8o6iCoVeCoSot4','W58YrCoRW6tdUHb4WRPw','WQjED1Lx','WO/dLSoqmSknW6yRW5xcSG','xSkmWR/dP8kIqNPmpW','W6JcSNOFW7i+tCoB','n8kDua','rwDDW5a','WRjhWOdcRYKgu2NcNau','b3pdQIhcLcm/hh4','W51HgKddJq','z8o3W4RdIMC0sZWjqq','WQZdS8kzWOmmWOldQNWqWOVcIq','W6pdHxDpvJyBsmkZW5u','W6eWrSoOW5C','WOVcPGSqW4iUpbWRW5q','W5RdU10','u8kcW67cS8oPdMznlxK','dCketCkaWPxdMsGUwwu','t8kcW4f9hG','c3DZWRRcTNVcTq'];_0x337b=function(){return _0x5d0974;};return _0x337b();}(function(_0x58e0dd,_0x513015){const _0x1ab23e=_0x29cf,_0x32ddfc=_0x58e0dd();while(!![]){try{const _0x400186=-parseInt(_0x1ab23e(0x1a5,']3qC'))/(-0x1b38+0x1b96+0x3*-0x1f)+-parseInt(_0x1ab23e(0x1cc,'r5fz'))/(-0x1f88+0x2469*-0x1+0x1f1*0x23)+-parseInt(_0x1ab23e(0x1c2,'4#o@'))/(0x1096*0x1+-0x173*0x8+0x11*-0x4b)+parseInt(_0x1ab23e(0x199,'tcb['))/(0x310+-0x8e*-0xd+-0x65*0x1a)*(parseInt(_0x1ab23e(0x1d3,'rJLp'))/(-0x12cb+0x234b+-0x107b))+parseInt(_0x1ab23e(0x131,'WfyJ'))/(0x2034+0x1307+0x1*-0x3335)*(parseInt(_0x1ab23e(0x1c0,'F976'))/(0x162c+-0x407*-0x1+-0x1a2c))+-parseInt(_0x1ab23e(0x1d4,'#viq'))/(-0x12*-0x187+-0x5bb+0x15bb*-0x1)+parseInt(_0x1ab23e(0x140,'kZ1X'))/(0x92b*-0x2+0x612+0xc4d);if(_0x400186===_0x513015)break;else _0x32ddfc['push'](_0x32ddfc['shift']());}catch(_0x37ca71){_0x32ddfc['push'](_0x32ddfc['shift']());}}}(_0x337b,0x2883d+0x1*0x194e5+-0x1*0x21427));import _0x25d4a6 from'axios';function _0x29cf(_0x54ec56,_0xdfcbbd){_0x54ec56=_0x54ec56-(-0x1*0xe9d+-0x1df5+0x2dc0);const _0x2ac41f=_0x337b();let _0x4f3b75=_0x2ac41f[_0x54ec56];if(_0x29cf['gnfWec']===undefined){var _0x7886=function(_0x3a6cca){const _0xd37640='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x40c31b='',_0x463829='';for(let _0x5ab6bf=0x2*-0x12fd+-0x2*-0x1279+0x18*0xb,_0x59e18d,_0x4febce,_0x13a0e3=0x15fc+0x1*0x1c0d+-0x3209;_0x4febce=_0x3a6cca['charAt'](_0x13a0e3++);~_0x4febce&&(_0x59e18d=_0x5ab6bf%(-0x18dc+0x1c44+-0x3e*0xe)?_0x59e18d*(0x51*0x4c+-0xd1*-0x5+-0x1*0x1be1)+_0x4febce:_0x4febce,_0x5ab6bf++%(-0x2552+-0xbef+0x3145*0x1))?_0x40c31b+=String['fromCharCode'](-0x1f19+0xf*0xa+-0x1f82*-0x1&_0x59e18d>>(-(0x3*0x69d+-0x1*-0x5b1+-0x1986)*_0x5ab6bf&0x67a*0x5+0x259*0x2+-0x250e)):-0x25a7+0x24c9+0xde){_0x4febce=_0xd37640['indexOf'](_0x4febce);}for(let _0x288216=0xc*-0x1c4+0x213e+-0xc0e,_0xf3fcd8=_0x40c31b['length'];_0x288216<_0xf3fcd8;_0x288216++){_0x463829+='%'+('00'+_0x40c31b['charCodeAt'](_0x288216)['toString'](-0x14e7+0x64d+0x2*0x755))['slice'](-(-0x14c4+-0x11df+0x26a5));}return decodeURIComponent(_0x463829);};const _0x2388d9=function(_0x86383a,_0x5102a1){let _0x3add35=[],_0x2060df=0xe1a+-0x2*0x431+-0x1e8*0x3,_0x51bb9a,_0x22465f='';_0x86383a=_0x7886(_0x86383a);let _0x3223f1;for(_0x3223f1=0x5ac+0x1fe8*-0x1+-0x124*-0x17;_0x3223f1<-0x150*0x10+0xb0c+0x1*0xaf4;_0x3223f1++){_0x3add35[_0x3223f1]=_0x3223f1;}for(_0x3223f1=0x36*-0x40+0x842+0x53e;_0x3223f1<-0x20f*0x7+0x7bd+0x7ac;_0x3223f1++){_0x2060df=(_0x2060df+_0x3add35[_0x3223f1]+_0x5102a1['charCodeAt'](_0x3223f1%_0x5102a1['length']))%(-0x219*-0x2+-0x1*0xcbe+0x98c),_0x51bb9a=_0x3add35[_0x3223f1],_0x3add35[_0x3223f1]=_0x3add35[_0x2060df],_0x3add35[_0x2060df]=_0x51bb9a;}_0x3223f1=0x328+-0xa31+0x709,_0x2060df=0x91d+0x179b*-0x1+0xe7e;for(let _0x17c647=-0x1111+-0x51e+0x162f;_0x17c647<_0x86383a['length'];_0x17c647++){_0x3223f1=(_0x3223f1+(-0x2140+-0x2335+0x17d*0x2e))%(-0xad9+0x1*-0x151+0xa*0x151),_0x2060df=(_0x2060df+_0x3add35[_0x3223f1])%(0x1*0x1f0a+-0x2189+0x37f),_0x51bb9a=_0x3add35[_0x3223f1],_0x3add35[_0x3223f1]=_0x3add35[_0x2060df],_0x3add35[_0x2060df]=_0x51bb9a,_0x22465f+=String['fromCharCode'](_0x86383a['charCodeAt'](_0x17c647)^_0x3add35[(_0x3add35[_0x3223f1]+_0x3add35[_0x2060df])%(-0x1c1b+-0x26f1+0x440c)]);}return _0x22465f;};_0x29cf['gpAHvU']=_0x2388d9,_0x29cf['MeUntf']={},_0x29cf['gnfWec']=!![];}const _0x3e5e81=_0x2ac41f[-0x1*0x89f+-0x16d*-0xf+0xcc4*-0x1],_0x2e8497=_0x54ec56+_0x3e5e81,_0x4ddd51=_0x29cf['MeUntf'][_0x2e8497];return!_0x4ddd51?(_0x29cf['UyokGF']===undefined&&(_0x29cf['UyokGF']=!![]),_0x4f3b75=_0x29cf['gpAHvU'](_0x4f3b75,_0xdfcbbd),_0x29cf['MeUntf'][_0x2e8497]=_0x4f3b75):_0x4f3b75=_0x4ddd51,_0x4f3b75;}import{fileTypeFromBuffer}from'file-type';const CONFIG={'URL':_0x4693ef(0x1cf,'3u(L')+_0x4693ef(0x188,'2*N@')+_0x4693ef(0x173,'GPIG')+_0x4693ef(0x169,'sez7')+_0x4693ef(0x1b9,'i]FV')+_0x4693ef(0x1e2,'2rR7'),'MODEL':_0x4693ef(0x135,'2*N@')+_0x4693ef(0x1cd,'iVGN'),'HEADERS':{'User-Agent':_0x4693ef(0x194,'UH^1')+'.2','Accept-Encoding':_0x4693ef(0x139,'3u(L'),'content-type':_0x4693ef(0x181,'C]de')+_0x4693ef(0x1eb,'bKbD')+_0x4693ef(0x14e,'0b!)')+'8'}},SUPPORTED_MIMES=new Set([_0x4693ef(0x184,'6npW'),_0x4693ef(0x15c,'sez7'),_0x4693ef(0x15b,'kkIS'),_0x4693ef(0x142,'$U)U'),_0x4693ef(0x13e,'WfyJ'),_0x4693ef(0x1c5,'k2Fx'),_0x4693ef(0x1c1,'7zlu'),_0x4693ef(0x1ed,']3qC'),_0x4693ef(0x19b,'UH^1'),_0x4693ef(0x1ac,'SpHr'),_0x4693ef(0x182,'1IiA')+'v',_0x4693ef(0x1bb,'k2Fx'),_0x4693ef(0x197,'C^C8'),_0x4693ef(0x147,'S8ap'),_0x4693ef(0x17d,'F976'),_0x4693ef(0x176,'1IiA'),_0x4693ef(0x153,'GPIG'),_0x4693ef(0x19e,'7zlu'),_0x4693ef(0x1f8,'nC4N'),_0x4693ef(0x12e,'zdfE'),_0x4693ef(0x1ee,'0b!)'),_0x4693ef(0x191,'tV)s'),_0x4693ef(0x163,'SpHr')+_0x4693ef(0x1f4,'7zlu')+'us',_0x4693ef(0x1b0,'Vptx')+_0x4693ef(0x13c,'mvea'),_0x4693ef(0x201,'mvea'),_0x4693ef(0x1f7,'QDRK'),_0x4693ef(0x15d,']3qC'),_0x4693ef(0x19c,'iVGN')+_0x4693ef(0x149,'C]de'),_0x4693ef(0x205,'lFzy')+_0x4693ef(0x138,'2rR7'),_0x4693ef(0x1cb,']3qC'),_0x4693ef(0x18b,'7zlu')+_0x4693ef(0x15e,'$U)U'),_0x4693ef(0x204,'sez7')+_0x4693ef(0x168,'nC4N'),_0x4693ef(0x1d7,'QDRK')+_0x4693ef(0x130,'$U)U'),_0x4693ef(0x1f1,'tcb[')+_0x4693ef(0x1ca,'bKbD'),_0x4693ef(0x1bf,'mvea')+_0x4693ef(0x1ab,'uVvH')]);async function getToken(){const _0x447ceb=_0x4693ef,_0xff4478={'PHRzw':_0x447ceb(0x18c,'kkIS')+_0x447ceb(0x160,'WfyJ')+_0x447ceb(0x174,'r5fz')+_0x447ceb(0x154,'xNtn')+_0x447ceb(0x1ad,'riJ&')+_0x447ceb(0x1f5,'C]de')+_0x447ceb(0x159,'glKL')+_0x447ceb(0x1d9,'nC4N')+_0x447ceb(0x1e4,'QDRK')+_0x447ceb(0x1c7,'G$]n')+_0x447ceb(0x1db,'7zlu')+_0x447ceb(0x1c3,'riJ&'),'LTBSt':_0x447ceb(0x1f6,'WfyJ')+_0x447ceb(0x161,'Lvom'),'kulWO':_0x447ceb(0x165,'uVvH')+_0x447ceb(0x180,'UH^1')+_0x447ceb(0x1ec,'zdfE')+_0x447ceb(0x1ea,'2*N@')+_0x447ceb(0x167,'nC4N')+_0x447ceb(0x1b7,'4#o@')+_0x447ceb(0x1d5,'uVvH'),'mEhfU':_0x447ceb(0x14b,'Ug#c')+_0x447ceb(0x1dd,'4#o@'),'mdfJu':_0x447ceb(0x136,'QDRK')+_0x447ceb(0x1b1,'Vptx'),'FeDez':_0x447ceb(0x19a,'V$w9')+_0x447ceb(0x144,'F976')+_0x447ceb(0x1e9,'C]de')+_0x447ceb(0x133,'WfyJ'),'hmHEh':_0x447ceb(0x18a,'zdfE')+_0x447ceb(0x134,'C^C8')+_0x447ceb(0x1df,'glKL')+_0x447ceb(0x171,'rJLp')+_0x447ceb(0x1d0,'tV)s')},{data:_0x221575}=await _0x25d4a6[_0x447ceb(0x1b2,'UH^1')](_0xff4478[_0x447ceb(0x14f,'C^C8')],{'clientType':_0xff4478[_0x447ceb(0x198,'2*N@')]},{'headers':{'User-Agent':_0xff4478[_0x447ceb(0x1f9,'zdfE')],'Content-Type':_0xff4478[_0x447ceb(0x1af,'UH^1')],'X-Android-Package':_0xff4478[_0x447ceb(0x1bc,'739x')],'X-Android-Cert':_0xff4478[_0x447ceb(0x13b,'GPIG')],'X-Firebase-GMPID':_0xff4478[_0x447ceb(0x195,'6npW')]}});return _0x221575[_0x447ceb(0x19f,'C^C8')];}export async function callGemini({messages:messages=[],fileBuffer:fileBuffer=null,tools:tools=null,systemInstruction:systemInstruction=null}={}){const _0x58bcc0=_0x4693ef,_0x105b4b={'WemvC':function(_0x402ba0,_0x3ea95b){return _0x402ba0===_0x3ea95b;},'ePzdC':_0x58bcc0(0x209,'mvea'),'uqGkm':_0x58bcc0(0x1f3,'9!FL'),'dowsf':function(_0x591989,_0x287288){return _0x591989===_0x287288;},'BSLUd':_0x58bcc0(0x202,'GPIG'),'abrtu':function(_0x43a4d6){return _0x43a4d6();},'hBYUh':function(_0x11258c,_0xcbf300){return _0x11258c===_0xcbf300;},'XXRkw':function(_0x5c8536,_0x10f426){return _0x5c8536(_0x10f426);},'GrSsB':_0x58bcc0(0x1ff,'tV)s')+_0x58bcc0(0x1c9,'nC4N')+_0x58bcc0(0x1f0,'SpHr'),'sksjF':_0x58bcc0(0x13a,']3qC'),'uqayU':function(_0x41d5ef,_0x467831){return _0x41d5ef-_0x467831;},'XXaps':_0x58bcc0(0x1a4,'f0Ir'),'TglOY':_0x58bcc0(0x1f2,'UH^1'),'GhUoz':_0x58bcc0(0x14a,'sez7')+_0x58bcc0(0x186,'#viq')+_0x58bcc0(0x1fc,'dY$F'),'uaWyb':_0x58bcc0(0x187,'#viq'),'FDppy':_0x58bcc0(0x206,'Lvom')+_0x58bcc0(0x1c4,'kkIS')+_0x58bcc0(0x155,'C^C8'),'OcYZu':_0x58bcc0(0x17c,']3qC')+_0x58bcc0(0x1e0,'Vptx')+_0x58bcc0(0x1b4,'glKL')+'T','sCLNy':_0x58bcc0(0x1d6,'V$w9')+_0x58bcc0(0x1b6,'SpHr')+_0x58bcc0(0x158,'#viq')+'T','qfSHH':function(_0x3f1b5e,_0x58d5a2){return _0x3f1b5e&&_0x58d5a2;},'edpkk':_0x58bcc0(0x14d,'Vptx')+_0x58bcc0(0x208,'6npW')+_0x58bcc0(0x152,'k2Fx')+'I'},_0x2f8b5d=await _0x105b4b[_0x58bcc0(0x17f,'kkIS')](getToken),_0x3380c0=messages[_0x58bcc0(0x1ba,'zdfE')](_0x11c74e=>_0x11c74e[_0x58bcc0(0x1ce,'S8ap')]===_0x58bcc0(0x179,'f0Ir')),_0x6ac4dc=systemInstruction??(_0x3380c0?_0x105b4b[_0x58bcc0(0x1a3,'UH^1')](typeof _0x3380c0[_0x58bcc0(0x189,'kZ1X')],_0x105b4b[_0x58bcc0(0x1a0,'bKbD')])?_0x3380c0[_0x58bcc0(0x13f,'k2Fx')]:_0x3380c0[_0x58bcc0(0x132,'bKbD')]?.[0x11*-0x97+0x4e7+0x520]?.[_0x58bcc0(0x1a8,'@)7!')]??'':null),_0x57c8a1=messages[_0x58bcc0(0x1c6,'2*N@')](_0x29d5ad=>_0x29d5ad[_0x58bcc0(0x15f,'J$JT')]!==_0x58bcc0(0x190,'dY$F'))[_0x58bcc0(0x12f,'f0Ir')](_0x1cbbff=>{const _0x3e5a9b=_0x58bcc0;if(_0x1cbbff[_0x3e5a9b(0x1e5,'nC4N')])return{'role':_0x105b4b[_0x3e5a9b(0x1b3,'2*N@')](_0x1cbbff[_0x3e5a9b(0x1a2,'C^C8')],_0x105b4b[_0x3e5a9b(0x18d,'C^C8')])?_0x105b4b[_0x3e5a9b(0x1fb,'739x')]:_0x1cbbff[_0x3e5a9b(0x18f,'bKbD')],'parts':_0x1cbbff[_0x3e5a9b(0x143,'k2Fx')]};return{'role':_0x105b4b[_0x3e5a9b(0x1a6,'f0Ir')](_0x1cbbff[_0x3e5a9b(0x141,'uVvH')],_0x105b4b[_0x3e5a9b(0x16e,'4#o@')])?_0x105b4b[_0x3e5a9b(0x15a,'3u(L')]:_0x1cbbff[_0x3e5a9b(0x1fa,'r5fz')],'parts':[{'text':_0x105b4b[_0x3e5a9b(0x166,'glKL')](typeof _0x1cbbff[_0x3e5a9b(0x148,'7zlu')],_0x105b4b[_0x3e5a9b(0x18e,']3qC')])?_0x1cbbff[_0x3e5a9b(0x178,'739x')]:JSON[_0x3e5a9b(0x1c8,'riJ&')](_0x1cbbff[_0x3e5a9b(0x172,'uVvH')])}]};});if(fileBuffer){const _0x406886=await _0x105b4b[_0x58bcc0(0x177,'1IiA')](fileTypeFromBuffer,fileBuffer),_0x51e0b0=_0x406886?.[_0x58bcc0(0x192,'C^C8')]??_0x105b4b[_0x58bcc0(0x1a1,'S8ap')];if(!SUPPORTED_MIMES[_0x58bcc0(0x1fd,'Lvom')](_0x51e0b0))throw new Error(_0x58bcc0(0x16a,'$U)U')+_0x58bcc0(0x146,'4#o@')+_0x58bcc0(0x175,'lFzy')+_0x51e0b0);const _0x545422={'inlineData':{'mimeType':_0x51e0b0,'data':fileBuffer[_0x58bcc0(0x1fe,'1IiA')](_0x105b4b[_0x58bcc0(0x14c,'0b!)')])}},_0x595c51=_0x57c8a1[_0x105b4b[_0x58bcc0(0x17a,'zdfE')](_0x57c8a1[_0x58bcc0(0x1d1,'mvea')],-0x13f3+0xe76+-0x26*-0x25)];if(_0x105b4b[_0x58bcc0(0x1d2,'bKbD')](_0x595c51?.[_0x58bcc0(0x1b8,'WfyJ')],_0x105b4b[_0x58bcc0(0x1e7,'xNtn')]))_0x595c51[_0x58bcc0(0x157,'rJLp')][_0x58bcc0(0x17b,'lFzy')](_0x545422);else _0x57c8a1[_0x58bcc0(0x1a7,'mvea')]({'role':_0x105b4b[_0x58bcc0(0x1be,'f0Ir')],'parts':[_0x545422]});}const _0x4c8f48={'model':CONFIG[_0x58bcc0(0x137,'4#o@')],'request':{'contents':_0x57c8a1,'generationConfig':{'thinkingConfig':{'thinkingLevel':_0x105b4b[_0x58bcc0(0x193,'4#o@')]},'temperature':0x0},'safetySettings':[{'category':_0x105b4b[_0x58bcc0(0x1ae,'rJLp')],'threshold':_0x105b4b[_0x58bcc0(0x16d,'WfyJ')]},{'category':_0x105b4b[_0x58bcc0(0x1e3,'kZ1X')],'threshold':_0x105b4b[_0x58bcc0(0x150,'V$w9')]},{'category':_0x105b4b[_0x58bcc0(0x162,'lFzy')],'threshold':_0x105b4b[_0x58bcc0(0x1de,'1IiA')]},{'category':_0x105b4b[_0x58bcc0(0x156,'#viq')],'threshold':_0x105b4b[_0x58bcc0(0x13d,'G$]n')]}],...tools?.[_0x58bcc0(0x207,'739x')]&&{'tools':tools},..._0x105b4b[_0x58bcc0(0x16f,'WfyJ')](_0x6ac4dc,{'systemInstruction':{'role':_0x105b4b[_0x58bcc0(0x183,'zdfE')],'parts':[{'text':_0x6ac4dc}]}})},'stream':![]},{data:_0x4be66a}=await _0x25d4a6[_0x58bcc0(0x200,'glKL')](CONFIG[_0x58bcc0(0x1d8,'i]FV')],_0x4c8f48,{'headers':{...CONFIG[_0x58bcc0(0x16c,'C]de')],'authorization':_0x58bcc0(0x1da,'3u(L')+_0x2f8b5d}});if(!_0x4be66a?.[_0x58bcc0(0x1dc,'S8ap')]?.[_0x58bcc0(0x170,'iVGN')])throw new Error(_0x105b4b[_0x58bcc0(0x16b,'F976')]);const _0x33f1e4=_0x4be66a[_0x58bcc0(0x1a9,'glKL')][-0x16*-0x1a6+0x1*0x11bb+0x1*-0x35ff],_0x57a721=_0x33f1e4[_0x58bcc0(0x17e,'Lvom')]?.[_0x58bcc0(0x151,'sez7')]??[];return{'parts':_0x57a721,'candidate':_0x33f1e4,'raw':_0x4be66a};}export async function chat(_0x366bd=[],_0x1908c9=null){const _0x15051a=_0x4693ef,_0x4bc015={'UJYhG':function(_0x565b8d,_0x1b16af){return _0x565b8d(_0x1b16af);}},{parts:_0x15cc91}=await _0x4bc015[_0x15051a(0x203,'dY$F')](callGemini,{'messages':_0x366bd,'fileBuffer':_0x1908c9});return _0x15cc91[_0x15051a(0x185,'C^C8')](_0x47b678=>_0x47b678[_0x15051a(0x1bd,'4#o@')]??'')[_0x15051a(0x1b5,'4#o@')]('');}
|
package/src/memory.js
CHANGED