monster-orchestrator 3.2.5 → 3.2.7
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-obf/.buildinfo +5 -5
- package/dist-obf/index.js +1 -1
- package/dist-obf/manifest.json +3 -2
- package/dist-obf/package.json +13 -2
- package/dist-obf/supervisor-notify-tick.js +1 -1
- package/manifest.json +3 -2
- package/package.json +8 -2
- package/scripts/check-monster-events.sh +200 -0
- package/scripts/monster-deathcheck +805 -0
- package/scripts/monster-stop-hook +178 -0
- package/scripts/supervisor-notify-tick.sh +38 -0
package/dist-obf/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monster-orchestrator",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist-obf/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,11 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist-obf/",
|
|
11
11
|
"manifest.json",
|
|
12
|
-
"README.md"
|
|
12
|
+
"README.md",
|
|
13
|
+
"scripts/monster-stop-hook",
|
|
14
|
+
"scripts/check-monster-events.sh",
|
|
15
|
+
"scripts/supervisor-notify-tick.sh",
|
|
16
|
+
"scripts/monster-deathcheck"
|
|
13
17
|
],
|
|
14
18
|
"engines": {
|
|
15
19
|
"node": ">=20"
|
|
@@ -17,9 +21,11 @@
|
|
|
17
21
|
"scripts": {
|
|
18
22
|
"build": "tsc",
|
|
19
23
|
"build:obfuscated": "bash scripts/build-obfuscated.sh",
|
|
24
|
+
"typecheck": "tsc -p tsconfig.test.json --noEmit",
|
|
20
25
|
"test": "vitest run"
|
|
21
26
|
},
|
|
22
27
|
"dependencies": {
|
|
28
|
+
"@bluelamp/cli-token": "1.0.1",
|
|
23
29
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
24
30
|
"chokidar": "^3.6.0"
|
|
25
31
|
},
|
|
@@ -29,5 +35,10 @@
|
|
|
29
35
|
"javascript-obfuscator": "^5.4.1",
|
|
30
36
|
"typescript": "^5.7.2",
|
|
31
37
|
"vitest": "^4.1.5"
|
|
38
|
+
},
|
|
39
|
+
"buildInfo": {
|
|
40
|
+
"builtFromCommit": "4f4a6aa",
|
|
41
|
+
"builtAt": "2026-08-30T05:33:39Z",
|
|
42
|
+
"srcSha256": "fdef8ba51e2c9aaebc6cf0d2251ccfce8f52357032e1b629f626859530562cde"
|
|
32
43
|
}
|
|
33
44
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0aO=a0c;(function(a,c){const aN=a0c,e=a();while(!![]){try{const i=parseInt(aN(0x141))/0x1+-parseInt(aN(0x167))/0x2+-parseInt(aN(0x192))/0x3+-parseInt(aN(0x17c))/0x4+parseInt(aN(0x126))/0x5+parseInt(aN(0x12d))/0x6+parseInt(aN(0x227))/0x7;if(i===c)break;else e['push'](e['shift']());}catch(l){e['push'](e['shift']());}}}(a0a,0xbd2a5));import*as a0aB from'node:fs';import*as a0aC from'node:path';import*as a0aD from'node:os';import*as a0aE from'node:path';var j=process.env.MONSTER_MCP_ROOT,h=j&&j[a0aO(0x1fc)]>0x0?j:a0aE[a0aO(0x134)](a0aD[a0aO(0x13c)](),a0aO(0x114),'monsters'),X=a0aE[a0aO(0x134)](h,a0aO(0x209)),qe=a0aE[a0aO(0x134)](h,a0aO(0x170)),g=a0aE[a0aO(0x134)](h,a0aO(0x125)),A=a0aE[a0aO(0x134)](h,'events.log.1'),R=a0aE[a0aO(0x134)](h,a0aO(0x1f1)),K=0xa*0x400*0x400,Ht=0x5*0x400*0x400,N=a0aE[a0aO(0x134)](h,a0aO(0x104)),T=N+a0aO(0x180),E=a0aE[a0aO(0x134)](h,a0aO(0x142)),W=E+'.1',Z=0x2*0x400*0x400;function Ct(){const aP=a0aO;try{if(a0aB['statSync'](E)[aP(0x107)]<Z)return;a0aB['renameSync'](E,W);}catch{}}function Q(a){const aQ=a0aO;let c=new Date()['toISOString']()+'\x20'+a+'\x0a';try{a0aB['mkdirSync'](a0aC['dirname'](E),{'recursive':!0x0}),Ct(),a0aB[aQ(0x1c5)](E,c,aQ(0x184));}catch{}}import*as a0aF from'node:fs';import*as a0aG from'node:fs';import*as a0aH from'node:fs/promises';function Ut(){const aR=a0aO;a0aG['mkdirSync'](h,{'recursive':!0x0}),a0aG[aR(0x222)](g)||a0aG[aR(0x21c)](g,'',aR(0x184));}async function Vt(){const aS=a0aO;try{if((await a0aH[aS(0x1c2)](g))[aS(0x107)]<K)return!0x1;}catch{return!0x1;}try{return a0aG['existsSync'](R)&&await a0aH['unlink'](R),a0aG[aS(0x222)](A)&&await a0aH[aS(0x1be)](A,R),await a0aH[aS(0x1be)](g,A),await a0aH['writeFile'](g,'',aS(0x184)),!0x0;}catch{return!0x1;}}async function tt(a){const aT=a0aO;Ut(),await Vt();let c=JSON[aT(0x18e)](a)+'\x0a';await a0aH['appendFile'](g,c,aT(0x184));}function et(a,c,i,l={}){return{'ts':new Date()['toISOString'](),'monster_id':a,'event':i,'session':c,'meta':l};}import{execFile as a0aI}from'node:child_process';import{promisify as a0aJ}from'node:util';import*as a0aK from'node:fs';var $=a0aJ(a0aI);function Yt(){const aU=a0aO;let a=process.env.MONSTER_TMUX_BIN;if(a)return a;for(let c of[aU(0x1b2),aU(0x19c)])try{if(a0aK[aU(0x222)](c))return c;}catch{}return aU(0x138);}var I=Yt(),M=class extends Error{},L=class extends M{constructor(a){const aV=a0aO;super('tmux\x20を実行できません(bin='+I+aV(0x196)+String(a)),this['name']=aV(0x173);}},P=class extends M{constructor(a){const aW=a0aO;super(aW(0x19d)+I+aW(0x225)+(process.env.TMUX?'\u3042\u308A':'\u306A\u3057')+aW(0x15e)+(process.env.TMUX_TMPDIR??aW(0x220))+aW(0x15b)+a),this['name']=aW(0x185);}};function zt(a){const aX=a0aO;let c=a?.[aX(0x20e)];return c===aX(0x1f6)||c===aX(0x208)||c===aX(0x1e7);}function Xt(a){const aY=a0aO;let c=a,i=typeof c?.[aY(0x143)]==aY(0x1a2)&&c['stderr'][aY(0x1fc)]>0x0?c['stderr']:String(c?.[aY(0x19f)]??a);return st(i)['trim']();}var Kt=/can't find session|session not found/i,Wt=/\x1b\[[0-9;?]*[A-Za-z]/g;function st(a){const aZ=a0aO;return a[aZ(0x1a4)](Wt,'')[aZ(0x1a4)](/\r/g,'');}async function F(a){const b0=a0aO;try{return await $(I,[b0(0x1af),'-t',a]),!0x0;}catch(c){if(zt(c))throw new L(c);let i=Xt(c);if(Kt['test'](i))return!0x1;throw new P(i);}}var Zt=/esc to interrupt/i;async function rt(a){const b1=a0aO;let c=await ot(a,0x32);return c[b1(0x165)]()[b1(0x1fc)]===0x0?!0x0:Zt[b1(0x1f9)](c);}async function ot(a,c){try{let {stdout:i}=await $(I,['capture-pane','-t',a,'-p','-S','-'+c]);return st(i);}catch{return'';}}function qt(a){return Math['min'](0x64+Math['floor'](a/0x4),0x5dc);}async function it(a,c){const b2=a0aO;try{if(b2(0x18d)===b2(0x1d7))return i[b2(0x154)](l)[b2(0x21e)](([O,a0])=>{let {shortId:a1,supervisorSession:a2,status:a3,unsupervised:a4,spawnedAt:a5}=o(O,a0);return{'shortId':a1,'supervisorSession':a2,'status':a3,'unsupervised':a4,'spawnedAt':a5};});else{let l=c[b2(0x1a4)](/\n+$/,'');await $(I,['send-keys','-t',a,'-l',l]);let o=qt(l[b2(0x1fc)]);return await new Promise(p=>setTimeout(p,o)),await $(I,[b2(0x132),'-t',a,b2(0x102)]),await new Promise(p=>setTimeout(p,0xc8)),await $(I,[b2(0x132),'-t',a,b2(0x102)]),{'ok':!0x0,'bytes':Buffer['byteLength'](l,b2(0x184))};}}catch(p){return{'ok':!0x1,'bytes':0x0,'error':p?.[b2(0x143)]||p?.['message']||b2(0x116)};}}var B=['awaiting_input',a0aO(0x17a)],ct=a0aO(0x1b1),Qt=a0aO(0x12f),ut=a0aO(0x191);function te(a){const b3=a0aO;if(typeof a!='string')return null;let c=a[b3(0x1ad)]()['replace'](/[^0-9a-f]/g,'');return c[b3(0x1fc)]===0x0?null:c[b3(0x219)](0x0,0xc);}function ee(a){const b4=a0aO;return typeof a==b4(0x1a2)&&B[b4(0x1db)](a);}function ft(a){const b5=a0aO;if(typeof a!=b5(0x1a2))return null;let c=Date[b5(0x11a)](a);if(!Number[b5(0x182)](c))return null;let i=new Date(c),l=String(i['getHours']())['padStart'](0x2,'0'),p=String(i[b5(0x188)]())[b5(0x11c)](0x2,'0');return l+':'+p;}function ne(a){const b6=a0aO;let c=te(a[b6(0x139)]),i=ft(a['ts']);return!c||!i||!ee(a[b6(0x181)])?null:b6(0x187)+c+b6(0x16d)+a['event']+'('+i+')';}function lt(a){const b7=a0aO;let c=[];for(let i of a){if(b7(0x153)!==b7(0x1c6)){let l=ne(i);l&&c[b7(0x12e)](l);}else i=l[b7(0x1d4)](i,'r');}return c[b7(0x1fc)]===0x0?null:''+ct+c['join']('\u3001')+Qt;}var se=new RegExp(a0aO(0x217)),re=['\u627F\u8A8D','\u627F\u8AFE','\u4E86\u627F','\u8A31\u53EF','\u8A8D\u53EF','\u8A31\u8AFE','\u88C1\u5B9A','\u6C7A\u88C1','GO','\u30B4\u30FC',a0aO(0x123),'\u30BF\u30B0',a0aO(0x14d),a0aO(0x189),'\u672C\u756A','\u53EF',a0aO(0x145),a0aO(0x1ba),'\u3066\u3044\u3044','\u69CB\u308F\u306A\u3044',a0aO(0x20b),a0aO(0x1b7),'\u554F\u984C\u306A\u3044',a0aO(0x14a),/\b(?:ok|okay|go|approve[ds]?|approval|authoriz(?:e|ed|ation)|merge[ds]?|tag|release|deploy|greenlight)\b/i];function k(a){const b8=a0aO;let c=[];for(let i of re){if(b8(0x122)!==b8(0x204)){if(typeof i=='string'){a[b8(0x1db)](i)&&c[b8(0x12e)](i);continue;}let l=a[b8(0x151)](i);l&&c[b8(0x12e)](l[0x0]);}else return{'shortId':typeof O?.[b8(0x18c)]==b8(0x1a2)&&a0[b8(0x18c)][b8(0x1fc)]>0x0?a1[b8(0x18c)]:a2[b8(0x219)](0x0,0x8),'supervisorSession':typeof a3?.['supervisor_session']==b8(0x1a2)&&a4[b8(0x169)][b8(0x1fc)]>0x0?a5['supervisor_session']:null,'tmuxSession':typeof a6?.['tmux_session']==b8(0x1a2)?a7['tmux_session']:'','status':typeof a8?.['status']==b8(0x1a2)?a9['status']:'','unsupervised':aa?.['unsupervised']===!0x0,'spawnedAt':typeof ab?.[b8(0x15c)]==b8(0x1a2)?ac[b8(0x15c)]:''};}return c;}function b(a){const b9=a0aO;return k(a)[b9(0x1fc)]>0x0;}function pt(a){const ba=a0aO;if(!se[ba(0x1f9)](a))return{'ok':!0x1,'reason':ba(0x162)};if(b(a))return{'ok':!0x1,'reason':ba(0x1e1)+k(a)['join'](ba(0x118))};if(_t(a)){if(ba(0x1ab)!==ba(0x1ab))try{if(x[ba(0x205)](y)[ba(0x107)]<O)return;a0[ba(0x1fa)](a1,a2);}catch{}else{let i=H(a);return{'ok':!0x1,'reason':ht+':\x20'+i['join'](ba(0x118))};}}return{'ok':!0x0};}var dt=0x40,oe=new RegExp('^['+ut+']+$');function at(a){const bb=a0aO;if(typeof a!='string')return null;let c=a[bb(0x165)]();return c['length']===0x0||c['length']>dt||!oe[bb(0x1f9)](c)?null:c;}function mt(a){const bc=a0aO;let c=at(a[bc(0x10f)]),i=at(a[bc(0x1e4)]),l=ft(a[bc(0x215)]);return!c||!i||!l?null:ct+'監督\x20session\x20'+c+'\x20が不在と検知された('+l+bc(0x168)+c+'\x20と自席\x20'+i+bc(0x214);}var D='['+ut+']{1,'+dt+'}',ie=new RegExp(a0aO(0x213)+D+a0aO(0x1ed)+D+a0aO(0x197)+D+'\x20がそれぞれ何行出るか数えよ(自席が\x200\x20行なら測り方が壊れている)。監督不在が事実なら、配線の付け替えを\x20CTO\x20へ上げよ。停止の要否は貴席と\x20CTO\x20が決めよ$'),ae=/([0-9]{2}:[0-9]{2})/,ce=/前景で tmux list-sessions を撃ち、/,ue=/(自席が 0 行なら測り方が壊れている)/,fe=/has-session/,le=[a0aO(0x224),'\u6D88\u6EC5','\u6D88\u5931',a0aO(0x146),'\u6B7B\u4EA1',a0aO(0x1b6),a0aO(0x152),'\u9000\u5E2D\u3057\u305F',a0aO(0x1d9),a0aO(0x148),a0aO(0x137),a0aO(0x10d),'\u3044\u306A\u3044','\u3044\u306A\u304F\u306A\u3063\u305F',a0aO(0x212),a0aO(0x1d2),a0aO(0x211),a0aO(0x16b),/\b(?:is|has|was|been)\s+(?:gone|dead|missing|terminated|absent)\b/i];function St(a){const bd=a0aO;let c=[];for(let i of le){if(typeof i=='string'){if(bd(0x199)===bd(0x199)){a[bd(0x1db)](i)&&c[bd(0x12e)](i);continue;}else i[bd(0x135)](o[bd(0x1b9)],{'monsterId':p[bd(0x1b9)],'shortId':r[bd(0x139)],'reason':l});}let l=a['match'](i);l&&c[bd(0x12e)](l[0x0]);}return c;}function pe(a){const bf=a0aO;return St(a)[bf(0x1fc)]>0x0;}var de=['\u505C\u6B62','\u7D42\u4E86','\u4E2D\u6B62','\u4E2D\u65AD','\u4F11\u6B62','\u5F85\u6A5F','\u64A4\u53CE','\u64A4\u9000','\u96E2\u8131','\u653E\u68C4','\u4E2D\u5EA7','\u7834\u68C4','\u524A\u9664','\u62B9\u6D88','\u6D88\u53BB','\u51CD\u7D50','\u5C01\u9396','\u9589\u9396','\u89E3\u6563'],me=['\u305B\u3088','\u305B\u3044','\u3057\u308D','\u3057\u3066',a0aO(0x1d0),a0aO(0x17e),'\u306A\u3055\u3044',a0aO(0x179),'\u9858\u3046'],Se=[new RegExp(a0aO(0x129)+de['join']('|')+')(?:'+me[a0aO(0x134)]('|')+')'),/やめ(?:よ|ろ|て|ること|なさい)/,/\b(?:must|should|please)\s+(?:stop|halt|abort|terminate|cease|suspend|stand\s?down)\b/i,/\b(?:stop|halt|abort|terminate|cease|suspend|shut\s?down|stand\s?down)\s+(?:now|immediately|work(?:ing)?|the\s|your\s|this\s)/i];function H(a){const bg=a0aO;let c=[];for(let i of Se){let l=a[bg(0x151)](i);l&&c['push'](l[0x0]);}return c;}function _t(a){const bh=a0aO;return H(a)[bh(0x1fc)]>0x0;}var ht='\u904B\u8EE2\u3092\u7D42\u308F\u3089\u305B\u308B\u547D\u4EE4\u3092\u904B\u3093\u3067\u3044\u308B\u3002\u6CE8\u5165\u306F\u72B6\u6CC1\u901A\u77E5\u307E\u3067\u3067\u3001\u6307\u793A\u306F\u904B\u3070\u306A\u3044\uFF08\u8981\u4EF6\x20\xA72\uFF09\u3002\u53D7\u3051\u624B\u81EA\u8EAB\u306B\u6E2C\u3089\u305B\u308B\u547D\u4EE4\uFF08\u6483\u3066\u30FB\u6570\u3048\u3088\uFF09\u3068\u3001\u4EBA\u3078\u5224\u65AD\u3092\u623B\u3059\u5F62\uFF08CTO\x20\u3078\u4E0A\u3052\u3088\u30FB\u505C\u6B62\u306E\u8981\u5426\u306F\u8CB4\u5E2D\u3068\x20CTO\x20\u304C\u6C7A\u3081\u3088\uFF09\u306F\u8A31\u3055\u308C\u308B\u3002\u7981\u3058\u3066\u3044\u308B\u306E\u306F**\u53D7\u3051\u624B\u306E\u904B\u8EE2\u3092\u7D42\u308F\u3089\u305B\u308B/\u4E2D\u65AD\u3055\u305B\u308B\u547D\u4EE4**\u3067\u3001\u7406\u7531\u306F\u8AA4\u691C\u77E5\u304C\u5373\u5EA7\u306B\u4E0D\u53EF\u9006\u306A\u505C\u6B62\u306B\u306A\u308A\u3001\u3057\u304B\u3082\u6B62\u307E\u3063\u305F\u5074\u304C\u6B62\u307E\u3063\u305F\u305B\u3044\u3067\u7570\u8B70\u3092\u5531\u3048\u3089\u308C\u306A\u304F\u306A\u308B\u305F\u3081';function gt(a){const bi=a0aO;if(b(a))return{'ok':!0x1,'reason':bi(0x1e1)+k(a)['join']('\x20/\x20')};if(_t(a)){let c=H(a);return{'ok':!0x1,'reason':ht+':\x20'+c[bi(0x134)](bi(0x118))};}return pe(a)?{'ok':!0x1,'reason':bi(0x1a8)+St(a)[bi(0x134)](bi(0x118))+bi(0x203)}:fe['test'](a)?{'ok':!0x1,'reason':bi(0x11b)}:ae['test'](a)?ce[bi(0x1f9)](a)?ue[bi(0x1f9)](a)?ie['test'](a)?{'ok':!0x0}:{'ok':!0x1,'reason':bi(0x1df)}:{'ok':!0x1,'reason':bi(0x1b3)}:{'ok':!0x1,'reason':bi(0x1d3)}:{'ok':!0x1,'reason':bi(0x19b)};}var _e=[a0aO(0x21a),a0aO(0x16a)],he=a=>typeof a==a0aO(0x1da)&&a!==null&&!Array[a0aO(0x12c)](a);function ge(i){const bj=a0aO;let l=i['trim']();if(l[bj(0x1fc)]===0x0)return null;let p;try{p=JSON[bj(0x11a)](l);}catch{return null;}if(!he(p))return null;let {ts:r,monster_id:u,event:x}=p;if(typeof r!=bj(0x1a2)||typeof u!='string'||u[bj(0x1fc)]===0x0||typeof x!=bj(0x1a2))return null;let y=Date['parse'](r);return Number[bj(0x182)](y)?{'ts':r,'tsMs':y,'monsterId':u,'event':x}:null;}function Tt(a){let c=[];for(let i of a){let l=ge(i);l&&c['push'](l);}return c;}function Te(a){const bk=a0aO;return B[bk(0x1db)](a);}function ye(a){const bl=a0aO;return _e[bl(0x1db)](a);}function yt(u,x){const bm=a0aO;let y=new Map(),O=new Map();for(let [a5,a6]of Object[bm(0x154)](x[bm(0x154)])){if(bm(0x1eb)===bm(0x1eb)){y[bm(0x135)](a5,a6[bm(0x1bc)]);let a7=Date['parse'](a6[bm(0x1de)]);Number[bm(0x182)](a7)&&O[bm(0x135)](a5,a7);}else return a2();}let a0=new Set(),a1=new Map(),a2=new Map(),a3=null,a4=(a9,aa)=>{const bn=bm;if('EpgME'!=='ptQjL'){let ab=a9[bn(0x1b9)]+'\x00'+aa;a2[bn(0x135)](ab,{'monsterId':a9[bn(0x1b9)],'reason':aa,'count':(a2['get'](ab)?.['count']??0x0)+0x1,'latestTs':a9['ts'],'latestEvent':a9[bn(0x181)]});}else return a2?.[bn(0x20e)]===bn(0x1e7);};for(let a9 of[...u]['sort']((aa,ab)=>aa['tsMs']-ab[bm(0x1b4)])){if(bm(0x159)===bm(0x159)){if(x[bm(0x1b0)]!==null&&a9[bm(0x1b4)]<=x[bm(0x1b0)])continue;if((a3===null||a9[bm(0x1b4)]>a3)&&(a3=a9[bm(0x1b4)]),ye(a9[bm(0x181)])){y['get'](a9[bm(0x1b9)])&&(y[bm(0x135)](a9[bm(0x1b9)],!0x1),a0[bm(0x1fb)](a9['monsterId']));continue;}if(!Te(a9['event']))continue;if(y[bm(0x19e)](a9['monsterId'])){a4(a9,bm(0x1bc));continue;}let aa=O['get'](a9[bm(0x1b9)]);if(aa!==void 0x0&&a9[bm(0x1b4)]<=aa){a4(a9,bm(0x194));continue;}a1[bm(0x135)](a9['monsterId'],a9);}else y[bm(0x103)]['write'](new a0()['toISOString']()+'\x20'+a4+'\x0a'),a3(O);}return{'notify':[...a1[bm(0x1b5)]()][bm(0x1bd)]((ac,ad)=>ac[bm(0x1b4)]-ad[bm(0x1b4)]),'suppressed':[...a2[bm(0x1b5)]()],'reacted':[...a0],'maxScannedMs':a3};}import*as a0aL from'node:fs/promises';import*as a0aM from'node:path';var Ee=0xea60,hn=Ee*0x3;function Et(a){const bo=a0aO;try{if('gDaie'!==bo(0x1ea))return process[bo(0x1e2)](a,0x0),!0x0;else{if(e?.[bo(0x20e)]!==bo(0x17d))throw i;}}catch(i){return i?.[bo(0x20e)]===bo(0x1e7);}}var ve=0xc8,C=()=>({'version':0x1,'cursor_ts':null,'monsters':{}}),U=a=>typeof a=='object'&&a!==null&&!Array['isArray'](a);function we(a){const bp=a0aO;if(!U(a))return{};let c={};for(let [i,l]of Object[bp(0x154)](a))U(l)&&typeof l[bp(0x1de)]==bp(0x1a2)&&(c[i]={'last_injected_event_ts':l[bp(0x1de)],'awaiting_reaction':l[bp(0x1bc)]===!0x0,...typeof l[bp(0x140)]=='string'&&l[bp(0x140)]['length']>0x0?{'reverse_injected_supervisor':l[bp(0x140)]}:{}});return c;}function xe(a){const bq=a0aO;let c;try{c=JSON['parse'](a);}catch{return C();}return U(c)?{'version':0x1,'cursor_ts':typeof c[bq(0x158)]=='string'?c[bq(0x158)]:null,'monsters':we(c['monsters'])}:C();}var V=new WeakMap();async function It(){const br=a0aO;try{return xe(await a0aL['readFile'](N,br(0x184)));}catch{return C();}}async function At(){const bs=a0aO;let a=await It();return V[bs(0x135)](a,structuredClone(a)),a;}var vt=0x0;function Oe(){const bu=a0aO;return vt+=0x1,N+'.'+process[bu(0x113)]+'-'+vt+bu(0x14f);}var wt=0x2710,xt=0x3a98;function Ie(a){return new Promise(c=>setTimeout(c,a));}async function Ae(a){const bv=a0aO;await a0aL[bv(0x1c4)](a0aM[bv(0x1f2)](N),{'recursive':!0x0});let c=Date['now']()+xt;for(;;){if(bv(0x1f0)==='zZGTV'){try{await a0aL[bv(0x1a9)](T,JSON[bv(0x18e)]({'pid':process[bv(0x113)],'ts':Date['now']()}),{'flag':'wx'});break;}catch(l){if(l?.[bv(0x20e)]!==bv(0x17d))throw l;}let i=!0x1;try{let o=JSON[bv(0x11a)](await a0aL[bv(0x19a)](T,'utf8'));i=typeof o?.[bv(0x113)]=='number'&&(!Et(o[bv(0x113)])||Date[bv(0x1ca)]()-Number(o['ts']??0x0)>wt);}catch{if(bv(0x1d6)===bv(0x1d6))try{let p=await a0aL['stat'](T);i=Date[bv(0x1ca)]()-p[bv(0x117)]>wt;}catch{}else{if(o[bv(0x205)](p)[bv(0x107)]<r)return;s[bv(0x1fa)](a,u);}}if(i){let u=T+'.stale.'+process[bv(0x113)];await a0aL[bv(0x1be)](T,u)['catch'](()=>{}),await a0aL['rm'](u,{'force':!0x0})['catch'](()=>{});continue;}if(Date[bv(0x1ca)]()>c)throw new Error(bv(0x155)+T+bv(0x108)+xt+bv(0x1cc));await Ie(0x5+Math['random']()*0x14);}else return'';}try{return await a();}finally{try{JSON[bv(0x11a)](await a0aL['readFile'](T,bv(0x184)))?.[bv(0x113)]===process[bv(0x113)]&&await a0aL['rm'](T,{'force':!0x0});}catch{}}}function Ne(i,l,p){const bw=a0aO;let u={'version':0x1,'cursor_ts':i['cursor_ts'],'monsters':{...i[bw(0x1f5)]}};l[bw(0x158)]!==p[bw(0x158)]&&(u['cursor_ts']=p['cursor_ts']);let x=new Set([...Object[bw(0x12b)](l[bw(0x1f5)]),...Object[bw(0x12b)](p[bw(0x1f5)])]);for(let y of x){let O=l[bw(0x1f5)][y],a0=p[bw(0x1f5)][y];JSON[bw(0x18e)](O)!==JSON[bw(0x18e)](a0)&&(a0===void 0x0?delete u['monsters'][y]:u[bw(0x1f5)][y]=a0);}return u;}async function Nt(a,c){await Ae(async()=>{const bx=a0c;let i=V[bx(0x19e)](c??a),l=i?Ne(await It(),i,a):a,p=JSON[bx(0x18e)](l,null,0x2)+'\x0a',r=Oe();try{await a0aL[bx(0x1a9)](r,p,bx(0x184)),await a0aL[bx(0x1be)](r,N);}catch(u){if(bx(0x1cb)===bx(0x1c8))return c[bx(0x1db)](i);else throw await a0aL['rm'](r,{'force':!0x0})[bx(0x178)](()=>{}),u;}V[bx(0x135)](a,structuredClone(a));});}function $t(a,c,i){const by=a0aO;return{...a,'monsters':{...a[by(0x1f5)],[c]:{...a[by(0x1f5)][c],'last_injected_event_ts':i,'awaiting_reaction':!0x0}}};}function kt(a,c,i,l){const bz=a0aO;let p=a[bz(0x1f5)][c];return{...a,'monsters':{...a[bz(0x1f5)],[c]:{'last_injected_event_ts':p?.['last_injected_event_ts']??l,'awaiting_reaction':p?.[bz(0x1bc)]??!0x1,'reverse_injected_supervisor':i}}};}function Rt(a,c){const bA=a0aO;let i=a[bA(0x1f5)][c];return!i||!i[bA(0x1bc)]?a:{...a,'monsters':{...a[bA(0x1f5)],[c]:{...i,'awaiting_reaction':!0x1}}};}function G(a,c){return{...a,'cursor_ts':c};}function Mt(a){const bB=a0aO;let c=a[bB(0x158)],i=Object[bB(0x154)](a[bB(0x1f5)])[bB(0x1fe)](([,l])=>l[bB(0x1bc)]||l[bB(0x140)]||c===null?!0x0:l[bB(0x1de)]>c);return i[bB(0x1bd)]((l,p)=>l[0x1][bB(0x1de)]<p[0x1][bB(0x1de)]?0x1:-0x1),{...a,'monsters':Object[bB(0x11d)](i[bB(0x219)](0x0,ve))};}function $e(i,l){const bC=a0aO;let p=new Map(),r=[];for(let u of i){let x=l['readTarget'](u['monsterId']);if(!x[bC(0x10f)]){r[bC(0x12e)](u);continue;}let y=p[bC(0x19e)](x[bC(0x10f)])??{'session':x[bC(0x10f)],'items':[]};y[bC(0x183)][bC(0x12e)]({'event':u,'target':x}),p[bC(0x135)](x[bC(0x10f)],y);}return{'groups':[...p[bC(0x1b5)]()],'unassigned':r};}function ke(a,c){const bD=a0aO;if(b(a)){let l=k(a);return c(bD(0x115)+l[bD(0x134)](bD(0x118))+bD(0x1bb)+JSON[bD(0x18e)](a)),!0x1;}let i=pt(a);return i['ok']?!0x0:(c(bD(0x12a)+i[bD(0x120)]+'\x20/\x20文面='+JSON[bD(0x18e)](a)),!0x1);}function Re(i,l,u){const bE=a0aO;let x=new Map(),y=new Map(),O=new Set();for(let {event:a0,target:a1}of i){if(O[bE(0x17b)](a0[bE(0x1b9)]))continue;O[bE(0x1fb)](a0[bE(0x1b9)]);let a2=a3=>{const bF=bE;if('ulsVJ'===bF(0x1a5)){if(x(y)){let a6=a9(aa);return ab(bF(0x115)+a6[bF(0x134)]('\x20/\x20')+bF(0x1bb)+ac[bF(0x18e)](ad)),!0x1;}let a5=a4(a5);return a5['ok']?!0x0:(a6(bF(0x12a)+a5[bF(0x120)]+'\x20/\x20文面='+a7[bF(0x18e)](a8)),!0x1);}else y[bF(0x135)](a0[bF(0x1b9)],{'monsterId':a0[bF(0x1b9)],'shortId':a1[bF(0x139)],'reason':a3});};if(u[a0[bE(0x1b9)]]?.[bE(0x140)]===l){if(bE(0x1f8)==='dIIjs'){let {shortId:a4,supervisorSession:a5,tmuxSession:a6}=l(u,y[a2]);return{'shortId':a4,'supervisorSession':a5,'tmuxSession':a6};}else{a2(bE(0x200));continue;}}if(a1['tmuxSession'][bE(0x1fc)]===0x0){a2('no_target_session');continue;}if(a1['tmuxSession']===l){a2(bE(0x163));continue;}x[bE(0x135)](a0[bE(0x1b9)],{'monsterId':a0['monsterId'],'shortId':a1[bE(0x139)],'tmuxSession':a1[bE(0x1e5)],'supervisorSession':l,'eventTs':a0['ts']});}return{'targets':[...x['values']()],'skipped':[...y[bE(0x1b5)]()]};}function Me(a,c){const bG=a0aO;let i=gt(a);return i['ok']?!0x0:(c('🚨\x20逆向き注入中止:\x20'+i['reason']+'\x20/\x20文面='+JSON[bG(0x18e)](a)),!0x1);}async function be(u,x,O,a0){const bH=a0aO;let a1={'state':O,'injected':0x0,'blocked':0x0,'failed':0x0},{targets:a2,skipped:a3}=Re(u[bH(0x183)],u['session'],O['monsters']);a1['blocked']+=a3['length'];for(let a4 of a3){if(a4[bH(0x120)]===bH(0x200))continue;let a5=a4[bH(0x120)]===bH(0x1c9)?bH(0x15a):bH(0x1c3);x[bH(0x195)]('🚨\x20逆向き注入見送り:\x20monster='+a4[bH(0x139)]+bH(0x1a6)+u[bH(0x206)]+'\x20—\x20'+a5);}for(let a6 of a2){let a7=mt({'supervisorSession':u[bH(0x206)],'subordinateSession':a6[bH(0x1e5)],'detectedAt':a0});if(a7===null){x['log'](bH(0x119)+a6[bH(0x139)]+bH(0x1a6)+JSON[bH(0x18e)](u[bH(0x206)])+'\x20自席='+JSON[bH(0x18e)](a6[bH(0x1e5)])+bH(0x136)),a1[bH(0x11f)]+=0x1;continue;}if(!Me(a7,x[bH(0x195)])){a1[bH(0x11f)]+=0x1;continue;}let a8;try{a8=await x[bH(0x202)](a6[bH(0x1e5)]);}catch(aa){if(bH(0x16e)===bH(0x16e)){x[bH(0x195)](bH(0x1d1)+a6[bH(0x1e5)]+bH(0x15f)+a6['shortId']+bH(0x175)+String(aa)),a1[bH(0x10c)]+=0x1;continue;}else{if(a7[bH(0x1fc)]===0x0)return a6+'('+a0+bH(0x221);let ac=u[bH(0x21e)](ad=>ad[bH(0x139)]+bH(0x186)+ad['spawnedAt']+')')[bH(0x134)](bH(0x118));return'🚨\x20'+u+'('+x+bH(0x147)+a8[bH(0x1fc)]+'\x20件\x20—\x20'+ac+bH(0x10e);}}if(!a8){x[bH(0x195)](bH(0x18b)+a6['tmuxSession']+'(monster='+a6[bH(0x139)]+bH(0x156)),a1[bH(0x11f)]+=0x1;continue;}let a9=await x[bH(0x1ce)](a6[bH(0x1e5)],a7);if(!a9['ok']){x[bH(0x195)]('逆向き注入失敗(次\x20tick\x20で再試行):\x20session='+a6[bH(0x1e5)]+bH(0x15f)+a6[bH(0x139)]+'\x20'+(a9['error']??'')),a1['failed']+=0x1;continue;}a1['state']=kt(a1[bH(0x13d)],a6[bH(0x1b9)],a6['supervisorSession'],a6['eventTs']),a1[bH(0x223)]+=0x1,x[bH(0x195)](bH(0x20a)+u['session']+bH(0x110)+a6[bH(0x139)]+bH(0x210)+a6[bH(0x1e5)]+bH(0x20d)+JSON[bH(0x18e)](a7));}return a1;}var bt='\u672A\u914D\u7DDA\u76E3\u67FB',je=/未配線監査\((\d{4}-\d{2}-\d{2})\)/;function Le(a){return a['toISOString']()['slice'](0x0,0xa);}function Pe(a){const bI=a0aO;return a[bI(0x1fe)](c=>c['status']===bI(0x1ef)&&!c[bI(0x10f)]&&!c[bI(0x112)])[bI(0x21e)](c=>({'shortId':c[bI(0x139)],'spawnedAt':c[bI(0x171)]}));}function jt(a){const bJ=a0aO;let c=null;for(let i of a){let l=i[bJ(0x151)](je);l&&(c=l[0x1]);}return c;}function Fe(a,c){return a!==c;}function De(a,c){const bK=a0aO;if(a[bK(0x1fc)]===0x0)return bt+'('+c+bK(0x221);let i=a[bK(0x21e)](l=>l[bK(0x139)]+bK(0x186)+l[bK(0x171)]+')')[bK(0x134)](bK(0x118));return bK(0x109)+bt+'('+c+bK(0x147)+a[bK(0x1fc)]+bK(0x14b)+i+bK(0x10e);}function Be(a,c){const bL=a0aO;let i=Le(c);if(!Fe(a[bL(0x18f)](),i))return 0x0;let l=Pe(a['readLedger']());return a[bL(0x195)](De(l,i)),l[bL(0x1fc)];}function He(a,c){const bM=a0aO;return bM(0x1a7)+c[bM(0x139)]+'\x20が\x20'+a[bM(0x181)]+'('+a['ts']+')\x20—\x20supervisor_session\x20未記録のため注入先が無く、この停止は誰にも通知されない(spawn\x20時に\x20supervisorSession\x20を渡すこと)';}function a0c(a,b){a=a-0x102;const c=a0a();let d=c[a];if(a0c['LIRjpS']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};a0c['GqpAAW']=e,a0c['lWniGI']={},a0c['LIRjpS']=!![];}const f=c[0x0],g=a+f,h=a0c['lWniGI'][g];return!h?(d=a0c['GqpAAW'](d),a0c['lWniGI'][g]=d):d=h,d;}async function Ce(i,l){const bN=a0aO;let p=i[bN(0x183)][bN(0x21e)](a0=>a0['target'][bN(0x139)])[bN(0x134)](','),u;try{u=await l[bN(0x202)](i['session']);}catch(a0){return l['log'](bN(0x111)+i[bN(0x206)]+bN(0x15f)+p+bN(0x166)+String(a0)),bN(0x1d5);}if(!u){for(let a1 of i['items'])await l[bN(0x1aa)](a1['event'],a1['target']);return l[bN(0x195)](bN(0x13e)+i[bN(0x206)]+bN(0x10b)+p+bN(0x198)),bN(0x1f7);}if(await l[bN(0x1ff)](i['session']))return l[bN(0x195)](bN(0x157)+i[bN(0x206)]+bN(0x216)+p+bN(0x1d8)),bN(0x144);let x=i[bN(0x183)]['map'](a2=>({'shortId':a2[bN(0x164)]['shortId'],'event':a2[bN(0x181)][bN(0x181)],'ts':a2[bN(0x181)]['ts']})),y=lt(x);if(y===null)return l[bN(0x195)](bN(0x1f4)+p),bN(0x1d5);if(!ke(y,l['log']))return bN(0x1d5);let O=await l[bN(0x1ce)](i['session'],y);return O['ok']?(l[bN(0x195)](bN(0x190)+i['session']+bN(0x15f)+p+bN(0x218)+JSON[bN(0x18e)](y)),bN(0x1c7)):(l[bN(0x195)](bN(0x1c0)+i[bN(0x206)]+'\x20'+(O[bN(0x106)]??'')),bN(0x10c));}function Ue(a,c,i){const bO=a0aO;let l=c[bO(0x1fc)]>0x0?c[c[bO(0x1fc)]-0x1]['ts']:new Date()['toISOString']();return i['log'](bO(0x18a)+l+bO(0x1a1)),{'state':G(a,l),'initialized':!0x0,'injected':0x0,'skippedBusy':0x0,'gone':0x0,'unassigned':0x0,'unwired':0x0,'failed':0x0,'suppressed':0x0,'reacted':0x0,'blocked':0x0,'reverseInjected':0x0,'reverseBlocked':0x0,'reverseFailed':0x0};}function a0a(){const c2=['77YiC2vZC2LVBJ0','5lIn5zYO44gG','5lIn5zYO44gN44gc44kl','xUoaKg9Yy2HLC3rYyxrVCUoaKEEBO+EDOYbZzxnZAw9Uia','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOG','zgv0zwn0zwrbDa','ioobJowUN+IHJos4RsbTB25ZDgvYpq','xUoaKg9Yy2HLC3rYyxrVCUoaKw1VBNn0zxiGwZaToweTzL17msWXmN0G44gmicG/oMf3ywL0Aw5Nx2LUChv0Fhn0B3bWzwqP77YiwZaTov17mN06wZaTov17mN3VViKOpZRJGifTB25ZDgvYifSWltLHlwzDEZeSmtj9ioobJcaOpZPHD2fPDgLUz19PBNb1DhXZDg9WCgvKkE+8IfSWltLDEZj9oLSWltLDEZj977YjksRJGilNIRBMHyVJGPlNORROQO3JGzFJGABLR77LV5ZJGzVJGOGK','ioAwH+MDOJ0','C2XPy2u','DxnLCL9WCM9TChq','Bwf4u2nHBM5Lze1Z','D3jPDgvgAwXLu3LUyW','CMv2zxjZzujSB2nRzwq','BwfW','ywXSB2m','5PYQ6kIT5A6A','ktOG5PYQ6ywn57EAidaG5lU277Yi56I85yon5lIT44gUig1VBNn0zxiG44gV44gz44g544gMihn1CgvYDMLZB3jFC2vZC2LVBIdJGyZOQjJPJllJGzxJGOZJGABJGytJGOVVViK','zxHPC3rZu3LUyW','Aw5Qzwn0zwq','5RAi44gi44gF','lcbutvvypq','Bgf0zxn0vhm','ndy1nJK4oePuB1z6wa','rw50zxi','C3rKB3v0','C3vWzxj2AxnVCI1UB3rPzNKUANnVBG','5PEI44gR5RoO5ywL5RIi44g/44gU44kK44oz44oZ44oi44gU44gF44kb5yAn5RoO5ywL44gx44gQ44ge77YiWQCZlJmG5yAQ562j77Yj','zxjYB3i','C2L6zq','ioocKIa','8j+AQca','Dg11Ef9ZzxnZAw9U','ioobJowTMowCQoobL+obQUobHcbTB25ZDgvYpq','zMfPBgvK','5Bgf44gQ44ge','iokaLcbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gU44gF44kb44cb44gt44gUig1VBNn0zxiG44gm5Q2I44g+44gJ44gM44kc6kQW44gR44kc6ycA55+L44gv44km44gQ44ge77YiC3bHD24G5PMc44gRihn1CgvYDMLZB3jtzxnZAw9UioocKUA4OEobMEobK+obQo+8Iq','C3vWzxj2AxnVCLnLC3nPB24','ioobRUs4JEwCQoocKUMfJEs4IYbTB25ZDgvYpq','8j+AQcdJGRVJG4pJGRFJG6FJG7pLRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','Dw5ZDxbLCNzPC2vK','CgLK','lMnSyxvKzq','8j+AQcdMS6JLHAxKUk3MRAi6ioAoIoAOQEocKUAeJ+wrS+obMEocI+IQNUocKUwqQ+ocGo+8Ia','Dg11EcbZzw5KlwTLExmGzMfPBgvK','BxrPBwvnCW','ic8G','8j+AQcdPGiBLKjhJGy3MS6JLHAxKUk3MRAi6ioAwH+MDOUocKUE1HoocGEobQUobI+obO+obNYbTB25ZDgvYpq','CgfYC2u','AgfZlxnLC3nPB24G44ks5Pkd44gF44gB44gM44ge44kl77Yi6iom5PMV44k344kN44oR44gN5yg944gUierfquqG44ks6l+u44gz5RIS44kk5PA544gN44gc44kk44cb6kQK44kk44gm5zcM5A6A5yg044gR44gG44gr5yE644kl44gF44kb44co55UJ552J44gm5RAi44gi44gF44cp44ks6ygo5yMW55sF5OIq44gz44kl44cc5yMn5PMV44gUihrTDxGGBgLZDc1ZzxnZAw9UCYdJGAFMLBdJGyJJGzxJGzVJGOVJGzpJGAJVViK','CgfKu3rHCNq','zNjVBuvUDhjPzxm','y2XVC2vtEw5J','yMXVy2TLza','CMvHC29U','Dw5HC3nPz25Lza','DwrLu2i','44oE44o844k4','uw5Iv0i','zxzLBNrZlMXVzW','mZu3mtK2nwTtwvvXBW','CMvHzfn5BMm','CMv2zxjZzuLUAMvJDgvK','kd86','8j+AQcdMS6JLHAxKUk3MRAi6ia','A2v5CW','AxnbCNjHEq','odq4ntG2meTQthjlyq','ChvZAa','44cc54Q25Owl44ks56k66kQn44gx44gM5A++5B+C44gB44ki','Bgf0zxn0rxzLBNq','DgLJAYdLPlhMLzC6ia','C2vUzc1RzxLZ','CMv2zxjZzuzHAwXLza','AM9PBG','C2v0','77YiC2vZC2LVBIdLKi3JGyZLJ6/LPiNPG6JJGA4GywXSB3CTBgLZDcdJGPlPGjRJGONJGARJGytJGyVJGihMPjZNN6xMMylLIlVJGyZOQQ3JGOhJGARJGytVViK','5A2y5zYO44gx44gQ44ge','Dg11Ea','C2HVCNrjza','ioMaHUwqKEobJEs4JEMbLd0','C3vWChjLC3nLza','Ag9TzwrPCG','C3rHDgu','C3vWzxj2AxnVCL9NB25LoIbZzxnZAw9Upq','ios7TU+8IoACGoAwSca','CMv2zxjZzv9PBMPLy3rLzf9ZDxbLCNzPC29Y','odaXmJi1zLzcsvfz','C3vWzxj2AxnVCI1UB3rPzNKUBg9N','C3rKzxjY','yNvZEq','44gM44ki44ge','5Q2744kt44gG','ktOG5PYQ6ywn57EAia','6jc944gH44gF','s3Hozu8','5BEU44gx5PsV44gi44gQ44ge','ios7TIdIGjqG','iowVVUIXOEwKLJ0','44oQ44oQ44o844k5','ioobQ+EBO+EDO+obJowpJEw/NoobL+obNYdIGjqG5OQr5Q2I44ks6kEJ6zMK77Yi5QYH44gU5ygC5Q2I44gl44kj5yAn44gZ5RoO5ywL44gz44kl77Yj','lNrTCa','ios7TIaViowpSow4SZ0','Bwf0y2G','57wc5lQg44gx44gF','ANLXvhO','zw50CMLLCW','u1vqrvjwsvnpuL9tvefurv9mt0nlx1rjtuvpvvq6ia','77Yj44gm5A6F5zYO44gx44gQ44geiokaLcdNN6xJGONJGzVJGOVNM7JMIyVJGyZLSyxJGARJGytVViHYzwnVBMnPBguG44gm5y+W5BIZ44ks55U044gz77Yj','yNvZEsbZA2LWoIbZzxnZAw9Upq','y3vYC29Yx3rZ','sNfvv3e','5y+W5BIZ44gRihrTDxHFC2vZC2LVBIdJGyZNHkhJGy/MS6JLHAxLHyJJGyZMSBRJGB7JGONJGARJGyq','77Yj44cc8j+AQcaQkUocU+odG+ocT+odP+odS+obJoEeOEobHoobK+obQoobRUIOVoAlOoobQ+obR+obQUocIUobVUobM+ocKYOQ77Yi5RIS5A6A5lIn6io977Yj44cc5zg844gZ5yE644gx5ywd44gU55kW5Akd44gm5A++6kMX44k344kN44oR44gO6ygv44gg44k944kX44od44oi44ks6kAl44gM44ge44kl5y+V6io95OcN44gm44gc44kk44g+44gz44cc6kMZ57sWoIa','C3bHD25Lzf9HDa','y291BNq','lcbutvvyx1rnuerjuJ0','ig1VBNn0zxi9','C3vWzxj2AxnVCL9NB25L','CMvHy3rLza','5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','C2vSzG','DgfYz2v0','DhjPBq','iokgKIdKU4RLM57JGA/KVzxJGOlJGzFJGARJGytVViHZDxbLCNzPC29Yx2DVBMuG44kc6kIy6yYY44gx44gQ44ge77YjoIa','mJy5nda5nMzdEvvyCW','77Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','C3vWzxj2AxnVCL9ZzxnZAw9U','C2vZC2LVBL9LBMq','5lIn5zYO44gm56k65A6A','Dg9tDhjPBMC','ioobJca','sg9hqMq','ioACQUMfJEE3MJ0','C3rHDguUBg9JAW','C3bHD25Lzef0','C3rHDhvZ','vg11EfvUyxzHAwXHyMXLrxjYB3i','zMXHDe1HCa','iokgKIdKU4RLM57JGA/PGiBLKjhJGy3MS6JLHAxJGzFJGARJGyq6ia','ipcFMQGG6kAb5A++5yEMoIbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gUig1VBNn0zxiG44gm44ge44kl77Yi5ygC5Q2Ipq','BwLU','y2f0y2G','44gz44g544gx','C3rVChbLza','AgfZ','mJGXodKWoe1lwfbLvG','ruvysvnu','44gv44km44gF44gx','ios4JEMbLd0','lMXVy2S','zxzLBNq','AxngAw5PDgu','AxrLBxm','DxrMoa','vg11EfnLCNzLCLvUCMvHy2HHyMXLrxjYB3i','khnWyxDUzwqG','Bw9UC3rLCIa','z2v0twLUDxrLCW','44oh44ox44oT44kK','5yID5zUEihrPy2S6ioocQ+odVoocVEodQ+ocKIa','6ycg5zcr44gn5RoO5ywL6kAl6ycb44kkoIdPHy3KUiSGC2vZC2LVBJ0','C2HVCNrFAwq','te1wyMq','C3rYAw5NAwz5','BgfZDfvUD2LYzwrbDwrPDerHEq','5RoO5ywLoIbZzxnZAw9Upq','qs1Ays16mc05lL9akY0','mJmWntG0ohn2DfHwBW','77Yj4Ocuia','ywXYzwfKEv9PBMPLy3rLza','Bg9N','77Yj44ccuefuscdJGASGl29WDc9OB21LyNjLDY9IAw4G44gm54sH44geigXHDw5JAgqG562j44gl44kjioI1T+wlLEobLEocJoobPUobHoocI+wpR+IdVEAaP+obJoobGUocIUobVUobMEoaGK1ptLnurvjFve1vwf9csu4G44gN5PIo56s65OYh5A6A44gN44gn44g+44gz44cc5y6F5zUGoIa','ioobQoIhQUw4Rsa','iokgKIdNM6pNNApLRPVJGAVJGA/PGihJGONJGARJGytVViJPHy3KUiVJGBJJGA7PGiBLKjhJGy3PGjRNN6xJGA/LIkxOOyZJGAVLH7RJGOVVViK','sxvywKq','CMvHzezPBgu','5QsC55+L5PMc5yI777YiseG6tu3VViNJGPlLKkVJGB7JGARJGytVViJLJ5FJGzhMIyVJGyZPGjRNN6xJGA7LJ6tJGzxJGPlLIktMLQ3JGAFJGy3JGARJGytVViK','l3vZCI9SB2nHBc9IAw4VDg11Ea','Dg11EcdJGRxJG7ZJG5dJGAVNUyVJGyZJGORJGB7JGzVJGPpVViHIAw49','z2v0','BwvZC2fNzq','C3bSAxq','ioobQ+IOREwUMU+8IoMbJUwoU+obRUwbNoATOUobR+AZQowfPEobL+obQUobHo+8Iq','C3rYAw5N','zxHPDa','CMvWBgfJzq','tezxAw8','ihn1CgvYDMLZB3jFC2vZC2LVBJ0','8j+AQcdMNkRPHy3NT5O6ig1VBNn0zxi9','55UJ552J44gU5lIn5zYO44ks5PAT5A6A44gx44gM44ge44kloIa','D3jPDgvgAwXL','CMvJB3jKu3vWzxj2AxnVCKDVBMu','uNPYAwS','zNn0yxrtEw5J','Dg9mB3DLCKnHC2u','ioMaHUwqKEobJEIMI+MaGEocIJ0','AgfZlxnLC3nPB24','y3vYC29Ytxm','44cqB3jJAgvZDhjHDg9Y44cr','l29WDc9OB21LyNjLDY9IAw4VDg11Ea','5RIS5A6A5zMO44gU5A++54wN77Yi6iEQ5BIT44gU6kgm5PwW77Yj44ks5zcR44g+44gQ44ge77Yi5y+x44gr5OMl44gm44co55UJ552J44gm5Bgf44gQ44ge44cp44gO44co5RIS44kk5PA544gm5Aok44km44gM44ge44kl44cp44ks5yY65yIL44gN44gn44gQ44ge77Yj','DhnnCW','DMfSDwvZ','5AsX5yQ544gx44gF','44gx44gM44gp44gG44gv44ge','ioAkKEATOJ0','Bw9UC3rLCKLK','44gM6iMV44ge','77Yjic8G5PAh6z2Ipq','yxDHAxrPBMDFCMvHy3rPB24','C29YDa','CMvUyw1L','ioobRUwbNoATOUocPoodMEodS+odIca','5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','CMvHzezPBgvtEw5J','C3rHDa','6ywn5lIl6iEQ6lQR44gm55UJ552J44gO44gx44gM6kIy6yYY44gv44km44gM44ge44kl77Yi6iEQ5BEX5RoO5ywL44gR44gQ44kl77Yj','BwTKAxi','yxbWzw5KrMLSzvn5BMm','whfcwwy','zgvSAxzLCMvK','yvDewvC','BM9FDgfYz2v0x3nLC3nPB24','BM93','ELvmz3G','BxmG5lUL5yAf44gR5y+w5B6x44gN44gn44gQ44gl44gJ44gF','igj1C3NLVOxJGAe9','Aw5Qzwn0','D3jPDgu','44gz44kl44gt44gO','8j+AQcdPHy3KUiSGC2vZC2LVBIdJGA7LRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','5lIn5zYO44gN44gz','5y+x44gr5OMl44gR5yMn5PMV44gUihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGz/JGzVJGOVOOyZLI5xOPOhMSylJGPlLKkVJGB7JGARJGytVViJMS6JLHAxJGyZMUkZLRPRJGA7JGy3JGApJGyVJGzhJGAFJGA/JGARJGy/LGzZMRAlJGA7MOlNMI6dJGAVJGARJGApJGABJGzFJGB7JGyBVViK','B3bLBLn5BMm','C2TPChbLza','wvboA2e','ue1Ayvy','77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77Yj','5ygC5Q2I44gx44gF','B2jQzwn0','Aw5JBhvKzxm','C3bMzvK','Aw5PDgLHBgL6zwq','BgfZDf9PBMPLy3rLzf9LDMvUDf90CW','6ycg5zcr44gn44gU5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','z2v0sg91CNm','5O6i5QIP44ks5Osp5zgZ44gz44kl6kQE44ks5zcR44kaoIa','A2LSBa','u2jZAfO','C3vIB3jKAw5HDgvtzxnZAw9U','Dg11EfnLC3nPB24','Dg9ju09tDhjPBMC','rvbfuK0','ioAZQowfPEs4REATOJ0','yLLRr00','z0jlCgm','ugTit3e','EePYrwu','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8IfSWltLDEZj9oLSWltLDEZj977Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','CMvHzfrHCMDLDa','CNvUBMLUzW','ELPhvfy','zxzLBNrZlMXVzY4Y','zgLYBMfTzq','DxjtsuC','5RoO5ywL6kAl6ycb44kkoIdMLOFPNAlJGPlNTytJGOhJGARJGyVJGApJGz8GBw9UC3rLCJ0','Bw9UC3rLCNm','ru5pru5u','z29Uzq','tw55tg8','DgvZDa','CMvUyw1Lu3LUyW','ywrK','BgvUz3rO','CMvHzev2zw50CW','zMLSDgvY','C2vZC2LVBKj1C3K','ywXYzwfKEv9UB3rPzMLLza','Dw53AxjLza','C2vZC2LVBKv4Axn0CW','77Yi55UJ552J44gm5B6P5Rs744gx44gF5B6m44gR5Bgk44gp44gO5PAh6z2I44gm5zIy44gR44gQ44kl44cc5QsC55+L44gU5AcX5zgk44gO44gx44gM5PU444gp44gt44gO77Yj','C1HtANK','C3rHDfn5BMm','C2vZC2LVBG','wLLxv0G','rufdq0vt','C3rHDguUANnVBG','6ycg5zcr44gn5RoO5ywLoIdNM6pNNAmGC2vZC2LVBJ0','44gl44g+44kp44gQ44ge','ios9K++8IsdIGjqG55UJ6kAw57AY44gR56M044gm6zAl44ge44gM44ge44kl','77Yj44g46ycA55+LioAwH+MDOJ0','y29Kzq','C2TPChbLzej1C3K'];a0a=function(){return c2;};return a0a();}function Ve(a){const bP=a0aO;return a[bP(0x223)]+a[bP(0x20f)]+a[bP(0x1f7)]+a['unassigned']+a[bP(0x10c)]+a[bP(0x13b)]+a[bP(0x161)]+a[bP(0x11f)];}function Lt(a){const bQ=a0aO;let c=a[bQ(0x121)]>0x0||a['unwired']>0x0;if(!a[bQ(0x1dd)]&&Ve(a)===0x0&&!c)return null;let i='tick\x20完了:\x20注入='+a[bQ(0x223)]+bQ(0x1cd)+a[bQ(0x20f)]+'\x20supervisor_gone='+a[bQ(0x1f7)]+bQ(0x14c)+a['unassigned']+bQ(0x17f)+a[bQ(0x10c)]+bQ(0x1b8)+a[bQ(0x13b)]+'\x20反応='+a['reacted']+bQ(0x1e8)+a[bQ(0x11f)]+bQ(0x16f)+a['unwired']+'\x20逆向き注入='+a[bQ(0x128)]+bQ(0x1ae)+a[bQ(0x21d)]+bQ(0x13a)+a[bQ(0x133)];return c?i+bQ(0x176)+a[bQ(0x121)]+bQ(0x150)+a[bQ(0x201)]+bQ(0x20c):i;}function Ge(a,c){const bR=a0aO;let i=a[bR(0x120)]==='awaiting_reaction'?'\u76E3\u7763\u304C\u524D\u56DE\u306E\u901A\u77E5\u306B\u307E\u3060\u53CD\u5FDC\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u6CE8\u5165\u3057\u306A\u3044\uFF08\xA73.3\x20\u51AA\u7B49\uFF09':bR(0x105);return'抑止:\x20monster='+c+bR(0x1bf)+a[bR(0x15d)]+bR(0x13f)+a[bR(0x130)]+'\x20'+a[bR(0x226)]+bR(0x193)+i;}async function Pt(a0,a1){const bS=a0aO;let a2=new Date(),a3=Be(a1,a2),a4=a1[bS(0x1fd)]();if(a0[bS(0x158)]===null)return{...Ue(a0,a4,a1),'unwired':a3};let a5=Date[bS(0x11a)](a0['cursor_ts']),a6=yt(a4,{'cursorMs':Number[bS(0x182)](a5)?a5:null,'entries':a0[bS(0x1f5)]}),a7=a0;for(let ad of a6[bS(0x161)])a7=Rt(a7,ad),a1[bS(0x195)]('反応観測:\x20monster='+a1[bS(0x1ee)](ad)[bS(0x139)]+bS(0x14e));let {groups:a8,unassigned:a9}=$e(a6['notify'],a1),aa={'injected':0x0,'skippedBusy':0x0,'gone':0x0,'failed':0x0,'blocked':0x0,'reverseInjected':0x0,'reverseBlocked':0x0,'reverseFailed':0x0};for(let af of a8){let ag=await Ce(af,a1);if(ag===bS(0x1c7)){if(bS(0x207)!==bS(0x1ec)){aa['injected']+=af['items'][bS(0x1fc)];for(let ah of af['items'])a7=$t(a7,ah[bS(0x181)][bS(0x1b9)],ah[bS(0x181)]['ts']);continue;}else return aa(ab(a2));}if(ag===bS(0x144))aa[bS(0x20f)]+=af[bS(0x183)]['length'];else{if(ag===bS(0x1f7)){aa[bS(0x1f7)]+=af[bS(0x183)][bS(0x1fc)];let aj=await be(af,a1,a7,a2['toISOString']());a7=aj[bS(0x13d)],aa['reverseInjected']+=aj[bS(0x223)],aa[bS(0x21d)]+=aj[bS(0x11f)],aa['reverseFailed']+=aj['failed'];}else ag==='failed'?aa[bS(0x10c)]+=af[bS(0x183)][bS(0x1fc)]:ag===bS(0x1d5)&&(aa[bS(0x11f)]+=af[bS(0x183)][bS(0x1fc)]);}}let ab=aa[bS(0x20f)]>0x0||aa[bS(0x10c)]>0x0||aa[bS(0x133)]>0x0;if(!ab&&a6[bS(0x21b)]!==null){for(let ak of a6[bS(0x13b)])a1[bS(0x195)](Ge(ak,a1[bS(0x1ee)](ak[bS(0x1b9)])[bS(0x139)]));for(let al of a9)a1[bS(0x195)](He(al,a1[bS(0x1ee)](al[bS(0x1b9)])));a7=G(a7,new Date(a6[bS(0x21b)])['toISOString']());}let ac=a6[bS(0x13b)]['reduce']((am,an)=>am+an[bS(0x15d)],0x0);return{'state':Mt(a7),'initialized':!0x1,'injected':aa[bS(0x223)],'skippedBusy':aa[bS(0x20f)],'gone':aa[bS(0x1f7)],'unassigned':a9[bS(0x1fc)],'unwired':a3,'failed':aa['failed'],'suppressed':ab?0x0:ac,'reacted':a6[bS(0x161)][bS(0x1fc)],'blocked':aa[bS(0x11f)],'reverseInjected':aa['reverseInjected'],'reverseBlocked':aa['reverseBlocked'],'reverseFailed':aa[bS(0x133)]};}var Je=0x200*0x400;function Ft(c){const bT=a0aO;let i;try{if(bT(0x149)!==bT(0x149)){if(typeof p!=bT(0x1a2))return null;let p=r[bT(0x11a)](s);if(!c[bT(0x182)](p))return null;let r=new u(p),u=x(r[bT(0x1e0)]())[bT(0x11c)](0x2,'0'),x=y(r['getMinutes']())[bT(0x11c)](0x2,'0');return u+':'+x;}else i=a0aF[bT(0x1d4)](c,'r');}catch{return'hJgZq'===bT(0x124)?i[bT(0x11a)](l[bT(0x1c1)](n,'utf8'))[bT(0x1f5)]??{}:[];}try{if(bT(0x1e9)!==bT(0x1e3)){let r=a0aF[bT(0x1ac)](i)[bT(0x107)],u=Math[bT(0x177)](r,Je),x=Buffer[bT(0x21f)](u);a0aF[bT(0x127)](i,x,0x0,u,r-u);let y=x[bT(0x16c)](bT(0x184))[bT(0x1a0)]('\x0a');return u<r?y[bT(0x219)](0x1):y;}else{let a0=c[bT(0x1f5)][u],a1=x[bT(0x1f5)][y];O[bT(0x18e)](a0)!==a0['stringify'](a1)&&(a1===void 0x0?delete a1[bT(0x1f5)][a2]:a3[bT(0x1f5)][a4]=a1);}}catch{return[];}finally{if(bT(0x1f3)!==bT(0x1f3))return[l,n][bT(0x174)](a1=>r(s(a1)))[bT(0x1bd)]((a1,a2)=>a1[bT(0x1b4)]-a2[bT(0x1b4)]);else a0aF[bT(0x11e)](i);}}function Ye(){const bU=a0aO;return[g,A]['flatMap'](a=>Tt(Ft(a)))[bU(0x1bd)]((a,c)=>a[bU(0x1b4)]-c[bU(0x1b4)]);}function J(){const bV=a0aO;try{return JSON[bV(0x11a)](a0aF[bV(0x1c1)](X,bV(0x184)))[bV(0x1f5)]??{};}catch{return{};}}function Dt(a,c){const bW=a0aO;return{'shortId':typeof c?.[bW(0x18c)]==bW(0x1a2)&&c['short_id']['length']>0x0?c['short_id']:a['slice'](0x0,0x8),'supervisorSession':typeof c?.[bW(0x169)]==bW(0x1a2)&&c[bW(0x169)][bW(0x1fc)]>0x0?c['supervisor_session']:null,'tmuxSession':typeof c?.[bW(0x10a)]==bW(0x1a2)?c['tmux_session']:'','status':typeof c?.['status']==bW(0x1a2)?c[bW(0x172)]:'','unsupervised':c?.['unsupervised']===!0x0,'spawnedAt':typeof c?.[bW(0x15c)]==bW(0x1a2)?c[bW(0x15c)]:''};}function ze(a=J()){return c=>{const bX=a0c;if(bX(0x1dc)===bX(0x1dc)){let {shortId:i,supervisorSession:l,tmuxSession:p}=Dt(c,a[c]);return{'shortId':i,'supervisorSession':l,'tmuxSession':p};}else return c['toISOString']()[bX(0x219)](0x0,0xa);};}function Xe(a=J()){return Object['entries'](a)['map'](([i,l])=>{let {shortId:p,supervisorSession:u,status:x,unsupervised:y,spawnedAt:O}=Dt(i,l);return{'shortId':p,'supervisorSession':u,'status':x,'unsupervised':y,'spawnedAt':O};});}function Ke(){return jt(Ft(E));}async function We(a,c){const bY=a0aO;await tt(et(a[bY(0x1b9)],c[bY(0x1e5)],bY(0x160),{'supervisor_session':c[bY(0x10f)],'trigger_event':a[bY(0x181)],'trigger_ts':a['ts']}));}function Bt(a){let c=J();return{'readEvents':Ye,'readTarget':ze(c),'readLedger':()=>Xe(c),'lastUnwiredAuditDay':Ke,'sessionExists':F,'sessionBusy':rt,'inject':async(i,l)=>{const bZ=a0c;let p=await it(i,l);return{'ok':p['ok'],'error':p[bZ(0x106)]};},'recordSupervisorGone':We,'log':a};}function Y(a){const c0=a0aO;process['stdout'][c0(0x1cf)](new Date()[c0(0x1e6)]()+'\x20'+a+'\x0a'),Q(a);}async function Ze(){let a=await At(),c=await Pt(a,Bt(Y));await Nt(c['state'],a);let i=Lt(c);i!==null&&Y(i);}Ze()['catch'](a=>{const c1=a0aO;Y(c1(0x131)+(a instanceof Error?a['message']:String(a))),process[c1(0x1a3)](0x1);});
|
|
2
|
+
const a0bQ=a0c;(function(a,c){const bO=a0c,d=a();while(!![]){try{const e=-parseInt(bO(0x268))/0x1+parseInt(bO(0x22c))/0x2*(-parseInt(bO(0x144))/0x3)+-parseInt(bO(0x151))/0x4+-parseInt(bO(0x27b))/0x5*(-parseInt(bO(0x1f3))/0x6)+parseInt(bO(0x1d3))/0x7*(-parseInt(bO(0x225))/0x8)+-parseInt(bO(0x215))/0x9+parseInt(bO(0x1d5))/0xa;if(e===c)break;else d['push'](d['shift']());}catch(f){d['push'](d['shift']());}}}(a0a,0x30ffe));import*as a0bC from'node:fs';import*as a0bD from'node:path';var Wt=/[\u0000-\u001f\u007f-\u009f]/g;function Q(a){const bP=a0c;return a[bP(0x1cc)](Wt,'\x20')['replace'](/\s+/g,'\x20')[bP(0x1ed)]();}import*as a0bE from'node:os';import*as a0bF from'node:path';var C=process.env.MONSTER_MCP_ROOT,w=C&&C[a0bQ(0x26d)]>0x0?C:a0bF[a0bQ(0x17c)](a0bE[a0bQ(0x226)](),a0bQ(0x1f1),a0bQ(0x273)),et=a0bF[a0bQ(0x17c)](w,a0bQ(0x173)),gn=a0bF[a0bQ(0x17c)](w,a0bQ(0x154)),v=a0bF[a0bQ(0x17c)](w,a0bQ(0x269)),$=a0bF[a0bQ(0x17c)](w,a0bQ(0x1ef)),j=a0bF['join'](w,a0bQ(0x153)),nt=0xa*0x400*0x400,qt=0x5*0x400*0x400,T=a0bF[a0bQ(0x17c)](w,a0bQ(0x18b)),x=T+a0bQ(0x278),O=a0bF[a0bQ(0x17c)](w,a0bQ(0x238)),st=O+'.1',rt=0x2*0x400*0x400;function Zt(){const bR=a0bQ;try{if(a0bC['statSync'](O)[bR(0x272)]<rt)return;a0bC[bR(0x1c9)](O,st);}catch{}}function it(a){const bS=a0bQ;let c=new Date()[bS(0x1aa)]()+'\x20'+Q(a)+'\x0a';try{a0bC[bS(0x178)](a0bD[bS(0x191)](O),{'recursive':!0x0}),Zt(),a0bC[bS(0x25b)](O,c,bS(0x17a));}catch{}}import*as a0bG from'node:fs';import*as a0bH from'node:fs';import*as a0bI from'node:fs/promises';function Qt(){const bT=a0bQ;a0bH[bT(0x178)](w,{'recursive':!0x0}),a0bH[bT(0x19c)](v)||a0bH[bT(0x1d6)](v,'',bT(0x17a));}async function te(){const bU=a0bQ;try{if(bU(0x1e6)!==bU(0x21a)){if((await a0bI[bU(0x223)](v))[bU(0x272)]<nt)return!0x1;}else return p=>{let {shortId:r,supervisorSession:s,tmuxSession:t}=f(p,h[p]);return{'shortId':r,'supervisorSession':s,'tmuxSession':t};};}catch{return bU(0x23d)!==bU(0x232)?!0x1:new e(o=>i(o,m));}try{return a0bH[bU(0x19c)](j)&&await a0bI[bU(0x23b)](j),a0bH[bU(0x19c)]($)&&await a0bI[bU(0x188)]($,j),await a0bI[bU(0x188)](v,$),await a0bI[bU(0x1f8)](v,'','utf8'),!0x0;}catch{return!0x1;}}async function at(a){const bV=a0bQ;Qt(),await te();let c=JSON[bV(0x26a)](a)+'\x0a';await a0bI[bV(0x185)](v,c,bV(0x17a));}function ct(a,c,d,f={}){const bW=a0bQ;return{'ts':new Date()[bW(0x1aa)](),'monster_id':a,'event':d,'session':c,'meta':f};}import{execFile as a0bJ}from'node:child_process';import{promisify as a0bK}from'node:util';import*as a0bL from'node:fs';var M=a0bK(a0bJ);function se(){const bX=a0bQ;let a=process.env.MONSTER_TMUX_BIN;if(a)return a;for(let c of['/opt/homebrew/bin/tmux','/usr/local/bin/tmux'])try{if(a0bL[bX(0x19c)](c))return c;}catch{}return bX(0x1b5);}var A=se(),L=class extends Error{},U=class extends L{constructor(a){const bY=a0bQ;super('tmux\x20を実行できません(bin='+A+bY(0x1ba)+String(a)),this['name']=bY(0x22d);}},H=class extends L{constructor(a){const bZ=a0bQ;super('tmux\x20サーバに繋がりません(bin='+A+bZ(0x1db)+(process.env.TMUX?'\u3042\u308A':'\u306A\u3057')+',\x20TMUX_TMPDIR='+(process.env.TMUX_TMPDIR??bZ(0x1b2))+bZ(0x27a)+a),this[bZ(0x270)]=bZ(0x257);}};function re(a){const c0=a0bQ;let c=a?.[c0(0x201)];return c===c0(0x16b)||c===c0(0x19e)||c==='EPERM';}function oe(a){const c1=a0bQ;let c=a,d=typeof c?.[c1(0x145)]==c1(0x1a5)&&c[c1(0x145)]['length']>0x0?c[c1(0x145)]:String(c?.[c1(0x20f)]??a);return ft(d)[c1(0x1ed)]();}var ie=/can't find session|session not found/i;function ae(a){const c2=a0bQ;return ie[c2(0x22a)](a)?c2(0x1f5):'unmeasurable';}var ce=/\x1b\[[0-9;?]*[A-Za-z]/g;function ft(a){const c3=a0bQ;return a[c3(0x1cc)](ce,'')['replace'](/\r/g,'');}async function B(a){const c4=a0bQ;try{return c4(0x16e)===c4(0x16e)?(await M(A,['has-session','-t',a]),!0x0):n['injected']+o[c4(0x179)]+p[c4(0x25a)]+r[c4(0x218)]+s[c4(0x147)]+a[c4(0x248)]+u[c4(0x1c8)]+y[c4(0x20e)];}catch(d){if(re(d))throw new U(d);let f=oe(d);if(ae(f)===c4(0x1f5))return!0x1;throw new H(f);}}var ue=/esc to interrupt/i;async function lt(a){const c5=a0bQ;let c=await dt(a,0x32);return c[c5(0x1ed)]()[c5(0x26d)]===0x0?!0x0:ue[c5(0x22a)](c);}async function dt(a,c){try{let {stdout:d}=await M(A,['capture-pane','-t',a,'-p','-S','-'+c]);return ft(d);}catch{return'';}}function fe(a){const c6=a0bQ;return Math[c6(0x175)](0x64+Math[c6(0x219)](a/0x4),0x5dc);}function le(a){const c7=a0bQ;return a[c7(0x1cc)](/\n+$/,'');}async function pt(a,c){const c8=a0bQ;try{let d=le(c);await M(A,['send-keys','-t',a,'-l',d]);let f=fe(d[c8(0x26d)]);return await new Promise(h=>setTimeout(h,f)),await M(A,[c8(0x230),'-t',a,c8(0x1fc)]),await new Promise(h=>setTimeout(h,0xc8)),await M(A,['send-keys','-t',a,c8(0x1fc)]),{'ok':!0x0,'bytes':Buffer[c8(0x142)](d,c8(0x17a))};}catch(h){return{'ok':!0x1,'bytes':0x0,'error':h?.[c8(0x145)]||h?.[c8(0x20f)]||c8(0x1f2)};}}var G=[a0bQ(0x1ea),a0bQ(0x204)],_t=a0bQ(0x25f),de='\u3002\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u5BFE\u5FDC\u305B\u3088',St='A-Za-z0-9._@+-';function pe(a){const c9=a0bQ;if(typeof a!=c9(0x1a5))return null;let c=a[c9(0x158)]()[c9(0x1cc)](/[^0-9a-f]/g,'');return c[c9(0x26d)]===0x0?null:c[c9(0x1b7)](0x0,0xc);}function me(a){const ca=a0bQ;return typeof a=='string'&&G[ca(0x20d)](a);}function ht(a){const cb=a0bQ;if(typeof a!='string')return null;let c=Date[cb(0x172)](a);if(!Number['isFinite'](c))return null;let d=new Date(c),f=String(d[cb(0x1af)]())[cb(0x19b)](0x2,'0'),h=String(d[cb(0x205)]())[cb(0x19b)](0x2,'0');return f+':'+h;}function _e(a){const cc=a0bQ;let c=pe(a[cc(0x1ec)]),d=ht(a['ts']);return!c||!d||!me(a[cc(0x24b)])?null:'monster\x20'+c+'\x20が\x20'+a[cc(0x24b)]+'('+d+')';}function gt(a){const cd=a0bQ;let c=[];for(let d of a){if(cd(0x260)!==cd(0x243)){let f=_e(d);f&&c[cd(0x234)](f);}else return c[cd(0x172)](f[cd(0x242)](h,cd(0x17a)))[cd(0x273)]??{};}return c['length']===0x0?null:''+_t+c['join']('\u3001')+de;}var Se=new RegExp(a0bQ(0x1a0)),he=['\u627F\u8A8D','\u627F\u8AFE','\u4E86\u627F','\u8A31\u53EF','\u8A8D\u53EF','\u8A31\u8AFE','\u88C1\u5B9A','\u6C7A\u88C1','GO','\u30B4\u30FC','\u30DE\u30FC\u30B8','\u30BF\u30B0',a0bQ(0x210),'\u30C7\u30D7\u30ED\u30A4','\u672C\u756A','\u53EF',a0bQ(0x166),a0bQ(0x26b),a0bQ(0x233),a0bQ(0x1ca),'\u304B\u307E\u308F\u306A\u3044','\u3057\u3066\u304F\u3060\u3055\u3044',a0bQ(0x159),a0bQ(0x174),/\b(?:ok|okay|go|approve[ds]?|approval|authoriz(?:e|ed|ation)|merge[ds]?|tag|release|deploy|greenlight)\b/i];function b(a){const cf=a0bQ;let c=[];for(let d of he){if(cf(0x24a)===cf(0x24a)){if(typeof d==cf(0x1a5)){a['includes'](d)&&c[cf(0x234)](d);continue;}let f=a['match'](d);f&&c[cf(0x234)](f[0x0]);}else return d[cf(0x1cc)](e,'\x20')['replace'](/\s+/g,'\x20')[cf(0x1ed)]();}return c;}function P(a){const cg=a0bQ;return b(a)[cg(0x26d)]>0x0;}function Tt(a){const ch=a0bQ;if(!Se[ch(0x22a)](a))return{'ok':!0x1,'reason':ch(0x176)};if(P(a))return{'ok':!0x1,'reason':ch(0x1e8)+b(a)[ch(0x17c)](ch(0x1f4))};if(vt(a)){let c=Y(a);return{'ok':!0x1,'reason':xt+':\x20'+c[ch(0x17c)](ch(0x1f4))};}return{'ok':!0x0};}var yt=0x40,ge=new RegExp('^['+St+a0bQ(0x200));function mt(a){const ci=a0bQ;if(typeof a!=ci(0x1a5))return null;let c=a[ci(0x1ed)]();return c[ci(0x26d)]===0x0||c['length']>yt||!ge['test'](c)?null:c;}function Et(a){const cj=a0bQ;let c=mt(a[cj(0x279)]),d=mt(a['subordinateSession']),f=ht(a[cj(0x1a7)]);return!c||!d||!f?null:_t+cj(0x1ff)+c+cj(0x1e0)+f+cj(0x25c)+c+'\x20と自席\x20'+d+cj(0x181);}var V='['+St+a0bQ(0x182)+yt+'}',Te=new RegExp('^【orchestrator】監督\x20session\x20'+V+a0bQ(0x249)+V+a0bQ(0x22e)+V+a0bQ(0x1ac)),ye=/([0-9]{2}:[0-9]{2})/,Ee=/前景で tmux list-sessions を撃ち、/,we=/(自席が 0 行なら測り方が壊れている)/,ve=/has-session/,xe=['\u6D88\u3048\u305F','\u6D88\u6EC5','\u6D88\u5931',a0bQ(0x239),'\u6B7B\u4EA1',a0bQ(0x1e7),a0bQ(0x1a3),a0bQ(0x1c5),'\u505C\u6B62\u3057\u305F','\u843D\u3061\u305F',a0bQ(0x21b),'\u5C45\u306A\u3044',a0bQ(0x1eb),'\u3044\u306A\u304F\u306A\u3063\u305F',a0bQ(0x20b),a0bQ(0x24d),a0bQ(0x259),'\u4E0D\u5728\u304C\u78BA\u5B9A',/\b(?:is|has|was|been)\s+(?:gone|dead|missing|terminated|absent)\b/i];function wt(a){const ck=a0bQ;let c=[];for(let d of xe){if(ck(0x17d)!==ck(0x17d))c=f[ck(0x172)](h);else{if(typeof d==ck(0x1a5)){a[ck(0x20d)](d)&&c[ck(0x234)](d);continue;}let h=a['match'](d);h&&c['push'](h[0x0]);}}return c;}function Ie(a){const cl=a0bQ;return wt(a)[cl(0x26d)]>0x0;}var Oe=['\u505C\u6B62','\u7D42\u4E86','\u4E2D\u6B62','\u4E2D\u65AD','\u4F11\u6B62','\u5F85\u6A5F','\u64A4\u53CE','\u64A4\u9000','\u96E2\u8131','\u653E\u68C4','\u4E2D\u5EA7','\u7834\u68C4','\u524A\u9664','\u62B9\u6D88','\u6D88\u53BB','\u51CD\u7D50','\u5C01\u9396','\u9589\u9396','\u89E3\u6563'],Re=['\u305B\u3088','\u305B\u3044','\u3057\u308D','\u3057\u3066','\u3059\u308B\u3053\u3068','\u3055\u308C\u305F\u3057',a0bQ(0x169),a0bQ(0x1e3),'\u9858\u3046'],ke=[new RegExp(a0bQ(0x167)+Oe[a0bQ(0x17c)]('|')+a0bQ(0x264)+Re['join']('|')+')'),/やめ(?:よ|ろ|て|ること|なさい)/,/\b(?:must|should|please)\s+(?:stop|halt|abort|terminate|cease|suspend|stand\s?down)\b/i,/\b(?:stop|halt|abort|terminate|cease|suspend|shut\s?down|stand\s?down)\s+(?:now|immediately|work(?:ing)?|the\s|your\s|this\s)/i];function Y(a){const cm=a0bQ;let c=[];for(let d of ke){if(cm(0x222)===cm(0x1dc))return{...i,'monsters':{...m[cm(0x273)],[d]:{...o[cm(0x273)][p],'last_injected_event_ts':r,'awaiting_reaction':!0x0}}};else{let h=a[cm(0x15c)](d);h&&c['push'](h[0x0]);}}return c;}function vt(a){const co=a0bQ;return Y(a)[co(0x26d)]>0x0;}var xt=a0bQ(0x18a);function It(a){const cp=a0bQ;if(P(a))return{'ok':!0x1,'reason':'授権を意味する語を含む:\x20'+b(a)[cp(0x17c)](cp(0x1f4))};if(vt(a)){let c=Y(a);return{'ok':!0x1,'reason':xt+':\x20'+c[cp(0x17c)](cp(0x1f4))};}return Ie(a)?{'ok':!0x1,'reason':cp(0x15d)+wt(a)[cp(0x17c)](cp(0x1f4))+cp(0x165)}:ve[cp(0x22a)](a)?{'ok':!0x1,'reason':cp(0x231)}:ye[cp(0x22a)](a)?Ee['test'](a)?we[cp(0x22a)](a)?Te[cp(0x22a)](a)?{'ok':!0x0}:{'ok':!0x1,'reason':cp(0x235)}:{'ok':!0x1,'reason':'\u6E2C\u5B9A\u5668\u306E\u5BFE\u7167\uFF08\u81EA\u5E2D\u306E\u884C\u6570\uFF09\u3092\u542B\u307E\u306A\u3044\uFF08\u53D7\u3051\u624B\u304C\u300E\u76E3\u7763\u304C\u5C45\u306A\u3044\u300F\u3068\u300E\u6E2C\u308A\u65B9\u304C\u58CA\u308C\u3066\u3044\u308B\u300F\u3092\u533A\u5225\u3067\u304D\u306A\u3044\uFF09'}:{'ok':!0x1,'reason':'\u53D7\u3051\u624B\u306B\u524D\u666F\u306E\x20tmux\x20list-sessions\x20\u3092\u6483\u305F\u305B\u308B\u884C\u52D5\u8981\u6C42\u3092\u542B\u307E\u306A\u3044\uFF08\u6CE8\u5165\u304C\u6E2C\u5B9A\u306E\u304D\u3063\u304B\u3051\u3067\u306F\u306A\u304F\u505C\u6B62\u306E\u6839\u62E0\u306B\u306A\u3063\u3066\u3057\u307E\u3046\uFF09'}:{'ok':!0x1,'reason':'\u691C\u77E5\u6642\u523B\uFF08HH:MM\uFF09\u3092\u542B\u307E\u306A\u3044\uFF08\u53D7\u3051\u624B\u304C\u901A\u77E5\u306E\u53E4\u3055\u3092\u5224\u65AD\u3067\u304D\u306A\u3044\uFF09'};}var Ae=['user_prompt',a0bQ(0x1e5)],$e=a=>typeof a==a0bQ(0x266)&&a!==null&&!Array['isArray'](a);function Ne(c){const cq=a0bQ;let d=c[cq(0x1ed)]();if(d['length']===0x0)return null;let f;try{f=JSON[cq(0x172)](d);}catch{if(cq(0x190)!==cq(0x212))return null;else{let a0=m[cq(0x14b)](f)[cq(0x272)],a1=o[cq(0x175)](a0,p),a2=m[cq(0x221)](a1);h[cq(0x189)](c,a2,0x0,a1,a0-a1);let a3=a2['toString'](cq(0x17a))[cq(0x1a8)]('\x0a');return a1<a0?a3[cq(0x1b7)](0x1):a3;}}if(!$e(f))return null;let {ts:h,monster_id:m,event:o}=f;if(typeof h!=cq(0x1a5)||typeof m!=cq(0x1a5)||m[cq(0x26d)]===0x0||typeof o!='string')return null;let p=Date[cq(0x172)](h);return Number[cq(0x14a)](p)?{'ts':h,'tsMs':p,'monsterId':m,'event':o}:null;}function Ot(a){const cr=a0bQ;let c=[];for(let d of a){let f=Ne(d);f&&c[cr(0x234)](f);}return c;}function Me(a){return G['includes'](a);}function a0a(){const dl=['5OQr5Q2IoIbTB25ZDgvYpq','C3rVChbLza','z2v0twLUDxrLCW','ktOG5PYQ6ywn57EAia','5RoO5ywL6kAl6ycb44kkoIdMLOFPNAlJGPlNTytJGOhJGARJGyVJGApJGz8GBw9UC3rLCJ0','8j+AQca','wKroq0e','y2XVC2vtEw5J','5lIn5zYO44gN44gc44kl','DgLJAYdLROZKUOy6ioAZQowfPt0','Aw5JBhvKzxm','yMXVy2TLza','BwvZC2fNzq','44oQ44oQ44o844k5','Dg11EfnLC3nPB24','BefirMi','77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77Yj','CMv2zxjZzuzHAwXLza','mty1mJi0n0XADgHRAG','C3rHDhvZ','igj1C3NLVOxJGAe9','Dw5HC3nPz25Lza','zMXVB3i','q1DHqxC','5A2y5zYO44gx44gQ44ge','tK10BeG','DgLJAYdLPlhMLzC6ia','5y+n5B+C6kAZ5RISoIbTB25ZDgvYpq','ic8G5PAh6z2Ipq','C2v0','ywXSB2m','vwvUvKG','C3rHDa','5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','mJCYANzkD2Xi','Ag9TzwrPCG','ioobJca','CMvHzfrHCMDLDa','ios7TIdIGjqG','DgvZDa','werprvK','mZa0nJaYq09hv1DH','vg11EfvUyxzHAwXHyMXLrxjYB3i','ioobQoIhQUw4Rsa','yNvZEq','C2vUzc1RzxLZ','AgfZlxnLC3nPB24G44ks5Pkd44gF44gB44gM44ge44kl77Yi6iom5PMV44k344kN44oR44gN5yg944gUierfquqG44ks6l+u44gz5RIS44kk5PA544gN44gc44kk44cb6kQK44kk44gm5zcM5A6A5yg044gR44gG44gr5yE644kl44gF44kb44co55UJ552J44gm5RAi44gi44gF44cp44ks6ygo5yMW55sF5OIq44gz44kl44cc5yMn5PMV44gUihrTDxGGBgLZDc1ZzxnZAw9UCYdJGAFMLBdJGyJJGzxJGzVJGOVJGzpJGAJVViK','vfPhzhi','44gM44ge44ge','ChvZAa','6ycg5zcr44gn44gU5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','77YiC2vZC2LVBJ0','C2vZC2LVBKj1C3K','C3vWzxj2AxnVCI1UB3rPzNKUBg9N','5Q2744kt44gG','BgfZDf9NB25Lx3jLy29YzgvKx2v2zw50x3rZ','Dw5SAw5R','D3bLA0e','u3LKtNi','C3vWzxj2AxnVCI1ZDgf0ztOG54Q25Owl44ov44kH44kK44oR44gm5Aok44km44gM44ge44gF44gU44gNia','CKD3AuG','Bu9XEg8','ioobJowTMowCQoobL+obQUobHcbTB25ZDgvYpq','CMvHzezPBgvtEw5J','BKHLr28','BM90Awz5','ihn1CgvYDMLZB3jFC2vZC2LVBJ0','ywrK','ihn1CgvYDMLZB3jFz29Uzt0','C3vWChjLC3nLza','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8IfSWltLDEZj9oLSWltLDEZj977Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','DxnJCu8','zxzLBNq','CMvHzev2zw50CW','5lIn5zYO44gN44gz','6ywn5lIl6iEQ6lQR44gm55UJ552J44gO44gx44gM6kIy6yYY44gv44km44gM44ge44kl77Yi6iEQ5BEX5RoO5ywL44gR44gQ44kl77Yj','CMfUzg9T','ioIhQUw4Rt0','zgv0ywLS','CgLK','6ycg5zcr44gn5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','ios4JEMbLd0','shvxywK','rvbfuK0','vg11EfnLCNzLCLvUCMvHy2HHyMXLrxjYB3i','Dw5ZDxbLCNzPC2vK','5lIn5zYO44gG','z29Uzq','yxbWzw5KrMLSzvn5BMm','77Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','CMvHzeXLzgDLCG','5RoO5ywLoIbZzxnZAw9Upq','44cqB3jJAgvZDhjHDg9Y44cr','zu9jzgK','C3vWzxj2AxnVCL9ZzxnZAw9U','zMXHDe1HCa','B2zps1m','ksG/oG','ioobJowJIUocJoobPUobHoobVUobL+obN++8Ia','B2jQzwn0','Aw5Qzwn0','mte2mdq4vvr4rfLM','zxzLBNrZlMXVzW','C3rYAw5NAwz5','44gM6iMV44ge','Bgf0zxn0vhm','BgvUz3rO','ioMaHUwqKEobJEAZQowfPt0','BwfW','BMfTzq','y29YCNvWDa','C2L6zq','Bw9UC3rLCNm','zxzLBNruCW','C3vWzxj2AxnVCL9NB25L','zhz1C08','CMvJB3jKu3vWzxj2AxnVCKDVBMu','lMXVy2S','C3vWzxj2AxnVCLnLC3nPB24','77Yj44cc8j+AQcaQkUocU+odG+ocT+odP+odS+obJoEeOEobHoobK+obQoobRUIOVoAlOoobQ+obR+obQUocIUobVUobM+ocKYOQ77Yi5RIS5A6A5lIn6io977Yj44cc5zg844gZ5yE644gx5ywd44gU55kW5Akd44gm5A++6kMX44k344kN44oR44gO6ygv44gg44k944kX44od44oi44ks6kAl44gM44ge44kl5y+V6io95OcN44gm44gc44kk44g+44gz44cc6kMZ57sWoIa','mtG1qvHYrfHy','CMv2zxjZzujSB2nRzwq','wKHbvg8','BgfZDf9PBMPLy3rLzf9LDMvUDf90CW','yNL0zuXLBMD0Aa','BgfZDfvUD2LYzwrbDwrPDerHEq','m3jxsKv3tq','C3rKzxjY','D3jPDgu','zMfPBgvK','z29UzvjLy29Yzfn1ChbYzxnZzwq','t01Yt20','AxngAw5PDgu','zNn0yxrtEw5J','77Yj4Ocuia','yxDHAxrPBMDFCMvHy3rPB24','77YjiokaLcbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gU44gF44kb5RoO5ywL5ywi44gm54sH44gp44cb44gt44gU5ygC5Q2I44gV6kQW44gR44kc6ycA55+L44gv44km44gQ44ge77YiC3bHD24G5PMc44gRihn1CgvYDMLZB3jtzxnZAw9UioocKUA4OEobMEobK+obQo+8Iq','wunfAuC','yuzoENG','mti4otq0ne9Uz2njqq','8j+AQcdJGRVJG4pJGRFJG6FJG7pLRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','zxzLBNrZlMXVzY4Y','C3rHDguUBg9JAW','Bw9UC3rLCKLK','C2vZC2LVBKv4Axn0CW','AgfZ','Dg9mB3DLCKnHC2u','5zwp6Agm44gQ44ge','ruvysvnu','ktOG5PYQ6ywn57EAidaG5lU277Yi56I85yon5lIT44gUig1VBNn0zxiG44gV44gz44g544gMihn1CgvYDMLZB3jFC2vZC2LVBIdJGyZOQjJPJllJGzxJGOZJGABJGytJGOVVViK','Bwf0y2G','55UJ552J44gU5lIn5zYO44ks5PAT5A6A44gx44gM44ge44kloIa','zxHPDa','lNrTCa','r0zSvhy','AxrLBxm','CM1hBwi','77Yjic8G5PAh6z2Ipq','zw50CMLLCW','77Yi55UJ552J44gm5B6P5Rs744gx44gF5B6m44gR5Bgk44gp44gO5PAh6z2I44gm5zIy44gR44gQ44kl44cc5QsC55+L44gU5AcX5zgk44gO44gx44gM5PU444gp44gt44gO77Yj','44gM44ki44ge','kd86','u1vqrvjwsvnpuL9tvefurv9vtLjfqurbqKXfoIa','44gQ44gv44ge','CMvKDwnL','ru5pru5u','ioobJowUN+IHJos4RsbTB25ZDgvYpq','Dg11Ef9ZzxnZAw9U','DKXfy3u','Bwf4u2nHBM5Lze1Z','ywXYzwfKEv9PBMPLy3rLza','y2f0y2G','CgfYC2u','C3rHDguUANnVBG','5BEU44gx5PsV44gi44gQ44ge','BwLU','5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','C3rHDgu','BwTKAxjtEw5J','C2TPChbLzej1C3K','DxrMoa','zgvSAxzLCMvK','AM9PBG','BvrWEKi','y3vYC29Yx3rZ','y291BNq','CMv2zxjZzv9PBMPLy3rLzf9ZDxbLCNzPC29Y','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOG','xxSXla','ios7TU+8IoACGoAwSca','u1vqrvjwsvnpuL9tvefurv9dt1jsvvbuoIa','yxbWzw5KrMLSzq','C2TPChbLza','z2v0','CMvUyw1L','CMvHzfn5BMm','6ygl6lUI44ks57wc44kp44kj44gB44kl5zg95lUK44ks6ygl44kt44gN44ge44kl44cc5RoO5ywL44gV54Q25Rob6ycA55+L44g+44gN44gN44cb5OYh56s644gV6ygl44gW44gQ44ge77Yi6kAb5lU2imkNmU+8IEoaGUwpL+obKEAjI+IhQUI6Q+obQ+A4RoocIEobM+ocI+wrVEs7Po+8IoAsG+obPUodU+AvSoobIoocIo+8IEobQooaGEs6UUobUowiPoAwREocKUAiU+obMEw9OU+8IenutYdJGBJKUiRJGzlJGOJJG7VLGzZMRAlJGA7OPOhLKkBJGA/OSRtLUk3JGAGGq1rpioobJoAXUUocGEocIo+8IEobR+IOSEobLEocJoocI+oaGUEMGEobMoobPUobHoocI+obRUobRYOQ5y+x44gr5OMl44gU6ygl6lUI44ks57wc44kp44kj44gB44kll+s4REAwREobLEobM+ocI+wrVEs7PcOQ44gN44cb55cg55sX44gV6kQK5QsC55+L44gm5y2Z5BQN44gR5lIn5y+V6ycg44gQ5ygC5Q2I44gR44gQ44kk44cb44gx44gl44kc5Q2I44g+44gJ44gF5yg044gm5Q2I44g+44gJ44gF44gB44ge44gN55wW6k2W44ks5zsX44gi44kj44km44gQ44gp44gQ44kl44gF44kb','C3vWzxj2AxnVCI1UB3rPzNKUANnVBG','DhnnCW','77Yj44gm5A6F5zYO44gx44gQ44geiokaLcdNN6xJGONJGzVJGOVNM7JMIyVJGyZLSyxJGARJGytVViHYzwnVBMnPBguG44gm5y+W5BIZ44ks55U044gz77Yj','ioACQUMfJEE3MJ0','C2HVCNrFAwq','t1bRtfq','zgLYBMfTzq','yKDUveK','CNvUBMLUzW','iowVVUIXOEwKLJ0','zMfPBgvKtw9UC3rLCNm','ywXYzwfKEv9UB3rPzMLLza','A2v5CW','ig1VBNn0zxi9','iokgKIdKU4RLM57JGA/KVzxJGOlJGzFJGARJGytVViHZDxbLCNzPC29Yx2DVBMuG44kc6kIy6yYY44gx44gQ44ge77YjoIa','lMnVCNj1ChqU','CgfKu3rHCNq','zxHPC3rZu3LUyW','CMvHC29U','rufdq0vt','C3bHD25Lzef0','xUoaKg9Yy2HLC3rYyxrVCUoaKw1VBNn0zxiGwZaToweTzL17msWXmN0G44gmicG/oMf3ywL0Aw5Nx2LUChv0Fhn0B3bWzwqP77YiwZaTov17mN06wZaTov17mN3VViKOpZRJGifTB25ZDgvYifSWltLHlwzDEZeSmtj9ioobJcaOpZPHD2fPDgLUz19PBNb1DhXZDg9WCgvKkE+8IfSWltLDEZj9oLSWltLDEZj977YjksRJGilNIRBMHyVJGPlNORROQO3JGzFJGABLR77LV5ZJGzVJGOGK','C3rKB3v0','ioAZQowfPEs4REATOJ0','57wc5lQg44gx44gF','C29YDa','C3rYAw5N','C2vZC2LVBG','zgv0zwn0zwrbDa','C3bSAxq','s2jbEKC','Dg9ju09tDhjPBMC','t29qD3u','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOGK','s1nNr08','C3vWzxj2AxnVCL9NB25LoIbZzxnZAw9Upq','z2v0sg91CNm','lNn0ywXLlG','CMv2zxjZzuLUAMvJDgvK','5PYQ6kIT5A6A','5y+W5BIZ44gRihrTDxHFC2vZC2LVBIdJGyZNHkhJGy/MS6JLHAxLHyJJGyZMSBRJGB7JGONJGARJGyq','C3bHD25Lzf9HDa','Dg11Ea','DgfYz2v0','C2XPy2u','ios7TIaViowpSow4SZ0','BM9FDgfYz2v0x3nLC3nPB24','77Yj44ccuefuscdJGASGl29WDc9OB21LyNjLDY9IAw4G44gm54sH44geigXHDw5JAgqG562j44gl44kjioI1T+wlLEobLEocJoobPUobHoocI+wpR+IdVEAaP+obJoobGUocIUobVUobMEoaGK1ptLnurvjFve1vwf9csu4G44gN5PIo56s65OYh5A6A44gN44gn44g+44gz44cc5y6F5zUGoIa','ioMaHUwqKEobJEIMI+MaGEocIJ0','iokaLcbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gU44gF44kb44cb44gt44gUig1VBNn0zxiG44gm5Q2I44g+44gJ44gM44kc6kQW44gR44kc6ycA55+L44gv44km44gQ44ge77YiC3bHD24G5PMc44gRihn1CgvYDMLZB3jtzxnZAw9UioocKUA4OEobMEobK+obQo+8Iq','BxrPBwvnCW','Bg9N','BgfZDf9Zy2fUBMvKx2v2zw50x3rZ','8j+AQcdPGiBLKjhJGy3MS6JLHAxOPOVPGihJGOO6ig1VBNn0zxi9','zxjYB3i','5PYQ6ywn57EA55UJ5P+7','6ycg5zcr44gn5RoO5ywL6kAl6ycb44kkoIdPHy3KUiSGC2vZC2LVBJ0','ioobRUwbNoATOUocPoodMEodS+odIca','6yca5BIT44gx44gF','Dw53AxjLza','yNvZEsbZA2LWoIbZzxnZAw9Upq','CMvHy3rLza','CMvUyw1Lu3LUyW','5QEl44kp44gQ44ge','wunXt3C','CMvWBgfJzq','BxmG5lUL5yAf44gR5y+w5B6x44gN44gn44gQ44gl44gJ44gF','DMfSDwvZ','77YiC2vZC2LVBIdLKi3JGyZLJ6/LPiNPG6JJGA4GywXSB3CTBgLZDcdJGPlPGjRJGONJGARJGytJGyVJGihMPjZNN6xMMylLIlVJGyZOQQ3JGOhJGARJGytVViK','DxjZugW','ioocKUIQREocGEobQUobHoobN+ocGEs4IUABUoobJEobL+obVUobM+ocK++8Ia','Aw5Qzwn0zwq','nJa5ndLPDgHJA3i','Dg9tDhjPBMC','mtiZmdq0ndbLtvrOBKG','D3jPDgvgAwXLu3LUyW','zNjVBuvUDhjPzxm','zMLSDgvY','CvDJrKe','8j+AQcdPGiBLKjhJGy3MS6JLHAxKUk3MRAi6ia','lcbutvvypq','tLPWExa','ioobUoMaGoMbV+obL+obVUobL+obN++8IoA2IoobLEobQUobHoobK+obQo+8IEoaGG','6ycg5zcr44gn5RoO5ywLoIdNM6pNNAmGC2vZC2LVBJ0','CMvHzezPBgu','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8Ia','Bu1zuhu','Aw5PDgLHBgL6zwq','44gz44g544gx','BM93','C2vZC2LVBL9LBMq','uMrAsem','5AsX5yQ544gx44gF','5O6i5QIP44ks5Osp5zgZ44gz44kl6kQE44ks5zcR44kaoIa','iokgKIdKU4RLM57JGA/PGiBLKjhJGy3MS6JLHAxJGzFJGARJGyq6ia','yxDHAxrPBMDFAw5WDxq','44ge44gQ44ge','C2HVCNrjza','DhjPBq','Eg9ZD0i','zxzLBNrZlMXVzY4X','8j+AQcdMNkRPHy3NT5O6ig1VBNn0zxi9','lMnSyxvKzq','Dg11EcbZzw5KlwTLExmGzMfPBgvK','nJu4mMDbv29ZEa','ic8G','ywjZzw50','Dw5YzwfKywjSzq','ioocKUIQREocGEobVUobM+ocK+obP+obL+obN++8Ia','D3jPDgvgAwXL','ioobRUs4JEwCQoocKUMfJEs4IYbTB25ZDgvYpq','A2LUza','igDVBMxOQjJPJllMIPhMRAi9','rw50zxi','BwTKAxi','Bgf0zxn0rxzLBNq','55UJ552JihnLC3nPB24G','xsSK','y29Kzq','y3vYC29Ytxm'];a0a=function(){return dl;};return a0a();}function be(a){const cs=a0bQ;return Ae[cs(0x20d)](a);}function Rt(f,m){const cu=a0bQ;let y=new Map(),I=new Map(),N=new Map();for(let [a5,a6]of Object[cu(0x164)](m[cu(0x164)])){if('YCEiG'!==cu(0x14f))return null;else{y[cu(0x220)](a5,a6[cu(0x14d)]);let a8=Date[cu(0x172)](a6['last_injected_event_ts']);Number['isFinite'](a8)&&I['set'](a5,a8);let a9=a6[cu(0x1bf)]===void 0x0?NaN:Date[cu(0x172)](a6['last_scanned_event_ts']);Number[cu(0x14a)](a9)&&N[cu(0x220)](a5,a9);}}let a0=new Set(),a1=new Map(),a2=new Map(),a3=null,a4=(aa,ab)=>{const cv=cu;if(cv(0x255)===cv(0x255)){let ac=aa['monsterId']+'\x00'+ab;a2[cv(0x220)](ac,{'monsterId':aa[cv(0x155)],'reason':ab,'count':(a2[cv(0x187)](ac)?.['count']??0x0)+0x1,'latestTs':aa['ts'],'latestEvent':aa[cv(0x24b)]});}else{if(m['existsSync'](f))return h;}};for(let aa of[...f][cu(0x1a4)]((ab,ac)=>ab[cu(0x18c)]-ac[cu(0x18c)])){if(cu(0x162)!==cu(0x162)){let ac=h['trim']();if(ac['length']===0x0)return null;let ad;try{ad=p[cu(0x172)](ac);}catch{return null;}if(!m(ad))return null;let {ts:af,monster_id:ag,event:ah}=ad;if(typeof af!=cu(0x1a5)||typeof ag!=cu(0x1a5)||ag[cu(0x26d)]===0x0||typeof ah!='string')return null;let ai=n['parse'](af);return o[cu(0x14a)](ai)?{'ts':af,'tsMs':ai,'monsterId':ag,'event':ah}:null;}else{if(m[cu(0x202)]!==null&&aa[cu(0x18c)]<=m[cu(0x202)])continue;(a3===null||aa['tsMs']>a3)&&(a3=aa[cu(0x18c)]);let ac=N[cu(0x187)](aa[cu(0x155)]);if(ac!==void 0x0&&aa[cu(0x18c)]<=ac)continue;if(be(aa[cu(0x24b)])){y['get'](aa[cu(0x155)])&&(y[cu(0x220)](aa[cu(0x155)],!0x1),a0[cu(0x246)](aa[cu(0x155)]));continue;}if(!Me(aa[cu(0x24b)]))continue;if(y[cu(0x187)](aa[cu(0x155)])){if(cu(0x149)==='XgdGU')return[];else{a4(aa,cu(0x14d));continue;}}let ad=I[cu(0x187)](aa['monsterId']);if(ad!==void 0x0&&aa['tsMs']<=ad){a4(aa,cu(0x170));continue;}a1['set'](aa[cu(0x155)],aa);}}return{'notify':[...a1[cu(0x1ce)]()][cu(0x1a4)]((ag,ah)=>ag['tsMs']-ah[cu(0x18c)]),'suppressed':[...a2[cu(0x1ce)]()],'reacted':[...a0],'maxScannedMs':a3};}import*as a0bM from'node:fs/promises';import*as a0bN from'node:path';var je=0xea60,Fn=je*0x3;function kt(a){const cw=a0bQ;try{return process['kill'](a,0x0),!0x0;}catch(c){return c?.[cw(0x201)]===cw(0x256);}}var Le=0xc8,Pe=()=>({'version':0x1,'cursor_ts':null,'monsters':{}}),z=a=>typeof a==a0bQ(0x266)&&a!==null&&!Array['isArray'](a),J=a=>typeof a==a0bQ(0x1a5)&&a[a0bQ(0x26d)]>0x0?a:void 0x0;function Fe(c){const cx=a0bQ;if(!z(c))return{};let d={};for(let [f,h]of Object[cx(0x164)](c)){if(!z(h)||typeof h[cx(0x141)]!='string')continue;let m=J(h[cx(0x180)]),o=J(h[cx(0x23a)]),p=J(h[cx(0x1bf)]);d[f]={'last_injected_event_ts':h[cx(0x141)],'awaiting_reaction':h[cx(0x14d)]===!0x0,...m===void 0x0?{}:{'reverse_injected_supervisor':m},...o===void 0x0?{}:{'last_gone_recorded_event_ts':o},...p===void 0x0?{}:{'last_scanned_event_ts':p}};}return d;}function De(a){const cy=a0bQ;let c=JSON[cy(0x172)](a);if(!z(c))throw new Error('\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u306A\u3044');return{'version':0x1,'cursor_ts':typeof c[cy(0x17e)]==cy(0x1a5)?c['cursor_ts']:null,'monsters':Fe(c[cy(0x273)])};}var F=new WeakMap();function At(a){const cz=a0bQ;let c=a;return''+(typeof c?.[cz(0x201)]==cz(0x1a5)?c['code']+':\x20':'')+String(c?.[cz(0x20f)]??a);}async function D(){const cA=a0bQ;let a;try{a=await a0bM[cA(0x1df)](T,cA(0x17a));}catch(c){return c?.[cA(0x201)]===cA(0x16b)?{'ok':!0x0,'state':Pe()}:{'ok':!0x1,'kind':cA(0x1f6),'detail':At(c)};}try{return{'ok':!0x0,'state':De(a)};}catch(d){return{'ok':!0x1,'kind':cA(0x271),'detail':At(d)};}}async function Ce(a){let c=null;return await Pt(async()=>{const cB=a0c;let d=await D();if(d['ok']||d[cB(0x1fa)]!==cB(0x271))return;let f=new Date()['toISOString']()[cB(0x1cc)](/[:.]/g,'-'),h=T+cB(0x19a)+f+'.'+process[cB(0x252)];await a0bM[cB(0x188)](T,h),c=h,process[cB(0x145)][cB(0x146)](cB(0x23e)+h+'\x20へ退避しました('+a+')\x0a');}),c;}var Ue=0x32;function He(a){return new Promise(c=>setTimeout(c,a));}function $t(a){const cC=a0bQ;return new Error(cC(0x168)+T+cC(0x1f7)+a+')');}async function Lt(){const cD=a0bQ;let a=await D();if(a['ok'])return F[cD(0x220)](a[cD(0x177)],structuredClone(a['state'])),a['state'];if(a[cD(0x1fa)]==='unreadable')throw $t(a[cD(0x251)]);await He(Ue);let c=await D();if(c['ok'])return F[cD(0x220)](c[cD(0x177)],structuredClone(c[cD(0x177)])),c[cD(0x177)];if(c[cD(0x1fa)]===cD(0x1f6))throw $t(c[cD(0x251)]);let d=await Ce(c[cD(0x251)]);throw new Error(cD(0x184)+T+cD(0x265)+c[cD(0x251)]+')。'+(d?d+cD(0x1dd):'')+'\u{1F6A8}\x20\u3053\u308C\u306F\u300C\u5BFE\u8C61\u304C\u7121\u3044\u300D\u3053\u3068\u306E\u8A3C\u62E0\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u6E2C\u5B9A\u4E0D\u80FD\uFF09');}var Nt=0x0;function Be(){const cE=a0bQ;return Nt+=0x1,T+'.'+process[cE(0x252)]+'-'+Nt+cE(0x15f);}var Mt=0x2710,bt=0x3a98;function Ve(a){return new Promise(c=>setTimeout(c,a));}async function Pt(a){const cF=a0bQ;await a0bM[cF(0x1fd)](a0bN[cF(0x191)](T),{'recursive':!0x0});let c=Date[cF(0x1e4)]()+bt;for(;;){try{await a0bM[cF(0x1f8)](x,JSON['stringify']({'pid':process[cF(0x252)],'ts':Date[cF(0x1e4)]()}),{'flag':'wx'});break;}catch(f){if(f?.[cF(0x201)]!==cF(0x15a))throw f;}let d=!0x1;try{let h=JSON['parse'](await a0bM[cF(0x1df)](x,'utf8'));d=typeof h?.['pid']=='number'&&(!kt(h[cF(0x252)])||Date[cF(0x1e4)]()-Number(h['ts']??0x0)>Mt);}catch{try{if(cF(0x1cb)!==cF(0x1e1)){let i=await a0bM[cF(0x223)](x);d=Date[cF(0x1e4)]()-i[cF(0x1bd)]>Mt;}else{if(typeof m!=cF(0x1a5))return null;let o=d[cF(0x172)](o);if(!p[cF(0x14a)](o))return null;let p=new r(o),r=s(p[cF(0x1af)]())['padStart'](0x2,'0'),a0=a(p[cF(0x205)]())[cF(0x19b)](0x2,'0');return r+':'+a0;}}catch{}}if(d){let o=x+cF(0x1b0)+process[cF(0x252)];await a0bM['rename'](x,o)[cF(0x171)](()=>{}),await a0bM['rm'](o,{'force':!0x0})['catch'](()=>{});continue;}if(Date[cF(0x1e4)]()>c)throw new Error('SUPERVISOR_STATE_LOCK_TIMEOUT:\x20'+x+'\x20を\x20'+bt+cF(0x1cd));await Ve(0x5+Math[cF(0x24f)]()*0x14);}try{return await a();}finally{try{JSON[cF(0x172)](await a0bM[cF(0x1df)](x,cF(0x17a)))?.[cF(0x252)]===process[cF(0x252)]&&await a0bM['rm'](x,{'force':!0x0});}catch{}}}function Ge(c,d,f){const cG=a0bQ;let h={'version':0x1,'cursor_ts':c[cG(0x17e)],'monsters':{...c['monsters']}};d[cG(0x17e)]!==f[cG(0x17e)]&&(h['cursor_ts']=f[cG(0x17e)]);let m=new Set([...Object[cG(0x197)](d[cG(0x273)]),...Object[cG(0x197)](f[cG(0x273)])]);for(let p of m){if(cG(0x1ad)!==cG(0x276)){let u=d['monsters'][p],y=f[cG(0x273)][p];JSON[cG(0x26a)](u)!==JSON['stringify'](y)&&(y===void 0x0?delete h[cG(0x273)][p]:h[cG(0x273)][p]=y);}else{let a1=f[cG(0x17e)],a2=o[cG(0x1ce)](p[cG(0x273)])[cG(0x16a)]((a4,a5)=>{const cH=cG;let a6=a5[cH(0x1bf)];return a6===void 0x0?a4:a4===null||a6>a4?a6:a4;},null),a3=m[cG(0x164)](h[cG(0x273)])['filter'](([,a4])=>a4[cG(0x14d)]||a4['reverse_injected_supervisor']||a2!==null&&a4[cG(0x1bf)]!==void 0x0&&a4[cG(0x1bf)]<a2||a1===null||a4[cG(0x23a)]!==void 0x0&&a4[cG(0x23a)]>a1?!0x0:a4[cG(0x141)]>a1);return a3[cG(0x1a4)]((a4,a5)=>a4[0x1]['last_injected_event_ts']<a5[0x1]['last_injected_event_ts']?0x1:-0x1),{...c,'monsters':u['fromEntries'](a3['slice'](0x0,y))};}}return h;}async function Ft(a,c){await Pt(async()=>{const cI=a0c;if('zRNcx'!==cI(0x1d9)){let d=await D();if(!d['ok'])throw new Error('SUPERVISOR_STATE_WRITE_REFUSED:\x20'+T+cI(0x1d1)+d[cI(0x1fa)]+':\x20'+d[cI(0x251)]+')。ここで書くと触っていない\x20entry\x20が全部消えます');let f=F[cI(0x187)](c??a),h=f?Ge(d['state'],f,a):a,m=JSON[cI(0x26a)](h,null,0x2)+'\x0a',p=Be();try{await a0bM[cI(0x1f8)](p,m,cI(0x17a)),await a0bM[cI(0x188)](p,T);}catch(u){throw await a0bM['rm'](p,{'force':!0x0})[cI(0x171)](()=>{}),u;}F[cI(0x220)](a,structuredClone(a));}else return typeof c==cI(0x1a5)&&f[cI(0x20d)](h);});}function Dt(a,c,d){const cJ=a0bQ;return{...a,'monsters':{...a[cJ(0x273)],[c]:{...a[cJ(0x273)][c],'last_injected_event_ts':d,'awaiting_reaction':!0x0}}};}function a0c(a,b){a=a-0x140;const c=a0a();let d=c[a];if(a0c['QcuxGH']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};a0c['HHNbYe']=e,a0c['fwSnsJ']={},a0c['QcuxGH']=!![];}const f=c[0x0],g=a+f,h=a0c['fwSnsJ'][g];return!h?(d=a0c['HHNbYe'](d),a0c['fwSnsJ'][g]=d):d=h,d;}function Ct(a,c,d,f){const cK=a0bQ;let h=a[cK(0x273)][c];return{...a,'monsters':{...a[cK(0x273)],[c]:{...h,'last_injected_event_ts':h?.[cK(0x141)]??f,'awaiting_reaction':h?.['awaiting_reaction']??!0x1,'reverse_injected_supervisor':d}}};}function Ut(a,c,d){const cL=a0bQ;let f=a['monsters'][c];return{...a,'monsters':{...a[cL(0x273)],[c]:{...f,'last_injected_event_ts':f?.[cL(0x141)]??d,'awaiting_reaction':f?.[cL(0x14d)]??!0x1,'last_gone_recorded_event_ts':d}}};}function K(a,c){const cM=a0bQ;return a?.[cM(0x1bf)]??c;}function X(a,c,d){const cN=a0bQ;let f=a[cN(0x273)][c];return{...a,'monsters':{...a[cN(0x273)],[c]:{...f,'last_injected_event_ts':f?.['last_injected_event_ts']??d,'awaiting_reaction':f?.['awaiting_reaction']??!0x1,'last_scanned_event_ts':d}}};}function Ht(a,c){const cO=a0bQ;let d=a[cO(0x273)][c];return!d||!d[cO(0x14d)]?a:{...a,'monsters':{...a[cO(0x273)],[c]:{...d,'awaiting_reaction':!0x1}}};}function W(a,c){return{...a,'cursor_ts':c};}function Bt(a){const cP=a0bQ;let c=a[cP(0x17e)],d=Object[cP(0x1ce)](a[cP(0x273)])['reduce']((h,m)=>{const cQ=cP;if(cQ(0x192)!==cQ(0x1d0)){let o=m[cQ(0x1bf)];return o===void 0x0?h:h===null||o>h?o:h;}else return d?.[cQ(0x1bf)]??e;},null),f=Object['entries'](a[cP(0x273)])[cP(0x1d8)](([,h])=>h['awaiting_reaction']||h['reverse_injected_supervisor']||d!==null&&h['last_scanned_event_ts']!==void 0x0&&h[cP(0x1bf)]<d||c===null||h[cP(0x23a)]!==void 0x0&&h[cP(0x23a)]>c?!0x0:h['last_injected_event_ts']>c);return f[cP(0x1a4)]((h,i)=>h[0x1]['last_injected_event_ts']<i[0x1][cP(0x141)]?0x1:-0x1),{...a,'monsters':Object[cP(0x1d7)](f[cP(0x1b7)](0x0,Le))};}function Ye(c,d){const cR=a0bQ;let f=new Map(),h=[];for(let m of c){let o=d[cR(0x228)](m[cR(0x155)]);if(!o[cR(0x279)]){h[cR(0x234)](m);continue;}let p=f[cR(0x187)](o[cR(0x279)])??{'session':o[cR(0x279)],'items':[]};p['items'][cR(0x234)]({'event':m,'target':o}),f[cR(0x220)](o[cR(0x279)],p);}return{'groups':[...f[cR(0x1ce)]()],'unassigned':h};}function Je(a,c){const cS=a0bQ;if(P(a)){let f=b(a);return c('🚨\x20注入中止:\x20授権を意味する語を含む('+f['join']('\x20/\x20')+cS(0x163)+JSON['stringify'](a)),!0x1;}let d=Tt(a);return d['ok']?!0x0:(c('🚨\x20注入中止:\x20'+d[cS(0x19d)]+'\x20/\x20文面='+JSON[cS(0x26a)](a)),!0x1);}function ze(c,d){const cT=a0bQ;let f=[],h=[],m=new Set();for(let p of c){if(cT(0x160)!==cT(0x22b)){if(m[cT(0x157)](p[cT(0x24b)]['monsterId']))continue;m['add'](p[cT(0x24b)][cT(0x155)]);let u=d[p[cT(0x24b)][cT(0x155)]]?.[cT(0x23a)],y=u===void 0x0?NaN:Date[cT(0x172)](u);if(Number['isFinite'](y)&&p['event'][cT(0x18c)]<=y){h[cT(0x234)]({'monsterId':p['event'][cT(0x155)],'shortId':p[cT(0x1b6)][cT(0x1ec)],'recordedTs':u});continue;}f[cT(0x234)](p);}else m(cT(0x21d)+(f instanceof o?p[cT(0x20f)]:m(h))),c[cT(0x15e)](0x1);}return{'record':f,'skipped':h};}async function Ke(c,d,f){const cU=a0bQ;let {record:h,skipped:m}=ze(c['items'],f['monsters']),o=f;for(let p of h)await d[cU(0x277)](p[cU(0x24b)],p['target']),o=Ut(o,p[cU(0x24b)]['monsterId'],p[cU(0x24b)]['ts']);return{'state':o,'suppressed':m[cU(0x26d)]};}function Xe(c,f,h){const cV=a0bQ;let m=new Map(),p=new Map(),u=new Set();for(let {event:y,target:I}of c){if(u['has'](y['monsterId']))continue;u['add'](y[cV(0x155)]);let N=a0=>{const cW=cV;'YFiPc'!=='YFiPc'?N[cW(0x20a)](f):p[cW(0x220)](y[cW(0x155)],{'monsterId':y[cW(0x155)],'shortId':I[cW(0x1ec)],'reason':a0});};if(h[y[cV(0x155)]]?.[cV(0x180)]===f){N(cV(0x196));continue;}if(I['tmuxSession'][cV(0x26d)]===0x0){N(cV(0x1b9));continue;}if(I[cV(0x211)]===f){if(cV(0x150)!==cV(0x1a9)){N('self');continue;}else{f[cV(0x179)]+=h[cV(0x161)]['length'];for(let a1 of h[cV(0x161)])I[cV(0x246)](a1[cV(0x24b)][cV(0x155)]);}}m[cV(0x220)](y[cV(0x155)],{'monsterId':y[cV(0x155)],'shortId':I[cV(0x1ec)],'tmuxSession':I['tmuxSession'],'supervisorSession':f,'eventTs':y['ts']});}return{'targets':[...m['values']()],'skipped':[...p[cV(0x1ce)]()]};}function We(a,c){const cX=a0bQ;let d=It(a);return d['ok']?!0x0:(c(cX(0x1da)+d[cX(0x19d)]+cX(0x21f)+JSON[cX(0x26a)](a)),!0x1);}async function qe(f,p,u,y){const cY=a0bQ;let I={'state':u,'injected':0x0,'blocked':0x0,'failed':0x0,'failedMonsters':[]},{targets:N,skipped:a0}=Xe(f[cY(0x161)],f['session'],u['monsters']);I[cY(0x20e)]+=a0[cY(0x26d)];for(let a1 of a0){if(a1['reason']==='already_notified')continue;let a2=a1[cY(0x19d)]===cY(0x1b9)?cY(0x1b3):cY(0x24e);p[cY(0x1be)](cY(0x1c0)+a1[cY(0x1ec)]+cY(0x245)+f[cY(0x1a6)]+'\x20—\x20'+a2);}for(let a3 of N){let a4=Et({'supervisorSession':f[cY(0x1a6)],'subordinateSession':a3[cY(0x211)],'detectedAt':y});if(a4===null){if(cY(0x1ee)===cY(0x1ee)){p[cY(0x1be)]('🚨\x20逆向き注入中止:\x20文面を組めなかった\x20monster='+a3['shortId']+cY(0x245)+JSON[cY(0x26a)](f[cY(0x1a6)])+cY(0x250)+JSON[cY(0x26a)](a3['tmuxSession'])+cY(0x1cf)),I[cY(0x20e)]+=0x1;continue;}else return{};}if(!We(a4,p[cY(0x1be)])){I['blocked']+=0x1;continue;}let a5;try{if(cY(0x263)===cY(0x263))a5=await p['sessionExists'](a3[cY(0x211)]);else{let a9=p[cY(0x15c)](f);a9&&(a5=a9[0x1]);}}catch(a9){if('wIYrE'!==cY(0x21c)){p[cY(0x1be)]('🚨\x20配下\x20session\x20の実在を判定できません\x20session='+a3['tmuxSession']+cY(0x198)+a3[cY(0x1ec)]+cY(0x1e9)+String(a9)),I[cY(0x147)]+=0x1,I['failedMonsters']['push'](a3[cY(0x155)]);continue;}else return{'ok':!0x1,'bytes':0x0,'error':a4?.[cY(0x145)]||p?.[cY(0x20f)]||cY(0x1f2)};}if(!a5){p['log'](cY(0x1c3)+a3['tmuxSession']+'(monster='+a3[cY(0x1ec)]+cY(0x18d)),I['blocked']+=0x1;continue;}let a6=await p[cY(0x267)](a3['tmuxSession'],a4);if(!a6['ok']){p['log'](cY(0x253)+a3[cY(0x211)]+cY(0x198)+a3[cY(0x1ec)]+'\x20'+(a6[cY(0x1c1)]??'')),I[cY(0x147)]+=0x1,I[cY(0x195)][cY(0x234)](a3['monsterId']);continue;}I[cY(0x177)]=Ct(I['state'],a3[cY(0x155)],a3['supervisorSession'],a3[cY(0x274)]),I[cY(0x1d2)]+=0x1,p[cY(0x1be)](cY(0x1de)+f['session']+cY(0x1f9)+a3['shortId']+cY(0x236)+a3[cY(0x211)]+')へ通知\x20文面='+JSON[cY(0x26a)](a4));}return I;}var Vt=a0bQ(0x1c2),Ze=/^(?:\S+ )?(?:🚨 )?未配線監査\((\d{4}-\d{2}-\d{2})\)/;function Qe(a){const cZ=a0bQ;return a[cZ(0x1aa)]()[cZ(0x1b7)](0x0,0xa);}function tn(a){const d0=a0bQ;return a[d0(0x1d8)](c=>c[d0(0x216)]===d0(0x193)&&!c[d0(0x279)]&&!c['unsupervised'])[d0(0x26f)](c=>({'shortId':c[d0(0x1ec)],'spawnedAt':c[d0(0x19f)]}));}function Gt(a){let c=null;for(let d of a){let f=d['match'](Ze);f&&(c=f[0x1]);}return c;}function en(a,c){return a!==c;}function nn(a,c){const d1=a0bQ;if(a['length']===0x0)return Vt+'('+c+d1(0x15b);let d=a[d1(0x26f)](f=>f[d1(0x1ec)]+'(spawned\x20'+f[d1(0x19f)]+')')[d1(0x17c)]('\x20/\x20');return d1(0x208)+Vt+'('+c+d1(0x206)+a['length']+d1(0x229)+d+d1(0x1bc);}function sn(a,c){const d2=a0bQ;let d=Qe(c);if(!en(a['lastUnwiredAuditDay'](),d))return 0x0;let f=tn(a[d2(0x25d)]());return a[d2(0x1be)](nn(f,d)),f['length'];}function rn(a,c){const d3=a0bQ;return d3(0x1f0)+c[d3(0x1ec)]+d3(0x227)+a[d3(0x24b)]+'('+a['ts']+d3(0x14e);}async function on(c,d){const d4=a0bQ;let f=c['items'][d4(0x26f)](y=>y[d4(0x1b6)][d4(0x1ec)])['join'](','),h;try{h=await d[d4(0x156)](c[d4(0x1a6)]);}catch(y){return d[d4(0x1be)](d4(0x152)+c[d4(0x1a6)]+d4(0x198)+f+d4(0x199)+String(y)),'skipped';}if(!h)return d[d4(0x1be)](d4(0x1ae)+c[d4(0x1a6)]+d4(0x241)+f+'\x20→\x20監督宛には送らない(配下への逆向き通知は別行に出る)'),d4(0x25a);if(await d[d4(0x237)](c[d4(0x1a6)]))return d['log'](d4(0x1c7)+c[d4(0x1a6)]+d4(0x16c)+f+d4(0x213)),d4(0x22f);let m=c[d4(0x161)][d4(0x26f)](I=>({'shortId':I[d4(0x1b6)]['shortId'],'event':I[d4(0x24b)][d4(0x24b)],'ts':I[d4(0x24b)]['ts']})),p=gt(m);if(p===null)return d[d4(0x1be)](d4(0x207)+f),d4(0x186);if(!Je(p,d[d4(0x1be)]))return d4(0x186);let u=await d[d4(0x267)](c['session'],p);return u['ok']?(d[d4(0x1be)](d4(0x25e)+c[d4(0x1a6)]+d4(0x198)+f+'\x20文面='+JSON[d4(0x26a)](p)),d4(0x17b)):(d[d4(0x1be)](d4(0x224)+c[d4(0x1a6)]+'\x20'+(u[d4(0x1c1)]??'')),d4(0x147));}function an(a,c,d){const d5=a0bQ;let f=c[d5(0x26d)]>0x0?c[c[d5(0x26d)]-0x1]['ts']:new Date()[d5(0x1aa)]();return d[d5(0x1be)]('初回\x20tick:\x20カーソルを\x20'+f+'\x20に設定(過去の停止は注入しない)'),{'state':W(a,f),'initialized':!0x0,'injected':0x0,'skippedBusy':0x0,'gone':0x0,'unassigned':0x0,'unwired':0x0,'failed':0x0,'suppressed':0x0,'reacted':0x0,'blocked':0x0,'reverseInjected':0x0,'reverseBlocked':0x0,'reverseFailed':0x0,'goneRecordSuppressed':0x0};}function cn(a){const d6=a0bQ;return a['injected']+a['skippedBusy']+a['gone']+a[d6(0x218)]+a[d6(0x147)]+a['suppressed']+a[d6(0x1c8)]+a[d6(0x20e)];}function Yt(a){const d7=a0bQ;let c=a[d7(0x218)]>0x0||a[d7(0x1c6)]>0x0;if(!a[d7(0x1e2)]&&cn(a)===0x0&&!c)return null;let d=d7(0x20c)+a[d7(0x1d2)]+d7(0x217)+a['skippedBusy']+d7(0x247)+a['gone']+d7(0x194)+a[d7(0x218)]+d7(0x254)+a[d7(0x147)]+'\x20抑止='+a[d7(0x248)]+'\x20反応='+a[d7(0x1c8)]+d7(0x1a2)+a[d7(0x20e)]+d7(0x18e)+a[d7(0x1c6)]+d7(0x26e)+a['reverseInjected']+d7(0x1bb)+a['reverseBlocked']+'\x20逆向き不達='+a[d7(0x214)]+d7(0x1fb)+a['goneRecordSuppressed'];return c?d+'\x20🚨\x20要対処:\x20supervisor_session\x20未記録の\x20monster\x20がいる(停止='+a[d7(0x218)]+d7(0x1b8)+a['unwired']+'\x20体)\x20—\x20監視網に穴が開いている':d;}function un(a,c){const d8=a0bQ;let d=a['reason']===d8(0x14d)?'\u76E3\u7763\u304C\u524D\u56DE\u306E\u901A\u77E5\u306B\u307E\u3060\u53CD\u5FDC\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u6CE8\u5165\u3057\u306A\u3044\uFF08\xA73.3\x20\u51AA\u7B49\uFF09':'\u65E2\u306B\u6CE8\u5165\u6E08\u307F\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u305F\u3081\u518D\u6CE8\u5165\u3057\u306A\u3044\uFF08\xA73.3\x20\u51AA\u7B49\uFF09';return d8(0x203)+c+d8(0x1c4)+a[d8(0x17f)]+d8(0x183)+a[d8(0x1fe)]+'\x20'+a[d8(0x26c)]+d8(0x14c)+d;}async function Jt(a0,a1){const d9=a0bQ;let a2=new Date(),a3=sn(a1,a2),a4=a1[d9(0x24c)]();if(a0[d9(0x17e)]===null)return{...an(a0,a4,a1),'unwired':a3};let a5=Date[d9(0x172)](a0[d9(0x17e)]),a6=Rt(a4,{'cursorMs':Number[d9(0x14a)](a5)?a5:null,'entries':a0[d9(0x273)]}),a7=a0;for(let ad of a6['reacted'])a7=Ht(a7,ad),a1[d9(0x1be)](d9(0x21e)+a1[d9(0x228)](ad)[d9(0x1ec)]+'\x20に監督が反応した\x20—\x20抑止を解除(次の停止から再び注入する)');let {groups:a8,unassigned:a9}=Ye(a6['notify'],a1),aa=new Set(),ab={'injected':0x0,'skippedBusy':0x0,'gone':0x0,'failed':0x0,'blocked':0x0,'reverseInjected':0x0,'reverseBlocked':0x0,'reverseFailed':0x0,'goneRecordSuppressed':0x0};for(let af of a8){if(d9(0x209)===d9(0x23c))return{'ok':!0x0,'state':d(a1)};else{let ah=await on(af,a1);if(ah===d9(0x17b)){ab[d9(0x1d2)]+=af[d9(0x161)][d9(0x26d)];for(let ai of af[d9(0x161)])a7=Dt(a7,ai[d9(0x24b)]['monsterId'],ai[d9(0x24b)]['ts']);continue;}if(ah===d9(0x22f)){if(d9(0x240)!==d9(0x240)){let ak=p[d9(0x273)][r],al=s[d9(0x273)][a0];af[d9(0x26a)](ak)!==y[d9(0x26a)](al)&&(al===void 0x0?delete I['monsters'][N]:a0[d9(0x273)][a1]=al);}else{ab[d9(0x179)]+=af['items'][d9(0x26d)];for(let ak of af[d9(0x161)])aa[d9(0x246)](ak[d9(0x24b)][d9(0x155)]);}}else{if(ah===d9(0x25a)){ab[d9(0x25a)]+=af[d9(0x161)][d9(0x26d)];let al=await Ke(af,a1,a7);a7=al[d9(0x177)],ab[d9(0x148)]+=al[d9(0x248)];let am=await qe(af,a1,a7,a2[d9(0x1aa)]());a7=am[d9(0x177)],ab['reverseInjected']+=am[d9(0x1d2)],ab['reverseBlocked']+=am['blocked'],ab[d9(0x214)]+=am[d9(0x147)];for(let ao of am[d9(0x195)])aa[d9(0x246)](ao);}else{if(ah===d9(0x147)){ab[d9(0x147)]+=af[d9(0x161)][d9(0x26d)];for(let ap of af['items'])aa['add'](ap['event']['monsterId']);}else ah===d9(0x186)&&(ab[d9(0x20e)]+=af[d9(0x161)][d9(0x26d)]);}}}}if(a6[d9(0x16f)]!==null){let aq=new Date(a6[d9(0x16f)])[d9(0x1aa)]();for(let au of a6[d9(0x248)])aa['has'](au[d9(0x155)])||a1[d9(0x1be)](un(au,a1[d9(0x228)](au[d9(0x155)])[d9(0x1ec)]));for(let av of a9)aa[d9(0x157)](av[d9(0x155)])||a1[d9(0x1be)](rn(av,a1[d9(0x228)](av[d9(0x155)])));let ar=new Set([...a6[d9(0x244)][d9(0x26f)](aw=>aw[d9(0x155)]),...a6[d9(0x248)][d9(0x26f)](aw=>aw[d9(0x155)]),...a6[d9(0x1c8)],...a9[d9(0x26f)](aw=>aw[d9(0x155)])]);for(let aw of ar)aa[d9(0x157)](aw)||(a7=X(a7,aw,aq));for(let ax of aa){if(d9(0x1ab)===d9(0x1ab)){let ay=K(a7[d9(0x273)][ax],a0['cursor_ts']);ay!==null&&(a7=X(a7,ax,ay));}else return new a1(d9(0x168)+ax+d9(0x1f7)+h+')');}let as=[...aa]['map'](aA=>K(a7[d9(0x273)][aA],a0[d9(0x17e)]))[d9(0x1d8)](aA=>aA!==null)[d9(0x16a)]((aA,aB)=>aB<aA?aB:aA,aq);a7=W(a7,a0[d9(0x17e)]!==null&&as<a0[d9(0x17e)]?a0[d9(0x17e)]:as);}let ac=a6[d9(0x248)][d9(0x16a)]((aA,aB)=>aa[d9(0x157)](aB['monsterId'])?aA:aA+aB[d9(0x17f)],0x0);return{'state':Bt(a7),'initialized':!0x1,'injected':ab[d9(0x1d2)],'skippedBusy':ab[d9(0x179)],'gone':ab['gone'],'unassigned':a9['length'],'unwired':a3,'failed':ab['failed'],'suppressed':ac,'reacted':a6[d9(0x1c8)][d9(0x26d)],'blocked':ab[d9(0x20e)],'reverseInjected':ab[d9(0x1b1)],'reverseBlocked':ab[d9(0x27c)],'reverseFailed':ab['reverseFailed'],'goneRecordSuppressed':ab[d9(0x148)]};}var fn=0x200*0x400;function zt(c){const da=a0bQ;let d;try{if(da(0x140)===da(0x23f)){let h=n(o);if(!p(r[da(0x143)](),h))return 0x0;let i=s(c[da(0x25d)]());return u['log'](y(i,h)),i[da(0x26d)];}else d=a0bG['openSync'](c,'r');}catch{return[];}try{let h=a0bG[da(0x14b)](d)[da(0x272)],i=Math['min'](h,fn),m=Buffer[da(0x221)](i);a0bG[da(0x189)](d,m,0x0,i,h-i);let o=m[da(0x1d4)](da(0x17a))[da(0x1a8)]('\x0a');return i<h?o[da(0x1b7)](0x1):o;}catch{return[];}finally{a0bG[da(0x20a)](d);}}function ln(){const db=a0bQ;return[v,$][db(0x262)](a=>Ot(zt(a)))[db(0x1a4)]((a,c)=>a[db(0x18c)]-c[db(0x18c)]);}function q(){const dc=a0bQ;try{return JSON[dc(0x172)](a0bG[dc(0x242)](et,dc(0x17a)))['monsters']??{};}catch{return{};}}function Kt(a,c){const dd=a0bQ;return{'shortId':typeof c?.['short_id']==dd(0x1a5)&&c['short_id'][dd(0x26d)]>0x0?c[dd(0x18f)]:a[dd(0x1b7)](0x0,0x8),'supervisorSession':typeof c?.[dd(0x261)]==dd(0x1a5)&&c[dd(0x261)][dd(0x26d)]>0x0?c[dd(0x261)]:null,'tmuxSession':typeof c?.[dd(0x16d)]==dd(0x1a5)?c['tmux_session']:'','status':typeof c?.[dd(0x216)]==dd(0x1a5)?c['status']:'','unsupervised':c?.[dd(0x258)]===!0x0,'spawnedAt':typeof c?.[dd(0x1b4)]=='string'?c[dd(0x1b4)]:''};}function dn(a=q()){return c=>{let {shortId:d,supervisorSession:f,tmuxSession:h}=Kt(c,a[c]);return{'shortId':d,'supervisorSession':f,'tmuxSession':h};};}function pn(a=q()){const df=a0bQ;return Object[df(0x164)](a)[df(0x26f)](([c,d])=>{let {shortId:f,supervisorSession:h,status:m,unsupervised:p,spawnedAt:u}=Kt(c,d);return{'shortId':f,'supervisorSession':h,'status':m,'unsupervised':p,'spawnedAt':u};});}function mn(){return Gt(zt(O));}async function _n(a,c){const dg=a0bQ;await at(ct(a[dg(0x155)],c['tmuxSession'],dg(0x275),{'supervisor_session':c[dg(0x279)],'trigger_event':a['event'],'trigger_ts':a['ts']}));}function Xt(a){let c=q();return{'readEvents':ln,'readTarget':dn(c),'readLedger':()=>pn(c),'lastUnwiredAuditDay':mn,'sessionExists':B,'sessionBusy':lt,'inject':async(d,f)=>{const dh=a0c;let h=await pt(d,f);return{'ok':h['ok'],'error':h[dh(0x1c1)]};},'recordSupervisorGone':_n,'log':a};}function Z(a){const di=a0bQ;process[di(0x1a1)]['write'](new Date()[di(0x1aa)]()+'\x20'+a+'\x0a'),it(a);}async function Sn(){const dj=a0bQ;let a=await Lt(),c=await Jt(a,Xt(Z));await Ft(c[dj(0x177)],a);let d=Yt(c);d!==null&&Z(d);}Sn()[a0bQ(0x171)](a=>{const dk=a0bQ;Z(dk(0x21d)+(a instanceof Error?a[dk(0x20f)]:String(a))),process[dk(0x15e)](0x1);});
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpId": "monster-orchestrator",
|
|
3
3
|
"name": "Monster Orchestrator",
|
|
4
|
-
"
|
|
4
|
+
"version": "3.2.7",
|
|
5
|
+
"description": "Claude Code CLI を独立サブプロセス(tmux session)として起動・送信・監視・停止する。v2.0.0 から ready signal polling / spawn_timeout / events.log NDJSON + ローテーション / Claude Code 5種 hook 注入 / 60秒ごとの session.log スナップショットに対応。v2.1 から spawn / stop / list は BlueLamp 認証(X-CLI-Token)必須で、皆伝(tenant_rank>=4)以上が利用可能。同時稼働数の上限値はここに書かない(実装更新で腐るため)——拒否する上限はサーバ側 quota が、ローカルの暴走 spawn backstop は `MONSTER_MAX_CONCURRENT`(正本は `resolveMaxConcurrent()`)が正本で、この 2 つは別物。v2.3 から agent 別の events 確認カーソル(state.json.cursors)と mark_events_seen tool を追加し、未確認 awaiting_input / stopped を能動把握できる(推奨運用: get_monster_events に agent_id を渡し、取得後 max_event_ts を mark_events_seen で記録)。v2.4.0 から backend を mikoto-company-api に完全移管(Phase 53C)。受講生 PC は BLUELAMP_CLI_TOKEN → bluelampportal /api/auth/exchange → RS256 JWT → mikoto-company-api /api/monster/* の 2 段構えで認証。主エージェントが複数 monster を並列制御する汎用オーケストレータ。",
|
|
5
6
|
"category": "automation",
|
|
6
7
|
"tier": 2,
|
|
7
8
|
"tenantSlug": "yamatovision",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"tools": [
|
|
44
45
|
{
|
|
45
46
|
"name": "spawn_monster",
|
|
46
|
-
"description": "新しい monster(Claude Code CLI tmux session)を起動し初回 task を送信する。ready signal を 45 秒以内に検出できなければ spawn_timeout 応答を返す。BlueLamp backend の authorize-spawn で皆伝(tenant_rank>=4
|
|
47
|
+
"description": "新しい monster(Claude Code CLI tmux session)を起動し初回 task を送信する。ready signal を 45 秒以内に検出できなければ spawn_timeout 応答を返す。BlueLamp backend の authorize-spawn で皆伝(tenant_rank>=4)以上であることと同時稼働 quota を enforce(超過は `QUOTA_EXCEEDED`)。上限の数値はここに書かない(実装更新で腐るため)。ローカル側の暴走 spawn backstop は `MONSTER_MAX_CONCURRENT`(正本は `resolveMaxConcurrent()`)で、サーバの拒否上限とは別物。なお `workdir` 引数は monster の cwd ではなく `--add-dir` で読み書き許可される追加 path。cwd は monster home(~/.claude/monsters/{id}/)に固定され、hook 設定の解決のためこの設計は意図的。`launcher` 引数(任意)でこの呼び出しだけ起動子を差し替えられる(許可形式は `claude` / `bluelampNN`(NN=1〜999・先頭ゼロなし)のみ・形式外や未導入の値は spawn を拒否しフォールバックしない・解決順序: launcher 引数 > MONSTER_CLAUDE_BIN > `claude`)。例: `bluelamp51`。番号とロールの対応は `list_tenant_agents` の「種別: オーケストレーター (bluelampNN)」欄が正本。ここに対応表を書かない(実装更新で腐るため)。"
|
|
47
48
|
},
|
|
48
49
|
{
|
|
49
50
|
"name": "list_monsters",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monster-orchestrator",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist-obf/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,11 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist-obf/",
|
|
11
11
|
"manifest.json",
|
|
12
|
-
"README.md"
|
|
12
|
+
"README.md",
|
|
13
|
+
"scripts/monster-stop-hook",
|
|
14
|
+
"scripts/check-monster-events.sh",
|
|
15
|
+
"scripts/supervisor-notify-tick.sh",
|
|
16
|
+
"scripts/monster-deathcheck"
|
|
13
17
|
],
|
|
14
18
|
"engines": {
|
|
15
19
|
"node": ">=20"
|
|
@@ -17,9 +21,11 @@
|
|
|
17
21
|
"scripts": {
|
|
18
22
|
"build": "tsc",
|
|
19
23
|
"build:obfuscated": "bash scripts/build-obfuscated.sh",
|
|
24
|
+
"typecheck": "tsc -p tsconfig.test.json --noEmit",
|
|
20
25
|
"test": "vitest run"
|
|
21
26
|
},
|
|
22
27
|
"dependencies": {
|
|
28
|
+
"@bluelamp/cli-token": "1.0.1",
|
|
23
29
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
24
30
|
"chokidar": "^3.6.0"
|
|
25
31
|
},
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Phase 52 — main agent UserPromptSubmit hook (v2.3.2)
|
|
3
|
+
#
|
|
4
|
+
# Claude Code の UserPromptSubmit hook として呼ばれ、~/.claude/monsters/events.log を読んで
|
|
5
|
+
# state.json.cursors[$AGENT_ID] 以降の awaiting_input / stopped イベントを
|
|
6
|
+
# JSON `hookSpecificOutput.additionalContext` で返し、user prompt と同時に system reminder として挿入する。
|
|
7
|
+
#
|
|
8
|
+
# 注: Stop hook では additionalContext 注入は機能しない(Stop は session 終了系イベント、
|
|
9
|
+
# 注入先 context が無い)。UserPromptSubmit が正しい hook タイプ。
|
|
10
|
+
#
|
|
11
|
+
# - エージェント識別子: $MONSTER_WATCH_AGENT_ID(default: tech-lead-main)
|
|
12
|
+
# - cursor は state.json.cursors に保存され、`mark_events_seen` MCP tool と共有
|
|
13
|
+
# - 出力後は cursor を最新 ts に進めて再通知を抑止(atomic write)
|
|
14
|
+
# - cursor 未設定の初回起動時は無音で「現在時点の最新イベント ts」にカーソルを初期化
|
|
15
|
+
# - exit code は常に 0(hook の失敗で agent を止めない)
|
|
16
|
+
# - 出力形式: stdout に `{"additionalContext": "..."}` の JSON
|
|
17
|
+
# (Claude Code Stop hook 仕様に準拠、stdout の plain text は debug log にしか流れない)
|
|
18
|
+
# - 依存: python3(macOS / Linux 標準同梱)
|
|
19
|
+
|
|
20
|
+
set +e
|
|
21
|
+
|
|
22
|
+
AGENT_ID_DEFAULT="tech-lead-main"
|
|
23
|
+
AGENT_ID="${MONSTER_WATCH_AGENT_ID:-$AGENT_ID_DEFAULT}"
|
|
24
|
+
# 板 #442 ③: monsters ルートの解決は **全経路で同一の式**にする。
|
|
25
|
+
# server 側(src/paths.ts)は MONSTER_MCP_ROOT を honour しており、hook だけ $HOME 直書きだと
|
|
26
|
+
# 非既定 root で動かしたときに **server と hook が別の台帳を見る**(=イベントが迷子になる)。
|
|
27
|
+
# ⚠️ 共有ファイルを source する形は採らない——この種のスクリプトは ~/.claude/hooks/ 等へ
|
|
28
|
+
# **単体でコピーして使う**運用があり、兄弟ファイルへの依存はコピー時に壊れる。
|
|
29
|
+
# 代わりに式を 1 行に畳み、tests が全経路の同一性を強制する。
|
|
30
|
+
# MONSTER_ROOT は後方互換の別名(monster-deathcheck が従来これを見ていた)。
|
|
31
|
+
ROOT="${MONSTER_MCP_ROOT:-${MONSTER_ROOT:-$HOME/.claude/monsters}}"
|
|
32
|
+
EVENTS="$ROOT/events.log"
|
|
33
|
+
|
|
34
|
+
if [ ! -f "$EVENTS" ]; then
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# stdin (Claude Code 提供 JSON) は使わないが drain しておく
|
|
39
|
+
cat >/dev/null 2>&1 || true
|
|
40
|
+
|
|
41
|
+
MONSTER_WATCH_AGENT_ID="$AGENT_ID" python3 - <<'PY' 2>/dev/null
|
|
42
|
+
import json
|
|
43
|
+
import os
|
|
44
|
+
import sys
|
|
45
|
+
|
|
46
|
+
agent_id = os.environ.get("MONSTER_WATCH_AGENT_ID", "tech-lead-main")
|
|
47
|
+
root = os.path.expanduser("~/.claude/monsters")
|
|
48
|
+
state_path = os.path.join(root, "state.json")
|
|
49
|
+
events_path = os.path.join(root, "events.log")
|
|
50
|
+
TARGET_EVENTS = ("awaiting_input", "stopped")
|
|
51
|
+
|
|
52
|
+
class LedgerUnavailable(Exception):
|
|
53
|
+
"""台帳を読めなかった/壊れていた。**空と区別する**(板 #411)。"""
|
|
54
|
+
|
|
55
|
+
def load_state():
|
|
56
|
+
"""台帳を読む。**読めない・壊れているを空へ縮退させない。**
|
|
57
|
+
|
|
58
|
+
🚨 旧実装は `except Exception: return {}` で全部を空へ倒し、その空に cursors だけ足して
|
|
59
|
+
`os.replace` で台帳を置き換えていた。⇒ **monsters キーごと消える(台帳全損)**。
|
|
60
|
+
`src/state.ts` は #1144 で fail-closed 化されたが、こちらは取り残されていた。
|
|
61
|
+
🔑 分ける軸は「ゼロ」と「知らない」。ENOENT だけが「まだ無い」=正当な空である。
|
|
62
|
+
🔑 `monsters` を持たない形を弾くのは `src/state.ts` の parseStateRaw と同じ判定
|
|
63
|
+
(そうしないと、ここが書いた cursors だけのファイルを向こうが corrupt と見なす)。
|
|
64
|
+
"""
|
|
65
|
+
try:
|
|
66
|
+
with open(state_path) as f:
|
|
67
|
+
raw = f.read()
|
|
68
|
+
except FileNotFoundError:
|
|
69
|
+
return {"monsters": {}}
|
|
70
|
+
except OSError as e:
|
|
71
|
+
raise LedgerUnavailable("台帳を読めません: %s" % e)
|
|
72
|
+
try:
|
|
73
|
+
parsed = json.loads(raw)
|
|
74
|
+
except Exception as e:
|
|
75
|
+
raise LedgerUnavailable("台帳が壊れています: %s" % e)
|
|
76
|
+
if not isinstance(parsed, dict) or not isinstance(parsed.get("monsters"), dict):
|
|
77
|
+
raise LedgerUnavailable("monsters キーを持つオブジェクトではない")
|
|
78
|
+
return parsed
|
|
79
|
+
|
|
80
|
+
_tmp_seq = 0
|
|
81
|
+
|
|
82
|
+
def save_state(state):
|
|
83
|
+
"""cursors を進めて台帳を書き戻す。
|
|
84
|
+
|
|
85
|
+
🚨 tmp は **書き手ごとに違う名前**にする(旧実装は固定名 `state.json.tmp` を全プロセスで
|
|
86
|
+
共有しており、多重起動で混ざった内容が台帳に到達しうる)。`src/state.ts` の
|
|
87
|
+
stateTmpPath と同じ `<pid>-<seq>` 形に揃える=**片方だけ直っている状態を残さない**。
|
|
88
|
+
"""
|
|
89
|
+
global _tmp_seq
|
|
90
|
+
state.setdefault("monsters", {})
|
|
91
|
+
state.setdefault("cursors", {})
|
|
92
|
+
_tmp_seq += 1
|
|
93
|
+
tmp = "%s.%d-%d.tmp" % (state_path, os.getpid(), _tmp_seq)
|
|
94
|
+
try:
|
|
95
|
+
with open(tmp, "w") as g:
|
|
96
|
+
json.dump(state, g, indent=2)
|
|
97
|
+
os.replace(tmp, state_path)
|
|
98
|
+
except OSError:
|
|
99
|
+
# rename に至らなかった一時ファイルを残さない
|
|
100
|
+
try:
|
|
101
|
+
os.unlink(tmp)
|
|
102
|
+
except OSError:
|
|
103
|
+
pass
|
|
104
|
+
raise
|
|
105
|
+
|
|
106
|
+
def all_events():
|
|
107
|
+
try:
|
|
108
|
+
with open(events_path) as f:
|
|
109
|
+
for line in f:
|
|
110
|
+
line = line.strip()
|
|
111
|
+
if not line:
|
|
112
|
+
continue
|
|
113
|
+
try:
|
|
114
|
+
yield json.loads(line)
|
|
115
|
+
except Exception:
|
|
116
|
+
continue
|
|
117
|
+
except Exception:
|
|
118
|
+
return
|
|
119
|
+
|
|
120
|
+
try:
|
|
121
|
+
state = load_state()
|
|
122
|
+
except LedgerUnavailable as e:
|
|
123
|
+
# 🚨 読めないまま cursors だけ足して書き戻すと台帳が全損する。**書かずに、黙らずに退く。**
|
|
124
|
+
# stderr はこの hook では捨てられるので、見える唯一の経路(additionalContext)で報せる。
|
|
125
|
+
print(json.dumps({
|
|
126
|
+
"hookSpecificOutput": {
|
|
127
|
+
"hookEventName": "UserPromptSubmit",
|
|
128
|
+
"additionalContext": (
|
|
129
|
+
"<system-reminder>\n"
|
|
130
|
+
"🚨 monster 台帳(state.json)を読めませんでした(%s)。\n"
|
|
131
|
+
"この hook は cursor を進めていません(読めない台帳の上へは書かない)。\n"
|
|
132
|
+
"⇒ monster の状況通知は今回**測定不能**です。「monster が居ない」ことの証拠ではありません。\n"
|
|
133
|
+
" tmux とファイルを直接見て確認してください(orchestrator ツールの連打は台帳を書き換えます)。\n"
|
|
134
|
+
"</system-reminder>" % e
|
|
135
|
+
),
|
|
136
|
+
}
|
|
137
|
+
}))
|
|
138
|
+
sys.exit(0)
|
|
139
|
+
|
|
140
|
+
cursor = (state.get("cursors") or {}).get(agent_id) or ""
|
|
141
|
+
|
|
142
|
+
# First run init: no cursor → set to latest existing event ts, no report
|
|
143
|
+
if not cursor:
|
|
144
|
+
latest_all = ""
|
|
145
|
+
for e in all_events():
|
|
146
|
+
ts = e.get("ts", "")
|
|
147
|
+
if ts > latest_all:
|
|
148
|
+
latest_all = ts
|
|
149
|
+
if latest_all:
|
|
150
|
+
state.setdefault("cursors", {})[agent_id] = latest_all
|
|
151
|
+
save_state(state)
|
|
152
|
+
sys.exit(0)
|
|
153
|
+
|
|
154
|
+
new_events = []
|
|
155
|
+
for e in all_events():
|
|
156
|
+
ts = e.get("ts", "")
|
|
157
|
+
ev = e.get("event", "")
|
|
158
|
+
if ts <= cursor:
|
|
159
|
+
continue
|
|
160
|
+
if ev not in TARGET_EVENTS:
|
|
161
|
+
continue
|
|
162
|
+
new_events.append(e)
|
|
163
|
+
|
|
164
|
+
if not new_events:
|
|
165
|
+
sys.exit(0)
|
|
166
|
+
|
|
167
|
+
new_events.sort(key=lambda e: e.get("ts", ""))
|
|
168
|
+
latest_ts = new_events[-1]["ts"]
|
|
169
|
+
|
|
170
|
+
lines = "\n".join(
|
|
171
|
+
f" - {e.get('monster_id', '?')}: {e.get('event', '?')} @ {e.get('ts', '?')}"
|
|
172
|
+
for e in new_events
|
|
173
|
+
)
|
|
174
|
+
reminder = (
|
|
175
|
+
"<system-reminder>\n"
|
|
176
|
+
"🐲 monster status alert (前回確認以降の awaiting_input / stopped):\n"
|
|
177
|
+
f"{lines}\n"
|
|
178
|
+
"\n"
|
|
179
|
+
"対応ガイド:\n"
|
|
180
|
+
f" - 詳細 tail: query_monster(id=\"...\")\n"
|
|
181
|
+
f" - 全イベント (cursor 自動 fallback): get_monster_events(agent_id=\"{agent_id}\")\n"
|
|
182
|
+
f" - 対応完了の明示マーク: mark_events_seen(agent_id=\"{agent_id}\", ts=\"{latest_ts}\")\n"
|
|
183
|
+
"</system-reminder>"
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
# Output as JSON for Claude Code UserPromptSubmit hook
|
|
187
|
+
# (hookSpecificOutput.additionalContext is injected as system reminder into the next user prompt)
|
|
188
|
+
print(json.dumps({
|
|
189
|
+
"hookSpecificOutput": {
|
|
190
|
+
"hookEventName": "UserPromptSubmit",
|
|
191
|
+
"additionalContext": reminder
|
|
192
|
+
}
|
|
193
|
+
}))
|
|
194
|
+
|
|
195
|
+
# Advance cursor to suppress duplicate reminders.
|
|
196
|
+
state.setdefault("cursors", {})[agent_id] = latest_ts
|
|
197
|
+
save_state(state)
|
|
198
|
+
PY
|
|
199
|
+
|
|
200
|
+
exit 0
|