@sparrowai/sparrow-mcp 1.0.9 → 1.0.11

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.
@@ -1 +1 @@
1
- const a0_0x5d9fa8=a0_0x5d39;(function(_0x31513b,_0x2833a8){const _0x283df6=a0_0x5d39,_0x58ae31=_0x31513b();while(!![]){try{const _0x334433=-parseInt(_0x283df6(0x133))/0x1+parseInt(_0x283df6(0x13c))/0x2*(parseInt(_0x283df6(0x105))/0x3)+-parseInt(_0x283df6(0x137))/0x4*(-parseInt(_0x283df6(0x106))/0x5)+-parseInt(_0x283df6(0x10e))/0x6*(-parseInt(_0x283df6(0x117))/0x7)+-parseInt(_0x283df6(0x112))/0x8*(parseInt(_0x283df6(0x114))/0x9)+parseInt(_0x283df6(0x10d))/0xa+-parseInt(_0x283df6(0x11c))/0xb;if(_0x334433===_0x2833a8)break;else _0x58ae31['push'](_0x58ae31['shift']());}catch(_0x56a50a){_0x58ae31['push'](_0x58ae31['shift']());}}}(a0_0x15e3,0x7ce96));const a0_0x1af475=(function(){let _0x58c709=!![];return function(_0x418ae7,_0x3b4393){const _0x176550=_0x58c709?function(){const _0x26fa63=a0_0x5d39;if(_0x3b4393){const _0x5345ed=_0x3b4393[_0x26fa63(0x13b)](_0x418ae7,arguments);return _0x3b4393=null,_0x5345ed;}}:function(){};return _0x58c709=![],_0x176550;};}()),a0_0x1a4c79=a0_0x1af475(this,function(){const _0x4152d5=a0_0x5d39;return a0_0x1a4c79['toString']()[_0x4152d5(0x110)](_0x4152d5(0x111)+'+$')['toString']()[_0x4152d5(0x11d)+'r'](a0_0x1a4c79)[_0x4152d5(0x110)](_0x4152d5(0x111)+'+$');});a0_0x1a4c79();import{config}from'dotenv';import a0_0x5b070b from'path';import a0_0x5aca51 from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a0_0x5b070b['dirname'](fileURLToPath(import.meta.url)),repoRootEnvPath=a0_0x5b070b[a0_0x5d9fa8(0x118)](moduleDir,a0_0x5d9fa8(0x13d)),cwdEnvPath=a0_0x5b070b['resolve'](process[a0_0x5d9fa8(0x134)](),a0_0x5d9fa8(0x109)),explicitEnvPath=process[a0_0x5d9fa8(0x10b)]['ENV_PATH']?a0_0x5b070b[a0_0x5d9fa8(0x118)](process[a0_0x5d9fa8(0x134)](),process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x11f)]):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a0_0x5d9fa8(0x126)](Boolean),envPath=candidateEnvPaths[a0_0x5d9fa8(0x12c)](_0x4a2090=>{const _0x2ee106=a0_0x5d9fa8;try{return a0_0x5aca51[_0x2ee106(0x138)](_0x4a2090);}catch{return![];}})||repoRootEnvPath,a0_0x30a374={};a0_0x30a374['path']=envPath,config(a0_0x30a374);const a0_0x5e3d48={};a0_0x5e3d48[a0_0x5d9fa8(0x129)]=process['env'][a0_0x5d9fa8(0x115)+a0_0x5d9fa8(0x12a)]||'http://loc'+a0_0x5d9fa8(0x128)+'34',a0_0x5e3d48[a0_0x5d9fa8(0x132)]=process['env'][a0_0x5d9fa8(0x11b)+'EL']||a0_0x5d9fa8(0x130);const a0_0x5a608f={};a0_0x5a608f['bucket']=process[a0_0x5d9fa8(0x10b)]['STORAGE_CO'+a0_0x5d9fa8(0x11e)+'ME']||'',a0_0x5a608f['region']=process[a0_0x5d9fa8(0x10b)]['STORAGE_RE'+a0_0x5d9fa8(0x102)]||'us-east-1',a0_0x5a608f[a0_0x5d9fa8(0x121)+'d']=process[a0_0x5d9fa8(0x10b)]['STORAGE_AC'+a0_0x5d9fa8(0x104)]||'',a0_0x5a608f[a0_0x5d9fa8(0x124)+a0_0x5d9fa8(0x108)]=process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x131)+a0_0x5d9fa8(0x119)]||'',a0_0x5a608f['endpoint']=process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x120)+a0_0x5d9fa8(0x135)];const a0_0x4ca310={};a0_0x4ca310[a0_0x5d9fa8(0x129)]=process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x10c)+a0_0x5d9fa8(0x116)]||'https://on'+a0_0x5d9fa8(0x103)+'rrowcloud.'+'ai',a0_0x4ca310['apiKey']=process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x10c)+a0_0x5d9fa8(0x12e)]||'';const a0_0xd1d1a9={};a0_0xd1d1a9['ollama']=a0_0x5e3d48,a0_0xd1d1a9['s3']=a0_0x5a608f,a0_0xd1d1a9[a0_0x5d9fa8(0x122)]=a0_0x4ca310,a0_0xd1d1a9[a0_0x5d9fa8(0x139)]=process[a0_0x5d9fa8(0x10b)]['NOTION_API'+'_KEY']?{'apiKey':process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x113)+a0_0x5d9fa8(0x101)],'databaseId':process['env']['NOTION_DAT'+'ABASE_ID']||''}:undefined;function a0_0x15e3(){const _0x464dcc=['developmen','OLLAMA_MOD','15897706xPKlFd','constructo','NTAINER_NA','ENV_PATH','STORAGE_EN','accessKeyI','sparrow','NODE_ENV','secretAcce','STORAGE_AC','filter','error','alhost:114','baseUrl','E_URL','\x20사용합니다.','find','지\x20키\x20환경\x20변수가','I_KEY','필수\x20환경\x20변수가\x20','gemma2:27b','STORAGE_SE','model','440514xjaZAJ','cwd','DPOINT','설정되지\x20않았습니다','4LHBkTD','existsSync','notion','warn','apply','543668JqxrMq','../../.env','_KEY','GION','demand.spa','CESS_ID','6VzLIkx','3663955rwjpWA','다.\x20암호화된\x20키를','ssKey','.env','\x20(로드\x20경로:\x20','env','SPARROW_AP','3498890HItjyh','5830614pTpLHJ','개발\x20환경:\x20스토리','search','(((.+)+)+)','94456joFFwV','NOTION_API','153UQojAg','OLLAMA_BAS','I_URL','7LWqytK','resolve','CRET_KEY'];a0_0x15e3=function(){return _0x464dcc;};return a0_0x15e3();}export const appConfig=a0_0xd1d1a9;const requiredEnvVars=[a0_0x5d9fa8(0x10c)+a0_0x5d9fa8(0x12e)];function a0_0x5d39(_0x4234d4,_0x3b33a0){_0x4234d4=_0x4234d4-0x101;const _0x353aed=a0_0x15e3();let _0x1a4c79=_0x353aed[_0x4234d4];return _0x1a4c79;}process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x123)]===a0_0x5d9fa8(0x11a)+'t'&&((!process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x125)+a0_0x5d9fa8(0x104)]||!process[a0_0x5d9fa8(0x10b)][a0_0x5d9fa8(0x131)+a0_0x5d9fa8(0x119)])&&logger[a0_0x5d9fa8(0x13a)](a0_0x5d9fa8(0x10f)+a0_0x5d9fa8(0x12d)+'\x20설정되지\x20않았습니'+a0_0x5d9fa8(0x107)+a0_0x5d9fa8(0x12b)));for(const envVar of requiredEnvVars){if(!process[a0_0x5d9fa8(0x10b)][envVar]){const triedPaths=[envPath]['filter'](Boolean)['join'](',\x20');logger[a0_0x5d9fa8(0x127)]('필수\x20환경\x20변수가\x20'+a0_0x5d9fa8(0x136)+':\x20'+envVar+a0_0x5d9fa8(0x10a)+triedPaths+')');throw new Error(a0_0x5d9fa8(0x12f)+a0_0x5d9fa8(0x136)+':\x20'+envVar+a0_0x5d9fa8(0x10a)+triedPaths+')');}}
1
+ const a0_0x2f88c3=a0_0x151d;(function(_0x5556d4,_0x1dc022){const _0x169d62=a0_0x151d,_0xeec316=_0x5556d4();while(!![]){try{const _0x212ecd=parseInt(_0x169d62(0x150))/0x1+-parseInt(_0x169d62(0x182))/0x2*(parseInt(_0x169d62(0x184))/0x3)+parseInt(_0x169d62(0x162))/0x4+parseInt(_0x169d62(0x166))/0x5+-parseInt(_0x169d62(0x171))/0x6+parseInt(_0x169d62(0x15e))/0x7+-parseInt(_0x169d62(0x156))/0x8;if(_0x212ecd===_0x1dc022)break;else _0xeec316['push'](_0xeec316['shift']());}catch(_0x598aab){_0xeec316['push'](_0xeec316['shift']());}}}(a0_0x458b,0x67b81));const a0_0x1687e7=(function(){let _0x54bc49=!![];return function(_0x1b3b23,_0x1fedd9){const _0x9f2ad9=_0x54bc49?function(){const _0x58e1e9=a0_0x151d;if(_0x1fedd9){const _0x2ffad8=_0x1fedd9[_0x58e1e9(0x15b)](_0x1b3b23,arguments);return _0x1fedd9=null,_0x2ffad8;}}:function(){};return _0x54bc49=![],_0x9f2ad9;};}()),a0_0x255fac=a0_0x1687e7(this,function(){const _0x5ef074=a0_0x151d,_0x401066={};_0x401066['Axgxh']=_0x5ef074(0x14f)+'+$';const _0xaedcae=_0x401066;return a0_0x255fac[_0x5ef074(0x163)]()['search'](_0xaedcae[_0x5ef074(0x16a)])[_0x5ef074(0x163)]()['constructo'+'r'](a0_0x255fac)[_0x5ef074(0x174)](_0x5ef074(0x14f)+'+$');});a0_0x255fac();import{config}from'dotenv';import a0_0x423f91 from'path';import a0_0x103929 from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a0_0x423f91[a0_0x2f88c3(0x17f)](fileURLToPath(import.meta.url)),repoRootEnvPath=a0_0x423f91[a0_0x2f88c3(0x181)](moduleDir,a0_0x2f88c3(0x179)),cwdEnvPath=a0_0x423f91[a0_0x2f88c3(0x181)](process[a0_0x2f88c3(0x160)](),a0_0x2f88c3(0x175)),explicitEnvPath=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x189)]?a0_0x423f91[a0_0x2f88c3(0x181)](process[a0_0x2f88c3(0x160)](),process[a0_0x2f88c3(0x17a)]['ENV_PATH']):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath]['filter'](Boolean),envPath=candidateEnvPaths[a0_0x2f88c3(0x16b)](_0x4a05aa=>{try{return a0_0x103929['existsSync'](_0x4a05aa);}catch{return![];}})||repoRootEnvPath,a0_0x446284={};a0_0x446284[a0_0x2f88c3(0x15c)]=envPath,config(a0_0x446284);const a0_0xe2f2b0={};a0_0xe2f2b0[a0_0x2f88c3(0x18d)]=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x161)+a0_0x2f88c3(0x18e)]||a0_0x2f88c3(0x173)+a0_0x2f88c3(0x16e)+'34',a0_0xe2f2b0[a0_0x2f88c3(0x168)]=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x172)+'EL']||a0_0x2f88c3(0x169);const a0_0x190f4d={};function a0_0x458b(){const _0x244f73=['../../.env','env','filter','NOTION_API','\x20사용합니다.','region','dirname','ollama','resolve','293536PdGZCe','다.\x20암호화된\x20키를','3XmexTB','SPARROW_AP','sparrow','warn','NTAINER_NA','ENV_PATH','ssKey','_KEY','demand.spa','baseUrl','E_URL','(((.+)+)+)','122411fLKeES','지\x20키\x20환경\x20변수가','CESS_ID','개발\x20환경:\x20스토리','us-east-1','CRET_KEY','1147008uAVrgI','GION','accessKeyI','STORAGE_SE','STORAGE_AC','apply','path','bucket','279706EQclTO','\x20(로드\x20경로:\x20','cwd','OLLAMA_BAS','331644IkIoOJ','toString','I_URL','apiKey','4177125sEfsMz','STORAGE_EN','model','gemma2:27b','Axgxh','find','필수\x20환경\x20변수가\x20','NODE_ENV','alhost:114','join','DPOINT','2194368rxVDZf','OLLAMA_MOD','http://loc','search','.env','ABASE_ID','I_KEY','설정되지\x20않았습니다'];a0_0x458b=function(){return _0x244f73;};return a0_0x458b();}a0_0x190f4d[a0_0x2f88c3(0x15d)]=process[a0_0x2f88c3(0x17a)]['STORAGE_CO'+a0_0x2f88c3(0x188)+'ME']||'',a0_0x190f4d[a0_0x2f88c3(0x17e)]=process[a0_0x2f88c3(0x17a)]['STORAGE_RE'+a0_0x2f88c3(0x157)]||a0_0x2f88c3(0x154),a0_0x190f4d[a0_0x2f88c3(0x158)+'d']=process['env'][a0_0x2f88c3(0x15a)+a0_0x2f88c3(0x152)]||'',a0_0x190f4d['secretAcce'+a0_0x2f88c3(0x18a)]=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x159)+'CRET_KEY']||'',a0_0x190f4d['endpoint']=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x167)+a0_0x2f88c3(0x170)];const a0_0x6c09fa={};a0_0x6c09fa[a0_0x2f88c3(0x18d)]=process['env'][a0_0x2f88c3(0x185)+a0_0x2f88c3(0x164)]||'https://on'+a0_0x2f88c3(0x18c)+'rrowcloud.'+'ai',a0_0x6c09fa[a0_0x2f88c3(0x165)]=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x185)+a0_0x2f88c3(0x177)]||'';const a0_0x543408={};a0_0x543408[a0_0x2f88c3(0x180)]=a0_0xe2f2b0,a0_0x543408['s3']=a0_0x190f4d,a0_0x543408[a0_0x2f88c3(0x186)]=a0_0x6c09fa,a0_0x543408['notion']=process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x17c)+a0_0x2f88c3(0x18b)]?{'apiKey':process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x17c)+a0_0x2f88c3(0x18b)],'databaseId':process[a0_0x2f88c3(0x17a)]['NOTION_DAT'+a0_0x2f88c3(0x176)]||''}:undefined;export const appConfig=a0_0x543408;const requiredEnvVars=['SPARROW_AP'+a0_0x2f88c3(0x177)];function a0_0x151d(_0x1d225c,_0x4e14be){_0x1d225c=_0x1d225c-0x14f;const _0x2183ed=a0_0x458b();let _0x255fac=_0x2183ed[_0x1d225c];return _0x255fac;}process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x16d)]==='developmen'+'t'&&((!process[a0_0x2f88c3(0x17a)]['STORAGE_AC'+a0_0x2f88c3(0x152)]||!process[a0_0x2f88c3(0x17a)][a0_0x2f88c3(0x159)+a0_0x2f88c3(0x155)])&&logger[a0_0x2f88c3(0x187)](a0_0x2f88c3(0x153)+a0_0x2f88c3(0x151)+'\x20설정되지\x20않았습니'+a0_0x2f88c3(0x183)+a0_0x2f88c3(0x17d)));for(const envVar of requiredEnvVars){if(!process['env'][envVar]){const triedPaths=[envPath][a0_0x2f88c3(0x17b)](Boolean)[a0_0x2f88c3(0x16f)](',\x20');logger['error'](a0_0x2f88c3(0x16c)+a0_0x2f88c3(0x178)+':\x20'+envVar+a0_0x2f88c3(0x15f)+triedPaths+')');throw new Error(a0_0x2f88c3(0x16c)+a0_0x2f88c3(0x178)+':\x20'+envVar+a0_0x2f88c3(0x15f)+triedPaths+')');}}
package/dist/server.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env tsx
2
- const a1_0x45e80b=a1_0x3016;(function(_0x4e1c05,_0x49fac3){const _0x373ac4=a1_0x3016,_0x2aa55a=_0x4e1c05();while(!![]){try{const _0x38fc2e=-parseInt(_0x373ac4(0x1d8))/0x1+parseInt(_0x373ac4(0xce))/0x2*(parseInt(_0x373ac4(0x98))/0x3)+-parseInt(_0x373ac4(0x188))/0x4+-parseInt(_0x373ac4(0xd8))/0x5+parseInt(_0x373ac4(0x1ba))/0x6*(parseInt(_0x373ac4(0xb8))/0x7)+-parseInt(_0x373ac4(0x1e7))/0x8*(parseInt(_0x373ac4(0x208))/0x9)+parseInt(_0x373ac4(0x115))/0xa*(parseInt(_0x373ac4(0xe8))/0xb);if(_0x38fc2e===_0x49fac3)break;else _0x2aa55a['push'](_0x2aa55a['shift']());}catch(_0x4ab98a){_0x2aa55a['push'](_0x2aa55a['shift']());}}}(a1_0x1d3a,0x22429));const a1_0x23af0a=(function(){let _0x221c70=!![];return function(_0x309ec2,_0x1ed9d2){const _0x48717b=_0x221c70?function(){const _0x3ebbd7=a1_0x3016;if(_0x1ed9d2){const _0x5edde2=_0x1ed9d2[_0x3ebbd7(0xc5)](_0x309ec2,arguments);return _0x1ed9d2=null,_0x5edde2;}}:function(){};return _0x221c70=![],_0x48717b;};}()),a1_0x46847c=a1_0x23af0a(this,function(){const _0x458ad9=a1_0x3016;return a1_0x46847c['toString']()[_0x458ad9(0x120)](_0x458ad9(0xfb)+'+$')[_0x458ad9(0x1a9)]()[_0x458ad9(0x1c9)+'r'](a1_0x46847c)[_0x458ad9(0x120)]('(((.+)+)+)'+'+$');});a1_0x46847c();import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{z}from'zod';import{AnalysisService}from'./services/analysis.service.js';import{logger}from'./utils/logger.js';import a1_0xf55353 from'path';function a1_0x1d3a(){const _0x2ae6d3=['\x20folder\x20na','join','alysis\x20fai','D\x20and\x20upda','completed.','##\x20Analysi','e\x20and\x20requ','alysis\x20inc','getAnalysi','current\x20wo','vided\x20duri','\x20of\x20','progressTo','analyzeMul','[COMPLETE]','generate\x20s','ecure_code','ovided','File','lysis\x20was\x20','status','ocations\x20-','orking\x20dir','ror','analysis\x20I','vered\x20Vuln','will\x20retry','ath\x20not\x20pr','\x20if\x20not\x20sp','substring','MKowB','rovided','length','urity\x20anal','ation\x20Resu','curity\x20ana','tion','bsCCR','e\x20(absolut','progress','tus:\x20','Folder\x20pat','Analysis\x20S','sis\x20Briefi','Analysis\x20p','Pre-proces','\x20to\x20be\x20cre','seconds\x20(d','secure-cod','```java\x0a','ompleted\x20s','File\x20paths','CESS,\x20ANAL','\x0aProgress:','QdbXy','content','f\x20an\x20analy','tinuing\x20st','ZIP\x20file\x20s','COMPLETE','older\x20into','version','urity\x20Anal','RbZsL','name','ecurity\x20an','ing\x20progre','Y,\x20PRE_PRO','sStatus','INIT','ed:\x20','_meta','\x20character','ple\x20file\x20p','FAIL','\x0a```\x0a\x20\x20\x20\x20\x20','lete\x20prope','Analysis\x20I','der','sis\x20status','o\x20analyze.','629408UdIFXc','ations:\x20','cureCodeFr','IP\x20file\x20to','the\x20entire','ZIP\x20file\x20n','ief','\x0aAnalysis\x20','track_anal','analysisBr','sis.','unt','File\x20secur','\x20the\x20file\x20','r\x20analysis','alysis','mRiBj','rted:\x20','\x0aStatus:\x20','Analysis\x20f','analyzeFol','ovided.','Compress\x20a','nalysis\x20ha','Warning\x20wh','ame\x20to\x20be\x20','g\x20log\x20dire','ded','total','secureCode','Security\x20a','wing\x20','lts\x0a\x0a##\x20Se','toString','tatus\x20upda','notificati','ly\x20check\x20a','l\x20in\x20milli','ile\x20analys','D:\x20','FromPaths','sendNotifi','describe','sted:\x20','\x20security\x20','(absolute\x20','rt\x20progres','\x20from\x20a\x20co','lysis\x20brie','toUpperCas','18NICxZy','oken\x20not\x20p','analysis','quested:\x20','is\x20results','Generate\x20s','analyze_fi','is.','recursive','\x20not\x20provi','at\x20least\x20o','Path\x20to\x20th','info','ver\x20starte','MCP\x20secure','constructo','sis\x20and\x20re','is_status','\x0a\x0a##\x20Disco','\x20current\x20w','le\x20paths\x20t','logs','trim','type','tent.','\x20a\x20ZIP\x20fil','is\x20Results','fileName','into\x20a\x20ZIP','e\x20ZIP\x20file','227483xBbwxQ','vulnerabil','Folder\x20Sec','on\x20request','n\x20failed\x20(','working\x20di','ate\x20secure','\x20based\x20on\x20','\x20Security\x20','warn','ng\x20the\x20ANA','Generate\x20S','he\x20client\x20','Post-proce','les_securi','392gFwyXE','nalysis\x20pr','Brief','luding\x20vul','\x0a```\x0a\x0a##\x20S','e-generato','uccessfull','BeNIW','isError','N/A','...','READY','STOP','es\x20origina','generate_s','ess','to\x20analyze','\x20version','tart\x20analy','ity\x20analys','l\x20filename','uested:\x20','zFkcc','fing.','error','tipleFiles','unknown\x20to','ZIP\x20file\x20p','o\x20analyze\x20','\x0a\x0a##\x20Code\x20','toLowerCas','\x0aFolder:\x20','sResults','44559bgtcLi','ysis_progr','\x20combined:','s\x20ID:\x20','Initializa','ss\x20notific','h\x20not\x20prov','n\x20progress','\x0aNumber\x20of','\x20file\x20path','s\x20Overview','in\x20progres','existsSync','lative\x20to\x20','Analysis','\x20in\x20progre','turn\x20the\x20r','folderPath','INIT,\x20READ','bPszT','e\x20generati','token','ecified)','k\x20failed:','efault:\x2030','rectory)','[ANALYSIS]','esults.\x20Re','eSecurity','List\x20of\x20fi','valid,\x20con','\x0a#\x20Secure\x20','ested:\x20','nd\x20request','tages\x20are\x20','Periodical','\x20Analysis\x20','completed','\x20status:\x20','\x0a\x0a...\x20(Sho','tatus\x20chec','result','ent.','s\x20started.','onal,\x20uses','lysis\x20fail','descriptio','24201GEWBEQ','\x20request\x20s','Progress\x20n','ration\x20ser','ck\x20interva','relative\x20t','\x20Briefing\x0a','acking\x20fai','ons/progre','Analysis\x20c','king\x20analy','omAnalysis','ated\x20(opti','get_analys','so\x20support','esults\x20req','esults.','Check\x20the\x20','ity\x20Analys','\x0aZIP\x20File:','Upload\x20a\x20Z','includes','ompleted.\x0a','ysis\x20reque','ted:\x20','PRE_PROCES','stored\x20(op','Content','y\x20Analysis','order','led:','message','299138mJKLaJ','\x0aFinal\x20Sta','combined.l','providing\x20','lid,\x20stopp','structured','s\x20without\x20','led:\x20','\x0a#\x20Securit','paths\x20or\x20r','analysis\x20r','\x20failed.','ty\x20analysi','apply','iyZrW','quires\x20ana','Read\x20multi','ZIP\x20File\x20S','diff','1.0.0','aths,\x20comp','path\x20or\x20re','64eoVsby','ysis','array','Changes\x20(D','quest\x20fail','ecure\x20Code','me\x20if\x20not\x20','zipFilePat','equested:\x20','analyze_fo','1237970rLKuoR','[STOP]\x20Ana','Multi-file','tional,\x20us','ed\x20results','D\x20from\x20the','ysis\x20statu','get\x20analys','progress\x20o','ogress\x20by\x20','Complete','lysis\x20ID\x20a','ities','resolve','s\x20single\x20f','nerabiliti','11ZoUWeP','Progress\x20T','rogress\x20tr','registerTo',']\x20Analysis','checkerKey','ile\x20checki','Get\x20detail','Name\x20of\x20th','ided','\x20The\x20fileP','ile\x20conten','is\x20status:','Content\x20of','Analysis\x20s','Error\x20chec','aths\x20array','s\x20updated:','00)','(((.+)+)+)','rovided.\x20T','o\x20current\x20','Original\x20f','Final\x20anal','map','acking\x20sta','Progress\x20t','fication.\x20','erabilitie','ng\x0a','\x20file\x20cont','p_security','\x0a-\x20Status:','Get\x20Analys','ff\x0a','n\x20entire\x20f','\x20to\x20analyz','Unknown\x20er','optional','\x0a-\x20Analysi','Secure\x20cod','POST_PROCE','BxDlj','LYSIS\x20stag','ecure\x20code','6290110lAxbrM','ssing...','oken\x20is\x20no','ssing','string','ed\x20to\x20comp','cure\x20Code\x0a','Failed\x20to\x20','ecurity\x20An','ANALYSIS','specified)','search','otificatio',',\x20error:\x20','YSIS,\x20POST','Code\x20Gener','):\x20','FAILED','ailed\x20with','keys','expired\x20to','s\x20tracking','ken','text','analysisId','Folder\x20sec','nalysis\x20re','ysis\x20faile','ID:\x20','te\x20via\x20Pro','is\x20failed:','e\x20path\x20or\x20','Waiting\x20fo','\x0a\x20\x20\x20\x20\x20\x20'];a1_0x1d3a=function(){return _0x2ae6d3;};return a1_0x1d3a();}import a1_0x5bb561 from'fs';import{fileURLToPath}from'url';const a1_0x3af1de={};a1_0x3af1de[a1_0x45e80b(0x177)]=a1_0x45e80b(0x167)+a1_0x45e80b(0x1ec)+'r',a1_0x3af1de[a1_0x45e80b(0x174)]=a1_0x45e80b(0xcb);const server=new McpServer(a1_0x3af1de),analysisService=new AnalysisService();server[a1_0x45e80b(0xeb)+'ol'](a1_0x45e80b(0x1c0)+'le_securit'+'y',{'title':'File\x20Secur'+a1_0x45e80b(0xaa)+'is','description':'Request\x20se'+a1_0x45e80b(0x15a)+'lysis\x20for\x20'+'a\x20file\x20by\x20'+a1_0x45e80b(0xbb)+a1_0x45e80b(0x18c)+a1_0x45e80b(0x106)+a1_0x45e80b(0x93),'inputSchema':{'fileContent':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0xf5)+a1_0x45e80b(0x195)+a1_0x45e80b(0x1f7)),'fileName':z[a1_0x45e80b(0x119)]()['describe']('File\x20name')}},async({fileContent:_0x1d53b4,fileName:_0x2eb340})=>{const _0x5f565f=a1_0x45e80b;try{logger[_0x5f565f(0x1c6)](_0x5f565f(0x1a6)+_0x5f565f(0x12f)+_0x5f565f(0x1bd)+_0x2eb340);const _0x238be3={};_0x238be3['fileConten'+'t']=_0x1d53b4,_0x238be3[_0x5f565f(0x1d5)]=_0x2eb340;const _0x11b6f8=await analysisService['analyzeFil'+_0x5f565f(0x85)](_0x238be3),_0x29c416={};_0x29c416[_0x5f565f(0x1d1)]='text',_0x29c416[_0x5f565f(0x12c)]=_0x5f565f(0x1a6)+_0x5f565f(0x19f)+_0x5f565f(0x94)+_0x5f565f(0x18f)+'ID:\x20'+_0x11b6f8[_0x5f565f(0x12d)];const _0xcf99c3={};_0xcf99c3[_0x5f565f(0x12d)]=_0x11b6f8[_0x5f565f(0x12d)],_0xcf99c3[_0x5f565f(0x14b)]=_0x11b6f8[_0x5f565f(0x14b)];const _0x59852c={};return _0x59852c['content']=[_0x29c416],_0x59852c[_0x5f565f(0xbd)+_0x5f565f(0xb3)]=_0xcf99c3,_0x59852c;}catch(_0x285b9b){logger['error'](_0x5f565f(0x194)+_0x5f565f(0x1fa)+_0x5f565f(0x133),_0x285b9b);const _0x212137={};_0x212137['type']=_0x5f565f(0x12c),_0x212137[_0x5f565f(0x12c)]=_0x5f565f(0x1a6)+'nalysis\x20re'+_0x5f565f(0xd2)+'ed:\x20'+(_0x285b9b instanceof Error?_0x285b9b['message']:_0x5f565f(0x10d)+_0x5f565f(0x14e));const _0x4c90cc={};_0x4c90cc[_0x5f565f(0x1ff)]=_0x285b9b instanceof Error?_0x285b9b[_0x5f565f(0xb7)]:'Unknown\x20er'+_0x5f565f(0x14e);const _0x56b729={};return _0x56b729['content']=[_0x212137],_0x56b729['structured'+_0x5f565f(0xb3)]=_0x4c90cc,_0x56b729;}}),server[a1_0x45e80b(0xeb)+'ol'](a1_0x45e80b(0xa5)+a1_0x45e80b(0x1cb),{'title':a1_0x45e80b(0x109)+'is\x20Status','description':a1_0x45e80b(0xa9)+a1_0x45e80b(0xe0)+a1_0x45e80b(0x16f)+a1_0x45e80b(0x1ca)+a1_0x45e80b(0x79)+a1_0x45e80b(0xa8),'inputSchema':{'analysisId':z['string']()[a1_0x45e80b(0x1b2)]('Analysis\x20I'+'D')}},async({analysisId:_0x3df576})=>{const _0x1c2027=a1_0x45e80b,_0x306754={};_0x306754['MKowB']=_0x1c2027(0x12c);const _0x4e2f8c=_0x306754;try{logger[_0x1c2027(0x1c6)](_0x1c2027(0xf6)+'tatus\x20requ'+_0x1c2027(0x89)+_0x3df576);const _0x2b47ad=await analysisService['getAnalysi'+_0x1c2027(0x17b)](_0x3df576),_0x872834=_0x2b47ad[_0x1c2027(0x14b)]==='COMPLETE'&&_0x2b47ad[_0x1c2027(0x92)]?_0x2b47ad[_0x1c2027(0x92)]:_0x2b47ad[_0x1c2027(0x14b)],_0x1b8b1f={};_0x1b8b1f[_0x1c2027(0x1d1)]=_0x1c2027(0x12c),_0x1b8b1f[_0x1c2027(0x12c)]=_0x1c2027(0x161)+'tatus:\x20'+_0x872834+(_0x1c2027(0x16c)+'\x20')+(_0x2b47ad[_0x1c2027(0x15e)]||0x0)+('%\x0aMessage:'+'\x20')+(_0x2b47ad[_0x1c2027(0xb7)]||_0x1c2027(0x1f0));const _0x3045ae={};_0x3045ae[_0x1c2027(0x12d)]=_0x3df576,_0x3045ae['status']=_0x872834,_0x3045ae[_0x1c2027(0x92)]=_0x2b47ad[_0x1c2027(0x92)],_0x3045ae[_0x1c2027(0x15e)]=_0x2b47ad['progress'],_0x3045ae[_0x1c2027(0xb7)]=_0x2b47ad['message'];const _0x1f6ca4={};return _0x1f6ca4['content']=[_0x1b8b1f],_0x1f6ca4[_0x1c2027(0xbd)+_0x1c2027(0xb3)]=_0x3045ae,_0x1f6ca4;}catch(_0x2543bf){logger[_0x1c2027(0x1ff)](_0x1c2027(0xf6)+_0x1c2027(0x91)+_0x1c2027(0x80),_0x2543bf);const _0x134ba2={};_0x134ba2[_0x1c2027(0x1d1)]=_0x4e2f8c[_0x1c2027(0x155)],_0x134ba2['text']=_0x1c2027(0x11c)+_0x1c2027(0xdf)+_0x1c2027(0xf4)+'\x20'+(_0x2543bf instanceof Error?_0x2543bf[_0x1c2027(0xb7)]:_0x1c2027(0x10d)+_0x1c2027(0x14e));const _0x5a6e90={};_0x5a6e90[_0x1c2027(0x1ff)]=_0x2543bf instanceof Error?_0x2543bf['message']:'Unknown\x20er'+_0x1c2027(0x14e);const _0x4d7bc9={};return _0x4d7bc9[_0x1c2027(0x16e)]=[_0x134ba2],_0x4d7bc9[_0x1c2027(0xbd)+'Content']=_0x5a6e90,_0x4d7bc9;}}),server[a1_0x45e80b(0xeb)+'ol']('get_analys'+'is_results',{'title':'Get\x20Analys'+a1_0x45e80b(0x1d4),'description':a1_0x45e80b(0xef)+a1_0x45e80b(0xdc)+a1_0x45e80b(0x1b7)+'mpleted\x20an'+a1_0x45e80b(0x13e)+a1_0x45e80b(0x1ea)+a1_0x45e80b(0xe7)+'es\x20and\x20ana'+a1_0x45e80b(0x1b8)+a1_0x45e80b(0x1fe),'inputSchema':{'analysisId':z[a1_0x45e80b(0x119)]()['describe']('Analysis\x20I'+'D')}},async({analysisId:_0x234888})=>{const _0x118bd6=a1_0x45e80b,_0x3b4cb4={'Omrto':function(_0x232a69,_0x53a0b1,_0x10b47b){return _0x232a69(_0x53a0b1,_0x10b47b);},'BeNIW':_0x118bd6(0x12c)};try{logger['info']('Analysis\x20r'+_0x118bd6(0xa7)+_0x118bd6(0x1fc)+_0x234888);const _0x172043=await analysisService[_0x118bd6(0x13f)+_0x118bd6(0x207)](_0x234888),_0x1048e0=0x7a120,_0x344916=(_0x263f62,_0x12395f)=>{const _0x257bb5=_0x118bd6;if(_0x263f62[_0x257bb5(0x157)]<=_0x12395f)return _0x263f62;return _0x263f62['substring'](0x0,_0x12395f)+('\x0a\x0a...\x20(Sho'+'wing\x20'+_0x12395f+_0x257bb5(0x142)+_0x263f62['length']+(_0x257bb5(0x17f)+'s)'));},_0x332111=_0x172043[_0x118bd6(0x1d9)+'ities'][_0x118bd6(0x100)]((_0x492d6a,_0x38463c)=>_0x38463c+0x1+'.\x20['+_0x492d6a['severity']+']\x20'+_0x492d6a[_0x118bd6(0xed)]+':\x20'+_0x492d6a[_0x118bd6(0x97)+'n'])[_0x118bd6(0x138)]('\x0a'),_0x143bd8=(_0x118bd6(0xc0)+_0x118bd6(0xb4)+'\x20Results\x0a\x0a'+_0x118bd6(0x13c)+_0x118bd6(0x73)+_0x118bd6(0x10f)+_0x118bd6(0x20b)+_0x172043['analysisId']+(_0x118bd6(0x108)+'\x20')+_0x172043['status']+('\x0a-\x20Vulnera'+'bilities\x20F'+'ound:\x20')+_0x172043[_0x118bd6(0x1d9)+_0x118bd6(0xe4)][_0x118bd6(0x157)]+('\x0a\x0a##\x20Analy'+_0x118bd6(0x162)+_0x118bd6(0x105))+_0x344916(_0x172043[_0x118bd6(0x191)+_0x118bd6(0x18e)]||'',_0x1048e0)+(_0x118bd6(0x1cc)+_0x118bd6(0x150)+_0x118bd6(0x104)+'s\x0a')+_0x3b4cb4['Omrto'](_0x344916,_0x332111,_0x1048e0)+_0x118bd6(0x136))[_0x118bd6(0x1d0)](),_0x1aa46d={'analysisId':_0x172043[_0x118bd6(0x12d)],'status':_0x172043[_0x118bd6(0x14b)],'vulnerabilities':_0x172043[_0x118bd6(0x1d9)+_0x118bd6(0xe4)],'analysisBrief':_0x172043[_0x118bd6(0x191)+_0x118bd6(0x18e)]?_0x344916(_0x172043[_0x118bd6(0x191)+_0x118bd6(0x18e)],_0x1048e0):''},_0xcc5f7b={};_0xcc5f7b[_0x118bd6(0x1d1)]=_0x3b4cb4[_0x118bd6(0x1ee)],_0xcc5f7b[_0x118bd6(0x12c)]=_0x143bd8;const _0x329e75={};return _0x329e75[_0x118bd6(0x16e)]=[_0xcc5f7b],_0x329e75[_0x118bd6(0xbd)+_0x118bd6(0xb3)]=_0x1aa46d,_0x329e75;}catch(_0x163c08){logger['error']('Failed\x20to\x20'+_0x118bd6(0xdf)+'is\x20results'+':',_0x163c08);const _0x22760a=_0x163c08 instanceof Error?_0x163c08[_0x118bd6(0xb7)]:_0x118bd6(0x10d)+_0x118bd6(0x14e),_0x2a5a32={};_0x2a5a32['type']=_0x118bd6(0x12c),_0x2a5a32[_0x118bd6(0x12c)]=_0x118bd6(0x11c)+_0x118bd6(0xdf)+_0x118bd6(0x1be)+':\x20'+_0x22760a;const _0x2a1073={};_0x2a1073['error']=_0x22760a;const _0x5201f1={};return _0x5201f1[_0x118bd6(0x16e)]=[_0x2a5a32],_0x5201f1[_0x118bd6(0xbd)+_0x118bd6(0xb3)]=_0x2a1073,_0x5201f1[_0x118bd6(0x1ef)]=!![],_0x5201f1;}}),server[a1_0x45e80b(0xeb)+'ol'](a1_0x45e80b(0x1f5)+a1_0x45e80b(0x147),{'title':a1_0x45e80b(0x1e3)+a1_0x45e80b(0xd3),'description':a1_0x45e80b(0x1bf)+a1_0x45e80b(0x114)+a1_0x45e80b(0x1df)+a1_0x45e80b(0xc2)+a1_0x45e80b(0x84)+a1_0x45e80b(0xc7)+a1_0x45e80b(0xe3)+'nd\x20origina'+'l\x20file\x20con'+a1_0x45e80b(0x1d2),'inputSchema':{'analysisId':z['string']()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0x184)+a1_0x45e80b(0xdd)+a1_0x45e80b(0x1b4)+a1_0x45e80b(0x1bc)),'fileContent':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0xfe)+a1_0x45e80b(0xf3)+'t\x20to\x20gener'+a1_0x45e80b(0x1de)+a1_0x45e80b(0x1f8))}},async({analysisId:_0x3eb08b,fileContent:_0x5baa11})=>{const _0x296d6a=a1_0x45e80b,_0x3190dd={};_0x3190dd[_0x296d6a(0x112)]=_0x296d6a(0x12c);const _0x8020eb=_0x3190dd;try{logger['info'](_0x296d6a(0x110)+_0x296d6a(0x7d)+_0x296d6a(0x1db)+'ed:\x20'+_0x3eb08b);const _0x3a0cdb=await analysisService['generateSe'+_0x296d6a(0x18a)+_0x296d6a(0xa3)](_0x3eb08b,_0x5baa11),_0x5f1e15=0x7a120,_0x3d46e8=(_0x1fc723,_0x22ab8a)=>{const _0xd02c7c=_0x296d6a;if(_0x1fc723[_0xd02c7c(0x157)]<=_0x22ab8a)return _0x1fc723;return _0x1fc723[_0xd02c7c(0x154)](0x0,_0x22ab8a)+(_0xd02c7c(0x90)+_0xd02c7c(0x1a7)+_0x22ab8a+_0xd02c7c(0x142)+_0x1fc723['length']+('\x20character'+'s)'));},_0x370ae1=(_0x296d6a(0x88)+_0x296d6a(0x124)+_0x296d6a(0x159)+_0x296d6a(0x1a8)+_0x296d6a(0x11b)+_0x296d6a(0x168)+_0x3d46e8(_0x3a0cdb[_0x296d6a(0x1a5)],_0x5f1e15)+(_0x296d6a(0x1eb)+_0x296d6a(0xd3)+_0x296d6a(0x9e))+_0x3d46e8(_0x3a0cdb[_0x296d6a(0x1a5)+_0x296d6a(0x1e9)],_0x5f1e15)+(_0x296d6a(0x204)+_0x296d6a(0xd1)+'iff)\x0a```di'+_0x296d6a(0x10a))+_0x3d46e8(_0x3a0cdb[_0x296d6a(0xca)],_0x5f1e15)+(_0x296d6a(0x182)+'\x20'))[_0x296d6a(0x1d0)](),_0x303ad0={'analysisId':_0x3eb08b,'secureCode':_0x3d46e8(_0x3a0cdb['secureCode'],_0x5f1e15),'secureCodeBrief':_0x3d46e8(_0x3a0cdb[_0x296d6a(0x1a5)+'Brief'],_0x5f1e15),'diff':_0x3d46e8(_0x3a0cdb[_0x296d6a(0xca)],_0x5f1e15)},_0x4d6f8b={};_0x4d6f8b[_0x296d6a(0x1d1)]='text',_0x4d6f8b[_0x296d6a(0x12c)]=_0x370ae1;const _0x1667e8={};return _0x1667e8['content']=[_0x4d6f8b],_0x1667e8[_0x296d6a(0xbd)+_0x296d6a(0xb3)]=_0x303ad0,_0x1667e8;}catch(_0x453a1b){logger[_0x296d6a(0x1ff)]('Failed\x20to\x20'+_0x296d6a(0x146)+_0x296d6a(0x114)+':',_0x453a1b);const _0x446bf4=_0x453a1b instanceof Error?_0x453a1b[_0x296d6a(0xb7)]:_0x296d6a(0x10d)+_0x296d6a(0x14e),_0x794f={};_0x794f['type']=_0x8020eb[_0x296d6a(0x112)],_0x794f['text']=_0x296d6a(0x11c)+_0x296d6a(0x146)+_0x296d6a(0x114)+':\x20'+_0x446bf4;const _0x3c953e={};_0x3c953e[_0x296d6a(0x1ff)]=_0x446bf4;const _0x5922ce={};return _0x5922ce['content']=[_0x794f],_0x5922ce[_0x296d6a(0xbd)+_0x296d6a(0xb3)]=_0x3c953e,_0x5922ce[_0x296d6a(0x1ef)]=!![],_0x5922ce;}}),server['registerTo'+'ol'](a1_0x45e80b(0x1c0)+a1_0x45e80b(0x1e6)+'ty',{'title':'Multi-File'+a1_0x45e80b(0x1e0)+a1_0x45e80b(0x77),'description':a1_0x45e80b(0xc8)+a1_0x45e80b(0x180)+a1_0x45e80b(0xcc)+'ress\x20them\x20'+a1_0x45e80b(0x1d6)+'\x20file,\x20and'+a1_0x45e80b(0x99)+'ecurity\x20an'+'alysis.\x20Al'+a1_0x45e80b(0xa6)+a1_0x45e80b(0xe6)+a1_0x45e80b(0x1ae)+a1_0x45e80b(0x1c1),'inputSchema':{'filePaths':z[a1_0x45e80b(0xd0)](z[a1_0x45e80b(0x119)]())['describe'](a1_0x45e80b(0x86)+a1_0x45e80b(0x1ce)+a1_0x45e80b(0x203)+a1_0x45e80b(0x1b5)+a1_0x45e80b(0xc1)+'elative\x20to'+a1_0x45e80b(0x1cd)+a1_0x45e80b(0x14d)+'ectory)'),'zipFileName':z[a1_0x45e80b(0x119)]()['optional']()['describe'](a1_0x45e80b(0xf0)+'e\x20ZIP\x20file'+a1_0x45e80b(0x165)+a1_0x45e80b(0xa4)+'onal)')}},async({filePaths:_0x53dbe3,zipFileName:_0x48a6f8})=>{const _0x42cf73=a1_0x45e80b;try{if(!_0x53dbe3||_0x53dbe3[_0x42cf73(0x157)]===0x0){const _0x5dae5b={};_0x5dae5b[_0x42cf73(0x1d1)]=_0x42cf73(0x12c),_0x5dae5b[_0x42cf73(0x12c)]='No\x20files\x20t'+_0x42cf73(0x187)+_0x42cf73(0xf2)+_0x42cf73(0xf8)+'\x20requires\x20'+_0x42cf73(0x1c4)+'ne\x20file\x20pa'+'th.';const _0x3a9200={};_0x3a9200[_0x42cf73(0x1ff)]=_0x42cf73(0x16a)+_0x42cf73(0x1c3)+_0x42cf73(0x1a3);const _0x539fde={};return _0x539fde[_0x42cf73(0x16e)]=[_0x5dae5b],_0x539fde['structured'+_0x42cf73(0xb3)]=_0x3a9200,_0x539fde;}logger[_0x42cf73(0x1c6)](_0x42cf73(0xda)+'\x20security\x20'+_0x42cf73(0xc2)+_0x42cf73(0xd6)+_0x53dbe3[_0x42cf73(0x157)]+('\x20file\x20path'+'s'));const _0x391a2b=await analysisService[_0x42cf73(0x144)+_0x42cf73(0x200)+_0x42cf73(0x1b0)](_0x53dbe3,_0x48a6f8),_0x516dd7='Security\x20a'+_0x42cf73(0x19f)+_0x42cf73(0x94)+_0x42cf73(0x71)+_0x42cf73(0x72)+'s:\x20'+_0x53dbe3[_0x42cf73(0x157)]+(_0x42cf73(0x18f)+_0x42cf73(0x131))+_0x391a2b[_0x42cf73(0x12d)]+_0x42cf73(0x19a)+_0x391a2b[_0x42cf73(0x14b)],_0x2412ea={};_0x2412ea[_0x42cf73(0x1d1)]=_0x42cf73(0x12c),_0x2412ea[_0x42cf73(0x12c)]=_0x516dd7;const _0x268be9={};_0x268be9[_0x42cf73(0x12d)]=_0x391a2b[_0x42cf73(0x12d)],_0x268be9[_0x42cf73(0x14b)]=_0x391a2b[_0x42cf73(0x14b)],_0x268be9['filePathCo'+_0x42cf73(0x193)]=_0x53dbe3[_0x42cf73(0x157)];const _0x120888={};return _0x120888[_0x42cf73(0x16e)]=[_0x2412ea],_0x120888['structured'+_0x42cf73(0xb3)]=_0x268be9,_0x120888;}catch(_0x1278fb){logger['error'](_0x42cf73(0xda)+'\x20security\x20'+'analysis\x20f'+'ailed:',_0x1278fb);const _0x446eae={};_0x446eae[_0x42cf73(0x1d1)]=_0x42cf73(0x12c),_0x446eae[_0x42cf73(0x12c)]=_0x42cf73(0x1a6)+_0x42cf73(0x12f)+_0x42cf73(0xd2)+_0x42cf73(0x17d)+(_0x1278fb instanceof Error?_0x1278fb[_0x42cf73(0xb7)]:_0x42cf73(0x10d)+_0x42cf73(0x14e));const _0x251c09={};_0x251c09[_0x42cf73(0x1ff)]=_0x1278fb instanceof Error?_0x1278fb[_0x42cf73(0xb7)]:_0x42cf73(0x10d)+_0x42cf73(0x14e);const _0x585bc1={};return _0x585bc1['content']=[_0x446eae],_0x585bc1[_0x42cf73(0xbd)+_0x42cf73(0xb3)]=_0x251c09,_0x585bc1;}}),server[a1_0x45e80b(0xeb)+'ol']('analyze_zi'+a1_0x45e80b(0x107),{'title':a1_0x45e80b(0xc9)+a1_0x45e80b(0x11d)+a1_0x45e80b(0x197),'description':a1_0x45e80b(0xac)+a1_0x45e80b(0x18b)+'\x20storage\x20a'+a1_0x45e80b(0x8a)+a1_0x45e80b(0x1b4)+'analysis.','inputSchema':{'zipFilePath':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0x1c5)+'e\x20ZIP\x20file'+a1_0x45e80b(0x10c)+a1_0x45e80b(0x15d)+a1_0x45e80b(0x134)+a1_0x45e80b(0x9d)+a1_0x45e80b(0xfd)+a1_0x45e80b(0x1dd)+a1_0x45e80b(0x82)),'zipFileName':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x10e)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0x18d)+a1_0x45e80b(0x1a1)+a1_0x45e80b(0xb2)+a1_0x45e80b(0xdb)+a1_0x45e80b(0x1f4)+a1_0x45e80b(0x1fb)+a1_0x45e80b(0x153)+a1_0x45e80b(0x7f))}},async({zipFilePath:_0x46fee7,zipFileName:_0x4a9d77})=>{const _0x529aa4=a1_0x45e80b,_0x393176={};_0x393176[_0x529aa4(0x1fd)]=_0x529aa4(0x12c),_0x393176['mRiBj']='ZIP\x20file\x20s'+_0x529aa4(0x178)+_0x529aa4(0x139)+_0x529aa4(0xb6);const _0x5cbbf6=_0x393176;try{if(!_0x46fee7||_0x46fee7[_0x529aa4(0x1d0)]()['length']===0x0){const _0x4d81a8={};_0x4d81a8[_0x529aa4(0x1d1)]=_0x5cbbf6[_0x529aa4(0x1fd)],_0x4d81a8['text']=_0x529aa4(0x202)+_0x529aa4(0x152)+_0x529aa4(0x19d);const _0x2de44b={};_0x2de44b[_0x529aa4(0x1ff)]=_0x529aa4(0x202)+_0x529aa4(0x152)+_0x529aa4(0x148);const _0x1b9e82={};return _0x1b9e82['content']=[_0x4d81a8],_0x1b9e82[_0x529aa4(0xbd)+_0x529aa4(0xb3)]=_0x2de44b,_0x1b9e82;}logger[_0x529aa4(0x1c6)](_0x529aa4(0x171)+_0x529aa4(0x178)+'alysis\x20req'+_0x529aa4(0x1fc)+_0x46fee7);const _0x15435c=await analysisService['analyzeZip'+_0x529aa4(0x149)](_0x46fee7,_0x4a9d77),_0x461f41=_0x529aa4(0x1a6)+'nalysis\x20ha'+_0x529aa4(0x94)+_0x529aa4(0xab)+'\x20'+_0x46fee7+('\x0aAnalysis\x20'+_0x529aa4(0x131))+_0x15435c[_0x529aa4(0x12d)]+_0x529aa4(0x19a)+_0x15435c[_0x529aa4(0x14b)],_0x327ebf={};_0x327ebf[_0x529aa4(0x1d1)]='text',_0x327ebf[_0x529aa4(0x12c)]=_0x461f41;const _0x50da45={};_0x50da45[_0x529aa4(0x12d)]=_0x15435c['analysisId'],_0x50da45[_0x529aa4(0x14b)]=_0x15435c[_0x529aa4(0x14b)],_0x50da45[_0x529aa4(0xd5)+'h']=_0x46fee7;const _0x4e5103={};return _0x4e5103[_0x529aa4(0x16e)]=[_0x327ebf],_0x4e5103[_0x529aa4(0xbd)+_0x529aa4(0xb3)]=_0x50da45,_0x4e5103;}catch(_0x44a5a0){logger[_0x529aa4(0x1ff)](_0x5cbbf6[_0x529aa4(0x198)],_0x44a5a0);const _0x4dc970={};_0x4dc970[_0x529aa4(0x1d1)]=_0x5cbbf6[_0x529aa4(0x1fd)],_0x4dc970[_0x529aa4(0x12c)]=_0x529aa4(0x1a6)+'nalysis\x20re'+_0x529aa4(0xd2)+_0x529aa4(0x17d)+(_0x44a5a0 instanceof Error?_0x44a5a0[_0x529aa4(0xb7)]:'Unknown\x20er'+_0x529aa4(0x14e));const _0x3f8d76={};_0x3f8d76[_0x529aa4(0x1ff)]=_0x44a5a0 instanceof Error?_0x44a5a0[_0x529aa4(0xb7)]:'Unknown\x20er'+_0x529aa4(0x14e);const _0x5b3b25={};return _0x5b3b25[_0x529aa4(0x16e)]=[_0x4dc970],_0x5b3b25[_0x529aa4(0xbd)+_0x529aa4(0xb3)]=_0x3f8d76,_0x5b3b25;}}),server[a1_0x45e80b(0xeb)+'ol'](a1_0x45e80b(0xd7)+'lder_secur'+'ity',{'title':a1_0x45e80b(0x1da)+a1_0x45e80b(0x175)+a1_0x45e80b(0xcf),'description':a1_0x45e80b(0x19e)+a1_0x45e80b(0x10b)+a1_0x45e80b(0x173)+a1_0x45e80b(0x1d3)+a1_0x45e80b(0x13d)+'est\x20securi'+a1_0x45e80b(0xc4)+'s.','inputSchema':{'folderPath':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0x1c5)+'e\x20folder\x20t'+'o\x20analyze\x20'+a1_0x45e80b(0x1b5)+a1_0x45e80b(0xcd)+a1_0x45e80b(0x76)+a1_0x45e80b(0x140)+'rking\x20dire'+'ctory)'),'zipFileName':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x10e)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0xf0)+a1_0x45e80b(0x1d7)+a1_0x45e80b(0x165)+a1_0x45e80b(0xa4)+a1_0x45e80b(0x95)+a1_0x45e80b(0x137)+a1_0x45e80b(0xd4)+a1_0x45e80b(0x11f))}},async({folderPath:_0x4991eb,zipFileName:_0x88a7b8})=>{const _0x24fa3d=a1_0x45e80b;try{if(!_0x4991eb||_0x4991eb[_0x24fa3d(0x1d0)]()[_0x24fa3d(0x157)]===0x0){const _0x5c2127={};_0x5c2127['type']=_0x24fa3d(0x12c),_0x5c2127[_0x24fa3d(0x12c)]=_0x24fa3d(0x160)+_0x24fa3d(0x20e)+'ided.';const _0xecc7cb={};_0xecc7cb[_0x24fa3d(0x1ff)]=_0x24fa3d(0x160)+_0x24fa3d(0x20e)+_0x24fa3d(0xf1);const _0x552d4c={};return _0x552d4c['content']=[_0x5c2127],_0x552d4c[_0x24fa3d(0xbd)+_0x24fa3d(0xb3)]=_0xecc7cb,_0x552d4c;}logger[_0x24fa3d(0x1c6)](_0x24fa3d(0x12e)+_0x24fa3d(0x158)+_0x24fa3d(0xaf)+_0x24fa3d(0x1b3)+_0x4991eb);const _0x59a344=await analysisService[_0x24fa3d(0x19c)+_0x24fa3d(0x185)](_0x4991eb,_0x88a7b8),_0x142138=_0x24fa3d(0x1a6)+_0x24fa3d(0x19f)+_0x24fa3d(0x94)+_0x24fa3d(0x206)+_0x4991eb+(_0x24fa3d(0x18f)+_0x24fa3d(0x131))+_0x59a344['analysisId']+'\x0aStatus:\x20'+_0x59a344[_0x24fa3d(0x14b)],_0xd3e2f6={};_0xd3e2f6[_0x24fa3d(0x1d1)]=_0x24fa3d(0x12c),_0xd3e2f6['text']=_0x142138;const _0x380c37={};_0x380c37[_0x24fa3d(0x12d)]=_0x59a344['analysisId'],_0x380c37['status']=_0x59a344['status'],_0x380c37[_0x24fa3d(0x7a)]=_0x4991eb;const _0x51df31={};return _0x51df31[_0x24fa3d(0x16e)]=[_0xd3e2f6],_0x51df31[_0x24fa3d(0xbd)+_0x24fa3d(0xb3)]=_0x380c37,_0x51df31;}catch(_0x354212){logger['error']('Folder\x20sec'+_0x24fa3d(0x158)+_0x24fa3d(0x130)+'d:',_0x354212);const _0x9b1bba={};_0x9b1bba[_0x24fa3d(0x1d1)]='text',_0x9b1bba[_0x24fa3d(0x12c)]=_0x24fa3d(0x1a6)+'nalysis\x20re'+'quest\x20fail'+_0x24fa3d(0x17d)+(_0x354212 instanceof Error?_0x354212[_0x24fa3d(0xb7)]:_0x24fa3d(0x10d)+_0x24fa3d(0x14e));const _0x2d2a58={};_0x2d2a58[_0x24fa3d(0x1ff)]=_0x354212 instanceof Error?_0x354212[_0x24fa3d(0xb7)]:_0x24fa3d(0x10d)+_0x24fa3d(0x14e);const _0x4f4f85={};return _0x4f4f85['content']=[_0x9b1bba],_0x4f4f85[_0x24fa3d(0xbd)+'Content']=_0x2d2a58,_0x4f4f85;}}),server['registerTo'+'ol'](a1_0x45e80b(0x190)+a1_0x45e80b(0x209)+'ess',{'title':'Track\x20Anal'+'ysis\x20Progr'+a1_0x45e80b(0x1f6),'description':a1_0x45e80b(0x8c)+a1_0x45e80b(0x1ac)+a1_0x45e80b(0x1e8)+a1_0x45e80b(0xe1)+a1_0x45e80b(0x14f)+a1_0x45e80b(0x13a)+a1_0x45e80b(0x132)+'gress\x20Noti'+a1_0x45e80b(0x103)+'Analysis\x20s'+a1_0x45e80b(0x8b)+a1_0x45e80b(0x7b)+a1_0x45e80b(0x17a)+a1_0x45e80b(0x16b)+a1_0x45e80b(0x123)+'_PROCESS,\x20'+'COMPLETE.\x20'+'Progress\x20i'+'s\x20only\x20pro'+a1_0x45e80b(0x141)+a1_0x45e80b(0x1e2)+a1_0x45e80b(0x113)+'e.','inputSchema':{'analysisId':z[a1_0x45e80b(0x119)]()[a1_0x45e80b(0x1b2)](a1_0x45e80b(0x184)+'D'),'intervalMs':z['number']()[a1_0x45e80b(0x10e)]()['describe']('Status\x20che'+a1_0x45e80b(0x9c)+a1_0x45e80b(0x1ad)+a1_0x45e80b(0x166)+a1_0x45e80b(0x81)+a1_0x45e80b(0xfa))}},async({analysisId:_0x4484f1,intervalMs:intervalMs=0xbb8},_0x3e89fe)=>{const _0x1f0245=a1_0x45e80b,_0x56c280={};_0x56c280['bPszT']=function(_0xc7786e,_0xdd3b74){return _0xc7786e===_0xdd3b74;},_0x56c280['BJXZR']=function(_0x4924ee,_0x200ac2){return _0x4924ee!==_0x200ac2;},_0x56c280['RbZsL']=_0x1f0245(0x172),_0x56c280['CJhlZ']='[FAIL]\x20Ana'+_0x1f0245(0x96)+_0x1f0245(0x11a)+_0x1f0245(0x183)+'rly.';const _0x4810a9=_0x56c280;try{const _0x3a1df5=_0x3e89fe[_0x1f0245(0x17e)]?.[_0x1f0245(0x143)+_0x1f0245(0x12b)];if(!_0x3a1df5){const _0x365507={};_0x365507[_0x1f0245(0x1d1)]='text',_0x365507[_0x1f0245(0x12c)]=_0x1f0245(0xe9)+'oken\x20not\x20p'+_0x1f0245(0xfc)+_0x1f0245(0x1e4)+'must\x20suppo'+_0x1f0245(0x1b6)+_0x1f0245(0x12a)+'.';const _0x1f7a22={};_0x1f7a22[_0x1f0245(0x1ff)]=_0x1f0245(0xe9)+_0x1f0245(0x1bb)+_0x1f0245(0x156);const _0x3703c5={};return _0x3703c5['content']=[_0x365507],_0x3703c5[_0x1f0245(0xbd)+_0x1f0245(0xb3)]=_0x1f7a22,_0x3703c5;}logger[_0x1f0245(0x1c6)](_0x1f0245(0x163)+_0x1f0245(0xea)+_0x1f0245(0x101)+_0x1f0245(0x199)+_0x4484f1);const _0x1e6d65={};_0x1e6d65['id']=_0x1f0245(0x17c),_0x1e6d65[_0x1f0245(0x177)]=_0x1f0245(0x20c)+_0x1f0245(0x15b),_0x1e6d65[_0x1f0245(0x97)+'n']=_0x1f0245(0x135)+_0x1f0245(0x196)+'\x20to\x20start.',_0x1e6d65[_0x1f0245(0x15e)]=null,_0x1e6d65['order']=0x1;const _0x4b0f73={};_0x4b0f73['id']=_0x1f0245(0x1f2),_0x4b0f73[_0x1f0245(0x177)]='Ready',_0x4b0f73[_0x1f0245(0x97)+'n']='Ready\x20to\x20s'+_0x1f0245(0x1f9)+_0x1f0245(0x192),_0x4b0f73[_0x1f0245(0x15e)]=null,_0x4b0f73[_0x1f0245(0xb5)]=0x2;const _0x4255bb={};_0x4255bb['id']=_0x1f0245(0xb1)+'S',_0x4255bb[_0x1f0245(0x97)+'n']=_0x1f0245(0x164)+'sing...',_0x4255bb[_0x1f0245(0x177)]=_0x1f0245(0x164)+'sing',_0x4255bb[_0x1f0245(0x15e)]=null,_0x4255bb[_0x1f0245(0xb5)]=0x3;const _0x2ee308={};_0x2ee308['id']='ANALYSIS',_0x2ee308[_0x1f0245(0x97)+'n']='Analysis\x20i'+_0x1f0245(0x70)+_0x1f0245(0x1f1),_0x2ee308[_0x1f0245(0x177)]=_0x1f0245(0x77),_0x2ee308[_0x1f0245(0x15e)]=0x0,_0x2ee308[_0x1f0245(0xb5)]=0x4;const _0x37a1c8={};_0x37a1c8['id']=_0x1f0245(0x111)+'SS',_0x37a1c8[_0x1f0245(0x97)+'n']=_0x1f0245(0x1e5)+_0x1f0245(0x116),_0x37a1c8['name']='Post-proce'+_0x1f0245(0x118),_0x37a1c8[_0x1f0245(0x15e)]=null,_0x37a1c8[_0x1f0245(0xb5)]=0x5;const _0x2e59d7={};_0x2e59d7['id']=_0x1f0245(0x172),_0x2e59d7[_0x1f0245(0x97)+'n']=_0x1f0245(0xa1)+_0x1f0245(0x169)+_0x1f0245(0x1ed)+'y.',_0x2e59d7[_0x1f0245(0x177)]=_0x1f0245(0xe2),_0x2e59d7[_0x1f0245(0x15e)]=0x64,_0x2e59d7[_0x1f0245(0xb5)]=0x6;const _0x1f284c={};_0x1f284c[_0x1f0245(0x17c)]=_0x1e6d65,_0x1f284c['READY']=_0x4b0f73,_0x1f284c[_0x1f0245(0xb1)+'S']=_0x4255bb,_0x1f284c[_0x1f0245(0x11e)]=_0x2ee308,_0x1f284c['POST_PROCE'+'SS']=_0x37a1c8,_0x1f284c[_0x1f0245(0x172)]=_0x2e59d7;const _0x306390=_0x1f284c;let _0xaf6008=Object[_0x1f0245(0x128)](_0x306390)[_0x1f0245(0x157)],_0x1c5172=null,_0x268e4e=0x0,_0x2b7a41=!![];const _0x41e125=async _0x3f618b=>{const _0x3ed0a8=_0x1f0245;if(!_0x2b7a41)return![];try{return await _0x3e89fe[_0x3ed0a8(0x1b1)+'cation'](_0x3f618b),!![];}catch(_0x157637){if(_0x3ed0a8(0x15c)!==_0x3ed0a8(0x15c))_0x558d83=_0x3ed0a8(0x145)+_0x3ed0a8(0x8d)+'completed.',_0x39a8b0=_0x3ed0a8(0x172);else{const _0x215aa7=_0x157637 instanceof Error?_0x157637[_0x3ed0a8(0xb7)]:_0x3ed0a8(0x10d)+_0x3ed0a8(0x14e);return _0x215aa7['includes'](_0x3ed0a8(0x201)+'ken')||_0x215aa7[_0x3ed0a8(0xad)]('invalid\x20to'+_0x3ed0a8(0x12b))||_0x215aa7[_0x3ed0a8(0xad)](_0x3ed0a8(0x129)+'ken')||_0x215aa7[_0x3ed0a8(0x205)+'e']()[_0x3ed0a8(0xad)](_0x3ed0a8(0x7e))?_0x3ed0a8(0x16d)===_0x3ed0a8(0xc6)?_0x30cc90[_0x3ed0a8(0x1e1)](_0x3ed0a8(0x9a)+'otificatio'+'n\x20failed\x20('+_0x3ed0a8(0x151)+_0x3ed0a8(0x125)+_0x181138):(_0x2b7a41=![],logger[_0x3ed0a8(0x1e1)]('Progress\x20t'+_0x3ed0a8(0x117)+'\x20longer\x20va'+_0x3ed0a8(0xbc)+_0x3ed0a8(0x179)+_0x3ed0a8(0x20d)+_0x3ed0a8(0x189)+_0x215aa7)):logger[_0x3ed0a8(0x1e1)]('Progress\x20n'+_0x3ed0a8(0x121)+_0x3ed0a8(0x1dc)+'will\x20retry'+'):\x20'+_0x215aa7),![];}}};while(!![]){try{const _0x7991d=await analysisService[_0x1f0245(0x13f)+_0x1f0245(0x17b)](_0x4484f1),_0x48e3f0=String(_0x7991d[_0x1f0245(0x14b)])[_0x1f0245(0x1b9)+'e'](),_0x2c8031=String(_0x7991d['status'])['toUpperCas'+'e'](),_0x39ce46=_0x4810a9[_0x1f0245(0x7c)](_0x2c8031,_0x1f0245(0x172))&&_0x7991d[_0x1f0245(0x92)]?String(_0x7991d[_0x1f0245(0x92)])[_0x1f0245(0x1b9)+'e']():_0x48e3f0;if(_0x4810a9['BJXZR'](_0x1c5172,_0x48e3f0)){_0x1c5172=_0x48e3f0;if(_0x2c8031===_0x1f0245(0x172)||_0x48e3f0===_0x1f0245(0x181)||_0x48e3f0===_0x1f0245(0x126)){let _0x4c9225,_0xfb9df7;if(_0x2c8031===_0x4810a9[_0x1f0245(0x176)]){const _0x3655e8=_0x7991d[_0x1f0245(0x92)]?String(_0x7991d['result'])[_0x1f0245(0x1b9)+'e']():undefined;_0xfb9df7=_0x3655e8||_0x1f0245(0x172);if(_0x3655e8==='SUCCESS')_0x4c9225='[SUCCESS]\x20'+_0x1f0245(0xa1)+_0x1f0245(0x169)+_0x1f0245(0x1ed)+'y.';else{if(_0x3655e8===_0x1f0245(0x181))_0x4c9225=_0x4810a9['CJhlZ'];else _0x3655e8===_0x1f0245(0x1f3)?_0x4c9225=_0x1f0245(0xd9)+_0x1f0245(0x14a)+'stopped\x20by'+'\x20request.':(_0x4c9225=_0x1f0245(0x145)+'\x20Analysis\x20'+_0x1f0245(0x13b),_0xfb9df7=_0x1f0245(0x172));}}else _0x4c9225='['+_0x48e3f0+(_0x1f0245(0xec)+_0x1f0245(0xc3)),_0xfb9df7=_0x48e3f0;const _0x1bbaac={'method':_0x1f0245(0x1ab)+_0x1f0245(0xa0)+'ss','params':{'progressToken':typeof _0x3a1df5==='string'?_0x3a1df5:String(_0x3a1df5),'progress':_0x48e3f0==='COMPLETE'?0x64:0x0,'message':_0x4c9225,'total':0x64}};await _0x41e125(_0x1bbaac);_0x2c8031===_0x1f0245(0x172)?logger[_0x1f0245(0x1c6)](_0x1f0245(0xff)+_0x1f0245(0xde)+_0x1f0245(0xf9)+'\x20'+_0xfb9df7):logger[_0x1f0245(0x1c6)](_0x1f0245(0x19b)+_0x1f0245(0x127)+_0x1f0245(0x8f)+_0xfb9df7);const _0x1931f5={};_0x1931f5[_0x1f0245(0x1d1)]=_0x1f0245(0x12c),_0x1931f5[_0x1f0245(0x12c)]=_0x1f0245(0xa1)+_0x1f0245(0xae)+'Analysis\x20I'+_0x1f0245(0x1af)+_0x4484f1+(_0x1f0245(0xb9)+_0x1f0245(0x15f))+_0xfb9df7;const _0x283605={};_0x283605[_0x1f0245(0x12d)]=_0x4484f1,_0x283605['status']=_0xfb9df7,_0x283605[_0x1f0245(0x92)]=_0x7991d[_0x1f0245(0x92)],_0x283605[_0x1f0245(0x8e)]=!![];const _0x30a3f7={};return _0x30a3f7[_0x1f0245(0x16e)]=[_0x1931f5],_0x30a3f7['structured'+_0x1f0245(0xb3)]=_0x283605,_0x30a3f7;}const _0x3bf1ce=_0x306390[_0x48e3f0];if(_0x3bf1ce){const _0x610612={};_0x610612[_0x1f0245(0x1a4)]=0x64;const _0x52db02={'method':_0x1f0245(0x1ab)+'ons/progre'+'ss','params':{'progressToken':typeof _0x3a1df5===_0x1f0245(0x119)?_0x3a1df5:String(_0x3a1df5),'progress':_0x4810a9['BJXZR'](_0x3bf1ce['progress'],null)?_0x3bf1ce[_0x1f0245(0x15e)]:_0x48e3f0===_0x1f0245(0x11e)?_0x268e4e:_0x3bf1ce['order'],'message':'['+_0x3bf1ce['id']+']\x20'+_0x3bf1ce[_0x1f0245(0x97)+'n'],'total':_0xaf6008,..._0x3bf1ce[_0x1f0245(0x15e)]!==null&&_0x48e3f0===_0x1f0245(0x11e)&&_0x610612}};await _0x41e125(_0x52db02),_0x2b7a41&&logger['info']('Analysis\x20s'+_0x1f0245(0x1aa)+_0x1f0245(0xb0)+_0x3bf1ce['id']+'\x20('+_0x3bf1ce[_0x1f0245(0x177)]+')');}else{const _0x1069eb={'method':'notificati'+_0x1f0245(0xa0)+'ss','params':{'progressToken':typeof _0x3a1df5===_0x1f0245(0x119)?_0x3a1df5:String(_0x3a1df5),'progress':0x1,'total':0x1,'message':'['+_0x48e3f0+(_0x1f0245(0xec)+_0x1f0245(0x78)+'ss...')}};await _0x41e125(_0x1069eb);}}else{if(_0x48e3f0===_0x1f0245(0x11e)){if(_0x7991d[_0x1f0245(0x15e)]!==undefined&&_0x7991d[_0x1f0245(0x15e)]!==null){_0x268e4e=_0x7991d['progress'];const _0x3e96e5=_0x306390[_0x48e3f0],_0x27ad96={'method':_0x1f0245(0x1ab)+_0x1f0245(0xa0)+'ss','params':{'progressToken':typeof _0x3a1df5===_0x1f0245(0x119)?_0x3a1df5:String(_0x3a1df5),'progress':_0x3e96e5[_0x1f0245(0xb5)],'total':_0xaf6008,'message':_0x1f0245(0x83)+'\x20Analysis\x20'+_0x1f0245(0x74)+'s:\x20'+_0x268e4e+'%'}};await _0x41e125(_0x27ad96);}}}!_0x2b7a41&&logger[_0x1f0245(0x1c6)](_0x1f0245(0x102)+'oken\x20is\x20in'+_0x1f0245(0x87)+_0x1f0245(0x170)+'atus\x20check'+_0x1f0245(0xbe)+_0x1f0245(0x1ab)+'ons'),await new Promise(_0x41f393=>setTimeout(_0x41f393,intervalMs));}catch(_0x567bfc){logger[_0x1f0245(0x1ff)](_0x1f0245(0xf7)+_0x1f0245(0xa2)+_0x1f0245(0x186)+'\x20('+_0x4484f1+'):',_0x567bfc),await new Promise(_0x132fe9=>setTimeout(_0x132fe9,intervalMs));}}}catch(_0xc57a9c){logger[_0x1f0245(0x1ff)]('Analysis\x20p'+'rogress\x20tr'+_0x1f0245(0x9f)+_0x1f0245(0xb6),_0xc57a9c);const _0x25c98e={};_0x25c98e[_0x1f0245(0x1d1)]=_0x1f0245(0x12c),_0x25c98e['text']=_0x1f0245(0x163)+_0x1f0245(0xea)+_0x1f0245(0x9f)+_0x1f0245(0xbf)+(_0xc57a9c instanceof Error?_0xc57a9c['message']:'Unknown\x20er'+_0x1f0245(0x14e));const _0x1bf08b={};_0x1bf08b[_0x1f0245(0x1ff)]=_0xc57a9c instanceof Error?_0xc57a9c[_0x1f0245(0xb7)]:_0x1f0245(0x10d)+'ror';const _0x1cd36a={};return _0x1cd36a[_0x1f0245(0x16e)]=[_0x25c98e],_0x1cd36a[_0x1f0245(0xbd)+_0x1f0245(0xb3)]=_0x1bf08b,_0x1cd36a[_0x1f0245(0x1ef)]=!![],_0x1cd36a;}});const transport=new StdioServerTransport();logger['info'](a1_0x45e80b(0x1c8)+'\x20code\x20gene'+a1_0x45e80b(0x9b)+a1_0x45e80b(0x1c7)+'d');function a1_0x3016(_0x2ec8dc,_0x331dde){_0x2ec8dc=_0x2ec8dc-0x70;const _0x574cf7=a1_0x1d3a();let _0x46847c=_0x574cf7[_0x2ec8dc];return _0x46847c;}try{const serverFileDir=a1_0xf55353['dirname'](fileURLToPath(import.meta.url)),projectRoot=a1_0xf55353[a1_0x45e80b(0xe5)](serverFileDir,'..'),logsDir=a1_0xf55353['resolve'](projectRoot,a1_0x45e80b(0x1cf));if(!a1_0x5bb561[a1_0x45e80b(0x75)](logsDir)){const a1_0x3b2816={};a1_0x3b2816[a1_0x45e80b(0x1c2)]=!![],a1_0x5bb561['mkdirSync'](logsDir,a1_0x3b2816);}const combinedPath=a1_0xf55353[a1_0x45e80b(0x138)](logsDir,a1_0x45e80b(0xba)+'og'),errorPath=a1_0xf55353[a1_0x45e80b(0x138)](logsDir,'error.log');logger[a1_0x45e80b(0x1c6)]('Log\x20file\x20l'+a1_0x45e80b(0x14c)+a1_0x45e80b(0x20a)+'\x20'+combinedPath+a1_0x45e80b(0x122)+errorPath);}catch(a1_0x43d94b){logger['warn'](a1_0x45e80b(0x1a0)+a1_0x45e80b(0xee)+'ng/creatin'+a1_0x45e80b(0x1a2)+'ctory:',a1_0x43d94b);}await server['connect'](transport);
2
+ const a1_0xd5bbd1=a1_0x2f45;(function(_0x56a44d,_0x346fa4){const _0xda79a8=a1_0x2f45,_0x2bb337=_0x56a44d();while(!![]){try{const _0x261f3e=-parseInt(_0xda79a8(0x533))/0x1*(parseInt(_0xda79a8(0x42c))/0x2)+parseInt(_0xda79a8(0x445))/0x3*(-parseInt(_0xda79a8(0x6e5))/0x4)+-parseInt(_0xda79a8(0x3e5))/0x5*(parseInt(_0xda79a8(0x329))/0x6)+parseInt(_0xda79a8(0x586))/0x7*(-parseInt(_0xda79a8(0x2e0))/0x8)+-parseInt(_0xda79a8(0x3cc))/0x9+-parseInt(_0xda79a8(0x655))/0xa*(parseInt(_0xda79a8(0x3d2))/0xb)+parseInt(_0xda79a8(0x5f7))/0xc*(parseInt(_0xda79a8(0x23a))/0xd);if(_0x261f3e===_0x346fa4)break;else _0x2bb337['push'](_0x2bb337['shift']());}catch(_0xce59a1){_0x2bb337['push'](_0x2bb337['shift']());}}}(a1_0x560c,0x8c73b));function a1_0x2f45(_0x5aa9aa,_0x196716){_0x5aa9aa=_0x5aa9aa-0x1de;const _0x2aa097=a1_0x560c();let _0x3b1a01=_0x2aa097[_0x5aa9aa];return _0x3b1a01;}const a1_0x4840b5=(function(){let _0x5c7634=!![];return function(_0x533a39,_0x3448b7){const _0x3e3a6b=_0x5c7634?function(){const _0x382bf6=a1_0x2f45;if(_0x3448b7){const _0x3e1083=_0x3448b7[_0x382bf6(0x610)](_0x533a39,arguments);return _0x3448b7=null,_0x3e1083;}}:function(){};return _0x5c7634=![],_0x3e3a6b;};}()),a1_0x3b1a01=a1_0x4840b5(this,function(){const _0x323b01=a1_0x2f45,_0xcb48ef={};_0xcb48ef[_0x323b01(0x585)]=_0x323b01(0x2f2)+'+$';const _0x3cf52d=_0xcb48ef;return a1_0x3b1a01[_0x323b01(0x55c)]()[_0x323b01(0x290)]('(((.+)+)+)'+'+$')[_0x323b01(0x55c)]()[_0x323b01(0x27b)+'r'](a1_0x3b1a01)[_0x323b01(0x290)](_0x3cf52d['qZDvy']);});a1_0x3b1a01();import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{z}from'zod';import{AnalysisService}from'./services/analysis.service.js';import{logger}from'./utils/logger.js';import a1_0x424d0b from'path';import a1_0xb25a37 from'fs';import{fileURLToPath}from'url';function a1_0x560c(){const _0x2e6d67=['#\x20일반적인\x20워크플','Progress\x20t','L\x22:\x20\x22https','도\x20기본\x20분석\x20기능','값**:\x0a-\x20`an','ysis_progr','_analysis_','ration\x20ser','s`로\x20결과\x20확인\x0a','SPARROW_AP','\x20수신\x0a\x0a###\x204','array','으로\x20처리됩니다.\x0a','\x20\x20-\x20진행률:\x200','version','sis_progre','파싱]\x20→\x20[LLM','\x0a-\x20Result:','`:\x20전처리\x20중\x0a-','ocations\x20-','result','sparrowai/','Upload\x20a\x20Z','\x20Results\x0a\x0a','\x0a\x0a##\x20Analy','ity','l\x20filename','lt`\x20필드를\x20확인','전한\x20코드\x20(Oll','r\x20analysis','IP\x20file\x20to','일**\x20(<\x201MB','code\x0a\x0a분석\x20결','de`\x20실행\x0a\x0a##','*:\x20SAST\x20보안','is_status','Analysis\x20I','ff\x0a\x0a**참고**','ZIP\x20file\x20p','Initializa','\x0a여러\x20파일을\x20한\x20','TAmBd','황을\x20추적합니다.\x0a','I로부터\x20`anal','overview','://localho','Name\x20of\x20th','\x20다음\x20단계를\x20거칩','YSIS,\x20POST','sId`를\x20가지며,','ysis\x20statu',':\x20파일\x20이름\x0a\x0a*','\x20Security\x20','을\x20실제\x20Ollam','여야\x20함\x0a-\x20`re','설정의\x20`\x22env\x22','mbined.log','모니터링합니다.\x0a\x0a',']\x0a```\x0a\x0a##\x20','t/server.j','\x20string):\x20','이\x20있는지\x20확인\x0a-','**S3\x20스토리지*','k_analysis','인\x0a-\x20Cursor','져옵니다.\x0a\x0a**매','te_secure_','tatus\x20chec','[COMPLETE]','cureCodeFr','oken\x20not\x20p','`은\x20필수입니다.\x0a','\x20request.','to\x20retriev','I\x20생성\x20분석\x20브리','코드를\x20생성합니다.','List\x20of\x20fi','turn\x20the\x20r','RL\x22:\x20\x22http','*\x20(전처리)\x0a\x20\x20','D\x0a-\x20`fileC','EL\x22:\x20\x22gpt-','so\x20support','registerTo','\x20status:\x20','getAnalysi','\x20하나를\x20사용해보기','한\x20코드\x20생성)을\x20','ate\x20secure',':\x0a1.\x20분석\x20결과','연결\x20해제로\x20표시됩','fing.','on\x20request','ipFilePath','청을\x20전송합니다\x0a2','the\x20entire','스에\x20가입\x0a2.\x20대','ded','es\x20origina','lama가\x20없어도\x20','기본\x20분석\x20기능은\x20','all','mand\x20API에\x20','E를\x20완전히\x20재시작','AI\x20기반\x20브리핑*','용\x20예시:**\x0a``','1500uhqLmA','ss`를\x20사용하면\x20','용합니다:\x0a-\x20**','택사항)\x0a분석\x20ID','다음\x20결과\x20중\x20하나','rgs\x22:\x20[\x22C:','`analysisI','\x0a```\x0a\x20\x20\x20\x20\x20','_security\x0a','Progress\x20T','orking\x20dir','되고\x20초기화\x20중\x0a\x20','%\x0a\x0a2.\x20**RE','-30분\x20이상\x0a\x0a*','en\x22,\x0a\x20\x20\x20\x20\x20','\x20Ollama는\x20선','#\x203.\x20진행\x20상황','비교하여\x20diff를','깅\x0a\x0a**참고**:','\x20진행\x20중\x0a-\x20`P','cp\x22:\x20{\x0a\x20\x20\x20','ureCodeBri','\x20있습니다.\x0a\x0a##','**\x0a-\x20`fold','\x20`mcp.json','apply','File\x20name','이어야\x20함\x0a-\x20`g','견된\x20취약점\x20배열\x0a','ath\x20not\x20pr','fOgNn','section','\x0a\x0a##\x20파일\x20크기','urity\x20anal','\x2090%\x0a\x0a6.\x20*','atus`:\x20현재\x20','개변수:**\x0a-\x20`','bilities\x20F','00%\x20(API에서','CJJxb','을\x20실제\x20사용자\x20이','l\x20in\x20milli','기준\x20상대\x20경로)\x0a','Ollama\x20기능(','\x20character','\x20file\x20path','username>\x5c','다.\x0a-\x20**타임아','S`:\x20후처리\x20중\x0a','파일\x20경로\x0a6.\x20(','됨\x0a\x0a**중요**:','Check\x20the\x20','**반환값:**\x0a-','.\x20get_anal','AMA_BASE_U','descriptio','은\x20다음\x20상태를\x20거','세요:\x0a[파일\x20내용','uested:\x20','##\x201.\x20anal','로\x20완료됨\x0a-\x20`F','ompleted\x20s','\x0a\x0a**도구**:\x20','l/lib/node','secureCode','der','1.0.0','\x20The\x20fileP','성화하려면\x20MCP\x20','\x0a\x0a---\x0a\x0a','\x20\x20\x20\x20\x20\x20\x20\x20\x22O','\x0a```\x0a\x0a##\x20S','alysis_res','ompleted.\x0a','체\x20키\x20(업로드된\x20','#\x20전체\x20분석\x20프로','rsor\x20재시작\x0a\x0a','분석\x20브리핑\x20생성\x20','lities`:\x20발','\x20정상적으로\x20작동합','미설정\x20또는\x20실패\x20',':\x20분석\x20실패,\x20결','*COMPLETE*','quest\x20fail','ZIP\x20file\x20s','\x20결과\x20제약\x0a\x0a##','Number`:\x20취','the\x20guide\x20','\x20failed)\x0a-','한\x20코드\x20생성\x20(선','configurat','\x203000)\x0a\x0a**','을\x20S3\x20스토리지에','Folder\x20Sec','42960lWmFLk','파일\x20형식\x0a\x0a현재\x20','태\x20추적**:\x20`t','e\x20generati','\x20file,\x20and','get\x20guide:','\x201:\x20단일\x20파일\x20','YQoBA','`npm\x20root\x20','ama\x20사용\x20시,\x20','FromPaths','PI\x20서비스\x20상태\x20','a**:\x20LLM\x20통','워크\x20연결\x20확인\x0a-','luding\x20vul','s\x20started.','\x20SAST\x20분석이\x20','`\x20모델이\x20설치되어','ess','\x20로컬로\x20설치한\x20경','gress\x20Noti','*:\x20파일\x20업로드/','없으면\x20원본\x20코드\x20','eSecurity','s\x20only\x20pro','\x20\x20\x20\x22sparro','pm\x5c\x5cnode_m','*:\x0a-\x20Ollam','\x20취약점\x20유형\x20식별','E_URL`\x20환경\x20','d\x22:\x20\x22node\x22','pt-oss:20b','Pre-proces','\x20받습니다\x0a2.\x20파','\x0a-\x20`PRE_PR','름\x20다이어그램\x0a\x0a`','d`:\x20분석의\x20고유',':\x20시작\x20준비\x20완료','ested:\x20','코드와\x20취약점\x20정보','\x20추적\x0a`track','Path\x20to\x20th','_API_KEY\x22`','king\x20analy','\x20(선택사항)\x0a\x0a*','sis\x20status','증상**:\x20LLM\x20','\x20of\x20','\x0a\x20\x20\x22mcpSer','\x0aFolder:\x20','s\x20single\x20f','\x20파일**:\x20\x0a\x20\x20','으로\x20추적할\x20수\x20있','Progress\x20n','constraint','FAIL','할\x20폴더의\x20경로\x0a-','get\x20Sparro','\x0a-\x20**대규모\x20파','능은\x20**선택적으로','브리핑\x20생성에\x20실패','\x20있습니다.','is\x20failed:','도록\x20지정할\x20수\x20있','):\x20약\x201-3분\x0a','rted:\x20','th.','D:\x20','tp://local','text','*\x0a-\x20`INIT`','NhbJZ',',\x20`FAIL`,\x20','otificatio','3단계:\x20분석\x20진행','\x20취약점이\x20발견된\x20','*ZIP\x20파일**:','Y\x22:\x20\x22your-','\x0a\x0a**프로세스**','한\x20버전을\x20생성할\x20','*:\x20분석\x20요청이\x20','대한\x20설명\x0a-\x20`d','rly.','ZIP\x20File\x20S','vers\x22:\x20{\x0a\x20','\x0a\x0a###\x203.\x20S','NALYSIS**\x20','progress','analysisBr','ysis\x20reque','g\x20log\x20dire','\x20\x20\x20-\x20`line','.\x20MCP\x20도구\x20중','n\x0a{\x0a\x20\x20\x22mcp','거나\x20Ollama\x20','의\x20경우\x20분석\x20시간','\x20메모리\x20사용량이\x20','택사항)\x0a\x0a다음\x20기','lysisId`\x20(','분석의\x20고유\x20식별자','변수가\x20올바르게\x20설','Generate\x20s','택사항입니다.\x20Ol','Y,\x20PRE_PRO','경우\x20메모리\x20사용량','ided.',':\x20분석\x20중인\x20파일','zipFilePat','정리\x20및\x20포맷팅\x0a\x20','READY','은\x20정상적으로\x20작동','E_PROCESS*','Ready','\x20설정합니다.\x20서버','D\x0a-\x20`inter','e.\x20If\x20not\x20','일**\x20(10-10','파일이나\x20폴더를\x20별','eckerKey`:','\x0a\x0a##\x20Code\x20','`vulnerabi','urity\x20Anal','**위치**:\x20`~','0%\x0a\x0a4.\x20**A','`diff`:\x20변경','로\x20압축합니다\x20(단','Final\x20anal','**:\x20`get_a','ctory)','드/다운로드\x20시간이','로우\x0a\x0a##\x201.\x20','ailed\x20with','P\x20guide\x20re','token','\x0a-\x20Go\x0a-\x20기타','-\x20**MCP\x20SD','확장자\x20필터링**:','vulnerabil','sor\x5cmcp.js','\x20`ANALYSIS','추가하세요.','Ready\x20to\x20s','는\x20설명\x20제공\x0a-\x20','g):\x20`analy','16Poqpua','valid,\x20con','File\x20secur','message','\x20필요합니다.\x0a-\x20','oss:20b\x22,\x0a',',\x20원본\x20코드가\x20그','FAILED','는\x20`failed`','sResults','_URL\x22:\x20\x22ht','Analysis','의\x20이름\x0a\x0a**반환','\x20있는지\x20확인\x0a-\x20','정상\x20작동합니다.','get_sparro','ty`,\x20`anal','\x20request\x20t','s\x22:\x20{\x0a\x20\x20\x20\x20','ple\x20file\x20p','\x22sparrow-m','과를\x20기반으로\x20안전','찾으세요:\x0a\x0a```','y\x20Analysis','\x0a##\x205.\x20ana','-\x20`status`','n\x20progress','nerabiliti','리적\x20상태\x20(`co','ESS`인\x20경우에만','\x20취약점을\x20분석해주','능)\x0a-\x20`POST','aths`\x20(str','\x20안전한\x20코드\x20생성','**파일\x20보안\x20분석','ss\x20notific','me\x20if\x20not\x20','다.\x0a\x0a##\x20동시\x20','\x0a\x20\x20\x20\x20\x20\x20','(HIGH,\x20MED','ated\x20(opti','lama\x20없이도\x20기','Analysis\x20s','sults`\x0a\x0a**','\x20진행\x20상황\x20모니터','ecurity\x20an','니다:\x0a\x0a###\x201','*:\x20분석이\x20너무\x20','\x20`progress','alysis.\x20Al','flow','다.\x0a\x0a**매개변수','*:\x20분석\x20결과를\x20','CP\x20진행\x20알림을\x20','를\x20제공합니다:\x0a\x0a','약점을\x20자동으로\x20분','어도\x20기본\x20분석\x20기',':\x20안전한\x20코드에\x20','wing\x20','\x20단계**:\x0a\x0a1.','결과\x20ZIP\x20파일을','CESS,\x20ANAL','D\x20from\x20the','ons','rrowai/spa','generate\x20s','emand\x20API*','\x20주요\x20기능\x0a\x0a-\x20','올바르게\x20설정되었는','ile\x20analys','older\x20into','시보드에서\x20API\x20',':\x20초기화\x0a-\x20`R','folderPath','\x20the\x20file\x20','를\x20사용하여\x20분석을','\x20\x20\x20↓\x0a[결과\x20반','`:\x20모든\x20로그\x0a\x20','-\x20`logs/co','`\x0a이\x20파일의\x20보안','ecurity\x0a\x0a단','ver.js\x22],\x0a','Content\x20of','resolve','WaNMd','total','Request\x20se','_PROCESS,\x20','태\x20모니터링**:\x20','MCP\x20설정을\x20업데','sStatus','\x20분석\x20요청이\x20수신','**:\x20분석\x20브리핑','\x0a\x0a##\x206.\x20검토','\x20동시에\x20분석하는\x20','Folder\x20sec','dirname','\x0a3.\x20압축된\x20파일','계\x0a\x0a5.\x20**PO','[STOP]\x20Ana','IT`:\x20초기화\x20중','PI\x20키로\x20교체하세','이\x20안전한\x20코드에\x20','is.','합니다:\x0a\x20\x20\x20-\x20','e-generato','ons/progre','\x20Context\x20P','led:','Analysis\x20c','시간\x20추적\x0a-\x20**','분석\x20제약\x0a\x0a-\x20동','s\x20tracking','석\x20준비가\x20완료되고','bvFCY','\x22java\x22,\x20\x22g','\x0a-\x20**중요**:','적\x20number):','Compress\x20a','erPath`\x20(s','ide\x20or\x20a\x20s','ecurity\x20An','analysisId','시\x20동작**:\x0a-\x20','ure_code`\x0a','로그\x20파일\x20모두에\x20','설정\x20시\x20요구사항*','tools','시에\x20여러\x20분석을\x20','ON\x20파일들을\x20파싱','arrow\x20OnDe','우:\x0a\x0a```jso','\x5cAppData\x5c\x5c','to\x20analyze','led:\x20','도구**:\x20`get','져오기\x0a`get_a','content','488046yIZHwP','esult`\x20필드에','status`,\x20`','yze_file_s','사용\x20시에만\x20제공)','의\x20상세\x20결과를\x20가','로\x20등)\x0a3.\x20AP','Multi-File','_file_secu','OCESS`:\x20전처','eBNAj','BASE_URL\x22`','ysis\x20faile','\x20Ollama가\x20없',',\x0a\x20\x20\x20\x20\x20\x20\x22a','#\x20MCP\x20도구\x20사','zipFileNam','안전한\x20코드\x20간의\x20','ecure\x20Code','ssing','본\x20보안\x20분석\x20기능',']\x0a\x20\x20\x20\x20↓\x0a[안','{\x0a\x20\x20\x20\x20\x22spa','\x0a**분석\x20단계:*','*\x0a-\x20`fileC','ty\x20analysi',':\x20여러\x20파일,\x20폴','\x20`generate','l\x20file\x20con','은\x20경우,\x20원본\x20코','sing','ress\x20them\x20','\x20\x20\x20\x20\x20\x20\x22OLL','-\x20`zipFile','rking\x20dire','mkdirSync','sparrowclo','\x20시작\x20대기\x20중\x0a\x20','quested:\x20','\x20`SUCCESS`','\x20based\x20on\x20','\x20\x20\x20\x20\x22args\x22','a\x20file\x20by\x20','\x0aZIP\x20File:',')\x0a\x0a##\x20전체\x20흐','\x20→\x20INIT\x20→\x20','##\x204.\x20분석\x20타','핑)를\x20검색합니다.','sBrief`:\x20A','I_KEY`가\x20올바','Servers\x22:\x20','\x20version','\x20확인합니다.\x0a\x0a*','\x20반환\x0a-\x20안전한\x20','lts\x0a\x0a##\x20Se','\x20`analysis','\x20후처리\x20중\x0a-\x20`','69:11434`)','\x20반환합니다\x0a\x0a**','#\x20분석\x20흐름\x0a\x0a#','확인\x0a-\x20더\x20작은\x20','\x20검토합니다.\x0a\x0a#','선택:\x20안전한\x20코드','elative\x20to','ing):\x20분석\x20I','constructo','\x0aStatus:\x20','yze_folder','요청할\x20수\x20있지만,','ng/creatin','황을\x20모니터링할\x20수','ity\x20Analys','.\x0a\x0a**매개변수:','``\x0a[파일/폴더/','_meta','ODE_ENV\x22:\x20','\x20개요\x0a\x0a스패로우\x20','cure\x20Code\x0a','축되어\x20분석됩니다.','는\x20다음\x20언어를\x20지','E_PROCESS\x20','택사항)\x0a-\x20**S','\x20생성합니다\x0a6.\x20','sis\x20and\x20re','습니다.\x0a\x0a##\x20메','Code\x20Gener','search','\x0a\x0a**반환값**:','석할\x20파일\x20경로\x20목','Generate\x20S','대한\x20브리핑을\x20생성','ss\x0a\x0a실시간\x20알림','다\x0a2.\x20`resu','error.log','\x0a-\x20`analys','AIL`:\x20분석이\x20','name','`과\x20`\x22OLLAM','\x20사용할\x20수\x20있습니','ng\x0a','analyzeFol','nt\x22\x0a\x20\x20\x20\x20\x20\x20','Analysis\x20p','으로\x20분석\x20진행\x20상','\x20설정에서\x20MCP\x20','\x20상태\x20추적\x0a\x0a**','이\x20오래\x20걸리는\x20단','\x20100MB\x0a-\x20*','uccessfull','차이점\x20(unifi','*참고사항**:\x0a-','추적을\x20위한\x20고유\x20','Periodical','is\x20Results','API\x20오류로\x20실패','returns\x20th','-\x20Ollama가\x20','\x0a-\x20Status:','\x20키에\x20충분한\x20권한','cp.json`\x20파','tus:\x20','INIT','\x20있습니다.\x0a3.\x20','STOP','p/dist/ser','\x20분석\x0a-\x20**Wi','tus`:\x20초기\x20상','lysis\x20fail','록\x20(절대\x20경로\x20또','sis\x20Briefi','단계:\x20파일\x20업로드','va\x20(주요\x20지원)','ANALYSIS','3.\x20`get_an','\x0a\x0a-\x20**콘솔**','CodeBrief`','diff','ief','참고**:\x20큰\x20파일','달\x0a2.\x20`trac','ssage`:\x20상태','f\x20an\x20analy','과\x20없음\x0a\x20\x20\x20-\x20','핑\x20(Ollama\x20','curity`에서\x20','t`:\x20실제\x20결과\x20','컬\x20설치의\x20경우\x0a\x0a','원합니다:\x0a-\x20Ja','\x20a\x20ZIP\x20fil','IUM,\x20LOW)\x0a','keys','warn','통해\x20전송되는\x20진행','ror','*\x20(완료)\x0a\x20\x20\x20','tatus\x20upda','.\x20요청에는\x20다음\x20','e\x20folder\x20t','OnDemand\x20A','준비\x20완료\x0a-\x20`P','est\x20securi','\x204.\x20genera','o\x20analyze.','or\x20IDE\x20설정\x0a','트워크\x20및\x20API\x20','tinuing\x20st','128VgqDRt','\x20from\x20a\x20co','ADY**\x20(준비\x20','키\x20획득\x0a3.\x20MC','\x0a\x0a###\x20시나리오','오래\x20걸리거나\x20타임','필요,\x20없으면\x20원본','w\x20MCP\x20tool','\x0a\x0a**매개변수:*','해결\x20방법**:\x0a-','값:**\x0a-\x20`an','nerate_sec','demand-tok','recursive','aths\x20array','ARROW_API_','리핑을\x20생성합니다\x20','parrowai\x5c\x5c','(((.+)+)+)','esults.\x20Re','sparrow-mc','정확한\x20경로를\x20얻으','Folder\x20pat','curity\x0a\x0a전체','한\x20코드를\x20생성합니','Analysis\x20S','2.\x20get_ana','progress\x20o','DuGdr',':\x20분석이\x20성공적으','acking\x20fai','nd\x20origina','provided,\x20','\x20브리핑\x20생성]\x0a\x20','`STOP`:\x20분석','\x20생성]\x20→\x20[LL','ction.','0MB\x0a\x0a###\x202','LYSIS\x20stag','de\x22,\x0a\x20\x20\x20\x20\x20','\x0a\x0a##\x20Disco','반환)\x0a-\x20`sec','Failed\x20to\x20','sing...','generate_s','\x20요청합니다.\x0a\x0a#','in\x20progres','Progress\x20i','vered\x20Vuln','sis.','e`\x20(선택적\x20st','\x20\x20\x20\x22SPARRO','ZIP]\x0a\x20\x20\x20\x20↓','\x0a-\x20Vulnera','INIT,\x20READ','tart\x20analy','rack_analy','working\x20di','fileConten','File\x20paths','seconds\x20(d','\x20방법**:\x0a-\x20`','\x20다운로드\x20가능\x0a\x20','단계:\x20분석\x20요청\x0a','일\x20파일의\x20보안\x20취','\x0a-\x20**진행\x20상황','\x20중지,\x20결과\x20없음','\x20request\x20s',':\x20네트워크\x20연결이','d.sparrowc','he\x20full\x20gu','압축\x20해제하고\x20JS','\x20Protocol\x20','6YvInVu','ess`\x0a\x0a**분석',':\x20Ollama가\x20','o\x20analyze\x20','tring):\x20안전','atus\x20check',':\x0a1.\x20파일\x20내용','석하고\x20안전한\x20코드','M\x20코드\x20생성]\x20→','troublesho','omAnalysis','o\x20current\x20','\x0a분석이\x20완료되면\x20','`./node_mo','alysis\x20fai','100)\x0a-\x20`me','\x0a-\x20`secure','이\x20더\x20오래\x20걸릴\x20','증가할\x20수\x20있습니다',']\x20Analysis','string):\x20생','/ondemand.','크\x20연결\x20확인\x0a\x0a#','ID:\x20','연결에\x20대한\x20오류가','...','rrow-mcp/d','ursor\x20IDE에','-g`를\x20사용하여\x20','%\x0a\x0a3.\x20**PR','\x0a**매개변수:**','isId`:\x20분석\x20','\x0a-\x20분석이\x20`CO','analysis\x20f','\x20→\x20POST_PR','사용하려면\x20설정하세','견된\x20취약점\x20목록\x0a','습니다.\x0a\x0a##\x20네','p://localh','):\x20약\x203-10분','료\x20시\x20최종\x20상태\x0a','한\x20코드\x20자동\x20생성','zip_securi','\x20업로드합니다\x0a4.','가\x20자동으로\x20연결되','ion','\x20\x20\x20-\x20가장\x20시간','\x0aAnalysis\x20','API\x20설정\x0a\x0a1.','P\x20설정에서\x20`SP','_modules/@','_URL`이\x20올바른','nalysis\x20ha','\x22:\x20{\x0a\x20\x20\x20\x20\x20','us\x0a\x0a진행\x20중인\x20','alysis_pro','라\x20각\x20파일에\x20대해','\x20원본\x20코드와\x20생성','니다.\x0a\x0a**반환값','curity\x20ana',':\x20분석\x20ID\x0a\x0a*','\x0a###\x20분석\x20결과','e\x20(absolut','s\x20ID:\x20','error','을\x20적용합니다.\x0a\x0a',':\x20\x22your-on','connect','\x0a#\x20Secure\x20','(`SUCCESS`','.js`를\x20`dis','`json\x0a{\x0a\x20\x20','ess`로\x20진행\x20상','vfvsM','전한\x20코드\x20반환]\x0a','\x20\x20\x20\x20\x20\x20\x22com','ck\x20interva','\x0a\x20\x20\x20-\x20S3\x20객','analyzeMul','oot\x20-g\x0a```','on`\x20(Windo','ken','analysis\x20r','00)','pecific\x20se','gress`:\x20자동','\x20이름\x0a\x0a**반환값','RE_PROCESS','ama\x20serve`','nstall\x20-g`','s`:\x20현재\x20분석\x20','선택사항)\x20LLM을','string','`\x20(string)','되어야\x20합니다.\x0a\x0a','브를\x20한\x20번에\x20분석','e\x20ZIP\x20file','*반환값:**\x0a-\x20','ssing...','must\x20suppo','COMPLETE`:','\x20LLM\x20기능\x20(선','한\x20`analysi','→\x20ANALYSIS','ze_files_s','w\x20OnDemand','를\x20사용하는\x20경우,','ODEL\x22:\x20\x22gp','르고\x20만료되지\x20않았','와\x20원본\x20파일\x20내용','\x0a\x0a###\x205단계:','join','rrow-mcp\x22:','ults`에서\x20제공','\x20**INIT**\x20','or에서\x20Java\x20','서버\x20상태\x20확인\x0a3','\x20\x22OLLAMA_M','ze_file_se','`:\x20현재\x20분석\x20상','결과\x20확인','analyzeZip','\x0a1.\x20Sparro','(초기화)\x0a\x20\x20\x20-','\x20분석이\x20`COMP','\x0a-\x20**소규모\x20파','\x20API에서\x20분석\x20','_secure_co','\x20failed.','jnMAo','es\x20and\x20ana','specified)','W_API_KEY\x22','existsSync','파일은\x20자동으로\x20압','\x20알림을\x20통한\x20분석','providing\x20','\x0a**전제조건**:','코드를\x20작성합니다.','ST_PROCESS','\x20to\x20be\x20cre','저장되므로,\x20동일한','lt`가\x20`SUCC','describe','oken\x20is\x20no','ed\x20diff\x20형식','stored\x20(op','\x20in\x20progre','ontent`\x20(s','ations:\x20','지\x20확인\x0a-\x20API','MCP\x20secure','`:\x20분석\x20진행\x20중','t\x20to\x20gener','rovided','LLAMA_BASE','요.\x0a-\x20전역\x20설치','N/A','\x0a-\x20**Diff\x20','progressTo','`\x20파일\x20저장\x0a2.','\x0a**Ollama\x20','생성된\x20ZIP\x20파일','2362932nBsitE','ecure\x20code','tatus\x20requ','\x20번호\x0a\x20\x20\x20-\x20`','):\x20','\x20storage\x20a','1507jgsrju','(Ollama\x20필요','Unknown\x20er','filePathCo','1.\x20`analyz','ecurity`로\x20','ities','curity`\x20도구','드가\x20그대로\x20반환됩','#\x207.\x20변경\x20사항','s:\x20','bash\x0anpm\x20r','\x20-\x20파일\x20압축\x20해','\x20요청\x0a`analy','(선택사항)\x20원본\x20','nalysis\x20re','\x20-\x20실제\x20SAST','alysis\x20inc','**\x20(후처리)\x0a\x20','5486790JRDzIA','도로\x20분석하는\x20것을','로\x20전역\x20설치한\x20경','\x20file\x20cont','\x20사용하는\x20경우,\x20','\x20not\x20provi','프로젝트에\x20패키지를','\x20정상\x20완료,\x20결과','프로세스**:\x0a1.','\x20-\x20진행률:\x2010','lysis\x20brie','실패\x20시:\x20\x22분석\x20','**안전한\x20코드\x20생','\x20`fileName','식별자\x0a-\x20`sta','E`:\x20분석\x20완료\x0a','리\x20중\x0a-\x20`ANA','CoqHJ','분석\x20브리핑\x20생성*','Security\x20a','le_securit','\x0a-\x20`OLLAMA','lyze_files','정보가\x20포함됩니다:','ows\x20경로의\x20`<','lder_secur','\x0a[분석\x20요청]\x20→','G_LEVEL\x22:\x20','at\x20least\x20o','\x20분석\x20ID\x0a-\x20`','type','-ondemand-','.\x0a-\x20Ollama','\x0aFinal\x20Sta','시에만\x20제공)\x0a-\x20','_BASE_URL\x22','workflow','filePath`:','[SUCCESS]\x20','[FAIL]\x20Ana','\x20설정\x20(아래\x20참조','사용합니다.\x20먼저\x20','p\x5c\x5cdist\x5c\x5cs','ed\x20results','XMUBD','cp.json`\x20(','\x20또는\x20파일\x20경로를','**:\x0a-\x20`sec','\x20`ollama\x20l','-\x20각\x20분석은\x20고유','분석의\x20진행\x20상황을','completed.','values','\x20오류\x0a\x0a**증상*','lysis\x20for\x20','lete\x20prope',':\x20개발\x20중\x20실시간','relative\x20t','약사항**:\x0a-\x20파','\x0a-\x20`READY`','ROW_API_KE','*매개변수:**\x0a-','\x20Briefing\x0a','is\x20Status','합니다.\x0a\x0a**매개','analyze_fo','\x22/usr/loca','(absolute\x20','e_folder_s','results`로\x20','교체하세요\x20(예:\x20','382TgcHnJ','\x0aMCP\x20서버를\x20C','#\x20지원\x20언어\x20및\x20',')\x0a-\x20모델이\x20다운','문제로\x20인한\x20타임아','Analysis\x20i','A_MODEL\x22`은','*:\x0a-\x20`get_','서\x20비동기로\x20처리됩','tring):\x20분석','paths\x20or\x20r','unified\x20di','##\x20예시\x20시나리오','반환된\x20분석\x20ID\x0a','nalysis_pr','합니다\x0a7.\x20결과를','폴더\x20경로\x20전달\x0a2','s`로\x20교체하고\x20프','\x20선택사항)\x0a\x0a##','로그를\x20기록합니다:','안\x20분석의\x20분석\x20I','4.\x20`genera','ted:\x20','ound:\x20','command\x22:\x20','685653GncrWv','사용\x20시에만\x20제공,','}\x0a}\x0a```\x0a\x0a#','ZIP\x20file\x20n','일\x20파일**:\x20최대','0MB):\x20약\x2010','-\x20`COMPLET','[ANALYSIS]','analysis.','실시간으로\x20진행\x20상','username>`','\x20`analyze_','progress`를','업로드]\x0a\x20\x20\x20\x20↓','esults.','ing\x20Sparro','equested:\x20','니다\x0a4.\x20(선택사','링\x0a\x0a##\x20기술\x20스','ame`\x20(선택적\x20','코드\x20생성\x20실패\x20시','valMs`\x20(선택','약점을\x20분석합니다.','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22','w\x20MCP\x20Guid','tatus)\x0a\x0a분석','드\x0a\x0a##\x20일반적인','analyze_zi','**:\x20Java\x20코','3\x20접근이\x20필요합니','p_security','\x22mcpServer','(분석\x20진행)\x0a\x20\x20','fication.\x20',':20b\x20모델,\x20선','a\x20서버가\x20실행\x20중','ment\x22\x0a\x20\x20\x20\x20','\x20로그\x0a-\x20**로그','칩니다:\x0a-\x20`IN','analyzeFil','token\x22`을\x20실','번에\x20분석합니다.\x20','path\x20or\x20re','ring):\x20ZIP','-\x20`analysi','info','\x20`track_an','\x20Sparrow\x20A','Post-proce','\x0a\x0a##\x205.\x20안전','\x20combined:','반환값:**\x0a-\x20M','의\x20경우,\x20Wind','Ollama\x20인스턴','Get\x20Analys','확인\x20및\x20진행\x20알림','원본\x20파일\x20내용\x0a\x0a','약점을\x20수정한\x20안전','map','분석\x20상태\x0a\x0a##\x20','\x20특징\x0a\x0a1.\x20**','structured','analyze_fi','toUpperCas','\x20제공되는\x20경우)\x0a','\x20(진행률\x20사용\x20가','파일\x20위치)\x0a\x20\x20\x20','isError','이\x20올바른지\x20확인\x20','tatus`:\x20수동','\x20상태에\x20따라\x20업로','s\x20Overview','니다.\x0a-\x20네트워크',':\x20분석할\x20ZIP\x20','completed,','\x20코드\x20생성\x0a5.\x20','parrow\x20OnD','로드되었는지\x20확인:','모든\x20환경\x20변수가\x20','ost:11434`','T`\x20또는\x20`REA','\x20security\x20','://ondeman','loud.ai\x22,\x0a','W_API_URL\x22','자\x20필터,\x20제외\x20경','Name`\x20(선택적','.\x0a4.\x20**LLM','File','\x0aNumber\x20of','LYSIS`:\x20분석',')\x0a7.\x20결과를\x20반','e\x20full\x20gui','ist`\x0a-\x20원격\x20','다중\x20파일\x20분석**','dules/@spa','secure-cod','\x20\x20\x20\x20\x20\x20\x22env','\x20Analysis\x20','`\x20섹션에\x20`\x22LO',':**\x0a-\x20`ana','\x20로컬\x20개발\x20빌드를','length','ity`:\x20심각도\x20','OLLAMA_BAS','Track\x20Anal','\x20크기,\x20복잡도,\x20','alysis','ff\x0a','각\x20파일의\x20결과\x20확','will\x20retry','\x20ZIP으로\x20압축)','\x20분석\x20수행\x0a\x20\x20\x20','POST_PROCE','를\x20반환합니다:\x0a-','s.\x20You\x20can','\x20제한\x0a\x0a-\x20**단','일이\x20올바른\x20위치에','generateSe','tional,\x20us','\x20더\x20오래\x20걸릴\x20수','를\x20추가하세요.\x0a-','File\x20Secur','te\x20via\x20Pro','수\x20있습니다.\x0a\x0a#','is\x20status:','Ollama\x20사용\x20','.\x20`track_a','logs','oting','AlYdZ','ectory)','sted:\x20','\x20적용\x0a제안된\x20안전','\x20큰\x20파일은\x20분석에','Id\x20획득]\x0a\x20\x20\x20','과\x20안전한\x20코드\x20생','lysisId`:\x20','\x20오류\x20로그만\x0a\x0a더','optional','nston**:\x20로','\x20다운로드합니다\x0a4','스를\x20사용하는\x20경우','LLM을\x20선택적으로','\x20\x20-\x20분석\x20결과\x20','\x20연결\x20확인\x0a\x0aMC','\x20사용하여\x20안전한\x20','\x20분석\x20시간은\x20파일','\x20IDE\x20열기\x0a2.','Content','CCESS`여야\x20함','정되어\x20있어야\x20함\x0a','\x20최대\x20100MB\x20','oken\x22,\x0a\x20\x20\x20',',\x20error:\x20','checkerKey','cation','\x0a**macOS/L','\x20`\x22OLLAMA_','h\x20not\x20prov','\x20\x20\x20\x22comman','를\x20다운로드합니다\x20','AqScL','\x20최종\x20결과\x20포함\x20','밀리초)\x20(기본값:','합니다.','\x0a\x0a...\x20(Sho','Sparrow\x20On','터링\x0a3.\x20`get','ss...','order','Brief','substring','#\x20설정\x20가이드\x0a\x0a','COMPLETE','가능한\x20언어\x0a\x0a**','rogress\x20tr','버가\x20Cursor에','는\x20작업\x20디렉토리\x20','ending,\x20pr','.\x0a-\x20`\x22your','*도구**:\x20`ge','toLowerCas','lysis_stat','일\x20파일의\x20경우에도','st:11434\x22,','##\x20Sparrow','보안\x20취약점을\x20분석','xhyAZ','s\x20without\x20','lid,\x20stopp','ecure_code','/.cursor/m','KEY`\x20환경\x20변수',')\x0a-\x20`resul','\x20\x20}\x0a\x20\x20\x20\x20}\x0a','-\x20진행률:\x200-1','\x20사용합니다.\x20Ol',':\x20원본\x20코드\x20반환','\x20식별자\x0a-\x20`st','\x20선택사항입니다.\x20','ame\x20to\x20be\x20','변수:**\x0a-\x20`z','status','PRE_PROCES','ure_code`를','ocessing,\x20','**\x20(1-10MB','Multi-file','el\x20Context','ed:\x20','LLM\x20서비스를\x20사','```\x0a\x0a##\x20주요','\x22NODE_ENV\x22','parrow\x20API','mand\x20API**','\x20{\x0a\x20\x20\x20\x20\x20\x20\x22','}\x0a\x20\x20\x20\x20}\x0a\x20\x20','-\x20분석\x20완료\x0a\x20\x20','\x20API에\x20분석\x20요','get_analys','\x22,\x0a\x20\x20\x20\x20\x20\x20\x20','\x20정보를\x20추출합니다','\x20알림\x0a-\x20분석\x20완','READY\x20→\x20PR','\x20(Result)\x0a','efault:\x2030','##\x20Analysi','Roaming\x5c\x5cn','Log\x20file\x20l','P`:\x20분석이\x20중지',',\x0a\x20\x20\x20\x20\x20\x20\x22e','OLLAMA_MOD','de`:\x20생성된\x20안','다운로드\x0a\x0a**도구','폴더\x20전체\x20분석\x0a\x0a','\x20사용하여\x20분석을\x20','실패함\x0a-\x20`STO','819Bgdtyk','\x20-\x20`logs/e','기능이\x20작동하지\x20않','\x20사용하여\x20분석\x20브','\x0a1.\x20Cursor','%\x0aMessage:','항)\x20LLM이\x20안전','`get_analy','\x22debug\x22`를\x20','security`,','\x20\x22args\x22:\x20[','fileName','방법**:\x0a-\x20`m','는지\x20확인하려면:\x0a',')\x0a\x0a##\x20Curs','n\x20failed\x20(','ile_securi','ile\x20checki','trim','erver.js\x22]','\x20메시지\x0a\x0a##\x203','nv\x22:\x20{\x0a\x20\x20\x20','으로\x20상태\x20확인\x0a-','nalysis\x20pr','eScript**:','할\x20파일의\x20내용\x0a-','t-oss:20b\x22','e_code`에서\x20','ity\x20analys','\x20분석의\x20고유\x20식별','.\x20`analyze','includes','태\x20(보통\x20`INI','\x20연결\x20실패\x0a\x0a**','tages\x20are\x20','r\x20IDE와\x20통합되','**결과\x20캐싱**:','자\x0a-\x20`statu','x)\x20또는\x20`%AP','\x0a```json\x0a{','PDATA%\x5cCur','toString','드]\x20→\x20[취약점\x20','지\x20확인:\x20`oll','\x20환경\x20변수가\x20설정','\x20folder\x20na','PI에\x20대한\x20네트워','_folder_se','ver\x20starte','isId`\x20(str','\x22developme','*상태\x20확인\x20방법*','\x20\x20\x20\x20\x20\x22SPAR','\x20추가로\x20소요될\x20수','\x20\x20\x20\x20\x20\x20\x20\x20\x22N','#\x20분석\x20상태\x20(S','esults\x20req','expired\x20to','대로\x20반환됩니다.\x0a','\x0a\x0a##\x202.\x20분석','임아웃\x0a\x0a**증상*','w-mcp\x22:\x20{\x0a','e.js가\x20설치되어','notificati','k\x20failed:','\x20분석\x20완료','mpleted\x20an','\x20if\x20not\x20sp','he\x20client\x20','o\x22]`).\x0a\x0a##','될\x20때까지\x20대기합니','\x20고려\x0a\x0a##\x20로깅','ud.ai\x22,\x0a\x20\x20','lysis\x20was\x20','\x20분석\x20요청\x20시\x20특','w_mcp_guid','Secure\x20cod','분석\x20진행\x20상황\x20실','분석\x20시작\x0a2.\x20`',':\x20\x22https:/','.\x20[','성**:\x20발견된\x20취','qZDvy','480536VzxYvA','unt','\x20있습니다\x0a-\x20네트','했습니다.\x22\x20메시지','MPLETE\x0a\x20\x20\x20','macOS/Linu','get\x20analys'];a1_0x560c=function(){return _0x2e6d67;};return a1_0x560c();}const a1_0x1986af={};a1_0x1986af['name']=a1_0xd5bbd1(0x4a5)+a1_0xd5bbd1(0x219)+'r',a1_0x1986af[a1_0xd5bbd1(0x59b)]=a1_0xd5bbd1(0x639);const server=new McpServer(a1_0x1986af),analysisService=new AnalysisService();server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x483)+a1_0xd5bbd1(0x3f9)+'y',{'title':a1_0xd5bbd1(0x4bf)+a1_0xd5bbd1(0x281)+'is','description':a1_0xd5bbd1(0x206)+a1_0xd5bbd1(0x364)+a1_0xd5bbd1(0x41b)+a1_0xd5bbd1(0x264)+a1_0xd5bbd1(0x3b1)+a1_0xd5bbd1(0x5ec)+a1_0xd5bbd1(0x3e8)+'ent.','inputSchema':{'fileContent':z['string']()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x202)+a1_0xd5bbd1(0x1fa)+a1_0xd5bbd1(0x235)),'fileName':z['string']()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x611))}},async({fileContent:_0xcc0627,fileName:_0x3b299e})=>{const _0x165a58=a1_0xd5bbd1,_0x38725b={};_0x38725b[_0x165a58(0x69c)]=function(_0x471553,_0x104c2a){return _0x471553 instanceof _0x104c2a;};const _0xe4e370=_0x38725b;try{logger['info'](_0x165a58(0x3f8)+_0x165a58(0x3e1)+_0x165a58(0x260)+_0x3b299e);const _0x398eb9={};_0x398eb9[_0x165a58(0x31a)+'t']=_0xcc0627,_0x398eb9[_0x165a58(0x53e)]=_0x3b299e;const _0x29606a=await analysisService[_0x165a58(0x46c)+_0x165a58(0x66c)](_0x398eb9),_0x2c4287={};_0x2c4287['type']=_0x165a58(0x69a),_0x2c4287[_0x165a58(0x69a)]=_0x165a58(0x3f8)+'nalysis\x20ha'+'s\x20started.'+_0x165a58(0x358)+_0x165a58(0x340)+_0x29606a[_0x165a58(0x22a)];const _0x29edc1={};_0x29edc1[_0x165a58(0x22a)]=_0x29606a['analysisId'],_0x29edc1[_0x165a58(0x510)]=_0x29606a[_0x165a58(0x510)];const _0x2c9369={};return _0x2c9369[_0x165a58(0x239)]=[_0x2c4287],_0x2c9369[_0x165a58(0x482)+_0x165a58(0x4da)]=_0x29edc1,_0x2c9369;}catch(_0x3bc57f){return logger['error'](_0x165a58(0x6e7)+_0x165a58(0x54f)+_0x165a58(0x693),_0x3bc57f),{'content':[{'type':'text','text':_0x165a58(0x3f8)+_0x165a58(0x3e1)+_0x165a58(0x64a)+'ed:\x20'+(_0xe4e370[_0x165a58(0x69c)](_0x3bc57f,Error)?_0x3bc57f[_0x165a58(0x6e8)]:'Unknown\x20er'+'ror')}],'structuredContent':{'error':_0x3bc57f instanceof Error?_0x3bc57f[_0x165a58(0x6e8)]:_0x165a58(0x3d4)+_0x165a58(0x2d3)}};}}),server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x521)+a1_0xd5bbd1(0x5b0),{'title':a1_0xd5bbd1(0x47b)+a1_0xd5bbd1(0x424),'description':a1_0xd5bbd1(0x62a)+a1_0xd5bbd1(0x2fb)+a1_0xd5bbd1(0x2c7)+a1_0xd5bbd1(0x28d)+a1_0xd5bbd1(0x5da)+a1_0xd5bbd1(0x453),'inputSchema':{'analysisId':z['string']()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x5b1)+'D')}},async({analysisId:_0x30ce60})=>{const _0x2477a5=a1_0xd5bbd1,_0x5b56c9={};_0x5b56c9['AlYdZ']=_0x2477a5(0x3c6),_0x5b56c9[_0x2477a5(0x3aa)]=_0x2477a5(0x3d4)+_0x2477a5(0x2d3);const _0x361c67=_0x5b56c9;try{logger[_0x2477a5(0x472)](_0x2477a5(0x70f)+_0x2477a5(0x3ce)+_0x2477a5(0x67b)+_0x30ce60);const _0x2a05f7=await analysisService[_0x2477a5(0x5e2)+_0x2477a5(0x20a)](_0x30ce60),_0x5430a9=_0x2a05f7['status']===_0x2477a5(0x4f3)&&_0x2a05f7[_0x2477a5(0x5a1)]?_0x2a05f7['result']:_0x2a05f7['status'],_0x2da3e9={};_0x2da3e9['type']='text',_0x2da3e9[_0x2477a5(0x69a)]=_0x2477a5(0x2f9)+'tatus:\x20'+_0x5430a9+('\x0aProgress:'+'\x20')+(_0x2a05f7[_0x2477a5(0x6ac)]||0x0)+(_0x2477a5(0x538)+'\x20')+(_0x2a05f7[_0x2477a5(0x6e8)]||_0x361c67[_0x2477a5(0x4c7)]);const _0x5005ff={};_0x5005ff[_0x2477a5(0x22a)]=_0x30ce60,_0x5005ff[_0x2477a5(0x510)]=_0x5430a9,_0x5005ff[_0x2477a5(0x5a1)]=_0x2a05f7[_0x2477a5(0x5a1)],_0x5005ff['progress']=_0x2a05f7[_0x2477a5(0x6ac)],_0x5005ff[_0x2477a5(0x6e8)]=_0x2a05f7[_0x2477a5(0x6e8)];const _0x222b1b={};return _0x222b1b[_0x2477a5(0x239)]=[_0x2da3e9],_0x222b1b['structured'+_0x2477a5(0x4da)]=_0x5005ff,_0x222b1b;}catch(_0x5f4466){logger[_0x2477a5(0x369)]('Analysis\x20s'+_0x2477a5(0x5d0)+_0x2477a5(0x573),_0x5f4466);const _0x357e78={};_0x357e78[_0x2477a5(0x403)]=_0x2477a5(0x69a),_0x357e78[_0x2477a5(0x69a)]=_0x2477a5(0x30a)+_0x2477a5(0x58c)+_0x2477a5(0x4c2)+'\x20'+(_0x5f4466 instanceof Error?_0x5f4466[_0x2477a5(0x6e8)]:_0x361c67['jnMAo']);const _0x3922f9={};_0x3922f9[_0x2477a5(0x369)]=_0x5f4466 instanceof Error?_0x5f4466[_0x2477a5(0x6e8)]:_0x2477a5(0x3d4)+_0x2477a5(0x2d3);const _0x3a761c={};return _0x3a761c[_0x2477a5(0x239)]=[_0x357e78],_0x3a761c[_0x2477a5(0x482)+_0x2477a5(0x4da)]=_0x3922f9,_0x3a761c;}}),server['registerTo'+'ol'](a1_0xd5bbd1(0x521)+'is_results',{'title':'Get\x20Analys'+a1_0xd5bbd1(0x2ab),'description':'Get\x20detail'+a1_0xd5bbd1(0x410)+a1_0xd5bbd1(0x2e1)+a1_0xd5bbd1(0x575)+a1_0xd5bbd1(0x3e3)+a1_0xd5bbd1(0x663)+a1_0xd5bbd1(0x700)+a1_0xd5bbd1(0x3ab)+a1_0xd5bbd1(0x3ef)+a1_0xd5bbd1(0x5e8),'inputSchema':{'analysisId':z[a1_0xd5bbd1(0x385)]()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x5b1)+'D')}},async({analysisId:_0x51cb72})=>{const _0x4bda2a=a1_0xd5bbd1;try{logger[_0x4bda2a(0x472)]('Analysis\x20r'+_0x4bda2a(0x56b)+_0x4bda2a(0x631)+_0x51cb72);const _0x5f3d74=await analysisService[_0x4bda2a(0x5e2)+_0x4bda2a(0x6ee)](_0x51cb72),_0x311e66=_0x5f3d74[_0x4bda2a(0x5a1)]??_0x5f3d74['status'],_0x5849ab=0x7a120,_0x28036e=(_0x473c0f,_0x52e143)=>{const _0x557375=_0x4bda2a;if(_0x473c0f[_0x557375(0x4ab)]<=_0x52e143)return _0x473c0f;return _0x473c0f['substring'](0x0,_0x52e143)+(_0x557375(0x4eb)+_0x557375(0x1ea)+_0x52e143+_0x557375(0x684)+_0x473c0f['length']+('\x20character'+'s)'));},_0x1bd67c=_0x5f3d74[_0x4bda2a(0x6de)+_0x4bda2a(0x3d8)][_0x4bda2a(0x47f)]((_0x14f80d,_0x563eae)=>_0x563eae+0x1+_0x4bda2a(0x583)+_0x14f80d['severity']+']\x20'+_0x14f80d[_0x4bda2a(0x4e0)]+':\x20'+_0x14f80d[_0x4bda2a(0x62e)+'n'])[_0x4bda2a(0x398)]('\x0a'),_0x21f1ff=('\x0a#\x20Securit'+_0x4bda2a(0x6fc)+_0x4bda2a(0x5a4)+_0x4bda2a(0x528)+_0x4bda2a(0x48c)+'\x0a-\x20Analysi'+_0x4bda2a(0x368)+_0x5f3d74[_0x4bda2a(0x22a)]+(_0x4bda2a(0x2af)+'\x20')+_0x311e66+(_0x4bda2a(0x59e)+'\x20')+(_0x5f3d74[_0x4bda2a(0x5a1)]||_0x4bda2a(0x3c6))+(_0x4bda2a(0x315)+_0x4bda2a(0x61c)+_0x4bda2a(0x443))+_0x5f3d74[_0x4bda2a(0x6de)+_0x4bda2a(0x3d8)][_0x4bda2a(0x4ab)]+(_0x4bda2a(0x5a5)+_0x4bda2a(0x2bb)+_0x4bda2a(0x29d))+_0x28036e(_0x5f3d74[_0x4bda2a(0x6ad)+_0x4bda2a(0x2c3)]||'',_0x5849ab)+(_0x4bda2a(0x308)+_0x4bda2a(0x310)+'erabilitie'+'s\x0a')+_0x28036e(_0x1bd67c,_0x5849ab)+_0x4bda2a(0x70b))[_0x4bda2a(0x545)](),_0x5e2325={'analysisId':_0x5f3d74[_0x4bda2a(0x22a)],'status':_0x311e66,'result':_0x5f3d74[_0x4bda2a(0x5a1)],'vulnerabilities':_0x5f3d74[_0x4bda2a(0x6de)+'ities'],'analysisBrief':_0x5f3d74[_0x4bda2a(0x6ad)+_0x4bda2a(0x2c3)]?_0x28036e(_0x5f3d74['analysisBr'+_0x4bda2a(0x2c3)],_0x5849ab):''},_0x319ccc={};_0x319ccc[_0x4bda2a(0x403)]=_0x4bda2a(0x69a),_0x319ccc[_0x4bda2a(0x69a)]=_0x21f1ff;const _0x329701={};return _0x329701[_0x4bda2a(0x239)]=[_0x319ccc],_0x329701[_0x4bda2a(0x482)+_0x4bda2a(0x4da)]=_0x5e2325,_0x329701;}catch(_0x5162e1){logger['error'](_0x4bda2a(0x30a)+_0x4bda2a(0x58c)+'is\x20results'+':',_0x5162e1);const _0x5d8532=_0x5162e1 instanceof Error?_0x5162e1[_0x4bda2a(0x6e8)]:_0x4bda2a(0x3d4)+'ror',_0x37e935={};_0x37e935[_0x4bda2a(0x403)]='text',_0x37e935['text']='Failed\x20to\x20'+'get\x20analys'+'is\x20results'+':\x20'+_0x5d8532;const _0x325b9b={};_0x325b9b[_0x4bda2a(0x369)]=_0x5d8532;const _0x255654={};return _0x255654['content']=[_0x37e935],_0x255654[_0x4bda2a(0x482)+_0x4bda2a(0x4da)]=_0x325b9b,_0x255654[_0x4bda2a(0x488)]=!![],_0x255654;}}),server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x30c)+a1_0xd5bbd1(0x504),{'title':a1_0xd5bbd1(0x293)+'ecure\x20Code','description':a1_0xd5bbd1(0x6ba)+a1_0xd5bbd1(0x3cd)+a1_0xd5bbd1(0x262)+a1_0xd5bbd1(0x37b)+a1_0xd5bbd1(0x2f3)+'quires\x20ana'+'lysis\x20ID\x20a'+a1_0xd5bbd1(0x2ff)+a1_0xd5bbd1(0x256)+'tent.','inputSchema':{'analysisId':z[a1_0xd5bbd1(0x385)]()[a1_0xd5bbd1(0x3b8)]('Analysis\x20I'+a1_0xd5bbd1(0x1ee)+'\x20security\x20'+'analysis'),'fileContent':z['string']()[a1_0xd5bbd1(0x3b8)]('Original\x20f'+'ile\x20conten'+a1_0xd5bbd1(0x3c2)+a1_0xd5bbd1(0x5e5)+a1_0xd5bbd1(0x26d))}},async({analysisId:_0x53feb6,fileContent:_0x2da8a9})=>{const _0x2f9d4b=a1_0xd5bbd1,_0x103d7c={'fOgNn':function(_0x1ae665,_0x4a65e0,_0x3a095a){return _0x1ae665(_0x4a65e0,_0x3a095a);},'YQoBA':_0x2f9d4b(0x69a)};try{logger[_0x2f9d4b(0x472)](_0x2f9d4b(0x57f)+_0x2f9d4b(0x658)+_0x2f9d4b(0x5e9)+_0x2f9d4b(0x517)+_0x53feb6);const _0x345b21=await analysisService[_0x2f9d4b(0x4bb)+_0x2f9d4b(0x5d2)+_0x2f9d4b(0x333)](_0x53feb6,_0x2da8a9),_0x3cee03=0x7a120,_0x1a5ff4=(_0x27e504,_0x46aea9)=>{const _0x5411a0=_0x2f9d4b;if(_0x27e504[_0x5411a0(0x4ab)]<=_0x46aea9)return _0x27e504;return _0x27e504[_0x5411a0(0x4f1)](0x0,_0x46aea9)+(_0x5411a0(0x4eb)+_0x5411a0(0x1ea)+_0x46aea9+_0x5411a0(0x684)+_0x27e504[_0x5411a0(0x4ab)]+(_0x5411a0(0x623)+'s)'));},_0x438fb7=(_0x2f9d4b(0x36d)+_0x2f9d4b(0x28f)+'ation\x20Resu'+_0x2f9d4b(0x270)+_0x2f9d4b(0x287)+'```java\x0a'+_0x1a5ff4(_0x345b21[_0x2f9d4b(0x637)],_0x3cee03)+(_0x2f9d4b(0x63e)+_0x2f9d4b(0x24c)+_0x2f9d4b(0x423))+_0x1a5ff4(_0x345b21[_0x2f9d4b(0x637)+'Brief'],_0x3cee03)+(_0x2f9d4b(0x6cc)+'Changes\x20(D'+'iff)\x0a```di'+_0x2f9d4b(0x4b1))+_0x1a5ff4(_0x345b21[_0x2f9d4b(0x2c2)],_0x3cee03)+(_0x2f9d4b(0x5fe)+'\x20'))[_0x2f9d4b(0x545)](),_0x338b47={'analysisId':_0x53feb6,'secureCode':_0x1a5ff4(_0x345b21['secureCode'],_0x3cee03),'secureCodeBrief':_0x103d7c[_0x2f9d4b(0x615)](_0x1a5ff4,_0x345b21['secureCode'+_0x2f9d4b(0x4f0)],_0x3cee03),'diff':_0x1a5ff4(_0x345b21['diff'],_0x3cee03)},_0x2d1620={};_0x2d1620[_0x2f9d4b(0x403)]=_0x103d7c[_0x2f9d4b(0x65c)],_0x2d1620[_0x2f9d4b(0x69a)]=_0x438fb7;const _0x1618cd={};return _0x1618cd[_0x2f9d4b(0x239)]=[_0x2d1620],_0x1618cd[_0x2f9d4b(0x482)+_0x2f9d4b(0x4da)]=_0x338b47,_0x1618cd;}catch(_0xce1596){logger[_0x2f9d4b(0x369)](_0x2f9d4b(0x30a)+_0x2f9d4b(0x1f1)+_0x2f9d4b(0x3cd)+':',_0xce1596);const _0xc8b346=_0xce1596 instanceof Error?_0xce1596[_0x2f9d4b(0x6e8)]:_0x2f9d4b(0x3d4)+_0x2f9d4b(0x2d3),_0x353773={};_0x353773[_0x2f9d4b(0x403)]='text',_0x353773['text']=_0x2f9d4b(0x30a)+_0x2f9d4b(0x1f1)+_0x2f9d4b(0x3cd)+':\x20'+_0xc8b346;const _0x391d75={};_0x391d75[_0x2f9d4b(0x369)]=_0xc8b346;const _0x5792c6={};return _0x5792c6[_0x2f9d4b(0x239)]=[_0x353773],_0x5792c6['structured'+_0x2f9d4b(0x4da)]=_0x391d75,_0x5792c6[_0x2f9d4b(0x488)]=!![],_0x5792c6;}}),server[a1_0xd5bbd1(0x5e0)+'ol']('analyze_fi'+'les_securi'+'ty',{'title':a1_0xd5bbd1(0x241)+a1_0xd5bbd1(0x5c1)+'Analysis','description':'Read\x20multi'+a1_0xd5bbd1(0x6f8)+'aths,\x20comp'+a1_0xd5bbd1(0x259)+'into\x20a\x20ZIP'+a1_0xd5bbd1(0x659)+a1_0xd5bbd1(0x323)+a1_0xd5bbd1(0x712)+a1_0xd5bbd1(0x1e1)+a1_0xd5bbd1(0x5df)+a1_0xd5bbd1(0x687)+a1_0xd5bbd1(0x1f5)+a1_0xd5bbd1(0x217),'inputSchema':{'filePaths':z[a1_0xd5bbd1(0x598)](z[a1_0xd5bbd1(0x385)]())[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x5d9)+'le\x20paths\x20t'+a1_0xd5bbd1(0x32c)+a1_0xd5bbd1(0x428)+a1_0xd5bbd1(0x436)+a1_0xd5bbd1(0x279)+'\x20current\x20w'+a1_0xd5bbd1(0x601)+a1_0xd5bbd1(0x4c8)),'zipFileName':z[a1_0xd5bbd1(0x385)]()['optional']()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x5bb)+a1_0xd5bbd1(0x389)+a1_0xd5bbd1(0x3b5)+a1_0xd5bbd1(0x70d)+'onal)')}},async({filePaths:_0x13e0c5,zipFileName:_0x45f958})=>{const _0x108489=a1_0xd5bbd1;try{if(!_0x13e0c5||_0x13e0c5[_0x108489(0x4ab)]===0x0){const _0x3f15a2={};_0x3f15a2[_0x108489(0x403)]=_0x108489(0x69a),_0x3f15a2[_0x108489(0x69a)]='No\x20files\x20t'+_0x108489(0x2dc)+_0x108489(0x63a)+_0x108489(0x2ee)+'\x20requires\x20'+_0x108489(0x401)+'ne\x20file\x20pa'+_0x108489(0x697);const _0x2845e7={};_0x2845e7['error']=_0x108489(0x31b)+_0x108489(0x3ea)+_0x108489(0x5ee);const _0x429d41={};return _0x429d41[_0x108489(0x239)]=[_0x3f15a2],_0x429d41[_0x108489(0x482)+_0x108489(0x4da)]=_0x2845e7,_0x429d41;}logger[_0x108489(0x472)](_0x108489(0x515)+_0x108489(0x496)+_0x108489(0x37b)+_0x108489(0x455)+_0x13e0c5[_0x108489(0x4ab)]+(_0x108489(0x624)+'s'));const _0xc7af52=await analysisService[_0x108489(0x377)+'tipleFiles'+_0x108489(0x65f)](_0x13e0c5,_0x45f958),_0x4fe7b4=_0x108489(0x3f8)+_0x108489(0x35d)+_0x108489(0x664)+_0x108489(0x49e)+_0x108489(0x624)+'s:\x20'+_0x13e0c5[_0x108489(0x4ab)]+(_0x108489(0x358)+_0x108489(0x340))+_0xc7af52[_0x108489(0x22a)]+_0x108489(0x27c)+_0xc7af52[_0x108489(0x510)],_0x5bcbc6={};_0x5bcbc6[_0x108489(0x403)]=_0x108489(0x69a),_0x5bcbc6[_0x108489(0x69a)]=_0x4fe7b4;const _0xbdefac={};_0xbdefac['analysisId']=_0xc7af52['analysisId'],_0xbdefac[_0x108489(0x510)]=_0xc7af52[_0x108489(0x510)],_0xbdefac[_0x108489(0x3d5)+_0x108489(0x587)]=_0x13e0c5[_0x108489(0x4ab)];const _0x1121f1={};return _0x1121f1['content']=[_0x5bcbc6],_0x1121f1[_0x108489(0x482)+'Content']=_0xbdefac,_0x1121f1;}catch(_0x4f83ee){logger[_0x108489(0x369)](_0x108489(0x515)+_0x108489(0x496)+_0x108489(0x34a)+'ailed:',_0x4f83ee);const _0x5a42bc={};_0x5a42bc[_0x108489(0x403)]='text',_0x5a42bc[_0x108489(0x69a)]='Security\x20a'+_0x108489(0x3e1)+_0x108489(0x64a)+_0x108489(0x517)+(_0x4f83ee instanceof Error?_0x4f83ee[_0x108489(0x6e8)]:_0x108489(0x3d4)+_0x108489(0x2d3));const _0x4d58a3={};_0x4d58a3[_0x108489(0x369)]=_0x4f83ee instanceof Error?_0x4f83ee[_0x108489(0x6e8)]:'Unknown\x20er'+'ror';const _0x3a381c={};return _0x3a381c[_0x108489(0x239)]=[_0x5a42bc],_0x3a381c[_0x108489(0x482)+_0x108489(0x4da)]=_0x4d58a3,_0x3a381c;}}),server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x460)+a1_0xd5bbd1(0x463),{'title':a1_0xd5bbd1(0x6a8)+a1_0xd5bbd1(0x229)+a1_0xd5bbd1(0x4b0),'description':a1_0xd5bbd1(0x5a3)+a1_0xd5bbd1(0x5ab)+a1_0xd5bbd1(0x3d1)+'nd\x20request'+'\x20security\x20'+a1_0xd5bbd1(0x44d),'inputSchema':{'zipFilePath':z['string']()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x67e)+a1_0xd5bbd1(0x389)+'\x20to\x20analyz'+a1_0xd5bbd1(0x367)+'e\x20path\x20or\x20'+a1_0xd5bbd1(0x41e)+a1_0xd5bbd1(0x334)+a1_0xd5bbd1(0x319)+'rectory)'),'zipFileName':z[a1_0xd5bbd1(0x385)]()[a1_0xd5bbd1(0x4d0)]()['describe'](a1_0xd5bbd1(0x448)+a1_0xd5bbd1(0x50e)+a1_0xd5bbd1(0x3bb)+a1_0xd5bbd1(0x4bc)+a1_0xd5bbd1(0x5ef)+a1_0xd5bbd1(0x5a7)+a1_0xd5bbd1(0x576)+'ecified)')}},async({zipFilePath:_0x31962b,zipFileName:_0x3de54c})=>{const _0xca602e=a1_0xd5bbd1,_0x3a3981={};_0x3a3981[_0xca602e(0x501)]=function(_0x28fa9d,_0x1e37ee){return _0x28fa9d instanceof _0x1e37ee;};const _0x5c9cb5=_0x3a3981;try{if(!_0x31962b||_0x31962b[_0xca602e(0x545)]()[_0xca602e(0x4ab)]===0x0){const _0x2c02c3={};_0x2c02c3[_0xca602e(0x403)]=_0xca602e(0x69a),_0x2c02c3[_0xca602e(0x69a)]=_0xca602e(0x5b3)+_0xca602e(0x614)+'ovided.';const _0x387e02={};_0x387e02['error']=_0xca602e(0x5b3)+_0xca602e(0x614)+'ovided';const _0x3714a5={};return _0x3714a5['content']=[_0x2c02c3],_0x3714a5[_0xca602e(0x482)+_0xca602e(0x4da)]=_0x387e02,_0x3714a5;}logger[_0xca602e(0x472)](_0xca602e(0x64b)+_0xca602e(0x712)+'alysis\x20req'+_0xca602e(0x631)+_0x31962b);const _0x380a6e=await analysisService[_0xca602e(0x3a2)+_0xca602e(0x49d)](_0x31962b,_0x3de54c),_0x9ca254=_0xca602e(0x3f8)+'nalysis\x20ha'+_0xca602e(0x664)+_0xca602e(0x265)+'\x20'+_0x31962b+(_0xca602e(0x358)+_0xca602e(0x340))+_0x380a6e[_0xca602e(0x22a)]+_0xca602e(0x27c)+_0x380a6e['status'],_0x29cb84={};_0x29cb84[_0xca602e(0x403)]=_0xca602e(0x69a),_0x29cb84[_0xca602e(0x69a)]=_0x9ca254;const _0x5017ff={};_0x5017ff[_0xca602e(0x22a)]=_0x380a6e[_0xca602e(0x22a)],_0x5017ff[_0xca602e(0x510)]=_0x380a6e[_0xca602e(0x510)],_0x5017ff[_0xca602e(0x6c0)+'h']=_0x31962b;const _0x599181={};return _0x599181[_0xca602e(0x239)]=[_0x29cb84],_0x599181[_0xca602e(0x482)+'Content']=_0x5017ff,_0x599181;}catch(_0x1da38d){logger[_0xca602e(0x369)](_0xca602e(0x64b)+'ecurity\x20an'+_0xca602e(0x337)+_0xca602e(0x21c),_0x1da38d);const _0x3bf03d={};return _0x3bf03d[_0xca602e(0x403)]=_0xca602e(0x69a),_0x3bf03d[_0xca602e(0x69a)]=_0xca602e(0x3f8)+_0xca602e(0x3e1)+_0xca602e(0x64a)+'ed:\x20'+(_0x1da38d instanceof Error?_0x1da38d[_0xca602e(0x6e8)]:'Unknown\x20er'+_0xca602e(0x2d3)),{'content':[_0x3bf03d],'structuredContent':{'error':_0x5c9cb5[_0xca602e(0x501)](_0x1da38d,Error)?_0x1da38d['message']:_0xca602e(0x3d4)+_0xca602e(0x2d3)}};}}),server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x426)+a1_0xd5bbd1(0x3fe)+a1_0xd5bbd1(0x5a6),{'title':a1_0xd5bbd1(0x654)+a1_0xd5bbd1(0x6ce)+'ysis','description':a1_0xd5bbd1(0x226)+'n\x20entire\x20f'+a1_0xd5bbd1(0x1f6)+a1_0xd5bbd1(0x2ce)+'e\x20and\x20requ'+a1_0xd5bbd1(0x2da)+a1_0xd5bbd1(0x253)+'s.','inputSchema':{'folderPath':z[a1_0xd5bbd1(0x385)]()['describe'](a1_0xd5bbd1(0x67e)+a1_0xd5bbd1(0x2d7)+a1_0xd5bbd1(0x32c)+'(absolute\x20'+a1_0xd5bbd1(0x46f)+'lative\x20to\x20'+'current\x20wo'+a1_0xd5bbd1(0x25c)+a1_0xd5bbd1(0x6d5)),'zipFileName':z['string']()[a1_0xd5bbd1(0x4d0)]()['describe'](a1_0xd5bbd1(0x5bb)+a1_0xd5bbd1(0x389)+a1_0xd5bbd1(0x3b5)+'ated\x20(opti'+'onal,\x20uses'+a1_0xd5bbd1(0x560)+a1_0xd5bbd1(0x709)+a1_0xd5bbd1(0x3ac))}},async({folderPath:_0x47bdc1,zipFileName:_0x6c52d5})=>{const _0xbfc850=a1_0xd5bbd1,_0x40f6f={};_0x40f6f[_0xbfc850(0x204)]=_0xbfc850(0x2f6)+_0xbfc850(0x4e4)+'ided';const _0x1e17d6=_0x40f6f;try{if(!_0x47bdc1||_0x47bdc1[_0xbfc850(0x545)]()[_0xbfc850(0x4ab)]===0x0){const _0x4fe337={};_0x4fe337[_0xbfc850(0x403)]=_0xbfc850(0x69a),_0x4fe337[_0xbfc850(0x69a)]=_0xbfc850(0x2f6)+_0xbfc850(0x4e4)+_0xbfc850(0x6be);const _0x4c942b={};_0x4c942b[_0xbfc850(0x369)]=_0x1e17d6['WaNMd'];const _0x399db3={};return _0x399db3[_0xbfc850(0x239)]=[_0x4fe337],_0x399db3[_0xbfc850(0x482)+_0xbfc850(0x4da)]=_0x4c942b,_0x399db3;}logger[_0xbfc850(0x472)]('Folder\x20sec'+'urity\x20anal'+_0xbfc850(0x6ae)+_0xbfc850(0x4c9)+_0x47bdc1);const _0x2bd2b5=await analysisService[_0xbfc850(0x29e)+_0xbfc850(0x638)](_0x47bdc1,_0x6c52d5),_0x32c5ca=_0xbfc850(0x3f8)+'nalysis\x20ha'+_0xbfc850(0x664)+_0xbfc850(0x686)+_0x47bdc1+(_0xbfc850(0x358)+'ID:\x20')+_0x2bd2b5['analysisId']+_0xbfc850(0x27c)+_0x2bd2b5[_0xbfc850(0x510)],_0x493500={};_0x493500[_0xbfc850(0x403)]=_0xbfc850(0x69a),_0x493500[_0xbfc850(0x69a)]=_0x32c5ca;const _0x539b57={};_0x539b57[_0xbfc850(0x22a)]=_0x2bd2b5[_0xbfc850(0x22a)],_0x539b57['status']=_0x2bd2b5[_0xbfc850(0x510)],_0x539b57[_0xbfc850(0x1f9)]=_0x47bdc1;const _0x3d2ff7={};return _0x3d2ff7[_0xbfc850(0x239)]=[_0x493500],_0x3d2ff7[_0xbfc850(0x482)+_0xbfc850(0x4da)]=_0x539b57,_0x3d2ff7;}catch(_0x162805){logger[_0xbfc850(0x369)](_0xbfc850(0x20f)+_0xbfc850(0x618)+_0xbfc850(0x246)+'d:',_0x162805);const _0x2ed6a6={};_0x2ed6a6[_0xbfc850(0x403)]='text',_0x2ed6a6[_0xbfc850(0x69a)]=_0xbfc850(0x3f8)+'nalysis\x20re'+_0xbfc850(0x64a)+_0xbfc850(0x517)+(_0x162805 instanceof Error?_0x162805[_0xbfc850(0x6e8)]:_0xbfc850(0x3d4)+_0xbfc850(0x2d3));const _0x2f4104={};_0x2f4104[_0xbfc850(0x369)]=_0x162805 instanceof Error?_0x162805[_0xbfc850(0x6e8)]:_0xbfc850(0x3d4)+_0xbfc850(0x2d3);const _0x1a8eb8={};return _0x1a8eb8[_0xbfc850(0x239)]=[_0x2ed6a6],_0x1a8eb8[_0xbfc850(0x482)+_0xbfc850(0x4da)]=_0x2f4104,_0x1a8eb8;}}),server[a1_0xd5bbd1(0x5e0)+'ol']('track_anal'+a1_0xd5bbd1(0x592)+a1_0xd5bbd1(0x667),{'title':a1_0xd5bbd1(0x4ae)+'ysis\x20Progr'+a1_0xd5bbd1(0x667),'description':a1_0xd5bbd1(0x2aa)+'ly\x20check\x20a'+a1_0xd5bbd1(0x54a)+'ogress\x20by\x20'+'analysis\x20I'+'D\x20and\x20upda'+a1_0xd5bbd1(0x4c0)+a1_0xd5bbd1(0x669)+a1_0xd5bbd1(0x466)+a1_0xd5bbd1(0x70f)+a1_0xd5bbd1(0x555)+a1_0xd5bbd1(0x316)+a1_0xd5bbd1(0x6bc)+a1_0xd5bbd1(0x1ed)+a1_0xd5bbd1(0x5bd)+a1_0xd5bbd1(0x207)+'COMPLETE.\x20'+a1_0xd5bbd1(0x30f)+a1_0xd5bbd1(0x66d)+'vided\x20duri'+'ng\x20the\x20ANA'+a1_0xd5bbd1(0x306)+'e.','inputSchema':{'analysisId':z[a1_0xd5bbd1(0x385)]()[a1_0xd5bbd1(0x3b8)](a1_0xd5bbd1(0x5b1)+'D'),'intervalMs':z['number']()[a1_0xd5bbd1(0x4d0)]()[a1_0xd5bbd1(0x3b8)]('Status\x20che'+a1_0xd5bbd1(0x375)+a1_0xd5bbd1(0x620)+a1_0xd5bbd1(0x31c)+a1_0xd5bbd1(0x527)+a1_0xd5bbd1(0x37c))}},async({analysisId:_0x4964ea,intervalMs:intervalMs=0xbb8},_0x29ec58)=>{const _0x291f5e=a1_0xd5bbd1,_0x68e222={'DuGdr':_0x291f5e(0x600)+_0x291f5e(0x5d3)+'rovided.\x20T'+_0x291f5e(0x577)+_0x291f5e(0x38c)+'rt\x20progres'+_0x291f5e(0x220)+'.','bvFCY':_0x291f5e(0x213)+_0x291f5e(0x57c)+'stopped\x20by'+_0x291f5e(0x5d5),'TAmBd':function(_0x1f1c96,_0x4680d6){return _0x1f1c96===_0x4680d6;},'AqScL':function(_0x1bb5f6,_0x136b4c){return _0x1bb5f6===_0x136b4c;},'XMUBD':'ANALYSIS','CoqHJ':'notificati'+_0x291f5e(0x21a)+'ss','eBNAj':function(_0x2dd41f,_0x40ee7d){return _0x2dd41f(_0x40ee7d);}};try{const _0x3f4a60=_0x29ec58[_0x291f5e(0x284)]?.[_0x291f5e(0x3c8)+_0x291f5e(0x37a)];if(!_0x3f4a60){const _0x1abe72={};_0x1abe72[_0x291f5e(0x403)]='text',_0x1abe72[_0x291f5e(0x69a)]=_0x68e222[_0x291f5e(0x2fc)];const _0x5c02bf={};_0x5c02bf['error']=_0x291f5e(0x600)+'oken\x20not\x20p'+_0x291f5e(0x3c3);const _0x5164df={};return _0x5164df[_0x291f5e(0x239)]=[_0x1abe72],_0x5164df[_0x291f5e(0x482)+_0x291f5e(0x4da)]=_0x5c02bf,_0x5164df;}logger['info'](_0x291f5e(0x2a0)+_0x291f5e(0x4f5)+'acking\x20sta'+_0x291f5e(0x696)+_0x4964ea);const _0x2c35b0={};_0x2c35b0['id']='INIT',_0x2c35b0[_0x291f5e(0x29a)]=_0x291f5e(0x5b4)+'tion',_0x2c35b0[_0x291f5e(0x62e)+'n']='Waiting\x20fo'+_0x291f5e(0x5aa)+'\x20to\x20start.',_0x2c35b0[_0x291f5e(0x6ac)]=null,_0x2c35b0[_0x291f5e(0x4ef)]=0x1;const _0x9ad0aa={};_0x9ad0aa['id']=_0x291f5e(0x6c2),_0x9ad0aa[_0x291f5e(0x29a)]=_0x291f5e(0x6c5),_0x9ad0aa[_0x291f5e(0x62e)+'n']=_0x291f5e(0x6e2)+_0x291f5e(0x317)+_0x291f5e(0x311),_0x9ad0aa[_0x291f5e(0x6ac)]=null,_0x9ad0aa['order']=0x2;const _0x92e714={};_0x92e714['id']='PRE_PROCES'+'S',_0x92e714['descriptio'+'n']=_0x291f5e(0x675)+_0x291f5e(0x30b),_0x92e714[_0x291f5e(0x29a)]=_0x291f5e(0x675)+_0x291f5e(0x258),_0x92e714[_0x291f5e(0x6ac)]=null,_0x92e714[_0x291f5e(0x4ef)]=0x3;const _0x477ecc={};_0x477ecc['id']=_0x291f5e(0x2be),_0x477ecc[_0x291f5e(0x62e)+'n']=_0x291f5e(0x431)+_0x291f5e(0x6ff)+_0x291f5e(0x342),_0x477ecc['name']=_0x291f5e(0x6f0),_0x477ecc['progress']=0x0,_0x477ecc[_0x291f5e(0x4ef)]=0x4;const _0x22bd66={};_0x22bd66['id']=_0x291f5e(0x4b6)+'SS',_0x22bd66['descriptio'+'n']=_0x291f5e(0x475)+_0x291f5e(0x38b),_0x22bd66[_0x291f5e(0x29a)]=_0x291f5e(0x475)+_0x291f5e(0x24d),_0x22bd66['progress']=null,_0x22bd66[_0x291f5e(0x4ef)]=0x5;const _0x34b5ef={};_0x34b5ef['id']='COMPLETE',_0x34b5ef[_0x291f5e(0x62e)+'n']=_0x291f5e(0x21d)+_0x291f5e(0x634)+_0x291f5e(0x2a6)+'y.',_0x34b5ef[_0x291f5e(0x29a)]='Complete',_0x34b5ef[_0x291f5e(0x6ac)]=0x64,_0x34b5ef['order']=0x6;const _0x15abbe={};_0x15abbe[_0x291f5e(0x2b3)]=_0x2c35b0,_0x15abbe[_0x291f5e(0x6c2)]=_0x9ad0aa,_0x15abbe[_0x291f5e(0x511)+'S']=_0x92e714,_0x15abbe[_0x291f5e(0x2be)]=_0x477ecc,_0x15abbe['POST_PROCE'+'SS']=_0x22bd66,_0x15abbe[_0x291f5e(0x4f3)]=_0x34b5ef;const _0xf6b733=_0x15abbe;let _0x171a26=Object[_0x291f5e(0x2d0)](_0xf6b733)[_0x291f5e(0x4ab)],_0x14cd31=null,_0x2201b0=0x0,_0x3b256d=!![];const _0x323663=async _0xdf4bfc=>{const _0x495e01=_0x291f5e;if(!_0x3b256d)return![];try{return await _0x29ec58['sendNotifi'+_0x495e01(0x4e1)](_0xdf4bfc),!![];}catch(_0x872976){const _0x3a3cf7=_0x872976 instanceof Error?_0x872976[_0x495e01(0x6e8)]:'Unknown\x20er'+'ror';return _0x3a3cf7[_0x495e01(0x552)]('unknown\x20to'+_0x495e01(0x37a))||_0x3a3cf7[_0x495e01(0x552)]('invalid\x20to'+_0x495e01(0x37a))||_0x3a3cf7[_0x495e01(0x552)](_0x495e01(0x56c)+'ken')||_0x3a3cf7[_0x495e01(0x4fb)+'e']()['includes'](_0x495e01(0x6da))?(_0x3b256d=![],logger[_0x495e01(0x2d1)](_0x495e01(0x58e)+_0x495e01(0x3b9)+'\x20longer\x20va'+_0x495e01(0x503)+'ing\x20progre'+_0x495e01(0x708)+_0x495e01(0x3be)+_0x3a3cf7)):logger[_0x495e01(0x2d1)](_0x495e01(0x68a)+_0x495e01(0x69e)+_0x495e01(0x542)+_0x495e01(0x4b3)+_0x495e01(0x3d0)+_0x3a3cf7),![];}};while(!![]){try{const _0xb75986=await analysisService['getAnalysi'+'sStatus'](_0x4964ea),_0x2ec072=String(_0xb75986['status'])[_0x291f5e(0x484)+'e'](),_0x496649=String(_0xb75986['status'])['toUpperCas'+'e'](),_0x541923=_0x496649===_0x291f5e(0x4f3)&&_0xb75986[_0x291f5e(0x5a1)]?String(_0xb75986['result'])[_0x291f5e(0x484)+'e']():_0x2ec072;if(_0x14cd31!==_0x2ec072){_0x14cd31=_0x2ec072;if(_0x496649===_0x291f5e(0x4f3)||_0x2ec072===_0x291f5e(0x68c)||_0x2ec072===_0x291f5e(0x6ec)){let _0x3e38d3,_0x19279f;if(_0x496649===_0x291f5e(0x4f3)){const _0x4009a0=_0xb75986['result']?String(_0xb75986[_0x291f5e(0x5a1)])[_0x291f5e(0x484)+'e']():undefined;_0x19279f=_0x4009a0||'COMPLETE';if(_0x4009a0==='SUCCESS')_0x3e38d3=_0x291f5e(0x40b)+_0x291f5e(0x21d)+_0x291f5e(0x634)+_0x291f5e(0x2a6)+'y.';else{if(_0x4009a0===_0x291f5e(0x68c))_0x3e38d3=_0x291f5e(0x40c)+_0x291f5e(0x2b9)+'ed\x20to\x20comp'+_0x291f5e(0x41c)+_0x291f5e(0x6a7);else _0x4009a0===_0x291f5e(0x2b5)?_0x3e38d3=_0x68e222[_0x291f5e(0x222)]:(_0x3e38d3=_0x291f5e(0x5d1)+_0x291f5e(0x4a7)+_0x291f5e(0x418),_0x19279f='COMPLETE');}}else _0x3e38d3='['+_0x2ec072+(_0x291f5e(0x33c)+_0x291f5e(0x3a9)),_0x19279f=_0x2ec072;const _0x45fa48={'method':'notificati'+_0x291f5e(0x21a)+'ss','params':{'progressToken':typeof _0x3f4a60===_0x291f5e(0x385)?_0x3f4a60:String(_0x3f4a60),'progress':_0x2ec072===_0x291f5e(0x4f3)?0x64:0x0,'message':_0x3e38d3,'total':0x64}};await _0x323663(_0x45fa48);_0x68e222[_0x291f5e(0x5b6)](_0x496649,_0x291f5e(0x4f3))?logger[_0x291f5e(0x472)](_0x291f5e(0x6d3)+_0x291f5e(0x5bf)+'s\x20updated:'+'\x20'+_0x19279f):logger[_0x291f5e(0x472)]('Analysis\x20f'+_0x291f5e(0x6d8)+_0x291f5e(0x5e1)+_0x19279f);const _0x941dcd={};_0x941dcd['type']=_0x291f5e(0x69a),_0x941dcd[_0x291f5e(0x69a)]=_0x291f5e(0x21d)+_0x291f5e(0x640)+_0x291f5e(0x5b1)+_0x291f5e(0x698)+_0x4964ea+(_0x291f5e(0x406)+_0x291f5e(0x2b2))+_0x19279f;const _0x2cf4f9={};_0x2cf4f9['analysisId']=_0x4964ea,_0x2cf4f9['status']=_0x19279f,_0x2cf4f9[_0x291f5e(0x5a1)]=_0xb75986[_0x291f5e(0x5a1)],_0x2cf4f9['completed']=!![];const _0x542d4b={};return _0x542d4b[_0x291f5e(0x239)]=[_0x941dcd],_0x542d4b['structured'+_0x291f5e(0x4da)]=_0x2cf4f9,_0x542d4b;}const _0x3b2a1b=_0xf6b733[_0x2ec072];if(_0x3b2a1b){const _0x1a4073={};_0x1a4073[_0x291f5e(0x205)]=0x64;const _0x1261a8={'method':_0x291f5e(0x572)+'ons/progre'+'ss','params':{'progressToken':typeof _0x3f4a60==='string'?_0x3f4a60:String(_0x3f4a60),'progress':_0x3b2a1b[_0x291f5e(0x6ac)]!==null?_0x3b2a1b[_0x291f5e(0x6ac)]:_0x68e222['AqScL'](_0x2ec072,_0x68e222[_0x291f5e(0x411)])?_0x2201b0:_0x3b2a1b[_0x291f5e(0x4ef)],'message':'['+_0x3b2a1b['id']+']\x20'+_0x3b2a1b[_0x291f5e(0x62e)+'n'],'total':_0x171a26,..._0x3b2a1b[_0x291f5e(0x6ac)]!==null&&_0x2ec072===_0x68e222[_0x291f5e(0x411)]&&_0x1a4073}};await _0x323663(_0x1261a8),_0x3b256d&&logger[_0x291f5e(0x472)](_0x291f5e(0x70f)+_0x291f5e(0x2d5)+_0x291f5e(0x442)+_0x3b2a1b['id']+'\x20('+_0x3b2a1b[_0x291f5e(0x29a)]+')');}else{const _0x19eb33={'method':_0x68e222[_0x291f5e(0x3f6)],'params':{'progressToken':_0x68e222[_0x291f5e(0x4e7)](typeof _0x3f4a60,_0x291f5e(0x385))?_0x3f4a60:_0x68e222[_0x291f5e(0x244)](String,_0x3f4a60),'progress':0x1,'total':0x1,'message':'['+_0x2ec072+(_0x291f5e(0x33c)+_0x291f5e(0x3bc)+_0x291f5e(0x4ee))}};await _0x323663(_0x19eb33);}}else{if(_0x2ec072===_0x291f5e(0x2be)){if(_0xb75986[_0x291f5e(0x6ac)]!==undefined&&_0xb75986[_0x291f5e(0x6ac)]!==null){_0x2201b0=_0xb75986[_0x291f5e(0x6ac)];const _0x2bb5cb=_0xf6b733[_0x2ec072],_0x2a9002={'method':_0x291f5e(0x572)+_0x291f5e(0x21a)+'ss','params':{'progressToken':typeof _0x3f4a60===_0x291f5e(0x385)?_0x3f4a60:String(_0x3f4a60),'progress':_0x2bb5cb[_0x291f5e(0x4ef)],'total':_0x171a26,'message':_0x291f5e(0x44c)+_0x291f5e(0x4a7)+_0x291f5e(0x30e)+_0x291f5e(0x3dc)+_0x2201b0+'%'}};await _0x323663(_0x2a9002);}}}!_0x3b256d&&logger['info'](_0x291f5e(0x58e)+'oken\x20is\x20in'+_0x291f5e(0x6e6)+_0x291f5e(0x2df)+_0x291f5e(0x32e)+_0x291f5e(0x502)+_0x291f5e(0x572)+_0x291f5e(0x1ef)),await new Promise(_0x4bdf6a=>setTimeout(_0x4bdf6a,intervalMs));}catch(_0x31dbc8){logger[_0x291f5e(0x369)]('Error\x20chec'+_0x291f5e(0x680)+_0x291f5e(0x682)+'\x20('+_0x4964ea+'):',_0x31dbc8),await new Promise(_0x7d2fd4=>setTimeout(_0x7d2fd4,intervalMs));}}}catch(_0x468779){logger[_0x291f5e(0x369)](_0x291f5e(0x2a0)+_0x291f5e(0x4f5)+_0x291f5e(0x2fe)+_0x291f5e(0x21c),_0x468779);const _0x4beed5={};_0x4beed5[_0x291f5e(0x403)]=_0x291f5e(0x69a),_0x4beed5['text']=_0x291f5e(0x2a0)+_0x291f5e(0x4f5)+_0x291f5e(0x2fe)+_0x291f5e(0x236)+(_0x468779 instanceof Error?_0x468779[_0x291f5e(0x6e8)]:_0x291f5e(0x3d4)+_0x291f5e(0x2d3));const _0x5e9eb0={};_0x5e9eb0['error']=_0x468779 instanceof Error?_0x468779[_0x291f5e(0x6e8)]:_0x291f5e(0x3d4)+_0x291f5e(0x2d3);const _0x3a3088={};return _0x3a3088[_0x291f5e(0x239)]=[_0x4beed5],_0x3a3088['structured'+_0x291f5e(0x4da)]=_0x5e9eb0,_0x3a3088[_0x291f5e(0x488)]=!![],_0x3a3088;}}),server[a1_0xd5bbd1(0x5e0)+'ol'](a1_0xd5bbd1(0x6f4)+a1_0xd5bbd1(0x57e)+'e',{'title':'Get\x20Sparro'+a1_0xd5bbd1(0x45d)+'e','description':'Get\x20compre'+'hensive\x20gu'+'ide\x20for\x20us'+a1_0xd5bbd1(0x454)+a1_0xd5bbd1(0x2e7)+a1_0xd5bbd1(0x4b8)+a1_0xd5bbd1(0x6f6)+a1_0xd5bbd1(0x326)+a1_0xd5bbd1(0x228)+a1_0xd5bbd1(0x37d)+a1_0xd5bbd1(0x304),'inputSchema':{'section':z['enum'](['overview','configurat'+'ion','tools',a1_0xd5bbd1(0x68b)+'s',a1_0xd5bbd1(0x1e2),a1_0xd5bbd1(0x409),'troublesho'+a1_0xd5bbd1(0x4c6),a1_0xd5bbd1(0x5f2)])[a1_0xd5bbd1(0x4d0)]()[a1_0xd5bbd1(0x3b8)]('Specific\x20s'+'ection\x20of\x20'+a1_0xd5bbd1(0x64e)+a1_0xd5bbd1(0x5d6)+a1_0xd5bbd1(0x6c8)+a1_0xd5bbd1(0x300)+a1_0xd5bbd1(0x2ad)+a1_0xd5bbd1(0x4a1)+'de.')}},async({section:section=a1_0xd5bbd1(0x5f2)})=>{const _0x10988e=a1_0xd5bbd1,_0x42530e={};_0x42530e[_0x10988e(0x372)]=_0x10988e(0x5f2),_0x42530e[_0x10988e(0x61e)]=_0x10988e(0x69a);const _0x140003=_0x42530e;try{logger[_0x10988e(0x472)]('Sparrow\x20MC'+_0x10988e(0x6d9)+_0x10988e(0x260)+section);const _0x54f9d6={};_0x54f9d6[_0x10988e(0x5b9)]='#\x20스패로우\x20MCP'+_0x10988e(0x286)+'MCP는\x20Curso'+_0x10988e(0x556)+'어\x20코드의\x20보안\x20취'+_0x10988e(0x1e7)+_0x10988e(0x330)+'를\x20생성하는\x20Mod'+_0x10988e(0x516)+_0x10988e(0x328)+'서버입니다.\x0a\x0a##'+_0x10988e(0x1f3)+_0x10988e(0x707)+_0x10988e(0x461)+'드의\x20보안\x20취약점\x20'+'자동\x20분석\x0a-\x20**'+_0x10988e(0x5f5)+_0x10988e(0x1e4)+'쉽게\x20이해할\x20수\x20있'+_0x10988e(0x6e3)+_0x10988e(0x3f1)+_0x10988e(0x584)+_0x10988e(0x47e)+_0x10988e(0x352)+_0x10988e(0x3c7)+'생성**:\x20원본\x20코'+'드와\x20안전한\x20코드\x20'+'간의\x20차이점\x20시각화'+'\x0a-\x20**실시간\x20상'+_0x10988e(0x208)+_0x10988e(0x580)+_0x10988e(0x21e)+_0x10988e(0x4a3)+_0x10988e(0x254)+'더,\x20ZIP\x20아카이'+_0x10988e(0x388)+_0x10988e(0x321)+'\x20추적**:\x20상세한'+_0x10988e(0x3b0)+_0x10988e(0x711)+_0x10988e(0x457)+'택\x0a\x0a-\x20**Typ'+_0x10988e(0x54b)+'\x20주요\x20개발\x20언어\x0a'+_0x10988e(0x6dc)+'K**:\x20Model'+_0x10988e(0x21b)+'rotocol\x20구현'+'\x0a-\x20**Ollam'+_0x10988e(0x661)+'합\x20(gpt-oss'+_0x10988e(0x467)+_0x10988e(0x28b)+_0x10988e(0x491)+_0x10988e(0x1f2)+_0x10988e(0x5af)+_0x10988e(0x2b7)+_0x10988e(0x4d1)+_0x10988e(0x609)+_0x10988e(0x606)+_0x10988e(0x6bb)+_0x10988e(0x70e)+_0x10988e(0x24e)+_0x10988e(0x6c3)+_0x10988e(0x4ea),_0x54f9d6[_0x10988e(0x651)+_0x10988e(0x356)]=_0x10988e(0x4f2)+_0x10988e(0x4ff)+'\x20OnDemand\x20'+_0x10988e(0x359)+'\x20Sparrow\x20O'+'nDemand\x20서비'+_0x10988e(0x5ed)+_0x10988e(0x1f7)+_0x10988e(0x2e3)+_0x10988e(0x35a)+_0x10988e(0x2ef)+_0x10988e(0x506)+_0x10988e(0x40d)+_0x10988e(0x541)+_0x10988e(0x2dd)+_0x10988e(0x42d)+_0x10988e(0x344)+_0x10988e(0x6c6)+'는\x20MCP\x20설정에서'+_0x10988e(0x55f)+_0x10988e(0x387)+_0x10988e(0x6cf)+_0x10988e(0x505)+_0x10988e(0x412)+_0x10988e(0x58b)+_0x10988e(0x559)+_0x10988e(0x55b)+_0x10988e(0x6df)+_0x10988e(0x379)+'ws)\x0a\x0a###\x20로'+_0x10988e(0x2cc)+_0x10988e(0x3eb)+_0x10988e(0x668)+_0x10988e(0x233)+_0x10988e(0x6b2)+_0x10988e(0x26c)+_0x10988e(0x250)+_0x10988e(0x399)+_0x10988e(0x51d)+_0x10988e(0x444)+'\x22node\x22,\x0a\x20\x20'+_0x10988e(0x263)+':\x20[\x22./node'+_0x10988e(0x35b)+_0x10988e(0x5a2)+_0x10988e(0x2f4)+_0x10988e(0x2b6)+'ver.js\x22],\x0a'+_0x10988e(0x4a6)+_0x10988e(0x35e)+_0x10988e(0x313)+_0x10988e(0x3ad)+_0x10988e(0x36b)+_0x10988e(0x2ec)+'en\x22,\x0a\x20\x20\x20\x20\x20'+_0x10988e(0x313)+_0x10988e(0x499)+_0x10988e(0x582)+'/ondemand.'+'sparrowclo'+_0x10988e(0x57b)+_0x10988e(0x25a)+_0x10988e(0x62d)+'RL\x22:\x20\x22http'+_0x10988e(0x5ba)+_0x10988e(0x4fe)+_0x10988e(0x45c)+_0x10988e(0x52d)+_0x10988e(0x5de)+_0x10988e(0x6ea)+'\x20\x20\x20\x20\x20\x20\x20\x20\x22N'+_0x10988e(0x285)+_0x10988e(0x565)+_0x10988e(0x29f)+_0x10988e(0x51e)+_0x10988e(0x447)+'##\x20전역\x20설치의\x20'+'경우\x0a\x0a`npm\x20i'+_0x10988e(0x382)+_0x10988e(0x3e7)+'우,\x20절대\x20경로를\x20'+_0x10988e(0x40e)+'전역\x20설치\x20경로를\x20'+_0x10988e(0x6fb)+_0x10988e(0x3dd)+_0x10988e(0x378)+'\x0a\x0a**Window'+'s\x20예시:**\x0a``'+_0x10988e(0x370)+_0x10988e(0x464)+_0x10988e(0x6f7)+_0x10988e(0x6f9)+_0x10988e(0x60b)+_0x10988e(0x4e5)+_0x10988e(0x673)+_0x10988e(0x248)+_0x10988e(0x5fc)+'\x5c\x5cUsers\x5c\x5c<'+_0x10988e(0x625)+_0x10988e(0x234)+(_0x10988e(0x529)+_0x10988e(0x66f)+'odules\x5c\x5c@s'+_0x10988e(0x2f1)+_0x10988e(0x2f4)+_0x10988e(0x40f)+_0x10988e(0x546)+_0x10988e(0x52c)+_0x10988e(0x548)+_0x10988e(0x567)+_0x10988e(0x421)+_0x10988e(0x6a2)+'ondemand-t'+_0x10988e(0x4de)+'\x20\x20\x20\x20\x20\x22SPAR'+'ROW_API_UR'+_0x10988e(0x58f)+_0x10988e(0x497)+_0x10988e(0x325)+_0x10988e(0x498)+_0x10988e(0x63d)+_0x10988e(0x3c4)+_0x10988e(0x6ef)+_0x10988e(0x699)+'host:11434'+_0x10988e(0x522)+_0x10988e(0x39e)+_0x10988e(0x394)+_0x10988e(0x54d)+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x10988e(0x51a)+':\x20\x22develop'+_0x10988e(0x469)+_0x10988e(0x508)+'\x20\x20}\x0a}\x0a```\x0a'+_0x10988e(0x4e2)+'inux\x20예시:**'+_0x10988e(0x55a)+_0x10988e(0x685)+_0x10988e(0x6a9)+_0x10988e(0x66e)+_0x10988e(0x570)+_0x10988e(0x374)+'mand\x22:\x20\x22no'+_0x10988e(0x307)+_0x10988e(0x53d)+_0x10988e(0x427)+_0x10988e(0x636)+_0x10988e(0x35b)+_0x10988e(0x5a2)+_0x10988e(0x2f4)+'p/dist/ser'+_0x10988e(0x201)+_0x10988e(0x4a6)+_0x10988e(0x35e)+_0x10988e(0x313)+_0x10988e(0x3ad)+_0x10988e(0x36b)+_0x10988e(0x2ec)+_0x10988e(0x605)+_0x10988e(0x313)+'W_API_URL\x22'+_0x10988e(0x582)+_0x10988e(0x33e)+_0x10988e(0x25e)+_0x10988e(0x57b)+_0x10988e(0x25a)+_0x10988e(0x62d)+_0x10988e(0x5db)+_0x10988e(0x5ba)+_0x10988e(0x4fe)+_0x10988e(0x45c)+_0x10988e(0x52d)+_0x10988e(0x5de)+_0x10988e(0x6ea)+_0x10988e(0x569)+_0x10988e(0x285)+_0x10988e(0x565)+_0x10988e(0x29f)+_0x10988e(0x51e)+'}\x0a}\x0a```\x0a\x0a*'+_0x10988e(0x2a8)+_0x10988e(0x4aa)+_0x10988e(0x3e9)+_0x10988e(0x336)+_0x10988e(0x4a4)+_0x10988e(0x1f0)+_0x10988e(0x343)+'ist/server'+_0x10988e(0x36f)+_0x10988e(0x5c8)+_0x10988e(0x43d)+'로젝트\x20루트를\x20가리'+'키는\x20`\x22cwd\x22`'+_0x10988e(0x4be)+'\x20`\x22SPARROW'+_0x10988e(0x67f)+'와\x20`\x22SPARRO'+'W_API_URL\x22'+_0x10988e(0x5d4))+('-\x20`\x22OLLAMA'+_0x10988e(0x408)+_0x10988e(0x29b)+_0x10988e(0x432)+_0x10988e(0x50d)+_0x10988e(0x622)+'분석\x20브리핑,\x20안전'+_0x10988e(0x5e4)+_0x10988e(0x34c)+'요.\x20설정하지\x20않아'+_0x10988e(0x590)+'은\x20정상\x20작동합니다'+_0x10988e(0x405)+_0x10988e(0x393)+_0x10988e(0x4e3)+_0x10988e(0x245)+_0x10988e(0x5c2)+'a\x20서버\x20URL로\x20'+_0x10988e(0x42b)+'원격\x20서버의\x20경우\x20'+'`http://19'+'2.168.30.1'+_0x10988e(0x273)+_0x10988e(0x4f9)+_0x10988e(0x404)+_0x10988e(0x46d)+'제\x20Sparrow\x20'+_0x10988e(0x2d8)+_0x10988e(0x215)+_0x10988e(0x3c5)+_0x10988e(0x479)+_0x10988e(0x3fd)+_0x10988e(0x44f)+_0x10988e(0x61f)+'름으로\x20교체하거나\x20'+_0x10988e(0x65d)+_0x10988e(0x345)+_0x10988e(0x2f5)+'세요.\x0a\x0a##\x20Cu'+_0x10988e(0x643)+_0x10988e(0x209)+'이트한\x20후:\x0a\x0a1.'+_0x10988e(0x60f)+_0x10988e(0x3c9)+'\x20Cursor\x20ID'+_0x10988e(0x5f4)+'\x0a3.\x20MCP\x20서버'+_0x10988e(0x355)+'어야\x20합니다\x0a\x0a##'+_0x10988e(0x4d6)+'P\x20서버가\x20연결되었'+_0x10988e(0x540)+_0x10988e(0x537)+_0x10988e(0x4d9)+'\x20상태\x20표시줄\x20또는'+_0x10988e(0x2a2)+_0x10988e(0x39d)+_0x10988e(0x6b1)+_0x10988e(0x5e3)+'\x20(사용법\x20섹션\x20참'+'조)'),_0x54f9d6[_0x10988e(0x22f)]=_0x10988e(0x249)+'용\x20가이드\x0a\x0a서버는'+'\x20다음\x20MCP\x20도구'+_0x10988e(0x1e6)+_0x10988e(0x632)+_0x10988e(0x23d)+_0x10988e(0x200)+_0x10988e(0x320)+_0x10988e(0x45b)+_0x10988e(0x2e8)+_0x10988e(0x252)+_0x10988e(0x3bd)+'tring):\x20분석'+_0x10988e(0x54c)+_0x10988e(0x3f2)+_0x10988e(0x386)+_0x10988e(0x5c0)+_0x10988e(0x38a)+_0x10988e(0x5fd)+_0x10988e(0x679)+_0x10988e(0x50c)+_0x10988e(0x61a)+'분석\x20상태\x0a\x0a**사'+_0x10988e(0x5f6)+_0x10988e(0x1ff)+_0x10988e(0x703)+_0x10988e(0x630)+_0x10988e(0x5c7)+_0x10988e(0x2fa)+_0x10988e(0x4fc)+_0x10988e(0x35f)+_0x10988e(0x417)+_0x10988e(0x26e)+_0x10988e(0x422)+_0x10988e(0x271)+'Id`\x20(strin'+_0x10988e(0x6e4)+_0x10988e(0x39f)+_0x10988e(0x2ca)+_0x10988e(0x439)+'\x0a**반환값:**\x0a'+_0x10988e(0x6fe)+':\x20현재\x20상태\x20(p'+_0x10988e(0x4f8)+_0x10988e(0x513)+_0x10988e(0x48f)+_0x10988e(0x64f)+_0x10988e(0x1e0)+'`:\x20진행률\x20(0-'+_0x10988e(0x338)+_0x10988e(0x2c6)+_0x10988e(0x547)+_0x10988e(0x62c)+'ysis_resul'+'ts\x0a\x0a완료된\x20분석'+_0x10988e(0x23f)+_0x10988e(0x5ce)+_0x10988e(0x61b)+_0x10988e(0x22a)+_0x10988e(0x386)+_0x10988e(0x365)+_0x10988e(0x38a)+_0x10988e(0x6cd)+_0x10988e(0x645)+_0x10988e(0x34d)+_0x10988e(0x471)+_0x10988e(0x26a)+_0x10988e(0x5d7)+'핑\x20(Ollama\x20'+_0x10988e(0x446)+_0x10988e(0x43e)+_0x10988e(0x2db)+_0x10988e(0x5cf)+_0x10988e(0x5ad)+_0x10988e(0x6fa)+_0x10988e(0x2f8)+_0x10988e(0x1e3)+_0x10988e(0x4a9)+_0x10988e(0x6b7)+'string):\x20보'+_0x10988e(0x440)+_0x10988e(0x5dd)+_0x10988e(0x3bd)+_0x10988e(0x32d)+_0x10988e(0x6a4)+_0x10988e(0x47d)+_0x10988e(0x62b)+'\x20`secureCo'+_0x10988e(0x52e)+_0x10988e(0x5a9)+_0x10988e(0x65e)+_0x10988e(0x66b)+_0x10988e(0x309)+_0x10988e(0x60c)+'ef`:\x20안전한\x20코'+'드에\x20대한\x20설명\x20('+_0x10988e(0x4c3)+_0x10988e(0x407)+_0x10988e(0x6d1)+'\x20사항을\x20보여주는\x20'+(_0x10988e(0x437)+_0x10988e(0x5b2)+_0x10988e(0x32b)+'설정되지\x20않은\x20경우'+_0x10988e(0x6eb)+_0x10988e(0x56d)+_0x10988e(0x6fd)+_0x10988e(0x3fb)+_0x10988e(0x5ff)+_0x10988e(0x5b5)+_0x10988e(0x46e)+_0x10988e(0x3af)+_0x10988e(0x288)+_0x10988e(0x2e8)+'*\x0a-\x20`fileP'+_0x10988e(0x705)+'ing\x20배열):\x20분'+_0x10988e(0x292)+_0x10988e(0x2ba)+_0x10988e(0x4f7)+_0x10988e(0x621)+_0x10988e(0x25b)+_0x10988e(0x49b)+_0x10988e(0x5c9)+_0x10988e(0x3cb)+_0x10988e(0x6f1)+_0x10988e(0x2ea)+'alysisId`:'+_0x10988e(0x550)+_0x10988e(0x558)+_0x10988e(0x383)+'상태\x0a-\x20`file'+'PathCount`'+_0x10988e(0x6bf)+'\x20수\x0a\x0a##\x206.\x20'+_0x10988e(0x460)+'p_security'+'\x0a\x0aZIP\x20파일의\x20'+_0x10988e(0x500)+_0x10988e(0x425)+_0x10988e(0x50f)+_0x10988e(0x5ea)+_0x10988e(0x386)+_0x10988e(0x48e)+'파일의\x20경로\x0a-\x20`'+_0x10988e(0x24a)+_0x10988e(0x312)+_0x10988e(0x470)+'\x20파일의\x20이름\x0a\x0a*'+_0x10988e(0x38a)+_0x10988e(0x5fd)+_0x10988e(0x679)+_0x10988e(0x50c)+_0x10988e(0x61a)+_0x10988e(0x480)+'7.\x20analyze'+_0x10988e(0x562)+_0x10988e(0x2f7)+'\x20폴더의\x20보안\x20취약'+'점을\x20분석합니다.\x20'+'폴더는\x20분석\x20전에\x20'+'자동으로\x20압축됩니다'+_0x10988e(0x282)+_0x10988e(0x60e)+_0x10988e(0x227)+_0x10988e(0x435)+_0x10988e(0x68d)+'\x20`zipFileN'+_0x10988e(0x458)+_0x10988e(0x33d)+'성된\x20ZIP\x20파일의'+_0x10988e(0x37f)+_0x10988e(0x4a9)+_0x10988e(0x4ce)+_0x10988e(0x6b8)+'\x0a-\x20`status'+_0x10988e(0x3a0)+'태\x0a\x0a##\x208.\x20t'+_0x10988e(0x318)+'sis_progre'+_0x10988e(0x295)+_0x10988e(0x2a1)+_0x10988e(0x5b7)+_0x10988e(0x347)+_0x10988e(0x298)+_0x10988e(0x564)+_0x10988e(0x27a)+_0x10988e(0x6c7)+_0x10988e(0x45a)+_0x10988e(0x225)+'\x20상태\x20확인\x20간격('+_0x10988e(0x4e9)+_0x10988e(0x652)+_0x10988e(0x478)+_0x10988e(0x1e5)+_0x10988e(0x2d2)+_0x10988e(0x524)+_0x10988e(0x351)+_0x10988e(0x251)+_0x10988e(0x69b))+(_0x10988e(0x1f8)+'EADY`:\x20시작\x20'+_0x10988e(0x2d9)+_0x10988e(0x380)+_0x10988e(0x59f)+_0x10988e(0x6e0)+_0x10988e(0x3c1)+_0x10988e(0x486)+_0x10988e(0x704)+'_PROCESS`:'+_0x10988e(0x272)+_0x10988e(0x38d)+_0x10988e(0x574)),_0x54f9d6[_0x10988e(0x68b)+'s']='#\x20분석\x20제약\x20사항'+_0x10988e(0x617)+_0x10988e(0x4b9)+_0x10988e(0x449)+_0x10988e(0x2a5)+_0x10988e(0x6a1)+_0x10988e(0x4dd)+'(압축\x20후)\x0a\x0a**'+_0x10988e(0x2c4)+_0x10988e(0x6b4)+_0x10988e(0x33a)+_0x10988e(0x4c1)+_0x10988e(0x42e)+_0x10988e(0x656)+_0x10988e(0x4ec)+'Demand\x20API'+_0x10988e(0x289)+_0x10988e(0x2cd)+_0x10988e(0x2bd)+_0x10988e(0x6db)+_0x10988e(0x665)+_0x10988e(0x4f4)+_0x10988e(0x6dd)+_0x10988e(0x57d)+'정\x20확장자만\x20분석하'+_0x10988e(0x694)+'습니다\x20(예:\x20`['+_0x10988e(0x223)+_0x10988e(0x578)+'\x20분석\x20시간\x20제약\x0a'+_0x10988e(0x3a6)+_0x10988e(0x5ac)+_0x10988e(0x695)+'-\x20**중규모\x20파일'+_0x10988e(0x514)+_0x10988e(0x350)+_0x10988e(0x68f)+_0x10988e(0x6c9)+_0x10988e(0x44a)+_0x10988e(0x604)+'*참고사항**:\x0a-'+_0x10988e(0x4d8)+_0x10988e(0x4af)+'Sparrow\x20AP'+'I\x20서버\x20부하에\x20따'+'라\x20달라질\x20수\x20있습'+_0x10988e(0x48d)+_0x10988e(0x48b)+_0x10988e(0x6d6)+_0x10988e(0x568)+_0x10988e(0x60d)+_0x10988e(0x38e)+_0x10988e(0x6b6)+_0x10988e(0x690)+'**\x20Ollama\x20'+_0x10988e(0x518)+_0x10988e(0x5f9)+_0x10988e(0x3f7)+'*:\x20`get_an'+_0x10988e(0x63f)+_0x10988e(0x39a)+'\x20(선택사항)\x0a-\x20'+'**안전한\x20코드\x20생'+'성**:\x20`gene'+'rate_secur'+_0x10988e(0x54e)+'제공\x20(선택사항)\x0a'+'\x0a**Ollama\x20'+_0x10988e(0x22e)+_0x10988e(0x670)+_0x10988e(0x468)+_0x10988e(0x612)+_0x10988e(0x674)+_0x10988e(0x666)+'\x20있어야\x20함\x0a-\x20`'+_0x10988e(0x4ad)+_0x10988e(0x672)+_0x10988e(0x6b9)+_0x10988e(0x4dc)+_0x10988e(0x3ca)+_0x10988e(0x647)+_0x10988e(0x22b)+_0x10988e(0x644)+_0x10988e(0x3f0)+_0x10988e(0x691)+_0x10988e(0x589)+_0x10988e(0x26f)+_0x10988e(0x459)+_0x10988e(0x50b)+_0x10988e(0x224)+_0x10988e(0x247)+_0x10988e(0x1e8)+'능(취약점\x20탐지)은'+_0x10988e(0x646)+'니다.\x0a\x0a##\x20분석'+_0x10988e(0x64c)+_0x10988e(0x56a)+_0x10988e(0x45e)+_0x10988e(0x62f)+_0x10988e(0x46b)+(_0x10988e(0x214)+_0x10988e(0x420)+_0x10988e(0x67a)+_0x10988e(0x677)+_0x10988e(0x243)+_0x10988e(0x3f5)+_0x10988e(0x49f)+_0x10988e(0x60a)+'OST_PROCES'+_0x10988e(0x627)+_0x10988e(0x44b)+_0x10988e(0x3f4)+_0x10988e(0x366)+_0x10988e(0x526)+_0x10988e(0x335)+_0x10988e(0x5fb)+_0x10988e(0x4b7)+_0x10988e(0x261)+_0x10988e(0x2fd)+_0x10988e(0x633)+_0x10988e(0x299)+_0x10988e(0x532)+_0x10988e(0x52b)+_0x10988e(0x629)+_0x10988e(0x255)+_0x10988e(0x3a8)+'de`는\x20`resu'+_0x10988e(0x3b7)+_0x10988e(0x702)+_0x10988e(0x29c)+_0x10988e(0x70a)+_0x10988e(0x21f)+_0x10988e(0x230)+_0x10988e(0x27e)+'\x20각\x20분석은\x20독립적'+_0x10988e(0x599)+_0x10988e(0x416)+_0x10988e(0x38f)+_0x10988e(0x5be)+'\x20이를\x20통해\x20개별적'+_0x10988e(0x689)+_0x10988e(0x34e)+_0x10988e(0x2de)+'제약\x0a\x0a-\x20**Sp'+'arrow\x20OnDe'+_0x10988e(0x51c)+_0x10988e(0x324)+_0x10988e(0x6e9)+_0x10988e(0x5cb)+_0x10988e(0x66a)+'다운로드를\x20위해\x20S'+_0x10988e(0x462)+_0x10988e(0x626)+'웃**:\x20네트워크\x20'+_0x10988e(0x430)+'웃이\x20발생할\x20수\x20있'+_0x10988e(0x28e)+'모리\x20제약\x0a\x0a-\x20대'+'용량\x20파일\x20분석\x20시'+_0x10988e(0x6b5)+_0x10988e(0x33b)+'.\x0a-\x20여러\x20파일을'+_0x10988e(0x20e)+_0x10988e(0x6bd)+'이\x20더욱\x20증가할\x20수'+_0x10988e(0x692)),_0x54f9d6[_0x10988e(0x1e2)]=_0x10988e(0x275)+_0x10988e(0x642)+'세스\x0a\x0a스패로우\x20M'+'CP의\x20보안\x20분석은'+_0x10988e(0x5bc)+_0x10988e(0x1de)+_0x10988e(0x2bc)+_0x10988e(0x635)+'`analyze_f'+_0x10988e(0x543)+_0x10988e(0x6f5)+'yze_files_'+_0x10988e(0x53c)+_0x10988e(0x450)+_0x10988e(0x353)+_0x10988e(0x6f5)+_0x10988e(0x27d)+'_security`'+_0x10988e(0x6a3)+_0x10988e(0x32f)+_0x10988e(0x413)+_0x10988e(0x676)+'일을\x20ZIP\x20형식으'+_0x10988e(0x6d2)+_0x10988e(0x4fd)+_0x10988e(0x4b4)+_0x10988e(0x211)+_0x10988e(0x653)+_0x10988e(0x354)+'\x20S3\x20객체\x20키를\x20'+'획득합니다\x0a\x0a**제'+_0x10988e(0x41f)+'일\x20크기:\x20최대\x201'+'00MB\x0a-\x20ZIP'+'\x20크기:\x20최대\x2010'+_0x10988e(0x305)+_0x10988e(0x31f)+'\x0a**프로세스**:'+_0x10988e(0x3a3)+_0x10988e(0x392)+_0x10988e(0x520)+_0x10988e(0x5eb)+_0x10988e(0x2d6)+_0x10988e(0x3fc)+_0x10988e(0x376)+_0x10988e(0x641)+_0x10988e(0x487)+'-\x20파일명\x0a\x20\x20\x20-'+'\x20분석\x20옵션\x20(확장'+_0x10988e(0x49a)+_0x10988e(0x240)+_0x10988e(0x5b8)+'ysisId`\x20(또'+'는\x20`request'+'Id`)를\x20받습니다'+_0x10988e(0x291)+_0x10988e(0x298)+_0x10988e(0x348)+_0x10988e(0x2a9)+_0x10988e(0x3f3)+_0x10988e(0x2b8)+_0x10988e(0x553)+_0x10988e(0x495)+'DY`)\x0a\x0a###\x20'+_0x10988e(0x69f)+_0x10988e(0x2a3)+_0x10988e(0x237)+_0x10988e(0x593)+_0x10988e(0x23c)+'track_anal'+'ysis_progr'+_0x10988e(0x32a)+_0x10988e(0x1eb)+_0x10988e(0x39b)+_0x10988e(0x3a4)+_0x10988e(0x20b)+_0x10988e(0x602)+_0x10988e(0x59a)+_0x10988e(0x603)+_0x10988e(0x2e2)+'완료)\x0a\x20\x20\x20-\x20분'+_0x10988e(0x221)+_0x10988e(0x25f)+_0x10988e(0x59a)+_0x10988e(0x346)+_0x10988e(0x6c4)+_0x10988e(0x5dc)+_0x10988e(0x3de)+'제,\x20파싱,\x20전처리'+'\x20작업\x20수행\x0a\x20\x20\x20'+'-\x20진행률:\x20약\x201'+_0x10988e(0x6d0)+_0x10988e(0x6ab)+_0x10988e(0x465)+_0x10988e(0x3e2)+_0x10988e(0x4b5)+_0x10988e(0x509)+_0x10988e(0x61d)+_0x10988e(0x485)+_0x10988e(0x357)+(_0x10988e(0x2a4)+_0x10988e(0x212)+_0x10988e(0x3b4)+_0x10988e(0x3e4)+_0x10988e(0x4d5)+_0x10988e(0x6c1)+'\x20\x20-\x20진행률:\x20약'+_0x10988e(0x619)+_0x10988e(0x649)+_0x10988e(0x2d4)+_0x10988e(0x51f)+_0x10988e(0x3ee)+'0%\x0a\x20\x20\x20-\x20`r'+_0x10988e(0x23b)+_0x10988e(0x4e8)+'(`SUCCESS`'+',\x20`FAIL`,\x20'+'`STOP`)\x0a\x0a*'+_0x10988e(0x566)+_0x10988e(0x433)+'analysis_s'+_0x10988e(0x48a)+_0x10988e(0x549)+_0x10988e(0x473)+_0x10988e(0x360)+_0x10988e(0x37e)+'으로\x20주기적\x20상태\x20'+_0x10988e(0x47c)+_0x10988e(0x597)+'단계:\x20분석\x20결과\x20'+_0x10988e(0x52f)+_0x10988e(0x6d4)+'nalysis_re'+_0x10988e(0x710)+_0x10988e(0x3ed)+_0x10988e(0x3a5)+'LETE`\x20상태가\x20'+_0x10988e(0x579)+_0x10988e(0x296)+_0x10988e(0x5a8)+_0x10988e(0x218)+'`SUCCESS`:'+_0x10988e(0x3ec)+_0x10988e(0x31e)+'\x20\x20-\x20`FAIL`'+_0x10988e(0x648)+_0x10988e(0x2c8)+_0x10988e(0x302)+_0x10988e(0x322)+'\x0a3.\x20Sparro'+'w\x20OnDemand'+_0x10988e(0x3a7)+_0x10988e(0x1ec)+_0x10988e(0x4d2)+'.\x20ZIP\x20파일을\x20'+_0x10988e(0x327)+_0x10988e(0x231)+'합니다\x0a5.\x20취약점'+_0x10988e(0x523)+':\x0a\x20\x20\x20-\x20`ch'+_0x10988e(0x6cb)+_0x10988e(0x671)+'자\x0a\x20\x20\x20-\x20`de'+'scription`'+':\x20취약점\x20설명\x0a\x20'+'\x20\x20-\x20`sever'+_0x10988e(0x4ac)+_0x10988e(0x70c)+_0x10988e(0x2cf)+_0x10988e(0x6b0)+_0x10988e(0x64d)+'약점이\x20발견된\x20라인'+_0x10988e(0x3cf)+_0x10988e(0x40a)+_0x10988e(0x6a0)+_0x10988e(0x628)+_0x10988e(0x384)+_0x10988e(0x536)+_0x10988e(0x2f0)+_0x10988e(0x3d3)+_0x10988e(0x4a0)+'환합니다\x0a\x0a**반환'+_0x10988e(0x591)+'alysisId`:'+_0x10988e(0x402)+'status`:\x20논'+_0x10988e(0x701)+'mpleted`\x20또'+_0x10988e(0x6ed)+_0x10988e(0x507)+_0x10988e(0x2cb)+_0x10988e(0x36e)+_0x10988e(0x69d)+'`STOP`)\x0a-\x20'+_0x10988e(0x6cd)+_0x10988e(0x645)+_0x10988e(0x613)+'-\x20`analysi'+'sBrief`:\x20A'+_0x10988e(0x5d7))+(_0x10988e(0x2c9)+_0x10988e(0x23e)+_0x10988e(0x397)+_0x10988e(0x706)+_0x10988e(0x681)+_0x10988e(0x4fa)+'nerate_sec'+_0x10988e(0x22c)+_0x10988e(0x3b2)+_0x10988e(0x349)+'MPLETE`\x20상태'+_0x10988e(0x5c3)+'sult`가\x20`SU'+_0x10988e(0x4db)+_0x10988e(0x6a3)+_0x10988e(0x5e6)+_0x10988e(0x4e6)+'(4단계와\x20동일)\x0a'+'2.\x20취약점\x20정보를'+'\x20파싱합니다\x0a3.\x20'+_0x10988e(0x3e0)+_0x10988e(0x67c)+'를\x20LLM에\x20전달합'+_0x10988e(0x456)+_0x10988e(0x539)+_0x10988e(0x2f8)+'다\x20(Ollama\x20'+_0x10988e(0x2e6)+'\x20코드\x20반환)\x0a5.'+_0x10988e(0x362)+'된\x20안전한\x20코드를\x20'+_0x10988e(0x608)+_0x10988e(0x28c)+'(선택사항)\x20LLM'+_0x10988e(0x216)+_0x10988e(0x294)+_0x10988e(0x43b)+_0x10988e(0x274)+'참고**:\x20Olla'+'ma가\x20설정되지\x20않'+_0x10988e(0x257)+_0x10988e(0x3da)+_0x10988e(0x363)+_0x10988e(0x414)+'ureCode`:\x20'+'생성된\x20안전한\x20코드'+_0x10988e(0x339)+_0x10988e(0x2c1)+_0x10988e(0x1e9)+_0x10988e(0x6a6)+'iff`:\x20원본과\x20'+_0x10988e(0x24b)+_0x10988e(0x2a7)+_0x10988e(0x3ba)+_0x10988e(0x266)+_0x10988e(0x678)+_0x10988e(0x283)+_0x10988e(0x314)+'\x0a[ZIP\x20압축]\x0a'+'\x20\x20\x20\x20↓\x0a[S3\x20'+_0x10988e(0x452)+_0x10988e(0x3ff)+'\x20[analysis'+_0x10988e(0x4cc)+'\x20↓\x0a[상태\x20추적]'+_0x10988e(0x267)+_0x10988e(0x525)+_0x10988e(0x28a)+_0x10988e(0x390)+_0x10988e(0x34b)+'OCESS\x20→\x20CO'+_0x10988e(0x58a)+'\x20↓\x0a[결과\x20다운로'+_0x10988e(0x55d)+_0x10988e(0x59d)+_0x10988e(0x301)+_0x10988e(0x1fc)+'환]\x0a\x20\x20\x20\x20↓\x0a['+_0x10988e(0x278)+_0x10988e(0x303)+_0x10988e(0x331)+'\x20[Diff\x20생성]'+'\x20→\x20[브리핑\x20생성'+_0x10988e(0x24f)+_0x10988e(0x373)+_0x10988e(0x519)+_0x10988e(0x481)+'비동기\x20처리**:\x20'+'분석은\x20백그라운드에'+_0x10988e(0x434)+'니다.\x0a2.\x20**상'+_0x10988e(0x657)+'rack_analy'+_0x10988e(0x59c)+_0x10988e(0x5f8)+_0x10988e(0x44e)+_0x10988e(0x280)+_0x10988e(0x2b4)+_0x10988e(0x557)+'\x20분석\x20결과는\x20Sp')+(_0x10988e(0x232)+_0x10988e(0x5f3)+_0x10988e(0x3b6)+_0x10988e(0x271)+'Id`로\x20여러\x20번\x20'+'조회할\x20수\x20있습니다'+_0x10988e(0x49c)+'\x20통합\x20(선택사항)'+_0x10988e(0x20c)+_0x10988e(0x4cd)+'성은\x20Ollama\x20'+_0x10988e(0x4d4)+_0x10988e(0x50a)+_0x10988e(0x5f0)+_0x10988e(0x5f1)+_0x10988e(0x6f3)),_0x54f9d6[_0x10988e(0x409)]=_0x10988e(0x58d)+_0x10988e(0x6d7)+'코드\x20작성\x0aCurs'+_0x10988e(0x39c)+_0x10988e(0x3b3)+_0x10988e(0x56e)+_0x10988e(0x3df)+'ze_file_se'+_0x10988e(0x3d9)+_0x10988e(0x1fb)+_0x10988e(0x30d)+_0x10988e(0x607)+_0x10988e(0x67d)+'_analysis_'+_0x10988e(0x451)+_0x10988e(0x531)+_0x10988e(0x5c6)+'##\x204.\x20결과\x20가'+_0x10988e(0x238)+'nalysis_re'+'sults`를\x20사용'+'하여\x20상세\x20결과(취'+'약점\x20및\x20분석\x20브리'+_0x10988e(0x269)+_0x10988e(0x476)+_0x10988e(0x650)+_0x10988e(0x5fa)+_0x10988e(0x396)+'을\x20사용하여\x20`ge'+_0x10988e(0x2eb)+_0x10988e(0x512)+_0x10988e(0x4d7)+_0x10988e(0x5d8)+_0x10988e(0x20d)+'\x0a취약점,\x20안전한\x20'+'코드\x20및\x20diff를'+_0x10988e(0x277)+_0x10988e(0x3db)+_0x10988e(0x4ca)+'한\x20코드\x20변경\x20사항'+_0x10988e(0x36a)+_0x10988e(0x438)+_0x10988e(0x2e4)+_0x10988e(0x65b)+'분석\x20및\x20수정\x0a\x0a1'+_0x10988e(0x551)+_0x10988e(0x242)+'rity`로\x20파일\x20'+_0x10988e(0x581)+'track_anal'+_0x10988e(0x592)+_0x10988e(0x371)+'황\x20모니터링\x0a3.\x20'+_0x10988e(0x53a)+'sis_result'+_0x10988e(0x595)+_0x10988e(0x441)+_0x10988e(0x5cf)+'code`로\x20안전한'+_0x10988e(0x490)+'생성된\x20코드\x20검토\x20'+'및\x20적용\x0a\x0a###\x20'+'시나리오\x202:\x20여러'+'\x20파일\x20일괄\x20분석\x0a'+'\x0a1.\x20`analy'+_0x10988e(0x391)+_0x10988e(0x3d7)+'여러\x20파일\x20경로\x20전'+_0x10988e(0x2c5)+_0x10988e(0x5cc)+'_progress`'+'로\x20진행\x20상황\x20모니'+_0x10988e(0x4ed)+_0x10988e(0x593)+_0x10988e(0x42a)+_0x10988e(0x4b2)+'인\x0a4.\x20필요에\x20따'+_0x10988e(0x361)+_0x10988e(0x255)+_0x10988e(0x3a8)+_0x10988e(0x5ae)+'#\x20시나리오\x203:\x20'+_0x10988e(0x530)+_0x10988e(0x3d6)+_0x10988e(0x429)+_0x10988e(0x3d7)+_0x10988e(0x43c)+_0x10988e(0x4c4)+_0x10988e(0x43a)+'ogress`로\x20진'+'행\x20상황\x20모니터링\x0a'+_0x10988e(0x2bf)+_0x10988e(0x63f)+'ults`로\x20전체\x20'+_0x10988e(0x3a1),_0x54f9d6[_0x10988e(0x332)+_0x10988e(0x4c6)]='#\x20문제\x20해결\x20가이'+_0x10988e(0x45f)+'\x20문제\x0a\x0a###\x201'+'.\x20MCP\x20서버\x20연'+'결\x20안\x20됨\x0a\x0a**증'+'상**:\x20MCP\x20서'+_0x10988e(0x4f6)+'\x20나타나지\x20않거나\x20'+_0x10988e(0x5e7)+'니다.\x0a\x0a**해결\x20'+_0x10988e(0x53f)+_0x10988e(0x2b1)+_0x10988e(0x4ba)+_0x10988e(0x6f2)+_0x10988e(0x493)+_0x10988e(0x1f4)+'지\x20확인\x0a-\x20Nod'+_0x10988e(0x571)+'\x20있고\x20PATH에서'+'\x20접근\x20가능한지\x20확'+_0x10988e(0x5cd)+'\x20IDE를\x20완전히\x20'+'재시작\x0a-\x20Curs'+'or의\x20MCP\x20서버'+'\x20로그에서\x20오류\x20메'+'시지\x20확인\x0a\x0a###'+'\x202.\x20Ollama'+_0x10988e(0x554)+_0x10988e(0x683)+_0x10988e(0x535)+_0x10988e(0x6b3)+_0x10988e(0x341)+'\x20발생합니다.\x0a\x0a*'+'*해결\x20방법**:\x0a'+_0x10988e(0x2ae)+'설치되어\x20실행\x20중인'+_0x10988e(0x55e)+_0x10988e(0x381)+_0x10988e(0x3fa)+'_BASE_URL`'+_0x10988e(0x489)+'(기본값:\x20`htt'+_0x10988e(0x34f)+_0x10988e(0x494)+_0x10988e(0x42f)+_0x10988e(0x492)+_0x10988e(0x415)+_0x10988e(0x4a2)+_0x10988e(0x47a)+_0x10988e(0x4d3)+'\x20방화벽\x20설정\x20확인'+_0x10988e(0x6aa)+_0x10988e(0x51b)+_0x10988e(0x41a)+_0x10988e(0x6a5)+_0x10988e(0x2ac)+'합니다.\x0a\x0a**해결'+_0x10988e(0x31d)+_0x10988e(0x596)+_0x10988e(0x26b)+_0x10988e(0x395)+'는지\x20확인\x0a-\x20`S'+'PARROW_API'+_0x10988e(0x35c)+_0x10988e(0x3bf)+_0x10988e(0x2b0)+_0x10988e(0x5ca)+_0x10988e(0x474)+_0x10988e(0x561)+_0x10988e(0x33f)+_0x10988e(0x268)+_0x10988e(0x56f)+_0x10988e(0x1df)+_0x10988e(0x2e5)+'아웃됩니다.\x0a\x0a**'+_0x10988e(0x2e9)+_0x10988e(0x4cb)+_0x10988e(0x4bd)+_0x10988e(0x588)+_0x10988e(0x662)+_0x10988e(0x474)+_0x10988e(0x660)+_0x10988e(0x276)+_0x10988e(0x6ca)+_0x10988e(0x3e6)+_0x10988e(0x57a)+'\x0a\x0a서버는\x20콘솔과\x20'+_0x10988e(0x22d)+_0x10988e(0x43f)+_0x10988e(0x2c0)+_0x10988e(0x41d)+_0x10988e(0x46a)+_0x10988e(0x688)+_0x10988e(0x1fe)+_0x10988e(0x5c5)+_0x10988e(0x1fd)+_0x10988e(0x534)+'rror.log`:'+_0x10988e(0x4cf)+'\x20자세한\x20로깅을\x20활'+(_0x10988e(0x63b)+_0x10988e(0x5c4)+_0x10988e(0x4a8)+_0x10988e(0x400)+_0x10988e(0x53b)+_0x10988e(0x6e1));const _0x301505=_0x54f9d6;let _0x2fe9e9;section===_0x140003[_0x10988e(0x372)]?_0x2fe9e9=Object[_0x10988e(0x419)](_0x301505)[_0x10988e(0x398)](_0x10988e(0x63c)):_0x2fe9e9=_0x301505[section]||_0x301505[_0x10988e(0x5b9)];const _0x5bd56e={};_0x5bd56e[_0x10988e(0x403)]=_0x10988e(0x69a),_0x5bd56e[_0x10988e(0x69a)]=_0x2fe9e9;const _0x104a6c={};_0x104a6c[_0x10988e(0x616)]=section==='all'?_0x10988e(0x5f2):section,_0x104a6c['guide']=_0x2fe9e9;const _0x1499f5={};return _0x1499f5[_0x10988e(0x239)]=[_0x5bd56e],_0x1499f5[_0x10988e(0x482)+_0x10988e(0x4da)]=_0x104a6c,_0x1499f5;}catch(_0x2e971f){logger['error'](_0x10988e(0x30a)+_0x10988e(0x68e)+'w\x20MCP\x20guid'+'e:',_0x2e971f);const _0x44af41=_0x2e971f instanceof Error?_0x2e971f[_0x10988e(0x6e8)]:_0x10988e(0x3d4)+_0x10988e(0x2d3),_0x2e7e68={};_0x2e7e68[_0x10988e(0x403)]=_0x140003[_0x10988e(0x61e)],_0x2e7e68['text']=_0x10988e(0x30a)+_0x10988e(0x65a)+'\x20'+_0x44af41;const _0x16182f={};_0x16182f[_0x10988e(0x369)]=_0x44af41;const _0x231392={};return _0x231392[_0x10988e(0x239)]=[_0x2e7e68],_0x231392[_0x10988e(0x482)+_0x10988e(0x4da)]=_0x16182f,_0x231392['isError']=!![],_0x231392;}});const transport=new StdioServerTransport();logger[a1_0xd5bbd1(0x472)](a1_0xd5bbd1(0x3c0)+'\x20code\x20gene'+a1_0xd5bbd1(0x594)+a1_0xd5bbd1(0x563)+'d');try{const serverFileDir=a1_0x424d0b[a1_0xd5bbd1(0x210)](fileURLToPath(import.meta.url)),projectRoot=a1_0x424d0b[a1_0xd5bbd1(0x203)](serverFileDir,'..'),logsDir=a1_0x424d0b[a1_0xd5bbd1(0x203)](projectRoot,a1_0xd5bbd1(0x4c5));if(!a1_0xb25a37[a1_0xd5bbd1(0x3ae)](logsDir)){const a1_0x4ffeb8={};a1_0x4ffeb8[a1_0xd5bbd1(0x2ed)]=!![],a1_0xb25a37[a1_0xd5bbd1(0x25d)](logsDir,a1_0x4ffeb8);}const combinedPath=a1_0x424d0b['join'](logsDir,'combined.l'+'og'),errorPath=a1_0x424d0b['join'](logsDir,a1_0xd5bbd1(0x297));logger[a1_0xd5bbd1(0x472)](a1_0xd5bbd1(0x52a)+a1_0xd5bbd1(0x5a0)+a1_0xd5bbd1(0x477)+'\x20'+combinedPath+a1_0xd5bbd1(0x4df)+errorPath);}catch(a1_0x351639){logger[a1_0xd5bbd1(0x2d1)]('Warning\x20wh'+a1_0xd5bbd1(0x544)+a1_0xd5bbd1(0x27f)+a1_0xd5bbd1(0x6af)+'ctory:',a1_0x351639);}await server[a1_0xd5bbd1(0x36c)](transport);
@@ -1 +1 @@
1
- const a2_0x38f06d=a2_0xba1c;(function(_0x1040bb,_0x3b3ed2){const _0x78eb04=a2_0xba1c,_0x1e0b81=_0x1040bb();while(!![]){try{const _0x25f1f0=-parseInt(_0x78eb04(0x11c))/0x1+parseInt(_0x78eb04(0x126))/0x2+-parseInt(_0x78eb04(0x17f))/0x3+-parseInt(_0x78eb04(0x186))/0x4+parseInt(_0x78eb04(0xdc))/0x5+parseInt(_0x78eb04(0x141))/0x6+-parseInt(_0x78eb04(0x146))/0x7*(-parseInt(_0x78eb04(0xea))/0x8);if(_0x25f1f0===_0x3b3ed2)break;else _0x1e0b81['push'](_0x1e0b81['shift']());}catch(_0x29f490){_0x1e0b81['push'](_0x1e0b81['shift']());}}}(a2_0x39d5,0x9ea38));const a2_0x4024d6=(function(){let _0x439f0a=!![];return function(_0x475c27,_0x31a78e){const _0x1e9bbc=_0x439f0a?function(){const _0x52f9c7=a2_0xba1c;if(_0x31a78e){const _0x2c864a=_0x31a78e[_0x52f9c7(0xff)](_0x475c27,arguments);return _0x31a78e=null,_0x2c864a;}}:function(){};return _0x439f0a=![],_0x1e9bbc;};}()),a2_0x3c68b3=a2_0x4024d6(this,function(){const _0x3d4dbe=a2_0xba1c,_0x17e3c3={};_0x17e3c3[_0x3d4dbe(0xe8)]=_0x3d4dbe(0xe2)+'+$';const _0x325a6c=_0x17e3c3;return a2_0x3c68b3[_0x3d4dbe(0x176)]()[_0x3d4dbe(0x10b)](_0x325a6c[_0x3d4dbe(0xe8)])[_0x3d4dbe(0x176)]()[_0x3d4dbe(0x107)+'r'](a2_0x3c68b3)['search']('(((.+)+)+)'+'+$');});a2_0x3c68b3();function a2_0x39d5(){const _0x13cf04=['1432280KVGKrj','status','ities','분석\x20결과\x20조회\x20실','message','보안\x20분석\x20시작:\x20','분석할\x20파일\x20경로가','zipFileNam','\x20시작:\x20','pollAnalys','개\x20파일','isArray','시작:\x20','analysisBr','ZIP\x20파일\x20경로가','error','Details:\x20','중\x20파일\x20보안\x20분석','Line:\x20','basename','filePaths','apply','vulnerabil','석\x20요청\x20완료:\x20','alysisResu','분석이\x20실패했습니다','eSecurity','analyzeMul','석\x20요청\x20실패:','constructo','parseVulne','rabilities','GQjMz','search','니다.','다중\x20파일\x20분석\x20요','cureCode','FAIL','지:\x20원본\x20','완료되었습니다.','key','join','completed','uploadFold','분석\x20ID:\x20','STOP','한\x20상태입니다.','KhBbT','Brief','omAnalysis','873018iJmmHy','sparrowSer','push','파일\x20업로드\x20실패:','buildVulne','지\x20않았습니다.','secureCode','\x20->\x20실제\x20','분석\x20ID\x20변경\x20감','getAnalysi','21856BSTaMG','분석\x20상태\x20조회\x20실','MEDIUM','method','File:\x20','ief','완료\x20(분석\x20ID:','폴더\x20경로가\x20제공되','result','analysisId','files','분석\x20결과\x20다운로드','analyzeZip','generateUn','Security','downloadAn','개\x20취약점\x20발견\x20(','File','analyzeFol','안전한\x20코드\x20브리핑','UNKNOWN','\x20생성에\x20실패했습니','cureCodeFr','fileName','info','s3Key','ZIP\x20파일\x20업로드','4022514YCkpPC','isCompleti','analyzeFil','generateAn','개\x20파일\x20경로','98ZAZUZX','progress','mapSeverit','분석\x20요청\x20완료:\x20','success','risk','diff','안전한\x20코드\x20생성\x20','lysis','generateSe','sFromPaths','contexts','분석\x20결과\x20생성\x20완','requestId','드\x20실패:\x20','ANALYSIS','GkHmo','중지\x20요청을\x20받아\x20','분석\x20결과\x20조회:\x20','string','folder.zip','checkerKey','requestAna','length','ile','전처리\x20중입니다.','rabilityDe','filePath','s3Service','LOW','분석이\x20성공적으로\x20','code.java','폴더\x20기반\x20보안\x20분','llmService','CBpDT','input.zip','content','ZIP\x20파일\x20기반\x20','초기화\x20중입니다.','ipleFiles','다중\x20파일\x20보안\x20분','PRE_PROCES','der','Risk\x20Level','석\x20시작:\x20','료:\x20','oHFgq','CRITICAL','toString','erAsZip','READY','Method:\x20','FAILED','\x20실패했습니다.','messages','AXQrG','vice','3401772MAWRse','toUpperCas','yFromRisk','cureCodeBr','INIT','청\x20완료:\x20','보안\x20분석\x20요청\x20실','3374904owNmVf','EYIFP','eventMsgs','SUCCESS','POST_PROCE','입니다.','lineNumber','severity','uploadMult','lts','sResults','uploadFile','fuIeZ','1563075jwAtdW','HIGH','uploadZipF','COMPLETE','Checker:\x20','sStatus','(((.+)+)+)','fileConten','분석\x20브리핑\x20생성에','tipleFiles','분석\x20중입니다.','descriptio','XnvzI','파일\x20경로\x20기반\x20보'];a2_0x39d5=function(){return _0x13cf04;};return a2_0x39d5();}import{LLMService}from'./llm.service.js';import{SparrowService}from'./sparrow.service.js';import{S3Service}from'./s3.service.js';import{DiffUtil}from'../utils/diff.util.js';import{logger}from'../utils/logger.js';import a2_0x3f0bc3 from'path';function a2_0xba1c(_0xae882d,_0x2b7706){_0xae882d=_0xae882d-0xd8;const _0x3df675=a2_0x39d5();let _0x3c68b3=_0x3df675[_0xae882d];return _0x3c68b3;}export class AnalysisService{[a2_0x38f06d(0x167)];['sparrowSer'+a2_0x38f06d(0x17e)];[a2_0x38f06d(0x162)];constructor(){const _0x2e14e1=a2_0x38f06d;this[_0x2e14e1(0x167)]=new LLMService(),this[_0x2e14e1(0x11d)+_0x2e14e1(0x17e)]=new SparrowService(),this[_0x2e14e1(0x162)]=new S3Service();}async[a2_0x38f06d(0x143)+a2_0x38f06d(0x104)](_0x17ca51){const _0x163879=a2_0x38f06d;try{logger['info'](_0x163879(0xef)+_0x17ca51['fileName']);const _0x248236=await this[_0x163879(0x162)][_0x163879(0xda)](_0x17ca51[_0x163879(0xe3)+'t'],_0x17ca51['fileName']);if(!_0x248236[_0x163879(0x14a)])throw new Error('파일\x20업로드\x20실패:'+'\x20'+_0x248236[_0x163879(0xf9)]);const _0x3ef0d5={};_0x3ef0d5[_0x163879(0x13d)]=_0x17ca51[_0x163879(0x13d)],_0x3ef0d5[_0x163879(0xe3)+'t']=_0x17ca51[_0x163879(0xe3)+'t'],_0x3ef0d5[_0x163879(0x13f)]=_0x248236[_0x163879(0x112)];const _0x34ea08=_0x3ef0d5,_0x32d139=await this[_0x163879(0x11d)+_0x163879(0x17e)][_0x163879(0x15c)+_0x163879(0x14e)](_0x34ea08);logger[_0x163879(0x13e)](_0x163879(0x149)+_0x32d139['requestId']);const _0x91eaab={};return _0x91eaab['analysisId']=_0x32d139['analysisId']||_0x32d139[_0x163879(0x153)],_0x91eaab[_0x163879(0xeb)]=_0x32d139[_0x163879(0xeb)],_0x91eaab;}catch(_0x258a0c){logger[_0x163879(0xf9)](_0x163879(0x185)+'패:',_0x258a0c);throw _0x258a0c;}}async['getAnalysi'+'sStatus'](_0x18490a){const _0x2e9c58=a2_0x38f06d,_0x4b7585={};_0x4b7585[_0x2e9c58(0x174)]='PRE_PROCES'+'S',_0x4b7585[_0x2e9c58(0x119)]=function(_0x48a843,_0x4f4afe){return _0x48a843===_0x4f4afe;},_0x4b7585[_0x2e9c58(0x187)]=_0x2e9c58(0x157)+'분석이\x20중지된\x20상태'+_0x2e9c58(0x18b),_0x4b7585[_0x2e9c58(0x10a)]=_0x2e9c58(0x103)+'.';const _0x14abe0=_0x4b7585;try{const _0x4469ed=await this[_0x2e9c58(0x11d)+_0x2e9c58(0x17e)]['getAnalysi'+_0x2e9c58(0xe1)](_0x18490a);let _0x168869=_0x4469ed['progress'];if(_0x168869===undefined){const _0x1ee0a7=String(_0x4469ed['status'])['toUpperCas'+'e']();if(_0x1ee0a7===_0x2e9c58(0xdf))_0x168869=0x64;else{if(_0x1ee0a7===_0x2e9c58(0x155))_0x168869=undefined;else{if(_0x1ee0a7===_0x2e9c58(0x183)||_0x1ee0a7===_0x2e9c58(0x178))_0x168869=0x0;else{if(_0x1ee0a7===_0x14abe0['oHFgq'])_0x168869=0xa;else _0x1ee0a7===_0x2e9c58(0x18a)+'SS'&&(_0x168869=0x5a);}}}}const _0x260d88=String(_0x4469ed['status'])[_0x2e9c58(0x180)+'e']();let _0x1fd208;if(_0x14abe0[_0x2e9c58(0x119)](_0x260d88,'COMPLETE')){const _0x1e52ba=_0x4469ed[_0x2e9c58(0x12e)]?String(_0x4469ed[_0x2e9c58(0x12e)])[_0x2e9c58(0x180)+'e']():undefined;if(_0x1e52ba===_0x2e9c58(0x189))_0x1fd208=_0x2e9c58(0x164)+_0x2e9c58(0x111);else{if(_0x1e52ba===_0x2e9c58(0x10f))_0x1fd208='분석을\x20올바르게\x20완'+'료하지\x20못하고\x20실패'+_0x2e9c58(0x118);else _0x1e52ba===_0x2e9c58(0x117)?_0x1fd208=_0x14abe0[_0x2e9c58(0x187)]:_0x1fd208='분석이\x20완료되었습니'+'다.';}}else{const _0x953a33={};_0x953a33[_0x2e9c58(0x183)]=_0x2e9c58(0x16c),_0x953a33[_0x2e9c58(0x178)]='준비\x20중입니다.',_0x953a33[_0x2e9c58(0x16f)+'S']=_0x2e9c58(0x15f),_0x953a33[_0x2e9c58(0x155)]=_0x2e9c58(0xe6),_0x953a33[_0x2e9c58(0x18a)+'SS']='후처리\x20중입니다.',_0x953a33[_0x2e9c58(0x10f)]=_0x14abe0['GQjMz'],_0x953a33[_0x2e9c58(0x17a)]=_0x2e9c58(0x103)+'.';const _0xa65584=_0x953a33;_0x1fd208=_0xa65584[_0x260d88]||'분석이\x20진행\x20중입니'+'다.';}let _0x3d9281=_0x4469ed[_0x2e9c58(0xeb)];_0x260d88===_0x2e9c58(0xdf)&&_0x4469ed['result']&&(_0x3d9281=_0x4469ed[_0x2e9c58(0x12e)]);const _0x4d9db8={};return _0x4d9db8[_0x2e9c58(0xeb)]=_0x3d9281,_0x4d9db8['result']=_0x4469ed['result'],_0x4d9db8[_0x2e9c58(0x147)]=_0x168869,_0x4d9db8['message']=_0x1fd208,_0x4d9db8;}catch(_0x178632){logger['error'](_0x2e9c58(0x127)+'패:',_0x178632);throw _0x178632;}}async[a2_0x38f06d(0x125)+a2_0x38f06d(0xd9)](_0x34a054){const _0x470959=a2_0x38f06d;try{logger[_0x470959(0x13e)](_0x470959(0x158)+_0x34a054);const _0x3cf2e0=await this['sparrowSer'+_0x470959(0x17e)][_0x470959(0xf3)+_0x470959(0x142)+'on'](_0x34a054),_0x5a3665=_0x3cf2e0[_0x470959(0x12f)]||_0x34a054;_0x5a3665!==_0x34a054&&logger['info'](_0x470959(0x124)+_0x470959(0x110)+_0x34a054+_0x470959(0x123)+_0x5a3665);logger[_0x470959(0x13e)](_0x470959(0x131)+_0x470959(0xf2)+_0x5a3665);const _0x487bd7=await this[_0x470959(0x11d)+_0x470959(0x17e)][_0x470959(0x135)+_0x470959(0x102)+'lts'](_0x5a3665),_0x4a6c6d=this[_0x470959(0x108)+'rabilities'](_0x487bd7),_0x570627=await this[_0x470959(0x167)][_0x470959(0x144)+'alysisBrie'+'f'](_0x487bd7),_0x18a484=_0x570627[_0x470959(0x14a)]?_0x570627[_0x470959(0x16a)]:_0x470959(0xe4)+_0x470959(0x17b);logger[_0x470959(0x13e)](_0x470959(0x152)+_0x470959(0x173)+_0x4a6c6d[_0x470959(0x15d)]+(_0x470959(0x136)+_0x470959(0x116))+_0x5a3665+')');const _0x30ffc9={};return _0x30ffc9[_0x470959(0x12f)]=_0x5a3665,_0x30ffc9['status']=_0x470959(0x114),_0x30ffc9[_0x470959(0x100)+_0x470959(0xec)]=_0x4a6c6d,_0x30ffc9[_0x470959(0xf7)+_0x470959(0x12b)]=_0x18a484,_0x30ffc9;}catch(_0x8ef336){logger[_0x470959(0xf9)](_0x470959(0xed)+'패:',_0x8ef336);throw _0x8ef336;}}async[a2_0x38f06d(0x14f)+a2_0x38f06d(0x13c)+a2_0x38f06d(0x11b)](_0xa6b56a,_0x199188){const _0x2f31fd=a2_0x38f06d,_0x2d51da={};_0x2d51da['fuIeZ']=_0x2f31fd(0x14d)+'실패:';const _0xc105d=_0x2d51da;try{logger[_0x2f31fd(0x13e)](_0x2f31fd(0x14d)+_0x2f31fd(0xf6)+_0xa6b56a);const _0x3e7f3b=await this[_0x2f31fd(0x11d)+_0x2f31fd(0x17e)]['pollAnalys'+_0x2f31fd(0x142)+'on'](_0xa6b56a),_0x1edb91=_0x3e7f3b[_0x2f31fd(0x12f)]||_0xa6b56a;logger[_0x2f31fd(0x13e)]('분석\x20결과\x20다운로드'+'\x20시작:\x20'+_0x1edb91);const _0x1e6a3a=await this[_0x2f31fd(0x11d)+_0x2f31fd(0x17e)][_0x2f31fd(0x135)+'alysisResu'+_0x2f31fd(0xd8)](_0x1edb91),_0x129575=this[_0x2f31fd(0x108)+_0x2f31fd(0x109)](_0x1e6a3a),_0x36c39b=await this[_0x2f31fd(0x167)][_0x2f31fd(0x14f)+_0x2f31fd(0x10e)](_0x199188,_0x129575),_0xd75669=_0x36c39b[_0x2f31fd(0x14a)]?_0x36c39b[_0x2f31fd(0x16a)]:_0x199188,_0x35e28d=await this[_0x2f31fd(0x167)]['generateSe'+_0x2f31fd(0x182)+'ief'](_0x199188,_0xd75669),_0x3f03f1=_0x35e28d[_0x2f31fd(0x14a)]?_0x35e28d['content']:_0x2f31fd(0x139)+_0x2f31fd(0x13b)+'다.',_0x2357be=DiffUtil[_0x2f31fd(0x133)+'ifiedDiff'](_0x199188,_0xd75669,_0x2f31fd(0x165));logger[_0x2f31fd(0x13e)]('안전한\x20코드\x20생성\x20'+_0x2f31fd(0x12c)+'\x20'+_0x1edb91+')');const _0x11a0c7={};return _0x11a0c7[_0x2f31fd(0x122)]=_0xd75669,_0x11a0c7[_0x2f31fd(0x122)+_0x2f31fd(0x11a)]=_0x3f03f1,_0x11a0c7[_0x2f31fd(0x14c)]=_0x2357be,_0x11a0c7;}catch(_0x3958de){logger[_0x2f31fd(0xf9)](_0xc105d[_0x2f31fd(0xdb)],_0x3958de);throw _0x3958de;}}['parseVulne'+a2_0x38f06d(0x109)](_0x43cd9b){const _0x5287e6=a2_0x38f06d,_0x1c14da=[];for(const _0x2e97a3 of _0x43cd9b){if(Array[_0x5287e6(0xf5)](_0x2e97a3))for(const _0x1a5fc2 of _0x2e97a3){_0x1a5fc2[_0x5287e6(0x15b)]&&_0x1c14da['push']({'checkerKey':_0x1a5fc2[_0x5287e6(0x15b)]||'UNKNOWN','description':this[_0x5287e6(0x120)+'rabilityDe'+'scription'](_0x1a5fc2),'severity':this['mapSeverit'+_0x5287e6(0x181)](_0x1a5fc2[_0x5287e6(0x14b)]),'lineNumber':_0x1a5fc2[_0x5287e6(0x18c)],'filePath':_0x1a5fc2['filePaths']&&_0x1a5fc2['filePaths'][_0x5287e6(0x15d)]>0x0?_0x1a5fc2['filePaths'][0x0]:undefined});}else{if(_0x2e97a3[_0x5287e6(0x100)+_0x5287e6(0xec)]&&Array[_0x5287e6(0xf5)](_0x2e97a3['vulnerabil'+_0x5287e6(0xec)]))for(const _0x846e0b of _0x2e97a3[_0x5287e6(0x100)+_0x5287e6(0xec)]){_0x1c14da['push']({'checkerKey':_0x846e0b['checkerKey']||_0x5287e6(0x13a),'description':_0x846e0b[_0x5287e6(0xe7)+'n']||_0x846e0b[_0x5287e6(0xee)]||'설명\x20없음','severity':this[_0x5287e6(0x148)+'y'](_0x846e0b[_0x5287e6(0x18d)]),'lineNumber':_0x846e0b[_0x5287e6(0x18c)],'filePath':_0x846e0b[_0x5287e6(0x161)]});}}}return _0x1c14da;}[a2_0x38f06d(0x120)+a2_0x38f06d(0x160)+'scription'](_0x1711c5){const _0x17762b=a2_0x38f06d,_0x58c1d5=[];_0x1711c5[_0x17762b(0x15b)]&&_0x58c1d5[_0x17762b(0x11e)](_0x17762b(0xe0)+_0x1711c5[_0x17762b(0x15b)]);_0x1711c5[_0x17762b(0x129)]&&_0x58c1d5[_0x17762b(0x11e)](_0x17762b(0x179)+_0x1711c5[_0x17762b(0x129)]);_0x1711c5[_0x17762b(0xfe)]&&_0x1711c5[_0x17762b(0xfe)][_0x17762b(0x15d)]>0x0&&_0x58c1d5[_0x17762b(0x11e)](_0x17762b(0x12a)+_0x1711c5[_0x17762b(0xfe)][0x0]);_0x1711c5['lineNumber']&&_0x58c1d5[_0x17762b(0x11e)](_0x17762b(0xfc)+_0x1711c5[_0x17762b(0x18c)]);_0x1711c5['risk']&&_0x58c1d5['push'](_0x17762b(0x171)+':\x20'+_0x1711c5[_0x17762b(0x14b)]);if(_0x1711c5[_0x17762b(0x151)]&&Array[_0x17762b(0xf5)](_0x1711c5[_0x17762b(0x151)])){const _0x55e698=[];for(const _0x1ffd30 of _0x1711c5[_0x17762b(0x151)]){if(_0x1ffd30[_0x17762b(0x188)]&&Array['isArray'](_0x1ffd30['eventMsgs']))for(const _0x7f34a of _0x1ffd30[_0x17762b(0x188)]){if(_0x7f34a[_0x17762b(0x17c)]&&Array[_0x17762b(0xf5)](_0x7f34a[_0x17762b(0x17c)]))for(const _0x2555b3 of _0x7f34a[_0x17762b(0x17c)]){_0x2555b3['message']&&_0x55e698[_0x17762b(0x11e)](_0x2555b3['message']);}}}_0x55e698[_0x17762b(0x15d)]>0x0&&_0x58c1d5['push'](_0x17762b(0xfa)+_0x55e698[_0x17762b(0x113)](';\x20'));}return _0x58c1d5[_0x17762b(0x15d)]>0x0?_0x58c1d5[_0x17762b(0x113)](',\x20'):'취약점이\x20발견되었습'+_0x17762b(0x10c);}[a2_0x38f06d(0x148)+a2_0x38f06d(0x181)](_0x17d6f7){const _0x2e8c6c=a2_0x38f06d,_0x2f90b6=typeof _0x17d6f7===_0x2e8c6c(0x159)?parseInt(_0x17d6f7):_0x17d6f7;if(_0x2f90b6<=0x2)return _0x2e8c6c(0xdd);else return _0x2f90b6===0x3?_0x2e8c6c(0x128):'LOW';}async[a2_0x38f06d(0x105)+a2_0x38f06d(0xe5)+a2_0x38f06d(0x134)](_0x3312ba){const _0x2bf90c=a2_0x38f06d,_0x2104f2={};_0x2104f2[_0x2bf90c(0x156)]='분석할\x20파일이\x20없습'+_0x2bf90c(0x10c);const _0x1f2122=_0x2104f2;try{logger[_0x2bf90c(0x13e)](_0x2bf90c(0x16e)+'석\x20시작:\x20'+_0x3312ba[_0x2bf90c(0x130)][_0x2bf90c(0x15d)]+_0x2bf90c(0xf4));if(!_0x3312ba[_0x2bf90c(0x130)]||_0x3312ba[_0x2bf90c(0x130)][_0x2bf90c(0x15d)]===0x0)throw new Error(_0x1f2122[_0x2bf90c(0x156)]);const _0x47b450=await this['s3Service'][_0x2bf90c(0x18e)+_0x2bf90c(0x16d)](_0x3312ba[_0x2bf90c(0x130)],_0x3312ba[_0x2bf90c(0xf1)+'e']);if(!_0x47b450[_0x2bf90c(0x14a)])throw new Error(_0x2bf90c(0x11f)+'\x20'+_0x47b450[_0x2bf90c(0xf9)]);const _0x4c1ebd=_0x3312ba[_0x2bf90c(0x130)][0x0]?.[_0x2bf90c(0x13d)]||_0x2bf90c(0x169),_0x5a2e78={};_0x5a2e78['fileName']=_0x3312ba[_0x2bf90c(0xf1)+'e']||_0x4c1ebd,_0x5a2e78[_0x2bf90c(0xe3)+'t']='',_0x5a2e78[_0x2bf90c(0x13f)]=_0x47b450[_0x2bf90c(0x112)];const _0xef205f=_0x5a2e78,_0x521cc0=await this[_0x2bf90c(0x11d)+_0x2bf90c(0x17e)][_0x2bf90c(0x15c)+_0x2bf90c(0x14e)](_0xef205f);logger[_0x2bf90c(0x13e)](_0x2bf90c(0x10d)+_0x2bf90c(0x184)+_0x521cc0[_0x2bf90c(0x153)]);const _0x21c349={};return _0x21c349[_0x2bf90c(0x12f)]=_0x521cc0['analysisId']||_0x521cc0[_0x2bf90c(0x153)],_0x21c349[_0x2bf90c(0xeb)]=_0x521cc0[_0x2bf90c(0xeb)],_0x21c349;}catch(_0xd16314){logger['error'](_0x2bf90c(0x16e)+_0x2bf90c(0x106),_0xd16314);throw _0xd16314;}}async[a2_0x38f06d(0x105)+a2_0x38f06d(0xe5)+'FromPaths'](_0x21b89f,_0x864948){const _0x4a4f37=a2_0x38f06d,_0x3b9cd1={};_0x3b9cd1[_0x4a4f37(0x17d)]=function(_0x3b3370,_0x57b28e){return _0x3b3370||_0x57b28e;};const _0x51b71a=_0x3b9cd1;try{logger[_0x4a4f37(0x13e)]('파일\x20경로\x20기반\x20다'+_0x4a4f37(0xfb)+_0x4a4f37(0xf2)+_0x21b89f['length']+_0x4a4f37(0x145));if(!_0x21b89f||_0x21b89f['length']===0x0)throw new Error(_0x4a4f37(0xf0)+'\x20없습니다.');const _0x292e15=await this[_0x4a4f37(0x162)][_0x4a4f37(0xda)+_0x4a4f37(0x150)](_0x21b89f,_0x864948);if(!_0x292e15[_0x4a4f37(0x14a)])throw new Error('파일\x20업로드\x20실패:'+'\x20'+_0x292e15[_0x4a4f37(0xf9)]);const _0x1e134c=a2_0x3f0bc3[_0x4a4f37(0xfd)](_0x21b89f[0x0])||_0x4a4f37(0x169),_0x5e779e={'fileName':_0x51b71a[_0x4a4f37(0x17d)](_0x864948,_0x1e134c),'fileContent':'','s3Key':_0x292e15[_0x4a4f37(0x112)]},_0x555f41=await this['sparrowSer'+_0x4a4f37(0x17e)][_0x4a4f37(0x15c)+_0x4a4f37(0x14e)](_0x5e779e);logger[_0x4a4f37(0x13e)]('파일\x20경로\x20기반\x20분'+_0x4a4f37(0x101)+_0x555f41[_0x4a4f37(0x153)]);const _0x4d778b={};return _0x4d778b[_0x4a4f37(0x12f)]=_0x555f41['analysisId']||_0x555f41[_0x4a4f37(0x153)],_0x4d778b['status']=_0x555f41['status'],_0x4d778b;}catch(_0x2c7f04){logger[_0x4a4f37(0xf9)](_0x4a4f37(0xe9)+'안\x20분석\x20요청\x20실패'+':',_0x2c7f04);throw _0x2c7f04;}}async[a2_0x38f06d(0x132)+a2_0x38f06d(0x137)](_0x4bc2b4,_0x240eb6){const _0x7aff39=a2_0x38f06d;try{logger[_0x7aff39(0x13e)](_0x7aff39(0x16b)+_0x7aff39(0xef)+_0x4bc2b4);if(!_0x4bc2b4)throw new Error(_0x7aff39(0xf8)+'\x20제공되지\x20않았습니'+'다.');const _0x33de16=await this[_0x7aff39(0x162)][_0x7aff39(0xde)+_0x7aff39(0x15e)](_0x4bc2b4);if(!_0x33de16['success'])throw new Error(_0x7aff39(0x140)+'\x20실패:\x20'+_0x33de16[_0x7aff39(0xf9)]);const _0x220ac5=_0x240eb6||a2_0x3f0bc3[_0x7aff39(0xfd)](_0x4bc2b4)||_0x7aff39(0x169),_0x7b2189={};_0x7b2189['fileName']=_0x220ac5,_0x7b2189['fileConten'+'t']='',_0x7b2189[_0x7aff39(0x13f)]=_0x33de16[_0x7aff39(0x112)];const _0xe91bd5=_0x7b2189,_0x934019=await this[_0x7aff39(0x11d)+'vice'][_0x7aff39(0x15c)+_0x7aff39(0x14e)](_0xe91bd5);logger[_0x7aff39(0x13e)](_0x7aff39(0x16b)+_0x7aff39(0x149)+_0x934019['requestId']);const _0x4aac94={};return _0x4aac94['analysisId']=_0x934019[_0x7aff39(0x12f)]||_0x934019[_0x7aff39(0x153)],_0x4aac94[_0x7aff39(0xeb)]=_0x934019['status'],_0x4aac94;}catch(_0xb4ff3f){logger[_0x7aff39(0xf9)](_0x7aff39(0x16b)+'보안\x20분석\x20요청\x20실'+'패:',_0xb4ff3f);throw _0xb4ff3f;}}async[a2_0x38f06d(0x138)+a2_0x38f06d(0x170)](_0x5d7b2c,_0x274ff8){const _0x5e3ecb=a2_0x38f06d;try{logger[_0x5e3ecb(0x13e)](_0x5e3ecb(0x166)+_0x5e3ecb(0x172)+_0x5d7b2c);if(!_0x5d7b2c)throw new Error(_0x5e3ecb(0x12d)+_0x5e3ecb(0x121));const _0x553cc6=await this['s3Service'][_0x5e3ecb(0x115)+_0x5e3ecb(0x177)](_0x5d7b2c,_0x274ff8);if(!_0x553cc6[_0x5e3ecb(0x14a)])throw new Error('폴더\x20압축\x20및\x20업로'+_0x5e3ecb(0x154)+_0x553cc6[_0x5e3ecb(0xf9)]);const _0x3546e0=_0x274ff8||a2_0x3f0bc3[_0x5e3ecb(0xfd)](_0x5d7b2c)||_0x5e3ecb(0x15a),_0x42c995={};_0x42c995['fileName']=_0x3546e0,_0x42c995['fileConten'+'t']='',_0x42c995['s3Key']=_0x553cc6['key'];const _0x5c5234=_0x42c995,_0x3a4056=await this[_0x5e3ecb(0x11d)+'vice'][_0x5e3ecb(0x15c)+_0x5e3ecb(0x14e)](_0x5c5234);logger[_0x5e3ecb(0x13e)]('폴더\x20기반\x20분석\x20요'+_0x5e3ecb(0x184)+_0x3a4056['requestId']);const _0x5aa13c={};return _0x5aa13c[_0x5e3ecb(0x12f)]=_0x3a4056[_0x5e3ecb(0x12f)]||_0x3a4056[_0x5e3ecb(0x153)],_0x5aa13c[_0x5e3ecb(0xeb)]=_0x3a4056[_0x5e3ecb(0xeb)],_0x5aa13c;}catch(_0x27999f){logger[_0x5e3ecb(0xf9)](_0x5e3ecb(0x166)+_0x5e3ecb(0x106),_0x27999f);throw _0x27999f;}}['mapSeverit'+'y'](_0x4bdb64){const _0x3b4d57=a2_0x38f06d,_0x236931={};_0x236931['CBpDT']=_0x3b4d57(0x163);const _0x3490cf=_0x236931,_0x4b9466={};_0x4b9466[_0x3b4d57(0xdd)]='HIGH',_0x4b9466[_0x3b4d57(0x175)]='HIGH',_0x4b9466[_0x3b4d57(0x128)]=_0x3b4d57(0x128),_0x4b9466['LOW']=_0x3490cf[_0x3b4d57(0x168)],_0x4b9466['INFO']=_0x3490cf[_0x3b4d57(0x168)];const _0x2946d1=_0x4b9466;return _0x2946d1[_0x4bdb64?.['toUpperCas'+'e']()]||_0x3b4d57(0x128);}}
1
+ const a2_0xff9577=a2_0x21f9;(function(_0x3d9eaf,_0x11ccd7){const _0x4314f1=a2_0x21f9,_0x4cb2fa=_0x3d9eaf();while(!![]){try{const _0x8efd56=parseInt(_0x4314f1(0x74))/0x1+-parseInt(_0x4314f1(0x10c))/0x2*(-parseInt(_0x4314f1(0x101))/0x3)+-parseInt(_0x4314f1(0xae))/0x4*(parseInt(_0x4314f1(0xea))/0x5)+parseInt(_0x4314f1(0xbe))/0x6+-parseInt(_0x4314f1(0x7a))/0x7*(parseInt(_0x4314f1(0xba))/0x8)+parseInt(_0x4314f1(0x76))/0x9*(-parseInt(_0x4314f1(0xb9))/0xa)+-parseInt(_0x4314f1(0xa2))/0xb*(-parseInt(_0x4314f1(0xa7))/0xc);if(_0x8efd56===_0x11ccd7)break;else _0x4cb2fa['push'](_0x4cb2fa['shift']());}catch(_0x485cfc){_0x4cb2fa['push'](_0x4cb2fa['shift']());}}}(a2_0xc554,0xb80bf));const a2_0x3d3062=(function(){let _0x3a7805=!![];return function(_0x3e5725,_0x14b7a8){const _0x249e62=_0x3a7805?function(){const _0x2a7e48=a2_0x21f9;if(_0x14b7a8){const _0x15dd89=_0x14b7a8[_0x2a7e48(0x10a)](_0x3e5725,arguments);return _0x14b7a8=null,_0x15dd89;}}:function(){};return _0x3a7805=![],_0x249e62;};}()),a2_0x2a4ba3=a2_0x3d3062(this,function(){const _0x127f77=a2_0x21f9;return a2_0x2a4ba3[_0x127f77(0xb1)]()['search'](_0x127f77(0xf8)+'+$')[_0x127f77(0xb1)]()[_0x127f77(0xdd)+'r'](a2_0x2a4ba3)['search'](_0x127f77(0xf8)+'+$');});a2_0x2a4ba3();import{LLMService}from'./llm.service.js';import{SparrowService}from'./sparrow.service.js';import{S3Service}from'./s3.service.js';import{DiffUtil}from'../utils/diff.util.js';import{logger}from'../utils/logger.js';import a2_0x5135b7 from'path';export class AnalysisService{['llmService'];[a2_0xff9577(0xa3)+a2_0xff9577(0xb5)];[a2_0xff9577(0x7d)];constructor(){const _0x5f225f=a2_0xff9577;this[_0x5f225f(0x11b)]=new LLMService(),this[_0x5f225f(0xa3)+'vice']=new SparrowService(),this[_0x5f225f(0x7d)]=new S3Service();}async[a2_0xff9577(0x73)+a2_0xff9577(0xd7)](_0xc98686){const _0xb8f6f=a2_0xff9577,_0x3122c8={};_0x3122c8[_0xb8f6f(0x7c)]=_0xb8f6f(0xc2)+'패:';const _0x14228d=_0x3122c8;try{logger[_0xb8f6f(0x103)]('보안\x20분석\x20시작:\x20'+_0xc98686[_0xb8f6f(0x91)]);const _0x5a2ec4=await this[_0xb8f6f(0x7d)][_0xb8f6f(0x10b)](_0xc98686[_0xb8f6f(0x8b)+'t'],_0xc98686['fileName']);if(!_0x5a2ec4[_0xb8f6f(0xf6)])throw new Error(_0xb8f6f(0x89)+'\x20'+_0x5a2ec4[_0xb8f6f(0xc4)]);const _0x2c96ff={};_0x2c96ff['fileName']=_0xc98686[_0xb8f6f(0x91)],_0x2c96ff[_0xb8f6f(0x8b)+'t']=_0xc98686[_0xb8f6f(0x8b)+'t'],_0x2c96ff[_0xb8f6f(0x97)]=_0x5a2ec4[_0xb8f6f(0x112)];const _0x55ba54=_0x2c96ff,_0x196de9=await this[_0xb8f6f(0xa3)+_0xb8f6f(0xb5)][_0xb8f6f(0xdb)+_0xb8f6f(0xc9)](_0x55ba54);logger[_0xb8f6f(0x103)]('분석\x20요청\x20완료:\x20'+_0x196de9[_0xb8f6f(0xd5)]);const _0x3036ae={};return _0x3036ae[_0xb8f6f(0x10e)]=_0x196de9[_0xb8f6f(0x10e)]||_0x196de9[_0xb8f6f(0xd5)],_0x3036ae[_0xb8f6f(0xca)]=_0x196de9[_0xb8f6f(0xca)],_0x3036ae;}catch(_0x47d893){logger['error'](_0x14228d[_0xb8f6f(0x7c)],_0x47d893);throw _0x47d893;}}async[a2_0xff9577(0xa9)+'sStatus'](_0x28d847){const _0x554cc9=a2_0xff9577,_0x504917={'ybDgJ':function(_0x992eb4,_0x47dfb9){return _0x992eb4(_0x47dfb9);},'nWQIx':_0x554cc9(0xcb),'NFhcA':_0x554cc9(0x113)+_0x554cc9(0xb3)+_0x554cc9(0xd9),'ZXlOI':'분석이\x20완료되었습니'+'다.'};try{const _0x5871c0=await this[_0x554cc9(0xa3)+_0x554cc9(0xb5)][_0x554cc9(0xa9)+_0x554cc9(0xf1)](_0x28d847);let _0x5cd623=_0x5871c0['progress'];if(_0x5cd623===undefined){const _0x30647a=_0x504917[_0x554cc9(0xd8)](String,_0x5871c0[_0x554cc9(0xca)])[_0x554cc9(0xf2)+'e']();if(_0x30647a===_0x504917[_0x554cc9(0xb6)])_0x5cd623=0x64;else{if(_0x30647a==='ANALYSIS')_0x5cd623=undefined;else{if(_0x30647a===_0x554cc9(0x79)||_0x30647a==='READY')_0x5cd623=0x0;else{if(_0x30647a==='PRE_PROCES'+'S')_0x5cd623=0xa;else _0x30647a==='POST_PROCE'+'SS'&&(_0x5cd623=0x5a);}}}}const _0x3a1374=String(_0x5871c0[_0x554cc9(0xca)])[_0x554cc9(0xf2)+'e']();let _0x1db7c0;if(_0x3a1374==='COMPLETE'){const _0x11f7ae=_0x5871c0[_0x554cc9(0x105)]?String(_0x5871c0[_0x554cc9(0x105)])[_0x554cc9(0xf2)+'e']():undefined;if(_0x11f7ae==='SUCCESS')_0x1db7c0='분석이\x20성공적으로\x20'+_0x554cc9(0x93);else{if(_0x11f7ae===_0x554cc9(0x81))_0x1db7c0=_0x504917['NFhcA'];else _0x11f7ae==='STOP'?_0x1db7c0='중지\x20요청을\x20받아\x20'+_0x554cc9(0xd0)+_0x554cc9(0x98):_0x1db7c0=_0x504917[_0x554cc9(0xc1)];}}else{const _0x5a3e30={};_0x5a3e30[_0x554cc9(0x79)]=_0x554cc9(0x102),_0x5a3e30[_0x554cc9(0x94)]=_0x554cc9(0x8c),_0x5a3e30[_0x554cc9(0x99)+'S']=_0x554cc9(0xe9),_0x5a3e30['ANALYSIS']=_0x554cc9(0xe8),_0x5a3e30['POST_PROCE'+'SS']='후처리\x20중입니다.',_0x5a3e30['FAIL']=_0x554cc9(0xe0)+'.',_0x5a3e30[_0x554cc9(0x90)]=_0x554cc9(0xe0)+'.';const _0x118999=_0x5a3e30;_0x1db7c0=_0x118999[_0x3a1374]||'분석이\x20진행\x20중입니'+'다.';}let _0x5f2856=_0x5871c0[_0x554cc9(0xca)];_0x3a1374===_0x554cc9(0xcb)&&_0x5871c0[_0x554cc9(0x105)]&&(_0x5f2856=_0x5871c0['result']);const _0x4c664d={};return _0x4c664d[_0x554cc9(0xca)]=_0x5f2856,_0x4c664d[_0x554cc9(0x105)]=_0x5871c0['result'],_0x4c664d[_0x554cc9(0xd1)]=_0x5cd623,_0x4c664d[_0x554cc9(0xff)]=_0x1db7c0,_0x4c664d;}catch(_0x454fa9){logger[_0x554cc9(0xc4)](_0x554cc9(0x106)+'패:',_0x454fa9);throw _0x454fa9;}}async[a2_0xff9577(0xa9)+'sResults'](_0x4c7dde){const _0x2673c9=a2_0xff9577,_0x12d19d={};_0x12d19d['ghweS']=function(_0x471510,_0x52f036){return _0x471510!==_0x52f036;};const _0xdbaf7b=_0x12d19d;try{logger[_0x2673c9(0x103)](_0x2673c9(0x7b)+_0x4c7dde);const _0x3e0edb=await this[_0x2673c9(0xa3)+_0x2673c9(0xb5)][_0x2673c9(0x117)+_0x2673c9(0x92)+'on'](_0x4c7dde),_0x3dd2ad=_0x3e0edb['result']?String(_0x3e0edb[_0x2673c9(0x105)])[_0x2673c9(0xf2)+'e']():undefined;let _0x2fe8d6;_0x3dd2ad==='FAIL'||_0x3dd2ad==='STOP'?_0x2fe8d6='failed':_0x2fe8d6=_0x2673c9(0x110);const _0x4e80b6=_0x3e0edb['analysisId']||_0x4c7dde;_0xdbaf7b[_0x2673c9(0x121)](_0x4e80b6,_0x4c7dde)&&logger['info']('분석\x20ID\x20변경\x20감'+_0x2673c9(0x7f)+_0x4c7dde+_0x2673c9(0xa6)+_0x4e80b6);logger[_0x2673c9(0x103)](_0x2673c9(0xad)+_0x2673c9(0xa4)+_0x4e80b6);const _0x198064=await this[_0x2673c9(0xa3)+'vice'][_0x2673c9(0xe7)+_0x2673c9(0x6f)+_0x2673c9(0x96)](_0x4e80b6),_0x38c312=this[_0x2673c9(0x119)+_0x2673c9(0xac)](_0x198064),_0x5b03f0=await this[_0x2673c9(0x11b)][_0x2673c9(0x77)+_0x2673c9(0xd2)+'f'](_0x198064),_0x3467d8=_0x5b03f0[_0x2673c9(0xf6)]?_0x5b03f0[_0x2673c9(0xb7)]:_0x2673c9(0x80)+_0x2673c9(0xf5);logger[_0x2673c9(0x103)]('분석\x20결과\x20생성\x20완'+_0x2673c9(0x9f)+_0x38c312[_0x2673c9(0x6c)]+(_0x2673c9(0x72)+_0x2673c9(0x6a))+_0x4e80b6+')');const _0x58b351={};return _0x58b351[_0x2673c9(0x10e)]=_0x4e80b6,_0x58b351['status']=_0x2fe8d6,_0x58b351[_0x2673c9(0x105)]=_0x3dd2ad,_0x58b351[_0x2673c9(0xaf)+_0x2673c9(0xb0)]=_0x38c312,_0x58b351[_0x2673c9(0x9b)+'ief']=_0x3467d8,_0x58b351;}catch(_0x4443cd){logger['error'](_0x2673c9(0x100)+'패:',_0x4443cd);throw _0x4443cd;}}async['generateSe'+a2_0xff9577(0xb4)+'omAnalysis'](_0x19f776,_0x1f1831){const _0x46b261=a2_0xff9577,_0x580920={'Vgode':function(_0x11d913,_0x124cf4){return _0x11d913(_0x124cf4);}};try{logger[_0x46b261(0x103)](_0x46b261(0xd6)+_0x46b261(0xf0)+_0x19f776);const _0x4e9617=await this[_0x46b261(0xa3)+_0x46b261(0xb5)][_0x46b261(0x117)+_0x46b261(0x92)+'on'](_0x19f776),_0x6e12aa=_0x4e9617[_0x46b261(0x105)]?_0x580920['Vgode'](String,_0x4e9617[_0x46b261(0x105)])[_0x46b261(0xf2)+'e']():undefined;if(_0x6e12aa&&_0x6e12aa!==_0x46b261(0x111))throw new Error(_0x46b261(0x116)+_0x46b261(0x8f)+'.\x20result='+_0x6e12aa+(_0x46b261(0x84)+_0x46b261(0x11c)+_0x46b261(0xc6)+'없습니다.)'));const _0x2b6714=_0x4e9617[_0x46b261(0x10e)]||_0x19f776;logger[_0x46b261(0x103)](_0x46b261(0xad)+_0x46b261(0xa4)+_0x2b6714);const _0x5d77e8=await this[_0x46b261(0xa3)+_0x46b261(0xb5)][_0x46b261(0xe7)+_0x46b261(0x6f)+_0x46b261(0x96)](_0x2b6714),_0x5d0228=this[_0x46b261(0x119)+_0x46b261(0xac)](_0x5d77e8),_0x52b5cd=await this[_0x46b261(0x11b)][_0x46b261(0x82)+_0x46b261(0xeb)](_0x1f1831,_0x5d0228),_0x394376=_0x52b5cd[_0x46b261(0xf6)]?_0x52b5cd['content']:_0x1f1831,_0x13b4cb=await this['llmService'][_0x46b261(0x82)+_0x46b261(0xab)+_0x46b261(0x71)](_0x1f1831,_0x394376),_0x3c2acb=_0x13b4cb['success']?_0x13b4cb['content']:'안전한\x20코드\x20브리핑'+'\x20생성에\x20실패했습니'+'다.',_0x19b412=DiffUtil['generateUn'+'ifiedDiff'](_0x1f1831,_0x394376,_0x46b261(0xde));logger[_0x46b261(0x103)](_0x46b261(0xd6)+_0x46b261(0xef)+'\x20'+_0x2b6714+')');const _0x181874={};return _0x181874[_0x46b261(0xcc)]=_0x394376,_0x181874['secureCode'+'Brief']=_0x3c2acb,_0x181874[_0x46b261(0x8a)]=_0x19b412,_0x181874;}catch(_0x406e48){logger[_0x46b261(0xc4)](_0x46b261(0xd6)+_0x46b261(0xce),_0x406e48);throw _0x406e48;}}[a2_0xff9577(0x119)+a2_0xff9577(0xac)](_0x538ecf){const _0x1332a0=a2_0xff9577,_0x3bba54=[];for(const _0x2c571e of _0x538ecf){if(Array[_0x1332a0(0xe3)](_0x2c571e))for(const _0x1fa7ee of _0x2c571e){_0x1fa7ee[_0x1332a0(0x11f)]&&_0x3bba54[_0x1332a0(0xed)]({'checkerKey':_0x1fa7ee[_0x1332a0(0x11f)]||_0x1332a0(0x122),'description':this['buildVulne'+'rabilityDe'+_0x1332a0(0x6d)](_0x1fa7ee),'severity':this['mapSeverit'+_0x1332a0(0x109)](_0x1fa7ee[_0x1332a0(0x118)]),'lineNumber':_0x1fa7ee['lineNumber'],'filePath':_0x1fa7ee[_0x1332a0(0xfa)]&&_0x1fa7ee[_0x1332a0(0xfa)]['length']>0x0?_0x1fa7ee[_0x1332a0(0xfa)][0x0]:undefined});}else{if(_0x2c571e['vulnerabil'+_0x1332a0(0xb0)]&&Array[_0x1332a0(0xe3)](_0x2c571e[_0x1332a0(0xaf)+_0x1332a0(0xb0)]))for(const _0x19f013 of _0x2c571e[_0x1332a0(0xaf)+'ities']){_0x3bba54[_0x1332a0(0xed)]({'checkerKey':_0x19f013[_0x1332a0(0x11f)]||_0x1332a0(0x122),'description':_0x19f013[_0x1332a0(0xe1)+'n']||_0x19f013[_0x1332a0(0xff)]||_0x1332a0(0x83),'severity':this['mapSeverit'+'y'](_0x19f013[_0x1332a0(0xf9)]),'lineNumber':_0x19f013['lineNumber'],'filePath':_0x19f013['filePath']});}}}return _0x3bba54;}[a2_0xff9577(0xf7)+a2_0xff9577(0xe2)+a2_0xff9577(0x6d)](_0x5b7e27){const _0x1cdc14=a2_0xff9577,_0x2a2967={};_0x2a2967[_0x1cdc14(0xf3)]=function(_0x96de14,_0x13fade){return _0x96de14>_0x13fade;};const _0x47bb0f=_0x2a2967,_0xbe0e32=[];_0x5b7e27[_0x1cdc14(0x11f)]&&_0xbe0e32[_0x1cdc14(0xed)](_0x1cdc14(0xfc)+_0x5b7e27[_0x1cdc14(0x11f)]);_0x5b7e27[_0x1cdc14(0xdf)]&&_0xbe0e32[_0x1cdc14(0xed)]('Method:\x20'+_0x5b7e27[_0x1cdc14(0xdf)]);_0x5b7e27[_0x1cdc14(0xfa)]&&_0x5b7e27[_0x1cdc14(0xfa)][_0x1cdc14(0x6c)]>0x0&&_0xbe0e32['push'](_0x1cdc14(0x115)+_0x5b7e27[_0x1cdc14(0xfa)][0x0]);_0x5b7e27[_0x1cdc14(0x104)]&&_0xbe0e32[_0x1cdc14(0xed)](_0x1cdc14(0xdc)+_0x5b7e27[_0x1cdc14(0x104)]);_0x5b7e27[_0x1cdc14(0x118)]&&_0xbe0e32[_0x1cdc14(0xed)](_0x1cdc14(0x11d)+':\x20'+_0x5b7e27[_0x1cdc14(0x118)]);if(_0x5b7e27['contexts']&&Array[_0x1cdc14(0xe3)](_0x5b7e27[_0x1cdc14(0x8e)])){const _0x296671=[];for(const _0x572195 of _0x5b7e27['contexts']){if(_0x572195[_0x1cdc14(0x78)]&&Array[_0x1cdc14(0xe3)](_0x572195['eventMsgs']))for(const _0x3b6496 of _0x572195[_0x1cdc14(0x78)]){if(_0x3b6496[_0x1cdc14(0xb8)]&&Array[_0x1cdc14(0xe3)](_0x3b6496[_0x1cdc14(0xb8)]))for(const _0x50ff1d of _0x3b6496[_0x1cdc14(0xb8)]){_0x50ff1d[_0x1cdc14(0xff)]&&_0x296671[_0x1cdc14(0xed)](_0x50ff1d['message']);}}}_0x47bb0f[_0x1cdc14(0xf3)](_0x296671[_0x1cdc14(0x6c)],0x0)&&_0xbe0e32['push'](_0x1cdc14(0x6e)+_0x296671[_0x1cdc14(0xb2)](';\x20'));}return _0xbe0e32[_0x1cdc14(0x6c)]>0x0?_0xbe0e32[_0x1cdc14(0xb2)](',\x20'):_0x1cdc14(0x87)+'니다.';}[a2_0xff9577(0xbc)+a2_0xff9577(0x109)](_0x2b9ec3){const _0x1f500b=a2_0xff9577,_0xd349c6={};_0xd349c6['KXPwI']='HIGH';const _0x5b35ed=_0xd349c6,_0x25f984=typeof _0x2b9ec3==='string'?parseInt(_0x2b9ec3):_0x2b9ec3;if(_0x25f984<=0x2)return _0x5b35ed[_0x1f500b(0xfe)];else return _0x25f984===0x3?_0x1f500b(0x11a):'LOW';}async[a2_0xff9577(0xe6)+a2_0xff9577(0xc3)+a2_0xff9577(0xd4)](_0x32eb57){const _0x29dcb3=a2_0xff9577;try{logger[_0x29dcb3(0x103)](_0x29dcb3(0x70)+_0x29dcb3(0x9e)+_0x32eb57[_0x29dcb3(0xd3)]['length']+_0x29dcb3(0x108));if(!_0x32eb57['files']||_0x32eb57[_0x29dcb3(0xd3)][_0x29dcb3(0x6c)]===0x0)throw new Error(_0x29dcb3(0xc0)+_0x29dcb3(0x10d));const _0x46568b=await this[_0x29dcb3(0x7d)][_0x29dcb3(0x6b)+_0x29dcb3(0xfd)](_0x32eb57[_0x29dcb3(0xd3)],_0x32eb57[_0x29dcb3(0xc7)+'e']);if(!_0x46568b['success'])throw new Error('파일\x20업로드\x20실패:'+'\x20'+_0x46568b[_0x29dcb3(0xc4)]);const _0x5e16ff=_0x32eb57[_0x29dcb3(0xd3)][0x0]?.[_0x29dcb3(0x91)]||_0x29dcb3(0x107),_0xc8877={};_0xc8877[_0x29dcb3(0x91)]=_0x32eb57[_0x29dcb3(0xc7)+'e']||_0x5e16ff,_0xc8877[_0x29dcb3(0x8b)+'t']='',_0xc8877['s3Key']=_0x46568b['key'];const _0x2508ec=_0xc8877,_0x56d920=await this[_0x29dcb3(0xa3)+_0x29dcb3(0xb5)][_0x29dcb3(0xdb)+_0x29dcb3(0xc9)](_0x2508ec);logger[_0x29dcb3(0x103)]('다중\x20파일\x20분석\x20요'+'청\x20완료:\x20'+_0x56d920[_0x29dcb3(0xd5)]);const _0x541baf={};return _0x541baf[_0x29dcb3(0x10e)]=_0x56d920[_0x29dcb3(0x10e)]||_0x56d920[_0x29dcb3(0xd5)],_0x541baf['status']=_0x56d920['status'],_0x541baf;}catch(_0xf9572c){logger[_0x29dcb3(0xc4)]('다중\x20파일\x20보안\x20분'+'석\x20요청\x20실패:',_0xf9572c);throw _0xf9572c;}}async[a2_0xff9577(0xe6)+a2_0xff9577(0xc3)+a2_0xff9577(0xf4)](_0x2eabe7,_0x574cc0){const _0x3ea83e=a2_0xff9577;try{logger[_0x3ea83e(0x103)](_0x3ea83e(0xda)+_0x3ea83e(0xa8)+_0x3ea83e(0xa4)+_0x2eabe7[_0x3ea83e(0x6c)]+_0x3ea83e(0x9c));if(!_0x2eabe7||_0x2eabe7[_0x3ea83e(0x6c)]===0x0)throw new Error(_0x3ea83e(0xbb)+_0x3ea83e(0xc8));const _0x54d75b=await this[_0x3ea83e(0x7d)][_0x3ea83e(0x10b)+_0x3ea83e(0xa5)](_0x2eabe7,_0x574cc0);if(!_0x54d75b[_0x3ea83e(0xf6)])throw new Error(_0x3ea83e(0x89)+'\x20'+_0x54d75b[_0x3ea83e(0xc4)]);const _0x1594d9=a2_0x5135b7[_0x3ea83e(0x75)](_0x2eabe7[0x0])||'input.zip',_0x57f996={};_0x57f996[_0x3ea83e(0x91)]=_0x574cc0||_0x1594d9,_0x57f996[_0x3ea83e(0x8b)+'t']='',_0x57f996[_0x3ea83e(0x97)]=_0x54d75b[_0x3ea83e(0x112)];const _0x1acebe=_0x57f996,_0x23eab3=await this[_0x3ea83e(0xa3)+_0x3ea83e(0xb5)][_0x3ea83e(0xdb)+'lysis'](_0x1acebe);logger[_0x3ea83e(0x103)](_0x3ea83e(0x88)+_0x3ea83e(0x95)+_0x23eab3['requestId']);const _0xe6ba05={};return _0xe6ba05[_0x3ea83e(0x10e)]=_0x23eab3['analysisId']||_0x23eab3[_0x3ea83e(0xd5)],_0xe6ba05['status']=_0x23eab3['status'],_0xe6ba05;}catch(_0x171537){logger[_0x3ea83e(0xc4)](_0x3ea83e(0x9a)+'안\x20분석\x20요청\x20실패'+':',_0x171537);throw _0x171537;}}async['analyzeZip'+a2_0xff9577(0xe4)](_0x3e46c6,_0x1c9ee6){const _0x40cd5e=a2_0xff9577;try{logger[_0x40cd5e(0x103)](_0x40cd5e(0xaa)+_0x40cd5e(0x114)+_0x3e46c6);if(!_0x3e46c6)throw new Error(_0x40cd5e(0xa0)+_0x40cd5e(0x85)+'다.');const _0x4a8094=await this['s3Service']['uploadZipF'+_0x40cd5e(0xbd)](_0x3e46c6);if(!_0x4a8094['success'])throw new Error('ZIP\x20파일\x20업로드'+_0x40cd5e(0x10f)+_0x4a8094[_0x40cd5e(0xc4)]);const _0x5e7990=_0x1c9ee6||a2_0x5135b7[_0x40cd5e(0x75)](_0x3e46c6)||'input.zip',_0x33ed5e={};_0x33ed5e[_0x40cd5e(0x91)]=_0x5e7990,_0x33ed5e[_0x40cd5e(0x8b)+'t']='',_0x33ed5e[_0x40cd5e(0x97)]=_0x4a8094[_0x40cd5e(0x112)];const _0x4c6de5=_0x33ed5e,_0x46b4a3=await this[_0x40cd5e(0xa3)+_0x40cd5e(0xb5)][_0x40cd5e(0xdb)+_0x40cd5e(0xc9)](_0x4c6de5);logger[_0x40cd5e(0x103)](_0x40cd5e(0xaa)+_0x40cd5e(0xe5)+_0x46b4a3[_0x40cd5e(0xd5)]);const _0x41944f={};return _0x41944f[_0x40cd5e(0x10e)]=_0x46b4a3[_0x40cd5e(0x10e)]||_0x46b4a3[_0x40cd5e(0xd5)],_0x41944f[_0x40cd5e(0xca)]=_0x46b4a3[_0x40cd5e(0xca)],_0x41944f;}catch(_0x4924a0){logger[_0x40cd5e(0xc4)](_0x40cd5e(0xaa)+_0x40cd5e(0xc2)+'패:',_0x4924a0);throw _0x4924a0;}}async[a2_0xff9577(0xc5)+'der'](_0x2b3118,_0x31c105){const _0x108b98=a2_0xff9577;try{logger[_0x108b98(0x103)](_0x108b98(0x9d)+_0x108b98(0x9e)+_0x2b3118);if(!_0x2b3118)throw new Error(_0x108b98(0x120)+_0x108b98(0xbf));const _0x54f6a3=await this['s3Service'][_0x108b98(0xcd)+_0x108b98(0xec)](_0x2b3118,_0x31c105);if(!_0x54f6a3[_0x108b98(0xf6)])throw new Error('폴더\x20압축\x20및\x20업로'+_0x108b98(0x7e)+_0x54f6a3['error']);const _0x1774bd=_0x31c105||a2_0x5135b7[_0x108b98(0x75)](_0x2b3118)||'folder.zip',_0x1b3703={};_0x1b3703['fileName']=_0x1774bd,_0x1b3703[_0x108b98(0x8b)+'t']='',_0x1b3703[_0x108b98(0x97)]=_0x54f6a3[_0x108b98(0x112)];const _0xaf1316=_0x1b3703,_0x519e37=await this[_0x108b98(0xa3)+_0x108b98(0xb5)]['requestAna'+'lysis'](_0xaf1316);logger['info'](_0x108b98(0xcf)+_0x108b98(0x8d)+_0x519e37[_0x108b98(0xd5)]);const _0x4ddcb8={};return _0x4ddcb8[_0x108b98(0x10e)]=_0x519e37[_0x108b98(0x10e)]||_0x519e37[_0x108b98(0xd5)],_0x4ddcb8['status']=_0x519e37[_0x108b98(0xca)],_0x4ddcb8;}catch(_0x2bee35){logger[_0x108b98(0xc4)](_0x108b98(0x9d)+_0x108b98(0x11e),_0x2bee35);throw _0x2bee35;}}[a2_0xff9577(0xbc)+'y'](_0x1f1e23){const _0x489a51=a2_0xff9577,_0x5c11ab={};_0x5c11ab[_0x489a51(0xee)]=_0x489a51(0xee),_0x5c11ab[_0x489a51(0x86)]=_0x489a51(0xee),_0x5c11ab[_0x489a51(0x11a)]=_0x489a51(0x11a),_0x5c11ab['LOW']=_0x489a51(0xfb),_0x5c11ab[_0x489a51(0xa1)]='LOW';const _0x4b3e66=_0x5c11ab;return _0x4b3e66[_0x1f1e23?.['toUpperCas'+'e']()]||'MEDIUM';}}function a2_0x21f9(_0x558a09,_0x5dae26){_0x558a09=_0x558a09-0x6a;const _0x49e9ba=a2_0xc554();let _0x2a4ba3=_0x49e9ba[_0x558a09];return _0x2a4ba3;}function a2_0xc554(){const _0x239c57=['MEDIUM','llmService','\x20아니므로\x20안전한\x20','Risk\x20Level','석\x20요청\x20실패:','checkerKey','폴더\x20경로가\x20제공되','ghweS','UNKNOWN','분석\x20ID:\x20','uploadMult','length','scription','Details:\x20','alysisResu','다중\x20파일\x20보안\x20분','ief','개\x20취약점\x20발견\x20(','analyzeFil','331243WpKmtg','basename','153JtxsJJ','generateAn','eventMsgs','INIT','7bvdBkc','분석\x20결과\x20조회:\x20','EXubZ','s3Service','드\x20실패:\x20','지:\x20원본\x20','분석\x20브리핑\x20생성에','FAIL','generateSe','설명\x20없음','\x20(SUCCESS가','\x20제공되지\x20않았습니','CRITICAL','취약점이\x20발견되었습','파일\x20경로\x20기반\x20분','파일\x20업로드\x20실패:','diff','fileConten','준비\x20중입니다.','청\x20완료:\x20','contexts','완료되지\x20않았습니다','FAILED','fileName','isCompleti','완료되었습니다.','READY','석\x20요청\x20완료:\x20','lts','s3Key','입니다.','PRE_PROCES','파일\x20경로\x20기반\x20보','analysisBr','개\x20파일\x20경로','폴더\x20기반\x20보안\x20분','석\x20시작:\x20','료:\x20','ZIP\x20파일\x20경로가','INFO','23309qDmjmN','sparrowSer','\x20시작:\x20','sFromPaths','\x20->\x20실제\x20','3912crQOXr','중\x20파일\x20보안\x20분석','getAnalysi','ZIP\x20파일\x20기반\x20','cureCodeBr','rabilities','분석\x20결과\x20다운로드','3916lXjOyO','vulnerabil','ities','toString','join','료하지\x20못하고\x20실패','cureCodeFr','vice','nWQIx','content','messages','755190lOOhLs','1624688ZjRVKu','분석할\x20파일\x20경로가','mapSeverit','ile','8326698bsMflC','지\x20않았습니다.','분석할\x20파일이\x20없습','ZXlOI','보안\x20분석\x20요청\x20실','tipleFiles','error','analyzeFol','코드를\x20생성할\x20수\x20','zipFileNam','\x20없습니다.','lysis','status','COMPLETE','secureCode','uploadFold','실패:','폴더\x20기반\x20분석\x20요','분석이\x20중지된\x20상태','progress','alysisBrie','files','Security','requestId','안전한\x20코드\x20생성\x20','eSecurity','ybDgJ','한\x20상태입니다.','파일\x20경로\x20기반\x20다','requestAna','Line:\x20','constructo','code.java','method','분석이\x20실패했습니다','descriptio','rabilityDe','isArray','File','분석\x20요청\x20완료:\x20','analyzeMul','downloadAn','분석\x20중입니다.','전처리\x20중입니다.','1835SwvgDJ','cureCode','erAsZip','push','HIGH','완료\x20(분석\x20ID:','시작:\x20','sStatus','toUpperCas','UOJpn','FromPaths','\x20실패했습니다.','success','buildVulne','(((.+)+)+)','severity','filePaths','LOW','Checker:\x20','ipleFiles','KXPwI','message','분석\x20결과\x20조회\x20실','843KBiuEX','초기화\x20중입니다.','info','lineNumber','result','분석\x20상태\x20조회\x20실','input.zip','개\x20파일','yFromRisk','apply','uploadFile','1354nJtCtt','니다.','analysisId','\x20실패:\x20','completed','SUCCESS','key','분석을\x20올바르게\x20완','보안\x20분석\x20시작:\x20','File:\x20','분석이\x20성공적으로\x20','pollAnalys','risk','parseVulne'];a2_0xc554=function(){return _0x239c57;};return a2_0xc554();}
@@ -1 +1 @@
1
- const a3_0x20e533=a3_0x148a;(function(_0x27853f,_0x50b45b){const _0x58237a=a3_0x148a,_0x245e83=_0x27853f();while(!![]){try{const _0x184ea4=parseInt(_0x58237a(0x1c5))/0x1*(parseInt(_0x58237a(0x1f1))/0x2)+parseInt(_0x58237a(0x21b))/0x3+parseInt(_0x58237a(0x203))/0x4+parseInt(_0x58237a(0x1e7))/0x5+parseInt(_0x58237a(0x1ee))/0x6+-parseInt(_0x58237a(0x247))/0x7+-parseInt(_0x58237a(0x1d1))/0x8*(parseInt(_0x58237a(0x238))/0x9);if(_0x184ea4===_0x50b45b)break;else _0x245e83['push'](_0x245e83['shift']());}catch(_0x45ff34){_0x245e83['push'](_0x245e83['shift']());}}}(a3_0x9383,0xe1c0d));const a3_0x3e9a44=(function(){let _0x1ae606=!![];return function(_0x58cc18,_0x15cd6c){const _0x7c6342=_0x1ae606?function(){const _0x56d0af=a3_0x148a;if(_0x15cd6c){const _0x59cec2=_0x15cd6c[_0x56d0af(0x1e1)](_0x58cc18,arguments);return _0x15cd6c=null,_0x59cec2;}}:function(){};return _0x1ae606=![],_0x7c6342;};}()),a3_0xb78774=a3_0x3e9a44(this,function(){const _0x308321=a3_0x148a;return a3_0xb78774[_0x308321(0x201)]()[_0x308321(0x1f4)](_0x308321(0x246)+'+$')[_0x308321(0x201)]()['constructo'+'r'](a3_0xb78774)[_0x308321(0x1f4)]('(((.+)+)+)'+'+$');});function a3_0x9383(){const _0x5ceacf=['ode\x20qualit','\x20best\x20prac','de\x20(withou','e\x20original','1cESAxJ','ditional\x20t','alysisBrie','briefing\x20i','s\x20briefing','content','Ollama\x20API','\x20in\x20Englis','Unknown\x20er','improvemen','lish\x20compa','te\x20a\x20simpl','48ddkela','\x20code\x20and\x20','error','ately\x20200-','cureCodeBr','ring\x20the\x20f','generate\x20a','ription\x20of','check\x20if\x20t','is\x20results','s\x20Results:','baseUrl','briefing\x20s','\x20of\x20vulner','KlPYv','ETIMEDOUT','apply','n\x20the\x20same','sed\x20on\x20the','``java\x0a','ty\x20status\x20','\x20briefing:','1341290MMjSYN','g\x20in\x20appro','he\x20briefin','\x20error:\x20','stringify','\x20-\x20','lity\x20as\x20th','6908610sKLpuc','ity\x20vulner','is\x20running','997882jPJiqF','generateSe','\x0a4.\x20Areas\x20','search','ments\x0a2.\x20F','ror:\x20','wing\x20secur','ate','fCrno','code','fing\x20shoul','iefing.','te\x20a\x20brief','status','iginal\x20Cod','Brief\x20desc','toString','ease\x20retur','5177928TYGsVG','erate\x20secu','h\x20based\x20on','ximately\x203','generate\x20L','.\x20Maintain','nerabiliti','de\x20and\x20sec','data','isAxiosErr','hould\x20incl','Cannot\x20con','that\x20need\x20','re\x20code\x20ba','ters.','ity\x20analys','response','ava\x0a','ractices\x0a4','found\x20and\x20','that\x20fixes','re\x20Code:\x0a`','timeout','Please\x20wri','4879908nbbThc','\x20the\x20follo','Network\x20er','lain\x20secur','Ollama\x20ser','tion\x20timeo','\x0aOriginal\x20','generateAn','d\x20security','\x0a1.\x20Number','\x20briefing.','dMlaM','all\x20securi','jor\x20securi','es\x0a3.\x20Over','\x20functiona','300\x20charac',':\x0a\x0aAnalysi','ECONNREFUS','ror','d\x20include:','pply\x20secur','ure\x20code:\x0a','ude:\x0a1.\x20Ma','ements\x0a\x0aPl','post','abilities\x20','e\x20and\x20clea','2.\x20Maintai','5264262OuhNPT','riginal\x20co','t\x20explanat','ty\x20improve','model','nect\x20to\x20Ol','ability\x0a5.','lama\x20serve','\x20Add\x20comme','ver\x20connec','cureCode','\x0a3.\x20Applie','rabilities','success','(((.+)+)+)','2838913rsChGV','ixed\x20vulne','n\x20approxim','tices\x0a4.\x20C','ief','ecure\x20code','/api/gener','ions\x20or\x20ad','n\x20only\x20the','\x0a```\x0a\x0aThe\x20','r.\x20Please\x20','\x20all\x20secur','assessment','\x20security\x20','Failed\x20to\x20','abilities\x0a','Code:\x0a```j','ents\x0a\x0aPlea','generate\x20s','he\x20server\x20','message','\x20code\x20read','es:\x0a'];a3_0x9383=function(){return _0x5ceacf;};return a3_0x9383();}a3_0xb78774();import a3_0x21539a from'axios';import{appConfig}from'../config/appConfig.js';function a3_0x148a(_0x2f579f,_0x1b82ad){_0x2f579f=_0x2f579f-0x1b4;const _0x2ed1e9=a3_0x9383();let _0xb78774=_0x2ed1e9[_0x2f579f];return _0xb78774;}import{logger}from'../utils/logger.js';export class LLMService{[a3_0x20e533(0x1dc)];[a3_0x20e533(0x23c)];constructor(){const _0x16d28f=a3_0x20e533;this[_0x16d28f(0x1dc)]=appConfig['ollama'][_0x16d28f(0x1dc)],this['model']=appConfig['ollama'][_0x16d28f(0x23c)];}async[a3_0x20e533(0x222)+a3_0x20e533(0x1c7)+'f'](_0x13a4c2){const _0x47d3d0=a3_0x20e533,_0x810821={};_0x810821[_0x47d3d0(0x226)]=_0x47d3d0(0x20e)+_0x47d3d0(0x23d)+_0x47d3d0(0x23f)+_0x47d3d0(0x1b4)+_0x47d3d0(0x1d9)+_0x47d3d0(0x1bd)+'is\x20running'+'.',_0x810821[_0x47d3d0(0x1df)]=_0x47d3d0(0x21f)+_0x47d3d0(0x241)+_0x47d3d0(0x220)+'ut';const _0x5da463=_0x810821;try{const _0x35ca14=_0x47d3d0(0x21a)+_0x47d3d0(0x1d0)+_0x47d3d0(0x236)+'r\x20briefing'+_0x47d3d0(0x1cc)+_0x47d3d0(0x205)+_0x47d3d0(0x21c)+_0x47d3d0(0x1f7)+_0x47d3d0(0x212)+_0x47d3d0(0x1da)+_0x47d3d0(0x22c)+_0x47d3d0(0x1db)+'\x0a'+JSON[_0x47d3d0(0x1eb)](_0x13a4c2,null,0x2)+('\x0a\x0aThe\x20brie'+_0x47d3d0(0x1fb)+_0x47d3d0(0x22f)+_0x47d3d0(0x224)+_0x47d3d0(0x1de)+_0x47d3d0(0x235)+_0x47d3d0(0x216)+'classifica'+'tion\x20by\x20se'+'verity\x0a2.\x20'+_0x47d3d0(0x200)+_0x47d3d0(0x1d8)+'\x20major\x20vul'+_0x47d3d0(0x209)+_0x47d3d0(0x229)+_0x47d3d0(0x227)+_0x47d3d0(0x1e5)+_0x47d3d0(0x1b6)+_0x47d3d0(0x1f3)+_0x47d3d0(0x20f)+_0x47d3d0(0x1ce)+'t\x0a\x0aPlease\x20'+'write\x20the\x20'+_0x47d3d0(0x1c8)+_0x47d3d0(0x249)+_0x47d3d0(0x1d4)+_0x47d3d0(0x22b)+_0x47d3d0(0x211)),_0x7e195b={};_0x7e195b['timeout']=0x493e0;const _0x3390c7=await a3_0x21539a[_0x47d3d0(0x234)](this[_0x47d3d0(0x1dc)]+(_0x47d3d0(0x24d)+'ate'),{'model':this['model'],'prompt':_0x35ca14,'stream':![]},_0x7e195b),_0x550e20={};return _0x550e20[_0x47d3d0(0x1ca)]=_0x3390c7[_0x47d3d0(0x20b)][_0x47d3d0(0x213)],_0x550e20[_0x47d3d0(0x245)]=!![],_0x550e20;}catch(_0x3e9281){logger[_0x47d3d0(0x1d3)](_0x47d3d0(0x1b8)+_0x47d3d0(0x207)+'LM\x20analysi'+_0x47d3d0(0x1c9)+':',_0x3e9281);let _0x18beed=_0x47d3d0(0x1cd)+'ror';if(a3_0x21539a['isAxiosErr'+'or'](_0x3e9281)){if(_0x3e9281[_0x47d3d0(0x1fa)]===_0x47d3d0(0x22d)+'ED')_0x18beed=_0x5da463[_0x47d3d0(0x226)];else{if(_0x3e9281['code']===_0x47d3d0(0x1e0))_0x18beed=_0x5da463[_0x47d3d0(0x1df)];else _0x3e9281[_0x47d3d0(0x213)]?_0x18beed='Ollama\x20API'+_0x47d3d0(0x1ea)+_0x3e9281['response'][_0x47d3d0(0x1fe)]+_0x47d3d0(0x1ec)+JSON[_0x47d3d0(0x1eb)](_0x3e9281[_0x47d3d0(0x213)][_0x47d3d0(0x20b)]):_0x18beed=_0x47d3d0(0x21d)+_0x47d3d0(0x1f6)+_0x3e9281['message'];}}else _0x3e9281 instanceof Error&&(_0x18beed=_0x3e9281['message']);const _0x523c9d={};return _0x523c9d[_0x47d3d0(0x1ca)]=_0x47d3d0(0x1b8)+_0x47d3d0(0x1d7)+'nalysis\x20br'+_0x47d3d0(0x1fc),_0x523c9d[_0x47d3d0(0x245)]=![],_0x523c9d['error']=_0x18beed,_0x523c9d;}}async[a3_0x20e533(0x1f2)+a3_0x20e533(0x242)](_0x463a7b,_0x106676){const _0x1e6431=a3_0x20e533,_0x826875={};_0x826875[_0x1e6431(0x1f9)]=function(_0x50b8a5,_0x3718a9){return _0x50b8a5===_0x3718a9;};const _0xd06a7=_0x826875;try{const _0xfdb1bd='Please\x20gen'+_0x1e6431(0x204)+_0x1e6431(0x210)+_0x1e6431(0x1e3)+'\x20following'+_0x1e6431(0x1d2)+'discovered'+_0x1e6431(0x1b7)+'vulnerabil'+'ities:\x0a\x0aOr'+_0x1e6431(0x1ff)+'e:\x0a```java'+'\x0a'+_0x463a7b+('\x0a```\x0a\x0aDisc'+'overed\x20Vul'+_0x1e6431(0x209)+_0x1e6431(0x1c0))+JSON[_0x1e6431(0x1eb)](_0x106676,null,0x2)+('\x0a\x0aRequirem'+'ents:\x0a1.\x20G'+'enerate\x20se'+'cure\x20code\x20'+_0x1e6431(0x217)+_0x1e6431(0x1b5)+_0x1e6431(0x1ef)+_0x1e6431(0x1b9)+_0x1e6431(0x237)+_0x1e6431(0x1e2)+_0x1e6431(0x22a)+_0x1e6431(0x1ed)+_0x1e6431(0x1c4)+'\x20code\x0a3.\x20A'+_0x1e6431(0x230)+'ity\x20best\x20p'+_0x1e6431(0x215)+_0x1e6431(0x208)+_0x1e6431(0x1bf)+_0x1e6431(0x23e)+_0x1e6431(0x240)+'nts\x20to\x20exp'+_0x1e6431(0x21e)+'ity\x20improv'+_0x1e6431(0x233)+_0x1e6431(0x202)+_0x1e6431(0x24f)+'\x20secure\x20co'+_0x1e6431(0x1c3)+_0x1e6431(0x23a)+_0x1e6431(0x24e)+_0x1e6431(0x1c6)+'ext):'),_0x466a5d={};_0x466a5d[_0x1e6431(0x219)]=0x493e0;const _0x2fb45b=await a3_0x21539a['post'](this[_0x1e6431(0x1dc)]+(_0x1e6431(0x24d)+_0x1e6431(0x1f8)),{'model':this[_0x1e6431(0x23c)],'prompt':_0xfdb1bd,'stream':![]},_0x466a5d),_0x2285f5={};return _0x2285f5[_0x1e6431(0x1ca)]=_0x2fb45b[_0x1e6431(0x20b)][_0x1e6431(0x213)],_0x2285f5['success']=!![],_0x2285f5;}catch(_0x401d6b){logger[_0x1e6431(0x1d3)](_0x1e6431(0x1b8)+'generate\x20s'+_0x1e6431(0x24c)+':',_0x401d6b);let _0xbaf703=_0x1e6431(0x1cd)+_0x1e6431(0x22e);if(a3_0x21539a[_0x1e6431(0x20c)+'or'](_0x401d6b)){if(_0xd06a7[_0x1e6431(0x1f9)](_0x401d6b[_0x1e6431(0x1fa)],'ECONNREFUS'+'ED'))_0xbaf703='Cannot\x20con'+'nect\x20to\x20Ol'+_0x1e6431(0x23f)+_0x1e6431(0x1b4)+_0x1e6431(0x1d9)+'he\x20server\x20'+_0x1e6431(0x1f0)+'.';else{if(_0x401d6b[_0x1e6431(0x1fa)]===_0x1e6431(0x1e0))_0xbaf703=_0x1e6431(0x21f)+_0x1e6431(0x241)+_0x1e6431(0x220)+'ut';else _0x401d6b[_0x1e6431(0x213)]?_0xbaf703=_0x1e6431(0x1cb)+_0x1e6431(0x1ea)+_0x401d6b['response'][_0x1e6431(0x1fe)]+'\x20-\x20'+JSON[_0x1e6431(0x1eb)](_0x401d6b[_0x1e6431(0x213)][_0x1e6431(0x20b)]):_0xbaf703=_0x1e6431(0x21d)+'ror:\x20'+_0x401d6b[_0x1e6431(0x1be)];}}else _0x401d6b instanceof Error&&(_0xbaf703=_0x401d6b[_0x1e6431(0x1be)]);const _0x5b6d2e={};return _0x5b6d2e[_0x1e6431(0x1ca)]=_0x463a7b,_0x5b6d2e['success']=![],_0x5b6d2e[_0x1e6431(0x1d3)]=_0xbaf703,_0x5b6d2e;}}async['generateSe'+a3_0x20e533(0x1d5)+a3_0x20e533(0x24b)](_0x4cdee0,_0x42ece2){const _0x93334b=a3_0x20e533;try{const _0x3aae13=_0x93334b(0x21a)+_0x93334b(0x1fd)+'ing\x20in\x20Eng'+_0x93334b(0x1cf)+_0x93334b(0x1d6)+'ollowing\x20o'+_0x93334b(0x239)+_0x93334b(0x20a)+_0x93334b(0x231)+_0x93334b(0x221)+_0x93334b(0x1ba)+_0x93334b(0x214)+_0x4cdee0+('\x0a```\x0a\x0aSecu'+_0x93334b(0x218)+_0x93334b(0x1e4))+_0x42ece2+(_0x93334b(0x250)+_0x93334b(0x1dd)+_0x93334b(0x20d)+_0x93334b(0x232)+_0x93334b(0x228)+_0x93334b(0x23b)+_0x93334b(0x1f5)+_0x93334b(0x248)+_0x93334b(0x244)+_0x93334b(0x243)+_0x93334b(0x223)+_0x93334b(0x1c2)+_0x93334b(0x24a)+_0x93334b(0x1c1)+'y\x20improvem'+_0x93334b(0x1bb)+'se\x20write\x20t'+_0x93334b(0x1e9)+_0x93334b(0x1e8)+_0x93334b(0x206)+'00-400\x20cha'+'racters.'),_0x41d3fd={};_0x41d3fd[_0x93334b(0x219)]=0x493e0;const _0x40848e=await a3_0x21539a[_0x93334b(0x234)](this[_0x93334b(0x1dc)]+('/api/gener'+_0x93334b(0x1f8)),{'model':this[_0x93334b(0x23c)],'prompt':_0x3aae13,'stream':![]},_0x41d3fd),_0x4514b0={};return _0x4514b0[_0x93334b(0x1ca)]=_0x40848e[_0x93334b(0x20b)][_0x93334b(0x213)],_0x4514b0[_0x93334b(0x245)]=!![],_0x4514b0;}catch(_0x305442){logger[_0x93334b(0x1d3)](_0x93334b(0x1b8)+_0x93334b(0x1bc)+'ecure\x20code'+_0x93334b(0x1e6),_0x305442);let _0x31f570=_0x93334b(0x1cd)+_0x93334b(0x22e);if(a3_0x21539a['isAxiosErr'+'or'](_0x305442)){if(_0x305442['code']===_0x93334b(0x22d)+'ED')_0x31f570=_0x93334b(0x20e)+'nect\x20to\x20Ol'+_0x93334b(0x23f)+_0x93334b(0x1b4)+_0x93334b(0x1d9)+'he\x20server\x20'+'is\x20running'+'.';else{if(_0x305442[_0x93334b(0x1fa)]===_0x93334b(0x1e0))_0x31f570=_0x93334b(0x21f)+'ver\x20connec'+'tion\x20timeo'+'ut';else _0x305442[_0x93334b(0x213)]?_0x31f570=_0x93334b(0x1cb)+_0x93334b(0x1ea)+_0x305442[_0x93334b(0x213)][_0x93334b(0x1fe)]+_0x93334b(0x1ec)+JSON[_0x93334b(0x1eb)](_0x305442[_0x93334b(0x213)][_0x93334b(0x20b)]):_0x31f570=_0x93334b(0x21d)+_0x93334b(0x1f6)+_0x305442[_0x93334b(0x1be)];}}else _0x305442 instanceof Error&&(_0x31f570=_0x305442[_0x93334b(0x1be)]);const _0x36cb7f={};return _0x36cb7f[_0x93334b(0x1ca)]='Failed\x20to\x20'+_0x93334b(0x1bc)+_0x93334b(0x24c)+_0x93334b(0x225),_0x36cb7f[_0x93334b(0x245)]=![],_0x36cb7f[_0x93334b(0x1d3)]=_0x31f570,_0x36cb7f;}}}
1
+ const a3_0x25f9bd=a3_0xc759;(function(_0x495b78,_0x14d229){const _0x400ef2=a3_0xc759,_0x27d6c2=_0x495b78();while(!![]){try{const _0x15b06b=parseInt(_0x400ef2(0x17a))/0x1+-parseInt(_0x400ef2(0x1b6))/0x2+parseInt(_0x400ef2(0x1d8))/0x3*(-parseInt(_0x400ef2(0x192))/0x4)+-parseInt(_0x400ef2(0x1aa))/0x5*(parseInt(_0x400ef2(0x1f5))/0x6)+parseInt(_0x400ef2(0x200))/0x7*(parseInt(_0x400ef2(0x1a3))/0x8)+parseInt(_0x400ef2(0x1a1))/0x9*(parseInt(_0x400ef2(0x1b2))/0xa)+-parseInt(_0x400ef2(0x1f2))/0xb*(-parseInt(_0x400ef2(0x20d))/0xc);if(_0x15b06b===_0x14d229)break;else _0x27d6c2['push'](_0x27d6c2['shift']());}catch(_0x31e5d6){_0x27d6c2['push'](_0x27d6c2['shift']());}}}(a3_0x1a7c,0xbe653));function a3_0x1a7c(){const _0x2e0efd=['isAxiosErr','70336nhiVER','ror:\x20','constructo','re\x20code\x20ba','nalysis\x20br','is\x20results','Unknown\x20er','t\x20explanat','is\x20running','ring\x20the\x20f','write\x20the\x20','toString','h\x20based\x20on','12gGHLAi','alysisBrie','ver\x20connec','cure\x20code\x20','he\x20server\x20','e:\x0a```java','sed\x20on\x20the','classifica','lama\x20serve',':\x0a\x0aAnalysi','search','nerabiliti','ext):','cureCodeBr','r\x20briefing','1117090iCYJja','response','/api/gener','ror','model','generate\x20L','Ollama\x20ser','that\x20need\x20','hould\x20incl','ions\x20or\x20ad','content','\x0a\x0aRequirem','CGRCV','fing\x20shoul','briefing\x20i','\x20major\x20vul','ractices\x0a4','success','ditional\x20t','\x20code\x0a3.\x20A','ty\x20improve','\x20functiona','message','check\x20if\x20t','14236JgdBCn','00-400\x20cha','baseUrl','Cannot\x20con','ents:\x0a1.\x20G','\x20following','briefing\x20s','iginal\x20Cod','Failed\x20to\x20','wing\x20secur','generate\x20s','Ollama\x20API','\x0a\x0aThe\x20brie','de\x20(withou','n\x20approxim','1562364IIMeSr','de\x20and\x20sec','696znGNfK','cureCode','data','ECONNREFUS','d\x20security','all\x20securi','ease\x20retur','5bENMCF','\x20in\x20Englis','\x20briefing.','n\x20the\x20same','found\x20and\x20','code','ing\x20in\x20Eng','stringify','50tymxng','generateAn','\x20code\x20read','status','681354rpLnYJ','\x0a```\x0a\x0aThe\x20','ty\x20status\x20','d\x20include:','ity\x20best\x20p','rabilities','n\x20only\x20the','timeout','g\x20in\x20appro','ximately\x203','(((.+)+)+)','\x20error:\x20','r.\x20Please\x20','\x20security\x20','verity\x0a2.\x20','LM\x20analysi','ode\x20qualit','racters.','erate\x20secu','ate','re\x20Code:\x0a`','ude:\x0a1.\x20Ma','he\x20briefin','ability\x0a5.','discovered','300\x20charac','se\x20write\x20t','pply\x20secur','\x0a3.\x20Applie','generateSe','ription\x20of','post','e\x20and\x20clea','2.\x20Maintai','1206eIQaPK','Network\x20er','s\x20Results:','s\x20briefing','\x20secure\x20co','assessment','nect\x20to\x20Ol','e\x20original','te\x20a\x20brief','es:\x0a','Please\x20gen','tion\x20timeo','``java\x0a','ixed\x20vulne','ments\x0a2.\x20F','ava\x0a','ollowing\x20o','\x20-\x20','\x0aOriginal\x20','\x20code\x20and\x20','ity\x20improv','ecure\x20code','improvemen','ents\x0a\x0aPlea','apply','Please\x20wri','616099EAwLwC','nts\x20to\x20exp','iefing.','2184006QdoPXE','XXhPV','\x20the\x20follo','ETIMEDOUT','njXwV','\x20best\x20prac','ities:\x0a\x0aOr','lain\x20secur','error','that\x20fixes'];a3_0x1a7c=function(){return _0x2e0efd;};return a3_0x1a7c();}function a3_0xc759(_0x29ec32,_0x5ba63b){_0x29ec32=_0x29ec32-0x17a;const _0x5963a8=a3_0x1a7c();let _0x11784d=_0x5963a8[_0x29ec32];return _0x11784d;}const a3_0x4a9829=(function(){let _0x420957=!![];return function(_0x221dba,_0x584e1e){const _0x17109f=_0x420957?function(){const _0x15923f=a3_0xc759;if(_0x584e1e){const _0x299519=_0x584e1e[_0x15923f(0x1f0)](_0x221dba,arguments);return _0x584e1e=null,_0x299519;}}:function(){};return _0x420957=![],_0x17109f;};}()),a3_0x11784d=a3_0x4a9829(this,function(){const _0x367882=a3_0xc759;return a3_0x11784d[_0x367882(0x20b)]()['search'](_0x367882(0x1c0)+'+$')['toString']()[_0x367882(0x202)+'r'](a3_0x11784d)[_0x367882(0x217)](_0x367882(0x1c0)+'+$');});a3_0x11784d();import a3_0x5566aa from'axios';import{appConfig}from'../config/appConfig.js';import{logger}from'../utils/logger.js';export class LLMService{[a3_0x25f9bd(0x194)];['model'];constructor(){const _0x226e50=a3_0x25f9bd;this[_0x226e50(0x194)]=appConfig['ollama'][_0x226e50(0x194)],this['model']=appConfig['ollama'][_0x226e50(0x17e)];}async[a3_0x25f9bd(0x1b3)+a3_0x25f9bd(0x20e)+'f'](_0x52f01b){const _0xd9a371=a3_0x25f9bd,_0x248047={};_0x248047['TcsaD']=_0xd9a371(0x180)+'ver\x20connec'+_0xd9a371(0x1e3)+'ut';const _0x48cff6=_0x248047;try{const _0x157ab4=_0xd9a371(0x1f1)+'te\x20a\x20simpl'+_0xd9a371(0x1d6)+_0xd9a371(0x21b)+_0xd9a371(0x1ab)+_0xd9a371(0x20c)+_0xd9a371(0x1f7)+_0xd9a371(0x19b)+'ity\x20analys'+_0xd9a371(0x205)+_0xd9a371(0x216)+_0xd9a371(0x1da)+'\x0a'+JSON[_0xd9a371(0x1b1)](_0x52f01b,null,0x2)+(_0xd9a371(0x19e)+_0xd9a371(0x187)+_0xd9a371(0x1b9)+'\x0a1.\x20Number'+'\x20of\x20vulner'+'abilities\x20'+_0xd9a371(0x1ae)+_0xd9a371(0x214)+'tion\x20by\x20se'+_0xd9a371(0x1c4)+'Brief\x20desc'+_0xd9a371(0x1d4)+_0xd9a371(0x189)+_0xd9a371(0x218)+'es\x0a3.\x20Over'+_0xd9a371(0x1a8)+_0xd9a371(0x1b8)+_0xd9a371(0x1dd)+'\x0a4.\x20Areas\x20'+_0xd9a371(0x181)+_0xd9a371(0x1ee)+'t\x0a\x0aPlease\x20'+_0xd9a371(0x20a)+_0xd9a371(0x188)+_0xd9a371(0x1a0)+'ately\x20200-'+_0xd9a371(0x1cf)+'ters.'),_0x22ac5c={};_0x22ac5c[_0xd9a371(0x1bd)]=0x493e0;const _0x406ef1=await a3_0x5566aa[_0xd9a371(0x1d5)](this[_0xd9a371(0x194)]+('/api/gener'+_0xd9a371(0x1c9)),{'model':this['model'],'prompt':_0x157ab4,'stream':![]},_0x22ac5c),_0xbabfe1={};return _0xbabfe1['content']=_0x406ef1[_0xd9a371(0x1a5)][_0xd9a371(0x17b)],_0xbabfe1[_0xd9a371(0x18b)]=!![],_0xbabfe1;}catch(_0xa82dd6){logger['error'](_0xd9a371(0x19a)+_0xd9a371(0x17f)+_0xd9a371(0x1c5)+_0xd9a371(0x1db)+':',_0xa82dd6);let _0x4114f2='Unknown\x20er'+_0xd9a371(0x17d);if(a3_0x5566aa[_0xd9a371(0x1ff)+'or'](_0xa82dd6)){if(_0xa82dd6[_0xd9a371(0x1af)]===_0xd9a371(0x1a6)+'ED')_0x4114f2=_0xd9a371(0x195)+_0xd9a371(0x1de)+'lama\x20serve'+_0xd9a371(0x1c2)+'check\x20if\x20t'+'he\x20server\x20'+'is\x20running'+'.';else{if(_0xa82dd6[_0xd9a371(0x1af)]===_0xd9a371(0x1f8))_0x4114f2=_0x48cff6['TcsaD'];else _0xa82dd6[_0xd9a371(0x17b)]?_0x4114f2=_0xd9a371(0x19d)+_0xd9a371(0x1c1)+_0xa82dd6[_0xd9a371(0x17b)][_0xd9a371(0x1b5)]+_0xd9a371(0x1e9)+JSON[_0xd9a371(0x1b1)](_0xa82dd6[_0xd9a371(0x17b)][_0xd9a371(0x1a5)]):_0x4114f2=_0xd9a371(0x1d9)+_0xd9a371(0x201)+_0xa82dd6[_0xd9a371(0x190)];}}else _0xa82dd6 instanceof Error&&(_0x4114f2=_0xa82dd6['message']);const _0x5a358c={};return _0x5a358c['content']=_0xd9a371(0x19a)+'generate\x20a'+_0xd9a371(0x204)+_0xd9a371(0x1f4),_0x5a358c[_0xd9a371(0x18b)]=![],_0x5a358c['error']=_0x4114f2,_0x5a358c;}}async[a3_0x25f9bd(0x1d3)+a3_0x25f9bd(0x1a4)](_0x2cab9e,_0x2579f4){const _0x27f0d2=a3_0x25f9bd,_0x49d538={};_0x49d538['njXwV']=function(_0x2fa332,_0x47bcd1){return _0x2fa332 instanceof _0x47bcd1;};const _0x51559b=_0x49d538;try{const _0x1ebc44=_0x27f0d2(0x1e2)+_0x27f0d2(0x1c8)+_0x27f0d2(0x203)+_0x27f0d2(0x213)+_0x27f0d2(0x197)+_0x27f0d2(0x1eb)+_0x27f0d2(0x1ce)+_0x27f0d2(0x1c3)+'vulnerabil'+_0x27f0d2(0x1fb)+_0x27f0d2(0x199)+_0x27f0d2(0x212)+'\x0a'+_0x2cab9e+('\x0a```\x0a\x0aDisc'+'overed\x20Vul'+_0x27f0d2(0x218)+_0x27f0d2(0x1e1))+JSON['stringify'](_0x2579f4,null,0x2)+(_0x27f0d2(0x185)+_0x27f0d2(0x196)+'enerate\x20se'+_0x27f0d2(0x210)+_0x27f0d2(0x1fe)+'\x20all\x20secur'+'ity\x20vulner'+'abilities\x0a'+_0x27f0d2(0x1d7)+_0x27f0d2(0x1ad)+_0x27f0d2(0x18f)+'lity\x20as\x20th'+_0x27f0d2(0x1df)+_0x27f0d2(0x18d)+_0x27f0d2(0x1d1)+_0x27f0d2(0x1ba)+_0x27f0d2(0x18a)+'.\x20Maintain'+_0x27f0d2(0x1b4)+_0x27f0d2(0x1cd)+'\x20Add\x20comme'+_0x27f0d2(0x1f3)+_0x27f0d2(0x1fc)+_0x27f0d2(0x1ec)+'ements\x0a\x0aPl'+_0x27f0d2(0x1a9)+_0x27f0d2(0x1bc)+_0x27f0d2(0x1dc)+_0x27f0d2(0x19f)+_0x27f0d2(0x207)+_0x27f0d2(0x183)+_0x27f0d2(0x18c)+_0x27f0d2(0x219)),_0x1fba8b={};_0x1fba8b[_0x27f0d2(0x1bd)]=0x493e0;const _0x257fa4=await a3_0x5566aa[_0x27f0d2(0x1d5)](this['baseUrl']+(_0x27f0d2(0x17c)+_0x27f0d2(0x1c9)),{'model':this[_0x27f0d2(0x17e)],'prompt':_0x1ebc44,'stream':![]},_0x1fba8b),_0x19174f={};return _0x19174f[_0x27f0d2(0x184)]=_0x257fa4[_0x27f0d2(0x1a5)][_0x27f0d2(0x17b)],_0x19174f[_0x27f0d2(0x18b)]=!![],_0x19174f;}catch(_0x228863){logger[_0x27f0d2(0x1fd)]('Failed\x20to\x20'+_0x27f0d2(0x19c)+'ecure\x20code'+':',_0x228863);let _0x4307c1=_0x27f0d2(0x206)+_0x27f0d2(0x17d);if(a3_0x5566aa['isAxiosErr'+'or'](_0x228863)){if(_0x228863[_0x27f0d2(0x1af)]==='ECONNREFUS'+'ED')_0x4307c1=_0x27f0d2(0x195)+_0x27f0d2(0x1de)+_0x27f0d2(0x215)+'r.\x20Please\x20'+_0x27f0d2(0x191)+_0x27f0d2(0x211)+'is\x20running'+'.';else{if(_0x228863[_0x27f0d2(0x1af)]===_0x27f0d2(0x1f8))_0x4307c1='Ollama\x20ser'+_0x27f0d2(0x20f)+'tion\x20timeo'+'ut';else _0x228863[_0x27f0d2(0x17b)]?_0x4307c1=_0x27f0d2(0x19d)+_0x27f0d2(0x1c1)+_0x228863[_0x27f0d2(0x17b)]['status']+_0x27f0d2(0x1e9)+JSON['stringify'](_0x228863[_0x27f0d2(0x17b)][_0x27f0d2(0x1a5)]):_0x4307c1=_0x27f0d2(0x1d9)+'ror:\x20'+_0x228863[_0x27f0d2(0x190)];}}else _0x51559b[_0x27f0d2(0x1f9)](_0x228863,Error)&&(_0x4307c1=_0x228863['message']);const _0x45467a={};return _0x45467a[_0x27f0d2(0x184)]=_0x2cab9e,_0x45467a[_0x27f0d2(0x18b)]=![],_0x45467a['error']=_0x4307c1,_0x45467a;}}async['generateSe'+a3_0x25f9bd(0x21a)+'ief'](_0x3f36ee,_0x16c795){const _0x39465d=a3_0x25f9bd,_0x451026={};_0x451026[_0x39465d(0x186)]=_0x39465d(0x206)+_0x39465d(0x17d),_0x451026['XXhPV']=function(_0x25bff6,_0x3bb4bb){return _0x25bff6 instanceof _0x3bb4bb;};const _0x5f23d6=_0x451026;try{const _0x5731bf='Please\x20wri'+_0x39465d(0x1e0)+_0x39465d(0x1b0)+'lish\x20compa'+_0x39465d(0x209)+_0x39465d(0x1e8)+'riginal\x20co'+_0x39465d(0x1a2)+'ure\x20code:\x0a'+_0x39465d(0x1ea)+'Code:\x0a```j'+_0x39465d(0x1e7)+_0x3f36ee+('\x0a```\x0a\x0aSecu'+_0x39465d(0x1ca)+_0x39465d(0x1e4))+_0x16c795+(_0x39465d(0x1b7)+_0x39465d(0x198)+_0x39465d(0x182)+_0x39465d(0x1cb)+'jor\x20securi'+_0x39465d(0x18e)+_0x39465d(0x1e6)+_0x39465d(0x1e5)+_0x39465d(0x1bb)+_0x39465d(0x1d2)+_0x39465d(0x1a7)+_0x39465d(0x1fa)+'tices\x0a4.\x20C'+_0x39465d(0x1c6)+'y\x20improvem'+_0x39465d(0x1ef)+_0x39465d(0x1d0)+_0x39465d(0x1cc)+_0x39465d(0x1be)+_0x39465d(0x1bf)+_0x39465d(0x193)+_0x39465d(0x1c7)),_0x55854f={};_0x55854f[_0x39465d(0x1bd)]=0x493e0;const _0x49fc01=await a3_0x5566aa[_0x39465d(0x1d5)](this[_0x39465d(0x194)]+('/api/gener'+_0x39465d(0x1c9)),{'model':this[_0x39465d(0x17e)],'prompt':_0x5731bf,'stream':![]},_0x55854f),_0x16ef44={};return _0x16ef44[_0x39465d(0x184)]=_0x49fc01['data'][_0x39465d(0x17b)],_0x16ef44['success']=!![],_0x16ef44;}catch(_0x12baa5){logger[_0x39465d(0x1fd)](_0x39465d(0x19a)+_0x39465d(0x19c)+_0x39465d(0x1ed)+'\x20briefing:',_0x12baa5);let _0x5b3c71=_0x5f23d6['CGRCV'];if(a3_0x5566aa['isAxiosErr'+'or'](_0x12baa5)){if(_0x12baa5['code']==='ECONNREFUS'+'ED')_0x5b3c71=_0x39465d(0x195)+_0x39465d(0x1de)+_0x39465d(0x215)+'r.\x20Please\x20'+'check\x20if\x20t'+_0x39465d(0x211)+_0x39465d(0x208)+'.';else{if(_0x12baa5['code']===_0x39465d(0x1f8))_0x5b3c71=_0x39465d(0x180)+'ver\x20connec'+_0x39465d(0x1e3)+'ut';else _0x12baa5[_0x39465d(0x17b)]?_0x5b3c71='Ollama\x20API'+'\x20error:\x20'+_0x12baa5[_0x39465d(0x17b)][_0x39465d(0x1b5)]+'\x20-\x20'+JSON[_0x39465d(0x1b1)](_0x12baa5[_0x39465d(0x17b)][_0x39465d(0x1a5)]):_0x5b3c71=_0x39465d(0x1d9)+'ror:\x20'+_0x12baa5[_0x39465d(0x190)];}}else _0x5f23d6[_0x39465d(0x1f6)](_0x12baa5,Error)&&(_0x5b3c71=_0x12baa5[_0x39465d(0x190)]);const _0x4d5ad3={};return _0x4d5ad3[_0x39465d(0x184)]=_0x39465d(0x19a)+_0x39465d(0x19c)+'ecure\x20code'+_0x39465d(0x1ac),_0x4d5ad3[_0x39465d(0x18b)]=![],_0x4d5ad3[_0x39465d(0x1fd)]=_0x5b3c71,_0x4d5ad3;}}}