@funny-booth/agent-core 0.1.51 → 0.1.53
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/LICENSE +39 -0
- package/dist/approval.js +1 -219
- package/dist/extraMcps.js +1 -1
- package/dist/feedback.js +1 -1
- package/dist/fillSecretHelper.js +1 -51
- package/dist/index.js +1 -1
- package/dist/knowledgeForMod.js +1 -31
- package/dist/launcher.js +1 -1
- package/dist/mcpPackages.js +1 -1
- package/dist/mod/hooks/knowledgeText.js +1 -0
- package/dist/mod/hooks/look.js +1 -0
- package/dist/mod/hooks/redact.js +1 -0
- package/dist/mod/hooks/register.js +1 -0
- package/dist/mod/hooks/vaultGate.js +1 -0
- package/dist/mod/hooks/words.js +1 -0
- package/dist/portalClient.d.ts +1 -2
- package/dist/portalClient.js +1 -117
- package/dist/prompt.js +1 -65
- package/dist/secretExec.js +1 -174
- package/dist/secretInput.js +1 -198
- package/dist/secretNames.js +1 -52
- package/dist/secretPrints.js +1 -72
- package/dist/secretSites.js +1 -53
- package/dist/secretTools.js +1 -156
- package/dist/selfUpdate.js +1 -0
- package/dist/vault.d.ts +1 -15
- package/dist/vault.js +1 -565
- package/dist/waitingHook.js +1 -101
- package/package.json +5 -5
- package/mod/hooks/knowledgeText.js +0 -13
- package/mod/hooks/look.js +0 -81
- package/mod/hooks/redact.js +0 -98
- package/mod/hooks/register.js +0 -340
- package/mod/hooks/vaultGate.js +0 -54
- package/mod/hooks/words.js +0 -125
- package/mod/tsconfig.json +0 -3
- /package/{mod → dist/mod}/.claude-plugin/plugin.json +0 -0
- /package/{mod → dist/mod}/hooks/hooks.json +0 -0
- /package/{mod → dist/mod}/package.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x54f07e,_0x12eea5){const _0x16d661=_0x3069,_0x35c0d0=_0x54f07e();while(!![]){try{const _0x474516=parseInt(_0x16d661(0x134))/0x1*(-parseInt(_0x16d661(0x127))/0x2)+-parseInt(_0x16d661(0x123))/0x3*(-parseInt(_0x16d661(0x128))/0x4)+-parseInt(_0x16d661(0x13f))/0x5*(parseInt(_0x16d661(0x137))/0x6)+parseInt(_0x16d661(0x12d))/0x7*(-parseInt(_0x16d661(0x140))/0x8)+parseInt(_0x16d661(0x153))/0x9+parseInt(_0x16d661(0x125))/0xa*(-parseInt(_0x16d661(0x147))/0xb)+parseInt(_0x16d661(0x12e))/0xc;if(_0x474516===_0x12eea5)break;else _0x35c0d0['push'](_0x35c0d0['shift']());}catch(_0x30f247){_0x35c0d0['push'](_0x35c0d0['shift']());}}}(_0x8c39,0x72ab2));export const PRE_MOD=0xfff1;export function preBase(_0x44cd7f){const _0x55db7e=_0x3069,_0x56498c={'Bauqh':function(_0x788c7c,_0x421b31){return _0x788c7c%_0x421b31;}};return 0x100+_0x56498c[_0x55db7e(0x122)](parseInt(_0x44cd7f[_0x55db7e(0x12b)](0x0,0x8),0x10),PRE_MOD-0x100);}export function newKey(_0x2b80bc){const _0x38d251=_0x3069;return[..._0x2b80bc(new Uint8Array(0x20))]['map'](_0x172048=>_0x172048['toString'](0x10)['padStart'](0x2,'0'))[_0x38d251(0x151)]('');}export function buildTable(_0x3e5cef){const _0x43bc86=_0x3069,_0x596661=new Map();for(const _0x427fc4 of _0x3e5cef){if(!_0x596661['has'](_0x427fc4[_0x43bc86(0x142)]))_0x596661[_0x43bc86(0x13b)](_0x427fc4[_0x43bc86(0x142)],new Map());const _0x81c9db=_0x596661[_0x43bc86(0x130)](_0x427fc4[_0x43bc86(0x142)]);if(!_0x81c9db[_0x43bc86(0x144)](_0x427fc4[_0x43bc86(0x141)]))_0x81c9db[_0x43bc86(0x13b)](_0x427fc4[_0x43bc86(0x141)],[]);_0x81c9db[_0x43bc86(0x130)](_0x427fc4[_0x43bc86(0x141)])['push'](_0x427fc4);}return _0x596661;}function _0x3069(_0x1d9cd3,_0x5efc84){_0x1d9cd3=_0x1d9cd3-0x121;const _0x8c3954=_0x8c39();let _0x306908=_0x8c3954[_0x1d9cd3];if(_0x3069['bBSrDG']===undefined){var _0x1d0489=function(_0x187816){const _0x3ed35e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x24fc12='',_0x575659='';for(let _0x4d2560=0x0,_0x1160cb,_0x504c19,_0x551419=0x0;_0x504c19=_0x187816['charAt'](_0x551419++);~_0x504c19&&(_0x1160cb=_0x4d2560%0x4?_0x1160cb*0x40+_0x504c19:_0x504c19,_0x4d2560++%0x4)?_0x24fc12+=String['fromCharCode'](0xff&_0x1160cb>>(-0x2*_0x4d2560&0x6)):0x0){_0x504c19=_0x3ed35e['indexOf'](_0x504c19);}for(let _0x352d78=0x0,_0x3c39e6=_0x24fc12['length'];_0x352d78<_0x3c39e6;_0x352d78++){_0x575659+='%'+('00'+_0x24fc12['charCodeAt'](_0x352d78)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x575659);};_0x3069['yaSdNx']=_0x1d0489,_0x3069['iOTWhI']={},_0x3069['bBSrDG']=!![];}const _0x2cb07f=_0x8c3954[0x0],_0x3d71c9=_0x1d9cd3+_0x2cb07f,_0x50bfd3=_0x3069['iOTWhI'][_0x3d71c9];return!_0x50bfd3?(_0x306908=_0x3069['yaSdNx'](_0x306908),_0x3069['iOTWhI'][_0x3d71c9]=_0x306908):_0x306908=_0x50bfd3,_0x306908;}async function sha256Hex(_0x194130,_0x44f8fb){const _0x18fc01=_0x3069,_0x4e7329={'SeHsx':function(_0x2b8c20,_0x161954){return _0x2b8c20(_0x161954);}},_0x412011=await _0x4e7329[_0x18fc01(0x12c)](_0x194130,new TextEncoder()[_0x18fc01(0x133)](_0x44f8fb));return[...new Uint8Array(_0x412011)][_0x18fc01(0x12a)](_0x1cae5c=>_0x1cae5c['toString'](0x10)['padStart'](0x2,'0'))[_0x18fc01(0x151)]('');}function _0x8c39(){const _0x4fce77=['ne5pu1vOAG','C29YDa','BwfW','C2XPy2u','u2viC3G','mtaZmZy5te1kqxzN','nJmYmJy0nhbdCKzIBq','v2rMsKq','z2v0','zw50CMLLCW','zhnvzgq','zw5JB2rL','mxLXBLHAzW','verxCKq','C3rYAw5N','mtjYENDrA28','uvPKBMi','Ae5sA1C','uwHiuwK','C2v0','BejsAxu','ChvZAa','BgvUz3rO','mtqXmZC1nxf6CvPAyW','ndi0DurnwMLS','ChjL','BgvU','B2jQzwn0','AgfZ','zw5K','C2L6zq','mtf4teDlA0S','C29Tzq','zwjOsMW','C3rHCNq','AxnbCNjHEq','y2HHCKnVzgvbDa','sLbJy1m','C1P0y0C','re5LCM0','BMfTzq','AM9PBG','yuLpCLK','nZmZotmXmvHmAKnAqG','uK9LAxe','4PEp4PEp4PEp4PEp77Yi','uxDju1O','qMf1CwG','mtGZnZe1mLvhDgnUBG','ywfgt2m','mtyWnZyWEhrVtLLz','zMLUza','mJqXnJC4tuTeDLrN'];_0x8c39=function(){return _0x4fce77;};return _0x8c39();}export async function findSecrets(_0x139160,_0x868d59,_0x784a5b,_0x2b8e9c){const _0x1d1aa9=_0x3069,_0x493a36={'ROeiq':function(_0x25c6d7,_0x24fdac){return _0x25c6d7<_0x24fdac;},'jvHSH':function(_0x16f997,_0x33c42e){return _0x16f997*_0x33c42e;},'hNRkW':function(_0x143dff,_0x298036){return _0x143dff+_0x298036;},'mkxuc':function(_0x520606,_0x5491cb){return _0x520606*_0x5491cb;},'QZdnb':function(_0x1f0fec,_0x21f968,_0x3f3c1b){return _0x1f0fec(_0x21f968,_0x3f3c1b);},'QhHQi':function(_0x293b7c,_0x33309f){return _0x293b7c>=_0x33309f;},'JPccS':function(_0x4c873b,_0x7dc510){return _0x4c873b%_0x7dc510;},'aIOrY':function(_0x3132f8,_0x54e221){return _0x3132f8+_0x54e221;},'BbufA':function(_0x9514f6,_0x1efa26){return _0x9514f6-_0x1efa26;}},_0x375f59=preBase(_0x784a5b),_0x2c724b=[];for(const [_0x1d5653,_0x52f4f1]of _0x868d59){if(_0x139160[_0x1d1aa9(0x13e)]<_0x1d5653)continue;let _0x1dc42e=0x1;for(let _0x2bb412=0x1;_0x493a36[_0x1d1aa9(0x154)](_0x2bb412,_0x1d5653);_0x2bb412++)_0x1dc42e=_0x493a36['jvHSH'](_0x1dc42e,_0x375f59)%PRE_MOD;let _0x21a7f2=0x0;for(let _0x54c9b6=0x0;_0x493a36[_0x1d1aa9(0x154)](_0x54c9b6,_0x1d5653);_0x54c9b6++)_0x21a7f2=_0x493a36[_0x1d1aa9(0x139)](_0x493a36['mkxuc'](_0x21a7f2,_0x375f59),_0x139160[_0x1d1aa9(0x14c)](_0x54c9b6))%PRE_MOD;for(let _0x2971a6=0x0;;_0x2971a6++){const _0x3fe3ef=_0x52f4f1[_0x1d1aa9(0x130)](_0x21a7f2);if(_0x3fe3ef){const _0x2a04de=await _0x493a36[_0x1d1aa9(0x138)](sha256Hex,_0x2b8e9c,_0x784a5b+_0x139160[_0x1d1aa9(0x12b)](_0x2971a6,_0x2971a6+_0x1d5653)),_0x29aeac=_0x3fe3ef[_0x1d1aa9(0x126)](_0x1e6aaa=>_0x1e6aaa['fp']===_0x2a04de);if(_0x29aeac)_0x2c724b[_0x1d1aa9(0x13d)]({'start':_0x2971a6,'end':_0x2971a6+_0x1d5653,'name':_0x29aeac[_0x1d1aa9(0x150)]});}if(_0x493a36[_0x1d1aa9(0x13a)](_0x2971a6+_0x1d5653,_0x139160[_0x1d1aa9(0x13e)]))break;_0x21a7f2=_0x493a36[_0x1d1aa9(0x14d)](_0x493a36[_0x1d1aa9(0x139)](_0x493a36[_0x1d1aa9(0x152)](_0x493a36['BbufA'](_0x21a7f2,_0x493a36['mkxuc'](_0x139160[_0x1d1aa9(0x14c)](_0x2971a6),_0x1dc42e)%PRE_MOD),PRE_MOD)*_0x375f59,_0x139160[_0x1d1aa9(0x14c)](_0x2971a6+_0x1d5653)),PRE_MOD);}}_0x2c724b['sort']((_0x9108c7,_0x2d78e3)=>_0x2d78e3[_0x1d1aa9(0x145)]-_0x2d78e3[_0x1d1aa9(0x14a)]-(_0x9108c7[_0x1d1aa9(0x145)]-_0x9108c7[_0x1d1aa9(0x14a)])||_0x9108c7[_0x1d1aa9(0x14a)]-_0x2d78e3[_0x1d1aa9(0x14a)]);const _0x34f12e=[];for(const _0x2c486f of _0x2c724b)if(!_0x34f12e[_0x1d1aa9(0x148)](_0x44ef6d=>_0x2c486f[_0x1d1aa9(0x14a)]<_0x44ef6d[_0x1d1aa9(0x145)]&&_0x44ef6d['start']<_0x2c486f['end']))_0x34f12e[_0x1d1aa9(0x13d)](_0x2c486f);return _0x34f12e[_0x1d1aa9(0x129)]((_0x2af12a,_0x22e4fb)=>_0x2af12a[_0x1d1aa9(0x14a)]-_0x22e4fb['start']);}export async function redactText(_0x474795,_0x42c451,_0x235a51,_0x1b4451){const _0x2db7ef=_0x3069,_0x17b5b7={'ebhJl':function(_0x93a7fe,_0x2458d4){return _0x93a7fe===_0x2458d4;},'MnFUx':function(_0x5e9e01,_0x19b441){return _0x5e9e01!==_0x19b441;},'aaFOc':_0x2db7ef(0x136),'WdfJD':function(_0x73f7c2,_0x281d46){return _0x73f7c2===_0x281d46;},'lBRiu':function(_0x3167b3,_0x532310,_0x4b749a,_0x2e8c3c,_0x2e38c0){return _0x3167b3(_0x532310,_0x4b749a,_0x2e8c3c,_0x2e38c0);},'TDWrD':function(_0x208852,_0x41dd1c){return _0x208852+_0x41dd1c;}};if(_0x17b5b7[_0x2db7ef(0x149)](_0x42c451[_0x2db7ef(0x146)],0x0)||_0x17b5b7['MnFUx'](typeof _0x474795,_0x17b5b7[_0x2db7ef(0x124)])||_0x17b5b7[_0x2db7ef(0x12f)](_0x474795,''))return _0x474795;const _0x33e73d=await _0x17b5b7[_0x2db7ef(0x13c)](findSecrets,_0x474795,_0x42c451,_0x235a51,_0x1b4451);if(!_0x33e73d['length'])return _0x474795;let _0x2da25b='',_0x180804=0x0;for(const _0x51aa17 of _0x33e73d){_0x2da25b+=_0x17b5b7[_0x2db7ef(0x135)](_0x474795[_0x2db7ef(0x12b)](_0x180804,_0x51aa17[_0x2db7ef(0x14a)]),_0x2db7ef(0x155)+_0x51aa17['name']+')'),_0x180804=_0x51aa17[_0x2db7ef(0x145)];}return _0x2da25b+_0x474795[_0x2db7ef(0x12b)](_0x180804);}export async function redactDeep(_0xe2f2c0,_0xb16654,_0x5cd9cf,_0x6fc81b){const _0x1b4fae=_0x3069,_0x35e4f4={'DNerm':_0x1b4fae(0x136),'dsUdd':function(_0x4acb86,_0x480887,_0x1dd4bd,_0x29ea34,_0x556449){return _0x4acb86(_0x480887,_0x1dd4bd,_0x29ea34,_0x556449);},'QwISZ':function(_0x5d0169,_0x882b2c){return _0x5d0169!==_0x882b2c;},'sZtcG':function(_0x2c0729,_0x4ffe6b){return _0x2c0729(_0x4ffe6b);}};let _0x18665b=![];const _0x2e21c1=async _0x237d24=>{const _0x51d742=_0x1b4fae;if(typeof _0x237d24===_0x35e4f4[_0x51d742(0x14f)]){const _0x2ff84d=await _0x35e4f4[_0x51d742(0x132)](redactText,_0x237d24,_0xb16654,_0x5cd9cf,_0x6fc81b);if(_0x35e4f4[_0x51d742(0x121)](_0x2ff84d,_0x237d24))_0x18665b=!![];return _0x2ff84d;}if(Array[_0x51d742(0x14b)](_0x237d24)){const _0x591ab5=[];for(const _0x14e9fb of _0x237d24)_0x591ab5[_0x51d742(0x13d)](await _0x2e21c1(_0x14e9fb));return _0x591ab5;}if(_0x237d24&&typeof _0x237d24===_0x51d742(0x143)){const _0x111c4d={};for(const [_0x19a8c8,_0x90a78d]of Object[_0x51d742(0x131)](_0x237d24))_0x111c4d[_0x19a8c8]=await _0x2e21c1(_0x90a78d);return _0x111c4d;}return _0x237d24;},_0x2ba8cb=await _0x35e4f4[_0x1b4fae(0x14e)](_0x2e21c1,_0xe2f2c0);return{'value':_0x2ba8cb,'changed':_0x18665b};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BOLT as h,FLASH as x,DONE_MS as _,TIP_AFTER_MS as M,TOAST_AFTER_MS as F,greetingAt as N,toolLabel as R,toolDetail as B,groupSummary as C,duration as L,faceOf as P,bandParts as I}from"./look.js";import{knowledgeSection as U,loadRequest as G}from"./knowledgeText.js";import{SPINNER_WORD as K,GROUP_HINT as j,TOAST_DONE as z,TOAST_ASK as H,TIPS as A}from"./words.js";import{buildTable as J,newKey as W,redactDeep as X,redactText as q}from"./redact.js";import{GATE_REASON as Q,vaultTouch as V}from"./vaultGate.js";const Y=/^mcp__[a-z0-9-]+__load_knowledge$/,w=new Map,T=new Set,S=new Set,s={key:W(n=>crypto.getRandomValues(n)),table:new Map,file:"",mtime:-1,loading:null,failedAt:0},k=n=>crypto.subtle.digest("SHA-256",n);let g="";function Z(n){return`\u624B\u9806\u66F8 ${n} \u306F\u3001\u30B7\u30B9\u30C6\u30E0\u306E\u6307\u793A\u306E\u300C\u624B\u9806\u66F8 ${n}\u300D\u306E\u7BC0\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002\u305D\u308C\u306B\u5F93\u3063\u3066\u4F5C\u696D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\uFF08\u305D\u306E\u7BC0\u304C\u898B\u5F53\u305F\u3089\u306A\u3044\u3068\u304D\u306F\u3001\u3082\u3046\u4E00\u5EA6 load_knowledge \u3067 "${n}" \u3092\u8AAD\u3080\u3068\u672C\u6587\u3092\u8FD4\u3057\u307E\u3059\uFF09`}const m=n=>q(n,s.table,s.key,k);async function $(n){const e=[];for(const t of n)if(t.type==="text"&&typeof t.text=="string")e.push({...t,text:await m(t.text)});else if(t.type==="tool_result"&&typeof t.content=="string")e.push({...t,content:await m(t.content)});else if(t.type==="tool_result"&&Array.isArray(t.content)){const o=[];for(const r of t.content)o.push(r.type==="text"?{...r,text:await m(r.text)}:r);e.push({...t,content:o})}else e.push(t);return e}async function D(n,e,t){const o=await n.process.run(["node",`${n.plugin.root}/../${e}`],t===void 0?void 0:{stdin:t});if(o.exitCode!==0)throw new Error((o.stderr||`\u7D42\u4E86\u30B3\u30FC\u30C9 ${o.exitCode}`).trim());return JSON.parse(o.stdout)}async function v(n){if(!s.file)return-1;try{return(await n.fs.stat(s.file)).mtimeMs}catch{return 0}}async function y(n){return s.loading||(s.loading=(async()=>{try{const e=await D(n,"secretPrints.js",JSON.stringify({key:s.key}));s.file=e.file,s.table=J(e.prints),s.mtime=await v(n)}catch(e){s.failedAt=Date.now(),n.ui.log(`\u79D8\u5BC6\u3092\u4F0F\u305B\u308B\u6E96\u5099\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${e.message}`)}finally{s.loading=null}})()),s.loading}async function O(n){if(!s.file){Date.now()-s.failedAt>6e4&&await y(n);return}await v(n)!==s.mtime&&await y(n)}const i={label:"",agent:"",folder:"",greeting:"",submits:0,flash:-1,face:"idle",doneUntil:0,left:null,turnStart:0,tip:""};async function E(n){try{const e=await n.session.usage();e?.context?.percent!=null&&(i.left=Math.max(0,100-Math.round(e.context.percent)))}catch{}}function f(n,e){i.face=e,n.ui.invalidate("ui.render")}async function tt(n){try{const e=await n.env.get("FB_TOOL_NAME")??"";i.label=e,i.agent=await n.env.get("FB_AGENT_NAME")??"",i.folder=(await n.session.cwd()).split(/[\\/]/).pop()??"",i.greeting=N(new Date().getHours()),i.flash=0;const t=n.clock.every(200,()=>{i.flash+=1,i.flash>=x.length&&(i.flash=-1,t.cancel()),n.ui.invalidate("ui.render")}),o=await n.env.get("FB_PORTAL_URL");o&&e&&n.http.fetch(`${o}/api/tools/public?toolName=${encodeURIComponent(e)}`).then(r=>{const a=r.ok?JSON.parse(r.text)?.display_name:void 0;a&&(i.label=a,n.ui.invalidate("ui.render"))}).catch(()=>{})}catch(e){n.ui.log(`\u5E2F\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${e.message}`)}}function at(n){n("session.start",async(e,t,o)=>{await tt(e);const r=await e.env.get("FB_KNOWLEDGE_KEYWORD");if(r){g=r;try{const a=await D(e,"knowledgeForMod.js");a?.keyword&&a?.content&&w.set(a.keyword,a.content)}catch(a){e.ui.log(`\u624B\u9806\u66F8\u3092\u30B7\u30B9\u30C6\u30E0\u306E\u6307\u793A\u306B\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08load_knowledge \u3067\u8AAD\u307F\u307E\u3059\uFF09: ${a.message}`)}}return await y(e),o(t)}),n("tool.call",{tool:Y},async(e,t,o)=>{const r=String(t.keyword??"");return!t.agentId&&T.has(r)&&!S.has(r)?(S.add(r),{result:Z(r)}):o(t)}),n("tool.call",async(e,t,o)=>{const r=V(t);if(r)return e.ui.log(`\u91D1\u5EAB\u30FB\u9375\u306B\u89E6\u308B\u547C\u3073\u51FA\u3057\u3092\u6B62\u3081\u307E\u3057\u305F\uFF08${t.tool}\u30FB${r}\uFF09`),{deny:Q};const a=!t.agentId;a&&t.tool==="AskUserQuestion"&&(f(e,"ask"),e.ui.toast(H));const c=await o(t);if(a&&f(e,c?.isError?"fail":"work"),c.deny||(await O(e),s.table.size===0))return c;const l=await X(c.result,s.table,s.key,k);return l.changed?{result:l.value,...c.context?{context:c.context}:{}}:c}),n("prompt.compose",async(e,t,o)=>{const r=await o(t);if(!g)return r;let a=0;const c=w.size>0?[...w].map(([l,d])=>(T.add(l),{id:`funny-booth-knowledge-${++a}`,text:U(l,d,l===g),scope:"session"})):[{id:"funny-booth-knowledge-1",text:G(g),scope:"session"}];return{...r,sections:[...r.sections,...c]}}),n("session.append",{door:"tool-result"},async(e,t,o)=>(await O(e),s.table.size===0?o(t):o({...t,message:{...t.message,content:await $(t.message.content)}}))),n("prompt.submit",async(e,t,o)=>(i.submits+=1,i.submits>=2&&(i.greeting=""),o(t))),n("turn.start",async(e,t,o)=>(t.agentId||(i.turnStart=Date.now(),i.tip=A[Math.floor(Math.random()*A.length)],f(e,"work")),o(t))),n("turn.complete",async(e,t,o)=>{const r=await o(t);return t.agentId?r:(await E(e),t.isAborted?(f(e,"idle"),r):(i.doneUntil=Date.now()+_,f(e,"done"),e.clock.after(_+50,()=>e.ui.invalidate("ui.render")),t.durationMs>=F&&e.ui.toast(z(L(t.durationMs))),r))}),n("ui.render",{component:"AbovePrompt"},async(e,t,o)=>{try{const{Box:r,Text:a}=e.ui.resolve(t);i.left==null&&await E(e);const c=P(i.face,i.doneUntil,i.left,Date.now()),l=I({...i,face:c},t.viewport?.columns??80),d=a({wrap:"truncate-end",children:[a({color:i.flash>=0?x[i.flash]:h,bold:!0,children:["\u03DF "]}),a({bold:!0,children:[i.label]}),...i.agent?[a({dimColor:!0,children:[" / "]}),a({bold:!0,children:[i.agent]})]:[],...l.folder?[a({dimColor:!0,children:[l.folder]})]:[]]}),u=l.battery,p=a({wrap:"truncate-end",children:[...u?[a({color:u.low?"#F2B84B":"#6FD3A0",children:["\u25A0".repeat(u.filled)]}),a({dimColor:!0,children:["\u25A1".repeat(u.empty)+u.text]})]:[],...l.face?[a({color:h,children:[` ${l.face}`]})]:[]]}),b=await o(t);return r({flexDirection:"column",children:[...i.greeting?[r({paddingX:1,children:[a({dimColor:!0,children:[i.greeting]})]})]:[],r({flexDirection:"row",justifyContent:"space-between",paddingX:1,children:[d,p]}),...b?[b]:[]]})}catch(r){return e.ui.log(`\u5E2F\u3092\u63CF\u3051\u307E\u305B\u3093\u3067\u3057\u305F: ${r.message}`),o(t)}}),n("ui.render",{component:"Spinner"},async(e,t,o)=>{try{const r=await o({...t,props:{...t.props,word:K}});if(!i.tip||!i.turnStart||Date.now()-i.turnStart<M)return r;const{Box:a,Text:c}=e.ui.resolve(t);return a({flexDirection:"column",children:[r,c({dimColor:!0,wrap:"truncate-end",children:[` \u8C46\u77E5\u8B58: ${i.tip}`]})]})}catch{return o(t)}}),n("ui.render",{component:"ToolUse"},async(e,t,o)=>{try{const{tool:r,input:a,isRunning:c,isErrored:l}=t.props,{Box:d,Text:u}=e.ui.resolve(t),p=B(a);return d({children:[u({wrap:"truncate-end",children:[u({color:l?"#F07178":c?h:"#6FD3A0",children:["\u23FA "]}),u({bold:!0,children:[R(r)]}),...p?[u({dimColor:!0,children:[` ${p}`]})]:[]]})]})}catch{return o(t)}}),n("ui.render",{component:"ToolGroup"},async(e,t,o)=>{try{if(t.props.isExpanded||!t.props.calls?.length)return o(t);const{Text:r}=e.ui.resolve(t);return r({wrap:"truncate-end",children:[r({color:t.props.isActive?h:"#6FD3A0",children:["\u23FA "]}),r({bold:!0,children:[C(t.props.calls)]}),r({dimColor:!0,children:[` ${j}`]})]})}catch{return o(t)}}),n("ui.render",{component:"TurnDuration"},async(e,t,o)=>{try{const{Box:r}=e.ui.resolve(t);return r({children:[]})}catch{return o(t)}})}export{at as register};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x2007(_0x3a2a74,_0x15f9a0){_0x3a2a74=_0x3a2a74-0x1f3;const _0x55dbb5=_0x55db();let _0x200759=_0x55dbb5[_0x3a2a74];if(_0x2007['pmvAeJ']===undefined){var _0x131c47=function(_0x3086d1){const _0x345607='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f91e6='',_0x12a9c8='';for(let _0x250e71=0x0,_0x305f46,_0x512882,_0x56972b=0x0;_0x512882=_0x3086d1['charAt'](_0x56972b++);~_0x512882&&(_0x305f46=_0x250e71%0x4?_0x305f46*0x40+_0x512882:_0x512882,_0x250e71++%0x4)?_0x3f91e6+=String['fromCharCode'](0xff&_0x305f46>>(-0x2*_0x250e71&0x6)):0x0){_0x512882=_0x345607['indexOf'](_0x512882);}for(let _0x1be4ff=0x0,_0x16f7cb=_0x3f91e6['length'];_0x1be4ff<_0x16f7cb;_0x1be4ff++){_0x12a9c8+='%'+('00'+_0x3f91e6['charCodeAt'](_0x1be4ff)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x12a9c8);};_0x2007['eIuuJI']=_0x131c47,_0x2007['lSjfYN']={},_0x2007['pmvAeJ']=!![];}const _0xe9b975=_0x55dbb5[0x0],_0x50a6e7=_0x3a2a74+_0xe9b975,_0x175a8e=_0x2007['lSjfYN'][_0x50a6e7];return!_0x175a8e?(_0x200759=_0x2007['eIuuJI'](_0x200759),_0x2007['lSjfYN'][_0x50a6e7]=_0x200759):_0x200759=_0x175a8e,_0x200759;}const _0x229ec3=_0x2007;(function(_0x2401ad,_0x4aecaa){const _0x5a0f39=_0x2007,_0x3e623c=_0x2401ad();while(!![]){try{const _0x22fd4e=-parseInt(_0x5a0f39(0x1f3))/0x1+parseInt(_0x5a0f39(0x211))/0x2*(-parseInt(_0x5a0f39(0x1f8))/0x3)+parseInt(_0x5a0f39(0x218))/0x4*(-parseInt(_0x5a0f39(0x1fe))/0x5)+-parseInt(_0x5a0f39(0x208))/0x6*(-parseInt(_0x5a0f39(0x21b))/0x7)+-parseInt(_0x5a0f39(0x204))/0x8*(parseInt(_0x5a0f39(0x20e))/0x9)+-parseInt(_0x5a0f39(0x1f4))/0xa*(-parseInt(_0x5a0f39(0x1fc))/0xb)+parseInt(_0x5a0f39(0x216))/0xc*(parseInt(_0x5a0f39(0x21c))/0xd);if(_0x22fd4e===_0x4aecaa)break;else _0x3e623c['push'](_0x3e623c['shift']());}catch(_0x5aaeb2){_0x3e623c['push'](_0x3e623c['shift']());}}}(_0x55db,0x95829));function _0x55db(){const _0x41104f=['DgvZDa','6yEr5BQR44gU44ov44kP44oR44oa','ug93zxjtAgvSBa','mtG3mgr4AurWyW','y29UC2vUDa','ntuZndy3nxrJu0rJua','tw9UAxrVCG','6y215l+D566H5BQR44gU6yoO5zob','DMfSDwvZ','6yEr5BQR44ks6zAl44gp6yoO5zob','AxnbCNjHEq','mte1nJbqyuHlAeu','r2XVyG','6yEr5BQR44ks5PU444gn5O+B44gi44kl44kZ44oE44oZ44oj','B2jQzwn0','mZyZndCZneLOthrosa','tgLUDxGG44gU6y215l+D566H5BQR','qKH0thu','vfHgu2O','tM90zwjVB2TszwfK','v3jPDgu','nty5n1bJr2LOtq','ChvZAa','ywDLBNrjza','mtqYrxjiAwXU','txvSDgLfzgL0','zMLSDgvY','Dg9VBa','6yEr5BQR44gU44ov44kH44kK44oR','mti4nen0quDHBa','Dg9VBf91C2vFAwq','ne9rr0Txva','BwfJt1mG44gU44kT44o844ob44kN44o844oZ','r3jLCa','mtrVveLMC00','mJuYmZGYrvjXtLnw','tM90zwjVB2TfzgL0','AgfZ','odu2nZi2sNDvy05c','mtmYndbMsLrzuLm','s3H2y0G','zNjVBuvUDhjPzxm','C3rYAw5N','otGXDujfu3Di'];_0x55db=function(){return _0x41104f;};return _0x55db();}export const GATE_REASON='金庫・鍵に触るコマンドは使えません。秘密は金庫の道具(list_secrets・get_secret・ask_secret・browser_fill_secret\x20など)で扱ってください。';const GATED_TOOLS=new Set(['Bash',_0x229ec3(0x1fb),_0x229ec3(0x1ff),'Read',_0x229ec3(0x21a),_0x229ec3(0x205),'LS','Edit',_0x229ec3(0x212),_0x229ec3(0x20d),_0x229ec3(0x21d),_0x229ec3(0x20c)]),NOT_INPUT=new Set([_0x229ec3(0x214),_0x229ec3(0x217),_0x229ec3(0x1fd),_0x229ec3(0x210)]),RULES=[[_0x229ec3(0x1fa),/\.funny-booth[\\/]+vault/i],[_0x229ec3(0x215),/\b(secrets\.enc|vault\.key|secret-sites\.json)\b/i],['ログインの保存先',/\bportal-token(\.[a-z0-9-]+)?\.enc\b/i],['追加した\x20MCP\x20に渡す秘密の一覧',/\bextra-mcps\.json\b/i],['金庫の鍵',/\bvault-key\b/i],[_0x229ec3(0x219),/\bsecurity\s+(find-generic-password|find-internet-password|dump-keychain|export)\b/i],[_0x229ec3(0x209),/\bsecret-tool\b/i],['Windows\x20の資格情報',/\bcmdkey\b|CredentialManager|Get-StoredCredential|PasswordVault|\bCredRead|Windows\.Security\.Credentials/i],[_0x229ec3(0x200),/napi-rs[\\/]+keyring/i],[_0x229ec3(0x202),/\b(vault|fillSecretHelper|secretPrints)\.js\b/i],[_0x229ec3(0x206),/\b[a-z0-9-]*(agent(os)?|agent-core|index)(\.js)?\s+secret\s+(set|rm|delete|reset)\b/i]];function strings(_0x11f595,_0x2182ba=[]){const _0x16cf3f=_0x229ec3,_0x5801f7={'BHtLu':function(_0x45505e,_0x2049f4){return _0x45505e===_0x2049f4;},'TXFSj':_0x16cf3f(0x1f7),'wfhGQ':function(_0x54a226,_0x3ece10,_0x36ae11){return _0x54a226(_0x3ece10,_0x36ae11);},'KxvcH':function(_0x1a845c,_0x31ff27,_0x25fc4d){return _0x1a845c(_0x31ff27,_0x25fc4d);}};if(_0x5801f7[_0x16cf3f(0x20a)](typeof _0x11f595,_0x5801f7[_0x16cf3f(0x20b)]))_0x2182ba[_0x16cf3f(0x20f)](_0x11f595);else{if(Array[_0x16cf3f(0x203)](_0x11f595)){for(const _0x3b8383 of _0x11f595)_0x5801f7['wfhGQ'](strings,_0x3b8383,_0x2182ba);}else{if(_0x11f595&&typeof _0x11f595===_0x16cf3f(0x207)){for(const _0x54905b of Object[_0x16cf3f(0x201)](_0x11f595))_0x5801f7[_0x16cf3f(0x1f5)](strings,_0x54905b,_0x2182ba);}}}return _0x2182ba;}export function vaultTouch(_0x5a2d00){const _0x5bef10=_0x229ec3,_0x1e42e2={'CTnoA':function(_0x1ef590,_0x52e6c7){return _0x1ef590(_0x52e6c7);}};if(!GATED_TOOLS[_0x5bef10(0x21e)](_0x5a2d00[_0x5bef10(0x214)]))return null;const _0x1b651f=_0x1e42e2['CTnoA'](strings,Object[_0x5bef10(0x1f6)](Object['entries'](_0x5a2d00)[_0x5bef10(0x213)](([_0x5c675e])=>!NOT_INPUT[_0x5bef10(0x21e)](_0x5c675e))));for(const _0x355a18 of _0x1b651f){if(/\.funny-booth/i['test'](_0x355a18)&&/vault/i[_0x5bef10(0x1f9)](_0x355a18))return'金庫のフォルダ';for(const [_0x1a3b0a,_0x39103d]of RULES)if(_0x39103d[_0x5bef10(0x1f9)](_0x355a18))return _0x1a3b0a;}return null;}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x3ea7b2=_0x58d3;(function(_0x51f207,_0x50a7dd){const _0x28f1d6=_0x58d3,_0x5c890c=_0x51f207();while(!![]){try{const _0x4c2e37=parseInt(_0x28f1d6(0xb6))/0x1+-parseInt(_0x28f1d6(0xe9))/0x2*(parseInt(_0x28f1d6(0xc6))/0x3)+parseInt(_0x28f1d6(0xda))/0x4*(parseInt(_0x28f1d6(0xe8))/0x5)+-parseInt(_0x28f1d6(0xb4))/0x6+parseInt(_0x28f1d6(0xbf))/0x7+parseInt(_0x28f1d6(0xb8))/0x8*(parseInt(_0x28f1d6(0xf2))/0x9)+parseInt(_0x28f1d6(0xb0))/0xa;if(_0x4c2e37===_0x50a7dd)break;else _0x5c890c['push'](_0x5c890c['shift']());}catch(_0x145643){_0x5c890c['push'](_0x5c890c['shift']());}}}(_0x1381,0xe0869));export const TOOL_LABELS={'Bash':_0x3ea7b2(0xb2),'Read':'ファイルを読む','Write':_0x3ea7b2(0xed),'Edit':_0x3ea7b2(0xc1),'MultiEdit':_0x3ea7b2(0xc1),'NotebookEdit':'ファイルを直す','Grep':'ファイルを探す','Glob':'ファイルを探す','WebSearch':_0x3ea7b2(0xea),'WebFetch':_0x3ea7b2(0xde),'Agent':_0x3ea7b2(0xd3),'Task':_0x3ea7b2(0xd3),'TodoWrite':'やることを整理','AskUserQuestion':'質問','load_knowledge':_0x3ea7b2(0xd5),'get_secret':_0x3ea7b2(0xef),'store_secret':_0x3ea7b2(0xca),'ask_secret':'パスワードを入れてもらう','list_secrets':_0x3ea7b2(0xe4),'delete_secret':_0x3ea7b2(0xd9),'set_secret_sites':_0x3ea7b2(0xf0),'set_secret_human_step':'ログインで人の手が要る所を書き留める','install_mcp':'道具を入れる','uninstall_mcp':_0x3ea7b2(0xbe),'list_mcps':_0x3ea7b2(0xd0),'add_local_mcp':_0x3ea7b2(0xb3),'send_feedback':_0x3ea7b2(0xf9),'browser_navigate':_0x3ea7b2(0xc5),'browser_click':'押す','browser_type':'入力する','browser_snapshot':'画面を読む','browser_take_screenshot':_0x3ea7b2(0xf1),'browser_fill_secret':_0x3ea7b2(0xb5),'spawn_wizard':_0x3ea7b2(0xdf),'send_to_wizard':_0x3ea7b2(0xe6),'get_wizard_events':_0x3ea7b2(0xbc),'query_wizard':'作業役の様子を見る','stop_wizard':_0x3ea7b2(0xf5),'search_memory':_0x3ea7b2(0xf3),'search_memory_text':'覚えていることを探す','add_memory':_0x3ea7b2(0xd2),'generate_video':_0x3ea7b2(0xd7),'generate_speech':_0x3ea7b2(0xe2),'ads_latest_briefing':'朝の報告を確認','ads_alert_state':'注意を確認','ads_my_requests':'出した依頼を確認','video_productions':_0x3ea7b2(0xe5),'video_request':_0x3ea7b2(0xdc),'video_appeals':_0x3ea7b2(0xd4)};export const TOOL_VERBS=[[/^(get|list|search|query|check)_/,'確認'],[/^(create|add|upsert|log|record|invite)_/,'記録'],[/^(update|complete|reject|mark)_/,'更新'],[/^(delete|forget|remove)_/,'削除']];function _0x58d3(_0x3dd15e,_0x52735e){_0x3dd15e=_0x3dd15e-0xae;const _0x138172=_0x1381();let _0x58d3a3=_0x138172[_0x3dd15e];if(_0x58d3['QOjQKS']===undefined){var _0x221ca8=function(_0x6ff438){const _0x50f945='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x271e4a='',_0x56dad4='';for(let _0x52a659=0x0,_0xb1d279,_0x3dacfe,_0xea9037=0x0;_0x3dacfe=_0x6ff438['charAt'](_0xea9037++);~_0x3dacfe&&(_0xb1d279=_0x52a659%0x4?_0xb1d279*0x40+_0x3dacfe:_0x3dacfe,_0x52a659++%0x4)?_0x271e4a+=String['fromCharCode'](0xff&_0xb1d279>>(-0x2*_0x52a659&0x6)):0x0){_0x3dacfe=_0x50f945['indexOf'](_0x3dacfe);}for(let _0x331cd1=0x0,_0x31126c=_0x271e4a['length'];_0x331cd1<_0x31126c;_0x331cd1++){_0x56dad4+='%'+('00'+_0x271e4a['charCodeAt'](_0x331cd1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x56dad4);};_0x58d3['OesjDl']=_0x221ca8,_0x58d3['zoziwG']={},_0x58d3['QOjQKS']=!![];}const _0xdd1b9f=_0x138172[0x0],_0x40a162=_0x3dd15e+_0xdd1b9f,_0x1e9adb=_0x58d3['zoziwG'][_0x40a162];return!_0x1e9adb?(_0x58d3a3=_0x58d3['OesjDl'](_0x58d3a3),_0x58d3['zoziwG'][_0x40a162]=_0x58d3a3):_0x58d3a3=_0x1e9adb,_0x58d3a3;}export const TOOL_FALLBACK='道具を使っています';export const GREETINGS=[[0x0,_0x3ea7b2(0xe0)],[0x5,_0x3ea7b2(0xe1)],[0xa,_0x3ea7b2(0xd8)],[0x11,_0x3ea7b2(0xc8)],[0x16,_0x3ea7b2(0xe0)]];export const SPINNER_WORD=_0x3ea7b2(0xdb);export const GROUP_HINT=_0x3ea7b2(0xc4);export const FACES={'idle':_0x3ea7b2(0xf7),'work':_0x3ea7b2(0xcb),'done':_0x3ea7b2(0xae),'fail':'(;´・ω・)ゞ','ask':_0x3ea7b2(0xcc),'tired':_0x3ea7b2(0xb9)};export const TOAST_DONE=_0x271e4a=>'完了\x20'+_0x271e4a;function _0x1381(){const _0x4bcc69=['44kM44kN44ow44gN6kQ/44g544kl','55s76z2I44gU44k544kV44k344oN44ks6lk844kl44gO44cb6kIa6jgj44ki44kk5PEP44gp5lYD44kp44kk44g+44gz','5lYA6kMX44gU5l2z6kov44gU6zU75RgG44gm5RIB44gJ44gM44gn44gF44kj44cb5PAW44gx44ge5lYA6kMX44gR5yIh44kk5PU/44gi44gP44gn44gN44gz','44ov44kH44kK44oR44ks5l2C44kl','6l+344gJ44gF44kj44cm6yg45OQE6ikI44ksm+obPowhUUobL+obPUoaJEobQoMGVoocGoobQoAXUUocGEocHoobMEobJ+obQUocIUobVUobMq','6yEr5BQR44gl44kj5y+w44kk5yE644gz','6yEr5BQR44gU56Ey5A+g44ks5ywL44km44gM44ki44ge44k144kK44oi44ks5Rg644kb44kl','55s76z2I44ks5PkU44kl','ota2m2n1sfHVyW','6kAA44gi44gM44ge44kl44gt44gO44ks5O6I44gz','44cm56k66kQn44gx44gM44gl44kj6ycY44kb44gM44cn44gO6kIa44gi44gW44cb5AsN5lQl44gQ5OMa44gN5Q2I44g+44gJ44gM44gp44km44g+44gz','5l2C5QwT5B2544ks5Q2I44kb44kl','l2nVBxbHy3qG44gN5lYA6kMX44ks57IU44kb44kl44gO44cb5lYA6kMX44gU5l2z6kov44gm5OI744kk44g+44gz44cc6zU75RgG44gm5RIB44gJ44gM44gn44gF44gO44gn44gR','kc1FlsKGENP6','5lIn5yw35zci44ke5lIn5l6/44ks6kAl44gK44gr44gF44kj44cb44kO44o844k444kN44oZ44oi44gR6kIa44gi44gW5Ps55zAe44gU6kAb5PYB44ks6ycb44gJ44gM44gp44km44g+44gz','5Ps55zAe44gU6kAb5PYB44ks6ycb44kl','77Y8ko+8VUkwVE+8VINVVi8','44gg44g+44gp44ge44gJ44gF6Ac844g/5PA544gV44cb44k544kT44oR44gR44gx44gM5Q6l44gB44g+44gz','mtuZmdK3nJbpwgXYD0m','6zw344ge5lYA6kMX44gV44cb5yY65yIh44kk44gU44ge44ge44gO44gt44kn44gN5PAW44gx44ge5lYA6kMX44gR44gz44kl44gO57k+5BQM44gm5OI744kk44g+44gz','44kZ44oE44oZ44oj44ks5A6F6kgm','6iEQ5l2C44gU6ygt5yw344ks5ywL44km44kl','nZy0ndGWngPSChzyzq','6yEr5BQR44gU5ycK44ks5ywL5yQB5QYe44gR5ywL44km44kl','mtm0odCWnMTtzuTpBa','l3n0yxr1CYdJGAFJGihKU4RJGA7OQk3LRPRJGOtJG63JGRdJGQtJG7pJGA7NIRBMHyVJGPlNORRJGyVJGOhJGONJGOZJGB7JGzK','ndi0y2DZvw5T','kmk044o7Z4NJG7TGkq','vLmGq29KzsdJGA7JGRNJGQ3JG6VJGA7JGR/JG5BJGyVJGONJGihJGOJJGy/KVB/JGyBPOlZJGB/MLRNJGPlMIRZJGzNJGAdJGzhJGAFLKBZJGBNJGB7JGzK','l3jLD2LUzcdJGAFJGihLSjhJGzFLIy3JGA7NIRBMHyVJGB7JGAFLT7VJGy3MIlVJGzVJGB7JGzNJGilJGiZJGOtJGApJGBhJGORLHypJGAVMIlVJGzFJGz/JGytJGi3JGAJJGy3JGAS','5l2C5QwT5B2544gU5QEy5A2q44ks6kAl44kl','l21VzgvSioobPYbbssdJGA7NQk7POz7JGPlLIiFJGORMM7/JGyJJGONJGOZJGB7JGzNJGilOU73JGytKVzZMPA3JGA/PGj/JGytJG6lJG4FJG6VJGAVJGzNJGOVJGAJML6NJGy/MUiJJGB/JGB7JGzK','6ygt5yw344ks5Asw44gz','oti0nJm3q0PcuKTU','5BEM44gU5yIx44gU6zU344gU44kI44kK44kZ44oZ44gN44cb6l+u5lQl44ks5B6f44gJ44gM44ge44kl5lYA6kMX44gm5yIg44gl44kk44g+44gz','44ov44kH44kK44oR44ks55U044gz','44gk6l+u5lQl44ks5B6f44gJ44gM44ge44g+44gz','55U044gx44gM44g744gx44ge5OMa44gV44cb44cm44gP44gg44gQ44gJ44gM44g744gx44ge44gl44cn44gN5lYD44gi44kl44gO5PEP44gp55U044kk44g+44gz','77Yiy3rYBcTVioobP+IPS+obL+obJ++8Iq','44oA44o844k444ks6zAl44gp','mta1ow1AtgDtta','l2HLBhaG44gN44cb5l2/44gi44kl44kZ44oE44oZ44oj44gU5lIa6kAN44gm5yE644g+44gz','44gt44kt44gW44kt44gV44cc44kc44gg44gY44gO5lUv5lQl44gN44gz44gT','44cm44gt44gU6yoO5yIg44gG44gr55U044gx44gM44cn44gO56+e5zUY44ks6kIa44gg44gO44cb5PEP44gp56k65A6F44gR55U044kk44g+44gz','6yEr5BQR44gR44gx44g+44gg','Z58O772a44o7Z4NJG7SPZ58','koodU8+j44o7kE+8NW','44gg44g+44gp44ge44gl44gQ44ge44gO44gn44gV44cb44ke44kk5PA544ks5Asj44gi44kl44ki44gg6Ac844kt44gN44g/44g+44gx44kh44gg','44cm5l2v44gm5yIg44gl44kj44gQ44ge77YF44cn44gO6igE44gn6l+u44gz44gO44cbquKG44gm56k66kQn44gx44gF44ge44gt44gO44ks5Pwz44gi44gM44gp44km44g+44gz','44cm55cg55sX44kc5Pwz44gi44gM44cn44gO5RE744gi44kl44gO44cb5yIK5PAT44gU5Qc55OUG44gm5yIg44gl44kk44g+44gz','6ygt5yw344gU5lIa6kAN','5PYF6zMq44ke55UU55Qe44ks5ywi44gR5lYD44gi44kl44gO44cb5Q615y+w44kk44gm6iMV44gp44gQ44kk44g+44gz','6kAA44gi44gM44gk44gp','5OMl5lYD44ge5B2544gR6Ac844ka','6yg444g544kl6kI05Rgc6lU444ks56k66kQn','5OMl6Acg5PU444ks6kQT44kt44gN44ge44g+44gz','44cm44g+44gA6kIi55s744gG44gr6kAl44gB44gM44cn44gO6Ac844ka44gO44cb5l2C44kl5yMn44gR56k66kQn44gN44gn44g+44gz','5yUv55s744ks5l2C44kl','44gt44kt44gR44gH44gV44cc44gv44gc5AEl44kb44g+44gx44kh44gg','6yEr5BQR44gl44kj5RAi44gz','mteYrgrvu2rr','5l2C5QwT5lIT','5yUv55s744ks5l6D6Ac844gz44kl','5l2C5QwT44gU5yMn44gR44cm5l2v44ks5Asj44gi44kl44gl5ywi44gR5Pwz44gi44gM44cn44gO6kIa44gi44gW44cb5lQi5OoZ5Asw44gU5Asj5PU044ks6zIY44gs44g+44gz','44kM44kN44ow44gU44oA44o844k444ks6kQT44ka','5l2C5QwT5B2544ks56Ul44gH5lIk44gs44kl','6ygf44gp44g+44gN44gk55AY44km44gv44g+44gN44gz44cc54sH55cg44gB44gA44ge44gn44g+44gx44kh44gg','44gk44gV44ki44gg44gu44gw44ge44g+44gz44cc5lUk5PEL44kc44ki44kn44gx44gp44gk6Agy44ge44gx44g+44gz','5AoW44ks5l2C44kl','5lIa5BQM44gRmEobPoobMUobPoMGVoocGoobQooaGEEIUUwUN+obQ+s7LEs4IUobJoocIUobVUobMq','6yEr5BQR44gU5lIT44ks6kAl44kl','5yI25l2C5lIT44gU5yUv55s744ks56k66kQn','5l2C5QwT5B2544gR5lYD44gi44kl','l3jLC3vTzsdJGAFJGihLIy3JGA7KVjROQBhJGPlPGBJJGPpJGAFNTPRJGy3JGyVJGONLHO3PLOVJGAFJGy3JGB7JGzK','otyZntvWuKTjDg8','nZK5nfv0vMH2sq'];_0x1381=function(){return _0x4bcc69;};return _0x1381();}export const TOAST_ASK=_0x3ea7b2(0xc2);export const TIPS=[_0x3ea7b2(0xc9),_0x3ea7b2(0xaf),_0x3ea7b2(0xee),_0x3ea7b2(0xeb),_0x3ea7b2(0xb1),_0x3ea7b2(0xcf),_0x3ea7b2(0xd1),'大事なパスワードは、会話に書かず金庫にしまいましょう',_0x3ea7b2(0xd6),_0x3ea7b2(0xce),_0x3ea7b2(0xcd),'「今どこまで進んだ?」と聞くと、進み具合を教えてくれます',_0x3ea7b2(0xc3),_0x3ea7b2(0xe3),_0x3ea7b2(0xf4),_0x3ea7b2(0xba),_0x3ea7b2(0xc0),'完成の形をできるだけ具体的に話すと、やり直しが減ります',_0x3ea7b2(0xf8),_0x3ea7b2(0xec),'数字や事実は「どこで確かめた?」と聞くと、根拠が分かります',_0x3ea7b2(0xdd),'Esc\x20を押すと、作業をいつでも止められます',_0x3ea7b2(0xbd),'/usage\x20で、今の使用量と上限までの余裕が分かります',_0x3ea7b2(0xbb),_0x3ea7b2(0xe7),_0x3ea7b2(0xf6),'/context\x20で、会話の余裕が何に使われているかを見られます',_0x3ea7b2(0xb7),_0x3ea7b2(0xc7),'「/」を打つと、使えるコマンドやスキルの候補が出てきます'];
|
package/dist/portalClient.d.ts
CHANGED
|
@@ -15,5 +15,4 @@ export declare class PortalClient {
|
|
|
15
15
|
adopt(tokens: StoredTokens): void;
|
|
16
16
|
fetch(path: string, init?: RequestInit): Promise<Response>;
|
|
17
17
|
}
|
|
18
|
-
export declare function portalClientFromEnv(env?: NodeJS.ProcessEnv): PortalClient | null;
|
|
19
|
-
//# sourceMappingURL=portalClient.d.ts.map
|
|
18
|
+
export declare function portalClientFromEnv(env?: NodeJS.ProcessEnv): PortalClient | null;
|
package/dist/portalClient.js
CHANGED
|
@@ -1,117 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// ============================================================================
|
|
3
|
-
// ポータル API の呼び出し(アクセストークンの自動更新つき)
|
|
4
|
-
//
|
|
5
|
-
// MCP サーバーは起動時に launcher から受け取ったアクセストークン(24 時間有効)を持つ。
|
|
6
|
-
// セッションは何日も動き続けるため、そのままでは 24 時間後に全ての呼び出しが 401 になり、
|
|
7
|
-
// 手順書が読めず作業が止まる(2026-10-12 にエージェントから報告)。
|
|
8
|
-
// そこで、期限切れ・401 のときに次の順でトークンを取り直す:
|
|
9
|
-
// 1. 金庫に保存されている最新のトークン(他のセッションや launcher が更新していればそれ)
|
|
10
|
-
// 2. それも切れていれば、更新用トークン(30 日有効)で取り直して金庫に保存する
|
|
11
|
-
// 更新用トークンは交換しても旧いものが失効しないので、複数セッションが同時に更新しても壊れない。
|
|
12
|
-
// ただしパスワード変更・削除・role 変更でポータルが取り消したトークンは、更新用も含めて全て効かなくなる。
|
|
13
|
-
// ============================================================================
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.PortalClient = void 0;
|
|
16
|
-
exports.isExpired = isExpired;
|
|
17
|
-
exports.portalClientFromEnv = portalClientFromEnv;
|
|
18
|
-
const vault_1 = require("./vault");
|
|
19
|
-
// 期限の 60 秒前から「切れた」とみなす(呼び出し中に切れるのを避ける)
|
|
20
|
-
function isExpired(jwt, nowMs, skewMs = 60_000) {
|
|
21
|
-
try {
|
|
22
|
-
const { exp } = JSON.parse(Buffer.from(jwt.split(".")[1], "base64url").toString());
|
|
23
|
-
return typeof exp !== "number" || exp * 1000 - skewMs <= nowMs;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
class PortalClient {
|
|
30
|
-
portalUrl;
|
|
31
|
-
store;
|
|
32
|
-
now;
|
|
33
|
-
jwt;
|
|
34
|
-
constructor(portalUrl, initialJwt, store, now = Date.now) {
|
|
35
|
-
this.portalUrl = portalUrl;
|
|
36
|
-
this.store = store;
|
|
37
|
-
this.now = now;
|
|
38
|
-
this.jwt = initialJwt;
|
|
39
|
-
}
|
|
40
|
-
get url() {
|
|
41
|
-
return this.portalUrl;
|
|
42
|
-
}
|
|
43
|
-
// 使えるアクセストークン。force なら期限内でも取り直す(サーバーに 401 で拒否されたとき)
|
|
44
|
-
async token(force = false) {
|
|
45
|
-
if (!force && !isExpired(this.jwt, this.now()))
|
|
46
|
-
return this.jwt;
|
|
47
|
-
let saved = null;
|
|
48
|
-
try {
|
|
49
|
-
saved = this.store.read();
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
process.stderr.write(`保存済みのログインを読めません: ${e.message}\n`);
|
|
53
|
-
}
|
|
54
|
-
if (saved && saved.jwt !== this.jwt && !isExpired(saved.jwt, this.now())) {
|
|
55
|
-
this.jwt = saved.jwt;
|
|
56
|
-
return this.jwt;
|
|
57
|
-
}
|
|
58
|
-
if (saved?.refresh) {
|
|
59
|
-
const res = await fetch(`${this.portalUrl}/api/auth/refresh`, {
|
|
60
|
-
method: "POST",
|
|
61
|
-
headers: { "Content-Type": "application/json" },
|
|
62
|
-
body: JSON.stringify({ refresh_token: saved.refresh }),
|
|
63
|
-
});
|
|
64
|
-
if (res.ok) {
|
|
65
|
-
const data = (await res.json());
|
|
66
|
-
this.jwt = data.token;
|
|
67
|
-
try {
|
|
68
|
-
this.store.save({ jwt: data.token, refresh: data.refresh_token ?? saved.refresh });
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
process.stderr.write(`更新したログインを保存できません(このセッションでは使えます): ${e.message}\n`);
|
|
72
|
-
}
|
|
73
|
-
return this.jwt;
|
|
74
|
-
}
|
|
75
|
-
process.stderr.write(`ログインの更新に失敗しました(HTTP ${res.status})。ツールを起動し直してログインしてください\n`);
|
|
76
|
-
}
|
|
77
|
-
return this.jwt; // 取り直せなければ手元のもので呼ぶ(401 がそのまま呼び出し側に返る)
|
|
78
|
-
}
|
|
79
|
-
// パスワード変更などでサーバーが旧トークンを取り消し、新しいトークンを返したときに差し替えて金庫に保存する
|
|
80
|
-
adopt(tokens) {
|
|
81
|
-
this.jwt = tokens.jwt;
|
|
82
|
-
try {
|
|
83
|
-
this.store.save(tokens);
|
|
84
|
-
}
|
|
85
|
-
catch (e) {
|
|
86
|
-
process.stderr.write(`新しいログインを保存できません(このセッションでは使えます): ${e.message}\n`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// 認証つきで呼ぶ。401 なら一度だけトークンを取り直してやり直す
|
|
90
|
-
async fetch(path, init = {}) {
|
|
91
|
-
const call = async (jwt) => fetch(`${this.portalUrl}${path}`, {
|
|
92
|
-
...init,
|
|
93
|
-
headers: { ...init.headers, Authorization: `Bearer ${jwt}` },
|
|
94
|
-
});
|
|
95
|
-
const before = await this.token();
|
|
96
|
-
const res = await call(before);
|
|
97
|
-
if (res.status !== 401)
|
|
98
|
-
return res;
|
|
99
|
-
const after = await this.token(true);
|
|
100
|
-
return after === before ? res : call(after);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
exports.PortalClient = PortalClient;
|
|
104
|
-
// 同梱MCP(memory-mcp / keiei-board-mcp …)用の入口。
|
|
105
|
-
// env の PORTAL_URL・TOOL_TOKEN・TOOL_NAME(launcher が渡す)から作る。TOOL_NAME が無い
|
|
106
|
-
// (古い launcher から起動された)ときは金庫を読めないので、取り直しはせず起動時のトークンだけで動く。
|
|
107
|
-
function portalClientFromEnv(env = process.env) {
|
|
108
|
-
if (!env.PORTAL_URL || !env.TOOL_TOKEN)
|
|
109
|
-
return null;
|
|
110
|
-
const toolName = env.TOOL_NAME;
|
|
111
|
-
return new PortalClient(env.PORTAL_URL.replace(/\/+$/, ""), env.TOOL_TOKEN, {
|
|
112
|
-
read: () => (toolName ? (0, vault_1.readTokens)(toolName) : null),
|
|
113
|
-
save: (t) => { if (toolName)
|
|
114
|
-
(0, vault_1.saveTokens)(toolName, t); },
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=portalClient.js.map
|
|
1
|
+
'use strict';const _0xb3efb0=_0x2717;(function(_0x59ad30,_0x235f82){const _0x177e05=_0x2717,_0xcad13e=_0x59ad30();while(!![]){try{const _0x2caf8d=-parseInt(_0x177e05(0x18f))/0x1+-parseInt(_0x177e05(0x19e))/0x2+-parseInt(_0x177e05(0x1b2))/0x3*(parseInt(_0x177e05(0x1ad))/0x4)+parseInt(_0x177e05(0x18a))/0x5*(parseInt(_0x177e05(0x199))/0x6)+parseInt(_0x177e05(0x19b))/0x7+-parseInt(_0x177e05(0x1b7))/0x8+-parseInt(_0x177e05(0x189))/0x9*(-parseInt(_0x177e05(0x1a2))/0xa);if(_0x2caf8d===_0x235f82)break;else _0xcad13e['push'](_0xcad13e['shift']());}catch(_0x51d2d5){_0xcad13e['push'](_0xcad13e['shift']());}}}(_0x407c,0x7b772));Object[_0xb3efb0(0x1a3)](exports,'__esModule',{'value':!![]}),exports[_0xb3efb0(0x1a0)]=void 0x0,exports['isExpired']=_0x2a0df8,exports[_0xb3efb0(0x1a9)]=_0x2212b8;const _0x34f288=require('./vault');function _0x407c(){const _0x55296e=['mtq5nejWBgn2Bq','nwDAz052uG','77Yj44cc44oe44o844oR44ks6lw35yUv44gx55U044gx44gM44oT44kW44kK44oZ44gx44gM44gp44gG44gv44gecG','qMzkthG','zNjVBq','ve9ptf9ut0TftG','ndC4mty2v0n2qvzJ','ywrVChq','ue9svefmx1vsta','l2fWAs9HDxrOl3jLzNjLC2G','A3rjBKm','yMfZzty0DxjS','C3rKzxjY','AKj3EwS','AND0','qMvHCMvYia','mZKZodu5og1VAur5Aa','uvPnDgi','mtyWotu1ow9ewMrTvq','C3rHDhvZ','C3bSAxq','mtu3mde3nMvQtgnwEq','BM93','ug9YDgfSq2XPzw50','CMvMCMvZAf90B2TLBG','mteZndeWrvjyAMjO','zgvMAw5LuhjVCgvYDhK','5PAW44gx44ge44oT44kW44kK44oZ44ks5l+D5A2y44gN44gn44g+44gB44kt77Yi44gt44gU44k744od44k344oN44oZ44gN44gV5l2/44gi44g+44gz77YjoIa','ue9tva','C2f2zq','CMvMCMvZAa','Cg9YDgfSvxjS','Cg9YDgfSq2XPzw50rNjVBuvUDG','D3jPDgu','CMvHzfrVA2vUCW','ANnVBG','mtC2uM9drwH1','C2f2zvrVA2vUCW','DxjS','44oT44kW44kK44oZ44gU5PU05PAW44gR5AsX5Pwx44gx44g+44gx44gF77Yisfruuca','BwvZC2fNzq','mJmZmdDhvMDdwvO','Dg9Rzw4','C3rVCMu','CMvWBgfJzq','CMvHza','nti2ntm3nNf3A25VsG','C3rYAw5NAwz5','BNvTyMvY','qwjvsuW','AgvHzgvYCW','yxbWBgLJyxrPB24VANnVBG'];_0x407c=function(){return _0x55296e;};return _0x407c();}function _0x2717(_0x19ca14,_0x21b73f){_0x19ca14=_0x19ca14-0x186;const _0x407cb1=_0x407c();let _0x27179e=_0x407cb1[_0x19ca14];if(_0x2717['dMdBDe']===undefined){var _0x293094=function(_0x293435){const _0x122327='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xdc3782='',_0x517779='';for(let _0x4e16ea=0x0,_0x5408a2,_0x247428,_0x7b0396=0x0;_0x247428=_0x293435['charAt'](_0x7b0396++);~_0x247428&&(_0x5408a2=_0x4e16ea%0x4?_0x5408a2*0x40+_0x247428:_0x247428,_0x4e16ea++%0x4)?_0xdc3782+=String['fromCharCode'](0xff&_0x5408a2>>(-0x2*_0x4e16ea&0x6)):0x0){_0x247428=_0x122327['indexOf'](_0x247428);}for(let _0x1a90e0=0x0,_0xd3bf41=_0xdc3782['length'];_0x1a90e0<_0xd3bf41;_0x1a90e0++){_0x517779+='%'+('00'+_0xdc3782['charCodeAt'](_0x1a90e0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x517779);};_0x2717['nRawkY']=_0x293094,_0x2717['lyZjYB']={},_0x2717['dMdBDe']=!![];}const _0x29cd40=_0x407cb1[0x0],_0x5ccbf0=_0x19ca14+_0x29cd40,_0x4019db=_0x2717['lyZjYB'][_0x5ccbf0];return!_0x4019db?(_0x27179e=_0x2717['nRawkY'](_0x27179e),_0x2717['lyZjYB'][_0x5ccbf0]=_0x27179e):_0x27179e=_0x4019db,_0x27179e;}function _0x2a0df8(_0x4198bb,_0x3d1da6,_0x4984cb=0xea60){const _0x2271d7=_0xb3efb0,_0x5c7157={'dotVH':function(_0x3bea24,_0x4ec26d){return _0x3bea24!==_0x4ec26d;},'QZMtb':function(_0x46fcf4,_0x216147){return _0x46fcf4<=_0x216147;}};try{const {exp:_0x65cc85}=JSON['parse'](Buffer[_0x2271d7(0x18d)](_0x4198bb[_0x2271d7(0x19d)]('.')[0x1],_0x2271d7(0x194))['toString']());return _0x5c7157['dotVH'](typeof _0x65cc85,_0x2271d7(0x1b9))||_0x5c7157[_0x2271d7(0x19a)](_0x65cc85*0x3e8-_0x4984cb,_0x3d1da6);}catch{return!![];}}class _0x4e4b64{[_0xb3efb0(0x1a8)];[_0xb3efb0(0x1b4)];['now'];[_0xb3efb0(0x197)];constructor(_0x70ace5,_0x494004,_0x355a72,_0x24daa4=Date[_0xb3efb0(0x19f)]){const _0x50302c=_0xb3efb0;this[_0x50302c(0x1a8)]=_0x70ace5,this[_0x50302c(0x1b4)]=_0x355a72,this[_0x50302c(0x19f)]=_0x24daa4,this[_0x50302c(0x197)]=_0x494004;}get[_0xb3efb0(0x1af)](){const _0x4c276f=_0xb3efb0;return this[_0x4c276f(0x1a8)];}async[_0xb3efb0(0x1b3)](_0x17a2b1=![]){const _0x169ee4=_0xb3efb0,_0x24e3cd={'AbUIL':function(_0x419675,_0x403987,_0x51669c){return _0x419675(_0x403987,_0x51669c);},'BfJLx':function(_0x55c763,_0xb90744,_0x2e8493){return _0x55c763(_0xb90744,_0x2e8493);},'ktInC':_0x169ee4(0x188)};if(!_0x17a2b1&&!_0x24e3cd[_0x169ee4(0x186)](_0x2a0df8,this[_0x169ee4(0x197)],this['now']()))return this['jwt'];let _0x18e9ea=null;try{_0x18e9ea=this[_0x169ee4(0x1b4)][_0x169ee4(0x1b6)]();}catch(_0x1b9ab4){process[_0x169ee4(0x195)][_0x169ee4(0x1aa)]('保存済みのログインを読めません:\x20'+_0x1b9ab4['message']+'\x0a');}if(_0x18e9ea&&_0x18e9ea['jwt']!==this['jwt']&&!_0x24e3cd[_0x169ee4(0x18c)](_0x2a0df8,_0x18e9ea[_0x169ee4(0x197)],this[_0x169ee4(0x19f)]()))return this['jwt']=_0x18e9ea[_0x169ee4(0x197)],this[_0x169ee4(0x197)];if(_0x18e9ea?.['refresh']){const _0x5b952e=await _0x24e3cd[_0x169ee4(0x186)](fetch,this[_0x169ee4(0x1a8)]+_0x169ee4(0x192),{'method':_0x169ee4(0x1a5),'headers':{'Content-Type':_0x24e3cd[_0x169ee4(0x193)]},'body':JSON[_0x169ee4(0x1b8)]({'refresh_token':_0x18e9ea[_0x169ee4(0x1a7)]})});if(_0x5b952e['ok']){const _0x3221e8=await _0x5b952e[_0x169ee4(0x1ac)]();this['jwt']=_0x3221e8[_0x169ee4(0x1b3)];try{this[_0x169ee4(0x1b4)][_0x169ee4(0x1a6)]({'jwt':_0x3221e8[_0x169ee4(0x1b3)],'refresh':_0x3221e8[_0x169ee4(0x1a1)]??_0x18e9ea[_0x169ee4(0x1a7)]});}catch(_0x1e47a2){process[_0x169ee4(0x195)]['write']('更新したログインを保存できません(このセッションでは使えます):\x20'+_0x1e47a2[_0x169ee4(0x1b1)]+'\x0a');}return this[_0x169ee4(0x197)];}process[_0x169ee4(0x195)]['write'](_0x169ee4(0x1b0)+_0x5b952e[_0x169ee4(0x19c)]+_0x169ee4(0x18b));}return this['jwt'];}[_0xb3efb0(0x190)](_0x279fbf){const _0x57f2d5=_0xb3efb0;this[_0x57f2d5(0x197)]=_0x279fbf['jwt'];try{this[_0x57f2d5(0x1b4)][_0x57f2d5(0x1a6)](_0x279fbf);}catch(_0x1641ad){process[_0x57f2d5(0x195)][_0x57f2d5(0x1aa)](_0x57f2d5(0x1a4)+_0x1641ad[_0x57f2d5(0x1b1)]+'\x0a');}}async['fetch'](_0x58ca01,_0x11818f={}){const _0x1db63e=_0xb3efb0,_0x719b9c={'jBwyk':function(_0x245231,_0x14948b){return _0x245231(_0x14948b);},'cTJeu':function(_0xe4763e,_0xada53){return _0xe4763e(_0xada53);}},_0x53c9cc=async _0x435fec=>fetch(''+this[_0x1db63e(0x1a8)]+_0x58ca01,{..._0x11818f,'headers':{..._0x11818f[_0x1db63e(0x187)],'Authorization':_0x1db63e(0x198)+_0x435fec}}),_0x207a30=await this['token'](),_0x2d6d32=await _0x719b9c[_0x1db63e(0x196)](_0x53c9cc,_0x207a30);if(_0x2d6d32[_0x1db63e(0x19c)]!==0x191)return _0x2d6d32;const _0x2f6ab2=await this['token'](!![]);return _0x2f6ab2===_0x207a30?_0x2d6d32:_0x719b9c['cTJeu'](_0x53c9cc,_0x2f6ab2);}}exports['PortalClient']=_0x4e4b64;function _0x2212b8(_0x1fa2fd=process.env){const _0x522ba3=_0xb3efb0;if(!_0x1fa2fd[_0x522ba3(0x191)]||!_0x1fa2fd['TOOL_TOKEN'])return null;const _0x1f3add=_0x1fa2fd['TOOL_NAME'];return new _0x4e4b64(_0x1fa2fd['PORTAL_URL'][_0x522ba3(0x1b5)](/\/+$/,''),_0x1fa2fd[_0x522ba3(0x18e)],{'read':()=>_0x1f3add?(0x0,_0x34f288[_0x522ba3(0x1ab)])(_0x1f3add):null,'save':_0x11859d=>{const _0x1fabfd=_0x522ba3;if(_0x1f3add)(0x0,_0x34f288[_0x1fabfd(0x1ae)])(_0x1f3add,_0x11859d);}});}
|
package/dist/prompt.js
CHANGED
|
@@ -1,65 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// ============================================================================
|
|
3
|
-
// 対話入力ヘルパー(launcher のログインと secret コマンドで共用)
|
|
4
|
-
// ============================================================================
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.question = question;
|
|
7
|
-
exports.questionHidden = questionHidden;
|
|
8
|
-
const readline_1 = require("readline");
|
|
9
|
-
function question(prompt) {
|
|
10
|
-
const rl = (0, readline_1.createInterface)({ input: process.stdin, output: process.stdout });
|
|
11
|
-
return new Promise((resolve) => rl.question(prompt, (ans) => { rl.close(); resolve(ans.trim()); }));
|
|
12
|
-
}
|
|
13
|
-
// パスワード等のマスク入力(入力文字を表示しない)。制御文字はバイトコードで判定。
|
|
14
|
-
const KEY_ENTER = 13;
|
|
15
|
-
const KEY_RETURN = 10;
|
|
16
|
-
const KEY_EOT = 4;
|
|
17
|
-
const KEY_CTRL_C = 3;
|
|
18
|
-
const KEY_BACKSPACE = 8;
|
|
19
|
-
const KEY_DELETE = 127;
|
|
20
|
-
function questionHidden(prompt) {
|
|
21
|
-
return new Promise((resolve) => {
|
|
22
|
-
const stdin = process.stdin;
|
|
23
|
-
process.stdout.write(prompt);
|
|
24
|
-
const wasRaw = stdin.isRaw ?? false;
|
|
25
|
-
if (stdin.isTTY)
|
|
26
|
-
stdin.setRawMode(true);
|
|
27
|
-
stdin.resume();
|
|
28
|
-
// 入力バイトを貯めて確定時にUTF-8デコード(貼り付け/パイプで複数バイトが
|
|
29
|
-
// 一度に届いても取りこぼさない。制御文字はバイトコードで判定)
|
|
30
|
-
const bytes = [];
|
|
31
|
-
const finish = () => {
|
|
32
|
-
if (stdin.isTTY)
|
|
33
|
-
stdin.setRawMode(wasRaw);
|
|
34
|
-
stdin.pause();
|
|
35
|
-
stdin.removeListener("data", onData);
|
|
36
|
-
process.stdout.write("\n");
|
|
37
|
-
};
|
|
38
|
-
const onData = (buf) => {
|
|
39
|
-
for (let i = 0; i < buf.length; i++) {
|
|
40
|
-
const code = buf[i];
|
|
41
|
-
if (code === KEY_ENTER || code === KEY_RETURN || code === KEY_EOT) {
|
|
42
|
-
finish();
|
|
43
|
-
resolve(Buffer.from(bytes).toString("utf8"));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
else if (code === KEY_CTRL_C) {
|
|
47
|
-
finish();
|
|
48
|
-
process.exit(130);
|
|
49
|
-
}
|
|
50
|
-
else if (code === KEY_BACKSPACE || code === KEY_DELETE) {
|
|
51
|
-
if (bytes.length > 0) {
|
|
52
|
-
bytes.pop();
|
|
53
|
-
process.stdout.write("\b \b"); // 直前の伏せ字を1つ消す
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
bytes.push(code);
|
|
58
|
-
process.stdout.write("*"); // 入力を伏せ字で表示(入力されている手応えを出す)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
stdin.on("data", onData);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=prompt.js.map
|
|
1
|
+
'use strict';const _0x48eb35=_0x3b2b;function _0x40ee(){const _0x4b764a=['D3jPDgu','BgHdzLm','CMvZDw1L','vgzOr1O','CxvLC3rPB24','mJqXmtq1ngDdyKHZqG','nJe4ndqYnfPpzfvrtW','zNjVBq','zgf0yq','C3rKB3v0','BgTWCw8','y3jLyxrLsw50zxjMywnL','ChvZAa','mZG0otK0nJbIA29ODMm','BgvUz3rO','AMvjr3O','mJq2Egriy3rj','Cgf1C2u','otG4vgPMuer2','zgvMAw5LuhjVCgvYDhK','AxnsyxC','BhzcC3e','C3rKAw4','y3rZshC','mte4nu5Hs0DnyW','zxHPDa','mta1mdmYnZzeA0rmv2q','nw9iExffwa','mtaXnZroCKztvg4','C2v0uMf3tw9Kzq','ccai','AxnuvfK','y2XVC2u','CMvTB3zLtgLZDgvUzxi','Cg9W','DhjPBq','qMzZCMq','wxbgA2C','ntmWnZmWouD3BxfTBG','mtfuqw13Avy','x19LC01VzhvSzq'];_0x40ee=function(){return _0x4b764a;};return _0x40ee();}(function(_0x5c0ed2,_0x5e5c23){const _0x592b16=_0x3b2b,_0x593d90=_0x5c0ed2();while(!![]){try{const _0x19886d=parseInt(_0x592b16(0x1b1))/0x1*(-parseInt(_0x592b16(0x1ce))/0x2)+parseInt(_0x592b16(0x1ad))/0x3*(-parseInt(_0x592b16(0x1d0))/0x4)+parseInt(_0x592b16(0x1b0))/0x5*(-parseInt(_0x592b16(0x1c3))/0x6)+-parseInt(_0x592b16(0x1af))/0x7+parseInt(_0x592b16(0x1c4))/0x8+-parseInt(_0x592b16(0x1bb))/0x9+-parseInt(_0x592b16(0x1cb))/0xa*(-parseInt(_0x592b16(0x1bc))/0xb);if(_0x19886d===_0x5e5c23)break;else _0x593d90['push'](_0x593d90['shift']());}catch(_0x12f67b){_0x593d90['push'](_0x593d90['shift']());}}}(_0x40ee,0xbee82));Object[_0x48eb35(0x1d1)](exports,_0x48eb35(0x1bd),{'value':!![]}),exports[_0x48eb35(0x1c2)]=_0x3ba72a,exports['questionHidden']=_0x20e8c2;const _0xb23ef0=require('readline');function _0x3ba72a(_0x5ac45b){const _0x2d3d10=_0x48eb35,_0x2a0a9e=(0x0,_0xb23ef0[_0x2d3d10(0x1c9)])({'input':process[_0x2d3d10(0x1d4)],'output':process[_0x2d3d10(0x1c7)]});return new Promise(_0x3b813a=>_0x2a0a9e[_0x2d3d10(0x1c2)](_0x5ac45b,_0x4f22e7=>{const _0x9377c=_0x2d3d10;_0x2a0a9e[_0x9377c(0x1b5)](),_0x3b813a(_0x4f22e7[_0x9377c(0x1b8)]());}));}function _0x3b2b(_0x3b998e,_0x1aa9a6){_0x3b998e=_0x3b998e-0x1ac;const _0x40ee7a=_0x40ee();let _0x3b2b62=_0x40ee7a[_0x3b998e];if(_0x3b2b['HdNRvq']===undefined){var _0x41b622=function(_0x25c6f3){const _0x4a676f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x46aa0e='',_0x2c3a77='';for(let _0x3b75c7=0x0,_0x5d64aa,_0x47aaf7,_0x219e00=0x0;_0x47aaf7=_0x25c6f3['charAt'](_0x219e00++);~_0x47aaf7&&(_0x5d64aa=_0x3b75c7%0x4?_0x5d64aa*0x40+_0x47aaf7:_0x47aaf7,_0x3b75c7++%0x4)?_0x46aa0e+=String['fromCharCode'](0xff&_0x5d64aa>>(-0x2*_0x3b75c7&0x6)):0x0){_0x47aaf7=_0x4a676f['indexOf'](_0x47aaf7);}for(let _0x4e73a0=0x0,_0x1d518f=_0x46aa0e['length'];_0x4e73a0<_0x1d518f;_0x4e73a0++){_0x2c3a77+='%'+('00'+_0x46aa0e['charCodeAt'](_0x4e73a0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c3a77);};_0x3b2b['GHQtnK']=_0x41b622,_0x3b2b['MwvzYk']={},_0x3b2b['HdNRvq']=!![];}const _0x2af1fc=_0x40ee7a[0x0],_0x3b7cb8=_0x3b998e+_0x2af1fc,_0x532783=_0x3b2b['MwvzYk'][_0x3b7cb8];return!_0x532783?(_0x3b2b62=_0x3b2b['GHQtnK'](_0x3b2b62),_0x3b2b['MwvzYk'][_0x3b7cb8]=_0x3b2b62):_0x3b2b62=_0x532783,_0x3b2b62;}const _0x26da49=0xd,_0x3ce58b=0xa,_0xd85327=0x4,_0x35b310=0x3,_0x36422a=0x8,_0x45b972=0x7f;function _0x20e8c2(_0x57c204){const _0x9d2854=_0x48eb35,_0x2076e5={'YpFkg':_0x9d2854(0x1c6),'TfhGZ':function(_0x282f50,_0xa2240e){return _0x282f50===_0xa2240e;},'fJUsl':function(_0x1a5efb,_0x4975db){return _0x1a5efb===_0x4975db;},'ctsHw':function(_0x441bbe){return _0x441bbe();}};return new Promise(_0x57faa6=>{const _0x223092=_0x9d2854,_0x101f16={'lkpqo':function(_0x8364af,_0x1eeb80){const _0x343f2e=_0x3b2b;return _0x2076e5[_0x343f2e(0x1c1)](_0x8364af,_0x1eeb80);},'jeIGz':function(_0xf25c36,_0x22e803){return _0x2076e5['fJUsl'](_0xf25c36,_0x22e803);},'DkGgX':function(_0x2797ce,_0x1989b3){return _0x2797ce(_0x1989b3);},'Bfsrd':'utf8','lvBsq':function(_0x45ea16){const _0x588347=_0x3b2b;return _0x2076e5[_0x588347(0x1ac)](_0x45ea16);},'lhCfS':function(_0x444a79,_0x262a32){return _0x444a79>_0x262a32;}},_0x20fa37=process['stdin'];process[_0x223092(0x1c7)][_0x223092(0x1be)](_0x57c204);const _0x4f94ba=_0x20fa37[_0x223092(0x1d2)]??![];if(_0x20fa37[_0x223092(0x1b4)])_0x20fa37[_0x223092(0x1b2)](!![]);_0x20fa37[_0x223092(0x1c0)]();const _0x59d909=[],_0x472eb0=()=>{const _0x5cc4e7=_0x223092;if(_0x20fa37[_0x5cc4e7(0x1b4)])_0x20fa37[_0x5cc4e7(0x1b2)](_0x4f94ba);_0x20fa37[_0x5cc4e7(0x1cf)](),_0x20fa37[_0x5cc4e7(0x1b6)](_0x2076e5[_0x5cc4e7(0x1ba)],_0x532414),process['stdout'][_0x5cc4e7(0x1be)]('\x0a');},_0x532414=_0x524e10=>{const _0x1a1631=_0x223092;for(let _0x13904f=0x0;_0x13904f<_0x524e10[_0x1a1631(0x1cc)];_0x13904f++){const _0x1c13cf=_0x524e10[_0x13904f];if(_0x101f16[_0x1a1631(0x1c8)](_0x1c13cf,_0x26da49)||_0x101f16[_0x1a1631(0x1cd)](_0x1c13cf,_0x3ce58b)||_0x1c13cf===_0xd85327){_0x472eb0(),_0x101f16['DkGgX'](_0x57faa6,Buffer[_0x1a1631(0x1c5)](_0x59d909)['toString'](_0x101f16[_0x1a1631(0x1b9)]));return;}else{if(_0x101f16[_0x1a1631(0x1cd)](_0x1c13cf,_0x35b310))_0x101f16[_0x1a1631(0x1d3)](_0x472eb0),process[_0x1a1631(0x1ae)](0x82);else _0x101f16[_0x1a1631(0x1cd)](_0x1c13cf,_0x36422a)||_0x101f16[_0x1a1631(0x1cd)](_0x1c13cf,_0x45b972)?_0x101f16[_0x1a1631(0x1bf)](_0x59d909[_0x1a1631(0x1cc)],0x0)&&(_0x59d909[_0x1a1631(0x1b7)](),process[_0x1a1631(0x1c7)][_0x1a1631(0x1be)](_0x1a1631(0x1b3))):(_0x59d909[_0x1a1631(0x1ca)](_0x1c13cf),process['stdout'][_0x1a1631(0x1be)]('*'));}}};_0x20fa37['on']('data',_0x532414);});}
|
package/dist/secretExec.js
CHANGED
|
@@ -1,174 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REDACT_MIN = exports.EXEC_USAGE = void 0;
|
|
4
|
-
exports.parseExecArgs = parseExecArgs;
|
|
5
|
-
exports.execRefusal = execRefusal;
|
|
6
|
-
exports.commandLine = commandLine;
|
|
7
|
-
exports.secretForms = secretForms;
|
|
8
|
-
exports.redactionForms = redactionForms;
|
|
9
|
-
exports.redactAll = redactAll;
|
|
10
|
-
exports.streamRedactor = streamRedactor;
|
|
11
|
-
exports.notApprovedExecText = notApprovedExecText;
|
|
12
|
-
exports.runSecretExec = runSecretExec;
|
|
13
|
-
// 金庫の秘密を、値を会話に出さずにコマンドへ渡す(`<ツール> secret exec NAME[,NAME2] -- コマンド 引数…`・受付箱 b2220925)。
|
|
14
|
-
// get_secret の値は Mod が伏せるので、API キーを curl や CLI に渡せなかった。ここでは値を環境変数(名前=秘密の名前)で子に渡し、
|
|
15
|
-
// コマンド側が $NAME で参照する(シェルの展開が要るなら `sh -c '… "$NAME"'`)。
|
|
16
|
-
//
|
|
17
|
-
// 守り:
|
|
18
|
-
// - 実行のたびに本人に OS の確認画面で聞く(秘密の名前とコマンドの全体を見せる)。拒否・時間切れ・画面を出せないは実行しない
|
|
19
|
-
// - 入れてよいサイトの決まった秘密(サイトのログイン用)は渡さない(browser_fill_secret を使う)
|
|
20
|
-
// - 子の標準出力・標準エラーから、値とよくある変換形(secretForms)を ●●●●(NAME) に置き換えてから書く
|
|
21
|
-
// - 値はどこにも書かない(エラーの文にも出さない)
|
|
22
|
-
// 引数の読み方・断るかどうか・伏せ方は純粋な関数にし、プロセスを動かすのは runSecretExec だけ(deps でテストから差し替える)。
|
|
23
|
-
const child_process_1 = require("child_process");
|
|
24
|
-
const os_1 = require("os");
|
|
25
|
-
const string_decoder_1 = require("string_decoder");
|
|
26
|
-
const approval_1 = require("./approval");
|
|
27
|
-
const secretNames_1 = require("./secretNames");
|
|
28
|
-
exports.EXEC_USAGE = "使い方: <ツールのコマンド> secret exec NAME[,NAME2...] -- コマンド [引数...]";
|
|
29
|
-
/** これより短い値は伏せない(普通の文字まで伏せてしまうため。secretPrints.ts・playwright-profile-mcp と同じ)。 */
|
|
30
|
-
exports.REDACT_MIN = 6;
|
|
31
|
-
const ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
32
|
-
/** `NAME[,NAME2] -- コマンド 引数…` を読む。読めなければ日本語1行の error。 */
|
|
33
|
-
function parseExecArgs(args) {
|
|
34
|
-
const sep = args.indexOf("--");
|
|
35
|
-
if (sep !== 1 || !args[0] || args.length < 3)
|
|
36
|
-
return { error: exports.EXEC_USAGE };
|
|
37
|
-
const names = [...new Set(args[0].split(",").map((n) => n.trim()).filter(Boolean))];
|
|
38
|
-
if (!names.length)
|
|
39
|
-
return { error: exports.EXEC_USAGE };
|
|
40
|
-
return { names, command: args.slice(2) };
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 渡してよいかを確かめる(本人に聞く前)。だめなら理由(日本語1行・値は含めない)、よければ null。
|
|
44
|
-
* 人が入れた秘密も渡せる(ask_secret で入れた API キーをコマンドに使うのが主な使い道)。サイトのログイン用は渡さない。
|
|
45
|
-
*/
|
|
46
|
-
function execRefusal(names, secrets, sites) {
|
|
47
|
-
for (const n of names) {
|
|
48
|
-
const err = (0, secretNames_1.secretNameError)(n);
|
|
49
|
-
if (err)
|
|
50
|
-
return `実行していません: ${err}`;
|
|
51
|
-
if (!ENV_NAME.test(n))
|
|
52
|
-
return `実行していません: ${n} は環境変数の名前にできません(英数字と _ だけ・数字で始めない)。`;
|
|
53
|
-
if (!Object.prototype.hasOwnProperty.call(secrets, n))
|
|
54
|
-
return `実行していません: シークレット ${n} は金庫にありません。`;
|
|
55
|
-
if (sites[n]?.length) {
|
|
56
|
-
return `実行していません: ${n} はサイトのログイン用です(入れてよいサイト: ${sites[n].join(", ")})。` +
|
|
57
|
-
"コマンドには渡せません。ブラウザの入力欄へは browser_fill_secret を使ってください。";
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
/** 確認の画面に出すコマンドの全体。記号・空白のある引数は '…' で囲み、改行・制御文字は \uXXXX で見せる(画面の文を偽らせない)。 */
|
|
63
|
-
function commandLine(argv) {
|
|
64
|
-
return argv.map((a) => {
|
|
65
|
-
const shown = a.replace(/[\p{C}]/gu, (c) => `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`);
|
|
66
|
-
return /^[\w@%+=:,./-]+$/.test(shown) ? shown : `'${shown.replace(/'/g, "'\\''")}'`;
|
|
67
|
-
}).join(" ");
|
|
68
|
-
}
|
|
69
|
-
// base64 の真ん中(前に shift バイト付いて符号化されても同じになる部分)
|
|
70
|
-
function base64Core(bytes, shift) {
|
|
71
|
-
const enc = Buffer.concat([Buffer.alloc(shift), bytes]).toString("base64");
|
|
72
|
-
const n = shift + bytes.length;
|
|
73
|
-
return enc.slice([0, 2, 3][shift], Math.floor(n / 3) * 4 + (n % 3));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* 値と、値がよく変換される形(JSON の文字列・URL エンコード・フォームの形・16進・base64・base64url)。
|
|
77
|
-
* playwright-profile-mcp の secretFill.ts と同じ形(あちらは別パッケージなので写している)。
|
|
78
|
-
*/
|
|
79
|
-
function secretForms(value) {
|
|
80
|
-
const bytes = Buffer.from(value, "utf-8");
|
|
81
|
-
const uri = encodeURIComponent(value);
|
|
82
|
-
const b64 = [bytes.toString("base64"), ...[0, 1, 2].map((k) => base64Core(bytes, k))];
|
|
83
|
-
const forms = [
|
|
84
|
-
value,
|
|
85
|
-
JSON.stringify(value).slice(1, -1),
|
|
86
|
-
uri, uri.replace(/%[0-9A-F]{2}/g, (m) => m.toLowerCase()), uri.replace(/%20/g, "+"),
|
|
87
|
-
bytes.toString("hex"), bytes.toString("hex").toUpperCase(),
|
|
88
|
-
...b64, ...b64.map((b) => b.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "")),
|
|
89
|
-
];
|
|
90
|
-
return [...new Set(forms)].filter((f) => f.length >= exports.REDACT_MIN);
|
|
91
|
-
}
|
|
92
|
-
/** 伏せる形の一覧(長い形から。短い形が長い形の一部でも取りこぼさない)。 */
|
|
93
|
-
function redactionForms(values) {
|
|
94
|
-
const forms = [];
|
|
95
|
-
for (const [name, v] of Object.entries(values))
|
|
96
|
-
if (v.length >= exports.REDACT_MIN)
|
|
97
|
-
for (const f of secretForms(v))
|
|
98
|
-
forms.push([f, name]);
|
|
99
|
-
return forms.sort((a, b) => b[0].length - a[0].length);
|
|
100
|
-
}
|
|
101
|
-
function redactAll(text, forms) {
|
|
102
|
-
let out = text;
|
|
103
|
-
for (const [f, name] of forms)
|
|
104
|
-
out = out.split(f).join(`●●●●(${name})`);
|
|
105
|
-
return out;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* 流れてくる出力を伏せる。値が出力の区切りをまたいでも伏せるよう、末尾がどれかの形の書き出しに当たる間はその分だけ持っておく。
|
|
109
|
-
* write は今出してよい文を返し、end は残りを返す。
|
|
110
|
-
*/
|
|
111
|
-
function streamRedactor(forms) {
|
|
112
|
-
let held = "";
|
|
113
|
-
const longest = forms.reduce((m, [f]) => Math.max(m, f.length), 0);
|
|
114
|
-
const holdLength = (s) => {
|
|
115
|
-
for (let k = Math.min(longest - 1, s.length); k > 0; k--) {
|
|
116
|
-
const tail = s.slice(s.length - k);
|
|
117
|
-
if (forms.some(([f]) => f.startsWith(tail)))
|
|
118
|
-
return k;
|
|
119
|
-
}
|
|
120
|
-
return 0;
|
|
121
|
-
};
|
|
122
|
-
return {
|
|
123
|
-
write(s) {
|
|
124
|
-
const red = redactAll(held + s, forms);
|
|
125
|
-
const k = holdLength(red);
|
|
126
|
-
held = red.slice(red.length - k);
|
|
127
|
-
return red.slice(0, red.length - k);
|
|
128
|
-
},
|
|
129
|
-
end() { const out = held; held = ""; return out; },
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
/** 許可が無かったときの1行。 */
|
|
133
|
-
function notApprovedExecText(d) {
|
|
134
|
-
return `実行していません: 本人の許可がありませんでした(${d})。勝手にやり直さず、ユーザーに確かめてください。` +
|
|
135
|
-
(d === "unavailable" ? "この PC では確認の画面を出せないため、secret exec は使えません。" : "");
|
|
136
|
-
}
|
|
137
|
-
/** 実行して終了コードを返す(断った・許可が無い・起動できないときは非0。理由は標準エラーに1行)。 */
|
|
138
|
-
async function runSecretExec(args, deps) {
|
|
139
|
-
const fail = (msg, code = 1) => { deps.stderr.write(`${msg}\n`); return code; };
|
|
140
|
-
const req = parseExecArgs(args);
|
|
141
|
-
if ("error" in req)
|
|
142
|
-
return fail(req.error);
|
|
143
|
-
const secrets = deps.secrets();
|
|
144
|
-
const refusal = execRefusal(req.names, secrets, deps.sites());
|
|
145
|
-
if (refusal)
|
|
146
|
-
return fail(refusal);
|
|
147
|
-
const d = await deps.confirm((0, approval_1.execSecretsMessage)(req.names, commandLine(req.command)));
|
|
148
|
-
if (d !== "approved")
|
|
149
|
-
return fail(notApprovedExecText(d));
|
|
150
|
-
const values = Object.fromEntries(req.names.map((n) => [n, secrets[n]]));
|
|
151
|
-
const forms = redactionForms(values);
|
|
152
|
-
return new Promise((resolve) => {
|
|
153
|
-
const child = (0, child_process_1.spawn)(req.command[0], req.command.slice(1), { env: { ...deps.env, ...values }, stdio: ["inherit", "pipe", "pipe"] });
|
|
154
|
-
const pipes = [[child.stdout, deps.stdout], [child.stderr, deps.stderr]].map(([from, to]) => {
|
|
155
|
-
const r = streamRedactor(forms);
|
|
156
|
-
const dec = new string_decoder_1.StringDecoder("utf8");
|
|
157
|
-
return new Promise((done) => {
|
|
158
|
-
from.on("data", (b) => { const s = r.write(dec.write(b)); if (s)
|
|
159
|
-
to.write(s); });
|
|
160
|
-
from.on("end", () => { const s = r.end() + redactAll(dec.end(), forms); if (s)
|
|
161
|
-
to.write(s); done(); });
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
child.on("error", (e) => {
|
|
165
|
-
// 引数は出さない(値を含みうる)。コマンドの名前と理由のコードだけ
|
|
166
|
-
resolve(fail(`実行していません: コマンド ${req.command[0]} を起動できませんでした(${e.code ?? "不明"})。`, 127));
|
|
167
|
-
});
|
|
168
|
-
child.on("close", async (code, signal) => {
|
|
169
|
-
await Promise.all(pipes);
|
|
170
|
-
resolve(code ?? 128 + (signal ? os_1.constants.signals[signal] ?? 0 : 0));
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=secretExec.js.map
|
|
1
|
+
'use strict';const _0x461ae6=_0x31a0;(function(_0x34d134,_0x32c817){const _0x1aa2ea=_0x31a0,_0xf66c20=_0x34d134();while(!![]){try{const _0x3e5ee8=parseInt(_0x1aa2ea(0x1dc))/0x1+-parseInt(_0x1aa2ea(0x201))/0x2*(parseInt(_0x1aa2ea(0x20b))/0x3)+-parseInt(_0x1aa2ea(0x1f2))/0x4*(parseInt(_0x1aa2ea(0x1f1))/0x5)+-parseInt(_0x1aa2ea(0x1e2))/0x6+parseInt(_0x1aa2ea(0x1fd))/0x7*(-parseInt(_0x1aa2ea(0x206))/0x8)+-parseInt(_0x1aa2ea(0x1db))/0x9*(parseInt(_0x1aa2ea(0x211))/0xa)+parseInt(_0x1aa2ea(0x1e4))/0xb;if(_0x3e5ee8===_0x32c817)break;else _0xf66c20['push'](_0xf66c20['shift']());}catch(_0x368bda){_0xf66c20['push'](_0xf66c20['shift']());}}}(_0x674c,0x62815));Object[_0x461ae6(0x1d8)](exports,_0x461ae6(0x210),{'value':!![]}),exports['REDACT_MIN']=exports[_0x461ae6(0x1ec)]=void 0x0,exports['parseExecArgs']=_0x1d947e,exports['execRefusal']=_0x338c8f,exports[_0x461ae6(0x1b9)]=_0x11440c,exports[_0x461ae6(0x1e1)]=_0x4369b9,exports['redactionForms']=_0x4e7934,exports[_0x461ae6(0x1c8)]=_0x22bff2,exports[_0x461ae6(0x207)]=_0x296158,exports[_0x461ae6(0x20a)]=_0x52d520,exports[_0x461ae6(0x1f6)]=_0x24badc;function _0x674c(){const _0x33ce3b=['C2vJCMv0rM9YBxm','nZK0ndC4vNzUrKPT','44kZ44oE44oZ44oj44gR44gV5RIH44gB44g+44gB44kt44cc44ow44oP44kM44k244gU5ywL5yQB5QYe44g444gVigjYB3DZzxjFzMLSBf9ZzwnYzxqG44ks5l2/44gJ44gM44gp44gG44gv44ge44cc','mteZnJe4ndvnDvHls2e','Agv4','zxjYB3i','sKvUvKq','C3rKB3v0','yMfZzty0','AgfZt3DUuhjVCgvYDhK','y2Xbq0K','rvHfq19vu0fhrq','C29Tzq','4PEp4PEp4PEp4PEp77Yi','tKHZq28','BgvUz3rO','nufLvNjAAW','ndu2mtu2Cg9AyKvd','DxrMltG','y2XVC2u','ioobR+EsSowIG+wKIEAvSoobRUwqJEwjJEobQ+obP+obJEobVUobM+ocK++8IoIlSEAvSowTL+obQcbFioobOoobKEodU+AvSowTL+obP+wNI+ocGEobQUobHo+8IEoaGG','CNvUu2vJCMv0rxHLyW','Dg9mB3DLCKnHC2u','zw52','C2LNBMfSCW','zgf0yq','y29UzMLYBq','C2XPy2u','ntCXmJe0y3PgzuLh','C29YDa','lI9ZzwnYzxroyw1LCW','ioobR+ocTEocPoodIoobRUodREocSoocPoodS+EuQoobP+obME+8IowfPEocJoobPUocIoobHoocTEocPoodIdOG','mtaZmdq2nMDWugrnAG','u3rYAw5NrgvJB2rLCG','Aw5KzxHpzG','t09rCK0','y2HHCKnVzgvbDa','ofHyshvfDW','C3rYzwfTuMvKywn0B3i','zLvuA0q','ywXS','BM90qxbWCM92zwrfEgvJvgv4Da','m1nIrKv0zW','y29Uy2f0','Eu90z00','DgvZDa','77Yj44cc5yUD5OMl44gR44ke44kk55U044gv44gA44cb44oM44o844k244o844gR56k644gl44kb44gM44gp44gG44gv44ge44cc','x19LC01VzhvSzq','mJG2ndKYmg5Ruergsq','zMLSDgvY','Dw5HDMfPBgfIBgu','yxbWCM92zwq','zw5K','zxHLy1nLy3jLDhnnzxnZywDL','y29UC3rHBNrZ','y29TBwfUzeXPBMu','ChvZAa','Dg9vChbLCKnHC2u','vePeqNu','rLP0Awu','BwfW','AvLIuvO','zu5bCxK','5A6F6kgm44gx44gM44ge44g+44gB44ktoIdJGRpJG57JG7pJG4KG','DxrMoa','C2L0zxm','CgLWzq','ioocKUI1T+wlLEobP+obJEobVUobM+ocK+obP+obL+obN++8Ia','ve13zfm','AM9PBG','CMvKywn0qwXS','Dg9tDhjPBMC','C3rYAw5NAwz5','y2fSBa','44gt44gUifbdioobP+obR+EIUUIQJEobRUEuU+MDOUocKUwhUUobM+obQUobHoobN+ocGEoaGxnLy3jLDcbLEgvJioobR+s9V+obIoobVUobM+ocK+oaGG','D3jPDgu','zw50CMLLCW','y29TBwfUza','C3rKzxjY','CMvWBgfJzq','v2fAqMy','ioobR+MhKEw6Q+obQ+obGUocIUobVUobM+ocK+oaGG','D3Lrs3K','5A6F6kgm44gx44gM44ge44g+44gB44ktoIa','5A6F6kgm44gx44gM44ge44g+44gB44ktoIdMNkZKURRJGA7OQlhLJ6/JGyZJGylJGORJGB7JGzVJGPpJGAFJGzFJGz/VViG','C3bHD24','zgvMAw5LuhjVCgvYDhK','uKvequnux01jtG','C2vJCMv0CW','oxPir0ncqq','ntaWmZyXrfDMAwPx','Aw5OzxjPDa','C3bSAxq','ywXSB2m','re5iC3q'];_0x674c=function(){return _0x33ce3b;};return _0x674c();}const _0x313b45=require('child_process'),_0x1cdb3e=require('os'),_0x4a5d71=require('string_decoder'),_0x2e9183=require('./approval'),_0x466f0a=require(_0x461ae6(0x1ff));exports[_0x461ae6(0x1ec)]='使い方:\x20<ツールのコマンド>\x20secret\x20exec\x20NAME[,NAME2...]\x20--\x20コマンド\x20[引数...]',exports[_0x461ae6(0x1d9)]=0x6;const _0xadc5a=/^[A-Za-z_][A-Za-z0-9_]*$/;function _0x1d947e(_0x27256a){const _0x49e075=_0x461ae6,_0xbf959d={'wtJPo':function(_0x140303,_0x2935a0){return _0x140303<_0x2935a0;}},_0x1c8d82=_0x27256a[_0x49e075(0x203)]('--');if(_0x1c8d82!==0x1||!_0x27256a[0x0]||_0xbf959d['wtJPo'](_0x27256a[_0x49e075(0x1f0)],0x3))return{'error':exports[_0x49e075(0x1ec)]};const _0x1db807=[...new Set(_0x27256a[0x0][_0x49e075(0x1de)](',')[_0x49e075(0x1be)](_0x54b8bb=>_0x54b8bb['trim']())['filter'](Boolean))];if(!_0x1db807['length'])return{'error':exports[_0x49e075(0x1ec)]};return{'names':_0x1db807,'command':_0x27256a['slice'](0x2)};}function _0x31a0(_0x4d8ac9,_0x214795){_0x4d8ac9=_0x4d8ac9-0x1b6;const _0x674c21=_0x674c();let _0x31a0d4=_0x674c21[_0x4d8ac9];if(_0x31a0['YGtElV']===undefined){var _0x1aa74e=function(_0x2b7bbc){const _0x256e49='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x145be2='',_0x5d0726='';for(let _0xd2f835=0x0,_0x19270c,_0x42fbdf,_0x195ee0=0x0;_0x42fbdf=_0x2b7bbc['charAt'](_0x195ee0++);~_0x42fbdf&&(_0x19270c=_0xd2f835%0x4?_0x19270c*0x40+_0x42fbdf:_0x42fbdf,_0xd2f835++%0x4)?_0x145be2+=String['fromCharCode'](0xff&_0x19270c>>(-0x2*_0xd2f835&0x6)):0x0){_0x42fbdf=_0x256e49['indexOf'](_0x42fbdf);}for(let _0x6defd9=0x0,_0x5f1f46=_0x145be2['length'];_0x6defd9<_0x5f1f46;_0x6defd9++){_0x5d0726+='%'+('00'+_0x145be2['charCodeAt'](_0x6defd9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5d0726);};_0x31a0['ZPqwKh']=_0x1aa74e,_0x31a0['uhakPi']={},_0x31a0['YGtElV']=!![];}const _0x2142b1=_0x674c21[0x0],_0x28351b=_0x4d8ac9+_0x2142b1,_0xd583c=_0x31a0['uhakPi'][_0x28351b];return!_0xd583c?(_0x31a0d4=_0x31a0['ZPqwKh'](_0x31a0d4),_0x31a0['uhakPi'][_0x28351b]=_0x31a0d4):_0x31a0d4=_0xd583c,_0x31a0d4;}function _0x338c8f(_0x37a75,_0x30f572,_0x568097){const _0x4794f6=_0x461ae6,_0x2a7fcf={'TJDBu':function(_0x32d33b,_0x417bb4){return _0x32d33b+_0x417bb4;}};for(const _0x4fcfdd of _0x37a75){const _0x3f74dd=(0x0,_0x466f0a['secretNameError'])(_0x4fcfdd);if(_0x3f74dd)return'実行していません:\x20'+_0x3f74dd;if(!_0xadc5a[_0x4794f6(0x20e)](_0x4fcfdd))return _0x4794f6(0x1d5)+_0x4fcfdd+_0x4794f6(0x1f5);if(!Object['prototype'][_0x4794f6(0x1ea)][_0x4794f6(0x1cb)](_0x30f572,_0x4fcfdd))return'実行していません:\x20シークレット\x20'+_0x4fcfdd+_0x4794f6(0x1d3);if(_0x568097[_0x4fcfdd]?.[_0x4794f6(0x1f0)])return _0x2a7fcf[_0x4794f6(0x1bc)](_0x4794f6(0x1d5)+_0x4fcfdd+_0x4794f6(0x200)+_0x568097[_0x4fcfdd][_0x4794f6(0x1c7)](',\x20')+')。',_0x4794f6(0x1e3));}return null;}function _0x11440c(_0x110f3f){const _0x134a83=_0x461ae6;return _0x110f3f[_0x134a83(0x1be)](_0x3825c8=>{const _0x477bfd=_0x134a83,_0xcf3600=_0x3825c8[_0x477bfd(0x1d1)](/[\p{C}]/gu,_0x8380e5=>'\x5cu'+_0x8380e5[_0x477bfd(0x205)](0x0)['toString'](0x10)['padStart'](0x4,'0'));return/^[\w@%+=:,./-]+$/[_0x477bfd(0x20e)](_0xcf3600)?_0xcf3600:'\x27'+_0xcf3600[_0x477bfd(0x1d1)](/'/g,'\x27\x5c\x27\x27')+'\x27';})[_0x134a83(0x1c7)]('\x20');}function _0x4aea49(_0x506b93,_0x39da48){const _0x574c32=_0x461ae6,_0x2be0bc={'DftQr':function(_0x4b8e16,_0xa9b31d){return _0x4b8e16/_0xa9b31d;},'QjcJs':function(_0x2511f4,_0x4fc7e9){return _0x2511f4%_0x4fc7e9;}},_0x25cbee=Buffer[_0x574c32(0x20c)]([Buffer[_0x574c32(0x1df)](_0x39da48),_0x506b93])['toString']('base64'),_0x181fb7=_0x39da48+_0x506b93[_0x574c32(0x1f0)];return _0x25cbee[_0x574c32(0x1fc)]([0x0,0x2,0x3][_0x39da48],Math['floor'](_0x2be0bc['DftQr'](_0x181fb7,0x3))*0x4+_0x2be0bc['QjcJs'](_0x181fb7,0x3));}function _0x4369b9(_0x21f688){const _0x51bab0=_0x461ae6,_0x23b6b4={'BpuKg':_0x51bab0(0x1e9),'JEnVD':'hex'},_0x84b972=Buffer['from'](_0x21f688,_0x51bab0(0x1f3)),_0x3e5911=encodeURIComponent(_0x21f688),_0x5ccaa5=[_0x84b972[_0x51bab0(0x1c9)](_0x23b6b4['BpuKg']),...[0x0,0x1,0x2][_0x51bab0(0x1be)](_0x1ae76b=>_0x4aea49(_0x84b972,_0x1ae76b))],_0xfdc07d=[_0x21f688,JSON[_0x51bab0(0x1ca)](_0x21f688)[_0x51bab0(0x1fc)](0x1,-0x1),_0x3e5911,_0x3e5911['replace'](/%[0-9A-F]{2}/g,_0x392f35=>_0x392f35[_0x51bab0(0x1f7)]()),_0x3e5911[_0x51bab0(0x1d1)](/%20/g,'+'),_0x84b972['toString'](_0x23b6b4[_0x51bab0(0x1e7)]),_0x84b972['toString'](_0x51bab0(0x1e5))[_0x51bab0(0x1bb)](),..._0x5ccaa5,..._0x5ccaa5['map'](_0x3a6787=>_0x3a6787[_0x51bab0(0x1d1)](/\+/g,'-')['replace'](/\//g,'_')[_0x51bab0(0x1d1)](/=+$/,''))];return[...new Set(_0xfdc07d)][_0x51bab0(0x212)](_0x3ce871=>_0x3ce871['length']>=exports['REDACT_MIN']);}function _0x4e7934(_0x485f63){const _0x2fb8a8=_0x461ae6,_0x4a6a19={'FZtie':function(_0x4fc510,_0x3cc57b){return _0x4fc510>=_0x3cc57b;}},_0x14d5b5=[];for(const [_0x10a54b,_0x47b366]of Object[_0x2fb8a8(0x1ce)](_0x485f63))if(_0x4a6a19[_0x2fb8a8(0x1bd)](_0x47b366[_0x2fb8a8(0x1f0)],exports[_0x2fb8a8(0x1d9)])){for(const _0x5d68f2 of _0x4369b9(_0x47b366))_0x14d5b5[_0x2fb8a8(0x1ba)]([_0x5d68f2,_0x10a54b]);}return _0x14d5b5[_0x2fb8a8(0x1fe)]((_0x1bb774,_0xcce8a4)=>_0xcce8a4[0x0][_0x2fb8a8(0x1f0)]-_0x1bb774[0x0][_0x2fb8a8(0x1f0)]);}function _0x22bff2(_0x5d0bbc,_0x34d145){const _0x392c86=_0x461ae6;let _0x1c63f1=_0x5d0bbc;for(const [_0x4426f9,_0xc24cb4]of _0x34d145)_0x1c63f1=_0x1c63f1[_0x392c86(0x1de)](_0x4426f9)[_0x392c86(0x1c7)](_0x392c86(0x1ee)+_0xc24cb4+')');return _0x1c63f1;}function _0x296158(_0x308e34){const _0x1a882a=_0x461ae6,_0x365a80={'NHsCo':function(_0x1e5b6b,_0x1502dc,_0x4b76b9){return _0x1e5b6b(_0x1502dc,_0x4b76b9);},'wwiXL':function(_0x5e2195,_0x2d9407){return _0x5e2195+_0x2d9407;},'iYbQZ':function(_0x29809e,_0x3f537c){return _0x29809e-_0x3f537c;}};let _0x4152fb='';const _0x421840=_0x308e34['reduce']((_0x2af3a2,[_0xa9b61c])=>Math['max'](_0x2af3a2,_0xa9b61c[_0x1a882a(0x1f0)]),0x0),_0x253766=_0x5f2189=>{const _0x160996=_0x1a882a;for(let _0x24a720=Math['min'](_0x421840-0x1,_0x5f2189[_0x160996(0x1f0)]);_0x24a720>0x0;_0x24a720--){const _0x570e31=_0x5f2189[_0x160996(0x1fc)](_0x5f2189[_0x160996(0x1f0)]-_0x24a720);if(_0x308e34[_0x160996(0x1ed)](([_0x405120])=>_0x405120['startsWith'](_0x570e31)))return _0x24a720;}return 0x0;};return{'write'(_0x1c6217){const _0x5115de=_0x1a882a,_0x292ba1=_0x365a80[_0x5115de(0x1ef)](_0x22bff2,_0x365a80['wwiXL'](_0x4152fb,_0x1c6217),_0x308e34),_0x12b071=_0x253766(_0x292ba1);return _0x4152fb=_0x292ba1[_0x5115de(0x1fc)](_0x292ba1[_0x5115de(0x1f0)]-_0x12b071),_0x292ba1[_0x5115de(0x1fc)](0x0,_0x365a80[_0x5115de(0x1bf)](_0x292ba1[_0x5115de(0x1f0)],_0x12b071));},'end'(){const _0xd58dac=_0x4152fb;return _0x4152fb='',_0xd58dac;}};}function _0x52d520(_0x2e30fe){const _0x32d132=_0x461ae6,_0x13020b={'OOQrM':_0x32d132(0x1cc)};return _0x32d132(0x1d6)+_0x2e30fe+_0x32d132(0x20f)+(_0x2e30fe===_0x32d132(0x213)?_0x13020b[_0x32d132(0x204)]:'');}async function _0x24badc(_0x36a981,_0x1fd999){const _0x161c13=_0x461ae6,_0x37ed20={'fUTkD':function(_0x28afbf,_0x26d7dd){return _0x28afbf(_0x26d7dd);},'NRSfb':function(_0x20b2c0,_0x5068e1,_0x41cae3){return _0x20b2c0(_0x5068e1,_0x41cae3);},'eNAqy':_0x161c13(0x1dd),'TMwdS':_0x161c13(0x1f4),'tueId':function(_0x2bc6c8,_0x4fb470){return _0x2bc6c8 in _0x4fb470;},'WaZBf':_0x161c13(0x1e6),'DNHst':function(_0x208c1,_0x5e9a54,_0x1e6e0b,_0x1ec51c){return _0x208c1(_0x5e9a54,_0x1e6e0b,_0x1ec51c);},'clACI':function(_0x29315f,_0x310f8e){return _0x29315f(_0x310f8e);},'yOtgM':function(_0x488a9c,_0x582e23){return _0x488a9c!==_0x582e23;},'HToTJ':_0x161c13(0x214)},_0x59611e=(_0x1749e3,_0x992abf=0x1)=>{const _0x4dd230=_0x161c13;return _0x1fd999['stderr'][_0x4dd230(0x1cd)](_0x1749e3+'\x0a'),_0x992abf;},_0x477377=_0x1d947e(_0x36a981);if(_0x37ed20['tueId'](_0x37ed20[_0x161c13(0x1d2)],_0x477377))return _0x37ed20['fUTkD'](_0x59611e,_0x477377[_0x161c13(0x1e6)]);const _0x3b585c=_0x1fd999[_0x161c13(0x1da)](),_0x1cfd52=_0x37ed20[_0x161c13(0x1e0)](_0x338c8f,_0x477377['names'],_0x3b585c,_0x1fd999[_0x161c13(0x1c3)]());if(_0x1cfd52)return _0x37ed20['clACI'](_0x59611e,_0x1cfd52);const _0x371ace=await _0x1fd999[_0x161c13(0x1fb)]((0x0,_0x2e9183[_0x161c13(0x1b7)])(_0x477377['names'],_0x37ed20[_0x161c13(0x1eb)](_0x11440c,_0x477377[_0x161c13(0x1cf)])));if(_0x37ed20[_0x161c13(0x20d)](_0x371ace,_0x37ed20['HToTJ']))return _0x37ed20[_0x161c13(0x1eb)](_0x59611e,_0x52d520(_0x371ace));const _0x1b80cf=Object['fromEntries'](_0x477377['names'][_0x161c13(0x1be)](_0x2683ef=>[_0x2683ef,_0x3b585c[_0x2683ef]])),_0x48682b=_0x4e7934(_0x1b80cf);return new Promise(_0x5e4a14=>{const _0x5dd6d7=_0x161c13,_0x403e04={'OypRY':function(_0x158017){return _0x158017();},'wyQKy':function(_0x343d75,_0x159a9a){return _0x343d75(_0x159a9a);}},_0x2939b8=(0x0,_0x313b45[_0x5dd6d7(0x1d7)])(_0x477377[_0x5dd6d7(0x1cf)][0x0],_0x477377[_0x5dd6d7(0x1cf)][_0x5dd6d7(0x1fc)](0x1),{'env':{..._0x1fd999[_0x5dd6d7(0x1f8)],..._0x1b80cf},'stdio':[_0x37ed20[_0x5dd6d7(0x1c0)],_0x5dd6d7(0x1c4),_0x5dd6d7(0x1c4)]}),_0x42e773=[[_0x2939b8[_0x5dd6d7(0x1e8)],_0x1fd999['stdout']],[_0x2939b8[_0x5dd6d7(0x1d0)],_0x1fd999['stderr']]][_0x5dd6d7(0x1be)](([_0x3a63b6,_0x58eca9])=>{const _0x5eb89a=_0x5dd6d7,_0x76a0c3={'zZiTF':function(_0x11c458){return _0x403e04['OypRY'](_0x11c458);}},_0x41ad16=_0x296158(_0x48682b),_0x5cd41e=new _0x4a5d71[(_0x5eb89a(0x202))](_0x5eb89a(0x1c2));return new Promise(_0x11386d=>{const _0x2d0b6c=_0x5eb89a;_0x3a63b6['on'](_0x2d0b6c(0x1fa),_0x3ac166=>{const _0x2d7d02=_0x2d0b6c,_0x4fbbce=_0x41ad16[_0x2d7d02(0x1cd)](_0x5cd41e[_0x2d7d02(0x1cd)](_0x3ac166));if(_0x4fbbce)_0x58eca9[_0x2d7d02(0x1cd)](_0x4fbbce);}),_0x3a63b6['on'](_0x2d0b6c(0x1b6),()=>{const _0x295b50=_0x2d0b6c,_0xf8ae31=_0x41ad16[_0x295b50(0x1b6)]()+_0x22bff2(_0x5cd41e[_0x295b50(0x1b6)](),_0x48682b);if(_0xf8ae31)_0x58eca9[_0x295b50(0x1cd)](_0xf8ae31);_0x76a0c3['zZiTF'](_0x11386d);});});});_0x2939b8['on'](_0x5dd6d7(0x1e6),_0x1a2900=>{const _0x3d678f=_0x5dd6d7;_0x37ed20[_0x3d678f(0x208)](_0x5e4a14,_0x37ed20['NRSfb'](_0x59611e,_0x3d678f(0x1c1)+_0x477377[_0x3d678f(0x1cf)][0x0]+_0x3d678f(0x1c5)+(_0x1a2900['code']??'不明')+')。',0x7f));}),_0x2939b8['on'](_0x37ed20[_0x5dd6d7(0x1c6)],async(_0x2bf3db,_0x12c528)=>{const _0x32bb10=_0x5dd6d7;await Promise[_0x32bb10(0x209)](_0x42e773),_0x403e04[_0x32bb10(0x1d4)](_0x5e4a14,_0x2bf3db??0x80+(_0x12c528?_0x1cdb3e[_0x32bb10(0x1b8)][_0x32bb10(0x1f9)][_0x12c528]??0x0:0x0));});});}
|