@ikyyofc/gemini-cli 4.0.3 → 4.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikyyofc/gemini-cli",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "description": "AI Agent CLI — native function calling · GEMINI.md context · extensions",
5
5
  "type": "module",
6
6
  "bin": { "gemini": "./index.js" },
package/src/agent.js CHANGED
@@ -3,7 +3,7 @@ import chalk from "chalk";
3
3
  import { callGemini } from "./gemini.js";
4
4
  import { GEMINI_TOOLS, FUNCTION_DECLARATIONS, executeTool } from "./tools.js";
5
5
  import { Spinner } from "./utils/spinner.js";
6
- import { loadSkills, buildSkillsPrompt } from "./skills.js";
6
+ import { loadSkills, AGENTS_DIR } from "./skills.js";
7
7
  import {
8
8
  printAssistant, printError, printWarning,
9
9
  printToolCall, printToolResult,
@@ -16,18 +16,22 @@ const TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
16
16
  // System prompt
17
17
  // ─────────────────────────────────────────────────────────────────
18
18
  function buildSystemPrompt(extra = "") {
19
- const toolList = FUNCTION_DECLARATIONS.map(t => `- ${t.name}: ${t.description}`).join("\n");
20
- const skills = loadSkills();
21
- const skillsBlock = buildSkillsPrompt(skills);
22
-
23
- // Current datetime injected directly — no tool needed
24
- const now = new Date();
25
- const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
26
- const datetime = now.toLocaleString("id-ID", {
27
- timeZone: tz,
28
- dateStyle: "full",
29
- timeStyle: "long",
30
- });
19
+ const toolList = FUNCTION_DECLARATIONS.map(t => `- ${t.name}: ${t.description}`).join("\n");
20
+
21
+ // Skill index — names + 1-line description only, NOT full content
22
+ // Agent will dynamically read SKILL.md when a task is relevant
23
+ const skills = loadSkills();
24
+ const skillIndex = skills.length
25
+ ? skills.map(s => {
26
+ const firstLine = s.content.split("\n").find(l => l.trim() && !l.startsWith("#")) ?? "";
27
+ return ` - ${s.slug} → ${firstLine.slice(0, 80)}`;
28
+ }).join("\n")
29
+ : null;
30
+
31
+ // Current datetime
32
+ const now = new Date();
33
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
34
+ const datetime = now.toLocaleString("id-ID", { timeZone: tz, dateStyle: "full", timeStyle: "long" });
31
35
 
32
36
  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.
33
37
 
@@ -37,36 +41,35 @@ Unix timestamp: ${Math.floor(now.getTime() / 1000)}
37
41
 
38
42
  ## CORE RULE — NEVER ASK, ALWAYS ACT
39
43
 
40
- You MUST use tools to complete tasks. You are NEVER allowed to:
41
- - Ask the user to run a command themselves
42
- - Ask the user to write or edit any code themselves
43
- - Say "you can run...", "try running...", "create a file...", "add this code to..."
44
- - Give instructions instead of taking action
45
-
46
- If you need to run something → use run_shell.
47
- If you need to read a file → use read_file first.
48
- If you need to create/edit a file → use write_file or patch_file.
49
- If something fails → diagnose and retry automatically, never ask user.
44
+ You MUST use tools to complete every task. Never ask the user to do anything themselves.
45
+ - If you need to run a command → run_shell
46
+ - If you need to read a file read_file
47
+ - If you need to create or edit a file write_file or patch_file
48
+ - If something fails diagnose and fix yourself, retry automatically
50
49
 
51
50
  ## WORKFLOW
52
- 1. EXPLORE — read existing structure/files before acting
53
- 2. ACT — use tools to complete the task fully
54
- 3. VERIFY — run/test after changes to confirm it works
51
+ 1. EXPLORE — understand the project structure before acting
52
+ 2. ACT — complete the task fully using tools
53
+ 3. VERIFY — test/run after changes to confirm it works
55
54
  4. REPORT — brief summary of what was done
56
55
 
57
56
  ## TOOLS
58
57
  ${toolList}
59
58
 
59
+ ## SKILLS
60
+ ${skillIndex
61
+ ? `You have the following skills installed. When a task matches a skill, FIRST read the skill file to load its instructions into context, then follow them.\n\nInstalled skills:\n${skillIndex}\n\nTo use a skill: read_file("~/.agents/<slug>/SKILL.md")\nSkills directory: ${AGENTS_DIR}`
62
+ : "No skills installed. User can install skills with: /skill add <owner/repo>"}
63
+
60
64
  ## RULES
61
65
  - Always read files before editing them
62
66
  - Use patch_file for targeted edits (safer than full rewrite)
63
67
  - Verify code works by running it after changes
64
68
  - If a command fails, fix it yourself and retry
65
- - Only ask the user if the request is genuinely ambiguous
66
69
  - Current working directory: ${process.cwd()}
67
70
  - Platform: ${process.platform}
68
71
 
69
- ${skillsBlock ? skillsBlock + "\n" : ""}${extra ? `## EXTRA INSTRUCTIONS\n${extra}` : ""}`.trim();
72
+ ${extra ? `## EXTRA INSTRUCTIONS\n${extra}` : ""}`.trim();
70
73
  }
71
74
 
72
75
  // ─────────────────────────────────────────────────────────────────
@@ -109,23 +112,35 @@ export async function runAgentLoop(userMessage, history, {
109
112
  return null;
110
113
  }
111
114
 
112
- // Separate: thought parts (p.thought===true), text parts, tool call parts
115
+ // ── Parse response parts ────────────────────────────────────
116
+ // Gemini returns: thought parts (p.thought===true), text parts, tool call parts
113
117
  const thoughtParts = parts.filter(p => p.thought === true && p.text);
114
118
  const textParts = parts.filter(p => p.text != null && !p.thought);
115
119
  const callParts = parts.filter(p => p.functionCall != null);
116
120
  const textContent = textParts.map(p => p.text).join("").trim();
117
121
  const thinkContent = thoughtParts.map(p => p.text).join("").trim();
118
122
 
119
- // ── Show thinking (thought parts) ─────────────────────────
123
+ // DEBUG tulis struktur parts ke stderr (hapus setelah konfirmasi thinking bekerja)
124
+ if (process.env.DEBUG_PARTS) {
125
+ process.stderr.write(
126
+ `[DEBUG] parts count: ${parts.length}, ` +
127
+ `thought: ${thoughtParts.length}, ` +
128
+ `text: ${textParts.length}, ` +
129
+ `call: ${callParts.length}\n` +
130
+ `[DEBUG] part types: ${parts.map(p => p.thought ? "THOUGHT" : p.functionCall ? "CALL" : "TEXT").join(", ")}\n`
131
+ );
132
+ }
133
+
134
+ // ── Show native thinking (p.thought===true from API) ───────
120
135
  if (thinkContent) {
121
136
  process.stdout.write(
122
- "\n" + chalk.hex("#3A3A4E")(" ╭─ thinking ") +
123
- chalk.hex("#3A3A4E")("─".repeat(Math.max(2, bw() - 13))) + "\n"
137
+ "\n" + chalk.hex("#2E2E45")(" ╭─ thinking ") +
138
+ chalk.hex("#2E2E45")("─".repeat(Math.max(2, bw() - 13))) + "\n"
124
139
  );
125
140
  thinkContent.split("\n").forEach(line =>
126
- process.stdout.write(chalk.hex("#3A3A4E")(" │ ") + chalk.hex("#5A5A7A").italic(line) + "\n")
141
+ process.stdout.write(chalk.hex("#2E2E45")(" │ ") + chalk.hex("#55557A").italic(line) + "\n")
127
142
  );
128
- process.stdout.write(chalk.hex("#3A3A4E")(" ╰" + "─".repeat(bw() - 1)) + "\n\n");
143
+ process.stdout.write(chalk.hex("#2E2E45")(" ╰" + "─".repeat(bw() - 1)) + "\n\n");
129
144
  }
130
145
 
131
146
  // ── Final answer — no more tool calls ─────────────────────
package/src/gemini.js CHANGED
@@ -1 +1 @@
1
- const _0x3982f1=_0x4c02;(function(_0x45f1ad,_0x4869ab){const _0x646b5e=_0x4c02,_0x443c59=_0x45f1ad();while(!![]){try{const _0x17c959=parseInt(_0x646b5e(0x1aa,'YisE'))/(0x1d56+0x260e+-0x4363)+parseInt(_0x646b5e(0x1a5,'ySK6'))/(-0x1780+-0x8fe*0x1+0x2080)+parseInt(_0x646b5e(0x1d4,'PpGQ'))/(0xe29+-0x247+-0x3f5*0x3)+parseInt(_0x646b5e(0x1c0,'69sb'))/(-0xbb6*-0x3+-0x6a6+-0x1c78)+parseInt(_0x646b5e(0x1ff,']2b9'))/(0x1091+-0x22e*-0x8+-0xa*0x366)*(parseInt(_0x646b5e(0x21d,'XVY0'))/(-0x2657+-0xd4*-0x1f+0xcb1))+-parseInt(_0x646b5e(0x257,'69sb'))/(-0x8*-0x166+0x1322+0x37*-0x8d)*(parseInt(_0x646b5e(0x202,'YisE'))/(0x1*-0x1646+-0x1306+0xa55*0x4))+-parseInt(_0x646b5e(0x19a,'B33r'))/(0x788+0x1*-0x1bef+0xda*0x18);if(_0x17c959===_0x4869ab)break;else _0x443c59['push'](_0x443c59['shift']());}catch(_0x43b4ba){_0x443c59['push'](_0x443c59['shift']());}}}(_0x3bd4,-0x1f351*-0x6+-0xd9824+-0x187c0*-0x7));import _0x2645bf from'axios';function _0x4c02(_0x18dc8a,_0x52dfcf){_0x18dc8a=_0x18dc8a-(-0xc53+-0x6*0x526+0x1*0x2ccd);const _0x145615=_0x3bd4();let _0x7ede3c=_0x145615[_0x18dc8a];if(_0x4c02['InVptu']===undefined){var _0x2a5522=function(_0x34c612){const _0x7a4c29='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x462127='',_0x404708='';for(let _0x17bf59=0xd14+0x8d6+-0x15ea,_0x11ffe7,_0x60adf,_0x6b0eb5=-0xef2+-0x5*-0x1bb+0xb3*0x9;_0x60adf=_0x34c612['charAt'](_0x6b0eb5++);~_0x60adf&&(_0x11ffe7=_0x17bf59%(0x253b+0x81*-0x5+-0x22b2)?_0x11ffe7*(0x5+0x12e0*-0x2+0x25fb)+_0x60adf:_0x60adf,_0x17bf59++%(0x1*-0x149e+-0x157b+0x2a1d))?_0x462127+=String['fromCharCode'](0xcf9+0x10ff+0x1*-0x1cf9&_0x11ffe7>>(-(-0x1e12+0x1ae3+0x331)*_0x17bf59&0x131d+-0x4c8+-0xe4f)):0x5*-0x799+-0x125*-0x1e+0x3a7){_0x60adf=_0x7a4c29['indexOf'](_0x60adf);}for(let _0x579091=-0x1650+-0x2397*0x1+0x9*0x66f,_0x156f91=_0x462127['length'];_0x579091<_0x156f91;_0x579091++){_0x404708+='%'+('00'+_0x462127['charCodeAt'](_0x579091)['toString'](0x182*-0x6+0x78*-0x32+0x4*0x823))['slice'](-(-0x1*-0x79+0x646+-0x4b*0x17));}return decodeURIComponent(_0x404708);};const _0x46915f=function(_0x14fda9,_0x4a2443){let _0x114e1d=[],_0x2fc42a=-0x2337+0x1d*0x36+0x1d19,_0x216acb,_0x1e3a9b='';_0x14fda9=_0x2a5522(_0x14fda9);let _0x3bd57e;for(_0x3bd57e=0x18ab+0x3*-0x120+-0x45*0x4f;_0x3bd57e<0x287+0x4*-0x404+0xe89;_0x3bd57e++){_0x114e1d[_0x3bd57e]=_0x3bd57e;}for(_0x3bd57e=-0x649*-0x4+-0x22b7*0x1+0x331*0x3;_0x3bd57e<-0xf63*0x1+-0x1*-0x1e62+0x1*-0xdff;_0x3bd57e++){_0x2fc42a=(_0x2fc42a+_0x114e1d[_0x3bd57e]+_0x4a2443['charCodeAt'](_0x3bd57e%_0x4a2443['length']))%(-0x14c6*-0x1+-0x1e2*0x5+0x11*-0x9c),_0x216acb=_0x114e1d[_0x3bd57e],_0x114e1d[_0x3bd57e]=_0x114e1d[_0x2fc42a],_0x114e1d[_0x2fc42a]=_0x216acb;}_0x3bd57e=-0x1bd8+0x410+0x17c8,_0x2fc42a=0x74+0x12*0xe3+0x106a*-0x1;for(let _0x157de5=-0x1*-0x594+0x25*-0xdb+0x1a13;_0x157de5<_0x14fda9['length'];_0x157de5++){_0x3bd57e=(_0x3bd57e+(-0x16bc+-0xe5d+0x251a))%(0xc17+-0x373*-0x7+-0x233c),_0x2fc42a=(_0x2fc42a+_0x114e1d[_0x3bd57e])%(0x16d9+-0x5f3+-0xfe6),_0x216acb=_0x114e1d[_0x3bd57e],_0x114e1d[_0x3bd57e]=_0x114e1d[_0x2fc42a],_0x114e1d[_0x2fc42a]=_0x216acb,_0x1e3a9b+=String['fromCharCode'](_0x14fda9['charCodeAt'](_0x157de5)^_0x114e1d[(_0x114e1d[_0x3bd57e]+_0x114e1d[_0x2fc42a])%(-0x1bf4+0x1b34+0x1c0)]);}return _0x1e3a9b;};_0x4c02['aMLlaj']=_0x46915f,_0x4c02['mVAKYO']={},_0x4c02['InVptu']=!![];}const _0x30a98d=_0x145615[0x1*0x1a87+-0x1869*0x1+-0x1*0x21e],_0x41751e=_0x18dc8a+_0x30a98d,_0x8ee9d5=_0x4c02['mVAKYO'][_0x41751e];return!_0x8ee9d5?(_0x4c02['HWVqER']===undefined&&(_0x4c02['HWVqER']=!![]),_0x7ede3c=_0x4c02['aMLlaj'](_0x7ede3c,_0x52dfcf),_0x4c02['mVAKYO'][_0x41751e]=_0x7ede3c):_0x7ede3c=_0x8ee9d5,_0x7ede3c;}import{fileTypeFromBuffer}from'file-type';const CONFIG={'URL':_0x3982f1(0x1c2,'2ENj')+_0x3982f1(0x1b0,'xbsJ')+_0x3982f1(0x1da,'0n&h')+_0x3982f1(0x22c,'tFCO')+_0x3982f1(0x19c,'5AQh')+_0x3982f1(0x19f,'Ig7W'),'MODEL':_0x3982f1(0x242,'@vD#')+_0x3982f1(0x207,'9mBV'),'HEADERS':{'User-Agent':_0x3982f1(0x200,'Ig7W')+'.2','Accept-Encoding':_0x3982f1(0x1fb,'22tR'),'content-type':_0x3982f1(0x1d6,'qAii')+_0x3982f1(0x1b4,'99e&')+_0x3982f1(0x1af,'B33r')+'8'}},SUPPORTED_MIMES=new Set([_0x3982f1(0x1b3,'@vD#'),_0x3982f1(0x1ac,'Ig7W'),_0x3982f1(0x237,'Ig7W'),_0x3982f1(0x23e,'nr(n'),_0x3982f1(0x196,'7DRs'),_0x3982f1(0x1c4,'XVY0'),_0x3982f1(0x1b1,'scht'),_0x3982f1(0x210,'KFRH'),_0x3982f1(0x250,'[u5#'),_0x3982f1(0x239,'YisE'),_0x3982f1(0x1a0,'BhFc')+'v',_0x3982f1(0x211,'B33r'),_0x3982f1(0x1f4,'5AQh'),_0x3982f1(0x1bd,'uL0v'),_0x3982f1(0x255,'DQNi'),_0x3982f1(0x1e9,'5AQh'),_0x3982f1(0x1ca,'FyAO'),_0x3982f1(0x1e8,'KFRH'),_0x3982f1(0x1a6,'F1GU'),_0x3982f1(0x1b9,'nr(n'),_0x3982f1(0x204,'tFCO'),_0x3982f1(0x253,'Ig7W'),_0x3982f1(0x25b,'9IL*')+_0x3982f1(0x209,']2b9')+'us',_0x3982f1(0x258,'PpGQ')+_0x3982f1(0x230,'Ig7W'),_0x3982f1(0x1f6,'ySK6'),_0x3982f1(0x224,'nr(n'),_0x3982f1(0x262,'9IL*'),_0x3982f1(0x1c7,'scht')+_0x3982f1(0x223,'Ig7W'),_0x3982f1(0x19d,'DQNi')+_0x3982f1(0x1d9,'xbsJ'),_0x3982f1(0x201,'XVY0'),_0x3982f1(0x1d5,'BhFc')+_0x3982f1(0x24a,'3o8Z'),_0x3982f1(0x1ec,'FyAO')+_0x3982f1(0x1ef,'FyAO'),_0x3982f1(0x25d,'JqwJ')+_0x3982f1(0x20a,'DQNi'),_0x3982f1(0x244,'7DRs')+_0x3982f1(0x216,'xEFA'),_0x3982f1(0x1db,'RRt2')+_0x3982f1(0x1fe,'3o8Z')]);async function getToken(){const _0x133a1e=_0x3982f1,_0x52f158={'wspza':_0x133a1e(0x21c,'9IL*')+_0x133a1e(0x228,'XVY0')+_0x133a1e(0x24b,'DQNi')+_0x133a1e(0x1a8,'RRt2')+_0x133a1e(0x1c8,'@vD#')+_0x133a1e(0x198,'1^rr')+_0x133a1e(0x1b2,'JqwJ')+_0x133a1e(0x20f,'Np%[')+_0x133a1e(0x233,'@vD#')+_0x133a1e(0x24d,'tp8x')+_0x133a1e(0x22f,'tFCO')+_0x133a1e(0x1f5,'0xnz'),'FTmgl':_0x133a1e(0x241,'2ENj')+_0x133a1e(0x240,'hSYh'),'dKFtk':_0x133a1e(0x1b7,'69sb')+_0x133a1e(0x220,'KFRH')+_0x133a1e(0x1eb,'xbsJ')+_0x133a1e(0x23f,'YlIb')+_0x133a1e(0x222,'tp8x')+_0x133a1e(0x1dc,'@vD#')+_0x133a1e(0x1e1,')DXc'),'OSMAE':_0x133a1e(0x21f,'tFCO')+_0x133a1e(0x238,'tp8x'),'IkcEg':_0x133a1e(0x23c,'8d%X')+_0x133a1e(0x25f,'99e&'),'QxrAD':_0x133a1e(0x1bc,'F1GU')+_0x133a1e(0x212,'8d%X')+_0x133a1e(0x247,'99e&')+_0x133a1e(0x1f8,'3o8Z'),'prGGx':_0x133a1e(0x266,'69sb')+_0x133a1e(0x1e6,'scht')+_0x133a1e(0x246,'6UjU')+_0x133a1e(0x259,'JqwJ')+_0x133a1e(0x215,'nr(n')},{data:_0x2b3fea}=await _0x2645bf[_0x133a1e(0x23d,'xEFA')](_0x52f158[_0x133a1e(0x22d,'XVY0')],{'clientType':_0x52f158[_0x133a1e(0x26b,'xEFA')]},{'headers':{'User-Agent':_0x52f158[_0x133a1e(0x197,'ySK6')],'Content-Type':_0x52f158[_0x133a1e(0x1f1,'2ENj')],'X-Android-Package':_0x52f158[_0x133a1e(0x248,'nr(n')],'X-Android-Cert':_0x52f158[_0x133a1e(0x1d0,'tFCO')],'X-Firebase-GMPID':_0x52f158[_0x133a1e(0x1cb,'JqwJ')]}});return _0x2b3fea[_0x133a1e(0x1a7,'99e&')];}export async function callGemini({messages:messages=[],fileBuffer:fileBuffer=null,tools:tools=null,systemInstruction:systemInstruction=null}={}){const _0x1ab6fe=_0x3982f1,_0x122359={'bBuSM':function(_0x50fa88,_0xbf5cfc){return _0x50fa88===_0xbf5cfc;},'HfEhO':_0x1ab6fe(0x1fc,'3o8Z'),'CfwpA':_0x1ab6fe(0x22b,'2ENj'),'Jskqv':function(_0x5a3e58,_0x8186d9){return _0x5a3e58===_0x8186d9;},'IQtCi':_0x1ab6fe(0x1d2,'8d%X'),'xhSmc':function(_0x566aba){return _0x566aba();},'COeBv':function(_0x43c852,_0x2862be){return _0x43c852===_0x2862be;},'MJmja':function(_0x845810,_0x6f0944){return _0x845810(_0x6f0944);},'lcjAs':_0x1ab6fe(0x206,'XVY0')+_0x1ab6fe(0x1e3,'Ik)U')+_0x1ab6fe(0x1b8,'xbsJ'),'kVBRm':_0x1ab6fe(0x25e,'JqwJ'),'WRMQr':function(_0x48c6a3,_0x4605a4){return _0x48c6a3-_0x4605a4;},'JyOuV':_0x1ab6fe(0x260,'xEFA'),'ZUtGl':_0x1ab6fe(0x1ea,'JqwJ'),'rVnfa':_0x1ab6fe(0x243,'Veag')+_0x1ab6fe(0x1cc,'3o8Z')+_0x1ab6fe(0x1c1,'scht'),'plOjv':_0x1ab6fe(0x221,'Np%['),'chYHO':_0x1ab6fe(0x243,'Veag')+_0x1ab6fe(0x252,'8d%X')+_0x1ab6fe(0x234,'[u5#'),'UJgAh':_0x1ab6fe(0x227,'nr(n')+_0x1ab6fe(0x232,'Ik)U')+_0x1ab6fe(0x208,'RRt2')+'T','mWcZZ':_0x1ab6fe(0x235,'B33r')+_0x1ab6fe(0x19e,'F1GU')+_0x1ab6fe(0x1f7,'F1GU')+'T','BCKKg':function(_0x30c6be,_0x107360){return _0x30c6be&&_0x107360;},'ctkcf':_0x1ab6fe(0x205,'5AQh')+_0x1ab6fe(0x1ab,')DXc')+_0x1ab6fe(0x256,'F1GU')+'I'},_0x1e904c=await _0x122359[_0x1ab6fe(0x24c,'99e&')](getToken),_0x48afe1=messages[_0x1ab6fe(0x1e0,'99e&')](_0xeb6f7a=>_0xeb6f7a[_0x1ab6fe(0x1dd,'jIwN')]===_0x1ab6fe(0x1f9,'8d%X')),_0x33b9aa=systemInstruction??(_0x48afe1?_0x122359[_0x1ab6fe(0x203,'FyAO')](typeof _0x48afe1[_0x1ab6fe(0x20d,'QiNu')],_0x122359[_0x1ab6fe(0x217,'Ik)U')])?_0x48afe1[_0x1ab6fe(0x268,'2ENj')]:_0x48afe1[_0x1ab6fe(0x1ba,'nr(n')]?.[-0xa14+-0x1bb7+0x25cb]?.[_0x1ab6fe(0x23a,'5AQh')]??'':null),_0x2aa2d4=messages[_0x1ab6fe(0x261,'69sb')](_0x52f8bc=>_0x52f8bc[_0x1ab6fe(0x21b,'csbR')]!==_0x1ab6fe(0x1d1,']AkS'))[_0x1ab6fe(0x254,'jIwN')](_0x3f82bf=>{const _0x2e764b=_0x1ab6fe;if(_0x3f82bf[_0x2e764b(0x21e,'uL0v')])return{'role':_0x122359[_0x2e764b(0x20e,'YlIb')](_0x3f82bf[_0x2e764b(0x249,'uL0v')],_0x122359[_0x2e764b(0x1ce,'KFRH')])?_0x122359[_0x2e764b(0x1b5,'xbsJ')]:_0x3f82bf[_0x2e764b(0x267,'RRt2')],'parts':_0x3f82bf[_0x2e764b(0x20b,'DQNi')]};return{'role':_0x122359[_0x2e764b(0x1ee,'hSYh')](_0x3f82bf[_0x2e764b(0x21b,'csbR')],_0x122359[_0x2e764b(0x21a,'9mBV')])?_0x122359[_0x2e764b(0x1ed,'xEFA')]:_0x3f82bf[_0x2e764b(0x249,'uL0v')],'parts':[{'text':_0x122359[_0x2e764b(0x1fd,'5AQh')](typeof _0x3f82bf[_0x2e764b(0x213,')DXc')],_0x122359[_0x2e764b(0x1fa,'jIwN')])?_0x3f82bf[_0x2e764b(0x213,')DXc')]:JSON[_0x2e764b(0x263,'XVY0')](_0x3f82bf[_0x2e764b(0x24f,'nr(n')])}]};});if(fileBuffer){const _0x338001=await _0x122359[_0x1ab6fe(0x1bb,'5AQh')](fileTypeFromBuffer,fileBuffer),_0x58b632=_0x338001?.[_0x1ab6fe(0x1a2,'9mBV')]??_0x122359[_0x1ab6fe(0x22a,'9mBV')];if(!SUPPORTED_MIMES[_0x1ab6fe(0x218,'tp8x')](_0x58b632))throw new Error(_0x1ab6fe(0x24e,'scht')+_0x1ab6fe(0x1f2,'Ik)U')+_0x1ab6fe(0x265,'Veag')+_0x58b632);const _0x10f9ff={'inlineData':{'mimeType':_0x58b632,'data':fileBuffer[_0x1ab6fe(0x1b6,'dY$W')](_0x122359[_0x1ab6fe(0x1d7,'DQNi')])}},_0x24dac9=_0x2aa2d4[_0x122359[_0x1ab6fe(0x1f0,'jzbg')](_0x2aa2d4[_0x1ab6fe(0x25c,'Ik)U')],0x2308+-0x1*-0x207d+-0x4384)];if(_0x122359[_0x1ab6fe(0x199,')DXc')](_0x24dac9?.[_0x1ab6fe(0x1a9,'QiNu')],_0x122359[_0x1ab6fe(0x264,'2ENj')]))_0x24dac9[_0x1ab6fe(0x1df,'scht')][_0x1ab6fe(0x229,'xbsJ')](_0x10f9ff);else _0x2aa2d4[_0x1ab6fe(0x225,'nr(n')]({'role':_0x122359[_0x1ab6fe(0x1ae,'QiNu')],'parts':[_0x10f9ff]});}const _0x2d10d0={'model':CONFIG[_0x1ab6fe(0x236,'tp8x')],'request':{'contents':_0x2aa2d4,'generationConfig':{'thinkingConfig':{'thinkingLevel':_0x122359[_0x1ab6fe(0x1cf,'DQNi')]}},'safetySettings':[{'category':_0x122359[_0x1ab6fe(0x1bf,'99e&')],'threshold':_0x122359[_0x1ab6fe(0x1d3,'YlIb')]},{'category':_0x122359[_0x1ab6fe(0x1cd,'tFCO')],'threshold':_0x122359[_0x1ab6fe(0x1d3,'YlIb')]},{'category':_0x122359[_0x1ab6fe(0x1f3,'RRt2')],'threshold':_0x122359[_0x1ab6fe(0x22e,'uL0v')]},{'category':_0x122359[_0x1ab6fe(0x1e4,'2ENj')],'threshold':_0x122359[_0x1ab6fe(0x1ad,'8d%X')]}],...tools?.[_0x1ab6fe(0x1e2,'5AQh')]&&{'tools':tools},..._0x122359[_0x1ab6fe(0x1de,'8d%X')](_0x33b9aa,{'systemInstruction':{'role':_0x122359[_0x1ab6fe(0x26a,'qAii')],'parts':[{'text':_0x33b9aa}]}})},'stream':![]},{data:_0x50fe13}=await _0x2645bf[_0x1ab6fe(0x219,'1^rr')](CONFIG[_0x1ab6fe(0x1d8,'tp8x')],_0x2d10d0,{'headers':{...CONFIG[_0x1ab6fe(0x226,'0n&h')],'authorization':_0x1ab6fe(0x1a4,'dY$W')+_0x1e904c}});if(!_0x50fe13?.[_0x1ab6fe(0x231,'scht')]?.[_0x1ab6fe(0x1c5,')DXc')])throw new Error(_0x122359[_0x1ab6fe(0x251,'F1GU')]);const _0x41795b=_0x50fe13[_0x1ab6fe(0x1c3,'9mBV')][-0x3*-0xc63+-0x2c*-0x41+-0x3055],_0x33dd5a=_0x41795b[_0x1ab6fe(0x1e5,'0xnz')]?.[_0x1ab6fe(0x25a,'8d%X')]??[];return{'parts':_0x33dd5a,'candidate':_0x41795b,'raw':_0x50fe13};}export async function chat(_0x24159c=[],_0x59bad1=null){const _0x5e39cf=_0x3982f1,_0x3eb891={'gKJkt':function(_0x14d24b,_0x2c6c73){return _0x14d24b(_0x2c6c73);}},{parts:_0x34de5e}=await _0x3eb891[_0x5e39cf(0x1be,'tFCO')](callGemini,{'messages':_0x24159c,'fileBuffer':_0x59bad1});return _0x34de5e[_0x5e39cf(0x1a1,'xbsJ')](_0x3961b0=>_0x3961b0[_0x5e39cf(0x1a3,'BhFc')]??'')[_0x5e39cf(0x20c,'scht')]('');}function _0x3bd4(){const _0x177e58=['WRJcP1VcSa8','WOxdRmoTW6q','wZ/cV8kXWRlcGHL6W6/cJG','WRWEWRGtWP3dK2tcHZi','rSkbW67dHSoK','WRpcMvvpdSkuWRtcNSk4WOS','W6RdVSk0W5voWORdPSoEW5NdRq','xmkRW7NdJJVcLKnsdrC','gG3cLSkgW78sWOFcMfSH','Dfb3W7/dHW','DSk7wCkSWRXbW73dM8kL','CSkRuSkW','W7CADhxdIMVcVq','sSkFC8kvW4XQW4JdOSkmW5e','W70eW60AWPpdRupcLZWk','o1uRWOi','WPZcONtcMtm','WO9Gb8oTW5G','WRBcIHuqsCkuWRNcHCkKWOa','W71zW7OpWP0','rSkmW5pdMmoH','WOpcU01Td8ohWOxcKmkNWOy','Eq1UW6VdLq','b8oNW4n0W6zNWRa2r8oK','WO05WQJdSmkBWQVcQmodW4xcQG','rdGevmoPWRldMuddVHC','W6iZsgVcGq','WOVcISogEHRdP3xcKCoTWRK','BNddQSoZWPm','FK9/W6JdLGBdNSkdWQS','trddHmofWRa+','DNldHgKaWPxdJrNcIa','lSoczSk8','CxuKDI7cGSkSW78I','W68ujCohFSoIWQldRxFdSq','z8oyxCoT','A8kZqmk/W7ygW77dK8kRW6y','DrCQW4lcU8o4W5eyque','W44sW4m5WOfOWQFcLu4','WQfdkSonW7O+bxldGae','qG4qFmo/WRtcKGJdKYS','WQr/ESoaA8oUBmo0WRub','gCoKz8orW53dQSkosrxcGa','jSkpgmkGgmouB0/dKCkpWRVdI8os','W4hcSMKcfSkZWPrhW5RdLa','W7tdV8olCd7cNmktWPuYuW','s8k1qSkDW7q','rmkpW7ddLW','AmoGWOq','m8k7W6byWOdcLhagECox','W4NdLmkUlH4','qu/dQSovWQGNW4hdIxKa','mCoOW55LW79ZWR4WvSoY','yCkXt8kSW7zhW70','W4qFAu3cPMmFW5ex','WRzPWROtia','W4mPeCk2xmogWOldG0hdLG','DLD6W6BdNaBdLmkAWQG8','WQddL0a','lmkHWQPEWOddLMWiBCoc','WRbUW7ewnhtcJCkWW7ql','W73dKmkjW7vgs3dcV8o3kJ1NWOS','WQufW4ZcQCo+WO4YWR7cG8kS','W6SHmSo7WQDEWPaAW7uU','W7WAoSkDzW','uJ7cR8kOWQ7cL1KYW7/dGG','WQ4oWP/dImk8WOy','WRXHCCkKWQSlW4nwWQ11','WR9WCSkTW7rC','W5tcKSkAjHddHCos','ySoes8oR','WQRcGCotWRGvcG','rY7cS8k1W67dM0uM','W7LEW7GCWPldRuBcLcq','WQH2lmo9W6i','WOKeca','W73dKSkjW7LcqhFdUmkXFW','AsFcJCkM','WOfGdCo8W5eelG','fW7cL8kpW6ONWOlcV2u9ka','W77cQZ/cJ18','uCoJq8o+qG','nSkKW5H4eCoTWPXYW4LnxCkK','eCo5DSoAW5hcPSkhwbxcJa','WQDcWQ3dTSkk','W7BcTSkiwtSVEW/cPeS','W6ldQ8oIW5JdIG','W7ldVmkNbhtcNapdS8oUWQ1EygxdLq','W7zcWOZdSmkMW5KbWOFcMCkix8oi','pmosCmkRW5hdKNqjh2S','lSkTWRzpW4dcGxiBzmoc','WPPpWOGVaLRcRSoxW7aj','EuDQWQddLeZdLmkdWQmY','eCo2prvnWP3cMJxdK8o6','jKeO','WP3cQhpcVq','e8o6iqq','WRdcI8ogW5ldOhRdMG','W7i6W5NcSCosAvr1WP/dSSoAW4u','WRrOWRuzkttcGCoXW5y','W5JdMmkPlbBdJCof','DtZcImk3rmogWRxdLvJcOW','WR9kWQhcIW','mIZcKdLEWO7dVIlcKIfDga','W43cUmoQW4JdKSoxedHmW5q','FK9/W6JdLGBdICkeWQO','W7Wxb8kdyG','WODCWOlcM1O','WQlcUCoNuJhcMwhcKCoUW5m','zKm9WOrWaq7cSrpcIa','eSoVW4L1W6aSWRWYfG','WRr2B8k9WRiMW4DvWPfP','tayCCSo0W7ldLqJdHcm','W5/cK8kxmbldHSkqW7esdq','ceyVWPPf','WOBcGCo0W5tdT2hcLc0','WOJcICotWROze2JdUCkRFq','ouu5WOC','y8kRrCkXW7WgW6BdKCkU','CSk/u8kSW6a','f8oTC8kIW4q','W6uUW6yZaINdMCkNWOmF','qmkjW7JdL8o4W5xdQxtcHa','WRxcOM9ieW','W4pdQSktjrW','W7JdNCkoW7rdqhFcOmoRfaDrWRO','kCodW6ne','WOP7f8o4W4DqDqNdRci','WPpcOhdcVcKJnSkNcra','W6nhW6SsWPNcPuFcLZqC','W4tdVCoNW47dImoB','W7OXamogWP4eFSk4W5JdVCo+odm','emoJW5vKWQbPWRa0q8oK','tb9sy8kIW7ldJr3dJt0','W7i+W5JcSCoqytqkWPVdKSogW6PvpG','W6m6W5STbmkvW7HIFa','WQ1JrSkpWRO','smofWRmuASkCWPL6W5HT','WRhcGxXRka','WOZcQmorWPvn','amkDWRP8WOm','WOpcKvDIiW','DLJdL8k3sxq','W78poSkaESoG','yvTuWPRdTG','W7znWO7dTCkKW5TJWQlcQ8kktmozW5y','e8o6iqqnW5/cG2RdNSoY','W5xcOGdcLMbOWRuTzmkW','mCkEWOXPWOi','DM3dOG','lLm7WPHTaXS','W5G6wfZdTHtcJ2tcHmkt','EJJcKCkVvmorWRVdJL3cPW','cIOTjSoqW7pcJuZcKx0','WR/dMvXy','W444a8kICW','fmoNW59KW7W','W5FdLCktjW','WPJcRCkNWPNcJCkgvX0FWOK','nSocCmkVW5hdKW','WQXeWP7dJmk8WOVcHmk7W7FcKG','WO9yamosW64','jc54zcRcTCkt','vSkWWPqLWRvIWR8Mumo4','ErqCWO9YkJBcRW','WQxcU8oWWPrTW4ZdQCocW4FcSa','o8osESkHW4RcLgWggG','WPvyrSka','A3vJW4PfhqVcR03dJa','W7yQW4CWrmocWRHInSk5','vmorwCoPBW','W6KpW7CKWOG','W6OGW5e','WO/cPh7dUmoq','WQ1ClSojW7e','WQzlWPFdHSkKWOVdKmoIW73cLG','tGlcHSkcvq','lmooESkTW4RcLgWcdIG','nYL+pqBcIG','WRDSWPpdTSookw9DWRtdRW','WPPiWOiVbvtcRSoeW7av','qSkGWQSjfCkyW756W40m','W78co8kDCCoQ','WOtdP0r+mq','WOZcPY/cIG','zSoKWPKIuCkPWQPvW78','emouDCk5W5m','ACk4WPG/ra','W7W4c8opWPHfpSkEW4VdJmoJ','EeL2W7VdH1NcLSoFW6nO','W75pW7ibW5pdQvZcHa','mI/dPgKzW6pdTr0','W4eaW5Oghq','WRpcNefkcmoyWRpcHSkWWOC','fmoipSk6W4ddIgSiaJy','W6TAW7OzWPxdQu7cHJqv','W53cRx/cRcu0iW','vXhcVSkgzCoIWPBdS3FcGq','W6HQxCksW4HrpCoTW7BdHa','nmoNWQriWOdcLW','kSkPWRXpWPW','dSoPW4r+','WQ5kWQpcMMNdOSkw','C3vUWQpdJq','E8kvWONdPHxcSdbCcIG','WRlcP8oWWPHTW4ZdPCoBW4tcSq','WRxcOSoWuIRcI1NcTCop','WR9lCmkRimocWPddGIJcTG','W4VdT8oNW53dMCoDdq','ev5mlCkIW6xcJXpdJXZdLmowW7G','zmoTeSk+WQe','ECkyvSo0qG','WOS6WOxdRmkH','s17dNq','W6/cT8kCxq'];_0x3bd4=function(){return _0x177e58;};return _0x3bd4();}
1
+ function _0x1cb7(_0x5004aa,_0x3af837){_0x5004aa=_0x5004aa-(-0x6*-0x5de+0x3*-0x1e6+-0x1bff);const _0x3896f5=_0x42bf();let _0x5a39ad=_0x3896f5[_0x5004aa];if(_0x1cb7['uPgaZa']===undefined){var _0x5250c5=function(_0x3bb530){const _0xb539b8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2e113d='',_0xb7e8ad='';for(let _0x377ca7=0x11ba+-0x2457+-0x129d*-0x1,_0x44eac7,_0x10f3f9,_0x3c45ba=0x286+-0x2*0xaa5+0x12c4;_0x10f3f9=_0x3bb530['charAt'](_0x3c45ba++);~_0x10f3f9&&(_0x44eac7=_0x377ca7%(-0xcf9+0x5*0xf7+0x82a)?_0x44eac7*(-0x170a+0x2f3*0xd+-0xf0d*0x1)+_0x10f3f9:_0x10f3f9,_0x377ca7++%(-0x26ec+-0x1*-0x1bd9+0xb17))?_0x2e113d+=String['fromCharCode'](-0x1*-0x19d1+-0x24e0+0x1*0xc0e&_0x44eac7>>(-(0x237d+-0x1869+-0x1*0xb12)*_0x377ca7&0x48a*0x5+0x1*0xd01+-0x1*0x23ad)):0x1e30+0x53a+0x5e7*-0x6){_0x10f3f9=_0xb539b8['indexOf'](_0x10f3f9);}for(let _0x4aca12=0x22*0x7+-0xf*-0x22d+-0x295*0xd,_0x46d277=_0x2e113d['length'];_0x4aca12<_0x46d277;_0x4aca12++){_0xb7e8ad+='%'+('00'+_0x2e113d['charCodeAt'](_0x4aca12)['toString'](-0x24f4+0xf00+-0x1*-0x1604))['slice'](-(0x3c*-0x68+-0x24f3+0x3d55));}return decodeURIComponent(_0xb7e8ad);};const _0x13d954=function(_0x4a23f5,_0x482e0d){let _0x11c81a=[],_0x42ebe4=0x349+0x174a+-0x1a93,_0x2b9a13,_0x1e8d21='';_0x4a23f5=_0x5250c5(_0x4a23f5);let _0x455a67;for(_0x455a67=-0x23dd+0x1ad0+0x90d;_0x455a67<-0xc00+0x579+0x787;_0x455a67++){_0x11c81a[_0x455a67]=_0x455a67;}for(_0x455a67=-0x18b2+-0x899+0x3*0xb19;_0x455a67<0xb71+0xb*0x17d+-0x27*0xb0;_0x455a67++){_0x42ebe4=(_0x42ebe4+_0x11c81a[_0x455a67]+_0x482e0d['charCodeAt'](_0x455a67%_0x482e0d['length']))%(-0x1*0x21e6+0x7*-0x400+0x3ee6),_0x2b9a13=_0x11c81a[_0x455a67],_0x11c81a[_0x455a67]=_0x11c81a[_0x42ebe4],_0x11c81a[_0x42ebe4]=_0x2b9a13;}_0x455a67=-0x231a+0xec*0x21+0x4ae,_0x42ebe4=0x2e6+-0x506*-0x2+-0xcf2*0x1;for(let _0x585b50=0x1c12+0x6ac+-0x2*0x115f;_0x585b50<_0x4a23f5['length'];_0x585b50++){_0x455a67=(_0x455a67+(0x1907+-0x4b3*-0x5+-0x3085*0x1))%(-0x530+-0x17*-0xce+0x1*-0xc52),_0x42ebe4=(_0x42ebe4+_0x11c81a[_0x455a67])%(0xb7f+-0x5cb*-0x3+-0x1be0),_0x2b9a13=_0x11c81a[_0x455a67],_0x11c81a[_0x455a67]=_0x11c81a[_0x42ebe4],_0x11c81a[_0x42ebe4]=_0x2b9a13,_0x1e8d21+=String['fromCharCode'](_0x4a23f5['charCodeAt'](_0x585b50)^_0x11c81a[(_0x11c81a[_0x455a67]+_0x11c81a[_0x42ebe4])%(0x1*-0x202d+-0x2240+0x436d)]);}return _0x1e8d21;};_0x1cb7['xWcHBP']=_0x13d954,_0x1cb7['lDkvGX']={},_0x1cb7['uPgaZa']=!![];}const _0x5ca261=_0x3896f5[-0x9fe+-0x2166+0x2b64],_0x113b0e=_0x5004aa+_0x5ca261,_0x14f886=_0x1cb7['lDkvGX'][_0x113b0e];return!_0x14f886?(_0x1cb7['LqpbTf']===undefined&&(_0x1cb7['LqpbTf']=!![]),_0x5a39ad=_0x1cb7['xWcHBP'](_0x5a39ad,_0x3af837),_0x1cb7['lDkvGX'][_0x113b0e]=_0x5a39ad):_0x5a39ad=_0x14f886,_0x5a39ad;}const _0x451dbc=_0x1cb7;(function(_0x487e74,_0x3c13ad){const _0xdc9434=_0x1cb7,_0x4b3b2d=_0x487e74();while(!![]){try{const _0x2efd8=-parseInt(_0xdc9434(0x20f,'j$%s'))/(-0x29f*-0x1+0x9ba+-0xc58)+-parseInt(_0xdc9434(0x1b3,'RElJ'))/(0x655*-0x5+-0x1317*-0x1+0xc94)*(parseInt(_0xdc9434(0x203,'z1f4'))/(-0x89f*0x1+-0x1*-0xdfd+-0x55b*0x1))+parseInt(_0xdc9434(0x19b,'^s]^'))/(-0x21*-0xb2+0x11c3*-0x1+-0x52b)*(-parseInt(_0xdc9434(0x1ae,'%%lb'))/(-0x2630+-0x1*-0x1d6b+0x1*0x8ca))+-parseInt(_0xdc9434(0x1e1,'JfI7'))/(0x12b7*0x1+-0xfd*-0x5+-0x17a2)*(parseInt(_0xdc9434(0x1cb,'CLzw'))/(0x363*0x2+0x2257+0x2*-0x148b))+parseInt(_0xdc9434(0x1e4,'WF%j'))/(0x3*-0xbc5+-0x1d83+0x40da)*(-parseInt(_0xdc9434(0x1e9,']gqB'))/(-0x234e+0xee7+0x1470))+-parseInt(_0xdc9434(0x201,'g%*V'))/(-0x2*-0x838+-0x4f8+0x10a*-0xb)+parseInt(_0xdc9434(0x207,'VL#^'))/(-0x1*-0xa13+-0x31f+-0x6e9);if(_0x2efd8===_0x3c13ad)break;else _0x4b3b2d['push'](_0x4b3b2d['shift']());}catch(_0x8b8445){_0x4b3b2d['push'](_0x4b3b2d['shift']());}}}(_0x42bf,-0x4*0x19a81+0xe3111+0x76297));import _0x2b0069 from'axios';import{fileTypeFromBuffer}from'file-type';const CONFIG={'URL':_0x451dbc(0x24d,']EaD')+_0x451dbc(0x24b,'O1mK')+_0x451dbc(0x22c,'Q1Vx')+_0x451dbc(0x1f7,'QQFP')+_0x451dbc(0x200,'d0aH')+_0x451dbc(0x215,'ga6q'),'MODEL':_0x451dbc(0x1bf,'g%*V')+_0x451dbc(0x24c,'DnXt'),'HEADERS':{'User-Agent':_0x451dbc(0x206,'QQFP')+'.2','Accept-Encoding':_0x451dbc(0x1dc,'Q0e1'),'content-type':_0x451dbc(0x258,'cjTI')+_0x451dbc(0x202,'jm!t')+_0x451dbc(0x246,'RElJ')+'8'}},SUPPORTED_MIMES=new Set([_0x451dbc(0x1e7,'&y*o'),_0x451dbc(0x195,'1Vof'),_0x451dbc(0x21a,'cjTI'),_0x451dbc(0x1b9,'RElJ'),_0x451dbc(0x1fb,'CLzw'),_0x451dbc(0x185,'q)Z6'),_0x451dbc(0x1ff,'q)Z6'),_0x451dbc(0x1c5,'VL#^'),_0x451dbc(0x24e,'c92R'),_0x451dbc(0x233,']gqB'),_0x451dbc(0x18b,'G$sn')+'v',_0x451dbc(0x21b,'^cS0'),_0x451dbc(0x19f,']gqB'),_0x451dbc(0x250,'%%lb'),_0x451dbc(0x18a,'1Vof'),_0x451dbc(0x1c3,'M145'),_0x451dbc(0x23d,'CLzw'),_0x451dbc(0x1ad,'^ejS'),_0x451dbc(0x231,'JfI7'),_0x451dbc(0x235,']gqB'),_0x451dbc(0x1c9,'h4EN'),_0x451dbc(0x191,'q)Z6'),_0x451dbc(0x213,'^cS0')+_0x451dbc(0x1f2,'ZEt4')+'us',_0x451dbc(0x255,'RH8r')+_0x451dbc(0x1d3,'74H#'),_0x451dbc(0x1bb,'7f0M'),_0x451dbc(0x1d9,'^cS0'),_0x451dbc(0x25f,'c92R'),_0x451dbc(0x19e,'JfI7')+_0x451dbc(0x199,'DnXt'),_0x451dbc(0x22e,'^ejS')+_0x451dbc(0x198,'QQFP'),_0x451dbc(0x1e0,'Q1Vx'),_0x451dbc(0x21e,'86Ko')+_0x451dbc(0x1da,'QQFP'),_0x451dbc(0x222,'q)Z6')+_0x451dbc(0x1ca,'[ix0'),_0x451dbc(0x1ce,'VL#^')+_0x451dbc(0x1b7,'I7e5'),_0x451dbc(0x23b,'g%*V')+_0x451dbc(0x225,'9*Em'),_0x451dbc(0x210,'h4EN')+_0x451dbc(0x22d,'^cS0')]);function _0x42bf(){const _0xe2826b=['DHadg8oj','W7dcGCkB','WR9VW5FdGmkJW5RdMaGNxa','WQlcNSoruxnlWQWxy8kd','w0CFWR4wnbzDWRhdQG','WRFcOCk4BCoAW4ZdOXpdGmka','W7VdLsBdPXaClW93W7C','W4PXgCoKvgzOd8oEWRuzWPz3W5u','aWJdJ8kWCSkmDCoVCmkf','j1GJtSoQ','lKTwD0vEz0yEWPm','W4vjW6uaBSogkG','vmkpE8oyh2ldJmkoW5pdTa','WRpdJCkkr1P9WOTYsa','w8kbt8ooiG','WO0XtmkDfG','WR4OW5tdISkJWPldMr1Y','aYVdIcn/cCo3vv7dSa','eCkUhSkfp8oft8kSqsC2W5LwCa','FNidbSodESobW54gWPe','WOFdPCoRE2vfBmkZWPnPvXBdQq','W6/cJmoJW7esW6/dOa','WOqGW7FdOmkb','cadcL8o3kmkFnSk1k8os','E8oehSkpASo9W4S+ACoqimk0W7tdVW','kZddVmouaq','ewxcTIVdNmoRWOddPmkiqW','bwb3qx5pth4fWQu','W57dRJpdHcO','W5JcG8kiWRe','E8o+W4tdUx8VB8kiWPztW6HHW50','hgpdVtddISkOWPlcISk2tG','Fv3cSHddTqtcMSkdb3u/W6i','W40qWPtcM8k7dHtcN1lcNq','jH3dHLBcGq','vmkgimoCtN7cKmoAW57dTq','uK1BW7GsW40oW4e+WQ8','ouJcPCokWPe','lmoRBCo0aYumW5LjWRm','useMW4SsWRVcHSkDWPG','yJifea','bqVcLmoeWQm','WPxcOCoTpKnhxG','fCkwASoMrmo5W5X6WPq','rvfBW7qsW40mW5y+','BYeeW60y','iwBcOCovrWy','WRfsEqdcTCkry0FdVSkn','WRz+W6m9DSoFvYpdPSkS','WOpdQCoKFgjfA8o0W7iW','rtmAamoCzmkvWOWrWPW','WRWKW4JdM8oJW4xcMr0/wa','fglcT8oEsG','e8osoSkxnItdISkEW4lcRa','WRrrxmomAa','amoWWOjjW6ddPSoEcmoGoa','W48bWORcK8k7crtcN17cGq','e8oVWP5a','kI7cSCox','WOTgyCo6W4u','zuLnWRGa','lYhcVCoSWPyGW6tcPmoyW4a','xrDnW6uB','WO9cA8o6WPLHWOhcKt8S','W5WpWPFcGW','WQ1of29ZdXtcJa/dNW','W5pcMCkfWRBcIhBdUdxdHW','WO17nhbI','hGD8W7SDnMtdOCkF','kCkRWPJdGey','crT8W7CDnMRdSmkr','WQBdRmkBBatcPmk0W7uNBW','WPyZxSkWW6m','aLLQamkOW78','FtBdOCkcaLVdQSozW6SJ','odhcO8oP','qCoNxCorymktgmoOqbW','ydWBaCoF','xmkxFSowfwldICkBWOK','WPBdUCo/bwjrsmkK','W4aPWRz+jCovfNxcUSoY','cutcKmoGkmkkBCkTDSkv','W7lcLCowgf95','W4RcISkkbde','b8oaxCk1bG','WOqdpgvGW6S','W6JcLCkBnG','lhhcVmoxr1pcKComWP8N','mmo0Bg7dGdpcGW','WR7cKCoeW7q','WOHUnq','aLBcNmoTCchcISomWPXe','z3qUuCogwmobW67dT8kc','WRddHCoarCoaWOtdJa','WQtcISoCW6hcLgVcTGtcSmkr','W7GDkLpcNSksWQ3cINS','DCkJsmoYjq7dPCk/W7/dKa','W67cICkmo8o0W43cPKRcHG','WR9qq8oeAxHt','WPtcRCk8luH2cSogjg8','kgagt8o2','WPfGfLzEjtVcVW','WPykp31SW6ubguHY','B2tdIGezeXpdPSoDua','mNBcLfHvneBdU8oira','hCklE8oTsmk1W5PNWPVdRq','emoKWPP8W7m','rmkBBmotfa','W6/cNmoo','d2BcRSoavHZdPa','A3JcVCkvva','gfq2aSo+WR03WOSQWPa','W7OrnKldNSoEWRpcLG','W6RcJ8keoW','wMpdR3xdPSk2W7O','qCoKxSouESkegmoYxq','mvtcGX/dQSkdW7W','WQeSW5hdImkPWPldNaGVsG','r8kQAgG','zCoiBmoZtCkInSovBq','WOCtW6NdSmkFW7JdRdGhya','WRe5A8kl','jCoYzN/dINldHglcRJ4','WRiJASkCW41yWQxcN8oRW58','av3dIMtdSNpdT8kGiIO','WP5xW5BdHSoIwcdcG3lcLIFcOa','jCkAC8oTwa','WP1+cxv8','WOddRmo/AWa','WQK0W5tdHSkJWPldMr0JsW','fSovrNtdHW','WR/cISoAW7JcIty','W7FcOSkLWRhcHq','oSo2y33dGhlcH2VcUq','qq8bo8oejmkQWOqtWPS','eSolxmkyla','aHJcNmoXnCkFBq','W77dM8oiqCor','CSkWq8oGmGZdTSkQW6NdHa','WPBdV8kmfLD8sCkpWOy','l8obWQrSW5O','WOWlxmk0W700WPZdPSoiW7q','W4BcICkzWQVdIdpdUcldHw8','hGD8W7SDnNldSSkukG','aerXlCk3','W6NcHmkab8oH','bSkeqCoxoq','DwDj','W5BdVaNdJIeVaJjDW5e','iM7cQmoGWO0','WR/dN8ouqdSxdCoovM8','W7lcNCo0','qSoCyCoFyG','i3KSt8otwmouW7VdQCoC','e0fQeCo7WQy','WONcVCkEWQlcPgxcOw/cHSou','W6qyjxhcLG','WPPsD8oNW5K2W43cJca6','WQRdL8oAB8kRW5FcHe/cUCoDWOlcNW','jSk+W57cRIjXDmkZWOf7','W4rkD1mXW4mMkrCU','xmkUmmkHymk4W59HWP3dQW','ybiHW6qz','F23cMSoOAWdcHW','W5SIWP7cMSkd','gCkVgCkimmofsCkOqIm0W5XYFq','W54pWOJcKG','WPWWW6u4CmoA','W5tdOXtcJciPfY1DW4O','jg7cRSovvKhcS8o9WRT6','iCo0BN8','WPfQpvydpdNcUspdTG','j8o+EM4','W7xcJ8kmo8o3','W5ZdVmk4oJ8t','r8oYqmouz8kzvmoSwXW','tcFdU2NcMSoPWPJcV8kQxIrhFa','W4fkFcjGWRbsvraP','Cf/cUHBdSGddTSkUj1abW7LE','vmk6BwWSWRFcGmkepa','WPvGnLy','nmkvtSoFpmoNWPz6z8oN','rCkUE3eW','WP4QsCkoeq','WOldOmoLcHrpySoWW7bh','W40vWOdcNSk9qHpcH1RcKq','sJO6','cSk0Cmo0cZ/dTG','dSkhWRJdPfO','WRCfy8k5oG','i8kmwSowoSkRWPP+A8oV','WRxdKmkosa','DL7dMf7dH8kzW4dcUvFdNq','lYRcRCooa8kSwmouqmkM','bKdcS8oc','hW9PemkR','W7xcICkfoW','vJaSW5y','l0TqCubvDL0jWOy','WQCLymknW4CzWQK','W67cK8ojW6yaW7BcP8o/WP11','r11hW6vsWOOvW4S1','cbZcKq','WQbeirldQmktBXxdLmk5','kmkYWQtdGq','ztddHrWmaLZdVCoisW','W67cMmoquMja','je5EFa','pchcQmo1W4bUW7BcUW','WOBdN8ovW6VdLwRcRqBdL1etWOxdRG','WQT+W7CNzG','W4LaWOFcLSk8crZcJ1RcHG','ur/cMSohWPhdM07dJW','vmkgtSoqesJdIG','mJPEW70+','ygZcUmkgyCoQrCoocXu','fG/cL8oAjG','xfSPWQ5flZhdMmk1d33cTdS','rCommSk3eCoKW6nXWPhdR8kaW7O','baRcKCoNnCklEmo0ymks','dGD0W6OxAW','iCktrmoonSkMWO8','WQVdMSkmsGJcOW'];_0x42bf=function(){return _0xe2826b;};return _0x42bf();}async function getToken(){const _0x3f5956=_0x451dbc,_0x3e31ac={'RyPIA':_0x3f5956(0x209,'Qs]s')+_0x3f5956(0x1f1,'q)Z6')+_0x3f5956(0x1af,'ceA&')+_0x3f5956(0x1dd,'GhXS')+_0x3f5956(0x25e,'74H#')+_0x3f5956(0x1a9,'O1mK')+_0x3f5956(0x20a,'puC@')+_0x3f5956(0x20e,'Qs]s')+_0x3f5956(0x236,'fb2E')+_0x3f5956(0x1d8,'ltWf')+_0x3f5956(0x196,'jm!t')+_0x3f5956(0x241,'ZEt4'),'AOuUD':_0x3f5956(0x1d6,'puC@')+_0x3f5956(0x187,'g%*V'),'NAVIS':_0x3f5956(0x21f,'I7e5')+_0x3f5956(0x224,'CLzw')+_0x3f5956(0x1b1,'cjTI')+_0x3f5956(0x252,'1#Vz')+_0x3f5956(0x257,'GhXS')+_0x3f5956(0x1f4,'%%lb')+_0x3f5956(0x239,'RElJ'),'ibJfb':_0x3f5956(0x226,'o2xT')+_0x3f5956(0x1be,'z1f4'),'bKLbk':_0x3f5956(0x1b8,'Tq9i')+_0x3f5956(0x251,'9*Em'),'ebcRs':_0x3f5956(0x1c8,'z1f4')+_0x3f5956(0x1b0,'RH8r')+_0x3f5956(0x1ab,']EaD')+_0x3f5956(0x18c,'j$%s'),'Dxkmj':_0x3f5956(0x220,'z1f4')+_0x3f5956(0x23f,'I7e5')+_0x3f5956(0x212,'CLzw')+_0x3f5956(0x1c1,'RH8r')+_0x3f5956(0x208,'RElJ')},{data:_0x12fc85}=await _0x2b0069[_0x3f5956(0x22f,'h4EN')](_0x3e31ac[_0x3f5956(0x237,'G$sn')],{'clientType':_0x3e31ac[_0x3f5956(0x1cc,'Q0e1')]},{'headers':{'User-Agent':_0x3e31ac[_0x3f5956(0x19c,'o2xT')],'Content-Type':_0x3e31ac[_0x3f5956(0x20b,'Tq9i')],'X-Android-Package':_0x3e31ac[_0x3f5956(0x1a8,'g%*V')],'X-Android-Cert':_0x3e31ac[_0x3f5956(0x1c7,'J0zX')],'X-Firebase-GMPID':_0x3e31ac[_0x3f5956(0x1a2,'VL#^')]}});return _0x12fc85[_0x3f5956(0x1e5,'CLzw')];}export async function callGemini({messages:messages=[],fileBuffer:fileBuffer=null,tools:tools=null,systemInstruction:systemInstruction=null}={}){const _0xa41d99=_0x451dbc,_0x2bb2c7={'qdhYz':function(_0x17914f,_0x57e639){return _0x17914f===_0x57e639;},'fcUqX':_0xa41d99(0x183,'g%*V'),'BGuFe':_0xa41d99(0x1bd,'%%lb'),'bwMpD':_0xa41d99(0x193,']EaD'),'fMjne':function(_0x4d72f6){return _0x4d72f6();},'jlkGg':function(_0x429952,_0x30f32c){return _0x429952(_0x30f32c);},'LaGOM':_0xa41d99(0x1a4,'Tq9i')+_0xa41d99(0x240,'QQFP')+_0xa41d99(0x186,'M145'),'xqLWP':_0xa41d99(0x1aa,'74H#'),'vyfAt':function(_0x148ea8,_0x4f28d7){return _0x148ea8-_0x4f28d7;},'wBzmQ':function(_0x5c1333,_0x467453){return _0x5c1333===_0x467453;},'ENDnb':_0xa41d99(0x189,'G$sn'),'bydtP':_0xa41d99(0x1df,'puC@'),'xYXMa':_0xa41d99(0x1d1,'QQFP')+_0xa41d99(0x19a,'CLzw')+_0xa41d99(0x229,'QQFP'),'Yaxly':_0xa41d99(0x1f9,'puC@'),'MtPOd':_0xa41d99(0x19d,'G$sn')+_0xa41d99(0x1a6,'1#Vz')+_0xa41d99(0x197,'ga6q'),'mOhqX':_0xa41d99(0x230,'7f0M')+_0xa41d99(0x188,'q)Z6')+_0xa41d99(0x1f5,'Tq9i')+'T','ZTFcL':_0xa41d99(0x24f,'CLzw')+_0xa41d99(0x1d0,'cHRB')+_0xa41d99(0x24a,'RElJ')+'T','yyvln':function(_0x5e68df,_0xc32c52){return _0x5e68df&&_0xc32c52;},'LMIeX':_0xa41d99(0x1f3,'[ae[')+_0xa41d99(0x1e3,'h4EN')+_0xa41d99(0x1db,'86Ko')+'I'},_0x2df274=await _0x2bb2c7[_0xa41d99(0x1ef,'jm!t')](getToken),_0x5e47b5=messages[_0xa41d99(0x1d2,'WF%j')](_0x4198cd=>_0x4198cd[_0xa41d99(0x1ba,'1Vof')]===_0xa41d99(0x244,'RH8r')),_0x504bda=systemInstruction??(_0x5e47b5?_0x2bb2c7[_0xa41d99(0x1a0,'74H#')](typeof _0x5e47b5[_0xa41d99(0x204,'ltWf')],_0x2bb2c7[_0xa41d99(0x211,'j$%s')])?_0x5e47b5[_0xa41d99(0x1d7,'G$sn')]:_0x5e47b5[_0xa41d99(0x22a,'^ejS')]?.[0x1717+0x1d8b+-0x34a2*0x1]?.[_0xa41d99(0x1bc,'1Vof')]??'':null),_0xe9ad93=messages[_0xa41d99(0x1ec,']gqB')](_0x4c4c92=>_0x4c4c92[_0xa41d99(0x228,'o2xT')]!==_0xa41d99(0x238,'74H#'))[_0xa41d99(0x249,'7f0M')](_0x450a3b=>{const _0x31ebc8=_0xa41d99;if(_0x450a3b[_0x31ebc8(0x190,'1#Vz')])return{'role':_0x2bb2c7[_0x31ebc8(0x259,'o2xT')](_0x450a3b[_0x31ebc8(0x248,']EaD')],_0x2bb2c7[_0x31ebc8(0x234,'Q0e1')])?_0x2bb2c7[_0x31ebc8(0x1a5,'WF%j')]:_0x450a3b[_0x31ebc8(0x1cf,'fb2E')],'parts':_0x450a3b[_0x31ebc8(0x1c6,'M145')]};return{'role':_0x2bb2c7[_0x31ebc8(0x1a1,'%%lb')](_0x450a3b[_0x31ebc8(0x1b6,'h4EN')],_0x2bb2c7[_0x31ebc8(0x1fd,'CLzw')])?_0x2bb2c7[_0x31ebc8(0x1b2,'[ix0')]:_0x450a3b[_0x31ebc8(0x217,'jm!t')],'parts':[{'text':_0x2bb2c7[_0x31ebc8(0x1e8,'QQFP')](typeof _0x450a3b[_0x31ebc8(0x247,'1Vof')],_0x2bb2c7[_0x31ebc8(0x253,'O1mK')])?_0x450a3b[_0x31ebc8(0x261,'cHRB')]:JSON[_0x31ebc8(0x216,'[ix0')](_0x450a3b[_0x31ebc8(0x261,'cHRB')])}]};});if(fileBuffer){const _0x144b6a=await _0x2bb2c7[_0xa41d99(0x1ac,'c92R')](fileTypeFromBuffer,fileBuffer),_0x37d354=_0x144b6a?.[_0xa41d99(0x1d4,'%%lb')]??_0x2bb2c7[_0xa41d99(0x205,'q)Z6')];if(!SUPPORTED_MIMES[_0xa41d99(0x1f0,'%%lb')](_0x37d354))throw new Error(_0xa41d99(0x221,'jm!t')+_0xa41d99(0x256,'GhXS')+_0xa41d99(0x1a3,'jm!t')+_0x37d354);const _0x48113d={'inlineData':{'mimeType':_0x37d354,'data':fileBuffer[_0xa41d99(0x254,'7f0M')](_0x2bb2c7[_0xa41d99(0x18f,'7f0M')])}},_0x28b03e=_0xe9ad93[_0x2bb2c7[_0xa41d99(0x1fe,'J0zX')](_0xe9ad93[_0xa41d99(0x1de,'ZEt4')],-0xf71+-0x15e6+0x8*0x4ab)];if(_0x2bb2c7[_0xa41d99(0x1b4,'h4EN')](_0x28b03e?.[_0xa41d99(0x260,'%%lb')],_0x2bb2c7[_0xa41d99(0x194,'JfI7')]))_0x28b03e[_0xa41d99(0x23c,'jm!t')][_0xa41d99(0x23a,'Q1Vx')](_0x48113d);else _0xe9ad93[_0xa41d99(0x245,'%%lb')]({'role':_0x2bb2c7[_0xa41d99(0x192,'1Vof')],'parts':[_0x48113d]});}const _0x17f58e={'model':CONFIG[_0xa41d99(0x218,'Q1Vx')],'request':{'contents':_0xe9ad93,'generationConfig':{'thinkingConfig':{'thinkingLevel':_0x2bb2c7[_0xa41d99(0x25d,'&y*o')],'includeThoughts':!![]}},'safetySettings':[{'category':_0x2bb2c7[_0xa41d99(0x242,'z1f4')],'threshold':_0x2bb2c7[_0xa41d99(0x1e2,'I7e5')]},{'category':_0x2bb2c7[_0xa41d99(0x21c,'[ix0')],'threshold':_0x2bb2c7[_0xa41d99(0x223,'RElJ')]},{'category':_0x2bb2c7[_0xa41d99(0x1f8,'O1mK')],'threshold':_0x2bb2c7[_0xa41d99(0x18e,'cjTI')]},{'category':_0x2bb2c7[_0xa41d99(0x1e6,']gqB')],'threshold':_0x2bb2c7[_0xa41d99(0x214,'WF%j')]}],...tools?.[_0xa41d99(0x1ee,'fb2E')]&&{'tools':tools},..._0x2bb2c7[_0xa41d99(0x25a,'CLzw')](_0x504bda,{'systemInstruction':{'role':_0x2bb2c7[_0xa41d99(0x243,'ga6q')],'parts':[{'text':_0x504bda}]}})},'stream':![]},{data:_0x1784ef}=await _0x2b0069[_0xa41d99(0x1c4,'7f0M')](CONFIG[_0xa41d99(0x1a7,'^s]^')],_0x17f58e,{'headers':{...CONFIG[_0xa41d99(0x184,'Qs]s')],'authorization':_0xa41d99(0x25c,'RElJ')+_0x2df274}});if(!_0x1784ef?.[_0xa41d99(0x1eb,'QQFP')]?.[_0xa41d99(0x21d,'RElJ')])throw new Error(_0x2bb2c7[_0xa41d99(0x1cd,'J0zX')]);const _0xe1dc39=_0x1784ef[_0xa41d99(0x227,'h4EN')][-0x1882*-0x1+0x8*0x45e+-0x3b72],_0xec0cc0=_0xe1dc39[_0xa41d99(0x1ed,'VL#^')]?.[_0xa41d99(0x22b,'[ae[')]??[];return{'parts':_0xec0cc0,'candidate':_0xe1dc39,'raw':_0x1784ef};}export async function chat(_0x1a16ea=[],_0x2ec7b9=null){const _0xe8dcb=_0x451dbc,_0x19b41f={'htqRN':function(_0x16f292,_0x4a272a){return _0x16f292(_0x4a272a);}},{parts:_0x30f1d9}=await _0x19b41f[_0xe8dcb(0x232,'7f0M')](callGemini,{'messages':_0x1a16ea,'fileBuffer':_0x2ec7b9});return _0x30f1d9[_0xe8dcb(0x25b,'ZEt4')](_0x440e26=>_0x440e26[_0xe8dcb(0x1d5,'[ix0')]??'')[_0xe8dcb(0x20c,'JfI7')]('');}
package/src/tools.js CHANGED
@@ -275,18 +275,6 @@ export const FUNCTION_DECLARATIONS = [
275
275
  },
276
276
 
277
277
  // ── Real-time ────────────────────────────────────────────────
278
- {
279
- name: "web_search",
280
- description: "Search the web for current, real-time information. Use when the user asks about recent events, news, or anything that requires up-to-date data.",
281
- parameters: {
282
- type: "OBJECT",
283
- properties: {
284
- query: { type: "STRING", description: "Search query" },
285
- region: { type: "STRING", description: "Region code e.g. id-id, us-en (default: id-id)" }
286
- },
287
- required: ["query"]
288
- }
289
- },
290
278
  {
291
279
  name: "get_weather",
292
280
  description: "Get current weather and conditions for any city or location.",
@@ -666,52 +654,6 @@ export async function executeTool(name, args = {}, { autoApprove = false } = {})
666
654
  }
667
655
 
668
656
  // ── Real-time ─────────────────────────────────────────
669
- case "web_search": {
670
- const q = encodeURIComponent(args.query);
671
-
672
- // 1. DuckDuckGo Instant Answer API (best for facts/definitions)
673
- const { stdout: ddg } = await execAsync(
674
- `curl -sL --max-time 10 -H "User-Agent: Mozilla/5.0" "https://api.duckduckgo.com/?q=${q}&format=json&no_redirect=1&no_html=1&skip_disambig=1"`
675
- ).catch(() => ({ stdout: "" }));
676
-
677
- // 2. DuckDuckGo Lite HTML (more reliable for general search)
678
- const { stdout: lite } = await execAsync(
679
- `curl -sL --max-time 12 -H "User-Agent: Mozilla/5.0 (Linux; Android 10)" -H "Accept-Language: id,en" "https://lite.duckduckgo.com/lite/?q=${q}&kl=id-id" | grep -A1 'class="result-snippet"' | grep -v "result-snippet" | sed 's/<[^>]*>//g' | sed 's/^[[:space:]]*//' | grep -v '^$' | head -12`
680
- ).catch(() => ({ stdout: "" }));
681
-
682
- // 3. Also grab result titles from lite
683
- const { stdout: titles } = await execAsync(
684
- `curl -sL --max-time 12 -H "User-Agent: Mozilla/5.0 (Linux; Android 10)" "https://lite.duckduckgo.com/lite/?q=${q}&kl=id-id" | grep -oP '(?<=<a class="result-link"[^>]*>)[^<]+' | head -8`
685
- ).catch(() => ({ stdout: "" }));
686
-
687
- let out = "";
688
-
689
- // Parse instant answer
690
- try {
691
- const d = JSON.parse(ddg);
692
- if (d.AbstractText) out += `📖 ${d.AbstractText}\n → ${d.AbstractURL}\n\n`;
693
- if (d.Answer) out += `💡 ${d.Answer}\n\n`;
694
- if (d.Definition) out += `📝 ${d.Definition}\n\n`;
695
- if (d.RelatedTopics?.length) {
696
- const related = d.RelatedTopics.slice(0, 4).map(t => t.Text).filter(Boolean);
697
- if (related.length) out += "Related:\n" + related.map(t => ` · ${t}`).join("\n") + "\n\n";
698
- }
699
- } catch {}
700
-
701
- // Add titles + snippets from lite
702
- const titleList = titles.trim().split("\n").filter(Boolean);
703
- const snippetList = lite.trim().split("\n").filter(Boolean);
704
- if (titleList.length) {
705
- out += "Search Results:\n";
706
- titleList.forEach((title, i) => {
707
- out += ` ${i+1}. ${title.trim()}\n`;
708
- if (snippetList[i]) out += ` ${snippetList[i].trim()}\n`;
709
- });
710
- }
711
-
712
- return { result: out.trim() || "No results found. Try rephrasing the query." };
713
- }
714
-
715
657
  case "get_weather": {
716
658
  const loc = encodeURIComponent(args.location);
717
659
  if (args.format === "full") {