@funny-booth/agent-core 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/feedback.js +1 -0
- package/dist/index.js +1 -1
- package/dist/launcher.js +1 -1
- package/dist/mcpPackages.js +1 -1
- package/dist/vault.js +349 -59
- package/package.json +2 -1
package/dist/feedback.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';const _0xab4e69=_0x4822;(function(_0x2060b2,_0x4c0be2){const _0x36133c=_0x4822,_0x4e608a=_0x2060b2();while(!![]){try{const _0x4984d8=parseInt(_0x36133c(0x1df))/0x1+parseInt(_0x36133c(0x20d))/0x2*(parseInt(_0x36133c(0x1fa))/0x3)+-parseInt(_0x36133c(0x1e6))/0x4+-parseInt(_0x36133c(0x203))/0x5+parseInt(_0x36133c(0x208))/0x6+-parseInt(_0x36133c(0x1e8))/0x7*(-parseInt(_0x36133c(0x1e5))/0x8)+-parseInt(_0x36133c(0x1f9))/0x9*(parseInt(_0x36133c(0x1dd))/0xa);if(_0x4984d8===_0x4c0be2)break;else _0x4e608a['push'](_0x4e608a['shift']());}catch(_0x2005ff){_0x4e608a['push'](_0x4e608a['shift']());}}}(_0x2f9f,0x79286));function _0x2f9f(){const _0x31bd11=['C3rHDhvZ','CMvHzezPBgvtEw5J','D3jPDgu','mEs7TUobQZhJGAtJGA7OQBhPOyZJGPlJGihKVzxJGyZOTBFJGy3JGz/JGyVJG7VJGANJGyBJGARJGApJGABJGBVJGzFJGytJGyVJGyZKV53LROJMI4xLVzpJGAVKVj3JGO/JGOVJGOJJGyBJGAVMM7JJGy/JGii','mJmYnZi4uejiBeXL','mtmWnde3mKDNzgfjDq','ioocKUwrVoocK+obPYbivfrqia','mtrMt0zVyNq','AgfZ','C2vUzf9MzwvKyMfJAYdJGAFKV53LROJMI4xLVzpJGAVPGihJGApJGABJGy/JGAdJGzxJGytVViJMOyJKU7BJGA7KUk3OUQVJGOtNP5JLR4BJGA/MM7JJGyVJGARJGytVViNJGii','ioobJoodNEodVoocV+odQYa','C2HVDwXKqxv0B1jLCg9YDa','D21SsMS','AM9PBG','Cgf0Aa','yxbWBgLJyxrPB24VANnVBG','ywrK','DxrMltG','44oe44o844oR576K77YiywDLBNqTy29YzEodU+wqJoAISu1duoodU+AjI+MGHUABUo+8IEobRUs4JEwfT+wqIoocHoAuUEwwHoEcUEocKUs/NEwUIoAlHEw9K+obQ+MaGEocI+oaGG','x19LC01VzhvSzq','C3rKzxjY','4Oc7ios9NoALREobRUwmUUwiH+ocIUobP+AmR+ocIUI/LoocIUoaGEobK+obRUAjI+MGHUABUoodU+odHoodVoodQ+odU+wqJoAISu1duoobRUs4JEwfT+wqIoocHoAuUEwwHoEcUEobQ+AWL+obPEobHoobPUobHoobN+ocIEoaGq','ywDLBNqTy29YzsdJGA7JG4tJG7ZJG6SG','zgvMAw5LuhjVCgvYDhK','nZjrwhHJrgy','nZu3mJnOu3bhweG','ioocKUwpL+obKEwpLUobO+obN++8IoIhQUwlLEIOMoMmSU+8IEoaGG','qMvHCMvYia','BwvZC2fNzq','zxjYB3i','DMvYC2LVBG','Cg9ZDezLzwrIywnR','6ycb44kl44gU44gV44cb44oe44o844oR576K44gD44gU44kc44gU44g444gU5OYh5Pgy44gG44gr44cc44oM44o844k244o844gU5Qgi5lU244gU5lIT6lQR44o76AgN5A6I5Oof5AcX44o756Ey5A+g44gU5ycK44gV5PU444gl44gQ44ge44cc','Ee1lsNK','mZK1mJu1rMTSDe1r','u0vorf9gruveqKfds19ervnduKLqveLptG','ywDLBNqTy29YztO','C3rYAw5NAwz5','6iEQ5yUv6kIy6yYY44gU6ycb5l+H44gR5AsX5Pwx44gx44g+44gx44gFoIbivfrqia','mJyXntmYmNjhqwLqtq','s05pv0XfreDfx0zpt1rfuG','l2fWAs9MzwvKyMfJAW','44oM44o844k244o844gR6Ac844g+44km44gM44ge44gQ44gp44gM44kc44cb5Rcx44gL44ge44gF44kj5l2C5QwT44gU5yY65yIh44kk44gN6ycb44gJ44gM44ki44ge44cc5Qgi5lU244gU5lIT6lQR44o76AgN5A6I5Oof5AcX44o756Ey5A+g44gU5ycK44gV5PU444gl44gQ44ge44cc','A1HPzK0','nZb3r0rrrNi','y2XPzw50vMvYC2LVBG','yxv0B1jLCg9YDezHAwX1CMu','nJq4mJiWue14BNDy','rKvfrejbq0TFsu5tvfjvq1rjt05t','ndi0mJHPCej2Ahu','5l2C5QwT5lIT44gR5QYH44gU44gP44km44gl44gR5Rcx44gL44ge44gF44kj44cb5l2C5QwT44gU5yY65yIh44kk44gNihnLBMrFzMvLzgjHy2SG44ks5zg844kt44gN5l+D5A6i5OUf5B2t44gR6ycb44kl44gt44gO77Yi44oM44o844k244o844gR6Ac844g+44km44gM44ge44gQ44gp44gM44kc6ycb44kl77YjoGO'];_0x2f9f=function(){return _0x31bd11;};return _0x2f9f();}Object[_0xab4e69(0x1f8)](exports,_0xab4e69(0x1f4),{'value':!![]}),exports['SEND_FEEDBACK_DESCRIPTION']=exports['KNOWLEDGE_FOOTER']=exports[_0xab4e69(0x1de)]=void 0x0,exports[_0xab4e69(0x1ec)]=shouldAutoReport,exports[_0xab4e69(0x20e)]=clientVersion,exports[_0xab4e69(0x200)]=postFeedback,exports[_0xab4e69(0x1dc)]=autoReportFailure;const fs_1=require('fs'),path_1=require(_0xab4e69(0x1ef));exports[_0xab4e69(0x1de)]='このセッションのツール群(agent-core\x20のツール、同梱MCP、load_knowledge\x20で読む手順書)は継続的に改修されている。'+_0xab4e69(0x1e0)+'-\x20ツールや同梱MCPの不具合(エラー、誤動作、説明と違う挙動)\x0a'+'-\x20手順書の誤り・古い記述・足りない手順\x0a'+'-\x20回避策を自分で作る必要があった不便、あれば作業が速く確実になる機能\x0a'+_0xab4e69(0x201)+_0xab4e69(0x1e4),exports[_0xab4e69(0x209)]='\x0a\x0a---\x0a'+_0xab4e69(0x1f6)+_0xab4e69(0x1ea),exports[_0xab4e69(0x204)]=_0xab4e69(0x1f3)+_0xab4e69(0x20b);function shouldAutoReport(_0x30db15){const _0x40b644=_0xab4e69,_0x4f0f90={'wmlJk':function(_0xcee68,_0x2aaabd){return _0xcee68>=_0x2aaabd;},'kXifM':function(_0x3f210a,_0x22a6b9){return _0x3f210a!==_0x22a6b9;}};return _0x4f0f90[_0x40b644(0x1ed)](_0x30db15,0x190)&&_0x30db15!==0x191&&_0x4f0f90[_0x40b644(0x20c)](_0x30db15,0x193);}function clientVersion(){const _0x5c2b82=_0xab4e69;try{return JSON['parse']((0x0,fs_1[_0x5c2b82(0x1e2)])((0x0,path_1[_0x5c2b82(0x1ee)])(__dirname,'..','package.json'),_0x5c2b82(0x1f2)))[_0x5c2b82(0x1ff)];}catch{return'unknown';}}async function postFeedback(_0x13a8b1,_0x33516b,_0x1e4250){const _0x39a19f=_0xab4e69,_0x99ed82={'SQVnV':function(_0xcd8e35,_0x5bef2f,_0x1906cb){return _0xcd8e35(_0x5bef2f,_0x1906cb);},'xMKJy':_0x39a19f(0x1f0)};return _0x99ed82['SQVnV'](fetch,_0x13a8b1+_0x39a19f(0x20a),{'method':'POST','headers':{'Authorization':_0x39a19f(0x1fc)+_0x33516b,'Content-Type':_0x99ed82[_0x39a19f(0x202)]},'body':JSON[_0x39a19f(0x206)](_0x1e4250)});}const reported=new Set();function _0x4822(_0x41d88e,_0x297de3){_0x41d88e=_0x41d88e-0x1dc;const _0x2f9ff2=_0x2f9f();let _0x482222=_0x2f9ff2[_0x41d88e];if(_0x4822['MqWQjk']===undefined){var _0x37451c=function(_0xad59c4){const _0x5e0e64='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b0007='',_0x5caa16='';for(let _0x19cfe0=0x0,_0x11ce71,_0x43accc,_0x3fe471=0x0;_0x43accc=_0xad59c4['charAt'](_0x3fe471++);~_0x43accc&&(_0x11ce71=_0x19cfe0%0x4?_0x11ce71*0x40+_0x43accc:_0x43accc,_0x19cfe0++%0x4)?_0x3b0007+=String['fromCharCode'](0xff&_0x11ce71>>(-0x2*_0x19cfe0&0x6)):0x0){_0x43accc=_0x5e0e64['indexOf'](_0x43accc);}for(let _0x578739=0x0,_0x3a23b2=_0x3b0007['length'];_0x578739<_0x3a23b2;_0x578739++){_0x5caa16+='%'+('00'+_0x3b0007['charCodeAt'](_0x578739)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5caa16);};_0x4822['Hydsuz']=_0x37451c,_0x4822['qOgYxT']={},_0x4822['MqWQjk']=!![];}const _0x1956f2=_0x2f9ff2[0x0],_0x373227=_0x41d88e+_0x1956f2,_0x2f43d7=_0x4822['qOgYxT'][_0x373227];return!_0x2f43d7?(_0x482222=_0x4822['Hydsuz'](_0x482222),_0x4822['qOgYxT'][_0x373227]=_0x482222):_0x482222=_0x2f43d7,_0x482222;}async function autoReportFailure(_0x28c945,_0x4f00fa,_0x20bcaa,_0x308a51,_0x13a101,_0xec210c){const _0x53a6ad=_0xab4e69,_0x581c49={'JCIgX':function(_0x2ad465){return _0x2ad465();}};if(!shouldAutoReport(_0x13a101))return;const _0x4bf4b4=_0x308a51+'\x20'+_0x13a101+'\x20'+_0xec210c;if(reported[_0x53a6ad(0x1e9)](_0x4bf4b4))return;reported[_0x53a6ad(0x1f1)](_0x4bf4b4);try{const _0x42e55b=await postFeedback(_0x28c945,_0x4f00fa,{'tool_name':_0x20bcaa,'kind':_0x53a6ad(0x1fe),'target':_0x53a6ad(0x205)+_0x308a51,'title':_0x308a51+'\x20がポータルで\x20HTTP\x20'+_0x13a101,'detail':_0x53a6ad(0x1f7)+_0x308a51+_0x53a6ad(0x1eb)+_0xec210c+_0x53a6ad(0x1e7)+_0x13a101+_0x53a6ad(0x1fb),'client_version':_0x581c49['JCIgX'](clientVersion)});if(!_0x42e55b['ok'])process['stderr']['write'](_0x53a6ad(0x207)+_0x42e55b[_0x53a6ad(0x1e1)]+'\x0a');}catch(_0x42eb3c){process[_0x53a6ad(0x1f5)][_0x53a6ad(0x1e3)]('自動記録の送信に失敗しました:\x20'+_0x42eb3c[_0x53a6ad(0x1fd)]+'\x0a');}}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';const _0x1fa408=_0x415c;(function(_0x252b9d,_0x3065e0){const _0x18e36a=_0x415c,_0x254959=_0x252b9d();while(!![]){try{const _0x4d7958=parseInt(_0x18e36a(0x1b6))/0x1+-parseInt(_0x18e36a(0x20c))/0x2*(parseInt(_0x18e36a(0x1cb))/0x3)+parseInt(_0x18e36a(0x1d0))/0x4*(parseInt(_0x18e36a(0x21d))/0x5)+parseInt(_0x18e36a(0x1b5))/0x6*(-parseInt(_0x18e36a(0x1f8))/0x7)+parseInt(_0x18e36a(0x1e6))/0x8+-parseInt(_0x18e36a(0x1f0))/0x9*(parseInt(_0x18e36a(0x220))/0xa)+-parseInt(_0x18e36a(0x1d9))/0xb*(-parseInt(_0x18e36a(0x1ed))/0xc);if(_0x4d7958===_0x3065e0)break;else _0x254959['push'](_0x254959['shift']());}catch(_0x508568){_0x254959['push'](_0x254959['shift']());}}}(_0xce3f,0xb9183));Object[_0x1fa408(0x1ba)](exports,_0x1fa408(0x1af),{'value':!![]});const mcp_js_1=require(_0x1fa408(0x1f3)),stdio_js_1=require(_0x1fa408(0x1c9)),zod_1=require(_0x1fa408(0x219)),child_process_1=require(_0x1fa408(0x1bc)),fs_1=require('fs'),path_1=require(_0x1fa408(0x1e2)),vault_1=require(_0x1fa408(0x1b8)),prompt_1=require('./prompt'),rawArgs=process['argv']['slice'](0x2),isSecretCommand=rawArgs[0x0]==='secret';function resolveToolName(){const _0x10570b=_0x1fa408,_0x6d506e={'EZLjA':_0x10570b(0x21c)};if(process.env.TOOL_NAME)return process.env.TOOL_NAME;try{const _0x38150a=JSON['parse']((0x0,fs_1['readFileSync'])((0x0,path_1[_0x10570b(0x217)])(__dirname,'..',_0x10570b(0x20b)),_0x10570b(0x1ce)));return _0x38150a[_0x10570b(0x1f2)]||_0x6d506e['EZLjA'];}catch{return _0x6d506e[_0x10570b(0x1ae)];}}async function runSecretCommand(_0xc6b313){const _0x2189c2=_0x1fa408,_0xc7f846={'wrWVu':function(_0x586edf,_0x35cb03){return _0x586edf===_0x35cb03;},'ZxHUg':_0x2189c2(0x1ad),'kdpYq':_0x2189c2(0x201),'GTSTE':'secrets.enc','rLBYp':function(_0x67923f,_0x5f39bd){return _0x67923f===_0x5f39bd;},'lzUbJ':_0x2189c2(0x1f4)},_0x40488d=resolveToolName(),_0x33f48e=_0xc6b313[0x0];if(_0x33f48e==='list'){const _0x527fad=(0x0,vault_1['listSecretNames'])(_0x40488d);!_0x527fad['length']?process[_0x2189c2(0x1fa)][_0x2189c2(0x1fe)]('('+_0x40488d+_0x2189c2(0x1f1)):process['stdout'][_0x2189c2(0x1fe)]('('+_0x40488d+_0x2189c2(0x210)+_0x527fad[_0x2189c2(0x1c3)](_0x13d325=>'\x20\x20-\x20'+_0x13d325)[_0x2189c2(0x217)]('\x0a')+'\x0a');return;}if(_0xc7f846[_0x2189c2(0x1da)](_0x33f48e,_0xc7f846[_0x2189c2(0x1d3)])){const _0xe5a3c8=_0xc6b313[0x1];!_0xe5a3c8&&(process[_0x2189c2(0x1c4)][_0x2189c2(0x1fe)](_0xc7f846[_0x2189c2(0x221)]),process[_0x2189c2(0x1ca)](0x1));const _0x5a304d=process[_0x2189c2(0x1bb)][_0x2189c2(0x205)]?await(0x0,prompt_1[_0x2189c2(0x1dc)])(_0xe5a3c8+'\x20の値を入力(表示されません):\x20'):(0x0,fs_1[_0x2189c2(0x1fb)])(0x0,_0x2189c2(0x1ce))[_0x2189c2(0x1b4)]();!_0x5a304d&&(process['stderr'][_0x2189c2(0x1fe)]('値が空です。中止しました。\x0a'),process[_0x2189c2(0x1ca)](0x1));(0x0,vault_1[_0x2189c2(0x1db)])(_0x40488d,_0xe5a3c8,_0x5a304d),process[_0x2189c2(0x1fa)][_0x2189c2(0x1fe)]('✅\x20('+_0x40488d+_0x2189c2(0x1e9)+_0xe5a3c8+_0x2189c2(0x1b0)+(0x0,path_1[_0x2189c2(0x217)])((0x0,vault_1[_0x2189c2(0x203)])(_0x40488d),_0xc7f846['GTSTE'])+_0x2189c2(0x1ac));return;}if(_0xc7f846['wrWVu'](_0x33f48e,'rm')||_0xc7f846[_0x2189c2(0x1c5)](_0x33f48e,_0x2189c2(0x1b1))){const _0xbf9c4e=_0xc6b313[0x1];!_0xbf9c4e&&(process[_0x2189c2(0x1c4)][_0x2189c2(0x1fe)]('使い方:\x20agent-core\x20secret\x20rm\x20<NAME>\x0a'),process[_0x2189c2(0x1ca)](0x1));const _0x30eb9d=(0x0,vault_1['deleteSecret'])(_0x40488d,_0xbf9c4e);process['stdout']['write'](_0x30eb9d?'✅\x20'+_0xbf9c4e+_0x2189c2(0x222):'('+_0xbf9c4e+_0x2189c2(0x1f6));return;}process[_0x2189c2(0x1c4)][_0x2189c2(0x1fe)](_0xc7f846[_0x2189c2(0x1fd)]),process['exit'](0x1);}function _0xce3f(){const _0x53664f=['r2fQtfe','BwfW','C3rKzxjY','CKXcwxa','4PYfioocT+odVoocR+odRoodG+odIca','r2fJyKq','C2XPy2u','qg1VzgvSy29UDgv4DhbYB3rVy29Sl3nKAY9Zzxj2zxiVC3rKAw8UANm','zxHPDa','ndaYmduZn0HqwLj0ra','rMf0ywW6ia','5l+D566H5lIT44gU44k344o844kV44oS44od44oioGO','DxrMltG','CunIzxy','otK5nZCYswPXruLg','rMHIyK0','yMLUza','wNHivwC','6kQn6kI85Oof5AcX44gm44gc44kk44g+44gB44kt44cc6lw35yUv44ox44oT44kW44oP44oG77YiBgf1BMnOzxlVViNJGyVJGONOTBFLI5xJGzFJGABJGy/JGAdJGzxJGytJGiik','l2fWAs9HDxrOl2nOyw5Nzs1WyxnZD29Yza','44kT44o844oV44o844ojicC','C3rVCMvFC2vJCMv0','ioobRUocPoodS+ocUEodIoodVoodQ+obJowUJos6HUobL+obVUobL+obN+oaGKnSyxvKzsbdB2rL44ks5yAn6lw35yUv44gx44gM44gp44gG44gv44ge44cccGRLRP/OOyZJGRpJG57JG7pJG4K6ia','mtfwB1rzA0m','D3jxvNu','C2v0u2vJCMv0','CxvLC3rPB25iAwrKzw4','B3b0Aw9UywW','44k344o844kV44oS44od44oi77Yi6yEr5BQR77Yj44gU6kQT44g/5PU444gn44gV44gt44gU5lIa6kAN44gR5yE644g+44gB44kt44cc','qMvHCMvYia','jYdJGAVLR77LV5ZJGzNJGOTlBM93BgvKz2xJGyZOPOVJGAtJGyVJGORJGB7JGzVJGPpJGAFJGzFJGz/JGilNRQhNKiBOGixJGAVJGyRLLy/JGytLKiJJGO/JGzVJGy/JGAdJGzxJGytJGii','BwLU','Cgf0Aa','55kW5Akd5Asj5PwW77Yi5l6loIb7r01bsuXFve9lru46icD4EhGNFE+8Iq','ue9tva','twnWu2vYDMvY','mteZmtq5mdrQBvn4wgO','ioocKUodREodVoocQ+odQ+AAL+wpT+MhKEw6Q+obQ+s/NEwTMoobL+obVUobL+obN++8IowaPoobR+obK+obRUodNUocT+odS+obI+ocIEwhUUobVUobM+ocK++8IEoaGG','44k344o844kV44oS44od44oi5zcn77Yi5l6loIbpuevoquLFqvbjx0TfwE+8Iq','ksdJGRFJG7ZJGQ/JG6ZJG4pJG4GG','44kK44oZ44k544oi44o844oR5AsX5PwxoGO','Aw5ZDgfSBf9JB21Tyw5K','wwLMEMi','mtq5mtGZodH4uvvdrg4','CMvHzfnLy3jLDhm','uu5Owe0','oxLWB1Dhza','ksdKV53NRQhKUk3JGA7JGRFJG7ZJGQ/JG6ZJG4pJG4JJGA/JGylJGORJGB7JGzVJGPpJGiik','Dg9VBe5HBwu','qg1VzgvSy29UDgv4DhbYB3rVy29Sl3nKAY9Zzxj2zxiVBwnWlMPZ','5l2/44ge5PA5oIbHz2vUDc1JB3jLihnLy3jLDca8C2v0FgXPC3r8CM0+ifToqu1fxqO','BgLZDf9Ty3bZ','ioobR+s/NEEUOEobLEocJoobPUobHoobVUobM+ocKYKk','CNfPvg4','ndjIzhvYz1i','Bg9Hzf9RBM93BgvKz2u','C3rKB3v0','CMvHzezPBgvtEw5J','C3rHDhvZ','BhPvyKO','D3jPDgu','5y+w5B6x44gz44kl44k344o844kV44oS44od44oi5zcn77Yi5l6loIbpuevoquLFqvbjx0TfwE+8Iq','yMPYwNC','5l2/44ge5PA5oIbHz2vUDc1JB3jLihnLy3jLDcbZzxqGpe5btuu+cG','C3rYAw5NAwz5','y29UzMLNrgLY','44or44k544oV44o844oj44ks5Asj5PU044gx44g+44gx44gF','AxnuvfK','BgLZDf9ZzwnYzxrZ','54++5zYO44gU44or44k544oV44o844oj','zxjYB3i','DuTHu1i','Dgv4Da','Bgf1BMnOzxiUy29UzMLNlMPZB24','mKjVsKPstG','s25VD2XLzgDL44kT44o844oV44o844oj77Yi5l6loIbau2fSzxncB3rF6kAb5lU25A6A576P77Yj','l2fWAs9Ty3bZ','C3rYAw5N','ksdKV53NRQhKUk3JGA7JGRFJG7ZJGQ/JG6ZJG4pJG4G6cG','ywDLBNqTy29Yzq','6kQn6kI844kO44oP44o8oIdJGRVJG4pJG4JJGQlJG4pJG5FJGyZLROZKUOBJGzFJGABJGytJGB7JGzVJGPpJGilNRQhNKiBOGixJGAVPGkpNTAhJGzFJGABJGy/JGAdJGzxJGytJGii','zgvZy3jPyMu','Aw5ZDgfSBf9Ty3a','y2f0y2G','zgvSzxrLu2vJCMv0','AM9PBG','5PAW44gx44ge44or44k544oV44o844oj77YiooAwH+wTL+s7PEs4IU+8Iq','EM9K','zLL6r0K','5PYa5yID44gl44kj5l2/44gi44g+44gz77Yi44kK44oZ44k544oi44o844oR5lIn6kAb77Yj44cc','u2fSzxncB3q','mtvcy1Lqu1e','mc4XlJa','vgnbz28','ote2mJCZmhzoyKjcqW','A2rWwxe','ioocKUwjIUMzPoobL+obVUobL+obN+oaGGO','ioobR+MhKEw6Q+obQ+obGUocIUobVUobM+ocK+oaGNn0B3jLx3nLy3jLDcdJGAFKV53LRzJJGAFJGy3JGB7JGzNJGii','D01yqLC','l2fWAs9Ty3bZl2LUC3rHBgW','yxbWBgLJyxrPB24VANnVBG','4Oc7ioobK+ocJoobR+I/VEwkOoocPoodS+ocUEodIoodVoodQ+obP+obJEocIYbnq1aG44gU5lIa6kAN44gN44gz44cccG','u3rKAw9tzxj2zxjuCMfUC3bVCNq','ANnVBG','77Yj44cccG','C2v0','rvPmAKe','x19LC01VzhvSzq','ioocKUAAL+wpT+wmLUs/NEwTMoobL+obVUobL+obN++8Ia','zgvSzxrL','Dg9VBa','BgvUz3rO','DhjPBq','nJm3mduWr0PtzfHq','mJq0mJu4BKfvy2nM','EgzkEgq','lI92yxvSDa','44kK44oZ44k544oi44o844oR44kZ44oE44oZ44oj44ks5y+w5B6x44gN44gn44g+44gB44kt44gN44gx44gF','zgvMAw5LuhjVCgvYDhK','C3rKAw4','y2HPBgrFChjVy2vZCW','ioocKUwjIUMzPoobL+obVUobL+obN+oaGG','ioobR+IMI+obPoobI+ocIUobVUobM+ocK+oaGG','y29UDgvUDa','DfbNuxy','zxHLyW'];_0xce3f=function(){return _0x53664f;};return _0xce3f();}let PORTAL_URL='',JWT='';const AUTH_ERROR={'content':[{'type':'text','text':_0x1fa408(0x212)}]},server=new mcp_js_1[(_0x1fa408(0x1e5))]({'name':_0x1fa408(0x211),'version':_0x1fa408(0x21e)}),tool=server[_0x1fa408(0x1b2)][_0x1fa408(0x1d2)](server);tool(_0x1fa408(0x1f9),{'keyword':zod_1['z']['string']()[_0x1fa408(0x213)](_0x1fa408(0x20d))},async({keyword:_0x5768d8})=>{const _0x3ac483=_0x1fa408,_0x52e8bf={'FBBcv':function(_0x47696f,_0xfabac6){return _0x47696f(_0xfabac6);},'TcAgo':_0x3ac483(0x20a)};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0x397d1e=await fetch(PORTAL_URL+'/api/knowledge?keyword='+_0x52e8bf['FBBcv'](encodeURIComponent,_0x5768d8),{'headers':{'Authorization':_0x3ac483(0x1df)+JWT}});if(!_0x397d1e['ok'])return{'content':[{'type':_0x52e8bf[_0x3ac483(0x21f)],'text':'APIエラー:\x20'+_0x397d1e[_0x3ac483(0x1fc)]}]};const _0x4c4078=await _0x397d1e[_0x3ac483(0x1ab)]();if(_0x4c4078[_0x3ac483(0x208)]||!_0x4c4078[_0x3ac483(0x1bf)])return{'content':[{'type':_0x3ac483(0x20a),'text':_0x3ac483(0x1d6)+_0x5768d8+_0x3ac483(0x1e0)}]};return{'content':[{'type':_0x52e8bf[_0x3ac483(0x21f)],'text':_0x4c4078[_0x3ac483(0x1bf)]}]};}),tool(_0x1fa408(0x1f5),{},async()=>{const _0x2e25b5=_0x1fa408,_0x571ac0={'bjrZw':function(_0x158657,_0x5e04f6){return _0x158657||_0x5e04f6;},'uKaSR':_0x2e25b5(0x20a),'rqiTn':_0x2e25b5(0x1a9),'fYzGI':_0x2e25b5(0x1de),'BLedl':'store_secret\x20/\x20get_secret\x20/\x20list_secrets\x20/\x20delete_secret\x20が','wMXBW':_0x2e25b5(0x21b)};if(_0x571ac0[_0x2e25b5(0x200)](!JWT,!PORTAL_URL))return AUTH_ERROR;const _0x2ed70d=await fetch(PORTAL_URL+_0x2e25b5(0x20e),{'headers':{'Authorization':_0x2e25b5(0x1df)+JWT}});if(!_0x2ed70d['ok'])return{'content':[{'type':_0x2e25b5(0x20a),'text':'APIエラー:\x20'+_0x2ed70d[_0x2e25b5(0x1fc)]}]};const _0x5077f8=await _0x2ed70d[_0x2e25b5(0x1ab)]();return{'content':[{'type':_0x571ac0['uKaSR'],'text':JSON[_0x2e25b5(0x202)](_0x5077f8,null,0x2)},{'type':_0x571ac0[_0x2e25b5(0x209)],'text':_0x571ac0[_0x2e25b5(0x1f7)]+_0x571ac0[_0x2e25b5(0x21a)]+_0x571ac0['BLedl']+_0x571ac0[_0x2e25b5(0x224)]}]};}),tool(_0x1fa408(0x214),{'mcp_id':zod_1['z']['string']()[_0x1fa408(0x213)]('インストールするMCPのID'),'env_vars':zod_1['z']['record'](zod_1['z'][_0x1fa408(0x20f)]())[_0x1fa408(0x1dd)]()[_0x1fa408(0x213)](_0x1fa408(0x1e3))},async({mcp_id:_0x41699f,env_vars:_0x51c130})=>{const _0x85217c=_0x1fa408,_0xb734f8={'QNhXM':_0x85217c(0x1e4),'xfJxd':_0x85217c(0x226)};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0x2ed74d=await fetch(PORTAL_URL+_0x85217c(0x225),{'method':_0xb734f8[_0x85217c(0x1ef)],'headers':{'Authorization':_0x85217c(0x1df)+JWT,'Content-Type':_0xb734f8[_0x85217c(0x1b7)]},'body':JSON['stringify']({'mcp_id':_0x41699f,'env_vars':_0x51c130})});if(!_0x2ed74d['ok'])return{'content':[{'type':_0x85217c(0x20a),'text':'APIエラー:\x20'+_0x2ed74d[_0x85217c(0x1fc)]}]};const _0x5e1dec=await _0x2ed74d[_0x85217c(0x1ab)]();if(!_0x5e1dec[_0x85217c(0x1eb)])return{'content':[{'type':'text','text':_0x85217c(0x1b9)}]};return new Promise(_0x569cd9=>{const _0xb0c96=_0x85217c,_0x1d749f={'Yifzb':_0xb0c96(0x20a)};(0x0,child_process_1[_0xb0c96(0x1c1)])(_0x5e1dec['install_command'],(_0x169db7,_0x2d2672,_0x1edad8)=>{const _0x1204c1=_0xb0c96;if(_0x169db7){_0x569cd9({'content':[{'type':_0x1d749f[_0x1204c1(0x1ec)],'text':_0x1204c1(0x1ea)+(_0x1edad8||_0x169db7['message'])}]});return;}_0x569cd9({'content':[{'type':_0x1204c1(0x20a),'text':_0x5e1dec['name']+_0x1204c1(0x1d8)+_0x5e1dec[_0x1204c1(0x1eb)]}]});});});}),tool('change_password',{'current_password':zod_1['z'][_0x1fa408(0x20f)]()[_0x1fa408(0x213)](_0x1fa408(0x207)),'new_password':zod_1['z'][_0x1fa408(0x20f)]()[_0x1fa408(0x1e1)](0x8)[_0x1fa408(0x213)](_0x1fa408(0x218))},async({current_password:_0x3844d7,new_password:_0x398b91})=>{const _0xfd9717=_0x1fa408,_0x5c9598={'ALURC':function(_0x4616eb,_0x5d645c){return _0x4616eb||_0x5d645c;},'BDocE':function(_0x6aa516,_0x16d3c0,_0x12b4e3){return _0x6aa516(_0x16d3c0,_0x12b4e3);},'GacbD':_0xfd9717(0x226),'tPgQv':_0xfd9717(0x20a)};if(_0x5c9598['ALURC'](!JWT,!PORTAL_URL))return AUTH_ERROR;const _0x38a937=await _0x5c9598['BDocE'](fetch,PORTAL_URL+_0xfd9717(0x1d5),{'method':_0xfd9717(0x1e4),'headers':{'Authorization':_0xfd9717(0x1df)+JWT,'Content-Type':_0x5c9598[_0xfd9717(0x1c7)]},'body':JSON[_0xfd9717(0x202)]({'current_password':_0x3844d7,'new_password':_0x398b91})});if(!_0x38a937['ok']){const _0x4e927f=await _0x38a937[_0xfd9717(0x1ab)]();return{'content':[{'type':_0x5c9598[_0xfd9717(0x1c0)],'text':'エラー:\x20'+(_0x4e927f[_0xfd9717(0x208)]??_0x38a937['status'])}]};}return{'content':[{'type':_0xfd9717(0x20a),'text':_0xfd9717(0x204)}]};}),tool(_0x1fa408(0x206),{},async()=>{const _0x3f15d9=_0x1fa408,_0x310e62={'qCbev':'保管中のシークレットはありません。store_secret\x20で保存できます。'},_0x232950=(0x0,vault_1['listSecretNames'])(resolveToolName());return{'content':[{'type':_0x3f15d9(0x20a),'text':_0x232950[_0x3f15d9(0x1b3)]?_0x3f15d9(0x1cd)+_0x232950['map'](_0x4d682e=>'-\x20'+_0x4d682e)[_0x3f15d9(0x217)]('\x0a'):_0x310e62[_0x3f15d9(0x1cf)]}]};}),tool('get_secret',{'name':zod_1['z'][_0x1fa408(0x20f)]()[_0x1fa408(0x213)](_0x1fa408(0x1ff))},async({name:_0x598002})=>{const _0x73c042=_0x1fa408,_0x4cf545={'GajLQ':function(_0x2929a7){return _0x2929a7();}},_0x3b8476=(0x0,vault_1[_0x73c042(0x1ee)])(_0x4cf545[_0x73c042(0x1c2)](resolveToolName));if(!(_0x598002 in _0x3b8476))return{'content':[{'type':_0x73c042(0x20a),'text':'シークレット\x20'+_0x598002+_0x73c042(0x223)}]};return{'content':[{'type':_0x73c042(0x20a),'text':_0x3b8476[_0x598002]}]};}),tool(_0x1fa408(0x1d7),{'name':zod_1['z']['string']()['describe'](_0x1fa408(0x1e8)),'value':zod_1['z'][_0x1fa408(0x20f)]()[_0x1fa408(0x213)]('シークレットの値')},async({name:_0x5a212d,value:_0x151d4d})=>{const _0x4e9ce2=_0x1fa408;return(0x0,vault_1[_0x4e9ce2(0x1db)])(resolveToolName(),_0x5a212d,_0x151d4d),{'content':[{'type':'text','text':_0x4e9ce2(0x1c6)+_0x5a212d+_0x4e9ce2(0x1e7)}]};}),tool('delete_secret',{'name':zod_1['z']['string']()['describe']('削除するシークレット名')},async({name:_0x3e0e41})=>{const _0x38add5=_0x1fa408,_0x2ad4e6={'FhbbM':function(_0x2e5677){return _0x2e5677();}},_0x2ab0a8=(0x0,vault_1[_0x38add5(0x216)])(_0x2ad4e6[_0x38add5(0x1d1)](resolveToolName),_0x3e0e41);return{'content':[{'type':_0x38add5(0x20a),'text':_0x2ab0a8?'シークレット\x20'+_0x3e0e41+_0x38add5(0x1bd):'シークレット\x20'+_0x3e0e41+_0x38add5(0x1be)}]};});async function main(){const _0x30461e=_0x1fa408;if(isSecretCommand){await runSecretCommand(rawArgs[_0x30461e(0x1c8)](0x1));return;}(!process.env.TOOL_TOKEN||!process.env.PORTAL_URL)&&(process['stderr']['write'](_0x30461e(0x1d4)),process[_0x30461e(0x1ca)](0x1));JWT=process.env.TOOL_TOKEN,PORTAL_URL=process.env.PORTAL_URL;const _0x3e2adb=new stdio_js_1[(_0x30461e(0x1aa))]();await server['connect'](_0x3e2adb),process[_0x30461e(0x1c4)][_0x30461e(0x1fe)]('MCP\x20Server\x20started\x0a');}function _0x415c(_0xaee62a,_0x34d4b1){_0xaee62a=_0xaee62a-0x1a9;const _0xce3f55=_0xce3f();let _0x415cce=_0xce3f55[_0xaee62a];if(_0x415c['UeQwlT']===undefined){var _0x1c8a5e=function(_0x37cddf){const _0x46fab8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4efea8='',_0x27d4c5='';for(let _0x57d102=0x0,_0xfdeca7,_0x5a3255,_0x3c14c2=0x0;_0x5a3255=_0x37cddf['charAt'](_0x3c14c2++);~_0x5a3255&&(_0xfdeca7=_0x57d102%0x4?_0xfdeca7*0x40+_0x5a3255:_0x5a3255,_0x57d102++%0x4)?_0x4efea8+=String['fromCharCode'](0xff&_0xfdeca7>>(-0x2*_0x57d102&0x6)):0x0){_0x5a3255=_0x46fab8['indexOf'](_0x5a3255);}for(let _0x1fcf02=0x0,_0x159815=_0x4efea8['length'];_0x1fcf02<_0x159815;_0x1fcf02++){_0x27d4c5+='%'+('00'+_0x4efea8['charCodeAt'](_0x1fcf02)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x27d4c5);};_0x415c['aHeOuo']=_0x1c8a5e,_0x415c['gJGopf']={},_0x415c['UeQwlT']=!![];}const _0x41accc=_0xce3f55[0x0],_0x65fed=_0xaee62a+_0x41accc,_0x400a13=_0x415c['gJGopf'][_0x65fed];return!_0x400a13?(_0x415cce=_0x415c['aHeOuo'](_0x415cce),_0x415c['gJGopf'][_0x65fed]=_0x415cce):_0x415cce=_0x400a13,_0x415cce;}main()[_0x1fa408(0x215)](_0x54d99a=>{const _0x4bc38d=_0x1fa408;process[_0x4bc38d(0x1c4)][_0x4bc38d(0x1fe)](_0x4bc38d(0x1cc)+_0x54d99a+'\x0a'),process[_0x4bc38d(0x1ca)](0x1);});
|
|
2
|
+
'use strict';const _0x195981=_0x52a4;function _0x1c1d(){const _0x930128=['C3rKB3v0','mtGXnZu4A1DbAxf4','lI92yxvSDa','5l+D566H5lIT44gU44k344o844kV44oS44od44oi77Yi5ywO44oe44o844oR5ywX6ycA77YjoGO','y2f0y2G','44or44k544oV44o844oj44ks5Asj5PU044gx44g+44gx44gF','yNvNoIdKUi3LHBFLKiJJG7VOQQtLI5xKVzZJG7VMIyVPOiBMM7JJGA7OQQtJGOOGlYbPBxbYB3zLBwvUDdOG5Ps55zAe5Qgi44o75QYY44gx44ge5QMF6io9','C2vJCMv0CY5LBMm','C2v0u2vJCMv0','mta0ntm2m3nmwhz4wG','44kK44oZ44k544oi44o844oR44gz44kltunq44gUsuq','ioocKUAAL+wpT+wmLUs/NEwTMoobL+obVUobL+obN++8Ia','mc4XlJa','rM9SrLm','qvbj44kO44oP44o8oIa','s05pv0XfreDfx0zpt1rfuG','Aw1WCM92zw1LBNq','44kO44oP44o8oIa','BgLZDf9Ty3bZ','zg5tvKW','yNvN','BwfW','wKzPEvG','uuzeue4','zw51Bq','mZiWyvP3A3Hf','C2vJCMv0','sM1lqNG','tuvuD0C','zgvSzxrLu2vJCMv0','zgvZy3jPyMu','qg1VzgvSy29UDgv4DhbYB3rVy29Sl3nKAY9Zzxj2zxiVC3rKAw8UANm','u2fSzxncB3q','ANLkuem','44kK44oZ44k544oi44o844oR44kZ44oE44oZ44oj44ks5y+w5B6x44gN44gn44g+44gB44kt44gN44gx44gF','zxHLyW','6kQn6kI85Oof5AcX44gm44gc44kk44g+44gB44kt44cc6lw35yUv44ox44oT44kW44oP44oG77YiBgf1BMnOzxlVViNJGyVJGONOTBFLI5xJGzFJGABJGy/JGAdJGzxJGytJGiik','nZC2uuf3zxLV','C3rVCMvFC2vJCMv0','l2fWAs9Ty3bZl2LUC3rHBgW','DMf1BhreAxi','rMf0ywW6ia','l2fWAs9RBM93BgvKz2u/A2v5D29Yzd0','z2v0x3nLy3jLDa','B3b0Aw9UywW','ue9tva','zgvSzxrL','ioobRUocPoodS+ocUEodIoodVoodQ+obJowUJos6HUobL+obVUobL+obN+oaGKnSyxvKzsbdB2rL44ks5yAn6lw35yUv44gx44gM44gp44gG44gv44ge44cccGRLRP/OOyZJGRpJG57JG7pJG4K6ia','yxv0B1jLCg9YDezHAwX1CMu','44o75ywO44oe44o844oR5ywX6ycA77Yj44cccG','y29UBMvJDa','5l2/44ge5PA5oIbHz2vUDc1JB3jLihnLy3jLDcbYBsa8tKfnrt4k','BgvUz3rO','4Oc7ioobK+ocJoobR+I/VEwkOoocPoodS+ocUEodIoodVoodQ+obP+obJEocIYbnq1aG44gU5lIa6kAN44gN44gz44cccG','C3rKzxjY','CM52qLe','y29UDgvUDa','ruPQyNy','5l+D566H5lIT44gU44k344o844kV44oS44od44oi44gV44gc44kk44g+44gB44kt44ccC3rVCMvFC2vJCMv0ioobP+s/NEwTMoobP+obJEobVUobMEoaGG','q1DJueO','u3rKAw9tzxj2zxjuCMfUC3bVCNq','zxjYB3i','rKvfrejbq0TFsu5tvfjvq1rjt05t','qNDiz1m','ioocKUwjIUMzPoobL+obVUobL+obN+oaGGO','ioobRUwaPoocKUwfPEwkM++8IoIHQoEKUUobLEocJoobVUobM+ocK++8ItOG','D1r0r3a','6yEr5BQR44ks6yca6yg/44gx44g+44gx44gF77Yi5QYH44gR5l2/44gg44gO44gn44gR5PAW44gx44gp5l2C44kj44km44g+44gz44cc44oT44kW44kK44oZ44gx55U044gx44gR44gQ44kk44g+44gz77YjoGO','qMvHCMvYia','44k344o844kV44oS44od44oi44gU5ycK','qg1VzgvSy29UDgv4DhbYB3rVy29Sl3nKAY9Zzxj2zxiVBwnWlMPZ','mtm0mZCWoeXWrNDPAW','C3rKAw4','4PYfioocT+odVoocR+odRoodG+odIca','5l2/44ge5PA5oIbHz2vUDc1JB3jLihnLy3jLDca8C2v0FgXPC3r8CM18CMvZzxq+ifToqu1fxqO','C3rHDhvZ','CMvZzxrwyxvSDa','teDzwfq','5ycK44gm56M644gN44gz44cc5lIT5Q2I44gx44g+44gx44gF44cccG','s3DmzKC','yxbWBgLJyxrPB24VANnVBG','AM9PBG','icaTia','y3vmwM4','BLvYzNy','6kQn6kI844kO44oP44o8oIdJGRVJG4pJG4JJGQlJG4pJG5FJGyZLROZKUOBJGzFJGABJGytJGB7JGzVJGPpJGilNRQhNKiBOGixJGAVPGkpNTAhJGzFJGABJGy/JGAdJGzxJGytJGii','5l2v44gm6lw344gn44gF44gl44o75yAn54++5OMl6Acg44o744gP44gg44gQ44gJ44gM44g744gx44ge44gl44cc5Qgi5lU244gU5lIT6lQR44ke56Ey5A+g44gU5ycK44gV5PU444gl44gQ44ge','D3jPDgu','zKXcvLO','ioocKUwjIUMzPoobL+obVUobL+obN+oaGG','zfn0q1u','6ycb5l+H44gR5AsX5Pwx44gx44g+44gx44gF77Yisfruuca','yMLUza','zgvMAw5LuhjVCgvYDhK','twnWu2vYDMvY','C3rVCMvFC2vJCMv0ic8Gz2v0x3nLy3jLDcaVigXPC3rFC2vJCMv0CYaVigrLBgv0zv9ZzwnYzxqG44gm','lI9MzwvKyMfJAW','u0vorf9gruveqKfds19ervnduKLqveLptG','EMnOBLi','l2fWAs9Ty3bZ','AKDztfK','tK9qrg0','D2fcDfO','ugHzEgS','ioobR+MhKEw6Q+obQ+obGUocIUobVUobM+ocK+oaGNn0B3jLx3nLy3jLDcdJGAFKV53LRzJJGAFJGy3JGB7JGzNJGii','Aw5ZDgfSBf9JB21Tyw5K','CMvJB3jK','jYdJGAVLR77LV5ZJGzNJGOTlBM93BgvKz2xJGyZOPOVJGAtJGyVJGORJGB7JGzVJGPpJGAFJGzFJGz/JGilNRQhNKiBOGixJGAVJGyRLLy/JGytLKiJJGO/JGzVJGy/JGAdJGzxJGytJGii','BwLNCMf0zvrVB2XwyxvSDa','CgfYC2u','ywDLBNqTy29Yzq','mJiWndK3mMzvBM5yrq','44kT44o844oV44o844ojicC','mJaZotrkBMToyw0','CMvHzfnLy3jLDhm','y2HHBMDLx3bHC3n3B3jK','ugT0uvC','mtKWodi2mvjqBuPgzW','5PYa5yID44gl44kj5l2/44gi44g+44gz77Yi44kK44oZ44k544oi44o844oR5lIn6kAb77Yj44cc','ENLVthi','44k344o844kV44oS44od44oi77Yi6yEr5BQR77Yj44gU6kQT44g/5PU444gn44gV44gt44gU5lIa6kAN44gR5yE644g+44gB44kt44cc','qLzNzKi','Bgzyzhi','BwLU','ANnVBG','C3rYAw5NAwz5','5lIa6kgm44gU6kAb57se','tunqifnLCNzLCIbZDgfYDgvKcG','ioocKUodREodVoocQ+odQ+AAL+wpT+MhKEw6Q+obQ+s/NEwTMoobL+obVUobL+obN++8IoobK+obRIbqqYdJGA7LHAJJG4tJG7ZJG6VJGAFLHBhPGjRJGilLGktJGA/JGzpJGA7JG57JGRFJG7pJGyVJGONLH7RJGB7JGzVJGPpVViNJGii','uMXqyLO','swP0ALa','C3rYAw5N','Dgv4Da','44k344o844kV44oS44od44oiia','zxHPDa','BxL0wK4','v25lueS','ioobR+IMI+obPoobI+ocIUobVUobM+ocK+oaGG','5l2/44ge5PA5oIbHz2vUDc1JB3jLihnLy3jLDcbZzxqGpe5btuu+cG','mvH2C3HtCW','C2XPy2u','BgLZDfnLy3jLDe5HBwvZ','CMvZzxq','mJa1v1fnCvfc','C2vUzf9MzwvKyMfJAW','teL3v3C','5l+D566H5lIT44gU44k344o844kV44oS44od44oi44gV44gc44kk44g+44gB44kt44cccG','s25VD2XLzgDL44kT44o844oV44o844oj77Yi5l6loIbau2fSzxncB3rF6kAb5lU25A6A576P77Yj','wxnXv1G','Bg9Hzf9RBM93BgvKz2u','zgnvu2O','Cgf0Aa','DhjPBq','CxvLC3rPB25iAwrKzw4','ntqZndyWneLvuvPIva','Dg9VBe5HBwu','yxjNDG','CMvHzezPBgvtEw5J','Ee9UBNO','y2XPzw50vMvYC2LVBG','54++5zYO44gU44or44k544oV44o844oj','BwvZC2fNzq','5PAW44gx44ge44or44k544oV44o844oj77YiooAwH+wTL+s7PEs4IU+8Iq','6yca6yg/44gz44kl6yEr5BQR44gV44gc44kk44g+44gB44kt44gN44gx44gF44cccG'];_0x1c1d=function(){return _0x930128;};return _0x1c1d();}(function(_0x4f681c,_0x31291b){const _0x33b7ce=_0x52a4,_0x30c636=_0x4f681c();while(!![]){try{const _0x189e85=-parseInt(_0x33b7ce(0x180))/0x1*(-parseInt(_0x33b7ce(0x13c))/0x2)+parseInt(_0x33b7ce(0x16a))/0x3+parseInt(_0x33b7ce(0x18f))/0x4+parseInt(_0x33b7ce(0x184))/0x5*(parseInt(_0x33b7ce(0x19a))/0x6)+-parseInt(_0x33b7ce(0x164))/0x7+-parseInt(_0x33b7ce(0x1be))/0x8*(-parseInt(_0x33b7ce(0x166))/0x9)+-parseInt(_0x33b7ce(0x1b2))/0xa*(parseInt(_0x33b7ce(0x1a2))/0xb);if(_0x189e85===_0x31291b)break;else _0x30c636['push'](_0x30c636['shift']());}catch(_0x26d943){_0x30c636['push'](_0x30c636['shift']());}}}(_0x1c1d,0xbc903));Object[_0x195981(0x152)](exports,'__esModule',{'value':!![]});const mcp_js_1=require(_0x195981(0x13b)),stdio_js_1=require(_0x195981(0x1b8)),zod_1=require('zod'),child_process_1=require('child_process'),fs_1=require('fs'),path_1=require(_0x195981(0x18c)),vault_1=require(_0x195981(0x19b)),prompt_1=require('./prompt'),feedback_1=require(_0x195981(0x155)),rawArgs=process[_0x195981(0x191)][_0x195981(0x181)](0x2),isSecretCommand=rawArgs[0x0]===_0x195981(0x1b3);function resolveToolName(){const _0x405bca=_0x195981,_0x5ae4e0={'nUrfv':'utf-8'};if(process.env.TOOL_NAME)return process.env.TOOL_NAME;try{const _0x4c6319=JSON[_0x405bca(0x162)]((0x0,fs_1[_0x405bca(0x192)])((0x0,path_1[_0x405bca(0x146)])(__dirname,'..','launcher.config.json'),_0x5ae4e0[_0x405bca(0x149)]));return _0x4c6319[_0x405bca(0x190)]||_0x405bca(0x1b9);}catch{return'SalesBot';}}async function runSecretCommand(_0x31d040){const _0x46c07b=_0x195981,_0x58dedc={'xOnnz':function(_0x47a980,_0x1d7061){return _0x47a980===_0x1d7061;},'RlPbZ':_0x46c07b(0x183),'dcUSj':function(_0x1bd544){return _0x1bd544();},'ZFiyX':'list','EJjbv':_0x46c07b(0x187),'jyJPC':'set','BwHgS':'utf-8','cuLZn':_0x46c07b(0x143),'dnSVL':function(_0x2fb5f0,_0x1d87f3){return _0x2fb5f0===_0x1d87f3;},'NOPDm':_0x46c07b(0x1c7),'lfXdr':_0x46c07b(0x1cc)},_0xe29302=_0x31d040[0x0];if(_0x58dedc[_0x46c07b(0x193)](_0xe29302,_0x58dedc[_0x46c07b(0x176)])){const _0x451d89=(0x0,vault_1[_0x46c07b(0x141)])();process[_0x46c07b(0x199)][_0x46c07b(0x14c)](_0x451d89[_0x46c07b(0x1cd)]?_0x46c07b(0x138)+_0x451d89[_0x46c07b(0x1ae)](_0x542a07=>_0x46c07b(0x147)+_0x542a07)['join']('\x0a')+'\x0a':_0x46c07b(0x198));return;}try{(0x0,vault_1[_0x46c07b(0x161)])(_0x58dedc[_0x46c07b(0x18b)](resolveToolName));}catch(_0x19eb44){process[_0x46c07b(0x1cf)][_0x46c07b(0x14c)]('※\x20旧い金庫を全ツール共通の金庫へ移せませんでした(旧い金庫は残しています):\x20'+_0x19eb44[_0x46c07b(0x196)]+'\x0a');}if(_0xe29302===_0x58dedc[_0x46c07b(0x1af)]){const _0xc7fc72=(0x0,vault_1[_0x46c07b(0x182)])();!_0xc7fc72[_0x46c07b(0x1cd)]?process[_0x46c07b(0x199)][_0x46c07b(0x14c)](_0x58dedc[_0x46c07b(0x1d2)]):process[_0x46c07b(0x199)]['write'](_0x46c07b(0x19c)+_0xc7fc72['map'](_0x12e197=>_0x46c07b(0x147)+_0x12e197)[_0x46c07b(0x146)]('\x0a')+'\x0a');return;}if(_0xe29302===_0x58dedc[_0x46c07b(0x1ba)]){const _0x21feed=_0x31d040[0x1];!_0x21feed&&(process['stderr'][_0x46c07b(0x14c)](_0x46c07b(0x17f)),process[_0x46c07b(0x17b)](0x1));const _0x2bc425=process[_0x46c07b(0x13d)]['isTTY']?await(0x0,prompt_1[_0x46c07b(0x18e)])(_0x21feed+_0x46c07b(0x136)):(0x0,fs_1[_0x46c07b(0x192)])(0x0,_0x58dedc[_0x46c07b(0x134)])[_0x46c07b(0x18d)]();!_0x2bc425&&(process[_0x46c07b(0x1cf)]['write'](_0x58dedc[_0x46c07b(0x148)]),process['exit'](0x1));(0x0,vault_1['setSecret'])(_0x21feed,_0x2bc425),process[_0x46c07b(0x199)]['write'](_0x46c07b(0x13e)+_0x21feed+_0x46c07b(0x1a4)+(0x0,path_1[_0x46c07b(0x146)])((0x0,vault_1[_0x46c07b(0x1c1)])(),_0x46c07b(0x1a0))+_0x46c07b(0x1ca));return;}if(_0x58dedc['xOnnz'](_0xe29302,'rm')||_0x58dedc[_0x46c07b(0x1ac)](_0xe29302,_0x58dedc[_0x46c07b(0x15a)])){const _0xcf53a8=_0x31d040[0x1];!_0xcf53a8&&(process[_0x46c07b(0x1cf)][_0x46c07b(0x14c)](_0x58dedc[_0x46c07b(0x16f)]),process[_0x46c07b(0x17b)](0x1));const _0x2d3cfa=(0x0,vault_1[_0x46c07b(0x1b6)])(_0xcf53a8);process[_0x46c07b(0x199)][_0x46c07b(0x14c)](_0x2d3cfa?'✅\x20'+_0xcf53a8+_0x46c07b(0x135):'('+_0xcf53a8+'\x20は保管されていません)\x0a');return;}process[_0x46c07b(0x1cf)][_0x46c07b(0x14c)](_0x46c07b(0x13f)),process['exit'](0x1);}function _0x52a4(_0x3bd68a,_0x348ae8){_0x3bd68a=_0x3bd68a-0x12f;const _0x1c1d5e=_0x1c1d();let _0x52a48d=_0x1c1d5e[_0x3bd68a];if(_0x52a4['tvaWEL']===undefined){var _0x5c1c76=function(_0x6c982d){const _0x565388='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3377ab='',_0x1e2923='';for(let _0x424bfd=0x0,_0x1e3c6f,_0x45af2f,_0x2a951c=0x0;_0x45af2f=_0x6c982d['charAt'](_0x2a951c++);~_0x45af2f&&(_0x1e3c6f=_0x424bfd%0x4?_0x1e3c6f*0x40+_0x45af2f:_0x45af2f,_0x424bfd++%0x4)?_0x3377ab+=String['fromCharCode'](0xff&_0x1e3c6f>>(-0x2*_0x424bfd&0x6)):0x0){_0x45af2f=_0x565388['indexOf'](_0x45af2f);}for(let _0x26613c=0x0,_0x3fe331=_0x3377ab['length'];_0x26613c<_0x3fe331;_0x26613c++){_0x1e2923+='%'+('00'+_0x3377ab['charCodeAt'](_0x26613c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e2923);};_0x52a4['effbsx']=_0x5c1c76,_0x52a4['CITipt']={},_0x52a4['tvaWEL']=!![];}const _0x2a3816=_0x1c1d5e[0x0],_0x2568b1=_0x3bd68a+_0x2a3816,_0x64a156=_0x52a4['CITipt'][_0x2568b1];return!_0x64a156?(_0x52a48d=_0x52a4['effbsx'](_0x52a48d),_0x52a4['CITipt'][_0x2568b1]=_0x52a48d):_0x52a48d=_0x64a156,_0x52a48d;}let PORTAL_URL='',JWT='';const AUTH_ERROR={'content':[{'type':_0x195981(0x179),'text':_0x195981(0x14a)}]},server=new mcp_js_1[(_0x195981(0x153))]({'name':_0x195981(0x163),'version':_0x195981(0x1a5)},{'instructions':feedback_1[_0x195981(0x133)]}),tool=server['tool'][_0x195981(0x151)](server);tool(_0x195981(0x18a),{'keyword':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)](_0x195981(0x188))},async({keyword:_0x3e10bb})=>{const _0x128560=_0x195981,_0x20b6bb={'FolFS':function(_0x4b203a,_0x5e1090,_0x37b66a){return _0x4b203a(_0x5e1090,_0x37b66a);},'QFDPN':_0x128560(0x179),'LGYXT':function(_0x3ead10,_0x4295ae){return _0x3ead10+_0x4295ae;}};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0x3ce55c=_0x128560(0x1c3)+encodeURIComponent(_0x3e10bb),_0x414883=await _0x20b6bb[_0x128560(0x1a6)](fetch,''+PORTAL_URL+_0x3ce55c,{'headers':{'Authorization':_0x128560(0x139)+JWT}});if(!_0x414883['ok'])return await(0x0,feedback_1[_0x128560(0x1c9)])(PORTAL_URL,JWT,resolveToolName(),_0x128560(0x18a),_0x414883['status'],_0x3ce55c),{'content':[{'type':_0x128560(0x179),'text':_0x128560(0x1a7)+_0x414883[_0x128560(0x140)]}]};const _0x5d60ef=await _0x414883['json']();if(_0x5d60ef['error']||!_0x5d60ef[_0x128560(0x1d1)])return{'content':[{'type':_0x20b6bb[_0x128560(0x1b0)],'text':_0x128560(0x165)+_0x3e10bb+_0x128560(0x160)}]};return{'content':[{'type':'text','text':_0x20b6bb[_0x128560(0x142)](_0x5d60ef['content'],feedback_1[_0x128560(0x1a8)])}]};}),tool(_0x195981(0x185),feedback_1[_0x195981(0x156)],{'kind':zod_1['z'][_0x195981(0x1b1)]([_0x195981(0x1ad),_0x195981(0x1a9)])['describe'](_0x195981(0x19f)),'target':zod_1['z'][_0x195981(0x178)]()['describe']('何についてか(例:\x20agent-core,\x20@テックリード,\x20@funny-booth/wizard-orchestrator)'),'title':zod_1['z']['string']()[_0x195981(0x1b7)](_0x195981(0x173)),'detail':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)](_0x195981(0x14b))},async({kind:_0xb78dd6,target:_0x12e8a1,title:_0x4aaa08,detail:_0x540627})=>{const _0x3fd57f=_0x195981,_0x4d9e46={'KwLfG':function(_0x251b66){return _0x251b66();},'PhYxk':'保守担当に送りました。ありがとうございます。作業を続けてください。'};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0x158613=await(0x0,feedback_1['postFeedback'])(PORTAL_URL,JWT,{'tool_name':_0x4d9e46[_0x3fd57f(0x144)](resolveToolName),'kind':_0xb78dd6,'target':_0x12e8a1,'title':_0x4aaa08,'detail':_0x540627,'client_version':(0x0,feedback_1[_0x3fd57f(0x194)])()});if(!_0x158613['ok']){const _0xc6d23b=await _0x158613[_0x3fd57f(0x171)]()[_0x3fd57f(0x19d)](()=>({}));return{'content':[{'type':'text','text':_0x3fd57f(0x150)+_0x158613[_0x3fd57f(0x140)]+'):\x20'+(_0xc6d23b[_0x3fd57f(0x132)]??'')}]};}return{'content':[{'type':_0x3fd57f(0x179),'text':_0x4d9e46[_0x3fd57f(0x15c)]}]};}),tool(_0x195981(0x1ab),{},async()=>{const _0x291257=_0x195981,_0x3d5ad7={'CWcPJ':function(_0x5b4ab8,_0x3f29bd){return _0x5b4ab8||_0x3f29bd;},'rnvBQ':_0x291257(0x1ab),'fLBVZ':'/api/mcps','aOrDN':_0x291257(0x179),'dStCU':function(_0x365553,_0xadb417){return _0x365553+_0xadb417;},'WnKPK':_0x291257(0x1ce),'zchnR':_0x291257(0x16d),'YsqWX':_0x291257(0x154),'wTtGp':_0x291257(0x16b)};if(_0x3d5ad7[_0x291257(0x130)](!JWT,!PORTAL_URL))return AUTH_ERROR;const _0x327b74=await fetch(PORTAL_URL+_0x291257(0x158),{'headers':{'Authorization':_0x291257(0x139)+JWT}});if(!_0x327b74['ok'])return await(0x0,feedback_1[_0x291257(0x1c9)])(PORTAL_URL,JWT,resolveToolName(),_0x3d5ad7[_0x291257(0x1d0)],_0x327b74['status'],_0x3d5ad7[_0x291257(0x14d)]),{'content':[{'type':_0x3d5ad7['aOrDN'],'text':_0x291257(0x1a7)+_0x327b74['status']}]};const _0x47985a=await _0x327b74[_0x291257(0x171)]();return{'content':[{'type':_0x291257(0x179),'text':JSON[_0x291257(0x172)](_0x47985a,null,0x2)},{'type':_0x291257(0x179),'text':_0x3d5ad7[_0x291257(0x14f)](_0x3d5ad7[_0x291257(0x17d)]+_0x3d5ad7[_0x291257(0x157)],_0x3d5ad7[_0x291257(0x189)])+_0x3d5ad7[_0x291257(0x137)]}]};}),tool('install_mcp',{'mcp_id':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)](_0x195981(0x1a3)),'env_vars':zod_1['z'][_0x195981(0x15f)](zod_1['z'][_0x195981(0x178)]())[_0x195981(0x1c5)]()[_0x195981(0x1b7)]('環境変数(例:\x20{GMAIL_TOKEN:\x20\x27xxx\x27})')},async({mcp_id:_0x202de9,env_vars:_0xf952d5})=>{const _0x4ce840=_0x195981,_0x2d1b42={'LIwWw':function(_0x576c20,_0x59a638,_0x1d5852){return _0x576c20(_0x59a638,_0x1d5852);},'zyoLr':_0x4ce840(0x1c6),'BVgfB':_0x4ce840(0x179)};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0xb8e86b=await _0x2d1b42[_0x4ce840(0x186)](fetch,PORTAL_URL+_0x4ce840(0x1c0),{'method':_0x2d1b42[_0x4ce840(0x16c)],'headers':{'Authorization':'Bearer\x20'+JWT,'Content-Type':_0x4ce840(0x145)},'body':JSON[_0x4ce840(0x172)]({'mcp_id':_0x202de9,'env_vars':_0xf952d5})});if(!_0xb8e86b['ok'])return{'content':[{'type':_0x4ce840(0x179),'text':_0x4ce840(0x1a7)+_0xb8e86b[_0x4ce840(0x140)]}]};const _0x21ec32=await _0xb8e86b['json']();if(!_0x21ec32[_0x4ce840(0x15e)])return{'content':[{'type':_0x2d1b42[_0x4ce840(0x16e)],'text':_0x4ce840(0x1bb)}]};return new Promise(_0x4fdf2c=>{const _0x4c22ea=_0x4ce840,_0x15bc59={'IjtjP':function(_0x4393a3,_0x5d70eb){return _0x4393a3(_0x5d70eb);}};(0x0,child_process_1[_0x4c22ea(0x1bc)])(_0x21ec32['install_command'],(_0x5d37da,_0x4d076e,_0x1e71be)=>{const _0x5adacb=_0x4c22ea;if(_0x5d37da){_0x4fdf2c({'content':[{'type':_0x5adacb(0x179),'text':'インストール失敗:\x0a'+(_0x1e71be||_0x5d37da[_0x5adacb(0x196)])}]});return;}_0x15bc59[_0x5adacb(0x177)](_0x4fdf2c,{'content':[{'type':_0x5adacb(0x179),'text':_0x21ec32['name']+_0x5adacb(0x1c8)+_0x21ec32['install_command']}]});});});}),tool(_0x195981(0x168),{'current_password':zod_1['z'][_0x195981(0x178)]()['describe'](_0x195981(0x195)),'new_password':zod_1['z']['string']()[_0x195981(0x170)](0x8)[_0x195981(0x1b7)](_0x195981(0x197))},async({current_password:_0x125876,new_password:_0xf68e04})=>{const _0x218586=_0x195981,_0x856b41={'PktQW':function(_0x41750e,_0x40e76e,_0x29cdf1){return _0x41750e(_0x40e76e,_0x29cdf1);},'mytZN':'application/json','jGYLY':_0x218586(0x179),'WRQGU':_0x218586(0x19e)};if(!JWT||!PORTAL_URL)return AUTH_ERROR;const _0x1e0302=await _0x856b41[_0x218586(0x169)](fetch,PORTAL_URL+'/api/auth/change-password',{'method':_0x218586(0x1c6),'headers':{'Authorization':_0x218586(0x139)+JWT,'Content-Type':_0x856b41[_0x218586(0x17c)]},'body':JSON[_0x218586(0x172)]({'current_password':_0x125876,'new_password':_0xf68e04})});if(!_0x1e0302['ok']){const _0x211895=await _0x1e0302[_0x218586(0x171)]();return{'content':[{'type':_0x856b41[_0x218586(0x159)],'text':_0x218586(0x1aa)+(_0x211895[_0x218586(0x132)]??_0x1e0302[_0x218586(0x140)])}]};}return{'content':[{'type':_0x218586(0x179),'text':_0x856b41['WRQGU']}]};}),tool('list_secrets',{},async()=>{const _0x27f823=_0x195981,_0x2e62d5={'MdJuE':_0x27f823(0x179)},_0x5271bf=(0x0,vault_1[_0x27f823(0x182)])();return{'content':[{'type':_0x2e62d5['MdJuE'],'text':_0x5271bf[_0x27f823(0x1cd)]?'保管中のシークレット:\x0a'+_0x5271bf[_0x27f823(0x1ae)](_0x5735f9=>'-\x20'+_0x5735f9)[_0x27f823(0x146)]('\x0a'):_0x27f823(0x12f)}]};}),tool(_0x195981(0x1c4),{'name':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)]('取得するシークレット名(例:\x20OPENAI_API_KEY)')},async({name:_0xd424df})=>{const _0x453b23=_0x195981,_0x256bef={'EIXEH':function(_0x5389ae,_0x3c4d8f){return _0x5389ae in _0x3c4d8f;},'JmKBx':_0x453b23(0x179)},_0x32a838=(0x0,vault_1[_0x453b23(0x167)])();if(!_0x256bef['EIXEH'](_0xd424df,_0x32a838))return{'content':[{'type':_0x256bef[_0x453b23(0x1b4)],'text':_0x453b23(0x17a)+_0xd424df+_0x453b23(0x15d)}]};return{'content':[{'type':_0x453b23(0x179),'text':_0x32a838[_0xd424df]}]};}),tool(_0x195981(0x1bf),{'name':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)]('シークレット名(例:\x20OPENAI_API_KEY)'),'value':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)](_0x195981(0x13a))},async({name:_0x4afb2a,value:_0x2a8bfd})=>{const _0x41c108=_0x195981,_0x6424ca={'waBtZ':_0x41c108(0x179)};return(0x0,vault_1[_0x41c108(0x1a1)])(_0x4afb2a,_0x2a8bfd),{'content':[{'type':_0x6424ca[_0x41c108(0x15b)],'text':'✅\x20シークレット\x20'+_0x4afb2a+_0x41c108(0x175)}]};}),tool('delete_secret',{'name':zod_1['z'][_0x195981(0x178)]()[_0x195981(0x1b7)]('削除するシークレット名')},async({name:_0x48e854})=>{const _0x4a179e=_0x195981,_0x1053d7=(0x0,vault_1[_0x4a179e(0x1b6)])(_0x48e854);return{'content':[{'type':_0x4a179e(0x179),'text':_0x1053d7?_0x4a179e(0x17a)+_0x48e854+_0x4a179e(0x14e):'シークレット\x20'+_0x48e854+_0x4a179e(0x17e)}]};});async function main(){const _0x4cbea9=_0x195981;if(isSecretCommand){await runSecretCommand(rawArgs[_0x4cbea9(0x181)](0x1));return;}(!process.env.TOOL_TOKEN||!process.env.PORTAL_URL)&&(process[_0x4cbea9(0x1cf)]['write'](_0x4cbea9(0x1bd)),process[_0x4cbea9(0x17b)](0x1));JWT=process.env.TOOL_TOKEN,PORTAL_URL=process.env.PORTAL_URL;const _0x18dd6c=new stdio_js_1[(_0x4cbea9(0x131))]();await server[_0x4cbea9(0x1cb)](_0x18dd6c),process[_0x4cbea9(0x1cf)][_0x4cbea9(0x14c)](_0x4cbea9(0x174));}main()['catch'](_0x502c80=>{const _0x16c706=_0x195981,_0x4a81b4={'METwG':function(_0x111d53,_0xff4f7f){return _0x111d53 instanceof _0xff4f7f;}};_0x4a81b4[_0x16c706(0x1b5)](_0x502c80,vault_1['VaultError'])&&(process[_0x16c706(0x1cf)]['write'](_0x502c80[_0x16c706(0x196)]+'\x0a'),process[_0x16c706(0x17b)](0x1)),process[_0x16c706(0x1cf)][_0x16c706(0x14c)](_0x16c706(0x1c2)+_0x502c80+'\x0a'),process[_0x16c706(0x17b)](0x1);});
|
package/dist/launcher.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';const _0x21c177=_0x1407;(function(_0x46abfc,_0x4cc2de){const _0x3546aa=_0x1407,_0x1f07ed=_0x46abfc();while(!![]){try{const _0x442be1=-parseInt(_0x3546aa(0x119))/0x1+parseInt(_0x3546aa(0x13b))/0x2+-parseInt(_0x3546aa(0x182))/0x3+parseInt(_0x3546aa(0x16b))/0x4*(parseInt(_0x3546aa(0x139))/0x5)+-parseInt(_0x3546aa(0x15f))/0x6*(-parseInt(_0x3546aa(0x124))/0x7)+parseInt(_0x3546aa(0x10c))/0x8*(parseInt(_0x3546aa(0x155))/0x9)+-parseInt(_0x3546aa(0x13d))/0xa;if(_0x442be1===_0x4cc2de)break;else _0x1f07ed['push'](_0x1f07ed['shift']());}catch(_0x6d0395){_0x1f07ed['push'](_0x1f07ed['shift']());}}}(_0xe635,0x216ed));Object['defineProperty'](exports,_0x21c177(0x170),{'value':!![]}),exports[_0x21c177(0x138)]=runLauncher;const fs_1=require('fs'),os_1=require('os'),path_1=require('path'),child_process_1=require(_0x21c177(0x18d)),vault_1=require(_0x21c177(0x121)),prompt_1=require('./prompt'),mcpPackages_1=require(_0x21c177(0x11a));function loadConfig(_0x420cc7){const _0x4a06c9=_0x21c177,_0x111e01=_0x420cc7??JSON[_0x4a06c9(0x151)]((0x0,fs_1[_0x4a06c9(0x106)])((0x0,path_1['join'])(__dirname,'..','launcher.config.json'),_0x4a06c9(0x16f))),_0x1c10f=process.env.PORTAL_URL||_0x111e01[_0x4a06c9(0x183)],_0x18340c=process.env.TOOL_NAME||_0x111e01[_0x4a06c9(0xfc)];return{'toolName':_0x18340c,'portalUrl':_0x1c10f,'packageName':_0x111e01[_0x4a06c9(0x171)],'packageVersion':_0x111e01[_0x4a06c9(0x169)]};}function readSavedTokens(_0x23e62c){const _0x353192=_0x21c177,_0x3f7e86={'gdXwk':_0x353192(0x16f),'DcPTo':_0x353192(0x13f),'YbPxh':function(_0x24deeb,_0x8c853f){return _0x24deeb!==_0x8c853f;}},_0x79d227=(0x0,path_1[_0x353192(0x197)])(_0x23e62c,_0x353192(0x162)),_0x59c4fd=(0x0,path_1[_0x353192(0x197)])(_0x23e62c,_0x353192(0x144));if(!(0x0,fs_1[_0x353192(0x192)])(_0x79d227)||!(0x0,fs_1[_0x353192(0x192)])(_0x59c4fd))return null;try{const _0x4328c1=Buffer[_0x353192(0x198)]((0x0,fs_1[_0x353192(0x106)])(_0x79d227,_0x3f7e86[_0x353192(0x176)])['trim'](),_0x3f7e86[_0x353192(0x18f)]);if(_0x3f7e86[_0x353192(0x157)](_0x4328c1[_0x353192(0x181)],0x20))return null;const _0x110ba8=(0x0,vault_1[_0x353192(0x11c)])((0x0,fs_1['readFileSync'])(_0x59c4fd,_0x3f7e86[_0x353192(0x176)])['trim'](),_0x4328c1);if(!_0x110ba8)return null;if(_0x110ba8['startsWith']('{')){const _0x113bae=JSON['parse'](_0x110ba8);return{'jwt':_0x113bae[_0x353192(0x158)],'refresh':_0x113bae[_0x353192(0x196)]??null};}return{'jwt':_0x110ba8,'refresh':null};}catch{return null;}}function saveTokens(_0x37e600,_0x42ccf6){const _0x41e320=_0x21c177,_0x593cde={'aEWWf':'utf-8'};(0x0,vault_1['ensureConfigDir'])(_0x37e600);const _0x1c2243=(0x0,vault_1['getOrCreateVaultKey'])(_0x37e600),_0x3a454a=JSON[_0x41e320(0x163)]({'jwt':_0x42ccf6[_0x41e320(0x158)],'refresh':_0x42ccf6[_0x41e320(0x196)]});(0x0,fs_1[_0x41e320(0x13a)])((0x0,path_1['join'])(_0x37e600,_0x41e320(0x144)),(0x0,vault_1['encrypt'])(_0x3a454a,_0x1c2243),{'encoding':_0x593cde[_0x41e320(0x13e)],'mode':0x180}),(0x0,fs_1[_0x41e320(0x143)])((0x0,path_1['join'])(_0x37e600,_0x41e320(0x144)),0x180);}function isJwtExpired(_0x16f5dc){const _0x47ccd8=_0x21c177,_0x2d929b={'hejon':function(_0x88dfe9,_0xd7713f){return _0x88dfe9<_0xd7713f;}};try{const _0x27dab4=JSON[_0x47ccd8(0x151)](Buffer['from'](_0x16f5dc[_0x47ccd8(0x195)]('.')[0x1],_0x47ccd8(0xf9))[_0x47ccd8(0xfe)]());return _0x2d929b[_0x47ccd8(0x16e)](_0x27dab4[_0x47ccd8(0x161)]*0x3e8,Date[_0x47ccd8(0x11d)]()+0xea60);}catch{return!![];}}async function interactiveLogin(_0x32cf34){const _0x38de12=_0x21c177,_0x2c3284={'LnjFs':function(_0x3df0d5,_0xef75eb,_0x5117d4){return _0x3df0d5(_0xef75eb,_0x5117d4);},'HLsaz':'application/json','BjFkh':_0x38de12(0x177),'leEqW':'ログインに3回失敗しました。終了します。\x0a'};process[_0x38de12(0x156)][_0x38de12(0x126)]('\x0a'+_0x32cf34[_0x38de12(0xfc)]+_0x38de12(0x18a));for(let _0x51ec2e=0x0;_0x51ec2e<0x3;_0x51ec2e++){const _0x17de4c=await(0x0,prompt_1[_0x38de12(0xf5)])(_0x38de12(0x11f)),_0x1397f7=await(0x0,prompt_1[_0x38de12(0x12d)])(_0x38de12(0x103));try{const _0x16cd53=await _0x2c3284[_0x38de12(0x105)](fetch,_0x32cf34['portalUrl']+_0x38de12(0x128),{'method':_0x38de12(0x14d),'headers':{'Content-Type':_0x2c3284[_0x38de12(0x18e)]},'body':JSON[_0x38de12(0x163)]({'email':_0x17de4c,'password':_0x1397f7})}),_0x376d19=await _0x16cd53[_0x38de12(0x10e)]();if(_0x16cd53['ok']&&_0x376d19[_0x38de12(0x164)])return process[_0x38de12(0x156)][_0x38de12(0x126)](_0x2c3284[_0x38de12(0xfd)]),{'jwt':_0x376d19[_0x38de12(0x164)],'refresh':_0x376d19[_0x38de12(0x17a)]??null};process[_0x38de12(0x12e)][_0x38de12(0x126)](_0x38de12(0x117)+(_0x376d19[_0x38de12(0x129)]??_0x38de12(0x15b))+'\x0a');}catch{process['stderr'][_0x38de12(0x126)](_0x38de12(0x153));}}process[_0x38de12(0x12e)][_0x38de12(0x126)](_0x2c3284[_0x38de12(0x152)]),process[_0x38de12(0x174)](0x1);}async function refreshTokens(_0x28db24,_0x5c296a){const _0x2ed687=_0x21c177,_0x3abe42={'MAQro':function(_0x37287a,_0x41b96b,_0x45edc2){return _0x37287a(_0x41b96b,_0x45edc2);},'mekCW':_0x2ed687(0x14d)};try{const _0x2a9c3c=await _0x3abe42[_0x2ed687(0x175)](fetch,_0x28db24[_0x2ed687(0x183)]+_0x2ed687(0x15c),{'method':_0x3abe42['mekCW'],'headers':{'Content-Type':_0x2ed687(0x118)},'body':JSON[_0x2ed687(0x163)]({'refresh_token':_0x5c296a})});if(!_0x2a9c3c['ok'])return null;const _0x119e25=await _0x2a9c3c['json']();if(!_0x119e25[_0x2ed687(0x164)])return null;return{'jwt':_0x119e25[_0x2ed687(0x164)],'refresh':_0x119e25['refresh_token']??_0x5c296a};}catch{return null;}}async function ensureJwt(_0x17cd3a,_0x5d624e){const _0x1849d4=_0x21c177,_0x2d9659={'MhlGD':function(_0x35a784,_0x1a8d9b){return _0x35a784(_0x1a8d9b);}},_0x183448=_0x2d9659[_0x1849d4(0x14e)](readSavedTokens,_0x5d624e);if(_0x183448&&!_0x2d9659['MhlGD'](isJwtExpired,_0x183448[_0x1849d4(0x158)]))return _0x183448[_0x1849d4(0x158)];if(_0x183448?.[_0x1849d4(0x196)]){const _0x3c6a79=await refreshTokens(_0x17cd3a,_0x183448['refresh']);if(_0x3c6a79)return saveTokens(_0x5d624e,_0x3c6a79),_0x3c6a79[_0x1849d4(0x158)];}const _0x413e62=await interactiveLogin(_0x17cd3a);return saveTokens(_0x5d624e,_0x413e62),_0x413e62['jwt'];}class AuthError extends Error{}function clearSavedToken(_0x529d42){const _0xf4155c=_0x21c177,_0x787cf2=(0x0,path_1['join'])(_0x529d42,_0xf4155c(0x144));if((0x0,fs_1[_0xf4155c(0x192)])(_0x787cf2))try{(0x0,fs_1[_0xf4155c(0x142)])(_0x787cf2);}catch{}}async function resolveSlot(_0x2c313e,_0x4b5cd7,_0x5ce195){const _0x392aa7=_0x21c177,_0x4de36c={'yRUUn':function(_0x407233,_0x1663f8){return _0x407233(_0x1663f8);},'pqqja':function(_0x5b8741,_0x238a64,_0x51f31c){return _0x5b8741(_0x238a64,_0x51f31c);},'NCDPr':function(_0x3b3ae8,_0x53add5){return _0x3b3ae8===_0x53add5;}},_0x68a8eb=_0x2c313e['portalUrl']+'/api/agents/slot/'+_0x5ce195+_0x392aa7(0x133)+_0x4de36c['yRUUn'](encodeURIComponent,_0x2c313e[_0x392aa7(0xfc)]),_0x3625d8=await _0x4de36c['pqqja'](fetch,_0x68a8eb,{'headers':{'Authorization':_0x392aa7(0x16d)+_0x4b5cd7}});if(_0x4de36c[_0x392aa7(0x190)](_0x3625d8[_0x392aa7(0xfa)],0x191))throw new AuthError(_0x392aa7(0xf6));if(_0x4de36c['NCDPr'](_0x3625d8[_0x392aa7(0xfa)],0x193)){const _0x133f16=await _0x3625d8['json']()['catch'](()=>({}));process[_0x392aa7(0x12e)][_0x392aa7(0x126)]('\x0a'+(_0x133f16[_0x392aa7(0x129)]??_0x392aa7(0x10d))+'\x0a'),process[_0x392aa7(0x174)](0x1);}!_0x3625d8['ok']&&(process[_0x392aa7(0x12e)][_0x392aa7(0x126)]('エージェント情報の取得に失敗しました\x20(HTTP\x20'+_0x3625d8['status']+_0x392aa7(0x154)),process[_0x392aa7(0x174)](0x1));const _0x15d2f5=await _0x3625d8[_0x392aa7(0x10e)]();return(_0x15d2f5[_0x392aa7(0x129)]||!_0x15d2f5['knowledge_keyword'])&&(process[_0x392aa7(0x12e)][_0x392aa7(0x126)]('スロット'+_0x5ce195+_0x392aa7(0x191)),process['exit'](0x1)),{'knowledge_keyword':_0x15d2f5[_0x392aa7(0x167)],'greeting':_0x15d2f5[_0x392aa7(0x173)]??'','name':_0x15d2f5[_0x392aa7(0x18b)]??'','requires_unix':_0x15d2f5[_0x392aa7(0x122)]??![]};}function _0x1407(_0x13205c,_0x5ba51e){_0x13205c=_0x13205c-0xf1;const _0xe635fd=_0xe635();let _0x1407da=_0xe635fd[_0x13205c];if(_0x1407['XaCKTV']===undefined){var _0x4714a1=function(_0x1e02eb){const _0xfa4279='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5d2690='',_0x483fa8='';for(let _0x54db1f=0x0,_0xbb78b4,_0x475b42,_0x13e8b7=0x0;_0x475b42=_0x1e02eb['charAt'](_0x13e8b7++);~_0x475b42&&(_0xbb78b4=_0x54db1f%0x4?_0xbb78b4*0x40+_0x475b42:_0x475b42,_0x54db1f++%0x4)?_0x5d2690+=String['fromCharCode'](0xff&_0xbb78b4>>(-0x2*_0x54db1f&0x6)):0x0){_0x475b42=_0xfa4279['indexOf'](_0x475b42);}for(let _0x4da523=0x0,_0x477b90=_0x5d2690['length'];_0x4da523<_0x477b90;_0x4da523++){_0x483fa8+='%'+('00'+_0x5d2690['charCodeAt'](_0x4da523)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x483fa8);};_0x1407['KkaFpW']=_0x4714a1,_0x1407['TXvGaE']={},_0x1407['XaCKTV']=!![];}const _0x425e74=_0xe635fd[0x0],_0x3d270b=_0x13205c+_0x425e74,_0x3b903a=_0x1407['TXvGaE'][_0x3d270b];return!_0x3b903a?(_0x1407da=_0x1407['KkaFpW'](_0x1407da),_0x1407['TXvGaE'][_0x3d270b]=_0x1407da):_0x1407da=_0x3b903a,_0x1407da;}function readMemo(){const _0x3c5616=_0x21c177,_0x3726ed={'Rpeqd':'.ai'},_0x485972=(0x0,path_1['join'])(process['cwd'](),_0x3726ed[_0x3c5616(0x184)],'memo.md');if(!(0x0,fs_1[_0x3c5616(0x192)])(_0x485972))return'';try{const _0x5b0f63=(0x0,fs_1[_0x3c5616(0x106)])(_0x485972,_0x3c5616(0x16f))['trim']();return _0x5b0f63?_0x3c5616(0x172)+_0x5b0f63:'';}catch{return'';}}function buildGreeting(_0x51cf24,_0x2ceacf,_0x360243){const _0xfec44d=_0x21c177,_0x50c7f0={'vguYS':function(_0x6193c5,_0x4eac7f){return _0x6193c5+_0x4eac7f;},'ZNkjp':function(_0x52a37e,_0x299e07){return _0x52a37e+_0x299e07;},'QxerT':_0xfec44d(0x141)},_0x10e764=_0x50c7f0[_0xfec44d(0x16c)](_0x50c7f0[_0xfec44d(0x16c)]('>\x20'+_0x51cf24['toolName']+_0xfec44d(0x111)+(''+_0x51cf24['toolName']+(_0x2ceacf[_0xfec44d(0x18b)]?_0x50c7f0['ZNkjp'](_0x50c7f0[_0xfec44d(0xf3)],_0x2ceacf[_0xfec44d(0x18b)]):'')+'\x0a'),'─────────────\x0a'),'さあ始めましょう\x0a\x0a')+(_0xfec44d(0x15e)+_0x51cf24[_0xfec44d(0xfc)]+_0xfec44d(0x110)+_0x2ceacf['knowledge_keyword']+'\x22\x20が利用可能です。\x0a')+(_0xfec44d(0x123)+_0x2ceacf[_0xfec44d(0x167)]+'\x22\x20を読み込んでから始めてください。'),_0x5785a7=_0x2ceacf[_0xfec44d(0x173)]?'\x0a\x0a'+_0x2ceacf[_0xfec44d(0x173)]:'';return _0x10e764+_0x5785a7+_0x360243;}function _0xe635(){const _0x21467d=['CMvWBgfJzq','CgfJA2fNzvzLCNnPB24','CgfJA2fNzv9Uyw1L','mJCYnJK2wen5ALPH','DMD1wvm','qMvHCMvYia','AgvQB24','DxrMltG','x19LC01VzhvSzq','CgfJA2fNzu5HBwu','cGOTls0k8j+tNsdJG5FJG63JGRJJGQFJGQ/JG4JJG6hJG6i6cG','z3jLzxrPBMC','zxHPDa','tufrCM8','z2ryD2S','4PYfioodREocSoocPoodS+obL+obVUobL+obN+oaGGO','ls1Ty3aTy29UzMLN','Aw5KzxGUANm','CMvMCMvZAf90B2TLBG','qvfyEgO','v0vzr0y','cI0G','v1fjtue','Aw5JBhvKzxm','ls1OzwXW','BgvUz3rO','mZCWmZK4D09kquTu','Cg9YDgfSvxjS','uNbLCwq','AgfZ','BwnW','AKzlt2e','icaYlIdJGRNJGR/JG7ZJG4JJG6hJG4VJG6xJG7ZJGyVJGOKGvwj1BNr1ioocKUMwI+obJWO','v09cDu0','ioobQ+odREocSoocPoodS+obL+obPUobJ+obOoobLEobHooaGGO','BMfTzq','mNW0Fdb8mxWZ','y2HPBgrFChjVy2vZCW','seXZyxO','rgnqvg8','tKneuhi','44gU44kO44o844k444kN44oZ44oi44gm6kAl44gK44gl44kk44g+44gB44kt44gN44gx44gF44cccG','zxHPC3rZu3LUyW','wgflq3K','Aw5OzxjPDa','C3bSAxq','CMvMCMvZAa','AM9PBG','zNjVBq','rKLYD1G','DMvYC2LVBG','sgzqv3O','uxHLCLq','AwDUB3jL','CxvLC3rPB24','Dw5HDxrOB3jPEMvK','zhLxsLK','AMX1uxO','yMfZzty0DxjS','C3rHDhvZ','BNbT','Dg9VBe5HBwu','qMPgA2G','Dg9tDhjPBMC','AxnbCNjHEq','r2nRDe4','uhDJzuy','ioobJowiQEEuQowpR+IdVEobP+obME+8IoEpVUwCQca','44or44k544oV44o844ojoIa','ls1ZDhjPy3qTBwnWlwnVBMzPzW','tg5QrNm','CMvHzezPBgvtEw5J','Ahr0Chm6lY9YzwDPC3rYEs5UCg1QCY5VCMCV','ChvZAa','lw1JCc0','Ehn5r2C','D2LUmZi','mtq1nLjYrffhAG','44gt44gU44kO44o844k444kN44oZ44oi44gV44gu5Awr57se44gU44ox44oP44oZ44gN44gV5yIP55sO44gN44gn44g+44gB44kt44cc','ANnVBG','C3bHD25tEw5J','ie1ducdJGA7LJ4lOGipOS4FMLPKGiG','ioobQ+AoPEE2MUobL+obVUobL+obNWOk','44gt44gU44kO44o844k444kN44oZ44oi44gV5yAf6yoO44gNifvUAxGG55kW5Akd44gU5lUv57we44g/77YiDg11Eo+8IEocKUs9V+obHUobN+ocGEoaGqO','4Oc7ios7LUobRUocQoodVoocUoocP+odS+odIoobRYbxAw5KB3DZioobRUobVUobVUobLowiQEEuQoobHoobN+obOoobKEobVUobMEoaGGO','C2vSzwn0rw52','rxzLqMm','BwvZC2fNzq','44oT44kW44kK44oZ5AsX5PwxoIa','yxbWBgLJyxrPB24VANnVBG','mJaXmJe1tg1wEgLn','lI9Ty3bqywnRywDLCW','l21JChm','zgvJCNLWDa','BM93','cVcFLjqG5PAW44gx44ge44oq44o844k444oN44oZia','44oH44o844oR44kI44oj44oS44k5oIa','tgzsvxy','lI92yxvSDa','CMvXDwLYzxnFDw5PEa','Bg9Hzf9RBM93BgvKz2uG44oe44o844oR44gNici','n3HprunfAa','icaZlIbvyNvUDhuG44gU5lIT44gN5Ps544kb44gM44gt44gU44kZ44oE44oZ44oj44ks5A6F6kgm44gz44klcGO','D3jPDgu','CwTJuNG','l2fWAs9HDxrOl2XVz2LU','zxjYB3i','CMvMCMvZAeLUqMfJA2DYB3vUza','CgXHDgzVCM0','rLz2zMq','CxvLC3rPB25iAwrKzw4','C3rKzxjY','6kQn6kI844gR5AsX5Pwx44gx44g+44gx44gF44cc44gt44gU44kI44kR44kM44oZ44oi44gR5QIP6zMq44gm44gc44kl44gl44gu56k66kQn44gp44gG44gv44ge44cccG','qwDoruC','44cn44gVifDPBMrVD3mG44gU44g+44g+44gN44gV6lw35yUv44gN44gn44g+44gB44kt44cccGO','q2XHDwrLienVzguGq0XjicHJBgf1zguPioobJoocPoodS+ocUEodIoodVoodQ+obLEocJoobPUobHoocI+obI+EIUUIQJEobL+obPUobJ+obOoobLEobHooaGGO','p3rVB2XFBMfTzt0','C3bHD24','y2XHDwrL','zxHLy1bHDgG','BM9Kzq','CNvUtgf1BMnOzxi','mJbdt3rNC3a','D3jPDgvgAwXLu3LUyW','nti0mdaWBfzfAKvm','ChjLCgfYzu1JCa','ntuXmdK5mg9fyLDAvW','yuvxv2y','Agv4','Dg9mB3DLCKnHC2u','ic8G','Dw5SAw5Ru3LUyW','y2HTB2rtEw5J','Cg9YDgfSlxrVA2vUlMvUyW','BMHwENi','A2TQq0u','77Yj44cc44oq44od44kV44kW44oP44kM44oZ44oj44gN5PU05PAW44gx44g+44gz77Yi5QYH5zUE6lw35yUv44gl44kj5y+n5PIG77Yj44cccG','cUwqJoAISu1duoobRUs4GoMdQoocKUA6LUwcMEobP+obJEobVUobM+ocK+obP+obL+obN++8IoobK+obRUocU+odG+ocT+odP+odS+obP+obR+s9V+obIoobVUobM+ocK++8ItOklsa','BLjiDLO','y29UzMLNrgLY','BwfW','Dw5Yzwy','ue9tva','twHSr0q','5l+D5A2y44gv44km44gF6kQn6kI85Oof5AcX44gm54sH5yQ544gN44gx44gF44cc5yAn44oT44kW44kK44oZ44gx44g+44gz44cccG','CgfJA2fNzs5QC29U','CgfYC2u','BgvfCvC','44k144o844oq44o844gR5O6L57AA44gN44gn44g+44gB44kt44gN44gx44gF44cc44on44od44oi44oV44o844kV44ks56k66kQn44gx44gM44gp44gG44gv44ge44cccG','kEoaGGO','mta0ndbhCwT6rva','C3rKB3v0','wwjqEgG','AND0','CMvHzfnLy3jLDhm','v1nmmU+8IfvIDw50DE+8IEobRUs4REobI+ocIEI1T+wlLEobMEocI+w/HEIMGEobJoobGUocIUobVUobMEoaGGOk','6kQn6kI844kO44oP44o8','l2fWAs9HDxrOl3jLzNjLC2G','qKHRt1e','44gt44gU44k744od44k344oN44oZ44gN44gVia','mtyWmtqZmgXhv3bxza','DgLTzw91Da','zxHW','DMf1BhqUA2v5','C3rYAw5NAwz5','Dg9Rzw4','icaXlIbqB3DLCLnOzwXSioocKUEUOEEqHUIaHEobQoobL+obPUMwI+obJsaID3nSic0TAw5ZDgfSBciG44ks5A6F6kgm44gx44gM5yAn6lw35yUvcG','zgvJBgfYzwrfBNy','A25VD2XLzgDLx2TLExDVCMq'];_0xe635=function(){return _0x21467d;};return _0xe635();}function claudeSupportsStrictMcpConfig(){const _0x2be225=_0x21c177,_0x1c5731={'WOBuM':_0x2be225(0x16f),'WEYGF':_0x2be225(0x104)};try{const _0x2cbbff=(0x0,child_process_1[_0x2be225(0x10f)])(_0x2be225(0x135),[_0x2be225(0x180)],{'encoding':_0x1c5731[_0x2be225(0x189)]});return(_0x2cbbff[_0x2be225(0x156)]??'')[_0x2be225(0x17f)](_0x1c5731[_0x2be225(0x17c)]);}catch{return![];}}async function fetchBundledMcps(_0x3b7176,_0x271f2e){const _0x10b8d8=_0x21c177;try{const _0x5eb421=_0x3b7176[_0x10b8d8(0x183)]+'/api/tools/'+encodeURIComponent(_0x3b7176[_0x10b8d8(0xfc)])+_0x10b8d8(0x11b),_0x51533f=await fetch(_0x5eb421,{'headers':{'Authorization':_0x10b8d8(0x16d)+_0x271f2e}});if(!_0x51533f['ok'])return[];const _0x5648da=await _0x51533f['json']();return Array[_0x10b8d8(0xff)](_0x5648da)?_0x5648da:[];}catch{return[];}}function mcpKey(_0x2fb09c,_0xd3f57a){const _0x5dd396=_0x21c177;let _0x5c767d=_0x2fb09c[_0x5dd396(0x168)](/[^a-zA-Z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')[_0x5dd396(0x140)]()||_0x5dd396(0x186),_0xe15663=_0x5c767d,_0x59e976=0x2;while(_0xd3f57a[_0x5dd396(0x185)](_0xe15663))_0xe15663=_0x5c767d+'-'+_0x59e976++;return _0xd3f57a['add'](_0xe15663),_0xe15663;}function launchClaude(_0x5f20a5,_0x5d8902,_0x98df6e,_0x4c0d78,_0x435b5d){const _0x9b6f31=_0x21c177,_0x1c640c={'FVvfd':_0x9b6f31(0x132),'HfPWz':_0x9b6f31(0x137),'qkcRx':function(_0x5a0b90,_0x6c30e7,_0x56bd1b){return _0x5a0b90(_0x6c30e7,_0x56bd1b);},'jluQz':_0x9b6f31(0x16f),'Mnjws':_0x9b6f31(0x178),'GcktN':function(_0x207ac4){return _0x207ac4();},'jFKOa':_0x9b6f31(0x129)},_0x1e217e=(0x0,path_1['join'])(__dirname,_0x9b6f31(0x179)),_0x16f740=_0x5f20a5[_0x9b6f31(0xfc)][_0x9b6f31(0x140)](),_0x1b71b9={[_0x16f740]:{'command':_0x1c640c[_0x9b6f31(0xf2)],'args':[_0x1e217e],'env':{'TOOL_NAME':_0x5f20a5[_0x9b6f31(0xfc)],'TOOL_TOKEN':_0x5d8902,'PORTAL_URL':_0x5f20a5[_0x9b6f31(0x183)],'TOOL_KEYWORD':_0x98df6e[_0x9b6f31(0x167)],'TOOL_LANGUAGE':'ja'}}},_0x453179=(0x0,vault_1[_0x9b6f31(0x159)])(_0x5f20a5[_0x9b6f31(0xfc)]),_0x302fd8=(0x0,path_1[_0x9b6f31(0x197)])((0x0,os_1['tmpdir'])(),_0x16f740+_0x9b6f31(0x109)+process['pid']+'-'+Date[_0x9b6f31(0x11d)]()+'.json'),_0x54a358={'PORTAL_URL':_0x5f20a5[_0x9b6f31(0x183)],'TOOL_TOKEN':_0x5d8902,'FB_MCP_CONFIG':_0x302fd8},_0x515184=new Set([_0x16f740]),_0x159b27=[],_0x577f67=[];for(const _0x5c31ba of _0x435b5d){if(!_0x5c31ba[_0x9b6f31(0x16a)])continue;let _0x3d05a7;try{_0x3d05a7=(0x0,mcpPackages_1[_0x9b6f31(0x13c)])(_0x5c31ba[_0x9b6f31(0x16a)]);}catch(_0x29cbc6){_0x577f67['push'](_0x5c31ba[_0x9b6f31(0x16a)]+':\x20'+_0x29cbc6[_0x9b6f31(0x116)]);continue;}_0x159b27['push'](_0x3d05a7),_0x1b71b9[_0x1c640c[_0x9b6f31(0x127)](mcpKey,_0x5c31ba['package_name'],_0x515184)]={'command':process[_0x9b6f31(0x136)],'args':[_0x3d05a7['binPath']],'env':{...(0x0,mcpPackages_1[_0x9b6f31(0x114)])(_0x3d05a7['declaredEnv'],_0x54a358),..._0x5c31ba['env']??{},...(0x0,mcpPackages_1['selectEnv'])(_0x3d05a7[_0x9b6f31(0x166)],_0x453179)}};}_0x577f67['length']&&(process[_0x9b6f31(0x12e)][_0x9b6f31(0x126)](_0x9b6f31(0x148)+_0x577f67[_0x9b6f31(0x197)]('\x0a-\x20')+'\x0a\x0a'),_0x4c0d78+='\x0a\x0a※\x20同梱MCPの一部を準備できず、このセッションでは使えません。必要ならユーザーに伝えてください:\x0a-\x20'+_0x577f67[_0x9b6f31(0x197)](_0x9b6f31(0x17d)));const _0x29f777={'mcpServers':_0x1b71b9};(0x0,fs_1['writeFileSync'])(_0x302fd8,JSON[_0x9b6f31(0x163)](_0x29f777),{'encoding':_0x1c640c[_0x9b6f31(0xf8)],'mode':0x180});const _0x3204e9=[_0x4c0d78,'--dangerously-skip-permissions',_0x1c640c['Mnjws'],_0x302fd8];if(_0x1c640c[_0x9b6f31(0x100)](claudeSupportsStrictMcpConfig))_0x3204e9[_0x9b6f31(0x108)]('--strict-mcp-config');const _0x55d4fa=(0x0,child_process_1[_0x9b6f31(0x134)])(_0x9b6f31(0x135),_0x3204e9,{'stdio':_0x9b6f31(0x194)});_0x55d4fa['on'](_0x1c640c[_0x9b6f31(0x187)],_0x4381f3=>{const _0x2e49fe=_0x9b6f31;process['stderr'][_0x2e49fe(0x126)]('claude\x20の起動に失敗しました:\x20'+_0x4381f3[_0x2e49fe(0x116)]+'\x0a'),process[_0x2e49fe(0x12e)][_0x2e49fe(0x126)](_0x1c640c[_0x2e49fe(0x12c)]),process[_0x2e49fe(0x174)](0x1);}),_0x55d4fa['on'](_0x9b6f31(0x174),_0x3c71c9=>process[_0x9b6f31(0x174)](_0x3c71c9??0x0)),void(0x0,mcpPackages_1[_0x9b6f31(0x12a)])(_0x159b27);}const PACKAGE_NAME='@funny-booth/agent-core';function isNewer(_0x379d47,_0x159c79){const _0x348b95=_0x21c177,_0x18a506={'xsyGg':function(_0x3d92e1,_0x36e188){return _0x3d92e1<_0x36e188;},'BouGa':function(_0x4b1990,_0x11191a){return _0x4b1990>_0x11191a;},'tornd':function(_0x1a5810,_0x4f3c32){return _0x1a5810<_0x4f3c32;}},_0x536f69=_0x379d47[_0x348b95(0x195)]('.')['map'](Number),_0x26fff9=_0x159c79[_0x348b95(0x195)]('.')[_0x348b95(0x14b)](Number);for(let _0x3d9254=0x0;_0x18a506[_0x348b95(0x10a)](_0x3d9254,0x3);_0x3d9254++){if(_0x18a506['BouGa'](_0x536f69[_0x3d9254]||0x0,_0x26fff9[_0x3d9254]||0x0))return!![];if(_0x18a506['tornd'](_0x536f69[_0x3d9254]||0x0,_0x26fff9[_0x3d9254]||0x0))return![];}return![];}async function checkForUpdate(_0x8e777e){const _0x588202=_0x21c177,_0x53e86f={'WQIMA':_0x588202(0x16f),'nhVzr':'install','PwceF':_0x588202(0xf4),'XaKCy':function(_0x54dd66,_0x405eeb){return _0x54dd66===_0x405eeb;}};try{const _0x81b35b=_0x8e777e[_0x588202(0x171)]||PACKAGE_NAME,_0xba171c=_0x8e777e[_0x588202(0x169)]||JSON['parse']((0x0,fs_1[_0x588202(0x106)])((0x0,path_1[_0x588202(0x197)])(__dirname,'..',_0x588202(0x150)),_0x53e86f[_0x588202(0x17e)]))['version'],_0x1a6fe5=await fetch(_0x588202(0x107)+_0x81b35b+'/latest',{'signal':AbortSignal[_0x588202(0x160)](0xbb8)});if(!_0x1a6fe5['ok'])return;const _0x516ecf=await _0x1a6fe5[_0x588202(0x10e)]();if(_0x516ecf[_0x588202(0xf1)]&&isNewer(_0x516ecf[_0x588202(0xf1)],_0xba171c)){process[_0x588202(0x156)][_0x588202(0x126)](_0x588202(0x11e)+_0x516ecf['version']+_0x588202(0x102)+_0xba171c+_0x588202(0x147));const _0x56cf2f=(0x0,child_process_1[_0x588202(0x134)])(_0x588202(0xfb),[_0x53e86f[_0x588202(0x145)],'-g',_0x81b35b+'@latest'],{'detached':!![],'stdio':_0x53e86f[_0x588202(0x101)],'shell':_0x53e86f[_0x588202(0x193)](process[_0x588202(0x12b)],_0x588202(0x10b))});_0x56cf2f[_0x588202(0x14c)]();}}catch{}}async function runLauncher(_0x40bf86,_0x331081){const _0x4b4d6d=_0x21c177,_0x2a8be5={'dSDaQ':function(_0x51ecf9,_0x32addd,_0x1060a8){return _0x51ecf9(_0x32addd,_0x1060a8);},'AgNEG':_0x4b4d6d(0x18c),'kkjCE':function(_0x4a9498,_0x28a41e){return _0x4a9498(_0x28a41e);},'EUMFP':function(_0x575a19,_0x1a4b47){return _0x575a19 instanceof _0x1a4b47;},'nRHvZ':_0x4b4d6d(0x12f),'dyWJY':function(_0x3f3b59,_0x4f10da){return _0x3f3b59===_0x4f10da;},'AQXxj':function(_0x4ef935,_0x447460){return _0x4ef935+_0x447460;},'LfRUv':function(_0x1bd442,_0x233cf9){return _0x1bd442+_0x233cf9;},'BHkOQ':function(_0x1570de){return _0x1570de();},'EveBc':function(_0x5ee38a,_0x3b02bb,_0x3fdd84,_0x237b40){return _0x5ee38a(_0x3b02bb,_0x3fdd84,_0x237b40);},'FIrwX':function(_0x34b445,_0x1ebcc5,_0x49bda9,_0x37ab8a,_0x4fd912,_0x40cf20){return _0x34b445(_0x1ebcc5,_0x49bda9,_0x37ab8a,_0x4fd912,_0x40cf20);}},_0x35a41c=loadConfig(_0x331081);await checkForUpdate(_0x35a41c);const _0x365195=(0x0,vault_1[_0x4b4d6d(0x14a)])(_0x35a41c[_0x4b4d6d(0xfc)]);let _0x1af5f3=await _0x2a8be5['dSDaQ'](ensureJwt,_0x35a41c,_0x365195),_0x49446a;try{_0x49446a=await resolveSlot(_0x35a41c,_0x1af5f3,_0x40bf86);}catch(_0x431124){const _0x4bd879=_0x2a8be5[_0x4b4d6d(0x130)][_0x4b4d6d(0x195)]('|');let _0x15bc3b=0x0;while(!![]){switch(_0x4bd879[_0x15bc3b++]){case'0':_0x2a8be5[_0x4b4d6d(0x146)](clearSavedToken,_0x365195);continue;case'1':_0x1af5f3=await ensureJwt(_0x35a41c,_0x365195);continue;case'2':if(!_0x2a8be5['EUMFP'](_0x431124,AuthError))throw _0x431124;continue;case'3':try{_0x49446a=await resolveSlot(_0x35a41c,_0x1af5f3,_0x40bf86);}catch(_0x47567e){_0x47567e instanceof AuthError&&(process['stderr']['write'](_0x2a8be5[_0x4b4d6d(0x149)]),process[_0x4b4d6d(0x174)](0x1));throw _0x47567e;}continue;case'4':process[_0x4b4d6d(0x12e)][_0x4b4d6d(0x126)](_0x4b4d6d(0x14f));continue;}break;}}_0x49446a[_0x4b4d6d(0x122)]&&_0x2a8be5[_0x4b4d6d(0xf7)](process[_0x4b4d6d(0x12b)],_0x4b4d6d(0x10b))&&(process[_0x4b4d6d(0x12e)][_0x4b4d6d(0x126)](_0x2a8be5['AQXxj'](_0x2a8be5[_0x4b4d6d(0x17b)](_0x2a8be5[_0x4b4d6d(0x120)]('\x0a「'+_0x49446a[_0x4b4d6d(0x18b)]+_0x4b4d6d(0x131)+_0x4b4d6d(0x112),_0x4b4d6d(0x15a)),'対処:\x0a')+_0x4b4d6d(0x165)+_0x4b4d6d(0x188),_0x4b4d6d(0x125))+_0x4b4d6d(0x113)),process['exit'](0x1));const _0x3596d3=await fetchBundledMcps(_0x35a41c,_0x1af5f3),_0x554788=_0x2a8be5[_0x4b4d6d(0x15d)](readMemo),_0x3beada=_0x2a8be5[_0x4b4d6d(0x115)](buildGreeting,_0x35a41c,_0x49446a,_0x554788);_0x2a8be5[_0x4b4d6d(0x199)](launchClaude,_0x35a41c,_0x1af5f3,_0x49446a,_0x3beada,_0x3596d3);}
|
|
1
|
+
'use strict';const _0x30ed91=_0x10f6;(function(_0x2e5f8e,_0x4ab38a){const _0x2e449b=_0x10f6,_0xc2e88f=_0x2e5f8e();while(!![]){try{const _0x129052=-parseInt(_0x2e449b(0x132))/0x1+parseInt(_0x2e449b(0x16a))/0x2+parseInt(_0x2e449b(0x1b5))/0x3*(parseInt(_0x2e449b(0x128))/0x4)+-parseInt(_0x2e449b(0x191))/0x5*(-parseInt(_0x2e449b(0x1af))/0x6)+-parseInt(_0x2e449b(0x1ab))/0x7+-parseInt(_0x2e449b(0x119))/0x8+parseInt(_0x2e449b(0x1c1))/0x9;if(_0x129052===_0x4ab38a)break;else _0xc2e88f['push'](_0xc2e88f['shift']());}catch(_0x2aa428){_0xc2e88f['push'](_0xc2e88f['shift']());}}}(_0x2c2b,0x28d10));Object[_0x30ed91(0x163)](exports,_0x30ed91(0x114),{'value':!![]}),exports[_0x30ed91(0x159)]=runLauncher;function _0x2c2b(){const _0xb1339=['v3PjCuu','BgvUz3rO','Ahr0Chm6lY9YzwDPC3rYEs5UCg1QCY5VCMCV','ChjLCgfYzu1JCa','44gt44gU44kO44o844k444kN44oZ44oi44gV5yAf6yoO44gNifvUAxGG55kW5Akd44gU5lUv57we44g/77YiDg11Eo+8IEocKUs9V+obHUobN+ocGEoaGqO','zxHPDa','ioobJowiQEEuQowpR+IdVEobP+obME+8IoEpVUwCQca','yMLUugf0Aa','uefRvuO','BwvTBY5Tza','y2f0y2G','cUMhKEw6Q+ocKUwfQoodHoodVoodQ+wfSEMaMUobQ+obVUobQoocGEobVUobL+obN++8Ih4VlMz1BM55lwjVB3rOl3zHDwX077Yj44cccG','Aw5JBhvKzxm','lMfP','Dg9mB3DLCKnHC2u','CMvHzfnLy3jLDhm','BNbT','Bg9Hzf9RBM93BgvKz2uG44oe44o844oR44gNici','v1nmmU+8IfvIDw50DE+8IEobRUs4REobI+ocIEI1T+wlLEobMEocI+w/HEIMGEobJoobGUocIUobVUobMEoaGGOk','5l+D5A2y44gv44km44gF6kQn6kI85Oof5AcX44gm54sH5yQ544gN44gx44gF44cc5yAn44oT44kW44kK44oZ44gx44g+44gz44cccG','q2XHDwrLienVzguGq0XjicHJBgf1zguPioobJoocPoodS+ocUEodIoodVoodQ+obLEocJoobPUobHoocI+obI+EIUUIQJEobL+obPUobJ+obOoobLEobHooaGGO','ywrK','ls1OzwXW','CMvMCMvZAa','t0rIv0i','A25VD2XLzgDLx2TLExDVCMq','44gt44gU44kO44o844k444kN44oZ44oi44gV44gu5Awr57se44gU44ox44oP44oZ44gN44gV5yIP55sO44gN44gn44g+44gB44kt44cc','cI0G','CMvMCMvZAf90B2TLBG','CMvHzezPBgvtEw5J','lw1JCc0','zxHPC3rZu3LUyW','D3zhCfy','BM93','Dg1WzgLY','D3jPDgu','CNvUtgf1BMnOzxi','BLvuDuy','rwfzz2K','DhjPBq','CxvLC3rPB24','sNnNzLG','cGRIGlSG5zcm5QkXtunq44gU5lIa6yoO44ks5RQw5ykz44gN44gn44gA44cb44gt44gU44k744od44k344oN44oZ44gN44gV5l2/44gi44g+44gB44kt44cc5B+f6kAb44gQ44kj44oM44o844k244o844gR5lYD44gi44gM44gp44gG44gv44geoGOTia','AwDUB3jL','ANnVBG','zNjVBq','zgvMAw5LuhjVCgvYDhK','AxLHz24','77Yj44cc44oq44od44kV44kW44oP44kM44oZ44oj44gN5PU05PAW44gx44g+44gz77Yi5QYH5zUE6lw35yUv44gl44kj5y+n5PIG77Yj44cccG','BwnW','zxHW','m3WXFdb8nhWY','lI9Ty3bqywnRywDLCW','mZG2mZa0zeX3v3DH','zhPbCva','BwvZC2fNzq','ioobQ+odREocSoocPoodS+obL+obPUobJ+obOoobLEobHooaGGO','BM9Kzq','BwLNCMf0zvrVB2XwyxvSDa','CMvWBgfJzq','txvxB0W','cGOTls0k8j+tNsdJG5FJG63JGRJJGQFJGQ/JG4JJG6hJG6i6cG','tvDtrxe','y2XHDwrL','tLvgr28','DMvYC2LVBG','ue9tva','CgfYC2u','C3rKB3v0','s01oz0G','44or44k544oV44o844ojoIa','CMvHzfrVA2vUCW','Aw5OzxjPDa','DxrMltG','CxvLC3rPB25iAwrKzw4','l2fWAs90B29SCY8','CgfJA2fNzv9Uyw1L','vMf1BhrfCNjVCG','z2T4t3y','C3bHD25tEw5J','uxPMzKK','4PYfioodREocSoocPoodS+obL+obVUobL+obN+oaGGO','C3rKzxjY','vwDIA1i','4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4PsacG','qMvHCMvYia','cUkaUYdPH5hLUQVJGAVLKiZJGzJLKi3LIy3JGAFLGktJGA7PGzxJGyBNP5JLR4BJGyZJGylJGORJGB7JGzK6ia','yxbWBgLJyxrPB24VANnVBG','cUkaUYdML6FJGytPH5hLUQVJGPlLHAJJG4tJG7ZJG6VLHBhPGjRJGA7PH5hLUQVJGBJNP7VJGzVJGB7JGzVJGPpJGAFJGzFJGz/VViJML6FJGytPH5hLUQVJGA/MROVJGzFJGABJGytJGB7JGzNVViK6ia','zvnxsuW','AM9PBG','l2fWAs9Hz2vUDhmVC2XVDc8','mZbozKLZCKC','A0HHrNa','6kQn6kI844gR5AsX5Pwx44gx44g+44gx44gF44cc44gt44gU44kI44kR44kM44oZ44oi44gR5QIP6zMq44gm44gc44kl44gl44gu56k66kQn44gp44gG44gv44ge44cccG','qNDqEey','y2XHDwrLioobRUI1T+wlLEobQ+wKSEAvL+obL+obVUobL+obNZOG','wMD0zfO','Dg9tDhjPBMC','ls1ZDhjPy3qTBwnWlwnVBMzPzW','vuf5Avu','Dg9Rzw4','6kAb44kj44gQ44ge5PA544ksihnLy3jLDcbYBsdJGAFMTOJJGzFJGABJGy/JGAdJGzxJGytJGiik','C3bHD24','y2XLyxjuB2TLBNm','Dg9VBe5HBwu','qgz1BM55lwjVB3rOl2fNzw50lwnVCMu','BMHNu3i','CMvMCMvZAeLUqMfJA2DYB3vUza','44cc5l2/44kp44km44kl44gU44gV44cmqooaJEobRUs7MoobI+obQUobHoAwUEobP+obMEoaGG','ChvZAa','CgXHDgzVCM0','v1vZuMW','44k144o844oq44o844gR5O6L57AA44gN44gn44g+44gB44kt44gN44gx44gF44cc44on44od44oi44oV44o844kV44ks56k66kQn44gx44gM44gp44gG44gv44ge44cccG','Cgf0Aa','Aw5ZDgfSBa','Aw5KzxGUANm','ic8G','mtu3ntKYnevSrgXkrW','ENzMzKu','zxjYB3i','Dw5HDxrOB3jPEMvK','mJKXnZKYueP0t0HQ','u1zeuvm','zw52','cVcFLjqG5PAW44gx44ge44oq44o844k444oN44oZia','44gU44kO44o844k444kN44oZ44oi44gm6kAl44gK44gl44kk44g+44gB44kt44gN44gx44gF44cccG','zgvJBgfYzwrfBNy','nJu5otfktfHpqu4','CgLK','y2HPBgrFChjVy2vZCW','44gv44gc5AEl44kb44g+44gx44kh44ggcGO','D2LUmZi','r2DpAvG','icaXlIbqB3DLCLnOzwXSioocKUEUOEEqHUIaHEobQoobL+obPUMwI+obJsaID3nSic0TAw5ZDgfSBciG44ks5A6F6kgm44gx44gM5yAn6lw35yUvcG','CMvXDwLYzxnFDw5PEa','lI92yxvSDa','cUwqJoAISu1duoobRUs4GoMdQoocKUA6LUwcMEobP+obJEobVUobM+ocK+obP+obL+obN++8IoobK+obRUocU+odG+ocT+odP+odS+obP+obR+s9V+obIoobVUobM+ocK++8ItOklsa','BwfW','BMfTzq','mJKWmZiWmLrAqMDsAq','44oT44kW44kK44oZ5AsX5PwxoIa','BwLNCMf0zwq','CgfJA2fNzu5HBwu','x19LC01VzhvSzq','C3rYAw5NAwz5','z3jLzxrPBMC','44oT44kW44kK44oZ44gRm+wBNUwKSEAvL+obL+obVUobL+obN+oaGUE1GUs6HUobL+obVUobMEoaGGO','DgLTzw91Da','mJi2ndC4ne9OwM9hqq','DfrrBNq','wNn6zxO','4Oc7ios7LUobRUocQoodVoocUoocP+odS+odIoobRYbxAw5KB3DZioobRUobVUobVUobLowiQEEuQoobHoobN+obOoobKEobVUobMEoaGGO','AND0','BgLZDfnLy3jLDe5HBwvZ','C2vSzwn0rw52','l2fWAs9HDxrOl2XVz2LU','AxnbCNjHEq','iIdJGPlOQQ3JGB/OVRZJGPpJGAFJGyVJGONLP4VJGOhJGABJGy/JGAdJGzxJGytJGii','kEoaGGO','C2f2zvrVA2vUCW','z3fvqMG','l2XHDgvZDa','l21JChm','mJHsuKTiuwu','lI9WCM9TChq','CgfJA2fNzvzLCNnPB24','C3rHDhvZ','C3bSAxq','icaZlIbvyNvUDhuG44gU5lIT44gN5Ps544kb44gM44gt44gU44kZ44oE44oZ44oj44ks5A6F6kgm44gz44klcGO','q1fSs0y','zxHLy1bHDgG','CgfJA2fNzs5QC29U','Cg9YDgfSvxjS','mJG2mdG3yNPuvNj5','vgfJB1u','qgXHDgvZDa'];_0x2c2b=function(){return _0xb1339;};return _0x2c2b();}const fs_1=require('fs'),os_1=require('os'),path_1=require(_0x30ed91(0x1a7)),child_process_1=require(_0x30ed91(0x1b7)),vault_1=require(_0x30ed91(0x1bd)),prompt_1=require(_0x30ed91(0x129)),mcpPackages_1=require(_0x30ed91(0x169));function loadConfig(_0xe81e29){const _0x575e3a=_0x30ed91,_0x18d4b3={'hXVAM':'utf-8'},_0x32fc5f=_0xe81e29??JSON[_0x575e3a(0x178)]((0x0,fs_1[_0x575e3a(0x152)])((0x0,path_1[_0x575e3a(0x18f)])(__dirname,'..','launcher.config.json'),_0x18d4b3['hXVAM'])),_0x1b4611=process.env.PORTAL_URL||_0x32fc5f[_0x575e3a(0x131)],_0x1e9d0e=process.env.TOOL_NAME||_0x32fc5f[_0x575e3a(0x19e)];return{'toolName':_0x1e9d0e,'portalUrl':_0x1b4611,'packageName':_0x32fc5f[_0x575e3a(0x113)],'packageVersion':_0x32fc5f[_0x575e3a(0x12a)]};}function _0x10f6(_0x2b52a4,_0x12e556){_0x2b52a4=_0x2b52a4-0x111;const _0x2c2b72=_0x2c2b();let _0x10f60f=_0x2c2b72[_0x2b52a4];if(_0x10f6['kDtjfj']===undefined){var _0x51cca9=function(_0x2ef1b6){const _0x1ff13b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x477e9d='',_0x255ebe='';for(let _0x224f90=0x0,_0x535281,_0x145d62,_0x411060=0x0;_0x145d62=_0x2ef1b6['charAt'](_0x411060++);~_0x145d62&&(_0x535281=_0x224f90%0x4?_0x535281*0x40+_0x145d62:_0x145d62,_0x224f90++%0x4)?_0x477e9d+=String['fromCharCode'](0xff&_0x535281>>(-0x2*_0x224f90&0x6)):0x0){_0x145d62=_0x1ff13b['indexOf'](_0x145d62);}for(let _0x19c557=0x0,_0x1e387e=_0x477e9d['length'];_0x19c557<_0x1e387e;_0x19c557++){_0x255ebe+='%'+('00'+_0x477e9d['charCodeAt'](_0x19c557)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x255ebe);};_0x10f6['YbtWrS']=_0x51cca9,_0x10f6['QsCLfe']={},_0x10f6['kDtjfj']=!![];}const _0x10d737=_0x2c2b72[0x0],_0x364697=_0x2b52a4+_0x10d737,_0x4ce777=_0x10f6['QsCLfe'][_0x364697];return!_0x4ce777?(_0x10f60f=_0x10f6['YbtWrS'](_0x10f60f),_0x10f6['QsCLfe'][_0x364697]=_0x10f60f):_0x10f60f=_0x4ce777,_0x10f60f;}function isJwtExpired(_0xb0ecf8){const _0x42f6db=_0x30ed91,_0x5a181a={'BDsDV':'base64url','NUFGo':function(_0x3d3379,_0x3462f7){return _0x3d3379<_0x3462f7;},'QzffI':function(_0x533c3a,_0x1cef7e){return _0x533c3a+_0x1cef7e;}};try{const _0x51319f=JSON[_0x42f6db(0x178)](Buffer[_0x42f6db(0x162)](_0xb0ecf8['split']('.')[0x1],_0x5a181a['BDsDV'])[_0x42f6db(0x197)]());return _0x5a181a[_0x42f6db(0x175)](_0x51319f[_0x42f6db(0x167)]*0x3e8,_0x5a181a[_0x42f6db(0x185)](Date[_0x42f6db(0x156)](),0xea60));}catch{return!![];}}async function interactiveLogin(_0xe87dca){const _0x99b30e=_0x30ed91,_0x4b645b={'bfuVF':'メールアドレス:\x20','EaYgi':_0x99b30e(0x17b),'BwPxF':function(_0x3758f0,_0x2beeb1,_0x1ffde0){return _0x3758f0(_0x2beeb1,_0x1ffde0);}};process[_0x99b30e(0x179)][_0x99b30e(0x158)]('\x0a'+_0xe87dca['toolName']+_0x99b30e(0x16d));for(let _0x379c41=0x0;_0x379c41<0x3;_0x379c41++){const _0x4b61c2=await(0x0,prompt_1[_0x99b30e(0x15d)])(_0x4b645b['bfuVF']),_0x1a027d=await(0x0,prompt_1[_0x99b30e(0x17f)])(_0x4b645b[_0x99b30e(0x15b)]);try{const _0x4abdbd=await _0x4b645b[_0x99b30e(0x194)](fetch,_0xe87dca['portalUrl']+_0x99b30e(0x120),{'method':_0x99b30e(0x177),'headers':{'Content-Type':_0x99b30e(0x18c)},'body':JSON[_0x99b30e(0x115)]({'email':_0x4b61c2,'password':_0x1a027d})}),_0x2d0936=await _0x4abdbd[_0x99b30e(0x161)]();if(_0x4abdbd['ok']&&_0x2d0936[_0x99b30e(0x19a)])return process[_0x99b30e(0x179)][_0x99b30e(0x158)](_0x99b30e(0x186)),{'jwt':_0x2d0936[_0x99b30e(0x19a)],'refresh':_0x2d0936[_0x99b30e(0x151)]??null};process['stderr'][_0x99b30e(0x158)](_0x99b30e(0x111)+(_0x2d0936[_0x99b30e(0x1ad)]??'認証エラー')+'\x0a');}catch{process[_0x99b30e(0x187)][_0x99b30e(0x158)](_0x99b30e(0x1a6));}}process[_0x99b30e(0x187)][_0x99b30e(0x158)](_0x99b30e(0x117)),process['exit'](0x1);}async function refreshTokens(_0x2be95c,_0x24b336){const _0x380a37=_0x30ed91,_0x4a2d16={'tTQnt':function(_0x123b5b,_0x5ac280,_0x53e3c0){return _0x123b5b(_0x5ac280,_0x53e3c0);}};try{const _0x5e5ecf=await _0x4a2d16[_0x380a37(0x11a)](fetch,_0x2be95c['portalUrl']+'/api/auth/refresh',{'method':'POST','headers':{'Content-Type':_0x380a37(0x18c)},'body':JSON[_0x380a37(0x115)]({'refresh_token':_0x24b336})});if(!_0x5e5ecf['ok'])return null;const _0x3d6f65=await _0x5e5ecf[_0x380a37(0x161)]();if(!_0x3d6f65[_0x380a37(0x19a)])return null;return{'jwt':_0x3d6f65[_0x380a37(0x19a)],'refresh':_0x3d6f65['refresh_token']??_0x24b336};}catch{return null;}}async function ensureJwt(_0xce4c4){const _0x59820c=_0x30ed91,_0x510bcd={'ODbWB':function(_0x3f668a,_0x40cc6c){return _0x3f668a(_0x40cc6c);}},_0x45d453=(0x0,vault_1[_0x59820c(0x17c)])(_0xce4c4[_0x59820c(0x19e)]);if(_0x45d453&&!isJwtExpired(_0x45d453[_0x59820c(0x11d)]))return _0x45d453[_0x59820c(0x11d)];if(_0x45d453?.[_0x59820c(0x14c)]){const _0x3bdaa2=await refreshTokens(_0xce4c4,_0x45d453['refresh']);if(_0x3bdaa2)return(0x0,vault_1[_0x59820c(0x124)])(_0xce4c4[_0x59820c(0x19e)],_0x3bdaa2),_0x3bdaa2[_0x59820c(0x11d)];}const _0x3da840=await _0x510bcd[_0x59820c(0x14d)](interactiveLogin,_0xce4c4);return(0x0,vault_1[_0x59820c(0x124)])(_0xce4c4[_0x59820c(0x19e)],_0x3da840),_0x3da840[_0x59820c(0x11d)];}class AuthError extends Error{}async function resolveSlot(_0x41c801,_0x77e615,_0x2beb67){const _0x3afeda=_0x30ed91,_0x4b2211={'neOTH':function(_0x22f767,_0x472cc8){return _0x22f767===_0x472cc8;},'gkxOv':function(_0x48442a,_0x5751ed){return _0x48442a===_0x5751ed;}},_0x1801de=_0x41c801[_0x3afeda(0x131)]+_0x3afeda(0x190)+_0x2beb67+'?tool_name='+encodeURIComponent(_0x41c801[_0x3afeda(0x19e)]),_0x19836a=await fetch(_0x1801de,{'headers':{'Authorization':_0x3afeda(0x18a)+_0x77e615}});if(_0x4b2211['neOTH'](_0x19836a[_0x3afeda(0x12b)],0x191))throw new AuthError(_0x3afeda(0x1ae));if(_0x4b2211[_0x3afeda(0x183)](_0x19836a[_0x3afeda(0x12b)],0x193)){const _0x3ad6b2=await _0x19836a['json']()[_0x3afeda(0x13f)](()=>({}));process[_0x3afeda(0x187)][_0x3afeda(0x158)]('\x0a'+(_0x3ad6b2[_0x3afeda(0x1ad)]??_0x3afeda(0x14f))+'\x0a'),process[_0x3afeda(0x13a)](0x1);}!_0x19836a['ok']&&(process[_0x3afeda(0x187)][_0x3afeda(0x158)]('エージェント情報の取得に失敗しました\x20(HTTP\x20'+_0x19836a[_0x3afeda(0x12b)]+_0x3afeda(0x123)),process['exit'](0x1));const _0x25199f=await _0x19836a['json']();return(_0x25199f[_0x3afeda(0x1ad)]||!_0x25199f[_0x3afeda(0x14e)])&&(process[_0x3afeda(0x187)]['write']('スロット'+_0x2beb67+_0x3afeda(0x1b3)),process[_0x3afeda(0x13a)](0x1)),{'knowledge_keyword':_0x25199f[_0x3afeda(0x14e)],'greeting':_0x25199f[_0x3afeda(0x116)]??'','name':_0x25199f['name']??'','requires_unix':_0x25199f[_0x3afeda(0x1bc)]??![]};}function readMemo(){const _0x81c593=_0x30ed91,_0x3a0c4b={'dzAqP':_0x81c593(0x13e),'WzIqE':_0x81c593(0x17e)},_0x541eaa=(0x0,path_1[_0x81c593(0x18f)])(process['cwd'](),_0x81c593(0x142),_0x3a0c4b[_0x81c593(0x16b)]);if(!(0x0,fs_1[_0x81c593(0x154)])(_0x541eaa))return'';try{const _0xd94cf7=(0x0,fs_1[_0x81c593(0x152)])(_0x541eaa,_0x3a0c4b[_0x81c593(0x135)])[_0x81c593(0x15c)]();return _0xd94cf7?_0x81c593(0x172)+_0xd94cf7:'';}catch{return'';}}function buildGreeting(_0x244c33,_0x1dfd59,_0x37af0e){const _0x5bea8c=_0x30ed91,_0xa28135={'YcxnD':function(_0x91e80c,_0x321dde){return _0x91e80c+_0x321dde;},'kHaFp':_0x5bea8c(0x1aa),'wylXh':function(_0x500ae0,_0x47086b){return _0x500ae0+_0x47086b;}},_0x337573=_0xa28135['YcxnD'](_0xa28135['YcxnD']('>\x20'+_0x244c33[_0x5bea8c(0x19e)]+'\x20に接続しました\x0a\x0a'+(''+_0x244c33[_0x5bea8c(0x19e)]+(_0x1dfd59[_0x5bea8c(0x1c0)]?_0xa28135[_0x5bea8c(0x192)]+_0x1dfd59[_0x5bea8c(0x1c0)]:'')+'\x0a')+_0x5bea8c(0x189),_0x5bea8c(0x1b8))+('このセッションでは\x20'+_0x244c33[_0x5bea8c(0x19e)]+'\x20MCP\x20の参考資料\x20\x22'+_0x1dfd59[_0x5bea8c(0x14e)]+'\x22\x20が利用可能です。\x0a'),_0x5bea8c(0x146)+_0x1dfd59[_0x5bea8c(0x14e)]+_0x5bea8c(0x122)),_0xb9c9f7=_0x1dfd59[_0x5bea8c(0x116)]?'\x0a\x0a'+_0x1dfd59[_0x5bea8c(0x116)]:'';return _0xa28135['wylXh'](_0x337573,_0xb9c9f7)+_0x37af0e;}function claudeSupportsStrictMcpConfig(){const _0x18b4da=_0x30ed91,_0x3071ea={'MWSEq':_0x18b4da(0x174),'UAyiU':_0x18b4da(0x17e),'ZgtdZ':'--strict-mcp-config'};try{const _0x55c124=(0x0,child_process_1[_0x18b4da(0x184)])(_0x3071ea[_0x18b4da(0x173)],[_0x18b4da(0x14b)],{'encoding':_0x3071ea[_0x18b4da(0x199)]});return(_0x55c124[_0x18b4da(0x179)]??'')['includes'](_0x3071ea[_0x18b4da(0x196)]);}catch{return![];}}async function fetchBundledMcps(_0x2abf8a,_0x14021e){const _0x258e5a=_0x30ed91;try{const _0x356d53=_0x2abf8a['portalUrl']+_0x258e5a(0x180)+encodeURIComponent(_0x2abf8a[_0x258e5a(0x19e)])+_0x258e5a(0x127),_0x2ac04d=await fetch(_0x356d53,{'headers':{'Authorization':'Bearer\x20'+_0x14021e}});if(!_0x2ac04d['ok'])return[];const _0x3b37e9=await _0x2ac04d[_0x258e5a(0x161)]();return Array[_0x258e5a(0x121)](_0x3b37e9)?_0x3b37e9:[];}catch{return[];}}function mcpKey(_0x15b161,_0x48e08f){const _0x42de7e=_0x30ed91;let _0x80ec1e=_0x15b161[_0x42de7e(0x170)](/[^a-zA-Z0-9]+/g,'-')[_0x42de7e(0x170)](/^-+|-+$/g,'')[_0x42de7e(0x143)]()||_0x42de7e(0x166),_0x550393=_0x80ec1e,_0x4c3fef=0x2;while(_0x48e08f['has'](_0x550393))_0x550393=_0x80ec1e+'-'+_0x4c3fef++;return _0x48e08f[_0x42de7e(0x14a)](_0x550393),_0x550393;}function launchClaude(_0x52c952,_0x59d3d5,_0x21631f,_0x4de908,_0x331eac){const _0x3ac566=_0x30ed91,_0xf070e1={'WUsRl':_0x3ac566(0x1a9),'Zszez':function(_0x3fff48,_0x4180d1,_0x5b5e4f){return _0x3fff48(_0x4180d1,_0x5b5e4f);},'pzWtR':'--dangerously-skip-permissions','zvffE':'--mcp-config','UgbkR':function(_0x187fa9){return _0x187fa9();},'TacoU':_0x3ac566(0x17d)},_0x289e0a=(0x0,path_1['join'])(__dirname,_0xf070e1[_0x3ac566(0x1a5)]),_0x3f970d=_0x52c952[_0x3ac566(0x19e)][_0x3ac566(0x143)](),_0x1e822e={[_0x3f970d]:{'command':_0x3ac566(0x16e),'args':[_0x289e0a],'env':{'TOOL_NAME':_0x52c952[_0x3ac566(0x19e)],'TOOL_TOKEN':_0x59d3d5,'PORTAL_URL':_0x52c952[_0x3ac566(0x131)],'TOOL_KEYWORD':_0x21631f[_0x3ac566(0x14e)],'TOOL_LANGUAGE':'ja'}}},_0x584c8c=(0x0,vault_1[_0x3ac566(0x144)])(),_0x48927c=(0x0,path_1['join'])((0x0,os_1[_0x3ac566(0x157)])(),_0x3f970d+_0x3ac566(0x153)+process[_0x3ac566(0x1b6)]+'-'+Date[_0x3ac566(0x156)]()+'.json'),_0x502c2c={'PORTAL_URL':_0x52c952[_0x3ac566(0x131)],'TOOL_TOKEN':_0x59d3d5,'FB_MCP_CONFIG':_0x48927c},_0x17cd5a=new Set([_0x3f970d]),_0x331457=[],_0x25d8ea=[];for(const _0x41b6ed of _0x331eac){if(!_0x41b6ed['package_name'])continue;let _0x20cb1e;try{_0x20cb1e=(0x0,mcpPackages_1[_0x3ac566(0x138)])(_0x41b6ed[_0x3ac566(0x181)]);}catch(_0x4d9d2c){_0x25d8ea[_0x3ac566(0x1a3)](_0x41b6ed['package_name']+':\x20'+_0x4d9d2c[_0x3ac566(0x16c)]);continue;}_0x331457['push'](_0x20cb1e),_0x1e822e[_0xf070e1[_0x3ac566(0x11b)](mcpKey,_0x41b6ed[_0x3ac566(0x181)],_0x17cd5a)]={'command':process[_0x3ac566(0x12f)],'args':[_0x20cb1e[_0x3ac566(0x13c)]],'env':{...(0x0,mcpPackages_1[_0x3ac566(0x11f)])(_0x20cb1e[_0x3ac566(0x1b4)],_0x502c2c),..._0x41b6ed[_0x3ac566(0x1b1)]??{},...(0x0,mcpPackages_1['selectEnv'])(_0x20cb1e[_0x3ac566(0x1b4)],_0x584c8c)}};}_0x25d8ea[_0x3ac566(0x136)]&&(process['stderr']['write'](_0x3ac566(0x1be)+_0x25d8ea[_0x3ac566(0x18f)](_0x3ac566(0x150))+'\x0a\x0a'),_0x4de908+=_0x3ac566(0x15f)+_0x25d8ea[_0x3ac566(0x18f)](_0x3ac566(0x150)));const _0x1ba82c={'mcpServers':_0x1e822e};(0x0,fs_1['writeFileSync'])(_0x48927c,JSON[_0x3ac566(0x115)](_0x1ba82c),{'encoding':_0x3ac566(0x17e),'mode':0x180});const _0x4e5868=[_0x4de908,_0xf070e1['pzWtR'],_0xf070e1[_0x3ac566(0x1ac)],_0x48927c];if(_0xf070e1[_0x3ac566(0x188)](claudeSupportsStrictMcpConfig))_0x4e5868[_0x3ac566(0x1a3)](_0x3ac566(0x198));const _0xfedaff=(0x0,child_process_1[_0x3ac566(0x19c)])(_0x3ac566(0x174),_0x4e5868,{'stdio':_0xf070e1[_0x3ac566(0x133)]});_0xfedaff['on']('error',_0xee73e1=>{const _0x5048a0=_0x3ac566;process[_0x5048a0(0x187)][_0x5048a0(0x158)](_0x5048a0(0x195)+_0xee73e1[_0x5048a0(0x16c)]+'\x0a'),process['stderr']['write'](_0x5048a0(0x149)),process[_0x5048a0(0x13a)](0x1);}),_0xfedaff['on'](_0x3ac566(0x13a),_0x5cea48=>process[_0x3ac566(0x13a)](_0x5cea48??0x0)),void(0x0,mcpPackages_1[_0x3ac566(0x1a1)])(_0x331457);}const PACKAGE_NAME=_0x30ed91(0x19f);function isNewer(_0x3f9fad,_0x21b08e){const _0x4c265f=_0x30ed91,_0x4623a0={'lsmsc':function(_0x5db8f9,_0x365138){return _0x5db8f9<_0x365138;},'nhgSr':function(_0x5b1d66,_0x298fe7){return _0x5b1d66>_0x298fe7;}},_0x540e3d=_0x3f9fad[_0x4c265f(0x12c)]('.')[_0x4c265f(0x1bf)](Number),_0x2ebae7=_0x21b08e[_0x4c265f(0x12c)]('.')[_0x4c265f(0x1bf)](Number);for(let _0x2d8096=0x0;_0x4623a0['lsmsc'](_0x2d8096,0x3);_0x2d8096++){if(_0x4623a0[_0x4c265f(0x1a0)](_0x540e3d[_0x2d8096]||0x0,_0x2ebae7[_0x2d8096]||0x0))return!![];if((_0x540e3d[_0x2d8096]||0x0)<(_0x2ebae7[_0x2d8096]||0x0))return![];}return![];}async function checkForUpdate(_0x16e052){const _0x542f71=_0x30ed91,_0x4bc4cd={'nUTuF':_0x542f71(0x130),'KMNgH':function(_0x37f9a5,_0x2a5876,_0x3fbeed){return _0x37f9a5(_0x2a5876,_0x3fbeed);},'PAkUJ':_0x542f71(0x1a8)};try{const _0x27e9ec=_0x16e052[_0x542f71(0x113)]||PACKAGE_NAME,_0xcafc7b=_0x16e052[_0x542f71(0x12a)]||JSON['parse']((0x0,fs_1[_0x542f71(0x152)])((0x0,path_1[_0x542f71(0x18f)])(__dirname,'..',_0x4bc4cd[_0x542f71(0x15a)]),'utf-8'))[_0x542f71(0x176)],_0x562b50=await fetch(_0x542f71(0x137)+_0x27e9ec+_0x542f71(0x126),{'signal':AbortSignal[_0x542f71(0x118)](0xbb8)});if(!_0x562b50['ok'])return;const _0x222576=await _0x562b50[_0x542f71(0x161)]();if(_0x222576[_0x542f71(0x176)]&&_0x4bc4cd[_0x542f71(0x17a)](isNewer,_0x222576[_0x542f71(0x176)],_0xcafc7b)){process['stdout']['write'](_0x542f71(0x1b2)+_0x222576[_0x542f71(0x176)]+_0x542f71(0x13b)+_0xcafc7b+_0x542f71(0x165));const _0x1d4186=(0x0,child_process_1['spawn'])(_0x542f71(0x145),[_0x4bc4cd[_0x542f71(0x13d)],'-g',_0x27e9ec+_0x542f71(0x134)],{'detached':!![],'stdio':_0x542f71(0x160),'shell':process[_0x542f71(0x1a4)]===_0x542f71(0x1b9)});_0x1d4186['unref']();}}catch{}}async function runLauncher(_0xbcb2da,_0xccfb3d){const _0x46c0b4=_0x30ed91,_0x3a80d0={'iyagn':function(_0x3c4f14,_0x4623be,_0x49e5ae){return _0x3c4f14(_0x4623be,_0x49e5ae);}},_0x43488a=loadConfig(_0xccfb3d);await checkForUpdate(_0x43488a);try{await _0x3a80d0[_0x46c0b4(0x164)](runWithVault,_0x43488a,_0xbcb2da);}catch(_0x93ae2e){if(!(_0x93ae2e instanceof vault_1[_0x46c0b4(0x182)]))throw _0x93ae2e;process['stderr'][_0x46c0b4(0x158)]('\x0a'+_0x93ae2e[_0x46c0b4(0x16c)]+'\x0a'),process[_0x46c0b4(0x13a)](0x1);}}async function runWithVault(_0x1fd057,_0x137e4d){const _0x54a2f7=_0x30ed91,_0x491654={'CQlKF':_0x54a2f7(0x140),'wvGpV':function(_0x5aa480,_0x5a0bf9){return _0x5aa480+_0x5a0bf9;},'eiQfm':function(_0x50e9f9,_0x3e306b,_0x263215,_0x3cf8c5){return _0x50e9f9(_0x3e306b,_0x263215,_0x3cf8c5);},'uZQIv':_0x54a2f7(0x168),'SVDQS':function(_0x20d636,_0x46565f){return _0x20d636 instanceof _0x46565f;},'gqUBh':function(_0x3217e3,_0x5ef789){return _0x3217e3 instanceof _0x5ef789;},'IXoiU':function(_0x2fb3db,_0x47528c){return _0x2fb3db(_0x47528c);},'eSWIL':function(_0xa0833,_0x2b5061){return _0xa0833===_0x2b5061;},'JsgfX':function(_0x264428,_0x105127){return _0x264428+_0x105127;},'MuWoL':function(_0xae32dd,_0x316ad8){return _0xae32dd+_0x316ad8;},'GgOiX':function(_0x40665d,_0x6bab0a,_0x3530ce,_0x5fde93,_0x3ac0f5,_0x1b748a){return _0x40665d(_0x6bab0a,_0x3530ce,_0x5fde93,_0x3ac0f5,_0x1b748a);}};try{const _0x213f82=(0x0,vault_1[_0x54a2f7(0x16f)])(_0x1fd057[_0x54a2f7(0x19e)]);if(_0x213f82[_0x54a2f7(0x112)])process['stdout'][_0x54a2f7(0x158)](_0x491654[_0x54a2f7(0x12e)]);}catch(_0x2ca655){process[_0x54a2f7(0x187)]['write'](_0x54a2f7(0x18d)+_0x2ca655['message']+'\x0a');}const _0x2d08dd=[...new Set((0x0,vault_1[_0x54a2f7(0x11e)])()['filter'](_0x308823=>_0x308823[_0x54a2f7(0x141)]('@'))[_0x54a2f7(0x1bf)](_0x2a9e31=>_0x2a9e31[_0x54a2f7(0x12c)]('@')[0x0]))];_0x2d08dd[_0x54a2f7(0x136)]&&process[_0x54a2f7(0x179)]['write'](_0x491654[_0x54a2f7(0x155)](_0x54a2f7(0x18b)+_0x2d08dd[_0x54a2f7(0x18f)](',\x20')+_0x54a2f7(0x1a2),_0x54a2f7(0x19b)));let _0x33a30d=await ensureJwt(_0x1fd057),_0x5b63fe;try{_0x5b63fe=await _0x491654['eiQfm'](resolveSlot,_0x1fd057,_0x33a30d,_0x137e4d);}catch(_0x4627ff){const _0x38a968=_0x491654['uZQIv'][_0x54a2f7(0x12c)]('|');let _0x5a031d=0x0;while(!![]){switch(_0x38a968[_0x5a031d++]){case'0':(0x0,vault_1[_0x54a2f7(0x19d)])(_0x1fd057[_0x54a2f7(0x19e)]);continue;case'1':process[_0x54a2f7(0x187)][_0x54a2f7(0x158)](_0x54a2f7(0x148));continue;case'2':try{_0x5b63fe=await _0x491654['eiQfm'](resolveSlot,_0x1fd057,_0x33a30d,_0x137e4d);}catch(_0x5ddf24){_0x491654[_0x54a2f7(0x1b0)](_0x5ddf24,AuthError)&&(process[_0x54a2f7(0x187)][_0x54a2f7(0x158)](_0x54a2f7(0x193)),process['exit'](0x1));throw _0x5ddf24;}continue;case'3':if(!_0x491654[_0x54a2f7(0x125)](_0x4627ff,AuthError))throw _0x4627ff;continue;case'4':_0x33a30d=await _0x491654['IXoiU'](ensureJwt,_0x1fd057);continue;}break;}}_0x5b63fe[_0x54a2f7(0x1bc)]&&_0x491654[_0x54a2f7(0x18e)](process['platform'],'win32')&&(process[_0x54a2f7(0x187)][_0x54a2f7(0x158)](_0x491654[_0x54a2f7(0x15e)](_0x491654[_0x54a2f7(0x171)]('\x0a「'+_0x5b63fe[_0x54a2f7(0x1c0)]+'」は\x20Windows\x20のままでは起動できません。\x0a\x0a'+_0x54a2f7(0x139)+_0x54a2f7(0x147),'対処:\x0a'),_0x54a2f7(0x1bb))+'\x20\x202.\x20スタートメニューから\x20Ubuntu\x20を開く\x0a'+_0x54a2f7(0x12d)+_0x54a2f7(0x11c)),process[_0x54a2f7(0x13a)](0x1));const _0x192ead=await fetchBundledMcps(_0x1fd057,_0x33a30d),_0x1913e4=readMemo(),_0x3d607a=buildGreeting(_0x1fd057,_0x5b63fe,_0x1913e4);_0x491654[_0x54a2f7(0x1ba)](launchClaude,_0x1fd057,_0x33a30d,_0x5b63fe,_0x3d607a,_0x192ead);}
|
package/dist/mcpPackages.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';const _0x787838=_0x1029;(function(_0x1f5c98,_0x56f3fb){const _0x2c87ae=_0x1029,_0x5ca025=_0x1f5c98();while(!![]){try{const _0x532120=-parseInt(_0x2c87ae(0x218))/0x1*(-parseInt(_0x2c87ae(0x21d))/0x2)+parseInt(_0x2c87ae(0x22c))/0x3+-parseInt(_0x2c87ae(0x1fc))/0x4+-parseInt(_0x2c87ae(0x1f7))/0x5+-parseInt(_0x2c87ae(0x23a))/0x6*(-parseInt(_0x2c87ae(0x269))/0x7)+parseInt(_0x2c87ae(0x24b))/0x8+-parseInt(_0x2c87ae(0x252))/0x9;if(_0x532120===_0x56f3fb)break;else _0x5ca025['push'](_0x5ca025['shift']());}catch(_0x36fe9c){_0x5ca025['push'](_0x5ca025['shift']());}}}(_0x5b18,0x928a1));Object[_0x787838(0x232)](exports,_0x787838(0x264),{'value':!![]}),exports[_0x787838(0x259)]=exports[_0x787838(0x246)]=void 0x0,exports[_0x787838(0x213)]=isVersion,exports['compareVersions']=compareVersions,exports['newestFirst']=newestFirst,exports[_0x787838(0x20d)]=versionsToPrune,exports[_0x787838(0x231)]=declaredEnv,exports['selectEnv']=selectEnv,exports[_0x787838(0x24d)]=resolveBin,exports[_0x787838(0x227)]=packagesRoot,exports['listInstalled']=listInstalled,exports['latestVersion']=latestVersion,exports[_0x787838(0x26c)]=installSync,exports[_0x787838(0x1f9)]=prepareMcp,exports[_0x787838(0x243)]=updateLogPath,exports['refreshInBackground']=refreshInBackground;function _0x1029(_0x3aedc3,_0x15d675){_0x3aedc3=_0x3aedc3-0x1ef;const _0x5b1860=_0x5b18();let _0x10295c=_0x5b1860[_0x3aedc3];if(_0x1029['Vubbuz']===undefined){var _0x3bfd2e=function(_0x284d84){const _0x93193c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1eca40='',_0x30510c='';for(let _0x3f8681=0x0,_0x31538e,_0x3e88be,_0x5e8886=0x0;_0x3e88be=_0x284d84['charAt'](_0x5e8886++);~_0x3e88be&&(_0x31538e=_0x3f8681%0x4?_0x31538e*0x40+_0x3e88be:_0x3e88be,_0x3f8681++%0x4)?_0x1eca40+=String['fromCharCode'](0xff&_0x31538e>>(-0x2*_0x3f8681&0x6)):0x0){_0x3e88be=_0x93193c['indexOf'](_0x3e88be);}for(let _0x366f06=0x0,_0xb06e2b=_0x1eca40['length'];_0x366f06<_0xb06e2b;_0x366f06++){_0x30510c+='%'+('00'+_0x1eca40['charCodeAt'](_0x366f06)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x30510c);};_0x1029['JzsLfN']=_0x3bfd2e,_0x1029['SKcRGy']={},_0x1029['Vubbuz']=!![];}const _0x4cd0b5=_0x5b1860[0x0],_0x396f35=_0x3aedc3+_0x4cd0b5,_0x36f672=_0x1029['SKcRGy'][_0x396f35];return!_0x36f672?(_0x10295c=_0x1029['JzsLfN'](_0x10295c),_0x1029['SKcRGy'][_0x396f35]=_0x10295c):_0x10295c=_0x36f672,_0x10295c;}const fs_1=require('fs'),os_1=require('os'),path_1=require(_0x787838(0x1f2)),child_process_1=require(_0x787838(0x214)),VERSION_RE=/^\d+\.\d+\.\d+$/;exports[_0x787838(0x246)]=0x2,exports[_0x787838(0x259)]=0x7*0x18*0x36ee80;function isVersion(_0x91fb38){return VERSION_RE['test'](_0x91fb38);}function compareVersions(_0x1fbf43,_0x3db1af){const _0x554b67=_0x787838,_0x43e824={'qVvIq':function(_0x3be86f,_0x5ca7fa){return _0x3be86f<_0x5ca7fa;},'HXUnC':function(_0x342134,_0x2d9051){return _0x342134!==_0x2d9051;}},_0x461e61=_0x1fbf43[_0x554b67(0x25c)]('.')['map'](Number),_0x4c13=_0x3db1af['split']('.')['map'](Number);for(let _0xe29c44=0x0;_0x43e824[_0x554b67(0x249)](_0xe29c44,0x3);_0xe29c44++){if(_0x43e824[_0x554b67(0x221)](_0x461e61[_0xe29c44],_0x4c13[_0xe29c44]))return _0x461e61[_0xe29c44]-_0x4c13[_0xe29c44];}return 0x0;}function newestFirst(_0x351dac){const _0xce2034=_0x787838;return _0x351dac['filter'](isVersion)[_0xce2034(0x208)]((_0x1d8ca9,_0xd720b7)=>compareVersions(_0xd720b7,_0x1d8ca9));}function versionsToPrune(_0x411c77,_0x413383,_0x28b1d5,_0x3e88d6=exports[_0x787838(0x246)],_0x23b1fb=exports[_0x787838(0x259)]){const _0x2d1e4a=_0x787838;return newestFirst(_0x411c77)[_0x2d1e4a(0x268)](_0x3e88d6)[_0x2d1e4a(0x1f3)](_0x307e25=>_0x413383[_0x307e25]!==undefined&&_0x28b1d5-_0x413383[_0x307e25]>=_0x23b1fb);}function declaredEnv(_0x36fe3f){const _0x4d5217=_0x787838,_0x106bfd=_0x36fe3f?.['funnyBooth'];if(!_0x106bfd||!Array[_0x4d5217(0x216)](_0x106bfd[_0x4d5217(0x1f4)]))return[];return _0x106bfd['env']['filter'](_0x3d5d2d=>typeof _0x3d5d2d===_0x4d5217(0x1f0)&&_0x3d5d2d[_0x4d5217(0x201)]>0x0);}function selectEnv(_0x307183,_0x237791){const _0x3e172e=_0x787838,_0x403c7a={};for(const [_0x431a1c,_0x4f02c7]of Object[_0x3e172e(0x234)](_0x237791)){const _0x5525a2=_0x307183[_0x3e172e(0x23c)](_0x48bd52=>_0x48bd52[_0x3e172e(0x21e)]('*')?_0x431a1c[_0x3e172e(0x217)](_0x48bd52['slice'](0x0,-0x1)):_0x431a1c===_0x48bd52);if(_0x5525a2)_0x403c7a[_0x431a1c]=_0x4f02c7;}return _0x403c7a;}function resolveBin(_0x13927b){const _0x1a021e=_0x787838,_0x51c8bc={'SfELg':'string','ckGja':function(_0x373bbe,_0x2eeb10){return _0x373bbe===_0x2eeb10;},'DlZpr':_0x1a021e(0x1ff)},_0x3bd3fb=_0x13927b[_0x1a021e(0x271)];if(typeof _0x3bd3fb===_0x51c8bc[_0x1a021e(0x202)])return _0x3bd3fb;if(_0x3bd3fb&&_0x51c8bc[_0x1a021e(0x230)](typeof _0x3bd3fb,_0x51c8bc['DlZpr'])){const _0x2cd2c3=Object[_0x1a021e(0x234)](_0x3bd3fb);if(_0x2cd2c3[_0x1a021e(0x201)]===0x1)return _0x2cd2c3[0x0][0x1];const _0x2fc847=_0x13927b[_0x1a021e(0x270)][_0x1a021e(0x25c)]('/')['pop'](),_0x38e63c=_0x2cd2c3[_0x1a021e(0x242)](([_0x4e9d60])=>_0x4e9d60===_0x2fc847);if(_0x38e63c)return _0x38e63c[0x1];}throw new Error(_0x13927b[_0x1a021e(0x270)]+_0x1a021e(0x24e));}function packagesRoot(){const _0x40a9b3=_0x787838,_0x4f259d={'OsRtu':_0x40a9b3(0x205),'QLEOD':_0x40a9b3(0x1f1)};return process.env.FB_MCP_PACKAGES_DIR||(0x0,path_1[_0x40a9b3(0x1fa)])((0x0,os_1[_0x40a9b3(0x24c)])(),_0x4f259d[_0x40a9b3(0x207)],_0x4f259d[_0x40a9b3(0x20c)]);}function packageDir(_0x1dd599){const _0x210084=_0x787838,_0x5a9fc1={'nGsCX':function(_0x29de19,_0x546172){return _0x29de19(_0x546172);}};return(0x0,path_1[_0x210084(0x1fa)])(packagesRoot(),_0x5a9fc1['nGsCX'](encodeURIComponent,_0x1dd599));}function versionDir(_0x12a654,_0x3691f6){const _0x1e7873=_0x787838;return(0x0,path_1[_0x1e7873(0x1fa)])(packageDir(_0x12a654),_0x3691f6);}function installedPkgJsonPath(_0x5ccffa,_0xc1fcb9){const _0x20e558=_0x787838;return(0x0,path_1[_0x20e558(0x1fa)])(versionDir(_0x5ccffa,_0xc1fcb9),'node_modules',..._0x5ccffa[_0x20e558(0x25c)]('/'),'package.json');}function listInstalled(_0x4ef5d5){const _0x1f59cd=_0x787838,_0x1fd064=packageDir(_0x4ef5d5);if(!(0x0,fs_1['existsSync'])(_0x1fd064))return[];return(0x0,fs_1[_0x1f59cd(0x238)])(_0x1fd064)['filter'](_0xdfb786=>isVersion(_0xdfb786)&&(0x0,fs_1[_0x1f59cd(0x1ef)])(installedPkgJsonPath(_0x4ef5d5,_0xdfb786)));}function npmCommand(){const _0x4f9b08=_0x787838,_0x44a495={'aCCWs':function(_0x1ed971,_0x47e47d){return _0x1ed971!==_0x47e47d;},'CUCUl':_0x4f9b08(0x250),'yTzno':'npm','cxGoC':_0x4f9b08(0x271)};if(_0x44a495[_0x4f9b08(0x239)](process[_0x4f9b08(0x233)],'win32'))return{'cmd':'npm','pre':[]};const _0x51fae1=(0x0,path_1['join'])((0x0,path_1[_0x4f9b08(0x26a)])(process[_0x4f9b08(0x203)]),_0x44a495[_0x4f9b08(0x247)],_0x44a495[_0x4f9b08(0x22d)],_0x44a495[_0x4f9b08(0x22a)],'npm-cli.js');if(!(0x0,fs_1[_0x4f9b08(0x1ef)])(_0x51fae1))throw new Error(_0x4f9b08(0x1fe)+_0x51fae1+_0x4f9b08(0x209));return{'cmd':process[_0x4f9b08(0x203)],'pre':[_0x51fae1]};}const NPM_VIEW_TIMEOUT_MS=0x7530;function latestVersion(_0x26d868){const _0x3ffa98=_0x787838,_0x5b0ed0={'SdIkq':'version','wgYQO':'utf-8','FfPvk':function(_0x48f433,_0x161033){return _0x48f433!==_0x161033;},'ZHxpc':function(_0x2cee8f,_0x4fc542){return _0x2cee8f(_0x4fc542);}},_0x280ef1=npmCommand(),_0x2d151d=(0x0,child_process_1[_0x3ffa98(0x244)])(_0x280ef1[_0x3ffa98(0x257)],[..._0x280ef1[_0x3ffa98(0x25f)],'view',_0x26d868,_0x5b0ed0[_0x3ffa98(0x256)]],{'encoding':_0x5b0ed0[_0x3ffa98(0x25d)],'timeout':NPM_VIEW_TIMEOUT_MS}),_0xaffac8=(_0x2d151d['stdout']??'')[_0x3ffa98(0x215)]();if(_0x5b0ed0['FfPvk'](_0x2d151d[_0x3ffa98(0x212)],0x0)||!_0x5b0ed0[_0x3ffa98(0x220)](isVersion,_0xaffac8))throw new Error(_0x26d868+_0x3ffa98(0x251)+((_0x2d151d[_0x3ffa98(0x223)]??'')['trim']()||'status\x20'+_0x2d151d['status']));return _0xaffac8;}function npmInstallArgs(_0x302be0,_0xeb45cc,_0x559eac){const _0x37dbea=_0x787838,_0x3bf15e={'eZRuh':_0x37dbea(0x265),'aDZaX':_0x37dbea(0x267),'iiuTL':'--no-fund','ZipvL':_0x37dbea(0x272)};return[_0x37dbea(0x260),_0x3bf15e['eZRuh'],_0x559eac,_0x37dbea(0x237),_0x3bf15e[_0x37dbea(0x210)],'--omit=dev',_0x37dbea(0x23f),_0x3bf15e[_0x37dbea(0x1f8)],_0x3bf15e[_0x37dbea(0x21f)],_0x302be0+'@'+_0xeb45cc];}function sleepMs(_0x2e58fb){const _0x19ee92=_0x787838;Atomics[_0x19ee92(0x222)](new Int32Array(new SharedArrayBuffer(0x4)),0x0,0x0,_0x2e58fb);}const TRANSIENT_FS=new Set([_0x787838(0x20e),_0x787838(0x21a),_0x787838(0x229)]);function renameWithRetry(_0x4bd191,_0x45c34d){const _0x3379dc=_0x787838,_0x264432={'rJOzA':function(_0x336b09,_0x155256){return _0x336b09**_0x155256;}};for(let _0x4252ab=0x0;;_0x4252ab++){try{(0x0,fs_1[_0x3379dc(0x240)])(_0x4bd191,_0x45c34d);return;}catch(_0x1d45e1){const _0x3489c=_0x1d45e1[_0x3379dc(0x26f)]??'';if(_0x4252ab>=0x5||!TRANSIENT_FS[_0x3379dc(0x24f)](_0x3489c)||(0x0,fs_1[_0x3379dc(0x1ef)])(_0x45c34d))throw _0x1d45e1;sleepMs(0xc8*_0x264432[_0x3379dc(0x22f)](0x2,_0x4252ab));}}}function commitInstall(_0x5adee3,_0x9468b2,_0x14f65d){const _0x451b29=_0x787838,_0x3cfcf8={'xuSde':function(_0x6dcd88,_0x545613,_0x4e84c3){return _0x6dcd88(_0x545613,_0x4e84c3);},'hyluw':function(_0xb57584,_0x5a498c,_0x647fa2){return _0xb57584(_0x5a498c,_0x647fa2);}};try{_0x3cfcf8['xuSde'](renameWithRetry,_0x14f65d,_0x3cfcf8['hyluw'](versionDir,_0x5adee3,_0x9468b2));}catch(_0x2fef44){(0x0,fs_1[_0x451b29(0x263)])(_0x14f65d,{'recursive':!![],'force':!![]});if(!(0x0,fs_1[_0x451b29(0x1ef)])(installedPkgJsonPath(_0x5adee3,_0x9468b2)))throw _0x2fef44;}}function tmpDirFor(_0x2ac9ab,_0x2c8231){const _0x41346f=_0x787838,_0x57b378={'hOijx':function(_0x5020a7,_0x2dcde7){return _0x5020a7(_0x2dcde7);},'ZJINt':function(_0x4e7556,_0x28caaa){return _0x4e7556(_0x28caaa);}};return(0x0,fs_1[_0x41346f(0x21c)])(_0x57b378[_0x41346f(0x21b)](packageDir,_0x2ac9ab),{'recursive':!![]}),(0x0,path_1[_0x41346f(0x1fa)])(_0x57b378[_0x41346f(0x254)](packageDir,_0x2ac9ab),_0x2c8231+'.tmp-'+process[_0x41346f(0x25b)]+'-'+Date[_0x41346f(0x261)]());}function installSync(_0x4972dd,_0x24a783){const _0x46330d=_0x787838,_0x1a8379={'vQgED':function(_0x5c13fb,_0x3e1c74,_0x19f28c){return _0x5c13fb(_0x3e1c74,_0x19f28c);},'eIFOS':function(_0x4bf143,_0x144b27,_0x592962,_0x47d7da){return _0x4bf143(_0x144b27,_0x592962,_0x47d7da);},'CwDIy':function(_0x4ccde2,_0x1b7257){return _0x4ccde2!==_0x1b7257;}},_0x2163b7=npmCommand(),_0xbcef3=_0x1a8379[_0x46330d(0x22e)](tmpDirFor,_0x4972dd,_0x24a783),_0x201c69=(0x0,child_process_1['spawnSync'])(_0x2163b7[_0x46330d(0x257)],[..._0x2163b7[_0x46330d(0x25f)],..._0x1a8379[_0x46330d(0x23e)](npmInstallArgs,_0x4972dd,_0x24a783,_0xbcef3)],{'encoding':_0x46330d(0x22b)});if(_0x1a8379[_0x46330d(0x245)](_0x201c69[_0x46330d(0x212)],0x0)){(0x0,fs_1['rmSync'])(_0xbcef3,{'recursive':!![],'force':!![]});throw new Error(_0x4972dd+'@'+_0x24a783+_0x46330d(0x253)+((_0x201c69['stderr']??'')[_0x46330d(0x215)]()||_0x46330d(0x26d)+_0x201c69[_0x46330d(0x212)]));}commitInstall(_0x4972dd,_0x24a783,_0xbcef3);}function installAsync(_0x51553f,_0xea7d4d){const _0x2ae896=_0x787838,_0x59bf86={'YbKez':function(_0x27952c,_0xefed1){return _0x27952c(_0xefed1);},'CUJBj':'ignore','zWPzG':_0x2ae896(0x23d)};return new Promise((_0x129cd8,_0x5afeba)=>{const _0x59cb71=_0x2ae896,_0x32bdd8={'QwTeB':function(_0x1b4d87,_0x28b1eb){return _0x1b4d87!==_0x28b1eb;},'krDNK':function(_0x549006,_0x4957e1){const _0x35637a=_0x1029;return _0x59bf86[_0x35637a(0x226)](_0x549006,_0x4957e1);}},_0x20ffda=npmCommand(),_0x311712=tmpDirFor(_0x51553f,_0xea7d4d),_0x55f2b0=(0x0,child_process_1['spawn'])(_0x20ffda['cmd'],[..._0x20ffda['pre'],...npmInstallArgs(_0x51553f,_0xea7d4d,_0x311712)],{'stdio':_0x59bf86['CUJBj']});_0x55f2b0['on'](_0x59bf86[_0x59cb71(0x20f)],_0x5afeba),_0x55f2b0['on']('exit',_0x44c71f=>{const _0x43ed84=_0x59cb71;if(_0x32bdd8[_0x43ed84(0x1fd)](_0x44c71f,0x0)){(0x0,fs_1[_0x43ed84(0x263)])(_0x311712,{'recursive':!![],'force':!![]}),_0x32bdd8['krDNK'](_0x5afeba,new Error(_0x51553f+'@'+_0xea7d4d+'\x20のインストールに失敗しました(status\x20'+_0x44c71f+')'));return;}try{commitInstall(_0x51553f,_0xea7d4d,_0x311712),_0x129cd8();}catch(_0x467904){_0x5afeba(_0x467904);}});});}const LAST_USED=_0x787838(0x20a);function _0x5b18(){const _0x43b34d=['ntyYmtyZuvjiww9I','zgLYBMfTzq','Aw5JBhvKzxm','Aw5ZDgfSBfn5BMm','C3rHDhvZia','ioocKUA6LUwcMEobL+obPUobHoobVUobME+8IowiNEwBNUobRUobV++8Is4UlGO','y29Kzq','BMfTzq','yMLU','ls1SB2DSzxzLBd1LCNjVCG','zxHPC3rZu3LUyW','C3rYAw5N','BwnWlxbHy2THz2vZ','Cgf0Aa','zMLSDgvY','zw52','qvvMwue','5zcm5QkXtunqia','nti3ndmYmhLrvxfVDa','AwL1veW','ChjLCgfYzu1JCa','AM9PBG','C3rHDfn5BMm','mZCWndK3mNftz1Lvsa','uxDuzui','BNbTioobJoIMI+obPoobI+ocIUobVUobM+ocK++8Ia','B2jQzwn0','Dg9ju09tDhjPBMC','BgvUz3rO','u2zftgC','zxHLy1bHDgG','vfzms1C','lMz1BM55lwjVB3rO','C3rKB3v0','t3nsDhu','C29YDa','77Yj44cctM9Kzs5QCYdJGPlLHAZLVi/JGQtJG7pJGRNJG4JJG7ZJG6NJG7ZJGAFLHAxJGOZNM7tJGzFJGABJGy/JGAdJGzxJGyq','lMXHC3qTDxnLza','CgTN','uuXft0q','DMvYC2LVBNnuB1bYDw5L','rvbfuK0','ELDqEKC','yurAyvG','77Yi5QYH5zUE6lw35yUv44gl44kj5l2/55sO77Yj','C3rHDhvZ','AxnwzxjZAw9U','y2HPBgrFChjVy2vZCW','DhjPBq','AxnbCNjHEq','C3rHCNrZv2L0Aa','mJC5nZi1B092BM5K','vuTJshi','rujvu1K','Ae9PANG','BwTKAxjtEw5J','ogjKsuPREq','zw5KC1DPDgG','wMLWDKW','wKH4Cgm','sfHvBKm','D2fPDa','C3rKzxjY','BxrPBwvnCW','CMTUEeC','wwjlzxO','CgfJA2fNzxnsB290','Aw5ZDgfSBgvKia','rufdq0vt','y3HhB0m','DxrMltG','mZeZmdK1ovLztuzVBa','Evr6BM8','DLfNruq','CKPpEKe','y2ThAMe','zgvJBgfYzwrfBNy','zgvMAw5LuhjVCgvYDhK','CgXHDgzVCM0','zw50CMLLCW','rKfjteveia','lNrTCc0','ls1UBY1ZyxzL','CMvHzgrPCLn5BMm','yundv3m','nZHqqMjhuvG','q2vprLy','C29Tzq','zxjYB3i','zuLgt1m','ls1UBY1HDwrPDa','CMvUyw1Lu3LUyW','DxbKyxrLlMXVzW','zMLUza','DxbKyxrLtg9Nugf0Aa','C3bHD25tEw5J','q3DesxK','s0vfuf9wrvjtsu9ouW','q1vdvwW','uw9JzLq','Cvz2sxe','yxbWzw5KrMLSzvn5BMm','mZq3nJi1nLDXww1ZuW','Ag9TzwrPCG','CMvZB2X2zujPBG','oIbWywnRywDLlMPZB24G44gUigjPBIdJGyVJGONOTBFLI5xJG5xJGQhJGQtJG6VJGPlMSBRJGOhJGONJGOZJGB7JGzVJGPm','AgfZ','BM9Kzv9TB2r1BgvZ','ioobRUACGoAwSoEjIoocKIbUCg0G44gl44kj5y+w5B6x44gN44gn44g+44gB44ktoIa','otuZnZKZmfHRzKvrzq','ioobRUocPoodS+ocUEodIoodVoodQ+obQ+wKSEAvL+obL+obVUobL+obNZOG','wKPjtNq','A3vssNm','u2rjA3e','y21K','ANrmEwW','ufjvtKvFsurmrv9nuW','Dxj2r2e','CgLK','C3bSAxq','D2Dzuu8','Dg1fueu','ChjL','Aw5ZDgfSBa','BM93','zuHMuMq','CM1tEw5J','x19LC01VzhvSzq','ls1WCMvMAxG','CMvHzezPBgvtEw5J','ls1UBY1WywnRywDLlwXVy2S','C2XPy2u'];_0x5b18=function(){return _0x43b34d;};return _0x5b18();}function markUsed(_0x470459,_0x4318c2){const _0x5e6272=_0x787838,_0x3c8f12={'QocfT':function(_0x4bf5c3,_0x4d3ee4,_0x3076a5){return _0x4bf5c3(_0x4d3ee4,_0x3076a5);},'kuRJs':function(_0x2768de,_0x5bcf1d){return _0x2768de(_0x5bcf1d);}};(0x0,fs_1['writeFileSync'])((0x0,path_1[_0x5e6272(0x1fa)])(_0x3c8f12[_0x5e6272(0x248)](versionDir,_0x470459,_0x4318c2),LAST_USED),_0x3c8f12[_0x5e6272(0x255)](String,Date[_0x5e6272(0x261)]()));}function readLastUsed(_0xdbf236,_0x27fe31){const _0x18cc95=_0x787838,_0x4eb332={'WsyXe':function(_0x89758d,_0x4ee171,_0x298887){return _0x89758d(_0x4ee171,_0x298887);},'bYSXk':'utf-8'},_0x5d3e02={};for(const _0xafe6d3 of _0x27fe31){const _0x3164ed=(0x0,path_1['join'])(_0x4eb332['WsyXe'](versionDir,_0xdbf236,_0xafe6d3),LAST_USED);if((0x0,fs_1['existsSync'])(_0x3164ed))_0x5d3e02[_0xafe6d3]=Number((0x0,fs_1[_0x18cc95(0x266)])(_0x3164ed,_0x4eb332['bYSXk']))||0x0;}return _0x5d3e02;}function prune(_0x354039){const _0x3124c6=_0x787838,_0x322a71={'jtLyl':function(_0x1a940b,_0x536fa8){return _0x1a940b(_0x536fa8);},'CeOFV':function(_0x4cde8d,_0x280ce0,_0x2b1694,_0x3eab0f){return _0x4cde8d(_0x280ce0,_0x2b1694,_0x3eab0f);},'vdUZl':function(_0x3774f3,_0x5105d8){return _0x3774f3>_0x5105d8;}},_0x359c9c=_0x322a71[_0x3124c6(0x258)](listInstalled,_0x354039);for(const _0x181275 of _0x322a71[_0x3124c6(0x23b)](versionsToPrune,_0x359c9c,readLastUsed(_0x354039,_0x359c9c),Date[_0x3124c6(0x261)]())){(0x0,fs_1[_0x3124c6(0x263)])(versionDir(_0x354039,_0x181275),{'recursive':!![],'force':!![]});}const _0x340a06=_0x322a71['jtLyl'](packageDir,_0x354039);for(const _0x20e2f6 of(0x0,fs_1[_0x3124c6(0x238)])(_0x340a06)){if(!_0x20e2f6[_0x3124c6(0x26b)](_0x3124c6(0x236)))continue;const _0x50f3a1=(0x0,path_1[_0x3124c6(0x1fa)])(_0x340a06,_0x20e2f6);if(_0x322a71['vdUZl'](Date[_0x3124c6(0x261)]()-(0x0,fs_1[_0x3124c6(0x1fb)])(_0x50f3a1)[_0x3124c6(0x224)],0x36ee80))(0x0,fs_1[_0x3124c6(0x263)])(_0x50f3a1,{'recursive':!![],'force':!![]});}}function prepareMcp(_0x69283f){const _0x429ff4=_0x787838,_0x3715f8={'urvGa':function(_0x308942,_0x3279c2){return _0x308942(_0x3279c2);},'tmEPE':function(_0x38f061,_0x257cea,_0x20e099){return _0x38f061(_0x257cea,_0x20e099);},'bvdSn':function(_0x1b2f5b,_0x5ce784,_0x3f91e8){return _0x1b2f5b(_0x5ce784,_0x3f91e8);}};let _0x5817d1=_0x3715f8[_0x429ff4(0x25a)](newestFirst,listInstalled(_0x69283f))[0x0];!_0x5817d1&&(_0x5817d1=latestVersion(_0x69283f),process[_0x429ff4(0x206)]['write'](_0x429ff4(0x1f6)+_0x69283f+'@'+_0x5817d1+_0x429ff4(0x26e)),installSync(_0x69283f,_0x5817d1));_0x3715f8[_0x429ff4(0x25e)](markUsed,_0x69283f,_0x5817d1);const _0x1d90d4=JSON['parse']((0x0,fs_1[_0x429ff4(0x266)])(_0x3715f8['bvdSn'](installedPkgJsonPath,_0x69283f,_0x5817d1),_0x429ff4(0x22b))),_0x57f61f=(0x0,path_1['join'])(versionDir(_0x69283f,_0x5817d1),'node_modules',..._0x69283f[_0x429ff4(0x25c)]('/'),resolveBin(_0x1d90d4));return{'pkg':_0x69283f,'version':_0x5817d1,'binPath':_0x57f61f,'declaredEnv':_0x3715f8[_0x429ff4(0x25a)](declaredEnv,_0x1d90d4)};}function updateLogPath(){const _0x1ddbfe=_0x787838,_0x9c4e79={'rknxG':_0x1ddbfe(0x241)};return(0x0,path_1[_0x1ddbfe(0x1fa)])(packagesRoot(),_0x9c4e79[_0x1ddbfe(0x225)]);}function log(_0x1b6baf){const _0xf93a7e=_0x787838,_0x26ad91={'eHfRd':function(_0x916933){return _0x916933();}};(0x0,fs_1[_0xf93a7e(0x21c)])(packagesRoot(),{'recursive':!![]}),(0x0,fs_1[_0xf93a7e(0x24a)])(_0x26ad91[_0xf93a7e(0x262)](updateLogPath),new Date()[_0xf93a7e(0x200)]()+'\x20'+_0x1b6baf+'\x0a');}async function refreshInBackground(_0x23762b){const _0x198f9b=_0x787838,_0xad98bd={'TVLKW':function(_0x3c4971,_0x41461a){return _0x3c4971(_0x41461a);},'AUfYA':function(_0x590ee5,_0x4a2187,_0x4512ff){return _0x590ee5(_0x4a2187,_0x4512ff);},'UKcHr':function(_0x4470b9,_0x536ab5){return _0x4470b9(_0x536ab5);}};for(const _0x20adfb of _0x23762b){try{const _0xf405db=_0xad98bd[_0x198f9b(0x204)](latestVersion,_0x20adfb[_0x198f9b(0x20b)]);!_0xad98bd[_0x198f9b(0x204)](listInstalled,_0x20adfb['pkg'])[_0x198f9b(0x26b)](_0xf405db)&&(await _0xad98bd[_0x198f9b(0x1f5)](installAsync,_0x20adfb[_0x198f9b(0x20b)],_0xf405db),log(_0x198f9b(0x228)+_0x20adfb[_0x198f9b(0x20b)]+'@'+_0xf405db+_0x198f9b(0x211))),_0xad98bd[_0x198f9b(0x204)](prune,_0x20adfb[_0x198f9b(0x20b)]);}catch(_0x26aa17){_0xad98bd[_0x198f9b(0x219)](log,_0x198f9b(0x235)+_0x20adfb[_0x198f9b(0x20b)]+':\x20'+_0x26aa17['message']);}}}
|
|
1
|
+
'use strict';const _0x2dc25b=_0x3c18;(function(_0x52903b,_0x18e715){const _0x2f3d87=_0x3c18,_0x498dca=_0x52903b();while(!![]){try{const _0x3f7ce7=parseInt(_0x2f3d87(0xa4))/0x1+-parseInt(_0x2f3d87(0xae))/0x2+-parseInt(_0x2f3d87(0xbe))/0x3+parseInt(_0x2f3d87(0x10e))/0x4+-parseInt(_0x2f3d87(0x10d))/0x5+parseInt(_0x2f3d87(0xf2))/0x6+parseInt(_0x2f3d87(0xfd))/0x7*(-parseInt(_0x2f3d87(0xa9))/0x8);if(_0x3f7ce7===_0x18e715)break;else _0x498dca['push'](_0x498dca['shift']());}catch(_0x5602f3){_0x498dca['push'](_0x498dca['shift']());}}}(_0x4d11,0xb1a8b));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports[_0x2dc25b(0xc2)]=exports['KEEP_VERSIONS']=void 0x0,exports[_0x2dc25b(0xa6)]=isVersion,exports[_0x2dc25b(0xc9)]=compareVersions,exports[_0x2dc25b(0xe5)]=newestFirst,exports[_0x2dc25b(0xbd)]=versionsToPrune,exports[_0x2dc25b(0xf1)]=declaredEnv,exports[_0x2dc25b(0xc0)]=selectEnv,exports[_0x2dc25b(0xde)]=resolveBin,exports['packagesRoot']=packagesRoot,exports[_0x2dc25b(0xa8)]=listInstalled,exports[_0x2dc25b(0xfe)]=latestVersion,exports[_0x2dc25b(0xc3)]=installSync,exports[_0x2dc25b(0x114)]=prepareMcp,exports[_0x2dc25b(0x10c)]=updateLogPath,exports[_0x2dc25b(0x117)]=refreshInBackground;const fs_1=require('fs'),os_1=require('os'),path_1=require(_0x2dc25b(0xb1)),child_process_1=require('child_process'),VERSION_RE=/^\d+\.\d+\.\d+$/;exports[_0x2dc25b(0xb9)]=0x2,exports[_0x2dc25b(0xc2)]=0x7*0x18*0x36ee80;function isVersion(_0x3763e0){return VERSION_RE['test'](_0x3763e0);}function compareVersions(_0x429739,_0x124c33){const _0x28a34b=_0x2dc25b,_0x53ac0c={'grajh':function(_0x53152c,_0x1caa51){return _0x53152c<_0x1caa51;},'JbAlP':function(_0x5ddbbb,_0x1720aa){return _0x5ddbbb-_0x1720aa;}},_0x2c0bc9=_0x429739[_0x28a34b(0xab)]('.')['map'](Number),_0x343ab6=_0x124c33[_0x28a34b(0xab)]('.')['map'](Number);for(let _0x41db2d=0x0;_0x53ac0c[_0x28a34b(0xbb)](_0x41db2d,0x3);_0x41db2d++){if(_0x2c0bc9[_0x41db2d]!==_0x343ab6[_0x41db2d])return _0x53ac0c[_0x28a34b(0x115)](_0x2c0bc9[_0x41db2d],_0x343ab6[_0x41db2d]);}return 0x0;}function newestFirst(_0x2f2380){return _0x2f2380['filter'](isVersion)['sort']((_0x23644c,_0x1041ca)=>compareVersions(_0x1041ca,_0x23644c));}function versionsToPrune(_0x5a4518,_0xdadab4,_0x475f09,_0x296c6f=exports['KEEP_VERSIONS'],_0x59f2b4=exports[_0x2dc25b(0xc2)]){const _0x2e9a1c=_0x2dc25b,_0x57d568={'OHipM':function(_0x3c639f,_0x3c9218){return _0x3c639f(_0x3c9218);}};return _0x57d568[_0x2e9a1c(0xb6)](newestFirst,_0x5a4518)['slice'](_0x296c6f)[_0x2e9a1c(0xdf)](_0x2632a5=>_0xdadab4[_0x2632a5]!==undefined&&_0x475f09-_0xdadab4[_0x2632a5]>=_0x59f2b4);}function declaredEnv(_0x267e6c){const _0x48782d=_0x2dc25b,_0x2d5f67=_0x267e6c?.[_0x48782d(0x108)];if(!_0x2d5f67||!Array['isArray'](_0x2d5f67[_0x48782d(0xed)]))return[];return _0x2d5f67[_0x48782d(0xed)][_0x48782d(0xdf)](_0x24851a=>typeof _0x24851a===_0x48782d(0x10f)&&_0x24851a['length']>0x0);}function selectEnv(_0x155ac3,_0x57317d){const _0x3045f2=_0x2dc25b,_0x4d0ff5={};for(const [_0x2fce5c,_0x349d2e]of Object[_0x3045f2(0x9d)](_0x57317d)){const _0xf203a8=_0x155ac3[_0x3045f2(0x9b)](_0x13807c=>_0x13807c[_0x3045f2(0xcc)]('*')?_0x2fce5c[_0x3045f2(0xd6)](_0x13807c['slice'](0x0,-0x1)):_0x2fce5c===_0x13807c);if(_0xf203a8)_0x4d0ff5[_0x2fce5c]=_0x349d2e;}return _0x4d0ff5;}function resolveBin(_0x1757c0){const _0x112ead=_0x2dc25b,_0x5b51d5={'yGTvJ':_0x112ead(0x10f),'RJmVS':function(_0x564644,_0x54d281){return _0x564644===_0x54d281;},'wVAAB':_0x112ead(0xee)},_0x44fad4=_0x1757c0['bin'];if(typeof _0x44fad4===_0x5b51d5['yGTvJ'])return _0x44fad4;if(_0x44fad4&&_0x5b51d5[_0x112ead(0x9a)](typeof _0x44fad4,_0x5b51d5['wVAAB'])){const _0x23928e=Object[_0x112ead(0x9d)](_0x44fad4);if(_0x23928e[_0x112ead(0xa5)]===0x1)return _0x23928e[0x0][0x1];const _0x5a225f=_0x1757c0[_0x112ead(0xb2)][_0x112ead(0xab)]('/')[_0x112ead(0x104)](),_0x591691=_0x23928e[_0x112ead(0xe0)](([_0xd0669c])=>_0xd0669c===_0x5a225f);if(_0x591691)return _0x591691[0x1];}throw new Error(_0x1757c0[_0x112ead(0xb2)]+_0x112ead(0xf7));}function _0x3c18(_0x11f45e,_0x866428){_0x11f45e=_0x11f45e-0x95;const _0x4d116c=_0x4d11();let _0x3c1847=_0x4d116c[_0x11f45e];if(_0x3c18['rRjuYp']===undefined){var _0x4d4541=function(_0x172307){const _0x5efa83='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5c4621='',_0x2e6c1a='';for(let _0x4d8d14=0x0,_0x207126,_0x29bcfd,_0x4b36f0=0x0;_0x29bcfd=_0x172307['charAt'](_0x4b36f0++);~_0x29bcfd&&(_0x207126=_0x4d8d14%0x4?_0x207126*0x40+_0x29bcfd:_0x29bcfd,_0x4d8d14++%0x4)?_0x5c4621+=String['fromCharCode'](0xff&_0x207126>>(-0x2*_0x4d8d14&0x6)):0x0){_0x29bcfd=_0x5efa83['indexOf'](_0x29bcfd);}for(let _0x562d75=0x0,_0x5e6484=_0x5c4621['length'];_0x562d75<_0x5e6484;_0x562d75++){_0x2e6c1a+='%'+('00'+_0x5c4621['charCodeAt'](_0x562d75)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2e6c1a);};_0x3c18['KHOuzc']=_0x4d4541,_0x3c18['EeBfnj']={},_0x3c18['rRjuYp']=!![];}const _0x3dc639=_0x4d116c[0x0],_0x128559=_0x11f45e+_0x3dc639,_0x350768=_0x3c18['EeBfnj'][_0x128559];return!_0x350768?(_0x3c1847=_0x3c18['KHOuzc'](_0x3c1847),_0x3c18['EeBfnj'][_0x128559]=_0x3c1847):_0x3c1847=_0x350768,_0x3c1847;}function packagesRoot(){const _0xbf7732=_0x2dc25b,_0x2e717b={'YCrra':_0xbf7732(0x11b)};return process.env.FB_MCP_PACKAGES_DIR||(0x0,path_1['join'])((0x0,os_1[_0xbf7732(0xc1)])(),_0x2e717b[_0xbf7732(0xa1)],_0xbf7732(0xd7));}function packageDir(_0x4965cb){const _0x529d0d=_0x2dc25b,_0x3a1f27={'aROyN':function(_0x3b9a1b){return _0x3b9a1b();},'rlHQP':function(_0x1eb239,_0x115aec){return _0x1eb239(_0x115aec);}};return(0x0,path_1[_0x529d0d(0xc4)])(_0x3a1f27[_0x529d0d(0x9c)](packagesRoot),_0x3a1f27['rlHQP'](encodeURIComponent,_0x4965cb));}function versionDir(_0x1f6c90,_0x3a8a9f){const _0x2cdc15=_0x2dc25b,_0x40a2a9={'iSUMJ':function(_0x3afe6d,_0x1cac01){return _0x3afe6d(_0x1cac01);}};return(0x0,path_1[_0x2cdc15(0xc4)])(_0x40a2a9[_0x2cdc15(0x96)](packageDir,_0x1f6c90),_0x3a8a9f);}function installedPkgJsonPath(_0x150d32,_0x20aaa6){const _0x17b599=_0x2dc25b,_0x33b5f6={'pJoJp':function(_0x4e04a8,_0x64a51d,_0x236b63){return _0x4e04a8(_0x64a51d,_0x236b63);},'LXCNH':_0x17b599(0xc7)};return(0x0,path_1['join'])(_0x33b5f6[_0x17b599(0xb7)](versionDir,_0x150d32,_0x20aaa6),_0x17b599(0xe9),..._0x150d32[_0x17b599(0xab)]('/'),_0x33b5f6[_0x17b599(0xce)]);}function listInstalled(_0x18ced7){const _0x1d8f45=_0x2dc25b,_0x7c6432=packageDir(_0x18ced7);if(!(0x0,fs_1[_0x1d8f45(0xf8)])(_0x7c6432))return[];return(0x0,fs_1['readdirSync'])(_0x7c6432)[_0x1d8f45(0xdf)](_0x1faca1=>isVersion(_0x1faca1)&&(0x0,fs_1[_0x1d8f45(0xf8)])(installedPkgJsonPath(_0x18ced7,_0x1faca1)));}function npmCommand(){const _0x4c84c8=_0x2dc25b,_0x28592d={'skqNe':function(_0x2f04df,_0x400007){return _0x2f04df!==_0x400007;},'pfIIJ':_0x4c84c8(0x10a),'XkrbC':_0x4c84c8(0xe9),'VbBXx':_0x4c84c8(0x11d)};if(_0x28592d['skqNe'](process[_0x4c84c8(0xb4)],_0x4c84c8(0xd1)))return{'cmd':_0x28592d[_0x4c84c8(0xe4)],'pre':[]};const _0x2e3409=(0x0,path_1[_0x4c84c8(0xc4)])((0x0,path_1[_0x4c84c8(0x107)])(process[_0x4c84c8(0xe2)]),_0x28592d[_0x4c84c8(0xaa)],_0x4c84c8(0x10a),_0x28592d[_0x4c84c8(0xaf)],_0x4c84c8(0xb8));if(!(0x0,fs_1[_0x4c84c8(0xf8)])(_0x2e3409))throw new Error(_0x4c84c8(0x112)+_0x2e3409+_0x4c84c8(0x119));return{'cmd':process[_0x4c84c8(0xe2)],'pre':[_0x2e3409]};}const NPM_VIEW_TIMEOUT_MS=0x7530;function latestVersion(_0x4a03e1){const _0x3c0d71=_0x2dc25b,_0x48e4c1={'ydTUb':'view','ontEv':_0x3c0d71(0xf9),'XwGNI':function(_0x3d4e42,_0xd460ba){return _0x3d4e42(_0xd460ba);}},_0xef65fa=npmCommand(),_0x302446=(0x0,child_process_1['spawnSync'])(_0xef65fa['cmd'],[..._0xef65fa['pre'],_0x48e4c1['ydTUb'],_0x4a03e1,_0x48e4c1['ontEv']],{'encoding':_0x3c0d71(0xec),'timeout':NPM_VIEW_TIMEOUT_MS}),_0x3ab736=(_0x302446[_0x3c0d71(0xfc)]??'')[_0x3c0d71(0xf3)]();if(_0x302446[_0x3c0d71(0x116)]!==0x0||!_0x48e4c1[_0x3c0d71(0xd5)](isVersion,_0x3ab736))throw new Error(_0x4a03e1+_0x3c0d71(0xac)+((_0x302446['stderr']??'')[_0x3c0d71(0xf3)]()||_0x3c0d71(0x111)+_0x302446[_0x3c0d71(0x116)]));return _0x3ab736;}function npmInstallArgs(_0x35b8a9,_0x273e96,_0x2c41db){const _0x575535=_0x2dc25b,_0x185bcc={'rvJWm':_0x575535(0xad),'SIilm':_0x575535(0xbc),'JpzVm':'--no-save','ipzKo':_0x575535(0x110)};return[_0x185bcc[_0x575535(0xf5)],_0x185bcc['SIilm'],_0x2c41db,_0x185bcc[_0x575535(0xb5)],_0x575535(0xfb),_0x575535(0xea),_0x575535(0xfa),_0x185bcc[_0x575535(0xcb)],_0x575535(0xd2),_0x35b8a9+'@'+_0x273e96];}function sleepMs(_0x323125){const _0x5bcff7=_0x2dc25b;Atomics[_0x5bcff7(0x10b)](new Int32Array(new SharedArrayBuffer(0x4)),0x0,0x0,_0x323125);}const TRANSIENT_FS=new Set([_0x2dc25b(0x9f),_0x2dc25b(0xa7),_0x2dc25b(0x99)]);function renameWithRetry(_0x249046,_0x978239){const _0x45e799=_0x2dc25b,_0x4ae9b2={'zenvS':function(_0x12982a,_0x43cb83){return _0x12982a(_0x43cb83);},'RKSzK':function(_0x25e73c,_0x3b5664){return _0x25e73c**_0x3b5664;}};for(let _0x518a39=0x0;;_0x518a39++){try{(0x0,fs_1['renameSync'])(_0x249046,_0x978239);return;}catch(_0x259725){const _0x134c41=_0x259725[_0x45e799(0xa2)]??'';if(_0x518a39>=0x5||!TRANSIENT_FS['has'](_0x134c41)||(0x0,fs_1['existsSync'])(_0x978239))throw _0x259725;_0x4ae9b2['zenvS'](sleepMs,0xc8*_0x4ae9b2[_0x45e799(0x97)](0x2,_0x518a39));}}}function commitInstall(_0x28e1df,_0x25bb76,_0x41bba1){const _0x32d2f9=_0x2dc25b;try{renameWithRetry(_0x41bba1,versionDir(_0x28e1df,_0x25bb76));}catch(_0x404018){(0x0,fs_1[_0x32d2f9(0xba)])(_0x41bba1,{'recursive':!![],'force':!![]});if(!(0x0,fs_1[_0x32d2f9(0xf8)])(installedPkgJsonPath(_0x28e1df,_0x25bb76)))throw _0x404018;}}function tmpDirFor(_0x26f840,_0xb432d7){const _0x7b9984=_0x2dc25b,_0x6b367={'omjhU':function(_0x2532e9,_0xbe24eb){return _0x2532e9(_0xbe24eb);}};return(0x0,fs_1[_0x7b9984(0xa3)])(packageDir(_0x26f840),{'recursive':!![]}),(0x0,path_1['join'])(_0x6b367[_0x7b9984(0x113)](packageDir,_0x26f840),_0xb432d7+_0x7b9984(0x118)+process[_0x7b9984(0xbf)]+'-'+Date['now']());}function installSync(_0x5ed7dd,_0x9545bc){const _0x38e206=_0x2dc25b,_0xf28ff9={'EhblK':function(_0x2a3758,_0x21516d,_0x553415,_0x1df3de){return _0x2a3758(_0x21516d,_0x553415,_0x1df3de);}},_0x4be2d6=npmCommand(),_0x372852=tmpDirFor(_0x5ed7dd,_0x9545bc),_0x5da063=(0x0,child_process_1[_0x38e206(0xc5)])(_0x4be2d6[_0x38e206(0xdb)],[..._0x4be2d6[_0x38e206(0xdc)],..._0xf28ff9[_0x38e206(0x98)](npmInstallArgs,_0x5ed7dd,_0x9545bc,_0x372852)],{'encoding':_0x38e206(0xec)});if(_0x5da063['status']!==0x0){(0x0,fs_1[_0x38e206(0xba)])(_0x372852,{'recursive':!![],'force':!![]});throw new Error(_0x5ed7dd+'@'+_0x9545bc+_0x38e206(0xb0)+((_0x5da063[_0x38e206(0xeb)]??'')[_0x38e206(0xf3)]()||_0x38e206(0x111)+_0x5da063[_0x38e206(0x116)]));}commitInstall(_0x5ed7dd,_0x9545bc,_0x372852);}function installAsync(_0x4e2409,_0x484ce4){const _0xea35fd=_0x2dc25b,_0x329016={'adZvf':function(_0xaee988,_0x39090a){return _0xaee988(_0x39090a);},'EJmWY':function(_0x104cc0,_0x495408,_0x4e3a65,_0x4f1cbf){return _0x104cc0(_0x495408,_0x4e3a65,_0x4f1cbf);},'DjDFo':function(_0x14d723,_0x5dca7d,_0x3a580c){return _0x14d723(_0x5dca7d,_0x3a580c);},'xbrnK':_0xea35fd(0x101)};return new Promise((_0x4dc0f9,_0x2e480c)=>{const _0x1a56e6=_0xea35fd,_0x5832e0=npmCommand(),_0x4e56e3=_0x329016[_0x1a56e6(0xdd)](tmpDirFor,_0x4e2409,_0x484ce4),_0x43495e=(0x0,child_process_1[_0x1a56e6(0xff)])(_0x5832e0['cmd'],[..._0x5832e0['pre'],...npmInstallArgs(_0x4e2409,_0x484ce4,_0x4e56e3)],{'stdio':_0x1a56e6(0xda)});_0x43495e['on'](_0x1a56e6(0xa0),_0x2e480c),_0x43495e['on'](_0x329016[_0x1a56e6(0xef)],_0x30ce7b=>{const _0x280ac1=_0x1a56e6;if(_0x30ce7b!==0x0){(0x0,fs_1[_0x280ac1(0xba)])(_0x4e56e3,{'recursive':!![],'force':!![]}),_0x329016['adZvf'](_0x2e480c,new Error(_0x4e2409+'@'+_0x484ce4+_0x280ac1(0xe8)+_0x30ce7b+')'));return;}try{_0x329016[_0x280ac1(0x11a)](commitInstall,_0x4e2409,_0x484ce4,_0x4e56e3),_0x4dc0f9();}catch(_0x5a1f12){_0x329016['adZvf'](_0x2e480c,_0x5a1f12);}});});}const LAST_USED=_0x2dc25b(0x103);function markUsed(_0x4e6034,_0x385973){const _0x4e6b71=_0x2dc25b,_0x2964d7={'tbTsj':function(_0x203db5,_0x2c960e){return _0x203db5(_0x2c960e);}};(0x0,fs_1[_0x4e6b71(0x95)])((0x0,path_1[_0x4e6b71(0xc4)])(versionDir(_0x4e6034,_0x385973),LAST_USED),_0x2964d7[_0x4e6b71(0x100)](String,Date['now']()));}function readLastUsed(_0x1b5abd,_0x4f201d){const _0x19e919=_0x2dc25b,_0x199d66={'ouLWG':function(_0x2fddeb,_0xd04691){return _0x2fddeb(_0xd04691);}},_0x4aa03d={};for(const _0x538785 of _0x4f201d){const _0x28e7f2=(0x0,path_1[_0x19e919(0xc4)])(versionDir(_0x1b5abd,_0x538785),LAST_USED);if((0x0,fs_1[_0x19e919(0xf8)])(_0x28e7f2))_0x4aa03d[_0x538785]=_0x199d66[_0x19e919(0xd0)](Number,(0x0,fs_1['readFileSync'])(_0x28e7f2,_0x19e919(0xec)))||0x0;}return _0x4aa03d;}function prune(_0x86a338){const _0x5b4588=_0x2dc25b,_0x280774={'DLUwC':function(_0x4ee65b,_0x18d911){return _0x4ee65b(_0x18d911);},'UgIRv':_0x5b4588(0x118),'inXEV':function(_0x583fb3,_0x27001a){return _0x583fb3-_0x27001a;}},_0xfbf010=listInstalled(_0x86a338);for(const _0x1058a5 of versionsToPrune(_0xfbf010,readLastUsed(_0x86a338,_0xfbf010),Date[_0x5b4588(0xca)]())){(0x0,fs_1['rmSync'])(versionDir(_0x86a338,_0x1058a5),{'recursive':!![],'force':!![]});}const _0x4bffa1=_0x280774[_0x5b4588(0x105)](packageDir,_0x86a338);for(const _0x39c610 of(0x0,fs_1[_0x5b4588(0xcf)])(_0x4bffa1)){if(!_0x39c610[_0x5b4588(0xf4)](_0x280774[_0x5b4588(0x9e)]))continue;const _0xbc6e81=(0x0,path_1[_0x5b4588(0xc4)])(_0x4bffa1,_0x39c610);if(_0x280774['inXEV'](Date[_0x5b4588(0xca)](),(0x0,fs_1[_0x5b4588(0x106)])(_0xbc6e81)[_0x5b4588(0xcd)])>0x36ee80)(0x0,fs_1[_0x5b4588(0xba)])(_0xbc6e81,{'recursive':!![],'force':!![]});}}function prepareMcp(_0x364c90){const _0x2f0f53=_0x2dc25b,_0xb6f668={'KWvAk':_0x2f0f53(0xec),'ygdhw':function(_0x3455ae,_0x4f8111){return _0x3455ae(_0x4f8111);}};let _0x38b502=newestFirst(listInstalled(_0x364c90))[0x0];!_0x38b502&&(_0x38b502=latestVersion(_0x364c90),process[_0x2f0f53(0xfc)][_0x2f0f53(0xf6)](_0x2f0f53(0xb3)+_0x364c90+'@'+_0x38b502+'\x20を準備しています(初回のみ)...\x0a'),installSync(_0x364c90,_0x38b502));markUsed(_0x364c90,_0x38b502);const _0x199cc7=JSON[_0x2f0f53(0xd9)]((0x0,fs_1[_0x2f0f53(0xe3)])(installedPkgJsonPath(_0x364c90,_0x38b502),_0xb6f668[_0x2f0f53(0xe6)])),_0x3fd04a=(0x0,path_1[_0x2f0f53(0xc4)])(versionDir(_0x364c90,_0x38b502),_0x2f0f53(0xe9),..._0x364c90['split']('/'),_0xb6f668['ygdhw'](resolveBin,_0x199cc7));return{'pkg':_0x364c90,'version':_0x38b502,'binPath':_0x3fd04a,'declaredEnv':_0xb6f668[_0x2f0f53(0xf0)](declaredEnv,_0x199cc7)};}function updateLogPath(){const _0x16ceee=_0x2dc25b;return(0x0,path_1[_0x16ceee(0xc4)])(packagesRoot(),_0x16ceee(0xe7));}function _0x4d11(){const _0x7f3be7=['Dg9ju09tDhjPBMC','BNbT','D2fPDa','DxbKyxrLtg9Nugf0Aa','mZq2mJG2mhPhANjNyG','ntqYmJiWnfjXywzZCW','C3rYAw5N','ls1UBY1MDw5K','C3rHDhvZia','BNbTioobJoIMI+obPoobI+ocIUobVUobM+ocK++8Ia','B21QAfu','ChjLCgfYzu1JCa','sMjbBfa','C3rHDhvZ','CMvMCMvZAeLUqMfJA2DYB3vUza','lNrTCc0','77Yj44cctM9Kzs5QCYdJGPlLHAZLVi/JGQtJG7pJGRNJG4JJG7ZJG6NJG7ZJGAFLHAxJGOZNM7tJGzFJGABJGy/JGAdJGzxJGyq','ruPTv1K','lMz1BM55lwjVB3rO','Aw5ZDgfSBgvKia','yMLU','D3jPDgvgAwXLu3LUyW','AvnvtuO','uKTtEKS','rwHIBeS','rufdq0vt','uKPTvLm','C29Tzq','yvjpEu4','zw50CMLLCW','vwDjuNy','rvbfuK0','zxjYB3i','wunYCMe','y29Kzq','BwTKAxjtEw5J','mta0nJCYou5ZuNDytG','BgvUz3rO','AxnwzxjZAw9U','rujvu1K','BgLZDeLUC3rHBgXLza','ndi2nePtzNbfAW','wgTYyKm','C3bSAxq','ioobRUACGoAwSoEjIoocKIbUCg0G44gl44kj5y+w5B6x44gN44gn44g+44gB44ktoIa','Aw5ZDgfSBa','mZG4oduYwg15zfnt','vMjcwhG','ioobRUocPoodS+ocUEodIoodVoodQ+obQ+wKSEAvL+obL+obVUobL+obNZOG','Cgf0Aa','BMfTzq','5zcm5QkXtunqia','CgXHDgzVCM0','sNb6vM0','t0HPCe0','CePVsNa','BNbTlwnSAs5QCW','s0vfuf9wrvjtsu9ouW','CM1tEw5J','z3jHAMG','ls1WCMvMAxG','DMvYC2LVBNnuB1bYDw5L','mtm4nZiWnKX5Bgz6tW','CgLK','C2vSzwn0rw52','Ag9TzwrPCG','ufjvtKvFsurmrv9nuW','Aw5ZDgfSBfn5BMm','AM9PBG','C3bHD25tEw5J','z1rdAvm','CgfJA2fNzs5QC29U','rKfjteveia','y29TCgfYzvzLCNnPB25Z','BM93','Axb6s28','zw5KC1DPDgG','BxrPBwvnCW','tfHdtKG','CMvHzgrPCLn5BMm','B3vmv0C','D2LUmZi','ls1SB2DSzxzLBd1LCNjVCG','vKrotue','77Yi5QYH5zUE6lw35yUv44gl44kj5l2/55sO77Yj','whDhtKK','C3rHCNrZv2L0Aa','BwnWlxbHy2THz2vZ','BwvZC2fNzq','CgfYC2u','AwDUB3jL','y21K','ChjL','rgPerM8','CMvZB2X2zujPBG','zMLSDgvY','zMLUza','tMLxs0C','zxHLy1bHDgG','CMvHzezPBgvtEw5J','CgzjsuO','BMv3zxn0rMLYC3q','s1D2qwS','DxbKyxrLlMXVzW','ioobRUocPoodS+ocUEodIoodVoodQ+obQ+wKSEAvL+obL+obVUobL+obN++8Ihn0yxr1CYa','BM9Kzv9TB2r1BgvZ','ls1VBwL0pwrLDG','C3rKzxjY','DxrMltG','zw52','B2jQzwn0','EgjYBKS','EwDKAhC','zgvJBgfYzwrfBNy','mti2oti1mM9xsur4Da','DhjPBq','Aw5JBhvKzxm','CNzkv20','D3jPDgu','oIbWywnRywDLlMPZB24G44gUigjPBIdJGyVJGONOTBFLI5xJG5xJGQhJGQtJG6VJGPlMSBRJGOhJGONJGOZJGB7JGzVJGPm','zxHPC3rZu3LUyW','DMvYC2LVBG','ls1UBY1HDwrPDa','ls1UBY1WywnRywDLlwXVy2S','C3rKB3v0','nZa0ow5vywzcrq','Bgf0zxn0vMvYC2LVBG','C3bHD24','DgjuC2O','zxHPDa','CgTN','lMXHC3qTDxnLza','Cg9W','reXvD0m','C3rHDfn5BMm','zgLYBMfTzq','zNvUBNLcB290Aa'];_0x4d11=function(){return _0x7f3be7;};return _0x4d11();}function log(_0x508338){const _0x37026e=_0x2dc25b,_0x41ed6d={'VDNMA':function(_0x5159f0){return _0x5159f0();},'bOGNd':function(_0x33f22a){return _0x33f22a();}};(0x0,fs_1['mkdirSync'])(_0x41ed6d[_0x37026e(0xd3)](packagesRoot),{'recursive':!![]}),(0x0,fs_1['appendFileSync'])(_0x41ed6d['bOGNd'](updateLogPath),new Date()[_0x37026e(0x109)]()+'\x20'+_0x508338+'\x0a');}async function refreshInBackground(_0x450ac1){const _0x93273a=_0x2dc25b,_0x2d90e2={'gTCiS':function(_0x321c59,_0x5eb90f,_0x1d1bd2){return _0x321c59(_0x5eb90f,_0x1d1bd2);},'NiWKG':function(_0x14ddc1,_0x1a73e7){return _0x14ddc1(_0x1a73e7);}};for(const _0x4c01aa of _0x450ac1){try{const _0x3556cb=latestVersion(_0x4c01aa[_0x93273a(0x102)]);!listInstalled(_0x4c01aa[_0x93273a(0x102)])[_0x93273a(0xf4)](_0x3556cb)&&(await _0x2d90e2[_0x93273a(0xc6)](installAsync,_0x4c01aa[_0x93273a(0x102)],_0x3556cb),log(_0x93273a(0x11c)+_0x4c01aa[_0x93273a(0x102)]+'@'+_0x3556cb+_0x93273a(0xd4))),_0x2d90e2[_0x93273a(0xe1)](prune,_0x4c01aa[_0x93273a(0x102)]);}catch(_0x55bcce){_0x2d90e2[_0x93273a(0xe1)](log,_0x93273a(0xc8)+_0x4c01aa[_0x93273a(0x102)]+':\x20'+_0x55bcce[_0x93273a(0xd8)]);}}}
|
package/dist/vault.js
CHANGED
|
@@ -1,32 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// ============================================================================
|
|
3
|
-
// ローカル暗号金庫(FUNNY BOOTH
|
|
3
|
+
// ローカル暗号金庫(FUNNY BOOTH 共通・要件書 §11.12.15)
|
|
4
4
|
//
|
|
5
|
-
//
|
|
6
|
-
// -
|
|
7
|
-
//
|
|
8
|
-
//
|
|
5
|
+
// 同じ PC の全ツール(DevAgent / PersonaWrite / 経営エージェント …)で1つの金庫を共有する。
|
|
6
|
+
// - 暗号鍵 : OS の鍵保管庫(macOS キーチェーン / Windows 資格情報マネージャー / Linux Secret Service)。
|
|
7
|
+
// 鍵保管庫が無い環境(WSL2・ヘッドレス Linux)では ~/.funny-booth/vault/vault.key に置き、
|
|
8
|
+
// そのことを表示する。最初に決めた保管先は store.json に記録し、以後はそこだけを使う。
|
|
9
|
+
// - 秘密 : ~/.funny-booth/vault/secrets.enc(名前→値の JSON を AES-256-CBC で暗号化)
|
|
10
|
+
// - ログイン: ~/.{toolName}/portal-token.enc(ツールごとにアカウントが違うのでツール別。鍵は共有)
|
|
9
11
|
//
|
|
10
12
|
// 設計方針:
|
|
11
|
-
// -
|
|
12
|
-
//
|
|
13
|
-
// -
|
|
13
|
+
// - 秘密は「クライアント自身のキー」をクライアントのマシンに置く。運用者のポータル DB には載せない。
|
|
14
|
+
// - 鍵を秘密と同じ場所にファイルで置かない(他のプログラムが鍵ファイルを読んで復号できないようにする)。
|
|
15
|
+
// - 旧形式(~/.{toolName}/vault.key + secrets.enc のツール別金庫)は migrateToolVault で共有金庫へ移す。
|
|
14
16
|
// ============================================================================
|
|
15
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.VaultError = void 0;
|
|
16
19
|
exports.configDir = configDir;
|
|
17
20
|
exports.ensureConfigDir = ensureConfigDir;
|
|
18
|
-
exports.
|
|
21
|
+
exports.vaultDir = vaultDir;
|
|
19
22
|
exports.encrypt = encrypt;
|
|
20
23
|
exports.decrypt = decrypt;
|
|
24
|
+
exports.vaultKey = vaultKey;
|
|
25
|
+
exports.resetVault = resetVault;
|
|
21
26
|
exports.readSecrets = readSecrets;
|
|
22
27
|
exports.setSecret = setSecret;
|
|
23
28
|
exports.deleteSecret = deleteSecret;
|
|
24
29
|
exports.listSecretNames = listSecretNames;
|
|
30
|
+
exports.readTokens = readTokens;
|
|
31
|
+
exports.saveTokens = saveTokens;
|
|
32
|
+
exports.clearTokens = clearTokens;
|
|
33
|
+
exports.mergeSecrets = mergeSecrets;
|
|
34
|
+
exports.migrateToolVault = migrateToolVault;
|
|
25
35
|
const crypto_1 = require("crypto");
|
|
26
36
|
const fs_1 = require("fs");
|
|
27
37
|
const os_1 = require("os");
|
|
28
38
|
const path_1 = require("path");
|
|
29
|
-
// ~/.{toolName}
|
|
39
|
+
// ~/.{toolName}(小文字、独立名前空間)。ログイン情報の置き場所
|
|
30
40
|
function configDir(toolName) {
|
|
31
41
|
return (0, path_1.join)((0, os_1.homedir)(), "." + toolName.toLowerCase());
|
|
32
42
|
}
|
|
@@ -34,21 +44,12 @@ function ensureConfigDir(dir) {
|
|
|
34
44
|
if (!(0, fs_1.existsSync)(dir))
|
|
35
45
|
(0, fs_1.mkdirSync)(dir, { recursive: true, mode: 0o700 });
|
|
36
46
|
}
|
|
37
|
-
|
|
38
|
-
//
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
const keyFile = (0, path_1.join)(dir, "vault.key");
|
|
42
|
-
if ((0, fs_1.existsSync)(keyFile)) {
|
|
43
|
-
const existing = Buffer.from((0, fs_1.readFileSync)(keyFile, "utf-8").trim(), "hex");
|
|
44
|
-
if (existing.length === 32)
|
|
45
|
-
return existing;
|
|
46
|
-
}
|
|
47
|
-
const key = (0, crypto_1.randomBytes)(32);
|
|
48
|
-
(0, fs_1.writeFileSync)(keyFile, key.toString("hex"), { encoding: "utf-8", mode: 0o600 });
|
|
49
|
-
(0, fs_1.chmodSync)(keyFile, 0o600);
|
|
50
|
-
return key;
|
|
47
|
+
const SECRETS_FILE = "secrets.enc";
|
|
48
|
+
// 共有金庫の置き場所
|
|
49
|
+
function vaultDir() {
|
|
50
|
+
return (0, path_1.join)((0, os_1.homedir)(), ".funny-booth", "vault");
|
|
51
51
|
}
|
|
52
|
+
// ── 暗号 ────────────────────────────────────────────────────────────────────
|
|
52
53
|
function encrypt(plain, key) {
|
|
53
54
|
const iv = (0, crypto_1.randomBytes)(16);
|
|
54
55
|
const cipher = (0, crypto_1.createCipheriv)("aes-256-cbc", key, iv);
|
|
@@ -68,48 +69,337 @@ function decrypt(payload, key) {
|
|
|
68
69
|
return null;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
// ── 失敗の伝え方 ─────────────────────────────────────────────────────────────
|
|
73
|
+
// 金庫を使えないときのエラー。原因と復旧の方法を必ず添える(黙って空や新しい鍵で続けない)
|
|
74
|
+
class VaultError extends Error {
|
|
75
|
+
}
|
|
76
|
+
exports.VaultError = VaultError;
|
|
77
|
+
const RESET_HINT = "金庫を退避して作り直すには `<ツールのコマンド> secret reset`(例: devagent secret reset)を実行してください。" +
|
|
78
|
+
"保存していた秘密は失われ、ログインし直しになります(退避したファイルは残ります)。";
|
|
79
|
+
// ── 書き込み(途中で切れたファイルを残さない)────────────────────────────────
|
|
80
|
+
function atomicWrite(file, data) {
|
|
81
|
+
const tmp = `${file}.${process.pid}.${(0, crypto_1.randomBytes)(4).toString("hex")}.tmp`;
|
|
82
|
+
const fd = (0, fs_1.openSync)(tmp, "w", 0o600);
|
|
78
83
|
try {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (!plain)
|
|
82
|
-
return {};
|
|
83
|
-
const obj = JSON.parse(plain);
|
|
84
|
-
return obj && typeof obj === "object" ? obj : {};
|
|
84
|
+
(0, fs_1.writeSync)(fd, data);
|
|
85
|
+
(0, fs_1.fsyncSync)(fd);
|
|
85
86
|
}
|
|
86
|
-
|
|
87
|
+
finally {
|
|
88
|
+
(0, fs_1.closeSync)(fd);
|
|
89
|
+
}
|
|
90
|
+
(0, fs_1.renameSync)(tmp, file);
|
|
91
|
+
try {
|
|
92
|
+
(0, fs_1.chmodSync)(file, 0o600);
|
|
93
|
+
}
|
|
94
|
+
catch { /* Windows では効かない */ }
|
|
95
|
+
}
|
|
96
|
+
// ── 排他(複数ツールの同時起動で鍵の二重作成・金庫の書き込み競合を防ぐ)──────────
|
|
97
|
+
function sleepMs(ms) {
|
|
98
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
99
|
+
}
|
|
100
|
+
function pidAlive(pid) {
|
|
101
|
+
try {
|
|
102
|
+
process.kill(pid, 0);
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
return e.code === "EPERM";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ロックには持ち主(pid と乱数)を書く。持ち主が終了しているときだけ奪い、解放は自分のものだけ
|
|
110
|
+
function withVaultLock(fn) {
|
|
111
|
+
(0, fs_1.mkdirSync)(vaultDir(), { recursive: true, mode: 0o700 });
|
|
112
|
+
const lock = (0, path_1.join)(vaultDir(), ".lock");
|
|
113
|
+
const mine = `${process.pid} ${(0, crypto_1.randomBytes)(8).toString("hex")}`;
|
|
114
|
+
const start = Date.now();
|
|
115
|
+
for (;;) {
|
|
116
|
+
try {
|
|
117
|
+
const fd = (0, fs_1.openSync)(lock, "wx", 0o600);
|
|
118
|
+
try {
|
|
119
|
+
(0, fs_1.writeSync)(fd, mine);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
(0, fs_1.closeSync)(fd);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
let holder = "";
|
|
128
|
+
try {
|
|
129
|
+
holder = (0, fs_1.readFileSync)(lock, "utf-8");
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
continue;
|
|
133
|
+
} // 消えた→再試行
|
|
134
|
+
const pid = Number(holder.split(" ")[0]);
|
|
135
|
+
if (holder && Number.isInteger(pid) && pid > 0 && !pidAlive(pid)) {
|
|
136
|
+
// 持ち主が終了している。読んだ内容のままなら消す(他者が取り直していたら消さない)
|
|
137
|
+
try {
|
|
138
|
+
if ((0, fs_1.readFileSync)(lock, "utf-8") === holder)
|
|
139
|
+
(0, fs_1.unlinkSync)(lock);
|
|
140
|
+
}
|
|
141
|
+
catch { /* 消えた */ }
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (Date.now() - start > 30_000) {
|
|
145
|
+
throw new VaultError(`金庫を使っている別のプロセスが終わりません(${lock}、pid ${pid || "?"})。しばらく待ってからやり直してください`);
|
|
146
|
+
}
|
|
147
|
+
sleepMs(50);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
return fn();
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
try {
|
|
155
|
+
if ((0, fs_1.readFileSync)(lock, "utf-8") === mine)
|
|
156
|
+
(0, fs_1.unlinkSync)(lock);
|
|
157
|
+
}
|
|
158
|
+
catch { /* noop */ }
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// ── 鍵 ─────────────────────────────────────────────────────────────────────
|
|
162
|
+
const KEYCHAIN_SERVICE = "funny-booth";
|
|
163
|
+
const KEYCHAIN_ACCOUNT = "vault-key";
|
|
164
|
+
// 最初に鍵を作ったときの保管先を記録し、以後はそこだけを使う
|
|
165
|
+
// (鍵保管庫が一時的に使えないときに鍵ファイルへ切り替えて別の鍵を作る=金庫が読めなくなる事故を防ぐ)
|
|
166
|
+
const STORE_FILE = "store.json";
|
|
167
|
+
function recordedStore() {
|
|
168
|
+
const f = (0, path_1.join)(vaultDir(), STORE_FILE);
|
|
169
|
+
if (!(0, fs_1.existsSync)(f))
|
|
170
|
+
return null;
|
|
171
|
+
const kind = JSON.parse((0, fs_1.readFileSync)(f, "utf-8")).store;
|
|
172
|
+
if (kind !== "keychain" && kind !== "file")
|
|
173
|
+
throw new VaultError(`金庫の設定が壊れています(${f})。${RESET_HINT}`);
|
|
174
|
+
return kind;
|
|
175
|
+
}
|
|
176
|
+
function fileStore() {
|
|
177
|
+
const keyFile = (0, path_1.join)(vaultDir(), "vault.key");
|
|
178
|
+
return {
|
|
179
|
+
kind: "file",
|
|
180
|
+
get: () => ((0, fs_1.existsSync)(keyFile) ? (0, fs_1.readFileSync)(keyFile, "utf-8").trim() : null),
|
|
181
|
+
set: (hex) => atomicWrite(keyFile, hex),
|
|
182
|
+
remove: () => { if ((0, fs_1.existsSync)(keyFile))
|
|
183
|
+
(0, fs_1.unlinkSync)(keyFile); },
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
// OS の鍵保管庫。Linux は Secret Service に固定する(既定の自動選択は、無いと黙って再起動で消える
|
|
187
|
+
// kernel keyutils に落ちるため)。使えなければ理由つきで例外
|
|
188
|
+
function keychainStore() {
|
|
189
|
+
// ネイティブモジュールは必要になったときに読む(読めない環境でも鍵ファイル方式にたどり着けるように)
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
191
|
+
const { Entry } = require("@napi-rs/keyring");
|
|
192
|
+
const entry = new Entry(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT, { linux: { store: "secret-service" } });
|
|
193
|
+
entry.getPassword(); // ここで使えるかを確かめる
|
|
194
|
+
return {
|
|
195
|
+
kind: "keychain",
|
|
196
|
+
get: () => entry.getPassword() ?? null,
|
|
197
|
+
set: (hex) => entry.setPassword(hex),
|
|
198
|
+
remove: () => { entry.deletePassword(); },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function keyStore() {
|
|
202
|
+
if (process.env.FB_VAULT_STORE === "file")
|
|
203
|
+
return fileStore();
|
|
204
|
+
const recorded = recordedStore();
|
|
205
|
+
if (recorded === "file")
|
|
206
|
+
return fileStore();
|
|
207
|
+
if (recorded === "keychain") {
|
|
208
|
+
try {
|
|
209
|
+
return keychainStore();
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
throw new VaultError(`OS の鍵保管庫から金庫の鍵を読めません: ${e.message}。` +
|
|
213
|
+
"キーチェーンのロック解除や、アクセス許可(「常に許可」)を確認してください。" + RESET_HINT);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// まだ鍵が無い: 鍵保管庫が使えればそこ、無ければ鍵ファイル(そのことを表示する。stdout は MCP 通信に使うので stderr)
|
|
217
|
+
try {
|
|
218
|
+
return keychainStore();
|
|
219
|
+
}
|
|
220
|
+
catch (e) {
|
|
221
|
+
process.stderr.write(`※ OS の鍵保管庫が使えないため、金庫の鍵をファイルに保存します(${(0, path_1.join)(vaultDir(), "vault.key")}): ${e.message}\n`);
|
|
222
|
+
return fileStore();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
let cachedKey = null;
|
|
226
|
+
// 共有金庫の鍵。無ければ作る(ロックの中で作り直しを防ぐ)。金庫があるのに鍵が無いときは作らずに止める
|
|
227
|
+
function vaultKey() {
|
|
228
|
+
if (cachedKey)
|
|
229
|
+
return cachedKey;
|
|
230
|
+
const store = keyStore();
|
|
231
|
+
const existing = store.get();
|
|
232
|
+
if (existing) {
|
|
233
|
+
cachedKey = parseKey(existing);
|
|
234
|
+
// 保管先の記録が無ければ残す(以後、別の保管先で鍵を作り直さないため)
|
|
235
|
+
if (!(0, fs_1.existsSync)((0, path_1.join)(vaultDir(), STORE_FILE)))
|
|
236
|
+
atomicWrite((0, path_1.join)(vaultDir(), STORE_FILE), JSON.stringify({ store: store.kind }));
|
|
237
|
+
return cachedKey;
|
|
238
|
+
}
|
|
239
|
+
return withVaultLock(() => {
|
|
240
|
+
const again = store.get(); // ロック待ちの間に他のプロセスが作ったかもしれない
|
|
241
|
+
if (again)
|
|
242
|
+
return (cachedKey = parseKey(again));
|
|
243
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(vaultDir(), SECRETS_FILE))) {
|
|
244
|
+
throw new VaultError(`金庫はあるのに、その鍵が見つかりません(保管先: ${store.kind})。${RESET_HINT}`);
|
|
245
|
+
}
|
|
246
|
+
const hex = (0, crypto_1.randomBytes)(32).toString("hex");
|
|
247
|
+
store.set(hex);
|
|
248
|
+
if (store.get() !== hex)
|
|
249
|
+
throw new VaultError("金庫の鍵を保存できませんでした(書いた鍵を読み戻せません)");
|
|
250
|
+
atomicWrite((0, path_1.join)(vaultDir(), STORE_FILE), JSON.stringify({ store: store.kind }));
|
|
251
|
+
return (cachedKey = Buffer.from(hex, "hex"));
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
function parseKey(hex) {
|
|
255
|
+
const key = Buffer.from(hex, "hex");
|
|
256
|
+
if (key.length !== 32)
|
|
257
|
+
throw new VaultError(`金庫の鍵が壊れています(32 バイトではありません)。${RESET_HINT}`);
|
|
258
|
+
return key;
|
|
259
|
+
}
|
|
260
|
+
// 金庫を退避して作り直す(ユーザーが明示的に実行する復旧手段)。退避したファイルは消さない
|
|
261
|
+
function resetVault() {
|
|
262
|
+
(0, fs_1.mkdirSync)(vaultDir(), { recursive: true, mode: 0o700 });
|
|
263
|
+
return withVaultLock(() => {
|
|
264
|
+
const moved = [];
|
|
265
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
266
|
+
for (const f of [SECRETS_FILE, STORE_FILE, "vault.key"]) {
|
|
267
|
+
const p = (0, path_1.join)(vaultDir(), f);
|
|
268
|
+
if ((0, fs_1.existsSync)(p)) {
|
|
269
|
+
(0, fs_1.renameSync)(p, `${p}.broken-${stamp}`);
|
|
270
|
+
moved.push(`${p}.broken-${stamp}`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
keychainStore().remove();
|
|
275
|
+
}
|
|
276
|
+
catch { /* 鍵保管庫が無い・鍵が無い */ }
|
|
277
|
+
cachedKey = null;
|
|
278
|
+
return moved;
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
// ── 秘密(全ツール共有)────────────────────────────────────────────────────
|
|
282
|
+
function readSecretsFile(file, key) {
|
|
283
|
+
if (!(0, fs_1.existsSync)(file))
|
|
87
284
|
return {};
|
|
285
|
+
const plain = decrypt((0, fs_1.readFileSync)(file, "utf-8").trim(), key);
|
|
286
|
+
// 復号できない金庫を空として扱うと、次の書き込みで中身を消してしまう。黙らずに止める
|
|
287
|
+
if (plain === null)
|
|
288
|
+
throw new VaultError(`金庫を復号できません(${file})。鍵が変わった可能性があります。${RESET_HINT}`);
|
|
289
|
+
const obj = JSON.parse(plain);
|
|
290
|
+
return obj && typeof obj === "object" ? obj : {};
|
|
291
|
+
}
|
|
292
|
+
function writeSecretsFile(secrets) {
|
|
293
|
+
(0, fs_1.mkdirSync)(vaultDir(), { recursive: true, mode: 0o700 });
|
|
294
|
+
atomicWrite((0, path_1.join)(vaultDir(), SECRETS_FILE), encrypt(JSON.stringify(secrets), vaultKey()));
|
|
295
|
+
}
|
|
296
|
+
// 金庫全体を復号して名前→値のマップで返す(無ければ空)
|
|
297
|
+
function readSecrets() {
|
|
298
|
+
return readSecretsFile((0, path_1.join)(vaultDir(), SECRETS_FILE), vaultKey());
|
|
299
|
+
}
|
|
300
|
+
// 鍵の作成も同じロックを使うため、ロックを取る前に鍵を用意しておく(ロックは再入できない)
|
|
301
|
+
function setSecret(name, value) {
|
|
302
|
+
vaultKey();
|
|
303
|
+
withVaultLock(() => {
|
|
304
|
+
const secrets = readSecrets();
|
|
305
|
+
secrets[name] = value;
|
|
306
|
+
writeSecretsFile(secrets);
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
function deleteSecret(name) {
|
|
310
|
+
vaultKey();
|
|
311
|
+
return withVaultLock(() => {
|
|
312
|
+
const secrets = readSecrets();
|
|
313
|
+
if (!(name in secrets))
|
|
314
|
+
return false;
|
|
315
|
+
delete secrets[name];
|
|
316
|
+
writeSecretsFile(secrets);
|
|
317
|
+
return true;
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
// 値は返さず名前だけ列挙する(露出を避ける)
|
|
321
|
+
function listSecretNames() {
|
|
322
|
+
return Object.keys(readSecrets());
|
|
323
|
+
}
|
|
324
|
+
const TOKEN_FILE = "portal-token.enc";
|
|
325
|
+
function parseTokens(plain) {
|
|
326
|
+
// 旧形式(生 JWT 保存)との後方互換
|
|
327
|
+
if (plain.startsWith("{")) {
|
|
328
|
+
const obj = JSON.parse(plain);
|
|
329
|
+
return { jwt: obj.jwt, refresh: obj.refresh ?? null };
|
|
88
330
|
}
|
|
331
|
+
return { jwt: plain, refresh: null };
|
|
332
|
+
}
|
|
333
|
+
// 保存済みログインを読む。無い・復号できない(鍵が変わった等)なら null=再ログインさせる
|
|
334
|
+
function readTokens(toolName) {
|
|
335
|
+
const file = (0, path_1.join)(configDir(toolName), TOKEN_FILE);
|
|
336
|
+
if (!(0, fs_1.existsSync)(file))
|
|
337
|
+
return null;
|
|
338
|
+
const plain = decrypt((0, fs_1.readFileSync)(file, "utf-8").trim(), vaultKey());
|
|
339
|
+
return plain ? parseTokens(plain) : null;
|
|
89
340
|
}
|
|
90
|
-
function
|
|
341
|
+
function saveTokens(toolName, tokens) {
|
|
91
342
|
const dir = configDir(toolName);
|
|
92
343
|
ensureConfigDir(dir);
|
|
93
|
-
|
|
94
|
-
const file = (0, path_1.join)(dir, SECRETS_FILE);
|
|
95
|
-
(0, fs_1.writeFileSync)(file, encrypt(JSON.stringify(secrets), key), { encoding: "utf-8", mode: 0o600 });
|
|
96
|
-
(0, fs_1.chmodSync)(file, 0o600);
|
|
97
|
-
}
|
|
98
|
-
function setSecret(toolName, name, value) {
|
|
99
|
-
const secrets = readSecrets(toolName);
|
|
100
|
-
secrets[name] = value;
|
|
101
|
-
writeSecrets(toolName, secrets);
|
|
102
|
-
}
|
|
103
|
-
function deleteSecret(toolName, name) {
|
|
104
|
-
const secrets = readSecrets(toolName);
|
|
105
|
-
if (!(name in secrets))
|
|
106
|
-
return false;
|
|
107
|
-
delete secrets[name];
|
|
108
|
-
writeSecrets(toolName, secrets);
|
|
109
|
-
return true;
|
|
344
|
+
atomicWrite((0, path_1.join)(dir, TOKEN_FILE), encrypt(JSON.stringify({ jwt: tokens.jwt, refresh: tokens.refresh }), vaultKey()));
|
|
110
345
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
346
|
+
function clearTokens(toolName) {
|
|
347
|
+
const file = (0, path_1.join)(configDir(toolName), TOKEN_FILE);
|
|
348
|
+
if ((0, fs_1.existsSync)(file))
|
|
349
|
+
(0, fs_1.unlinkSync)(file);
|
|
350
|
+
}
|
|
351
|
+
// ── 旧形式からの移行 ─────────────────────────────────────────────────────────
|
|
352
|
+
// 同名で値が違う秘密は上書きせず、「名前@ツール名」で両方残す(どちらが正しいかは人が決める)
|
|
353
|
+
function mergeSecrets(shared, incoming, toolName) {
|
|
354
|
+
const merged = { ...shared };
|
|
355
|
+
const conflicts = [];
|
|
356
|
+
for (const [name, value] of Object.entries(incoming)) {
|
|
357
|
+
if (!(name in merged) || merged[name] === value) {
|
|
358
|
+
merged[name] = value;
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
// 退避名が既にあって値が違うなら連番にする(前回退避した値を上書きしない)
|
|
362
|
+
let alt = `${name}@${toolName}`;
|
|
363
|
+
for (let i = 2; alt in merged && merged[alt] !== value; i++)
|
|
364
|
+
alt = `${name}@${toolName}#${i}`;
|
|
365
|
+
merged[alt] = value;
|
|
366
|
+
conflicts.push(name);
|
|
367
|
+
}
|
|
368
|
+
return { merged, conflicts };
|
|
369
|
+
}
|
|
370
|
+
// ~/.{toolName}/vault.key があれば、そのツールの秘密を共有金庫へ移し、ログインを共有鍵で暗号化し直し、
|
|
371
|
+
// 読み戻して一致を確かめてから旧い鍵と旧い金庫を消す。何も無ければ何もしない。
|
|
372
|
+
function migrateToolVault(toolName) {
|
|
373
|
+
const dir = configDir(toolName);
|
|
374
|
+
const oldKeyFile = (0, path_1.join)(dir, "vault.key");
|
|
375
|
+
if (!(0, fs_1.existsSync)(oldKeyFile))
|
|
376
|
+
return { migrated: false, conflicts: [] };
|
|
377
|
+
vaultKey();
|
|
378
|
+
return withVaultLock(() => {
|
|
379
|
+
if (!(0, fs_1.existsSync)(oldKeyFile))
|
|
380
|
+
return { migrated: false, conflicts: [] }; // 別プロセスが先に移した
|
|
381
|
+
const oldKey = parseKey((0, fs_1.readFileSync)(oldKeyFile, "utf-8").trim());
|
|
382
|
+
const oldSecretsFile = (0, path_1.join)(dir, SECRETS_FILE);
|
|
383
|
+
const oldSecrets = readSecretsFile(oldSecretsFile, oldKey);
|
|
384
|
+
const tokenFile = (0, path_1.join)(dir, TOKEN_FILE);
|
|
385
|
+
const oldTokenPlain = (0, fs_1.existsSync)(tokenFile) ? decrypt((0, fs_1.readFileSync)(tokenFile, "utf-8").trim(), oldKey) : null;
|
|
386
|
+
const { merged, conflicts } = mergeSecrets(readSecrets(), oldSecrets, toolName);
|
|
387
|
+
writeSecretsFile(merged);
|
|
388
|
+
if (oldTokenPlain)
|
|
389
|
+
saveTokens(toolName, parseTokens(oldTokenPlain));
|
|
390
|
+
// 読み戻して一致を確かめてから旧いものを消す(確かめられなければ旧いものは残す)
|
|
391
|
+
const after = readSecrets();
|
|
392
|
+
for (const [name, value] of Object.entries(merged)) {
|
|
393
|
+
if (after[name] !== value)
|
|
394
|
+
throw new Error(`金庫の移行を確かめられませんでした(${name})。旧い金庫は残しています`);
|
|
395
|
+
}
|
|
396
|
+
if (oldTokenPlain && JSON.stringify(readTokens(toolName)) !== JSON.stringify(parseTokens(oldTokenPlain))) {
|
|
397
|
+
throw new Error("ログイン情報の移行を確かめられませんでした。旧い金庫は残しています");
|
|
398
|
+
}
|
|
399
|
+
if ((0, fs_1.existsSync)(oldSecretsFile))
|
|
400
|
+
(0, fs_1.unlinkSync)(oldSecretsFile);
|
|
401
|
+
(0, fs_1.unlinkSync)(oldKeyFile);
|
|
402
|
+
return { migrated: true, conflicts };
|
|
403
|
+
});
|
|
114
404
|
}
|
|
115
405
|
//# sourceMappingURL=vault.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funny-booth/agent-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "AIエージェント起動CLI(共有ランチャー + MCPサーバー)",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
43
|
+
"@napi-rs/keyring": "^2.1.1",
|
|
43
44
|
"zod": "^3.25.0"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|