@lovrabet/dataset-mcp-server 1.3.2-beta.2 → 1.3.2-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(_0x4e07be,_0x527ec9){const _0x25d701=a17_0x44ae,_0x1774cc=_0x4e07be();while(!![]){try{const _0x3e23e4=-parseInt(_0x25d701(0x1b4))/0x1*(-parseInt(_0x25d701(0x1b2))/0x2)+-parseInt(_0x25d701(0x1c7))/0x3+parseInt(_0x25d701(0x1b9))/0x4*(parseInt(_0x25d701(0x1c3))/0x5)+-parseInt(_0x25d701(0x1d2))/0x6+-parseInt(_0x25d701(0x19f))/0x7+parseInt(_0x25d701(0x1d1))/0x8+-parseInt(_0x25d701(0x1c1))/0x9*(-parseInt(_0x25d701(0x1cf))/0xa);if(_0x3e23e4===_0x527ec9)break;else _0x1774cc['push'](_0x1774cc['shift']());}catch(_0x430082){_0x1774cc['push'](_0x1774cc['shift']());}}}(a17_0x2d41,0x3fc7a));import{DevApiClient}from'../api/dev-api-client.js';function a17_0x44ae(_0x465756,_0x561891){_0x465756=_0x465756-0x19b;const _0x2d4187=a17_0x2d41();let _0x44aee5=_0x2d4187[_0x465756];return _0x44aee5;}import{getEnvAppCode,getEnvironment}from'../config/env.js';export async function listSqlQueries(_0x4cbba8={}){const _0x226e0f=a17_0x44ae,{appCode:appCode=getEnvAppCode(),cookie:_0x238fe4,keyword:_0x5ba126,category:_0x5b9761,sqlCode:_0x4a7f2b,sqlName:_0xf9d9ca,pageSize:pageSize=0x3e7,currentPage:currentPage=0x1}=_0x4cbba8;if(!appCode)throw new Error(_0x226e0f(0x1b3));const _0xe562cf=new DevApiClient({'appCode':appCode,'cookie':_0x238fe4}),_0xc8fd06=getEnvironment();try{const _0x1e606=await _0xe562cf[_0x226e0f(0x1ac)]({'pageSize':pageSize,'currentPage':currentPage,'sqlCode':_0x4a7f2b,'sqlName':_0xf9d9ca}),_0x1da344=_0x1e606['data']||_0x1e606,_0x41481f=_0x1da344['tableData']||[],_0x400e94=_0x1da344['total']||_0x41481f[_0x226e0f(0x1a5)];let _0x301820=_0x41481f[_0x226e0f(0x1d0)](_0x243c23=>{const _0x94a1c7=_0x226e0f,_0x2e5252=_0x243c23[_0x94a1c7(0x1bb)]||appCode+'-'+(_0x243c23[_0x94a1c7(0x1d9)]||_0x243c23['id']),_0xa9e658=_0x243c23['sqlId']||_0x243c23['id'];let _0x329b7d;if(_0x243c23[_0x94a1c7(0x1a4)]||_0x243c23[_0x94a1c7(0x1a2)]){const _0x1f2c5b=_0x243c23[_0x94a1c7(0x1a4)]||_0x243c23['sql'],_0x50c55b=_0x1f2c5b[_0x94a1c7(0x1a8)](/[:$]\{?(\w+)\}?/g);if(_0x50c55b){const _0x5430e9=Array[_0x94a1c7(0x1ce)](new Set(_0x50c55b[_0x94a1c7(0x1d0)](_0x2051d9=>_0x2051d9[_0x94a1c7(0x1cb)](/[:${}]/g,''))));_0x329b7d=_0x5430e9[_0x94a1c7(0x1d0)](_0x33d7ae=>{const _0x47e301=_0x94a1c7;let _0x28e075=_0x47e301(0x1ae);if(_0x33d7ae[_0x47e301(0x1a7)]()['includes']('date')||_0x33d7ae[_0x47e301(0x1a7)]()[_0x47e301(0x1af)](_0x47e301(0x1d3)))_0x28e075='2024-01-01';else{if(_0x33d7ae[_0x47e301(0x1a7)]()[_0x47e301(0x1af)]('id'))_0x28e075=0x7b;else(_0x33d7ae[_0x47e301(0x1a7)]()['includes'](_0x47e301(0x1aa))||_0x33d7ae['toLowerCase']()[_0x47e301(0x1af)](_0x47e301(0x1bf)))&&(_0x28e075=0xa);}return{'name':_0x33d7ae,'type':_0x47e301(0x1d5),'required':!![],'description':_0x47e301(0x1b8)+_0x33d7ae,'example':_0x28e075};});}}const _0x162de4=_0x329b7d&&_0x329b7d[_0x94a1c7(0x1a5)]>0x0,_0x12218a=_0x162de4?_0x329b7d['reduce']((_0x1bf10d,_0x50609f)=>({..._0x1bf10d,[_0x50609f[_0x94a1c7(0x19b)]]:_0x50609f[_0x94a1c7(0x1c4)]}),{}):undefined,_0x1b00f9={'typescript':_0x94a1c7(0x1cd)+appCode+_0x94a1c7(0x1a6)+(_0xc8fd06||_0x94a1c7(0x1a0))+_0x94a1c7(0x1c6)+(_0x243c23['sqlName']||_0x243c23[_0x94a1c7(0x19b)]||'SQL\x20Query')+_0x94a1c7(0x1a3)+_0x2e5252+'\x27'+(_0x162de4?',\x20'+JSON[_0x94a1c7(0x1be)](_0x12218a,null,0x2):'')+_0x94a1c7(0x1d8),'description':'Execute\x20SQL\x20query:\x20'+(_0x243c23[_0x94a1c7(0x1ab)]||_0x243c23['name']||_0x94a1c7(0x1d6)),'important':['SDK\x20returns\x20{\x20execSuccess:\x20boolean,\x20execResult?:\x20any[]\x20}\x20-\x20Always\x20check\x20execSuccess\x20before\x20using\x20execResult','The\x20executeSql\x20method\x20accepts\x20two\x20parameters:\x20sqlCode\x20(string)\x20and\x20optional\x20params\x20(object)',_0x162de4?'This\x20SQL\x20requires\x20parameters:\x20'+_0x329b7d[_0x94a1c7(0x1d0)](_0x3b88ea=>_0x3b88ea[_0x94a1c7(0x19b)]+'\x20('+_0x3b88ea['type']+')')[_0x94a1c7(0x1c2)](',\x20'):'This\x20SQL\x20does\x20not\x20require\x20any\x20parameters','On\x20HTTP\x20error,\x20SDK\x20throws\x20LovrabetError\x20exception\x20-\x20use\x20try-catch\x20for\x20error\x20handling',_0x94a1c7(0x1bc)]},_0x22f511={'sqlCode':_0x2e5252,'sqlId':_0xa9e658,'name':_0x243c23['sqlName']||_0x243c23[_0x94a1c7(0x19b)]||_0x94a1c7(0x1bd)+_0xa9e658,'description':_0x243c23[_0x94a1c7(0x1a9)]||_0x243c23[_0x94a1c7(0x19c)],'category':_0x243c23['category']||_0x243c23['sqlType']||'other','sqlContent':_0x243c23[_0x94a1c7(0x1a4)]||_0x243c23['sql'],'parameters':_0x329b7d,'createdTime':_0x243c23['createdTime']||_0x243c23[_0x94a1c7(0x1ba)],'updatedTime':_0x243c23[_0x94a1c7(0x1b7)]||_0x243c23[_0x94a1c7(0x1d7)],'codeExample':_0x1b00f9};return _0x22f511;});if(_0x5ba126){const _0x5bcdfb=_0x5ba126[_0x226e0f(0x1a7)]();_0x301820=_0x301820[_0x226e0f(0x1c5)](_0x587b1d=>_0x587b1d[_0x226e0f(0x19b)][_0x226e0f(0x1a7)]()[_0x226e0f(0x1af)](_0x5bcdfb)||_0x587b1d['description']&&_0x587b1d[_0x226e0f(0x19c)][_0x226e0f(0x1a7)]()[_0x226e0f(0x1af)](_0x5bcdfb)||_0x587b1d[_0x226e0f(0x1bb)][_0x226e0f(0x1a7)]()[_0x226e0f(0x1af)](_0x5bcdfb)||_0x587b1d[_0x226e0f(0x1a4)]&&_0x587b1d[_0x226e0f(0x1a4)][_0x226e0f(0x1a7)]()[_0x226e0f(0x1af)](_0x5bcdfb));}_0x5b9761&&_0x5b9761!=='all'&&(_0x301820=_0x301820[_0x226e0f(0x1c5)](_0x4400d7=>_0x4400d7['category']&&_0x4400d7[_0x226e0f(0x1c8)]['toLowerCase']()===_0x5b9761[_0x226e0f(0x1a7)]()));const _0x1bf776=Math[_0x226e0f(0x1c0)](_0x301820[_0x226e0f(0x1a5)]/pageSize),_0x465954=_0x301820[_0x226e0f(0x1d4)]((currentPage-0x1)*pageSize,currentPage*pageSize),_0x2804e7=_0x465954[_0x226e0f(0x1a5)]>0x0?_0x465954[0x0]:null,_0x14cdad=_0x2804e7?_0x226e0f(0x1cc)+_0x2804e7['name']+'\x22\x0aconst\x20data\x20=\x20await\x20client.api.executeSql(\x27'+_0x2804e7['sqlCode']+_0x226e0f(0x1c9):'';return{'type':'sql_list','total':_0x301820['length'],'sqls':_0x465954,'pagination':{'currentPage':currentPage,'pageSize':pageSize,'totalPages':_0x1bf776},'usage':{'description':_0x226e0f(0x1ad)+_0x301820['length']+'\x20SQL\x20queries\x20for\x20application\x20'+appCode+_0x226e0f(0x1b5),'important':['IMPORTANT:\x20All\x20SQL\x20queries\x20use\x20the\x20same\x20execution\x20pattern\x20-\x20client.api.executeSql(sqlCode,\x20params)',_0x226e0f(0x1ca),_0x226e0f(0x19e),_0x226e0f(0x19d),_0x226e0f(0x1b0),'Each\x20SQL\x20query\x20above\x20includes\x20a\x20codeExample\x20field\x20with\x20complete\x20TypeScript\x20code\x20ready\x20to\x20use','For\x20more\x20customization,\x20use\x20generate_sql_code\x20tool\x20to\x20get\x20code\x20with\x20type\x20inference'],'example':_0x14cdad||_0x226e0f(0x1b1)}};}catch(_0x22d867){throw new Error(_0x226e0f(0x1a1)+_0x22d867[_0x226e0f(0x1b6)]);}}function a17_0x2d41(){const _0xe7682b=['\x27,\x0a\x20\x20env:\x20\x27','toLowerCase','match','sqlDesc','limit','sqlName','getCustomSqlList','Found\x20','value','includes','IMPORTANT:\x20Business\x20logic\x20errors\x20(SQL\x20failures)\x20are\x20returned\x20in\x20data.execError,\x20not\x20thrown','No\x20SQL\x20queries\x20found.\x20Check\x20your\x20appCode\x20and\x20authentication.','18GbExKO','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','28393kOCWNO','.\x20Each\x20SQL\x20includes\x20a\x20complete\x20code\x20example\x20showing\x20how\x20to\x20execute\x20it\x20using\x20the\x20SDK.','message','updatedTime','Parameter:\x20','12DvWEzU','createTime','sqlCode','The\x20execResult\x20contains\x20an\x20array\x20of\x20row\x20objects\x20matching\x20your\x20SQL\x20query\x20structure','SQL-','stringify','count','ceil','153imAFpG','join','312810nPCcbq','example','filter','\x27,\x0a});\x0a\x0a//\x20Execute\x20the\x20SQL\x20query:\x20','532740wDPMXG','category','\x27);\x0aif\x20(!data.execSuccess)\x20{\x0a\x20\x20throw\x20new\x20Error(\x27SQL\x20execution\x20failed\x27);\x0a}\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];','IMPORTANT:\x20Always\x20check\x20data.execSuccess\x20before\x20using\x20data.execResult','replace','\x0a//\x20Example:\x20Using\x20SQL\x20\x22','import\x20{\x20LovrabetClient\x20}\x20from\x20\x27@lovrabet/sdk\x27;\x0a\x0a//\x20Initialize\x20the\x20SDK\x20client\x0aconst\x20client\x20=\x20new\x20LovrabetClient({\x0a\x20\x20appCode:\x20\x27','from','279530lJcahn','map','1355080gDlsSd','1515126WFsnHR','time','slice','string','Custom\x20SQL','updateTime',');\x0a\x0a//\x20IMPORTANT:\x20Check\x20execution\x20status\x20before\x20using\x20results\x0aif\x20(!data.execSuccess)\x20{\x0a\x20\x20throw\x20new\x20Error(`SQL\x20execution\x20failed:\x20${data.execError\x20||\x20\x27Unknown\x20error\x27}`);\x0a}\x0a\x0a//\x20Process\x20the\x20results\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];\x0aconsole.log(`Retrieved\x20${results.length}\x20rows`);\x0a\x0a//\x20Use\x20the\x20data\x0aresults.forEach(row\x20=>\x20{\x0a\x20\x20console.log(row);\x0a});','sqlId','name','description','IMPORTANT:\x20Use\x20try-catch\x20to\x20handle\x20HTTP\x20errors\x20(network\x20issues,\x20auth\x20failures)','IMPORTANT:\x20The\x20SDK\x20returns\x20{\x20execSuccess:\x20boolean,\x20execResult?:\x20any[],\x20execError?:\x20string\x20}','2775262lsncNL','online','Failed\x20to\x20list\x20SQL\x20queries:\x20','sql','\x0aconst\x20data\x20=\x20await\x20client.api.executeSql(\x27','sqlContent','length'];a17_0x2d41=function(){return _0xe7682b;};return a17_0x2d41();}
1
+ (function(_0x3d7a23,_0x39b279){const _0x1996c5=a17_0x556c,_0x5100e7=_0x3d7a23();while(!![]){try{const _0x1aba98=parseInt(_0x1996c5(0x159))/0x1+-parseInt(_0x1996c5(0x13f))/0x2*(-parseInt(_0x1996c5(0x156))/0x3)+-parseInt(_0x1996c5(0x15f))/0x4+parseInt(_0x1996c5(0x14a))/0x5+parseInt(_0x1996c5(0x15d))/0x6*(-parseInt(_0x1996c5(0x12d))/0x7)+parseInt(_0x1996c5(0x131))/0x8*(-parseInt(_0x1996c5(0x149))/0x9)+-parseInt(_0x1996c5(0x13c))/0xa;if(_0x1aba98===_0x39b279)break;else _0x5100e7['push'](_0x5100e7['shift']());}catch(_0x44be5c){_0x5100e7['push'](_0x5100e7['shift']());}}}(a17_0x960c,0x740d9));import{DevApiClient}from'../api/dev-api-client.js';function a17_0x556c(_0x2a518f,_0x44dd63){_0x2a518f=_0x2a518f-0x122;const _0x960c0a=a17_0x960c();let _0x556c7f=_0x960c0a[_0x2a518f];return _0x556c7f;}import{getEnvAppCode,getEnvironment}from'../config/env.js';export async function listSqlQueries(_0x5bdf98={}){const _0x2c64ab=a17_0x556c,{appCode:appCode=getEnvAppCode(),cookie:_0x2b3dd1,keyword:_0x242a5c,category:_0x4fd986,sqlCode:_0x4f1daa,sqlName:_0x58879a,pageSize:pageSize=0x3e7,currentPage:currentPage=0x1}=_0x5bdf98;if(!appCode)throw new Error('appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.');const _0x1b48cf=new DevApiClient({'appCode':appCode,'cookie':_0x2b3dd1}),_0x5f5307=getEnvironment();try{const _0x161322=await _0x1b48cf['getCustomSqlList']({'pageSize':pageSize,'currentPage':currentPage,'sqlCode':_0x4f1daa,'sqlName':_0x58879a}),_0x3f21ac=_0x161322[_0x2c64ab(0x13a)]||_0x161322,_0x4d0edc=_0x3f21ac[_0x2c64ab(0x14d)]||[],_0x12e6c6=_0x3f21ac[_0x2c64ab(0x147)]||_0x4d0edc[_0x2c64ab(0x15c)];let _0x13f3cb=_0x4d0edc[_0x2c64ab(0x144)](_0x5b44a8=>{const _0x57ab85=_0x2c64ab,_0x524b46=_0x5b44a8[_0x57ab85(0x146)]||appCode+'-'+(_0x5b44a8['sqlId']||_0x5b44a8['id']),_0xd1d746=_0x5b44a8[_0x57ab85(0x12a)]||_0x5b44a8['id'];let _0x239276;if(_0x5b44a8['sqlContent']||_0x5b44a8[_0x57ab85(0x137)]){const _0x44f162=_0x5b44a8[_0x57ab85(0x151)]||_0x5b44a8['sql'],_0x3d07dd=_0x44f162[_0x57ab85(0x161)](/[:$]\{?(\w+)\}?/g);if(_0x3d07dd){const _0x45514d=Array['from'](new Set(_0x3d07dd[_0x57ab85(0x144)](_0x31481f=>_0x31481f[_0x57ab85(0x145)](/[:${}]/g,''))));_0x239276=_0x45514d['map'](_0x49b4e0=>{const _0x5485f9=_0x57ab85;let _0x5aa1f7=_0x5485f9(0x129);if(_0x49b4e0[_0x5485f9(0x12f)]()[_0x5485f9(0x12b)]('date')||_0x49b4e0['toLowerCase']()[_0x5485f9(0x12b)]('time'))_0x5aa1f7=_0x5485f9(0x13b);else{if(_0x49b4e0[_0x5485f9(0x12f)]()[_0x5485f9(0x12b)]('id'))_0x5aa1f7=0x7b;else(_0x49b4e0['toLowerCase']()['includes']('limit')||_0x49b4e0[_0x5485f9(0x12f)]()[_0x5485f9(0x12b)](_0x5485f9(0x160)))&&(_0x5aa1f7=0xa);}return{'name':_0x49b4e0,'type':_0x5485f9(0x125),'required':!![],'description':'Parameter:\x20'+_0x49b4e0,'example':_0x5aa1f7};});}}const _0x4e673b=_0x239276&&_0x239276[_0x57ab85(0x15c)]>0x0,_0x1d6765=_0x4e673b?_0x239276[_0x57ab85(0x132)]((_0x48121f,_0x2e6d7b)=>({..._0x48121f,[_0x2e6d7b[_0x57ab85(0x152)]]:_0x2e6d7b[_0x57ab85(0x140)]}),{}):undefined,_0x2e84fc={'typescript':_0x57ab85(0x136)+appCode+_0x57ab85(0x14f)+(_0x5f5307||'online')+'\x27,\x0a});\x0a\x0a//\x20Execute\x20the\x20SQL\x20query:\x20'+(_0x5b44a8[_0x57ab85(0x14b)]||_0x5b44a8[_0x57ab85(0x152)]||'SQL\x20Query')+_0x57ab85(0x133)+_0x524b46+'\x27'+(_0x4e673b?',\x20'+JSON[_0x57ab85(0x124)](_0x1d6765,null,0x2):'')+_0x57ab85(0x15e),'description':_0x57ab85(0x127)+(_0x5b44a8['sqlName']||_0x5b44a8[_0x57ab85(0x152)]||_0x57ab85(0x134)),'important':['SDK\x20returns\x20{\x20execSuccess:\x20boolean,\x20execResult?:\x20any[]\x20}\x20-\x20Always\x20check\x20execSuccess\x20before\x20using\x20execResult','The\x20executeSql\x20method\x20accepts\x20two\x20parameters:\x20sqlCode\x20(string)\x20and\x20optional\x20params\x20(object)',_0x4e673b?'This\x20SQL\x20requires\x20parameters:\x20'+_0x239276[_0x57ab85(0x144)](_0x1c0679=>_0x1c0679[_0x57ab85(0x152)]+'\x20('+_0x1c0679[_0x57ab85(0x142)]+')')['join'](',\x20'):_0x57ab85(0x126),_0x57ab85(0x157),'The\x20execResult\x20contains\x20an\x20array\x20of\x20row\x20objects\x20matching\x20your\x20SQL\x20query\x20structure']},_0x49a5ce={'sqlCode':_0x524b46,'sqlId':_0xd1d746,'name':_0x5b44a8['sqlName']||_0x5b44a8[_0x57ab85(0x152)]||_0x57ab85(0x12e)+_0xd1d746,'description':_0x5b44a8['sqlDesc']||_0x5b44a8[_0x57ab85(0x15a)],'category':_0x5b44a8['category']||_0x5b44a8[_0x57ab85(0x13e)]||_0x57ab85(0x141),'sqlContent':_0x5b44a8[_0x57ab85(0x151)]||_0x5b44a8[_0x57ab85(0x137)],'parameters':_0x239276,'createdTime':_0x5b44a8[_0x57ab85(0x158)]||_0x5b44a8[_0x57ab85(0x14e)],'updatedTime':_0x5b44a8[_0x57ab85(0x150)]||_0x5b44a8[_0x57ab85(0x153)],'codeExample':_0x2e84fc};return _0x49a5ce;});if(_0x242a5c){const _0x21a1de=_0x242a5c[_0x2c64ab(0x12f)]();_0x13f3cb=_0x13f3cb[_0x2c64ab(0x154)](_0x4ed81c=>_0x4ed81c[_0x2c64ab(0x152)][_0x2c64ab(0x12f)]()[_0x2c64ab(0x12b)](_0x21a1de)||_0x4ed81c['description']&&_0x4ed81c[_0x2c64ab(0x15a)]['toLowerCase']()[_0x2c64ab(0x12b)](_0x21a1de)||_0x4ed81c['sqlCode'][_0x2c64ab(0x12f)]()[_0x2c64ab(0x12b)](_0x21a1de)||_0x4ed81c[_0x2c64ab(0x151)]&&_0x4ed81c[_0x2c64ab(0x151)][_0x2c64ab(0x12f)]()['includes'](_0x21a1de));}_0x4fd986&&_0x4fd986!==_0x2c64ab(0x14c)&&(_0x13f3cb=_0x13f3cb[_0x2c64ab(0x154)](_0x3ca4ef=>_0x3ca4ef[_0x2c64ab(0x148)]&&_0x3ca4ef[_0x2c64ab(0x148)][_0x2c64ab(0x12f)]()===_0x4fd986[_0x2c64ab(0x12f)]()));const _0x3aaa75=Math['ceil'](_0x13f3cb[_0x2c64ab(0x15c)]/pageSize),_0x51a598=_0x13f3cb['slice']((currentPage-0x1)*pageSize,currentPage*pageSize),_0x42cd14=_0x51a598[_0x2c64ab(0x15c)]>0x0?_0x51a598[0x0]:null,_0x2b3d43=_0x42cd14?_0x2c64ab(0x12c)+_0x42cd14[_0x2c64ab(0x152)]+_0x2c64ab(0x143)+_0x42cd14[_0x2c64ab(0x146)]+'\x27);\x0aif\x20(!data.execSuccess)\x20{\x0a\x20\x20throw\x20new\x20Error(\x27SQL\x20execution\x20failed\x27);\x0a}\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];':'';return{'type':_0x2c64ab(0x138),'total':_0x13f3cb['length'],'sqls':_0x51a598,'pagination':{'currentPage':currentPage,'pageSize':pageSize,'totalPages':_0x3aaa75},'usage':{'description':_0x2c64ab(0x155)+_0x13f3cb[_0x2c64ab(0x15c)]+_0x2c64ab(0x122)+appCode+_0x2c64ab(0x135),'important':['IMPORTANT:\x20All\x20SQL\x20queries\x20use\x20the\x20same\x20execution\x20pattern\x20-\x20client.api.executeSql(sqlCode,\x20params)',_0x2c64ab(0x123),_0x2c64ab(0x139),'IMPORTANT:\x20Use\x20try-catch\x20to\x20handle\x20HTTP\x20errors\x20(network\x20issues,\x20auth\x20failures)',_0x2c64ab(0x15b),'Each\x20SQL\x20query\x20above\x20includes\x20a\x20codeExample\x20field\x20with\x20complete\x20TypeScript\x20code\x20ready\x20to\x20use',_0x2c64ab(0x130)],'example':_0x2b3d43||_0x2c64ab(0x13d)}};}catch(_0x496967){throw new Error(_0x2c64ab(0x128)+_0x496967['message']);}}function a17_0x960c(){const _0x4df48e=['createTime','\x27,\x0a\x20\x20env:\x20\x27','updatedTime','sqlContent','name','updateTime','filter','Found\x20','3mnECrP','On\x20HTTP\x20error,\x20SDK\x20throws\x20LovrabetError\x20exception\x20-\x20use\x20try-catch\x20for\x20error\x20handling','createdTime','911783nChLMk','description','IMPORTANT:\x20Business\x20logic\x20errors\x20(SQL\x20failures)\x20are\x20returned\x20in\x20data.execError,\x20not\x20thrown','length','32196IbWVbB',');\x0a\x0a//\x20IMPORTANT:\x20Check\x20execution\x20status\x20before\x20using\x20results\x0aif\x20(!data.execSuccess)\x20{\x0a\x20\x20throw\x20new\x20Error(`SQL\x20execution\x20failed:\x20${data.execError\x20||\x20\x27Unknown\x20error\x27}`);\x0a}\x0a\x0a//\x20Process\x20the\x20results\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];\x0aconsole.log(`Retrieved\x20${results.length}\x20rows`);\x0a\x0a//\x20Use\x20the\x20data\x0aresults.forEach(row\x20=>\x20{\x0a\x20\x20console.log(row);\x0a});','37740vOErRL','count','match','\x20SQL\x20queries\x20for\x20application\x20','IMPORTANT:\x20Always\x20check\x20data.execSuccess\x20before\x20using\x20data.execResult','stringify','string','This\x20SQL\x20does\x20not\x20require\x20any\x20parameters','Execute\x20SQL\x20query:\x20','Failed\x20to\x20list\x20SQL\x20queries:\x20','value','sqlId','includes','\x0a//\x20Example:\x20Using\x20SQL\x20\x22','273YwdzJr','SQL-','toLowerCase','For\x20more\x20customization,\x20use\x20generate_sql_code\x20tool\x20to\x20get\x20code\x20with\x20type\x20inference','143416LUanwK','reduce','\x0aconst\x20data\x20=\x20await\x20client.api.executeSql(\x27','Custom\x20SQL','.\x20Each\x20SQL\x20includes\x20a\x20complete\x20code\x20example\x20showing\x20how\x20to\x20execute\x20it\x20using\x20the\x20SDK.','import\x20{\x20LovrabetClient\x20}\x20from\x20\x27@lovrabet/sdk\x27;\x0a\x0a//\x20Initialize\x20the\x20SDK\x20client\x0aconst\x20client\x20=\x20new\x20LovrabetClient({\x0a\x20\x20appCode:\x20\x27','sql','sql_list','IMPORTANT:\x20The\x20SDK\x20returns\x20{\x20execSuccess:\x20boolean,\x20execResult?:\x20any[],\x20execError?:\x20string\x20}','data','2024-01-01','8983930NbjPMk','No\x20SQL\x20queries\x20found.\x20Check\x20your\x20appCode\x20and\x20authentication.','sqlType','1286380hmTZmB','example','other','type','\x22\x0aconst\x20data\x20=\x20await\x20client.api.executeSql(\x27','map','replace','sqlCode','total','category','117vWPgHt','1352665QullNX','sqlName','all','tableData'];a17_0x960c=function(){return _0x4df48e;};return a17_0x960c();}
@@ -1 +1 @@
1
- (function(_0x882bc9,_0x14087e){const _0x10a5f8=a18_0x421f,_0x54787e=_0x882bc9();while(!![]){try{const _0x18f5dd=parseInt(_0x10a5f8(0x1dd))/0x1*(parseInt(_0x10a5f8(0x1c8))/0x2)+-parseInt(_0x10a5f8(0x1d7))/0x3+parseInt(_0x10a5f8(0x1cd))/0x4+parseInt(_0x10a5f8(0x1ca))/0x5*(-parseInt(_0x10a5f8(0x1d5))/0x6)+parseInt(_0x10a5f8(0x1de))/0x7*(parseInt(_0x10a5f8(0x1d9))/0x8)+-parseInt(_0x10a5f8(0x1e6))/0x9*(-parseInt(_0x10a5f8(0x1db))/0xa)+-parseInt(_0x10a5f8(0x1e5))/0xb;if(_0x18f5dd===_0x14087e)break;else _0x54787e['push'](_0x54787e['shift']());}catch(_0x52fc9e){_0x54787e['push'](_0x54787e['shift']());}}}(a18_0x2975,0xc7d27));function a18_0x2975(){const _0x32a0df=['createServer','object','86avBupV','listen','5lfbleu','headers','cookie','3193928yPpodP','Login\x20timeout\x20-\x20no\x20response\x20received\x20within\x205\x20minutes','text/html;\x20charset=utf-8','writeHead','\x20environment','https://g.yuntooai.com/cert/lovrabet-dev.json','Internal\x20server\x20error','<!doctype\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>Login\x20Successful</title></head>\x0a<body>\x0a\x20\x20<div>Login\x20successful!\x20You\x20can\x20close\x20this\x20window\x20and\x20return\x20to\x20your\x20vibe\x20editor.</div>\x0a\x20\x20<script>\x0a\x20\x20\x20\x20setTimeout(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.close();\x20}\x20catch(e)\x20{}\x0a\x20\x20\x20\x20},\x202000);\x0a\x20\x20</script>\x0a</body>\x0a</html>','1248138DhiTUy','Already\x20logged\x20in\x20to\x20','164403MpUbnn','json','10761832uFiDKz','/api/auth/get-session','170JnDENa','<!doctype\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>Login\x20Failed</title></head>\x0a<body>\x0a\x20\x20<div\x20style=\x22color:\x20red;\x22>\x0a\x20\x20\x20\x20<h2>Login\x20Successful,\x20but\x20Failed\x20to\x20Save\x20Cookie</h2>\x0a\x20\x20\x20\x20<p>Error:\x20','36435tLfreT','7rhBbOF','end','/sign-in?redirect=','127.0.0.1','</p>\x0a\x20\x20\x20\x20<p>Please\x20check\x20file\x20permissions\x20for\x20~/.lovrabet/cookie</p>\x0a\x20\x20</div>\x0a</body>\x0a</html>','Please\x20open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20login:\x20','port','44319033suibzK','741114dcozxE','message','Failed\x20to\x20fetch\x20SSL\x20certificates\x20for\x20login\x20server','close','text/plain','Login\x20server\x20error:\x20','session','Login\x20successful\x20but\x20failed\x20to\x20save\x20cookie:\x20','user','https://dev.lovrabet.com:'];a18_0x2975=function(){return _0x32a0df;};return a18_0x2975();}import*as a18_0x1757da from'node:https';function a18_0x421f(_0x335ce3,_0x541094){_0x335ce3=_0x335ce3-0x1c4;const _0x29750f=a18_0x2975();let _0x421fff=_0x29750f[_0x335ce3];return _0x421fff;}import{saveCookie}from'../auth/cookie-manager.js';import{isSessionValid}from'../auth/session-validator.js';import{getUserDomain,getEnvironment}from'../config/env.js';export async function login(_0x385d81={}){const _0x103493=a18_0x421f,_0x38ba80=getEnvironment();if(await isSessionValid())return{'success':!![],'message':_0x103493(0x1d6)+_0x38ba80+_0x103493(0x1d1),'env':_0x38ba80};let _0x4b7814;try{const _0x2a9f00=await fetch(_0x103493(0x1d2));_0x4b7814=await _0x2a9f00[_0x103493(0x1d8)]();}catch(_0x4071cb){return{'success':![],'message':_0x103493(0x1e8),'env':_0x38ba80};}return new Promise(_0x3f3ba2=>{const _0x14876d=_0x103493;let _0x4d4a72=0x0;const _0xa96c7=a18_0x1757da[_0x14876d(0x1c6)](_0x4b7814,async(_0x4906d1,_0x3a1350)=>{const _0x188baa=_0x14876d,_0x179c5c=getUserDomain(),_0x174ddd=_0x4906d1[_0x188baa(0x1cb)][_0x188baa(0x1cc)]||'';try{const _0x4f9e9e=await fetch(_0x179c5c+_0x188baa(0x1da),{'headers':{'cookie':_0x174ddd}}),_0x598cbc=await _0x4f9e9e[_0x188baa(0x1d8)](),_0x26b5ab=_0x598cbc&&_0x598cbc[_0x188baa(0x1ec)]&&_0x598cbc[_0x188baa(0x1c4)];if(_0x26b5ab){try{saveCookie(_0x174ddd);}catch(_0x579240){const _0x4576a0=_0x188baa(0x1dc)+_0x579240[_0x188baa(0x1e7)]+_0x188baa(0x1e2);_0x3a1350[_0x188baa(0x1d0)](0x1f4,{'Content-Type':_0x188baa(0x1cf)}),_0x3a1350[_0x188baa(0x1df)](_0x4576a0),_0xa96c7['close'](),_0x3f3ba2({'success':![],'message':_0x188baa(0x1ed)+_0x579240[_0x188baa(0x1e7)],'env':_0x38ba80});return;}const _0x573f77=_0x188baa(0x1d4);_0x3a1350[_0x188baa(0x1d0)](0xc8,{'Content-Type':_0x188baa(0x1cf)}),_0x3a1350[_0x188baa(0x1df)](_0x573f77),_0xa96c7[_0x188baa(0x1e9)](),_0x3f3ba2({'success':!![],'message':'Successfully\x20logged\x20in\x20to\x20'+_0x38ba80+_0x188baa(0x1d1),'env':_0x38ba80});}else{const _0x41c49b=encodeURIComponent(_0x188baa(0x1c5)+_0x4d4a72);_0x3a1350[_0x188baa(0x1d0)](0x12e,{'location':_0x179c5c+_0x188baa(0x1e0)+_0x41c49b}),_0x3a1350[_0x188baa(0x1df)]();}}catch(_0x454bef){_0x3a1350['writeHead'](0x1f4,{'Content-Type':_0x188baa(0x1ea)}),_0x3a1350['end'](_0x188baa(0x1d3)),_0xa96c7['close'](),_0x3f3ba2({'success':![],'message':'Login\x20server\x20error','env':_0x38ba80});}});_0xa96c7[_0x14876d(0x1c9)](0x0,_0x14876d(0x1e1),()=>{const _0x23d618=_0x14876d,_0x2691c0=_0xa96c7['address']();_0x4d4a72=typeof _0x2691c0===_0x23d618(0x1c7)&&_0x2691c0?_0x2691c0[_0x23d618(0x1e4)]:0x0;const _0x1acd24='https://dev.lovrabet.com:'+_0x4d4a72;_0x3f3ba2({'success':![],'message':_0x23d618(0x1e3)+_0x1acd24,'loginUrl':_0x1acd24,'env':_0x38ba80});}),_0xa96c7['on']('error',_0x4666ed=>{const _0x19350c=_0x14876d;_0x3f3ba2({'success':![],'message':_0x19350c(0x1eb)+_0x4666ed[_0x19350c(0x1e7)],'env':_0x38ba80});}),setTimeout(()=>{const _0x4c8c84=_0x14876d;_0xa96c7[_0x4c8c84(0x1e9)](),_0x3f3ba2({'success':![],'message':_0x4c8c84(0x1ce),'env':_0x38ba80});},0x5*0x3c*0x3e8);});}
1
+ (function(_0x1fcdf6,_0x4204f3){const _0x22ff6c=a18_0x475a,_0x236057=_0x1fcdf6();while(!![]){try{const _0x118eac=parseInt(_0x22ff6c(0x156))/0x1+parseInt(_0x22ff6c(0x164))/0x2+-parseInt(_0x22ff6c(0x16e))/0x3*(-parseInt(_0x22ff6c(0x16c))/0x4)+-parseInt(_0x22ff6c(0x15b))/0x5*(parseInt(_0x22ff6c(0x171))/0x6)+parseInt(_0x22ff6c(0x158))/0x7+parseInt(_0x22ff6c(0x174))/0x8+parseInt(_0x22ff6c(0x163))/0x9;if(_0x118eac===_0x4204f3)break;else _0x236057['push'](_0x236057['shift']());}catch(_0x12b630){_0x236057['push'](_0x236057['shift']());}}}(a18_0x16e7,0x2bc4d));import*as a18_0x42b958 from'node:https';import{saveCookie}from'../auth/cookie-manager.js';import{isSessionValid}from'../auth/session-validator.js';import{getUserDomain,getEnvironment}from'../config/env.js';export async function login(_0x3be5e6={}){const _0x375336=a18_0x475a,_0x569eda=getEnvironment();if(await isSessionValid())return{'success':!![],'message':'Already\x20logged\x20in\x20to\x20'+_0x569eda+_0x375336(0x157),'env':_0x569eda};let _0x4a2d8a;try{const _0x2fa46f=await fetch(_0x375336(0x159));_0x4a2d8a=await _0x2fa46f[_0x375336(0x176)]();}catch(_0x55be02){return{'success':![],'message':'Failed\x20to\x20fetch\x20SSL\x20certificates\x20for\x20login\x20server','env':_0x569eda};}return new Promise(_0x327935=>{const _0x95ba3a=_0x375336;let _0x52bd3c=0x0;const _0x4ee1df=a18_0x42b958[_0x95ba3a(0x161)](_0x4a2d8a,async(_0x46ecb7,_0x567564)=>{const _0x340631=_0x95ba3a,_0x10eefc=getUserDomain(),_0x130ac8=_0x46ecb7[_0x340631(0x15a)][_0x340631(0x162)]||'';try{const _0x1438cc=await fetch(_0x10eefc+_0x340631(0x16b),{'headers':{'cookie':_0x130ac8}}),_0xcafc2f=await _0x1438cc[_0x340631(0x176)](),_0x4160c1=_0xcafc2f&&_0xcafc2f[_0x340631(0x179)]&&_0xcafc2f[_0x340631(0x166)];if(_0x4160c1){try{saveCookie(_0x130ac8);}catch(_0x57a18d){const _0xe8c05b=_0x340631(0x15d)+_0x57a18d[_0x340631(0x16d)]+_0x340631(0x170);_0x567564[_0x340631(0x15e)](0x1f4,{'Content-Type':_0x340631(0x165)}),_0x567564[_0x340631(0x168)](_0xe8c05b),_0x4ee1df['close'](),_0x327935({'success':![],'message':_0x340631(0x17a)+_0x57a18d[_0x340631(0x16d)],'env':_0x569eda});return;}const _0x592404=_0x340631(0x16a);_0x567564[_0x340631(0x15e)](0xc8,{'Content-Type':'text/html;\x20charset=utf-8'}),_0x567564[_0x340631(0x168)](_0x592404),_0x4ee1df[_0x340631(0x15f)](),_0x327935({'success':!![],'message':_0x340631(0x173)+_0x569eda+'\x20environment','env':_0x569eda});}else{const _0x289c1d=encodeURIComponent(_0x340631(0x175)+_0x52bd3c);_0x567564['writeHead'](0x12e,{'location':_0x10eefc+_0x340631(0x15c)+_0x289c1d}),_0x567564[_0x340631(0x168)]();}}catch(_0x3f3092){_0x567564[_0x340631(0x15e)](0x1f4,{'Content-Type':_0x340631(0x178)}),_0x567564[_0x340631(0x168)](_0x340631(0x169)),_0x4ee1df['close'](),_0x327935({'success':![],'message':_0x340631(0x16f),'env':_0x569eda});}});_0x4ee1df[_0x95ba3a(0x17c)](0x0,'127.0.0.1',()=>{const _0x56c3f8=_0x95ba3a,_0x3856a1=_0x4ee1df[_0x56c3f8(0x160)]();_0x52bd3c=typeof _0x3856a1===_0x56c3f8(0x17b)&&_0x3856a1?_0x3856a1[_0x56c3f8(0x172)]:0x0;const _0x1d914d='https://dev.lovrabet.com:'+_0x52bd3c;_0x327935({'success':![],'message':_0x56c3f8(0x177)+_0x1d914d,'loginUrl':_0x1d914d,'env':_0x569eda});}),_0x4ee1df['on'](_0x95ba3a(0x167),_0x234764=>{const _0x125259=_0x95ba3a;_0x327935({'success':![],'message':'Login\x20server\x20error:\x20'+_0x234764[_0x125259(0x16d)],'env':_0x569eda});}),setTimeout(()=>{const _0x42057e=_0x95ba3a;_0x4ee1df[_0x42057e(0x15f)](),_0x327935({'success':![],'message':'Login\x20timeout\x20-\x20no\x20response\x20received\x20within\x205\x20minutes','env':_0x569eda});},0x5*0x3c*0x3e8);});}function a18_0x475a(_0x21c69f,_0x1b6d30){_0x21c69f=_0x21c69f-0x156;const _0x16e756=a18_0x16e7();let _0x475a80=_0x16e756[_0x21c69f];return _0x475a80;}function a18_0x16e7(){const _0x13c212=['writeHead','close','address','createServer','cookie','491373jfWwbB','115260TwHefd','text/html;\x20charset=utf-8','user','error','end','Internal\x20server\x20error','<!doctype\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>Login\x20Successful</title></head>\x0a<body>\x0a\x20\x20<div>Login\x20successful!\x20You\x20can\x20close\x20this\x20window\x20and\x20return\x20to\x20your\x20vibe\x20editor.</div>\x0a\x20\x20<script>\x0a\x20\x20\x20\x20setTimeout(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.close();\x20}\x20catch(e)\x20{}\x0a\x20\x20\x20\x20},\x202000);\x0a\x20\x20</script>\x0a</body>\x0a</html>','/api/auth/get-session','8392feDgeN','message','45akrcza','Login\x20server\x20error','</p>\x0a\x20\x20\x20\x20<p>Please\x20check\x20file\x20permissions\x20for\x20~/.lovrabet/cookie</p>\x0a\x20\x20</div>\x0a</body>\x0a</html>','90798wSwTNl','port','Successfully\x20logged\x20in\x20to\x20','48456vLYhRS','https://dev.lovrabet.com:','json','Please\x20open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20login:\x20','text/plain','session','Login\x20successful\x20but\x20failed\x20to\x20save\x20cookie:\x20','object','listen','200321LAUkRO','\x20environment','1240827vGHyhF','https://g.yuntooai.com/cert/lovrabet-dev.json','headers','115zWJAYJ','/sign-in?redirect=','<!doctype\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>Login\x20Failed</title></head>\x0a<body>\x0a\x20\x20<div\x20style=\x22color:\x20red;\x22>\x0a\x20\x20\x20\x20<h2>Login\x20Successful,\x20but\x20Failed\x20to\x20Save\x20Cookie</h2>\x0a\x20\x20\x20\x20<p>Error:\x20'];a18_0x16e7=function(){return _0x13c212;};return a18_0x16e7();}
@@ -1 +1 @@
1
- (function(_0x2c1857,_0x3a7506){const _0x435f03=a20_0x3951,_0xba31b9=_0x2c1857();while(!![]){try{const _0x13c689=-parseInt(_0x435f03(0x1f5))/0x1+-parseInt(_0x435f03(0x1d9))/0x2+parseInt(_0x435f03(0x1cb))/0x3+parseInt(_0x435f03(0x1f0))/0x4*(parseInt(_0x435f03(0x1c6))/0x5)+parseInt(_0x435f03(0x1df))/0x6*(parseInt(_0x435f03(0x1d1))/0x7)+-parseInt(_0x435f03(0x1c1))/0x8*(parseInt(_0x435f03(0x1dc))/0x9)+parseInt(_0x435f03(0x1ec))/0xa;if(_0x13c689===_0x3a7506)break;else _0xba31b9['push'](_0xba31b9['shift']());}catch(_0x32f86b){_0xba31b9['push'](_0xba31b9['shift']());}}}(a20_0x2809,0x208ca));import{DevApiClient}from'../api/dev-api-client.js';import{validateIsSelectOnly,parseSqlStructure,generateSqlSummary}from'../utils/sql-parser.js';function a20_0x3951(_0x191fc2,_0x2737d0){_0x191fc2=_0x191fc2-0x1be;const _0x2809cf=a20_0x2809();let _0x3951f4=_0x2809cf[_0x191fc2];return _0x3951f4;}import{getEnvAppCode,getEnvironment,shouldLog}from'../config/env.js';export async function saveOrUpdateCustomSql(_0x55a880){const _0xd60e69=a20_0x3951,_0x837122=Date[_0xd60e69(0x1e1)](),{appCode:appCode=getEnvAppCode(),cookie:_0x26489e,sqlName:_0x29ff6d,dbId:_0x370ad2,sqlContent:_0x307b70,id:_0x30cbd9,sqlCode:_0x1976fa,verifyAfterSave:verifyAfterSave=!![],validateSchema:validateSchema=![]}=_0x55a880;if(!appCode)throw new Error('appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.');if(!_0x29ff6d||_0x29ff6d['trim']()==='')throw new Error('sqlName\x20is\x20required\x20and\x20cannot\x20be\x20empty.');if(!_0x370ad2)throw new Error(_0xd60e69(0x1c3));if(!_0x307b70||_0x307b70[_0xd60e69(0x1e6)]()==='')throw new Error(_0xd60e69(0x1c5));const _0x1931b6=_0x30cbd9!==undefined&&_0x30cbd9>0x0||_0x1976fa!==undefined&&_0x1976fa[_0xd60e69(0x1e6)]()!=='';if(_0x1931b6){if(!_0x30cbd9)throw new Error(_0xd60e69(0x1dd));if(!_0x1976fa)throw new Error(_0xd60e69(0x1c7));}const _0x45add9=validateIsSelectOnly(_0x307b70);if(!_0x45add9['valid'])throw new Error(_0xd60e69(0x1d0)+_0x45add9[_0xd60e69(0x1be)]);const _0x1106a1=parseSqlStructure(_0x307b70),_0x2a9c3b=generateSqlSummary(_0x307b70),_0x3db906=new DevApiClient({'appCode':appCode,'cookie':_0x26489e}),_0x201973=getEnvironment(),_0x1ad466=_0x29ff6d[_0xd60e69(0x1e6)]();let _0xb64561;_0x1931b6?_0xb64561=await _0x3db906[_0xd60e69(0x1ed)]({'id':_0x30cbd9,'sqlCode':_0x1976fa[_0xd60e69(0x1e6)](),'sqlName':_0x1ad466,'dbId':_0x370ad2,'sqlContent':_0x307b70['trim']()}):_0xb64561=await _0x3db906[_0xd60e69(0x1e4)]({'sqlName':_0x1ad466,'dbId':_0x370ad2,'sqlContent':_0x307b70[_0xd60e69(0x1e6)]()});const _0x110740=Date[_0xd60e69(0x1e1)]()-_0x837122;if(!_0xb64561['success'])return{'success':![],'action':_0x1931b6?_0xd60e69(0x1e9):'created','message':_0xb64561[_0xd60e69(0x1d2)]||_0xb64561['errorMsg']||_0xd60e69(0x1f6)+(_0x1931b6?'update':_0xd60e69(0x1ee))+'\x20custom\x20SQL','nextSteps':[{'action':_0xd60e69(0x1d8),'tool':'login','reason':_0xd60e69(0x1c0)},{'action':_0xd60e69(0x1d7),'tool':_0xd60e69(0x1c4),'params':{'datasetCode':'<dataset-code>'},'reason':_0xd60e69(0x1f7)}]};const _0x47b5aa=_0xb64561[_0xd60e69(0x1cc)]?.[_0xd60e69(0x1e7)]||_0xb64561[_0xd60e69(0x1cc)]?.[_0xd60e69(0x1d4)],_0x3055aa=_0xb64561[_0xd60e69(0x1cc)]?.['sqlId']||_0xb64561[_0xd60e69(0x1cc)]?.['id'],_0x237ddf=[{'action':_0xd60e69(0x1d3),'tool':_0xd60e69(0x1ce),'params':{'sqlCode':_0x47b5aa||''},'reason':_0xd60e69(0x1f1),'priority':_0xd60e69(0x1c9)},{'action':'Generate\x20SDK\x20code\x20for\x20this\x20SQL','tool':_0xd60e69(0x1e5),'params':{'sqlCode':_0x47b5aa||''},'reason':_0xd60e69(0x1da),'priority':_0xd60e69(0x1e3)}],_0x3cbafe={'success':!![],'action':_0x1931b6?_0xd60e69(0x1e9):_0xd60e69(0x1f4),'message':_0x1931b6?_0xd60e69(0x1ea)+_0x1ad466+'\x22\x20updated\x20successfully\x20('+_0x2a9c3b+')':_0xd60e69(0x1ea)+_0x1ad466+'\x22\x20saved\x20successfully\x20('+_0x2a9c3b+')','nextSteps':_0x237ddf,'parsedStructure':{'tables':_0x1106a1[_0xd60e69(0x1f3)],'columns':_0x1106a1[_0xd60e69(0x1ef)][_0xd60e69(0x1eb)],'parameters':_0x1106a1[_0xd60e69(0x1cd)],'summary':_0x2a9c3b},'data':_0xb64561[_0xd60e69(0x1cc)]};if(verifyAfterSave)try{const _0x443313=await _0x3db906[_0xd60e69(0x1f9)]({'pageSize':0xa,'currentPage':0x1,'sqlName':_0x1ad466}),_0x15cb2e=_0x443313['data']?.['tableData']||[],_0x49495d=_0x15cb2e[_0xd60e69(0x1ca)](_0x42e6b7=>_0x42e6b7[_0xd60e69(0x1f2)]===_0x1ad466||_0x42e6b7[_0xd60e69(0x1de)]===_0x1ad466);_0x49495d?(_0x3cbafe['verified']={'found':!![],'sqlInfo':{'sqlCode':_0x49495d[_0xd60e69(0x1e7)]||appCode+'-'+(_0x49495d[_0xd60e69(0x1cf)]||_0x49495d['id']),'sqlId':_0x49495d[_0xd60e69(0x1cf)]||_0x49495d['id'],'id':_0x49495d['id'],'name':_0x49495d[_0xd60e69(0x1f2)]||_0x49495d['name'],'sqlContent':_0x49495d[_0xd60e69(0x1c2)]||_0x49495d[_0xd60e69(0x1c8)],'createdTime':_0x49495d[_0xd60e69(0x1e0)]||_0x49495d[_0xd60e69(0x1e8)],'updatedTime':_0x49495d['updatedTime']||_0x49495d[_0xd60e69(0x1d5)]}},_0x3cbafe[_0xd60e69(0x1d6)][_0xd60e69(0x1bf)]?.[_0xd60e69(0x1e7)]&&(_0x237ddf[0x0][_0xd60e69(0x1f8)]={'sqlCode':_0x3cbafe[_0xd60e69(0x1d6)][_0xd60e69(0x1bf)]['sqlCode']},_0x237ddf[0x1][_0xd60e69(0x1f8)]={'sqlCode':_0x3cbafe['verified'][_0xd60e69(0x1bf)][_0xd60e69(0x1e7)]})):_0x3cbafe[_0xd60e69(0x1d6)]={'found':![]};}catch(_0xab581c){shouldLog()&&console[_0xd60e69(0x1db)](_0xd60e69(0x1e2),_0xab581c),_0x3cbafe[_0xd60e69(0x1d6)]={'found':![]};}return _0x3cbafe;}function a20_0x2809(){const _0x28feb6=['length','2683100iMBKGV','updateUserCustomSql','save','columns','651432CvUicL','Execute\x20the\x20SQL\x20to\x20check\x20for\x20runtime\x20errors','sqlName','tables','created','184172JNNCvr','Failed\x20to\x20','Confirm\x20the\x20dbId\x20matches\x20the\x20database\x20you\x20want\x20to\x20use','params','getCustomSqlList','reason','sqlInfo','Ensure\x20you\x20are\x20logged\x20in\x20with\x20proper\x20permissions','648nPlCPY','sqlContent','dbId\x20is\x20required.\x20Get\x20it\x20from\x20get_dataset_detail\x20->\x20basic.database.dbId','get_dataset_detail','sqlContent\x20is\x20required\x20and\x20cannot\x20be\x20empty.','5KpSfUX','sqlCode\x20is\x20required\x20for\x20updating\x20existing\x20SQL.','sql','high','find','13857TJvNNK','data','parameters','execute_custom_sql','sqlId','SQL\x20validation\x20failed:\x20','7JtDwKP','message','Test\x20the\x20SQL\x20to\x20verify\x20it\x20works\x20correctly','code','updateTime','verified','Verify\x20database\x20ID\x20is\x20correct','Check\x20database\x20connection\x20and\x20permissions','53194WrmbJq','Get\x20ready-to-use\x20TypeScript\x20code\x20for\x20your\x20application','warn','21519bVusuE','id\x20is\x20required\x20for\x20updating\x20existing\x20SQL.','name','611850ghXJOd','createdTime','now','[saveOrUpdateCustomSql]\x20Verification\x20query\x20failed:','medium','saveUserCustomSql','generate_sql_code','trim','sqlCode','createTime','updated','Custom\x20SQL\x20\x22'];a20_0x2809=function(){return _0x28feb6;};return a20_0x2809();}
1
+ (function(_0x7e0eaa,_0x293814){const _0x76630f=a19_0xd4d9,_0x142b92=_0x7e0eaa();while(!![]){try{const _0x161426=-parseInt(_0x76630f(0x135))/0x1*(parseInt(_0x76630f(0x13d))/0x2)+-parseInt(_0x76630f(0x107))/0x3+-parseInt(_0x76630f(0x11f))/0x4+parseInt(_0x76630f(0x12c))/0x5+parseInt(_0x76630f(0x12a))/0x6+-parseInt(_0x76630f(0x114))/0x7+-parseInt(_0x76630f(0x113))/0x8*(-parseInt(_0x76630f(0x12d))/0x9);if(_0x161426===_0x293814)break;else _0x142b92['push'](_0x142b92['shift']());}catch(_0x2dd5e2){_0x142b92['push'](_0x142b92['shift']());}}}(a19_0x3d2c,0x7c50d));import{DevApiClient}from'../api/dev-api-client.js';function a19_0xd4d9(_0x11b233,_0x14d259){_0x11b233=_0x11b233-0x103;const _0x3d2cf2=a19_0x3d2c();let _0xd4d99=_0x3d2cf2[_0x11b233];return _0xd4d99;}import{detectSqlType,parseSqlStructure,generateSqlSummary}from'../utils/sql-parser.js';import{getEnvAppCode,getEnvironment,shouldLog}from'../config/env.js';import{rateLimiters}from'../utils/rate-limiter.js';function a19_0x3d2c(){const _0x1cc50f=['sqlId','⚠️\x20检测到\x20','parameters','execute_custom_sql','Verify\x20database\x20ID\x20is\x20correct','saveUserCustomSql','created','Ensure\x20you\x20are\x20logged\x20in\x20with\x20proper\x20permissions','\x20语句(会修改数据/结构),为安全起见不会自动保存到\x20Lovrabet\x20平台','Failed\x20to\x20','\x20custom\x20SQL','将此\x20SQL\x20保存到本地文件(手动导入到\x20Lovrabet\x20平台)','670263ebrEYh','isDangerous','sqlInfo','\x20语句,不会自动保存到\x20Lovrabet\x20平台','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','isSelectOnly','updated','save','id\x20is\x20required\x20for\x20updating\x20existing\x20SQL.','message','sqlCode','[saveOrUpdateCustomSql]\x20Verification\x20query\x20failed:','8UIkgLA','529704qrnWFm','Confirm\x20the\x20dbId\x20matches\x20the\x20database\x20you\x20want\x20to\x20use','SQL\x20\x22','medium','verified','\x22\x20保存被阻止:\x20','Check\x20database\x20connection\x20and\x20permissions','如果只需要查询数据,请使用\x20SELECT\x20语句','getCustomSqlList','columns','params','2199328vWYUrY','sqlContent','find','sqlContent\x20is\x20required\x20and\x20cannot\x20be\x20empty.','now','generate_sql_code','updatedTime','dbId\x20is\x20required.\x20Get\x20it\x20from\x20get_dataset_detail\x20->\x20basic.database.dbId','修改\x20SQL\x20为\x20SELECT\x20查询','tables','data','2630466VIqbiw','get_dataset_detail','4505415lKfbsW','7689357BVifNx','success','Custom\x20SQL\x20\x22','trim','<dataset-code>','sqlSave','sqlName\x20is\x20required\x20and\x20cannot\x20be\x20empty.','name','167149JwpbnB','warn','high','createdTime','sqlName','Generate\x20SDK\x20code\x20for\x20this\x20SQL','Test\x20the\x20SQL\x20to\x20verify\x20it\x20works\x20correctly','errorMsg','10SksMlw','updateUserCustomSql','updateTime','type'];a19_0x3d2c=function(){return _0x1cc50f;};return a19_0x3d2c();}export async function saveOrUpdateCustomSql(_0x2ea178){const _0x1d0960=a19_0xd4d9,_0x154854=Date[_0x1d0960(0x123)](),{appCode:appCode=getEnvAppCode(),cookie:_0x250d1f,sqlName:_0x1939bd,dbId:_0x35c3e6,sqlContent:_0x5dd43e,id:_0x47e979,verifyAfterSave:verifyAfterSave=!![],validateSchema:validateSchema=![]}=_0x2ea178;if(!appCode)throw new Error(_0x1d0960(0x10b));if(!_0x1939bd||_0x1939bd[_0x1d0960(0x130)]()==='')throw new Error(_0x1d0960(0x133));if(!_0x35c3e6)throw new Error(_0x1d0960(0x126));if(!_0x5dd43e||_0x5dd43e[_0x1d0960(0x130)]()==='')throw new Error(_0x1d0960(0x122));const _0x5390bf=_0x47e979!==undefined&&_0x47e979>0x0;if(_0x5390bf&&!_0x47e979)throw new Error(_0x1d0960(0x10f));const _0x15adc5=detectSqlType(_0x5dd43e),_0x116eb6=parseSqlStructure(_0x5dd43e),_0x21668c=generateSqlSummary(_0x5dd43e),_0xf91a87=_0x1939bd['trim']();if(!_0x15adc5[_0x1d0960(0x10c)]){const _0x1cad86=_0x15adc5[_0x1d0960(0x108)]?_0x1d0960(0x142)+_0x15adc5[_0x1d0960(0x140)]+_0x1d0960(0x103):'检测到\x20'+_0x15adc5[_0x1d0960(0x140)]+_0x1d0960(0x10a);return{'success':![],'action':'blocked','message':_0x1d0960(0x116)+_0xf91a87+_0x1d0960(0x119)+_0x1cad86,'nextSteps':[{'action':_0x1d0960(0x106),'reason':'使用文件写入工具将\x20SQL\x20保存到本地,然后登录\x20Lovrabet\x20平台手动导入','priority':_0x1d0960(0x137)},{'action':_0x1d0960(0x127),'reason':_0x1d0960(0x11b),'priority':_0x1d0960(0x117)}],'parsedStructure':{'tables':_0x116eb6['tables'],'columns':_0x116eb6[_0x1d0960(0x11d)]['length'],'parameters':_0x116eb6[_0x1d0960(0x143)],'summary':_0x21668c},'sqlType':{'type':_0x15adc5['type'],'isSelectOnly':![],'isDangerous':_0x15adc5[_0x1d0960(0x108)],'warning':_0x1cad86}};}const _0x5cdd99=new DevApiClient({'appCode':appCode,'cookie':_0x250d1f}),_0x1482bf=getEnvironment();let _0x347ba0;_0x5390bf?_0x347ba0=await rateLimiters[_0x1d0960(0x132)]['throttle'](()=>_0x5cdd99[_0x1d0960(0x13e)]({'id':_0x47e979,'sqlName':_0xf91a87,'dbId':_0x35c3e6,'sqlContent':_0x5dd43e['trim']()})):_0x347ba0=await rateLimiters['sqlSave']['throttle'](()=>_0x5cdd99[_0x1d0960(0x146)]({'sqlName':_0xf91a87,'dbId':_0x35c3e6,'sqlContent':_0x5dd43e[_0x1d0960(0x130)]()}));const _0x2b5b62=Date[_0x1d0960(0x123)]()-_0x154854;if(!_0x347ba0[_0x1d0960(0x12e)])return{'success':![],'action':_0x5390bf?_0x1d0960(0x10d):_0x1d0960(0x147),'message':_0x347ba0[_0x1d0960(0x110)]||_0x347ba0[_0x1d0960(0x13c)]||_0x1d0960(0x104)+(_0x5390bf?'update':_0x1d0960(0x10e))+_0x1d0960(0x105),'nextSteps':[{'action':_0x1d0960(0x11a),'tool':'login','reason':_0x1d0960(0x148)},{'action':_0x1d0960(0x145),'tool':_0x1d0960(0x12b),'params':{'datasetCode':_0x1d0960(0x131)},'reason':_0x1d0960(0x115)}],'sqlType':{'type':_0x15adc5[_0x1d0960(0x140)],'isSelectOnly':!![],'isDangerous':![]}};const _0x1097b0=_0x347ba0['data']?.[_0x1d0960(0x111)]||_0x347ba0[_0x1d0960(0x129)]?.['code'],_0x4ac1dd=_0x347ba0[_0x1d0960(0x129)]?.[_0x1d0960(0x141)]||_0x347ba0[_0x1d0960(0x129)]?.['id'],_0x2641f8=[{'action':_0x1d0960(0x13b),'tool':_0x1d0960(0x144),'params':{'sqlCode':_0x1097b0||''},'reason':'Execute\x20the\x20SQL\x20to\x20check\x20for\x20runtime\x20errors','priority':'high'},{'action':_0x1d0960(0x13a),'tool':_0x1d0960(0x124),'params':{'sqlCode':_0x1097b0||''},'reason':'Get\x20ready-to-use\x20TypeScript\x20code\x20for\x20your\x20application','priority':_0x1d0960(0x117)}],_0x50528b={'success':!![],'action':_0x5390bf?_0x1d0960(0x10d):_0x1d0960(0x147),'message':_0x5390bf?_0x1d0960(0x12f)+_0xf91a87+'\x22\x20updated\x20successfully\x20('+_0x21668c+')':_0x1d0960(0x12f)+_0xf91a87+'\x22\x20saved\x20successfully\x20('+_0x21668c+')','nextSteps':_0x2641f8,'parsedStructure':{'tables':_0x116eb6[_0x1d0960(0x128)],'columns':_0x116eb6[_0x1d0960(0x11d)]['length'],'parameters':_0x116eb6[_0x1d0960(0x143)],'summary':_0x21668c},'sqlType':{'type':_0x15adc5['type'],'isSelectOnly':!![],'isDangerous':![]},'data':_0x347ba0['data']};if(verifyAfterSave)try{const _0x4d8b60=await _0x5cdd99[_0x1d0960(0x11c)]({'pageSize':0xa,'currentPage':0x1,'sqlName':_0xf91a87}),_0x4cc04a=_0x4d8b60[_0x1d0960(0x129)]?.['tableData']||[],_0x3af9cc=_0x4cc04a[_0x1d0960(0x121)](_0x86f265=>_0x86f265['sqlName']===_0xf91a87||_0x86f265[_0x1d0960(0x134)]===_0xf91a87);_0x3af9cc?(_0x50528b[_0x1d0960(0x118)]={'found':!![],'sqlInfo':{'sqlCode':_0x3af9cc[_0x1d0960(0x111)]||appCode+'-'+(_0x3af9cc[_0x1d0960(0x141)]||_0x3af9cc['id']),'sqlId':_0x3af9cc[_0x1d0960(0x141)]||_0x3af9cc['id'],'id':_0x3af9cc['id'],'name':_0x3af9cc[_0x1d0960(0x139)]||_0x3af9cc[_0x1d0960(0x134)],'sqlContent':_0x3af9cc[_0x1d0960(0x120)]||_0x3af9cc['sql'],'createdTime':_0x3af9cc[_0x1d0960(0x138)]||_0x3af9cc['createTime'],'updatedTime':_0x3af9cc[_0x1d0960(0x125)]||_0x3af9cc[_0x1d0960(0x13f)]}},_0x50528b[_0x1d0960(0x118)][_0x1d0960(0x109)]?.['sqlCode']&&(_0x2641f8[0x0][_0x1d0960(0x11e)]={'sqlCode':_0x50528b[_0x1d0960(0x118)][_0x1d0960(0x109)][_0x1d0960(0x111)]},_0x2641f8[0x1][_0x1d0960(0x11e)]={'sqlCode':_0x50528b[_0x1d0960(0x118)][_0x1d0960(0x109)][_0x1d0960(0x111)]})):_0x50528b['verified']={'found':![]};}catch(_0x4a5a07){shouldLog()&&console[_0x1d0960(0x136)](_0x1d0960(0x112),_0x4a5a07),_0x50528b[_0x1d0960(0x118)]={'found':![]};}return _0x50528b;}
@@ -1 +1 @@
1
- (function(_0xfd006c,_0x2b0e17){const _0x5cf1cc=a21_0x5e0c,_0x37a6ca=_0xfd006c();while(!![]){try{const _0x390f08=parseInt(_0x5cf1cc(0xaa))/0x1*(-parseInt(_0x5cf1cc(0xae))/0x2)+parseInt(_0x5cf1cc(0x9e))/0x3*(-parseInt(_0x5cf1cc(0xa1))/0x4)+parseInt(_0x5cf1cc(0xa3))/0x5*(parseInt(_0x5cf1cc(0xa6))/0x6)+-parseInt(_0x5cf1cc(0xb0))/0x7*(-parseInt(_0x5cf1cc(0xa4))/0x8)+parseInt(_0x5cf1cc(0xa5))/0x9+parseInt(_0x5cf1cc(0xa8))/0xa*(parseInt(_0x5cf1cc(0x9c))/0xb)+-parseInt(_0x5cf1cc(0xad))/0xc;if(_0x390f08===_0x2b0e17)break;else _0x37a6ca['push'](_0x37a6ca['shift']());}catch(_0x7698dc){_0x37a6ca['push'](_0x37a6ca['shift']());}}}(a21_0x1426,0x4ef4d));import{DevApiClient}from'../api/dev-api-client.js';function a21_0x1426(){const _0x4a0112=['1215isKyli','tableName','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','1711296duTFkG','910GWvjAk','datasets','154HmDXPO','2750NORhaZ','code','158988cRexXq','analyzeDatasetList','keyword\x20is\x20required','8hXyJaE','name','10PDFKxc','58416hYnivc','836442pavlHy','1356744FcVqOX','total','16760WbTiGG','searchDatasets'];a21_0x1426=function(){return _0x4a0112;};return a21_0x1426();}import{DatasetAnalyzer}from'../analyzer/dataset-analyzer.js';function a21_0x5e0c(_0x56021a,_0x369e82){_0x56021a=_0x56021a-0x9c;const _0x14260d=a21_0x1426();let _0x5e0c86=_0x14260d[_0x56021a];return _0x5e0c86;}import{getEnvAppCode,getEnvironment}from'../config/env.js';export async function searchDatasets(_0x7a9bca){const _0x20107d=a21_0x5e0c,{appCode:appCode=getEnvAppCode(),cookie:_0x4ad942,keyword:_0x56103f}=_0x7a9bca;if(!appCode)throw new Error(_0x20107d(0xac));if(!_0x56103f)throw new Error(_0x20107d(0xa0));const _0xb7634e=new DevApiClient({'appCode':appCode,'cookie':_0x4ad942}),_0x9b7d31=getEnvironment(),_0x380a2c=await _0xb7634e[_0x20107d(0xa9)](_0x56103f),_0x2b7b21=new DatasetAnalyzer(),_0x57fb20=_0x2b7b21[_0x20107d(0x9f)](_0x380a2c);return{'appCode':appCode,'env':_0x9b7d31,'keyword':_0x56103f,'total':_0x57fb20[_0x20107d(0xa7)],'datasets':_0x57fb20[_0x20107d(0xaf)]['map'](_0x213e99=>({'id':_0x213e99['id'],'name':_0x213e99[_0x20107d(0xa2)],'code':_0x213e99[_0x20107d(0x9d)],'tableName':_0x213e99[_0x20107d(0xab)],'description':_0x213e99['description']}))};}
1
+ (function(_0xd61c21,_0x46988d){const _0x4250d1=a20_0x4ede,_0x39eca0=_0xd61c21();while(!![]){try{const _0x52fc2b=-parseInt(_0x4250d1(0x17f))/0x1+-parseInt(_0x4250d1(0x185))/0x2*(-parseInt(_0x4250d1(0x17a))/0x3)+-parseInt(_0x4250d1(0x186))/0x4+-parseInt(_0x4250d1(0x17d))/0x5+-parseInt(_0x4250d1(0x17c))/0x6*(parseInt(_0x4250d1(0x189))/0x7)+-parseInt(_0x4250d1(0x187))/0x8+parseInt(_0x4250d1(0x17e))/0x9;if(_0x52fc2b===_0x46988d)break;else _0x39eca0['push'](_0x39eca0['shift']());}catch(_0x404e6c){_0x39eca0['push'](_0x39eca0['shift']());}}}(a20_0x161d,0xb7772));import{DevApiClient}from'../api/dev-api-client.js';function a20_0x4ede(_0x390d65,_0x4b6dc3){_0x390d65=_0x390d65-0x178;const _0x161ddc=a20_0x161d();let _0x4ede57=_0x161ddc[_0x390d65];return _0x4ede57;}import{DatasetAnalyzer}from'../analyzer/dataset-analyzer.js';import{getEnvAppCode,getEnvironment}from'../config/env.js';export async function searchDatasets(_0x3b6744){const _0x2fcc32=a20_0x4ede,{appCode:appCode=getEnvAppCode(),cookie:_0x16e190,keyword:_0x33481c}=_0x3b6744;if(!appCode)throw new Error(_0x2fcc32(0x181));if(!_0x33481c)throw new Error(_0x2fcc32(0x183));const _0x1a9605=new DevApiClient({'appCode':appCode,'cookie':_0x16e190}),_0x409f78=getEnvironment(),_0xdadce=await _0x1a9605[_0x2fcc32(0x180)](_0x33481c),_0xfa07b3=new DatasetAnalyzer(),_0x15e1fa=_0xfa07b3[_0x2fcc32(0x182)](_0xdadce);return{'appCode':appCode,'env':_0x409f78,'keyword':_0x33481c,'total':_0x15e1fa[_0x2fcc32(0x18a)],'datasets':_0x15e1fa[_0x2fcc32(0x184)][_0x2fcc32(0x178)](_0x3f8e71=>({'id':_0x3f8e71['id'],'name':_0x3f8e71['name'],'code':_0x3f8e71[_0x2fcc32(0x188)],'tableName':_0x3f8e71[_0x2fcc32(0x17b)],'description':_0x3f8e71[_0x2fcc32(0x179)]}))};}function a20_0x161d(){const _0x1709d7=['total','map','description','42WMuTxB','tableName','42HHSXyd','1244895ieSAUJ','50302863ZfJnNq','1244890phmyad','searchDatasets','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','analyzeDatasetList','keyword\x20is\x20required','datasets','18862YksZte','4309080qaEmDc','8550312HcxYht','code','1329839etNwHo'];a20_0x161d=function(){return _0x1709d7;};return a20_0x161d();}
@@ -1 +1 @@
1
- function a22_0x42e3(){const _0x548071=['find','<dataset-code>','Need\x20dbId\x20from\x20dataset\x20detail\x20to\x20save\x20SQL','List\x20all\x20available\x20datasets','413bmxROc','typeLabel','Review\x20SQL\x20errors\x20and\x20fix','type','get_dataset_detail','Save\x20this\x20validated\x20SQL','[validateSqlContent]\x20Failed\x20to\x20fetch\x20schema\x20for\x20','length','push','SQL\x20validation\x20failed:\x20','Modify\x20SQL\x20to\x20be\x20a\x20SELECT\x20statement\x20only','TABLE_NOT_FOUND','code','data','490740BRBZxJ','SQL\x20validation\x20failed\x20(','error','getDatasetList','SQL\x20must\x20be\x20a\x20SELECT\x20statement','high','properties','612909lYeCEo','SQL\x20content\x20cannot\x20be\x20empty','Invalid\x20SQL','531BnJIHK','SQL\x20content\x20is\x20required','valid','<sql-name>','99726lJuetd','validate_sql_content','fixSteps','Find\x20the\x20correct\x20table\x20names\x20for\x20your\x20SQL','map','errors','warn','1516158hKSgLu','58744UcUTsZ','save_or_update_custom_sql','\x20error(s))','Provide\x20SQL\x20content\x20to\x20validate','SYNTAX_ERROR','1946892UZSxQz','tableName','trim','1537630EyPPZU','medium','reason','nextSteps','Only\x20SELECT\x20queries\x20are\x20allowed\x20for\x20custom\x20SQL','fieldCode','SQL_START','Get\x20dataset\x20details\x20to\x20find\x20correct\x20table/column\x20names','15ccFDkE','Fix\x20the\x20identified\x20errors\x20before\x20saving','some','tableData','SELECT\x20id,\x20name\x20FROM\x20customer\x20WHERE\x20status\x20=\x201'];a22_0x42e3=function(){return _0x548071;};return a22_0x42e3();}(function(_0x3afd70,_0x2256e0){const _0x1d14ad=a22_0x45dd,_0x9789cf=_0x3afd70();while(!![]){try{const _0x1d99de=-parseInt(_0x1d14ad(0x12e))/0x1+parseInt(_0x1d14ad(0x134))/0x2+-parseInt(_0x1d14ad(0x120))/0x3+-parseInt(_0x1d14ad(0x119))/0x4*(-parseInt(_0x1d14ad(0x102))/0x5)+parseInt(_0x1d14ad(0x127))/0x6*(parseInt(_0x1d14ad(0x10b))/0x7)+parseInt(_0x1d14ad(0x12f))/0x8*(parseInt(_0x1d14ad(0x123))/0x9)+-parseInt(_0x1d14ad(0x137))/0xa;if(_0x1d99de===_0x2256e0)break;else _0x9789cf['push'](_0x9789cf['shift']());}catch(_0x26265b){_0x9789cf['push'](_0x9789cf['shift']());}}}(a22_0x42e3,0xd7201));import{DevApiClient}from'../api/dev-api-client.js';import{validateIsSelectOnly,parseSqlStructure,validateSqlContent as a22_0x50be68,generateSqlSummary}from'../utils/sql-parser.js';import{createStructuredSqlError}from'../types/mcp-types.js';import{getEnvAppCode,shouldLog}from'../config/env.js';function a22_0x45dd(_0x179236,_0x291365){_0x179236=_0x179236-0xfb;const _0x42e302=a22_0x42e3();let _0x45ddfe=_0x42e302[_0x179236];return _0x45ddfe;}async function fetchSchemaInfo(_0x5439ba,_0x491c66){const _0x470607=a22_0x45dd,_0x528e68=[];for(const _0x1c765b of _0x5439ba){try{const _0x5af603=/^\d+$/['test'](_0x1c765b);let _0x342f95=_0x1c765b;if(!_0x5af603){const _0x5a81ff=await _0x491c66[_0x470607(0x11c)](),_0x5b6885=_0x5a81ff[_0x470607(0x118)]?.[_0x470607(0x105)]||[],_0x394a16=_0x5b6885[_0x470607(0x107)](_0x5edd1e=>_0x5edd1e[_0x470607(0x117)]===_0x1c765b);if(!_0x394a16)continue;_0x342f95=String(_0x394a16['id']);}const _0x3efa75=await _0x491c66['getDatasetDetail'](_0x342f95),_0x51ef99=_0x3efa75[_0x470607(0x118)]?.[_0x470607(0x135)]||'',_0xa9245b=_0x3efa75[_0x470607(0x118)]?.[_0x470607(0x11f)]||[],_0x75b613=_0xa9245b[_0x470607(0x12b)](_0x6173f4=>_0x6173f4[_0x470607(0x117)]||_0x6173f4[_0x470607(0xff)]);_0x51ef99&&_0x75b613[_0x470607(0x112)]>0x0&&_0x528e68['push']({'tableName':_0x51ef99,'columns':_0x75b613});}catch(_0x4525cf){shouldLog()&&console[_0x470607(0x12d)](_0x470607(0x111)+_0x1c765b+':',_0x4525cf);}}return _0x528e68;}export async function validateSqlContentTool(_0x45cd79){const _0xdb868d=a22_0x45dd,{appCode:appCode=getEnvAppCode(),cookie:_0xc7130b,sqlContent:_0x3f72de,dbId:_0x35e37d,validateSchemas:validateSchemas=[]}=_0x45cd79;if(!_0x3f72de||_0x3f72de[_0xdb868d(0x136)]()==='')return{'success':![],'message':_0xdb868d(0x124),'validation':{'valid':![],'isSelectOnly':![]},'nextSteps':[{'action':_0xdb868d(0x132),'tool':_0xdb868d(0x128),'reason':_0xdb868d(0x121)}]};const _0xadf795=validateIsSelectOnly(_0x3f72de);if(!_0xadf795['valid'])return{'success':![],'message':_0xdb868d(0x114)+_0xadf795['reason'],'validation':{'valid':![],'isSelectOnly':![],'errors':[createStructuredSqlError({'type':_0xdb868d(0x133),'location':_0xdb868d(0x100),'message':_0xadf795[_0xdb868d(0xfc)]||_0xdb868d(0x122),'severity':_0xdb868d(0x11b),'fixSteps':[{'description':_0xdb868d(0x11d),'example':_0xdb868d(0x106)}]})]},'nextSteps':[{'action':_0xdb868d(0x115),'tool':_0xdb868d(0x130),'reason':_0xdb868d(0xfe)}]};const _0x2b3e21=parseSqlStructure(_0x3f72de),_0x52eb47=generateSqlSummary(_0x3f72de);let _0x4fc6c0;if(validateSchemas[_0xdb868d(0x112)]>0x0&&appCode){const _0x46c351=new DevApiClient({'appCode':appCode,'cookie':_0xc7130b});_0x4fc6c0=await fetchSchemaInfo(validateSchemas,_0x46c351);}const _0x1ec31d=a22_0x50be68(_0x3f72de,_0x4fc6c0?{'tables':_0x4fc6c0}:undefined),_0x522367={'success':_0x1ec31d['valid']||!![],'message':_0x1ec31d[_0xdb868d(0x125)]?'SQL\x20validation\x20passed\x20('+_0x52eb47+')':_0xdb868d(0x11a)+(_0x1ec31d[_0xdb868d(0x12c)]?.[_0xdb868d(0x112)]||0x0)+_0xdb868d(0x131),'validation':{..._0x1ec31d,'parsedStructure':_0x2b3e21}},_0x38dc93=[];if(_0x1ec31d[_0xdb868d(0x125)])_0x35e37d?_0x38dc93[_0xdb868d(0x113)]({'action':_0xdb868d(0x110),'tool':_0xdb868d(0x130),'params':{'sqlName':_0xdb868d(0x126),'dbId':_0x35e37d,'sqlContent':_0x3f72de},'reason':'SQL\x20is\x20valid\x20and\x20ready\x20to\x20be\x20saved','priority':_0xdb868d(0x11e)}):_0x38dc93[_0xdb868d(0x113)]({'action':'Get\x20database\x20ID\x20to\x20save\x20this\x20SQL','tool':'get_dataset_detail','params':{'datasetCode':_0xdb868d(0x108)},'reason':_0xdb868d(0x109),'priority':_0xdb868d(0x11e)});else{_0x38dc93[_0xdb868d(0x113)]({'action':_0xdb868d(0x10d),'tool':_0xdb868d(0x128),'reason':_0xdb868d(0x103),'priority':_0xdb868d(0x11e)});for(const _0x154d65 of _0x1ec31d[_0xdb868d(0x12c)]||[]){if(_0x154d65[_0xdb868d(0x10e)]==='COLUMN_NOT_FOUND'||_0x154d65['type']===_0xdb868d(0x116)){const _0x1f5f68=_0x154d65[_0xdb868d(0x129)][0x0]?.['description']||_0x154d65[_0xdb868d(0x10c)];_0x38dc93[_0xdb868d(0x113)]({'action':_0xdb868d(0x101),'tool':_0xdb868d(0x10f),'params':{'datasetCode':_0xdb868d(0x108)},'reason':_0x1f5f68,'priority':_0xdb868d(0xfb)});break;}}}return!_0x1ec31d[_0xdb868d(0x125)]&&_0x1ec31d[_0xdb868d(0x12c)]?.[_0xdb868d(0x104)](_0xe71833=>_0xe71833['type']==='TABLE_NOT_FOUND')&&_0x38dc93[_0xdb868d(0x113)]({'action':_0xdb868d(0x10a),'tool':'list_datasets','reason':_0xdb868d(0x12a),'priority':_0xdb868d(0xfb)}),_0x522367[_0xdb868d(0xfd)]=_0x38dc93,_0x522367;}export{validateSqlContentTool as validateSqlContent};
1
+ (function(_0x47f1a8,_0x47e248){const _0x171036=a21_0x3f45,_0x476a6e=_0x47f1a8();while(!![]){try{const _0x2f3df1=-parseInt(_0x171036(0xd8))/0x1+parseInt(_0x171036(0xc6))/0x2+parseInt(_0x171036(0xc2))/0x3*(parseInt(_0x171036(0xd9))/0x4)+-parseInt(_0x171036(0xb9))/0x5+-parseInt(_0x171036(0xba))/0x6+parseInt(_0x171036(0xbd))/0x7*(-parseInt(_0x171036(0xbc))/0x8)+parseInt(_0x171036(0xe9))/0x9;if(_0x2f3df1===_0x47e248)break;else _0x476a6e['push'](_0x476a6e['shift']());}catch(_0x3b5e2e){_0x476a6e['push'](_0x476a6e['shift']());}}}(a21_0xd5e9,0x4c27e));function a21_0x3f45(_0x53697f,_0x15b0d4){_0x53697f=_0x53697f-0xaf;const _0xd5e942=a21_0xd5e9();let _0x3f4574=_0xd5e942[_0x53697f];return _0x3f4574;}import{DevApiClient}from'../api/dev-api-client.js';import{detectSqlType,parseSqlStructure,validateSqlContent as a21_0x2b9f8c,generateSqlSummary}from'../utils/sql-parser.js';import{getEnvAppCode,shouldLog}from'../config/env.js';async function fetchSchemaInfo(_0x20abbf,_0x4a490f){const _0x47e273=a21_0x3f45,_0x3ba140=[];for(const _0x31eec4 of _0x20abbf){try{const _0x440925=/^\d+$/['test'](_0x31eec4);let _0x17ce56=_0x31eec4;if(!_0x440925){const _0x4fa305=await _0x4a490f[_0x47e273(0xc7)](),_0x48335c=_0x4fa305[_0x47e273(0xb6)]?.[_0x47e273(0xcd)]||[],_0x34abfe=_0x48335c['find'](_0x5d6d34=>_0x5d6d34[_0x47e273(0xbf)]===_0x31eec4);if(!_0x34abfe)continue;_0x17ce56=String(_0x34abfe['id']);}const _0x1d06fd=await _0x4a490f[_0x47e273(0xd3)](_0x17ce56),_0x1ec65c=_0x1d06fd['data']?.[_0x47e273(0xd4)]||'',_0x3dbfff=_0x1d06fd[_0x47e273(0xb6)]?.[_0x47e273(0xb0)]||[],_0x43a390=_0x3dbfff[_0x47e273(0xc9)](_0x2cef92=>_0x2cef92[_0x47e273(0xbf)]||_0x2cef92[_0x47e273(0xb1)]);_0x1ec65c&&_0x43a390['length']>0x0&&_0x3ba140[_0x47e273(0xd5)]({'tableName':_0x1ec65c,'columns':_0x43a390});}catch(_0x321499){shouldLog()&&console[_0x47e273(0xdc)](_0x47e273(0xd6)+_0x31eec4+':',_0x321499);}}return _0x3ba140;}export async function validateSqlContentTool(_0x46cd21){const _0x2c2443=a21_0x3f45,{appCode:appCode=getEnvAppCode(),cookie:_0x4ce358,sqlContent:_0x5d35fd,dbId:_0x45f221,validateSchemas:validateSchemas=[]}=_0x46cd21;if(!_0x5d35fd||_0x5d35fd[_0x2c2443(0xb3)]()==='')return{'success':![],'message':_0x2c2443(0xcc),'sqlContent':'','parsedStructure':{'tables':[],'columns':[],'parameters':[]},'schemaValidation':{'valid':![]},'sqlType':{'type':_0x2c2443(0xc1),'isSelectOnly':![],'isDangerous':![]},'nextSteps':[{'action':'Provide\x20SQL\x20content\x20to\x20validate','tool':_0x2c2443(0xdf),'reason':_0x2c2443(0xea)}]};const _0x3d5519=detectSqlType(_0x5d35fd),_0x3ab145=parseSqlStructure(_0x5d35fd),_0x4f22a4=generateSqlSummary(_0x5d35fd);let _0x481ac8;if(validateSchemas[_0x2c2443(0xe4)]>0x0&&appCode){const _0x289b93=new DevApiClient({'appCode':appCode,'cookie':_0x4ce358});_0x481ac8=await fetchSchemaInfo(validateSchemas,_0x289b93);}const _0x4c7a08=a21_0x2b9f8c(_0x5d35fd,_0x481ac8?{'tables':_0x481ac8}:undefined),_0x2d31e7=[];if(_0x4c7a08[_0x2c2443(0xb5)]){if(_0x3d5519['isSelectOnly'])_0x45f221?_0x2d31e7[_0x2c2443(0xd5)]({'action':_0x2c2443(0xd0),'tool':_0x2c2443(0xc5),'params':{'sqlName':_0x2c2443(0xc0),'dbId':_0x45f221,'sqlContent':_0x5d35fd},'reason':_0x2c2443(0xe0),'priority':_0x2c2443(0xc8)}):_0x2d31e7[_0x2c2443(0xd5)]({'action':'获取数据库\x20ID\x20以保存\x20SQL','tool':_0x2c2443(0xc4),'params':{'datasetCode':_0x2c2443(0xbb)},'reason':_0x2c2443(0xe7),'priority':_0x2c2443(0xc8)});else{const _0x53edd2=_0x3d5519[_0x2c2443(0xbe)]?_0x2c2443(0xe1)+_0x3d5519[_0x2c2443(0xaf)]+'\x20语句(会修改数据/结构)':_0x2c2443(0xcb)+_0x3d5519[_0x2c2443(0xaf)]+_0x2c2443(0xe6);_0x2d31e7['push']({'action':_0x2c2443(0xc3),'reason':_0x53edd2+_0x2c2443(0xdb),'priority':_0x2c2443(0xc8)});}}else _0x2d31e7['push']({'action':_0x2c2443(0xde),'tool':_0x2c2443(0xdf),'reason':_0x2c2443(0xda),'priority':_0x2c2443(0xc8)});if(!_0x4c7a08[_0x2c2443(0xb5)]&&_0x4c7a08[_0x2c2443(0xd7)]&&_0x4c7a08[_0x2c2443(0xd7)][_0x2c2443(0xe4)]>0x0)for(const _0x2769a9 of _0x4c7a08[_0x2c2443(0xd7)]){if(_0x2769a9[_0x2c2443(0xaf)]===_0x2c2443(0xb2)||_0x2769a9[_0x2c2443(0xaf)]===_0x2c2443(0xe8)){_0x2d31e7[_0x2c2443(0xd5)]({'action':_0x2c2443(0xe3),'tool':_0x2c2443(0xc4),'params':{'datasetCode':'<dataset-code>'},'reason':_0x2769a9[_0x2c2443(0xca)][0x0]?.[_0x2c2443(0xd2)]||_0x2769a9[_0x2c2443(0xb8)],'priority':_0x2c2443(0xdd)});break;}}!_0x4c7a08['valid']&&_0x4c7a08[_0x2c2443(0xd7)]&&_0x4c7a08[_0x2c2443(0xd7)][_0x2c2443(0xd1)](_0x4e0222=>_0x4e0222[_0x2c2443(0xaf)]===_0x2c2443(0xe8))&&_0x2d31e7[_0x2c2443(0xd5)]({'action':_0x2c2443(0xe5),'tool':_0x2c2443(0xce),'reason':'查找正确的表名','priority':_0x2c2443(0xdd)});let _0xa2261='';if(_0x3d5519[_0x2c2443(0xb7)])_0xa2261=_0x4c7a08[_0x2c2443(0xb5)]?'✓\x20SELECT\x20查询':_0x2c2443(0xb4);else _0x3d5519[_0x2c2443(0xbe)]?_0xa2261=_0x2c2443(0xcf)+_0x3d5519[_0x2c2443(0xaf)]+'\x20语句(会修改数据/结构)':_0xa2261=_0x3d5519['type']+_0x2c2443(0xe6);const _0x209442=_0x4c7a08['valid']?'':_0x2c2443(0xe2),_0x41d5a6=_0x4f22a4?'\x20('+_0x4f22a4+')':'',_0x56c7f8=!_0x4c7a08['valid']&&_0x4c7a08[_0x2c2443(0xd7)]?','+_0x4c7a08[_0x2c2443(0xd7)][_0x2c2443(0xe4)]+'\x20个错误':'';return{'success':_0x4c7a08[_0x2c2443(0xb5)]||!![],'message':''+_0xa2261+_0x209442+_0x41d5a6+_0x56c7f8,'sqlContent':_0x5d35fd,'parsedStructure':_0x3ab145,'schemaValidation':{'valid':_0x4c7a08[_0x2c2443(0xb5)],'errors':_0x4c7a08['errors']},'sqlType':_0x3d5519,'nextSteps':_0x2d31e7};}function a21_0xd5e9(){const _0x18d1a3=['map','fixSteps','检测到\x20','SQL\x20content\x20is\x20required','tableData','list_datasets','⚠️\x20','保存此\x20SELECT\x20查询到\x20Lovrabet\x20平台','some','description','getDatasetDetail','tableName','push','[validateSqlContent]\x20Failed\x20to\x20fetch\x20schema\x20for\x20','errors','69412gimARb','4HmSIcZ','请先修复识别出的表/字段错误',',为安全起见建议手动保存。请使用文件写入工具保存,然后手动导入','warn','medium','修复\x20SQL\x20错误后再保存','validate_sql_content','SQL\x20验证通过且为\x20SELECT\x20查询,可以保存到平台','⚠️\x20检测到\x20',',存在错误','获取数据集详情以找到正确的表/字段名','length','列出所有可用的数据集','\x20语句','需要从数据集详情中获取\x20dbId\x20来保存\x20SQL','TABLE_NOT_FOUND','3807342xqClkI','SQL\x20content\x20cannot\x20be\x20empty','type','properties','fieldCode','COLUMN_NOT_FOUND','trim','⚠️\x20SELECT\x20查询存在问题','valid','data','isSelectOnly','typeLabel','219570pZHMYj','1187058htPzGO','<dataset-code>','141264KfozZy','112cBHdEC','isDangerous','code','<sql-name>','UNKNOWN','218883ZdXHrP','将此\x20SQL\x20保存到本地文件(手动导入到\x20Lovrabet\x20平台)','get_dataset_detail','save_or_update_custom_sql','819264jntJXB','getDatasetList','high'];a21_0xd5e9=function(){return _0x18d1a3;};return a21_0xd5e9();}export{validateSqlContentTool as validateSqlContent};
@@ -1 +1 @@
1
- function a23_0x4615(_0x15f497,_0x72101a){_0x15f497=_0x15f497-0x183;var _0x259acb=a23_0x259a();var _0x461536=_0x259acb[_0x15f497];return _0x461536;}(function(_0x27b292,_0x10c6a9){var _0x188fd7=a23_0x4615,_0x5cb22b=_0x27b292();while(!![]){try{var _0x73094c=-parseInt(_0x188fd7(0x185))/0x1+parseInt(_0x188fd7(0x183))/0x2+-parseInt(_0x188fd7(0x189))/0x3+-parseInt(_0x188fd7(0x186))/0x4+-parseInt(_0x188fd7(0x184))/0x5+-parseInt(_0x188fd7(0x18a))/0x6*(parseInt(_0x188fd7(0x187))/0x7)+parseInt(_0x188fd7(0x188))/0x8;if(_0x73094c===_0x10c6a9)break;else _0x5cb22b['push'](_0x5cb22b['shift']());}catch(_0x379f10){_0x5cb22b['push'](_0x5cb22b['shift']());}}}(a23_0x259a,0xf4023));export{createError,createAuthError,createMissingParamError,createDatasetNotFoundError,createSqlNotFoundError,createSqlValidationError,createStructuredSqlError,fromLovrabetError,SQL_ERROR_TYPE_LABELS}from'./mcp-types.js';function a23_0x259a(){var _0x19594f=['143394qjbNDT','3867818THfRqZ','6808510BXtCZc','32278npXkBk','3225380dXJuAe','490tIqKLd','26407568DbVLMP','1086423rMSLBJ'];a23_0x259a=function(){return _0x19594f;};return a23_0x259a();}
1
+ function a22_0x2ef0(){var _0x4a6143=['22cpJHgY','419732QjedMd','6128843eIXJmz','39kiSKlQ','2550046tWljme','2936988PMAraL','2285ZIidfJ','32ezJfTQ','568396QjaocT','3342xopxru','1618730strWXd'];a22_0x2ef0=function(){return _0x4a6143;};return a22_0x2ef0();}(function(_0x1ef7c5,_0xa0aa2b){var _0x47ac3a=a22_0x4198,_0x4d355a=_0x1ef7c5();while(!![]){try{var _0x5e7b88=-parseInt(_0x47ac3a(0x1f9))/0x1+parseInt(_0x47ac3a(0x1f5))/0x2+parseInt(_0x47ac3a(0x1f4))/0x3*(-parseInt(_0x47ac3a(0x1fd))/0x4)+-parseInt(_0x47ac3a(0x1f7))/0x5*(parseInt(_0x47ac3a(0x1fa))/0x6)+parseInt(_0x47ac3a(0x1fe))/0x7+-parseInt(_0x47ac3a(0x1f8))/0x8*(-parseInt(_0x47ac3a(0x1f6))/0x9)+parseInt(_0x47ac3a(0x1fb))/0xa*(-parseInt(_0x47ac3a(0x1fc))/0xb);if(_0x5e7b88===_0xa0aa2b)break;else _0x4d355a['push'](_0x4d355a['shift']());}catch(_0x23207d){_0x4d355a['push'](_0x4d355a['shift']());}}}(a22_0x2ef0,0xe6bb8));function a22_0x4198(_0x1abf90,_0x9aa8ac){_0x1abf90=_0x1abf90-0x1f4;var _0x2ef000=a22_0x2ef0();var _0x4198c1=_0x2ef000[_0x1abf90];return _0x4198c1;}export{createError,createAuthError,createMissingParamError,createDatasetNotFoundError,createSqlNotFoundError,createSqlValidationError,createStructuredSqlError,fromLovrabetError,SQL_ERROR_TYPE_LABELS}from'./mcp-types.js';
@@ -1 +1 @@
1
- const a24_0x466936=a24_0x464f;(function(_0x2856aa,_0x186d1a){const _0x25c6fe=a24_0x464f,_0x325dc7=_0x2856aa();while(!![]){try{const _0x3022d2=parseInt(_0x25c6fe(0xa1))/0x1*(parseInt(_0x25c6fe(0xcd))/0x2)+-parseInt(_0x25c6fe(0xc8))/0x3+-parseInt(_0x25c6fe(0xb1))/0x4*(-parseInt(_0x25c6fe(0xb9))/0x5)+parseInt(_0x25c6fe(0xc5))/0x6*(-parseInt(_0x25c6fe(0xa2))/0x7)+-parseInt(_0x25c6fe(0xc6))/0x8*(-parseInt(_0x25c6fe(0x92))/0x9)+-parseInt(_0x25c6fe(0xac))/0xa+parseInt(_0x25c6fe(0xb0))/0xb;if(_0x3022d2===_0x186d1a)break;else _0x325dc7['push'](_0x325dc7['shift']());}catch(_0x5e3b7c){_0x325dc7['push'](_0x325dc7['shift']());}}}(a24_0x313b,0x3bd9a));export const SQL_ERROR_TYPE_LABELS={'TABLE_NOT_FOUND':a24_0x466936(0xb2),'COLUMN_NOT_FOUND':a24_0x466936(0xd6),'AMBIGUOUS_COLUMN':a24_0x466936(0xab),'SYNTAX_ERROR':a24_0x466936(0xbc),'TYPE_MISMATCH':a24_0x466936(0xa4),'MISSING_WHERE_CLAUSE':a24_0x466936(0xd2),'UNSAFE_QUERY':a24_0x466936(0xcf)};export function createError(_0x4f0fb1){const _0x1a4152=a24_0x466936;return{'error':!![],'code':_0x4f0fb1[_0x1a4152(0xa0)],'message':_0x4f0fb1[_0x1a4152(0xc1)],'status':_0x4f0fb1['status'],'description':_0x4f0fb1[_0x1a4152(0xbd)],'response':_0x4f0fb1[_0x1a4152(0xd5)],'suggestedAction':_0x4f0fb1[_0x1a4152(0xcb)],'recoverable':_0x4f0fb1[_0x1a4152(0xd4)]??!![],'timestamp':new Date()[_0x1a4152(0xbf)]()};}function a24_0x464f(_0x5121e7,_0x4cd389){_0x5121e7=_0x5121e7-0x92;const _0x313bda=a24_0x313b();let _0x464fcd=_0x313bda[_0x5121e7];return _0x464fcd;}export function createAuthError(){const _0x5cbc80=a24_0x466936;return createError({'code':_0x5cbc80(0xd0),'message':_0x5cbc80(0xc0),'suggestedAction':{'tool':'login','description':_0x5cbc80(0x97),'example':_0x5cbc80(0xd3)},'recoverable':!![]});}export function createMissingParamError(_0x47aaf5,_0x32295a){return createError({'code':'PARAMETER_MISSING','message':'缺少必需参数:\x20'+_0x47aaf5+(_0x32295a?'\x20('+_0x32295a+')':''),'recoverable':!![]});}export function createDatasetNotFoundError(_0x56f164){const _0x3807a1=a24_0x466936;return createError({'code':_0x3807a1(0x9c),'message':_0x3807a1(0x96)+_0x56f164,'suggestedAction':{'tool':_0x3807a1(0xbe),'description':_0x3807a1(0xa7),'example':'list_datasets({\x20pageSize:\x20999\x20})'},'recoverable':!![]});}export function createSqlNotFoundError(_0xb115e4){const _0x50374e=a24_0x466936;return createError({'code':_0x50374e(0x9d),'message':_0x50374e(0xa6)+_0xb115e4,'suggestedAction':{'tool':_0x50374e(0xa3),'description':_0x50374e(0x98),'example':_0x50374e(0xb8)},'recoverable':!![]});}export function createSqlValidationError(_0x4a0664){const _0x32eac0=a24_0x466936,_0x33aad8=_0x4a0664['fixSteps'][_0x32eac0(0xa5)]>0x0,_0x5ec3cd=_0x33aad8?_0x4a0664[_0x32eac0(0x93)][0x0]:undefined,_0x2eb342={'type':_0x4a0664[_0x32eac0(0xb6)],'typeLabel':_0x4a0664['typeLabel'],'location':_0x4a0664[_0x32eac0(0xc4)],'severity':_0x4a0664[_0x32eac0(0xa8)],'fixSteps':_0x4a0664[_0x32eac0(0x93)],'suggestions':_0x4a0664[_0x32eac0(0x94)],'canAutoFix':_0x4a0664[_0x32eac0(0xc3)],'fixedSql':_0x4a0664[_0x32eac0(0x9e)]};return createError({'code':_0x32eac0(0xcc),'message':_0x4a0664[_0x32eac0(0xa9)]+':\x20'+_0x4a0664[_0x32eac0(0xc1)],'status':_0x4a0664[_0x32eac0(0xbb)],'description':_0x2eb342,'response':_0x4a0664[_0x32eac0(0xd5)],'suggestedAction':_0x5ec3cd?{'tool':_0x5ec3cd[_0x32eac0(0xc2)],'description':_0x5ec3cd['description'],'params':_0x5ec3cd[_0x32eac0(0x99)],'example':_0x5ec3cd[_0x32eac0(0xd1)]}:{'tool':_0x32eac0(0xaa),'description':_0x32eac0(0x95),'params':{'datasetCode':'<dataset-code>'}},'recoverable':_0x4a0664[_0x32eac0(0xa8)]!==_0x32eac0(0xad)});}export function createStructuredSqlError(_0x3a10cd){const _0x111f8d=a24_0x466936,_0x496c00=SQL_ERROR_TYPE_LABELS[_0x3a10cd[_0x111f8d(0xb6)]],_0x422566=_0x3a10cd[_0x111f8d(0xa8)]??_0x111f8d(0xad),_0x40cf3d=[];if(_0x3a10cd['type']==='TABLE_NOT_FOUND')_0x40cf3d[_0x111f8d(0xba)]({'description':'使用\x20list_datasets\x20工具查看所有可用的数据集表名','tool':_0x111f8d(0xbe),'toolParams':{'pageSize':0x3e7},'example':_0x111f8d(0xc7)});else{if(_0x3a10cd['type']===_0x111f8d(0xaf))_0x40cf3d[_0x111f8d(0xba)]({'description':_0x111f8d(0xca),'tool':'get_dataset_detail','toolParams':{'datasetCode':_0x111f8d(0xb4)},'example':'get_dataset_detail({\x20datasetCode:\x20\x22customer\x22\x20})'});else _0x3a10cd[_0x111f8d(0xb6)]===_0x111f8d(0x9f)&&_0x40cf3d[_0x111f8d(0xba)]({'description':_0x111f8d(0xae),'example':_0x111f8d(0x9b)});}return{'type':_0x3a10cd['type'],'typeLabel':_0x496c00,'location':_0x3a10cd[_0x111f8d(0xc4)],'message':_0x3a10cd[_0x111f8d(0xc1)],'severity':_0x422566,'fixSteps':_0x3a10cd[_0x111f8d(0x93)]??_0x40cf3d,'suggestions':_0x3a10cd['suggestions'],'canAutoFix':_0x3a10cd[_0x111f8d(0xc3)],'fixedSql':_0x3a10cd[_0x111f8d(0x9e)],'status':_0x3a10cd[_0x111f8d(0xbb)],'response':_0x3a10cd[_0x111f8d(0xd5)]};}function a24_0x313b(){const _0x3a51cd=['不安全的查询','AUTH_REQUIRED','example','缺少\x20WHERE\x20条件','login({\x20env:\x20\x22online\x22\x20})','recoverable','response','字段不存在','1421937vmKLZs','fixSteps','suggestions','获取数据集详情以确认表名和字段名','数据集不存在:\x20','登录到\x20Lovrabet\x20平台','查看所有可用的\x20SQL\x20查询','toolParams','API_ERROR','确保\x20SELECT\x20语句格式正确,如:\x20SELECT\x20id,\x20name\x20FROM\x20table\x20WHERE\x20status\x20=\x201','DATASET_NOT_FOUND','SQL_NOT_FOUND','fixedSql','SYNTAX_ERROR','code','49opdyek','71498qifChu','list_sql_queries','类型不匹配','length','SQL\x20不存在:\x20','查看所有可用的数据集','severity','typeLabel','get_dataset_detail','字段名歧义','4113380rtzoGI','error','检查\x20SQL\x20语法,确保关键字拼写正确、括号匹配','COLUMN_NOT_FOUND','5714423aufyMZ','512880efrlmo','表不存在','PARAMETER_MISSING','<dataset-code>','NETWORK_ERROR','type','PARAMETER_INVALID','list_sql_queries({\x20pageSize:\x20999\x20})','10gecsxD','push','status','语法错误','description','list_datasets','toISOString','需要登录才能访问\x20Lovrabet\x20数据。请先使用\x20login\x20工具进行登录。','message','tool','canAutoFix','location','228ItvFdq','8iIvlsJ','list_datasets({\x20pageSize:\x20999\x20})','470403eeJlBr','SQL_EXECUTION_FAILED','使用\x20get_dataset_detail\x20工具查看数据集的所有字段','suggestedAction','SQL_VALIDATION_FAILED','10918BQHpkz','UNKNOWN_ERROR'];a24_0x313b=function(){return _0x3a51cd;};return a24_0x313b();}export function fromLovrabetError(_0x30af1d,_0x1db70f){const _0xb7d280=a24_0x466936;return createError({'code':mapSdkCodeToMcpCode(_0x30af1d[_0xb7d280(0xa0)]),'message':_0x30af1d[_0xb7d280(0xc1)],'status':_0x30af1d['status'],'description':_0x30af1d[_0xb7d280(0xbd)],'response':_0x30af1d[_0xb7d280(0xd5)],'suggestedAction':_0x1db70f,'recoverable':_0x30af1d[_0xb7d280(0xbb)]?_0x30af1d[_0xb7d280(0xbb)]<0x1f4:!![]});}function mapSdkCodeToMcpCode(_0x57d386){const _0x1c0919=a24_0x466936;if(!_0x57d386)return _0x1c0919(0xce);const _0x3cf7c1={'AUTH_REQUIRED':'AUTH_REQUIRED','AUTH_FAILED':_0x1c0919(0xd0),'UNAUTHORIZED':_0x1c0919(0xd0),'DATASET_NOT_FOUND':_0x1c0919(0x9c),'NOT_FOUND':'DATASET_NOT_FOUND','INVALID_PARAMETER':_0x1c0919(0xb7),'MISSING_PARAMETER':_0x1c0919(0xb3),'SQL_ERROR':_0x1c0919(0xc9),'NETWORK_ERROR':_0x1c0919(0xb5),'API_ERROR':_0x1c0919(0x9a)};return _0x3cf7c1[_0x57d386]||_0x1c0919(0xce);}
1
+ function a23_0x116b(){const _0x48e5e6=['toISOString','severity','UNKNOWN_ERROR','SQL_NOT_FOUND','error','获取数据集详情以确认表名和字段名','code','类型不匹配','DATASET_NOT_FOUND','toolParams','确保\x20SELECT\x20语句格式正确,如:\x20SELECT\x20id,\x20name\x20FROM\x20table\x20WHERE\x20status\x20=\x201','AUTH_REQUIRED','7346siuHXy','784gyzWMB','语法错误','2248218HJqtpU','canAutoFix','5590mnYxCH','检查\x20SQL\x20语法,确保关键字拼写正确、括号匹配','70440NXefen','SQL_VALIDATION_FAILED','list_datasets','description','6372ewrSMd','使用\x20get_dataset_detail\x20工具查看数据集的所有字段','缺少\x20WHERE\x20条件','数据集不存在:\x20','查看所有可用的数据集','suggestions','list_sql_queries','SQL\x20不存在:\x20','location','10PVQzQn','NETWORK_ERROR','SQL_EXECUTION_FAILED','字段名歧义','fixedSql','message','530562ZNVjOz','list_datasets({\x20pageSize:\x20999\x20})','fixSteps','PARAMETER_MISSING','222znlTAZ','API_ERROR','查看所有可用的\x20SQL\x20查询','不安全的查询','<dataset-code>','PARAMETER_INVALID','需要登录才能访问\x20Lovrabet\x20数据。请先使用\x20login\x20工具进行登录。','SYNTAX_ERROR','response','status','push','get_dataset_detail','type','731130CjKdoe'];a23_0x116b=function(){return _0x48e5e6;};return a23_0x116b();}const a23_0x3ee16e=a23_0x294f;(function(_0x9caaa9,_0x39f9b2){const _0x17c8f9=a23_0x294f,_0x15c228=_0x9caaa9();while(!![]){try{const _0x3bdd42=parseInt(_0x17c8f9(0xf7))/0x1+-parseInt(_0x17c8f9(0xd9))/0x2+parseInt(_0x17c8f9(0xdd))/0x3*(-parseInt(_0x17c8f9(0xf8))/0x4)+-parseInt(_0x17c8f9(0xd3))/0x5*(parseInt(_0x17c8f9(0xea))/0x6)+parseInt(_0x17c8f9(0xfa))/0x7+parseInt(_0x17c8f9(0xfe))/0x8+-parseInt(_0x17c8f9(0xca))/0x9*(-parseInt(_0x17c8f9(0xfc))/0xa);if(_0x3bdd42===_0x39f9b2)break;else _0x15c228['push'](_0x15c228['shift']());}catch(_0x3c9c3e){_0x15c228['push'](_0x15c228['shift']());}}}(a23_0x116b,0x332c2));function a23_0x294f(_0x1e76ec,_0x2ae715){_0x1e76ec=_0x1e76ec-0xc7;const _0x116bcb=a23_0x116b();let _0x294fa4=_0x116bcb[_0x1e76ec];return _0x294fa4;}export const SQL_ERROR_TYPE_LABELS={'TABLE_NOT_FOUND':'表不存在','COLUMN_NOT_FOUND':'字段不存在','AMBIGUOUS_COLUMN':a23_0x3ee16e(0xd6),'SYNTAX_ERROR':a23_0x3ee16e(0xf9),'TYPE_MISMATCH':a23_0x3ee16e(0xf2),'MISSING_WHERE_CLAUSE':a23_0x3ee16e(0xcc),'UNSAFE_QUERY':a23_0x3ee16e(0xe0)};export function createError(_0xdc92f2){const _0x242834=a23_0x3ee16e;return{'error':!![],'code':_0xdc92f2[_0x242834(0xf1)],'message':_0xdc92f2[_0x242834(0xd8)],'status':_0xdc92f2[_0x242834(0xe6)],'description':_0xdc92f2[_0x242834(0xc9)],'response':_0xdc92f2[_0x242834(0xe5)],'suggestedAction':_0xdc92f2['suggestedAction'],'recoverable':_0xdc92f2['recoverable']??!![],'timestamp':new Date()[_0x242834(0xeb)]()};}export function createAuthError(){const _0x29c09b=a23_0x3ee16e;return createError({'code':_0x29c09b(0xf6),'message':_0x29c09b(0xe3),'suggestedAction':{'tool':'login','description':'登录到\x20Lovrabet\x20平台','example':'login({\x20env:\x20\x22online\x22\x20})'},'recoverable':!![]});}export function createMissingParamError(_0x5a3a95,_0xd53ed9){const _0x259639=a23_0x3ee16e;return createError({'code':_0x259639(0xdc),'message':'缺少必需参数:\x20'+_0x5a3a95+(_0xd53ed9?'\x20('+_0xd53ed9+')':''),'recoverable':!![]});}export function createDatasetNotFoundError(_0x5ec455){const _0x25b775=a23_0x3ee16e;return createError({'code':_0x25b775(0xf3),'message':_0x25b775(0xcd)+_0x5ec455,'suggestedAction':{'tool':'list_datasets','description':_0x25b775(0xce),'example':_0x25b775(0xda)},'recoverable':!![]});}export function createSqlNotFoundError(_0x217c73){const _0x525350=a23_0x3ee16e;return createError({'code':_0x525350(0xee),'message':_0x525350(0xd1)+_0x217c73,'suggestedAction':{'tool':_0x525350(0xd0),'description':_0x525350(0xdf),'example':'list_sql_queries({\x20pageSize:\x20999\x20})'},'recoverable':!![]});}export function createSqlValidationError(_0x4d2d27){const _0x4269d7=a23_0x3ee16e,_0x3f55b5=_0x4d2d27['fixSteps']['length']>0x0,_0x55df4a=_0x3f55b5?_0x4d2d27['fixSteps'][0x0]:undefined,_0x1b1922={'type':_0x4d2d27['type'],'typeLabel':_0x4d2d27['typeLabel'],'location':_0x4d2d27[_0x4269d7(0xd2)],'severity':_0x4d2d27[_0x4269d7(0xec)],'fixSteps':_0x4d2d27[_0x4269d7(0xdb)],'suggestions':_0x4d2d27[_0x4269d7(0xcf)],'canAutoFix':_0x4d2d27[_0x4269d7(0xfb)],'fixedSql':_0x4d2d27[_0x4269d7(0xd7)]};return createError({'code':_0x4269d7(0xc7),'message':_0x4d2d27['typeLabel']+':\x20'+_0x4d2d27['message'],'status':_0x4d2d27[_0x4269d7(0xe6)],'description':_0x1b1922,'response':_0x4d2d27[_0x4269d7(0xe5)],'suggestedAction':_0x55df4a?{'tool':_0x55df4a['tool'],'description':_0x55df4a[_0x4269d7(0xc9)],'params':_0x55df4a[_0x4269d7(0xf4)],'example':_0x55df4a['example']}:{'tool':_0x4269d7(0xe8),'description':_0x4269d7(0xf0),'params':{'datasetCode':_0x4269d7(0xe1)}},'recoverable':_0x4d2d27[_0x4269d7(0xec)]!==_0x4269d7(0xef)});}export function createStructuredSqlError(_0x3ffecb){const _0x28131b=a23_0x3ee16e,_0x3be79d=SQL_ERROR_TYPE_LABELS[_0x3ffecb['type']],_0x449686=_0x3ffecb[_0x28131b(0xec)]??_0x28131b(0xef),_0x2dc05e=[];if(_0x3ffecb[_0x28131b(0xe9)]==='TABLE_NOT_FOUND')_0x2dc05e[_0x28131b(0xe7)]({'description':'使用\x20list_datasets\x20工具查看所有可用的数据集表名','tool':_0x28131b(0xc8),'toolParams':{'pageSize':0x3e7},'example':'list_datasets({\x20pageSize:\x20999\x20})'});else{if(_0x3ffecb[_0x28131b(0xe9)]==='COLUMN_NOT_FOUND')_0x2dc05e[_0x28131b(0xe7)]({'description':_0x28131b(0xcb),'tool':'get_dataset_detail','toolParams':{'datasetCode':_0x28131b(0xe1)},'example':'get_dataset_detail({\x20datasetCode:\x20\x22customer\x22\x20})'});else _0x3ffecb[_0x28131b(0xe9)]===_0x28131b(0xe4)&&_0x2dc05e['push']({'description':_0x28131b(0xfd),'example':_0x28131b(0xf5)});}return{'type':_0x3ffecb['type'],'typeLabel':_0x3be79d,'location':_0x3ffecb[_0x28131b(0xd2)],'message':_0x3ffecb[_0x28131b(0xd8)],'severity':_0x449686,'fixSteps':_0x3ffecb['fixSteps']??_0x2dc05e,'suggestions':_0x3ffecb[_0x28131b(0xcf)],'canAutoFix':_0x3ffecb[_0x28131b(0xfb)],'fixedSql':_0x3ffecb[_0x28131b(0xd7)],'status':_0x3ffecb[_0x28131b(0xe6)],'response':_0x3ffecb[_0x28131b(0xe5)]};}export function fromLovrabetError(_0x1d6579,_0x4f8e3f){const _0x4ff437=a23_0x3ee16e;return createError({'code':mapSdkCodeToMcpCode(_0x1d6579[_0x4ff437(0xf1)]),'message':_0x1d6579[_0x4ff437(0xd8)],'status':_0x1d6579[_0x4ff437(0xe6)],'description':_0x1d6579[_0x4ff437(0xc9)],'response':_0x1d6579[_0x4ff437(0xe5)],'suggestedAction':_0x4f8e3f,'recoverable':_0x1d6579['status']?_0x1d6579[_0x4ff437(0xe6)]<0x1f4:!![]});}function mapSdkCodeToMcpCode(_0x3108ab){const _0xb06fbb=a23_0x3ee16e;if(!_0x3108ab)return _0xb06fbb(0xed);const _0x5bfbda={'AUTH_REQUIRED':'AUTH_REQUIRED','AUTH_FAILED':_0xb06fbb(0xf6),'UNAUTHORIZED':_0xb06fbb(0xf6),'DATASET_NOT_FOUND':'DATASET_NOT_FOUND','NOT_FOUND':_0xb06fbb(0xf3),'INVALID_PARAMETER':_0xb06fbb(0xe2),'MISSING_PARAMETER':_0xb06fbb(0xdc),'SQL_ERROR':_0xb06fbb(0xd5),'NETWORK_ERROR':_0xb06fbb(0xd4),'API_ERROR':_0xb06fbb(0xde)};return _0x5bfbda[_0x3108ab]||'UNKNOWN_ERROR';}
@@ -0,0 +1 @@
1
+ function a24_0x493a(_0x26bf66,_0x51de13){_0x26bf66=_0x26bf66-0x10f;const _0x28fbd2=a24_0x28fb();let _0x493a5f=_0x28fbd2[_0x26bf66];return _0x493a5f;}const a24_0x12cc34=a24_0x493a;(function(_0x54a4a2,_0x48066d){const _0x4885f0=a24_0x493a,_0x344a1d=_0x54a4a2();while(!![]){try{const _0x59ec6e=-parseInt(_0x4885f0(0x11a))/0x1*(-parseInt(_0x4885f0(0x118))/0x2)+-parseInt(_0x4885f0(0x111))/0x3*(parseInt(_0x4885f0(0x128))/0x4)+-parseInt(_0x4885f0(0x124))/0x5*(-parseInt(_0x4885f0(0x113))/0x6)+-parseInt(_0x4885f0(0x11c))/0x7+-parseInt(_0x4885f0(0x116))/0x8+parseInt(_0x4885f0(0x120))/0x9*(parseInt(_0x4885f0(0x10f))/0xa)+parseInt(_0x4885f0(0x119))/0xb*(parseInt(_0x4885f0(0x110))/0xc);if(_0x59ec6e===_0x48066d)break;else _0x344a1d['push'](_0x344a1d['shift']());}catch(_0x2219a7){_0x344a1d['push'](_0x344a1d['shift']());}}}(a24_0x28fb,0x89676));export class RateLimiter{[a24_0x12cc34(0x127)]=0x0;[a24_0x12cc34(0x12c)]=[];[a24_0x12cc34(0x126)]=![];['options'];constructor(_0x3ca740={}){const _0x37c1c3=a24_0x12cc34;this[_0x37c1c3(0x129)]={'maxOperations':_0x3ca740['maxOperations']??Infinity,'windowMs':_0x3ca740['windowMs']??0x3e8,'delayMs':_0x3ca740['delayMs']??0x7d0};}async[a24_0x12cc34(0x117)](_0x453ed9){return new Promise((_0x431084,_0x165189)=>{const _0x50e053=a24_0x493a;this['queue'][_0x50e053(0x12a)]({'fn':_0x453ed9,'resolve':_0x431084,'reject':_0x165189}),this[_0x50e053(0x11e)]();});}async[a24_0x12cc34(0x11e)](){const _0x1fdd3d=a24_0x12cc34;if(this[_0x1fdd3d(0x126)]||this['queue'][_0x1fdd3d(0x123)]===0x0)return;this[_0x1fdd3d(0x126)]=!![];while(this[_0x1fdd3d(0x12c)][_0x1fdd3d(0x123)]>0x0){const _0x56547d=Date[_0x1fdd3d(0x11f)](),_0x5710ac=_0x56547d-this[_0x1fdd3d(0x127)];if(this[_0x1fdd3d(0x127)]>0x0&&_0x5710ac<this[_0x1fdd3d(0x129)][_0x1fdd3d(0x12d)]){const _0x3872df=this[_0x1fdd3d(0x129)][_0x1fdd3d(0x12d)]-_0x5710ac;await this[_0x1fdd3d(0x11b)](_0x3872df);}const _0x1c9968=this[_0x1fdd3d(0x12c)][_0x1fdd3d(0x121)]();if(!_0x1c9968)break;try{const _0x38a6b7=await _0x1c9968['fn']();_0x1c9968[_0x1fdd3d(0x11d)](_0x38a6b7);}catch(_0x367543){_0x1c9968[_0x1fdd3d(0x114)](_0x367543);}this['lastExecutionTime']=Date['now']();}this[_0x1fdd3d(0x126)]=![];}[a24_0x12cc34(0x11b)](_0x295ed4){return new Promise(_0x37c9bf=>setTimeout(_0x37c9bf,_0x295ed4));}[a24_0x12cc34(0x122)](){const _0x1830b1=a24_0x12cc34;this[_0x1830b1(0x127)]=0x0,this['queue']=[],this[_0x1830b1(0x126)]=![];}[a24_0x12cc34(0x112)](){return this['queue']['length'];}}const globalLimiters=new Map();export function getRateLimiter(_0x5f18ed,_0x32a23d){const _0x25459d=a24_0x12cc34;return!globalLimiters[_0x25459d(0x125)](_0x5f18ed)&&globalLimiters[_0x25459d(0x12b)](_0x5f18ed,new RateLimiter(_0x32a23d)),globalLimiters[_0x25459d(0x115)](_0x5f18ed);}export const rateLimiters={'sqlSave':new RateLimiter({'delayMs':0x3e8}),'api':new RateLimiter({'delayMs':0x1f4}),'fast':new RateLimiter({'delayMs':0xc8})};function a24_0x28fb(){const _0x2fd8ea=['now','1278846enntgy','shift','reset','length','100zeQdEK','has','processing','lastExecutionTime','4EIXgsP','options','push','set','queue','delayMs','20XOoZKd','22452uPEKSV','520791iBHdBB','getQueueLength','37212HxZveb','reject','get','5516800OUTIik','throttle','15054PVzxMT','5093uGQaWT','98XKzCRK','sleep','4103008aVnIwp','resolve','processQueue'];a24_0x28fb=function(){return _0x2fd8ea;};return a24_0x28fb();}
@@ -1 +1 @@
1
- (function(_0x34656e,_0x182553){const _0x52ddd5=a25_0x5335,_0x3a5140=_0x34656e();while(!![]){try{const _0x2d47bc=parseInt(_0x52ddd5(0x149))/0x1*(parseInt(_0x52ddd5(0x11a))/0x2)+parseInt(_0x52ddd5(0x10b))/0x3*(parseInt(_0x52ddd5(0x119))/0x4)+parseInt(_0x52ddd5(0x11b))/0x5+-parseInt(_0x52ddd5(0x10c))/0x6*(parseInt(_0x52ddd5(0x106))/0x7)+-parseInt(_0x52ddd5(0xfe))/0x8*(parseInt(_0x52ddd5(0x12d))/0x9)+-parseInt(_0x52ddd5(0x117))/0xa*(-parseInt(_0x52ddd5(0x100))/0xb)+-parseInt(_0x52ddd5(0x125))/0xc*(parseInt(_0x52ddd5(0x143))/0xd);if(_0x2d47bc===_0x182553)break;else _0x3a5140['push'](_0x3a5140['shift']());}catch(_0x276529){_0x3a5140['push'](_0x3a5140['shift']());}}}(a25_0x4104,0x48d77));import{createStructuredSqlError}from'../types/mcp-types.js';function a25_0x4104(){const _0x2c8a08=['join','error','\x5c\x5cs+','test','reason','split','TABLE_NOT_FOUND','amount','from','SELECT\x20query','number','replace','SELECT','name','101218iTxLlc','size','count','status','SQL\x20必须以\x20SELECT\x20开头','REVOKE','37248IpWomN','SYNTAX_ERROR','filter','TRUNCATE','column','tables','joins','tableName','1760TfXbTg','\x22\x20中不存在','22KPyzoF','time','page','push','Joins:\x20','length','1881740aUtMOM','value','COLUMN_NOT_FOUND','table','startsWith','69MOHHdt','6EszpzJ','Only\x20SELECT\x20queries\x20are\x20allowed.\x20The\x20SQL\x20must\x20start\x20with\x20SELECT\x20(after\x20any\x20comments).','includes','toLowerCase','has','UPDATE\x5cs+\x5cw+\x5cs+SET','.\x20Only\x20SELECT\x20queries\x20are\x20allowed.','Forbidden\x20keyword\x20detected:\x20','DELETE\x5cs+FROM','slice','INSERT\x5cs+INTO','437270EXbZoB','date','89084gDEkYK','16llXMPl','589240lyKJrU','GRANT','map','DROP\x5cs+(TABLE|INDEX|DATABASE)','parameters','matchAll','trim','SQL\x20content\x20cannot\x20be\x20empty','search','limit','120dvxVMP','SELECT\x20id,\x20name\x20FROM\x20customer\x20WHERE\x20status\x20=\x201','toUpperCase','\x22\x20在表\x20\x22','columns','SQL_START','valid','keys','15156HinNBv','Tables:\x20','match','string','2024-01-01','\x20|\x20','字段\x20\x22','CREATE\x5cs+(TABLE|INDEX|DATABASE|VIEW)'];a25_0x4104=function(){return _0x2c8a08;};return a25_0x4104();}export function parseSqlStructure(_0x13593f){const _0x49c6df=a25_0x5335,_0x26db26={'tables':[],'columns':[],'parameters':[],'joins':[]};if(!_0x13593f||typeof _0x13593f!==_0x49c6df(0x130))return _0x26db26;const _0x762be=_0x13593f[_0x49c6df(0x140)](/#\{[^}]*\}/g,'?')[_0x49c6df(0x140)](/\$\{[^}]*\}/g,'?')[_0x49c6df(0x140)](/'[^']*'/g,'\x27\x27')[_0x49c6df(0x140)](/--.*$/gm,'')[_0x49c6df(0x140)](/\/\*[\s\S]*?\*\//g,''),_0x11afd0=_0x762be['match'](/FROM\s+([^\s,)(]+)/i);if(_0x11afd0){const _0x1b2cc1=_0x11afd0[0x1]['replace'](/[`"]/g,'');_0x26db26[_0x49c6df(0xfb)][_0x49c6df(0x103)](_0x1b2cc1);}const _0x58f02c=_0x762be[_0x49c6df(0x120)](/(?:INNER|LEFT|RIGHT|FULL|CROSS)?\s*JOIN\s+([^\s,)(]+)/gi);for(const _0xaa5afd of _0x58f02c){const _0x1fb4af=_0xaa5afd[0x1][_0x49c6df(0x140)](/[`"]/g,'');_0x1fb4af&&!_0x26db26[_0x49c6df(0xfb)][_0x49c6df(0x10e)](_0x1fb4af)&&_0x26db26['tables']['push'](_0x1fb4af);}const _0x230ff4=_0x762be[_0x49c6df(0x12f)](/SELECT\s+([\s\S]+?)\s+FROM/i);if(_0x230ff4){const _0x485f87=_0x230ff4[0x1][_0x49c6df(0x121)]();if(_0x485f87!=='*'){const _0xa67f8f=splitSqlColumns(_0x485f87);for(const _0xe5b864 of _0xa67f8f){const _0x509aaa=_0xe5b864[_0x49c6df(0x121)]();if(_0x509aaa&&!_0x509aaa[_0x49c6df(0x12f)](/^\d+$/)){const _0x20a5f8=_0x509aaa[_0x49c6df(0x13a)](/\s+AS\s+/i),_0x3795ad=_0x20a5f8[0x0][_0x49c6df(0x121)](),_0xb91a65=_0x20a5f8[0x1]?.['trim']();if(_0x3795ad[_0x49c6df(0x10e)]('.')){const [_0xdf86e6,_0x54e85c]=_0x3795ad['split']('.');_0x26db26[_0x49c6df(0x129)][_0x49c6df(0x103)]({'table':_0xdf86e6[_0x49c6df(0x121)](),'column':_0x54e85c[_0x49c6df(0x140)](/[`"]/g,'')[_0x49c6df(0x121)](),'alias':_0xb91a65});}else!_0x3795ad[_0x49c6df(0x10e)]('(')&&_0x26db26['columns'][_0x49c6df(0x103)]({'table':'','column':_0x3795ad[_0x49c6df(0x140)](/[`"]/g,''),'alias':_0xb91a65});}}}}const _0x5c00d4=_0x762be[_0x49c6df(0x120)](/JOIN\s+(\w+)\s+(?:AS\s+)?(\w+)?\s+ON\s+([\w.]+)\s*=\s*([\w.]+)/gi);for(const _0xc1221d of _0x5c00d4){const [,,,_0x16a5ec,_0x7b2c47]=_0xc1221d;if(_0x16a5ec&&_0x7b2c47){const [_0x30f1be,_0x28d05d]=_0x16a5ec[_0x49c6df(0x10e)]('.')?_0x16a5ec[_0x49c6df(0x13a)]('.'):['',_0x16a5ec],[_0x5a9051,_0x1db9ed]=_0x7b2c47[_0x49c6df(0x10e)]('.')?_0x7b2c47[_0x49c6df(0x13a)]('.'):['',_0x7b2c47];_0x26db26['joins']?.[_0x49c6df(0x103)]({'leftTable':_0x30f1be,'leftColumn':_0x28d05d,'rightTable':_0x5a9051,'rightColumn':_0x1db9ed});}}const _0x399597=_0x13593f[_0x49c6df(0x120)](/[#\$]\{(\w+)\}/g),_0x10a4e4=new Set();for(const _0x422447 of _0x399597){const _0x314cb0=_0x422447[0x1];!_0x10a4e4[_0x49c6df(0x110)](_0x314cb0)&&(_0x10a4e4['add'](_0x314cb0),_0x26db26['parameters'][_0x49c6df(0x103)]({'name':_0x314cb0,'type':inferParamType(_0x314cb0),'example':getExampleValue(_0x314cb0)}));}return _0x26db26;}function splitSqlColumns(_0x25ed52){const _0x4db072=a25_0x5335,_0x1ab943=[];let _0xd132b9='',_0x3cef8f=0x0;for(let _0x2c712e=0x0;_0x2c712e<_0x25ed52['length'];_0x2c712e++){const _0x5743d6=_0x25ed52[_0x2c712e];if(_0x5743d6==='(')_0x3cef8f++,_0xd132b9+=_0x5743d6;else{if(_0x5743d6===')')_0x3cef8f--,_0xd132b9+=_0x5743d6;else _0x5743d6===','&&_0x3cef8f===0x0?(_0x1ab943[_0x4db072(0x103)](_0xd132b9),_0xd132b9=''):_0xd132b9+=_0x5743d6;}}return _0xd132b9&&_0x1ab943[_0x4db072(0x103)](_0xd132b9),_0x1ab943;}function inferParamType(_0x324c88){const _0x2cbc71=a25_0x5335,_0x19b19d=_0x324c88['toLowerCase']();if(_0x19b19d[_0x2cbc71(0x10e)]('id')||_0x19b19d['includes'](_0x2cbc71(0x145))||_0x19b19d[_0x2cbc71(0x10e)](_0x2cbc71(0x124))||_0x19b19d[_0x2cbc71(0x10e)](_0x2cbc71(0x144))||_0x19b19d[_0x2cbc71(0x10e)](_0x2cbc71(0x102))||_0x19b19d[_0x2cbc71(0x10e)]('num')||_0x19b19d['includes'](_0x2cbc71(0x13c))||_0x19b19d['includes']('price'))return _0x2cbc71(0x13f);return'string';}function getExampleValue(_0x21470b){const _0x1c0d37=a25_0x5335,_0x440934=_0x21470b[_0x1c0d37(0x10f)](),_0x49794b=inferParamType(_0x440934);if(_0x49794b==='number'){if(_0x440934[_0x1c0d37(0x10e)]('limit')||_0x440934[_0x1c0d37(0x10e)]('count')||_0x440934[_0x1c0d37(0x10e)](_0x1c0d37(0x144)))return 0xa;if(_0x440934[_0x1c0d37(0x10e)](_0x1c0d37(0x102)))return 0x1;return 0x7b;}if(_0x440934['includes'](_0x1c0d37(0x118))||_0x440934[_0x1c0d37(0x10e)](_0x1c0d37(0x101)))return _0x1c0d37(0x131);if(_0x440934['includes'](_0x1c0d37(0x146)))return'1';if(_0x440934[_0x1c0d37(0x10e)]('keyword')||_0x440934[_0x1c0d37(0x10e)](_0x1c0d37(0x123))||_0x440934[_0x1c0d37(0x10e)](_0x1c0d37(0x142)))return'example';return _0x1c0d37(0x107);}export function validateIsSelectOnly(_0x28a60e){const _0x37383e=a25_0x5335;if(!_0x28a60e||typeof _0x28a60e!==_0x37383e(0x130))return{'valid':![],'reason':_0x37383e(0x122)};const _0x5478a4=_0x28a60e[_0x37383e(0x140)](/#\{[^}]*\}/g,'?')[_0x37383e(0x140)](/\$\{[^}]*\}/g,'?')[_0x37383e(0x140)](/@[^(\s]+(\([^)]*\))?/g,''),_0x6ded02=_0x5478a4['trim'](),_0x1a74cb=_0x6ded02['split']('\x0a');let _0x5a0b6b='';for(const _0x17124e of _0x1a74cb){const _0x30569f=_0x17124e[_0x37383e(0x121)]();if(!_0x30569f||_0x30569f[_0x37383e(0x10a)]('--')||_0x30569f[_0x37383e(0x10a)]('/*'))continue;_0x5a0b6b=_0x30569f;break;}if(!_0x5a0b6b[_0x37383e(0x127)]()[_0x37383e(0x10a)](_0x37383e(0x141)))return{'valid':![],'reason':_0x37383e(0x10d)};const _0x75c61d=[_0x37383e(0x116),_0x37383e(0x111),_0x37383e(0x114),_0x37383e(0x11e),'ALTER\x5cs+(TABLE|DATABASE)',_0x37383e(0x134),_0x37383e(0x14c),_0x37383e(0x11c),_0x37383e(0x148),'EXEC','EXECUTE'],_0xfd05b2=_0x6ded02[_0x37383e(0x127)]();for(const _0x123997 of _0x75c61d){const _0x26425f=new RegExp(_0x123997,'i');if(_0x26425f[_0x37383e(0x138)](_0xfd05b2))return{'valid':![],'reason':_0x37383e(0x113)+_0x123997[_0x37383e(0x140)](_0x37383e(0x137),'\x20')+_0x37383e(0x112)};}return{'valid':!![]};}export function extractTableNames(_0x566aae){const _0x3c3d54=a25_0x5335,_0x405da4=parseSqlStructure(_0x566aae);return _0x405da4[_0x3c3d54(0xfb)];}export function extractColumnNames(_0x25eff0){const _0x1a82be=a25_0x5335,_0x56688a=parseSqlStructure(_0x25eff0);return _0x56688a[_0x1a82be(0x129)][_0x1a82be(0x11d)](_0x412437=>({'table':_0x412437[_0x1a82be(0x109)],'column':_0x412437[_0x1a82be(0xfa)]}));}export function extractParameters(_0x4b0813){const _0x233b6a=a25_0x5335,_0x41679a=parseSqlStructure(_0x4b0813);return _0x41679a[_0x233b6a(0x11f)];}export function validateSqlContent(_0x536af4,_0x2c2e2e){const _0x3bdf0f=a25_0x5335,_0x460649=validateIsSelectOnly(_0x536af4);if(!_0x460649[_0x3bdf0f(0x12b)])return{'valid':![],'isSelectOnly':![],'errors':[createStructuredSqlError({'type':_0x3bdf0f(0x14a),'location':_0x3bdf0f(0x12a),'message':_0x460649[_0x3bdf0f(0x139)]||_0x3bdf0f(0x147),'severity':_0x3bdf0f(0x136),'fixSteps':[{'description':'确保\x20SQL\x20语句以\x20SELECT\x20关键字开头','example':_0x3bdf0f(0x126)}]})]};const _0x6fcf3b=parseSqlStructure(_0x536af4),_0x16f1f4=[];if(_0x2c2e2e){const _0x199ab6=new Map(_0x2c2e2e[_0x3bdf0f(0xfb)]['map'](_0x572d16=>[_0x572d16[_0x3bdf0f(0xfd)]['toLowerCase'](),_0x572d16[_0x3bdf0f(0x129)]['map'](_0x2dbbaf=>_0x2dbbaf['toLowerCase']())]));for(const _0xc1aceb of _0x6fcf3b['tables']){const _0x43a2e5=_0xc1aceb[_0x3bdf0f(0x10f)]();if(!_0x199ab6['has'](_0x43a2e5)){const _0x31f5d1=Array[_0x3bdf0f(0x13d)](_0x199ab6['keys']())['filter'](_0x414cc8=>_0x414cc8[_0x3bdf0f(0x10e)](_0x43a2e5)||_0x43a2e5[_0x3bdf0f(0x10e)](_0x414cc8));_0x16f1f4[_0x3bdf0f(0x103)](createStructuredSqlError({'type':_0x3bdf0f(0x13b),'location':_0xc1aceb,'message':'表\x20\x22'+_0xc1aceb+'\x22\x20在数据库\x20schema\x20中不存在','severity':'error','suggestions':_0x31f5d1[_0x3bdf0f(0x105)]>0x0?_0x31f5d1:Array[_0x3bdf0f(0x13d)](_0x199ab6[_0x3bdf0f(0x12c)]())}));}}for(const _0x5a9062 of _0x6fcf3b[_0x3bdf0f(0x129)]){if(_0x5a9062['table']){const _0xf28f0b=_0x5a9062[_0x3bdf0f(0x109)][_0x3bdf0f(0x10f)](),_0x430400=_0x199ab6['get'](_0xf28f0b);if(_0x430400){const _0x33b825=_0x5a9062[_0x3bdf0f(0xfa)][_0x3bdf0f(0x10f)]();if(!_0x430400[_0x3bdf0f(0x10e)](_0x33b825)&&!_0x5a9062['column'][_0x3bdf0f(0x10e)]('*')){const _0x40a997=_0x430400[_0x3bdf0f(0x14b)](_0x14cc9b=>_0x14cc9b['includes'](_0x33b825)||_0x33b825[_0x3bdf0f(0x10e)](_0x14cc9b));_0x16f1f4[_0x3bdf0f(0x103)](createStructuredSqlError({'type':_0x3bdf0f(0x108),'location':_0x5a9062[_0x3bdf0f(0x109)]+'.'+_0x5a9062[_0x3bdf0f(0xfa)],'message':_0x3bdf0f(0x133)+_0x5a9062[_0x3bdf0f(0xfa)]+_0x3bdf0f(0x128)+_0x5a9062[_0x3bdf0f(0x109)]+_0x3bdf0f(0xff),'severity':_0x3bdf0f(0x136),'suggestions':_0x40a997[_0x3bdf0f(0x105)]>0x0?_0x40a997:_0x430400[_0x3bdf0f(0x115)](0x0,0xa)}));}}}}}return{'valid':_0x16f1f4[_0x3bdf0f(0x105)]===0x0,'isSelectOnly':!![],'parsedStructure':_0x6fcf3b,'errors':_0x16f1f4[_0x3bdf0f(0x105)]>0x0?_0x16f1f4:undefined};}function a25_0x5335(_0x4953ce,_0xa5712){_0x4953ce=_0x4953ce-0xfa;const _0x410461=a25_0x4104();let _0x533509=_0x410461[_0x4953ce];return _0x533509;}export function generateSqlSummary(_0xac5da9){const _0x56f40=a25_0x5335,_0x2bad88=parseSqlStructure(_0xac5da9),_0x115a97=[];return _0x2bad88[_0x56f40(0xfb)][_0x56f40(0x105)]>0x0&&_0x115a97[_0x56f40(0x103)](_0x56f40(0x12e)+_0x2bad88['tables'][_0x56f40(0x135)](',\x20')),_0x2bad88[_0x56f40(0x11f)][_0x56f40(0x105)]>0x0&&_0x115a97['push']('Params:\x20'+_0x2bad88[_0x56f40(0x11f)]['map'](_0x3ba107=>_0x3ba107['name'])[_0x56f40(0x135)](',\x20')),_0x2bad88[_0x56f40(0xfc)]&&_0x2bad88[_0x56f40(0xfc)]['length']>0x0&&_0x115a97[_0x56f40(0x103)](_0x56f40(0x104)+_0x2bad88[_0x56f40(0xfc)]['length']),_0x115a97['length']>0x0?_0x115a97['join'](_0x56f40(0x132)):_0x56f40(0x13e);}
1
+ function a25_0x2ae9(){const _0xe8f0a4=['test','price','DDL','\x22\x20在数据库\x20schema\x20中不存在','error','字段\x20\x22','join','name','amount','limit','reason','value','REVOKE','size','Contains\x20data\x20modification\x20keywords','SELECT\x20query','97401ZhPcUt','search','slice','INSERT','matchAll','includes','38583LUdDdH','replace','push','SELECT','DROP','3341046SRjIAL','count','trim','num','TRUNCATE','4796925faaUxK','TABLE_NOT_FOUND','SQL\x20content\x20is\x20empty','1992YrdHyQ','Joins:\x20','parameters','time','table','CREATE','toUpperCase','has','INSERT\x20statement\x20modifies\x20data','\x20|\x20','DELETE\x20statement\x20modifies\x20data','add','GRANT','filter','match','column','startsWith','keyword','date','string','UNKNOWN','split','76cfPGCt','Params:\x20','toLowerCase','1702356gstkxi','tables','length','isSelectOnly','from','joins','get','columns','number','2024-01-01','map','keys','example','\x22\x20在表\x20\x22','2154584SdHTTE','ALTER','5052020OmEAsf'];a25_0x2ae9=function(){return _0xe8f0a4;};return a25_0x2ae9();}(function(_0x43aa85,_0x57ad36){const _0x3d097b=a25_0x2ad3,_0x53b4d6=_0x43aa85();while(!![]){try{const _0x5a093b=-parseInt(_0x3d097b(0xd1))/0x1+parseInt(_0x3d097b(0xce))/0x2*(-parseInt(_0x3d097b(0xa5))/0x3)+parseInt(_0x3d097b(0x92))/0x4+parseInt(_0x3d097b(0x94))/0x5+parseInt(_0x3d097b(0xb0))/0x6+parseInt(_0x3d097b(0xb5))/0x7+-parseInt(_0x3d097b(0xb8))/0x8*(-parseInt(_0x3d097b(0xab))/0x9);if(_0x5a093b===_0x57ad36)break;else _0x53b4d6['push'](_0x53b4d6['shift']());}catch(_0x2b0406){_0x53b4d6['push'](_0x53b4d6['shift']());}}}(a25_0x2ae9,0xe139f));import{createStructuredSqlError}from'../types/mcp-types.js';export function parseSqlStructure(_0x292901){const _0x16a3a1=a25_0x2ad3,_0x4d88c1={'tables':[],'columns':[],'parameters':[],'joins':[]};if(!_0x292901||typeof _0x292901!==_0x16a3a1(0xcb))return _0x4d88c1;const _0xedc756=_0x292901['replace'](/#\{[^}]*\}/g,'?')[_0x16a3a1(0xac)](/\$\{[^}]*\}/g,'?')[_0x16a3a1(0xac)](/'[^']*'/g,'\x27\x27')[_0x16a3a1(0xac)](/--.*$/gm,'')[_0x16a3a1(0xac)](/\/\*[\s\S]*?\*\//g,''),_0x583972=_0xedc756[_0x16a3a1(0xc6)](/FROM\s+([^\s,)(]+)/i);if(_0x583972){const _0x4a58ea=_0x583972[0x1][_0x16a3a1(0xac)](/[`"]/g,'');_0x4d88c1[_0x16a3a1(0xd2)][_0x16a3a1(0xad)](_0x4a58ea);}const _0x52bc05=_0xedc756[_0x16a3a1(0xa9)](/(?:INNER|LEFT|RIGHT|FULL|CROSS)?\s*JOIN\s+([^\s,)(]+)/gi);for(const _0xbbb9ed of _0x52bc05){const _0x13ea74=_0xbbb9ed[0x1][_0x16a3a1(0xac)](/[`"]/g,'');_0x13ea74&&!_0x4d88c1[_0x16a3a1(0xd2)]['includes'](_0x13ea74)&&_0x4d88c1['tables'][_0x16a3a1(0xad)](_0x13ea74);}const _0x174349=_0xedc756[_0x16a3a1(0xc6)](/SELECT\s+([\s\S]+?)\s+FROM/i);if(_0x174349){const _0x12e497=_0x174349[0x1]['trim']();if(_0x12e497!=='*'){const _0xb695e5=splitSqlColumns(_0x12e497);for(const _0x5561f0 of _0xb695e5){const _0x11abe4=_0x5561f0[_0x16a3a1(0xb2)]();if(_0x11abe4&&!_0x11abe4[_0x16a3a1(0xc6)](/^\d+$/)){const _0x547429=_0x11abe4['split'](/\s+AS\s+/i),_0x41fff6=_0x547429[0x0][_0x16a3a1(0xb2)](),_0x59feb1=_0x547429[0x1]?.[_0x16a3a1(0xb2)]();if(_0x41fff6[_0x16a3a1(0xaa)]('.')){const [_0x30380f,_0xec81a1]=_0x41fff6[_0x16a3a1(0xcd)]('.');_0x4d88c1['columns']['push']({'table':_0x30380f[_0x16a3a1(0xb2)](),'column':_0xec81a1[_0x16a3a1(0xac)](/[`"]/g,'')[_0x16a3a1(0xb2)](),'alias':_0x59feb1});}else!_0x41fff6[_0x16a3a1(0xaa)]('(')&&_0x4d88c1['columns'][_0x16a3a1(0xad)]({'table':'','column':_0x41fff6[_0x16a3a1(0xac)](/[`"]/g,''),'alias':_0x59feb1});}}}}const _0x40ee4c=_0xedc756[_0x16a3a1(0xa9)](/JOIN\s+(\w+)\s+(?:AS\s+)?(\w+)?\s+ON\s+([\w.]+)\s*=\s*([\w.]+)/gi);for(const _0x2cb2f8 of _0x40ee4c){const [,,,_0x43175c,_0x22ac21]=_0x2cb2f8;if(_0x43175c&&_0x22ac21){const [_0x5e47dd,_0x1cfed7]=_0x43175c[_0x16a3a1(0xaa)]('.')?_0x43175c[_0x16a3a1(0xcd)]('.'):['',_0x43175c],[_0x267921,_0x46cb39]=_0x22ac21['includes']('.')?_0x22ac21[_0x16a3a1(0xcd)]('.'):['',_0x22ac21];_0x4d88c1['joins']?.['push']({'leftTable':_0x5e47dd,'leftColumn':_0x1cfed7,'rightTable':_0x267921,'rightColumn':_0x46cb39});}}const _0x1ca87a=_0x292901[_0x16a3a1(0xa9)](/[#\$]\{(\w+)\}/g),_0x552d45=new Set();for(const _0xc4f93 of _0x1ca87a){const _0x2ea778=_0xc4f93[0x1];!_0x552d45[_0x16a3a1(0xbf)](_0x2ea778)&&(_0x552d45[_0x16a3a1(0xc3)](_0x2ea778),_0x4d88c1[_0x16a3a1(0xba)][_0x16a3a1(0xad)]({'name':_0x2ea778,'type':inferParamType(_0x2ea778),'example':getExampleValue(_0x2ea778)}));}return _0x4d88c1;}function splitSqlColumns(_0x3612c6){const _0xb235ee=a25_0x2ad3,_0x54a07b=[];let _0x600fd9='',_0x5d8d21=0x0;for(let _0x4d0143=0x0;_0x4d0143<_0x3612c6[_0xb235ee(0xd3)];_0x4d0143++){const _0x41703c=_0x3612c6[_0x4d0143];if(_0x41703c==='(')_0x5d8d21++,_0x600fd9+=_0x41703c;else{if(_0x41703c===')')_0x5d8d21--,_0x600fd9+=_0x41703c;else _0x41703c===','&&_0x5d8d21===0x0?(_0x54a07b['push'](_0x600fd9),_0x600fd9=''):_0x600fd9+=_0x41703c;}}return _0x600fd9&&_0x54a07b[_0xb235ee(0xad)](_0x600fd9),_0x54a07b;}function inferParamType(_0x424827){const _0x24f66c=a25_0x2ad3,_0x377621=_0x424827[_0x24f66c(0xd0)]();if(_0x377621[_0x24f66c(0xaa)]('id')||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0xb1))||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0x9e))||_0x377621[_0x24f66c(0xaa)]('size')||_0x377621['includes']('page')||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0xb3))||_0x377621['includes'](_0x24f66c(0x9d))||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0x96)))return _0x24f66c(0xd9);return'string';}function getExampleValue(_0x9551be){const _0x27050e=a25_0x2ad3,_0x6c429=_0x9551be[_0x27050e(0xd0)](),_0x28dcf6=inferParamType(_0x6c429);if(_0x28dcf6===_0x27050e(0xd9)){if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0x9e))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0xb1))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0xa2)))return 0xa;if(_0x6c429[_0x27050e(0xaa)]('page'))return 0x1;return 0x7b;}if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0xca))||_0x6c429['includes'](_0x27050e(0xbb)))return _0x27050e(0xda);if(_0x6c429[_0x27050e(0xaa)]('status'))return'1';if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0xc9))||_0x6c429['includes'](_0x27050e(0xa6))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0x9c)))return _0x27050e(0x90);return _0x27050e(0xa0);}export function detectSqlType(_0x13f1af){const _0x4ff95f=a25_0x2ad3;if(!_0x13f1af||typeof _0x13f1af!==_0x4ff95f(0xcb))return{'type':_0x4ff95f(0xcc),'isSelectOnly':![],'isDangerous':![],'reason':_0x4ff95f(0xb7)};const _0x2d5246=_0x13f1af['replace'](/#\{[^}]*\}/g,'?')[_0x4ff95f(0xac)](/\$\{[^}]*\}/g,'?')[_0x4ff95f(0xac)](/@[^(\s]+(\([^)]*\))?/g,''),_0x11b8c6=_0x2d5246['trim'](),_0x1b76cc=_0x11b8c6[_0x4ff95f(0xcd)]('\x0a');let _0x1ce94d='';for(const _0x5d5eee of _0x1b76cc){const _0xbaabe4=_0x5d5eee['trim']();if(!_0xbaabe4||_0xbaabe4[_0x4ff95f(0xc8)]('--')||_0xbaabe4['startsWith']('/*'))continue;_0x1ce94d=_0xbaabe4;break;}const _0x7501b4=_0x1ce94d[_0x4ff95f(0xbe)](),_0x51c042=_0x11b8c6[_0x4ff95f(0xbe)]();if(/^WITH\b/[_0x4ff95f(0x95)](_0x7501b4)&&/\bSELECT\b/i[_0x4ff95f(0x95)](_0x51c042)){const _0x43abd2=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0x2a7762 of _0x43abd2){if(_0x2a7762['test'](_0x51c042))return{'type':_0x4ff95f(0xae),'isSelectOnly':![],'isDangerous':!![],'reason':'CTE\x20contains\x20data\x20modification\x20keywords'};}return{'type':'SELECT','isSelectOnly':!![],'isDangerous':![]};}if(/^SELECT\b/[_0x4ff95f(0x95)](_0x7501b4)){const _0x427904=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0xa3d6a0 of _0x427904){if(_0xa3d6a0[_0x4ff95f(0x95)](_0x51c042))return{'type':_0x4ff95f(0xae),'isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xa3)};}return{'type':'SELECT','isSelectOnly':!![],'isDangerous':![]};}if(/^INSERT\s+INTO\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':_0x4ff95f(0xa8),'isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xc0)};if(/^UPDATE\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':'UPDATE','isSelectOnly':![],'isDangerous':!![],'reason':'UPDATE\x20statement\x20modifies\x20data'};if(/^DELETE\s+FROM\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':'DELETE','isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xc2)};const _0x360209=[_0x4ff95f(0xaf),_0x4ff95f(0x93),_0x4ff95f(0xbd),_0x4ff95f(0xb4),_0x4ff95f(0xc4),_0x4ff95f(0xa1)];for(const _0x5d4aff of _0x360209){if(_0x7501b4[_0x4ff95f(0xc8)](_0x5d4aff))return{'type':_0x4ff95f(0x97),'isSelectOnly':![],'isDangerous':!![],'reason':_0x5d4aff+'\x20statement\x20modifies\x20schema'};}return{'type':'UNKNOWN','isSelectOnly':![],'isDangerous':![],'reason':'Unknown\x20SQL\x20type'};}export function validateIsSelectOnly(_0x28f228){const _0xfcc1f8=a25_0x2ad3,_0x1f871e=detectSqlType(_0x28f228);return{'valid':_0x1f871e['isSelectOnly'],'reason':_0x1f871e[_0xfcc1f8(0xd4)]?undefined:_0x1f871e[_0xfcc1f8(0x9f)]};}export function extractTableNames(_0x288cd6){const _0x338c12=a25_0x2ad3,_0x499892=parseSqlStructure(_0x288cd6);return _0x499892[_0x338c12(0xd2)];}export function extractColumnNames(_0x531d28){const _0x95dd6d=a25_0x2ad3,_0x3c10dd=parseSqlStructure(_0x531d28);return _0x3c10dd['columns']['map'](_0x29e5ed=>({'table':_0x29e5ed[_0x95dd6d(0xbc)],'column':_0x29e5ed['column']}));}export function extractParameters(_0x17a128){const _0x57f818=a25_0x2ad3,_0x32c142=parseSqlStructure(_0x17a128);return _0x32c142[_0x57f818(0xba)];}function a25_0x2ad3(_0x1c4c2a,_0x2f4830){_0x1c4c2a=_0x1c4c2a-0x8f;const _0x2ae91a=a25_0x2ae9();let _0x2ad3e0=_0x2ae91a[_0x1c4c2a];return _0x2ad3e0;}export function validateSqlContent(_0x99ac8f,_0x3a033c){const _0x51b743=a25_0x2ad3,_0x1a38bd=detectSqlType(_0x99ac8f),_0x436b9c=parseSqlStructure(_0x99ac8f),_0x259b3a=[];if(_0x3a033c){const _0x3f3179=new Map(_0x3a033c[_0x51b743(0xd2)][_0x51b743(0xdb)](_0x25d9bd=>[_0x25d9bd['tableName'][_0x51b743(0xd0)](),_0x25d9bd[_0x51b743(0xd8)][_0x51b743(0xdb)](_0x51eca6=>_0x51eca6[_0x51b743(0xd0)]())]));for(const _0x4a9349 of _0x436b9c[_0x51b743(0xd2)]){const _0x458c55=_0x4a9349[_0x51b743(0xd0)]();if(!_0x3f3179[_0x51b743(0xbf)](_0x458c55)){const _0x282860=Array[_0x51b743(0xd5)](_0x3f3179['keys']())['filter'](_0x5007fe=>_0x5007fe[_0x51b743(0xaa)](_0x458c55)||_0x458c55[_0x51b743(0xaa)](_0x5007fe));_0x259b3a[_0x51b743(0xad)](createStructuredSqlError({'type':_0x51b743(0xb6),'location':_0x4a9349,'message':'表\x20\x22'+_0x4a9349+_0x51b743(0x98),'severity':_0x51b743(0x99),'suggestions':_0x282860['length']>0x0?_0x282860:Array[_0x51b743(0xd5)](_0x3f3179[_0x51b743(0x8f)]())}));}}for(const _0x1bec14 of _0x436b9c[_0x51b743(0xd8)]){if(_0x1bec14[_0x51b743(0xbc)]){const _0x4a8324=_0x1bec14[_0x51b743(0xbc)]['toLowerCase'](),_0x1f4d24=_0x3f3179[_0x51b743(0xd7)](_0x4a8324);if(_0x1f4d24){const _0x1369ac=_0x1bec14[_0x51b743(0xc7)]['toLowerCase']();if(!_0x1f4d24[_0x51b743(0xaa)](_0x1369ac)&&!_0x1bec14[_0x51b743(0xc7)]['includes']('*')){const _0x3b6eb3=_0x1f4d24[_0x51b743(0xc5)](_0x4f46f4=>_0x4f46f4['includes'](_0x1369ac)||_0x1369ac[_0x51b743(0xaa)](_0x4f46f4));_0x259b3a['push'](createStructuredSqlError({'type':'COLUMN_NOT_FOUND','location':_0x1bec14[_0x51b743(0xbc)]+'.'+_0x1bec14[_0x51b743(0xc7)],'message':_0x51b743(0x9a)+_0x1bec14[_0x51b743(0xc7)]+_0x51b743(0x91)+_0x1bec14['table']+'\x22\x20中不存在','severity':_0x51b743(0x99),'suggestions':_0x3b6eb3[_0x51b743(0xd3)]>0x0?_0x3b6eb3:_0x1f4d24[_0x51b743(0xa7)](0x0,0xa)}));}}}}}return{'valid':_0x259b3a[_0x51b743(0xd3)]===0x0,'isSelectOnly':_0x1a38bd['isSelectOnly'],'parsedStructure':_0x436b9c,'errors':_0x259b3a[_0x51b743(0xd3)]>0x0?_0x259b3a:undefined};}export function generateSqlSummary(_0x49ec4d){const _0x198490=a25_0x2ad3,_0x25b4e8=parseSqlStructure(_0x49ec4d),_0x1ffa6d=[];return _0x25b4e8[_0x198490(0xd2)]['length']>0x0&&_0x1ffa6d[_0x198490(0xad)]('Tables:\x20'+_0x25b4e8[_0x198490(0xd2)][_0x198490(0x9b)](',\x20')),_0x25b4e8[_0x198490(0xba)][_0x198490(0xd3)]>0x0&&_0x1ffa6d[_0x198490(0xad)](_0x198490(0xcf)+_0x25b4e8[_0x198490(0xba)]['map'](_0x179d8d=>_0x179d8d[_0x198490(0x9c)])[_0x198490(0x9b)](',\x20')),_0x25b4e8['joins']&&_0x25b4e8[_0x198490(0xd6)][_0x198490(0xd3)]>0x0&&_0x1ffa6d[_0x198490(0xad)](_0x198490(0xb9)+_0x25b4e8['joins'][_0x198490(0xd3)]),_0x1ffa6d['length']>0x0?_0x1ffa6d[_0x198490(0x9b)](_0x198490(0xc1)):_0x198490(0xa4);}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/dataset-mcp-server",
3
- "version": "1.3.2-beta.2",
3
+ "version": "1.3.2-beta.5",
4
4
  "description": "MCP server for Lovrabet Dataset access",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- function a19_0x4e2b(){const _0x3af931=['sqlContent\x20is\x20required\x20and\x20cannot\x20be\x20empty.','sqlContent','1109090hxoMYb','name','success','SQL\x20content\x20cannot\x20be\x20empty','24hUZWVe','SQL\x20validation\x20failed:\x20','test','trim','toUpperCase','2346777GwkqcY','GRANT','sqlId','SELECT','UPDATE\x5cs+\x5cw+\x5cs+SET','4135290CIpRZT','EXEC','361RtzmRf','saveUserCustomSql','.\x20Only\x20SELECT\x20queries\x20are\x20allowed.','5084PKeZRW','startsWith','[saveCustomSql]\x20Verification\x20query\x20failed:','verified','2319kGssIu','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','2036364LNNiwi','sqlName','valid','Only\x20SELECT\x20queries\x20are\x20allowed.\x20The\x20SQL\x20must\x20start\x20with\x20SELECT\x20(after\x20any\x20comments).','createTime','Failed\x20to\x20save\x20custom\x20SQL','8674Oelhss','find','data','sql','split','warn','dbId\x20is\x20required.\x20Get\x20it\x20from\x20get_dataset_detail\x20->\x20basic.database.dbId','sqlCode','INSERT\x5cs+INTO','TRUNCATE','replace','DROP\x5cs+(TABLE|INDEX|DATABASE)','REVOKE','2078703vfqdfA','28BXMPyg','errorMsg'];a19_0x4e2b=function(){return _0x3af931;};return a19_0x4e2b();}(function(_0x4f33ab,_0x5a5588){const _0x1b617a=a19_0x470b,_0x698ca1=_0x4f33ab();while(!![]){try{const _0x5700fc=-parseInt(_0x1b617a(0xd0))/0x1*(-parseInt(_0x1b617a(0xae))/0x2)+parseInt(_0x1b617a(0xd7))/0x3*(parseInt(_0x1b617a(0xd3))/0x4)+-parseInt(_0x1b617a(0xce))/0x5+-parseInt(_0x1b617a(0xd9))/0x6*(parseInt(_0x1b617a(0xbc))/0x7)+parseInt(_0x1b617a(0xc4))/0x8*(parseInt(_0x1b617a(0xc9))/0x9)+-parseInt(_0x1b617a(0xc0))/0xa+-parseInt(_0x1b617a(0xbb))/0xb;if(_0x5700fc===_0x5a5588)break;else _0x698ca1['push'](_0x698ca1['shift']());}catch(_0x393f88){_0x698ca1['push'](_0x698ca1['shift']());}}}(a19_0x4e2b,0xce83b));import{DevApiClient}from'../api/dev-api-client.js';import{getEnvAppCode,getEnvironment,shouldLog}from'../config/env.js';function validateSelectSql(_0x25ecb7){const _0x252b73=a19_0x470b;if(!_0x25ecb7||typeof _0x25ecb7!=='string')return{'valid':![],'reason':_0x252b73(0xc3)};const _0x5623e5=_0x25ecb7[_0x252b73(0xb8)](/#\{[^}]*\}/g,'?')['replace'](/\$\{[^}]*\}/g,'?')[_0x252b73(0xb8)](/@[^(\s]+(\([^)]*\))?/g,''),_0x39b428=_0x5623e5[_0x252b73(0xc7)](),_0x536835=_0x39b428[_0x252b73(0xb2)]('\x0a');let _0x4a63d1='';for(const _0x1f3ccd of _0x536835){const _0x22db23=_0x1f3ccd[_0x252b73(0xc7)]();if(!_0x22db23||_0x22db23['startsWith']('--')||_0x22db23[_0x252b73(0xd4)]('/*'))continue;_0x4a63d1=_0x22db23;break;}if(!_0x4a63d1[_0x252b73(0xc8)]()[_0x252b73(0xd4)](_0x252b73(0xcc)))return{'valid':![],'reason':_0x252b73(0xab)};const _0x133424=[_0x252b73(0xb6),_0x252b73(0xcd),'DELETE\x5cs+FROM',_0x252b73(0xb9),'ALTER\x5cs+(TABLE|DATABASE)','CREATE\x5cs+(TABLE|INDEX|DATABASE|VIEW)',_0x252b73(0xb7),_0x252b73(0xca),_0x252b73(0xba),_0x252b73(0xcf),'EXECUTE'],_0x1de708=_0x39b428[_0x252b73(0xc8)]();for(const _0x184ffa of _0x133424){const _0x425d51=new RegExp(_0x184ffa,'i');if(_0x425d51[_0x252b73(0xc6)](_0x1de708))return{'valid':![],'reason':'Forbidden\x20keyword\x20detected:\x20'+_0x184ffa['replace']('\x5c\x5cs+','\x20')+_0x252b73(0xd2)};}return{'valid':!![]};}function a19_0x470b(_0x166ec7,_0x686672){_0x166ec7=_0x166ec7-0xaa;const _0x4e2b20=a19_0x4e2b();let _0x470b84=_0x4e2b20[_0x166ec7];return _0x470b84;}export async function saveCustomSql(_0x203721){const _0x33e7b2=a19_0x470b,{appCode:appCode=getEnvAppCode(),cookie:_0x50c3c1,sqlName:_0xc5820d,dbId:_0x328570,sqlContent:_0x5b102c,verifyAfterSave:verifyAfterSave=!![]}=_0x203721;if(!appCode)throw new Error(_0x33e7b2(0xd8));if(!_0xc5820d||_0xc5820d['trim']()==='')throw new Error('sqlName\x20is\x20required\x20and\x20cannot\x20be\x20empty.');if(!_0x328570)throw new Error(_0x33e7b2(0xb4));if(!_0x5b102c||_0x5b102c[_0x33e7b2(0xc7)]()==='')throw new Error(_0x33e7b2(0xbe));const _0x8ec2cd=validateSelectSql(_0x5b102c);if(!_0x8ec2cd[_0x33e7b2(0xaa)])throw new Error(_0x33e7b2(0xc5)+_0x8ec2cd['reason']);const _0x25400e=new DevApiClient({'appCode':appCode,'cookie':_0x50c3c1}),_0x5d22ee=getEnvironment(),_0x1f9381=_0xc5820d['trim'](),_0x28d5cc=await _0x25400e[_0x33e7b2(0xd1)]({'sqlName':_0x1f9381,'dbId':_0x328570,'sqlContent':_0x5b102c['trim']()});if(!_0x28d5cc[_0x33e7b2(0xc2)])return{'success':![],'message':_0x28d5cc['message']||_0x28d5cc[_0x33e7b2(0xbd)]||_0x33e7b2(0xad)};const _0x4d08c2={'success':!![],'message':'Custom\x20SQL\x20saved\x20successfully','data':_0x28d5cc[_0x33e7b2(0xb0)]};if(verifyAfterSave)try{const _0x118249=await _0x25400e['getCustomSqlList']({'pageSize':0xa,'currentPage':0x1,'sqlName':_0x1f9381}),_0x5c1d74=_0x118249['data']?.['tableData']||[],_0x458fa1=_0x5c1d74[_0x33e7b2(0xaf)](_0xc17a55=>_0xc17a55[_0x33e7b2(0xda)]===_0x1f9381||_0xc17a55[_0x33e7b2(0xc1)]===_0x1f9381);_0x458fa1?_0x4d08c2[_0x33e7b2(0xd6)]={'found':!![],'sqlInfo':{'sqlCode':_0x458fa1[_0x33e7b2(0xb5)]||appCode+'-'+(_0x458fa1[_0x33e7b2(0xcb)]||_0x458fa1['id']),'sqlId':_0x458fa1[_0x33e7b2(0xcb)]||_0x458fa1['id'],'name':_0x458fa1[_0x33e7b2(0xda)]||_0x458fa1[_0x33e7b2(0xc1)],'sqlContent':_0x458fa1[_0x33e7b2(0xbf)]||_0x458fa1[_0x33e7b2(0xb1)],'createdTime':_0x458fa1['createdTime']||_0x458fa1[_0x33e7b2(0xac)]}}:_0x4d08c2[_0x33e7b2(0xd6)]={'found':![]};}catch(_0x336173){shouldLog()&&console[_0x33e7b2(0xb3)](_0x33e7b2(0xd5),_0x336173),_0x4d08c2['verified']={'found':![]};}return _0x4d08c2;}