monster-orchestrator 3.2.4 → 3.2.6
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 +6 -4
- package/dist-obf/index.js +1 -1
- package/dist-obf/manifest.json +1 -0
- package/dist-obf/package.json +13 -2
- package/dist-obf/supervisor-notify-tick.js +1 -1
- package/manifest.json +1 -0
- 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.6",
|
|
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": "8aeb215",
|
|
41
|
+
"builtAt": "2026-08-27T02:31:17Z",
|
|
42
|
+
"srcSha256": "71ed4ac54ec5d2d824f9d2f74dced1b037b0771280b9527697d112ac61506d17"
|
|
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(0xf9))/0x1*(-parseInt(aN(0x1ab))/0x2)+-parseInt(aN(0x1ac))/0x3*(parseInt(aN(0xfd))/0x4)+-parseInt(aN(0x1fb))/0x5+parseInt(aN(0x184))/0x6*(parseInt(aN(0x1cd))/0x7)+-parseInt(aN(0x1fc))/0x8*(parseInt(aN(0x1b0))/0x9)+parseInt(aN(0x13a))/0xa*(-parseInt(aN(0x123))/0xb)+parseInt(aN(0x156))/0xc;if(i===c)break;else e['push'](e['shift']());}catch(l){e['push'](e['shift']());}}}(a0a,0x9eb70));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(0x1a7)]>0x0?j:a0aE[a0aO(0x1e4)](a0aD[a0aO(0x17a)](),a0aO(0x1eb),'monsters'),X=a0aE[a0aO(0x1e4)](h,a0aO(0x1e3)),qe=a0aE[a0aO(0x1e4)](h,a0aO(0x1c6)),g=a0aE['join'](h,'events.log'),A=a0aE['join'](h,a0aO(0x1bb)),R=a0aE[a0aO(0x1e4)](h,a0aO(0x1de)),K=0xa*0x400*0x400,Ht=0x5*0x400*0x400,N=a0aE[a0aO(0x1e4)](h,a0aO(0x183)),T=N+'.lock',E=a0aE['join'](h,a0aO(0x179)),W=E+'.1',Z=0x2*0x400*0x400;function Ct(){try{if(a0aB['statSync'](E)['size']<Z)return;a0aB['renameSync'](E,W);}catch{}}function Q(a){const aP=a0aO;let c=new Date()[aP(0x12c)]()+'\x20'+a+'\x0a';try{if('FPZdj'!==aP(0x168))a0aB['mkdirSync'](a0aC['dirname'](E),{'recursive':!0x0}),Ct(),a0aB[aP(0xf3)](E,c,aP(0x177));else return i[aP(0xe8)](l)[aP(0x10c)](([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};});}catch{}}import*as a0aF from'node:fs';import*as a0aG from'node:fs';import*as a0aH from'node:fs/promises';function Ut(){const aQ=a0aO;a0aG[aQ(0x116)](h,{'recursive':!0x0}),a0aG[aQ(0xe3)](g)||a0aG['writeFileSync'](g,'',aQ(0x177));}async function Vt(){const aR=a0aO;try{if((await a0aH[aR(0xe6)](g))[aR(0x1b5)]<K)return!0x1;}catch{return aR(0xf7)===aR(0xf7)?!0x1:i['min'](0x64+l['floor'](n/0x4),0x5dc);}try{return a0aG['existsSync'](R)&&await a0aH[aR(0x1da)](R),a0aG[aR(0xe3)](A)&&await a0aH[aR(0x113)](A,R),await a0aH[aR(0x113)](g,A),await a0aH[aR(0x13d)](g,'',aR(0x177)),!0x0;}catch{return aR(0x13e)==='cBsWa'?typeof i==aR(0xf1)&&l[aR(0x149)](n):!0x1;}}async function tt(a){const aS=a0aO;Ut(),await Vt();let c=JSON[aS(0x1f0)](a)+'\x0a';await a0aH['appendFile'](g,c,aS(0x177));}function et(a,c,i,l={}){const aT=a0aO;return{'ts':new Date()[aT(0x12c)](),'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['/opt/homebrew/bin/tmux',aU(0x1ad)])try{if(a0aK[aU(0xe3)](c))return c;}catch{}return'tmux';}var I=Yt(),M=class extends Error{},L=class extends M{constructor(a){const aV=a0aO;super(aV(0x127)+I+aV(0x107)+String(a)),this[aV(0xf6)]=aV(0x1ba);}},P=class extends M{constructor(a){const aW=a0aO;super(aW(0x14a)+I+',\x20TMUX='+(process.env.TMUX?'\u3042\u308A':'\u306A\u3057')+aW(0x1c3)+(process.env.TMUX_TMPDIR??aW(0x11a))+aW(0x11b)+a),this[aW(0xf6)]='TmuxServerUnreachableError';}};function zt(a){const aX=a0aO;let c=a?.['code'];return c===aX(0x112)||c===aX(0x197)||c===aX(0x13f);}function Xt(a){const aY=a0aO;let c=a,i=typeof c?.[aY(0x1d9)]==aY(0xf1)&&c['stderr'][aY(0x1a7)]>0x0?c[aY(0x1d9)]:String(c?.[aY(0x181)]??a);return st(i)[aY(0x1e0)]();}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(0x1c5)](Wt,'')[aZ(0x1c5)](/\r/g,'');}async function F(a){const b0=a0aO;try{return await $(I,[b0(0x13c),'-t',a]),!0x0;}catch(c){if(b0(0xfa)!==b0(0xfa))return i(l(n));else{if(zt(c))throw new L(c);let l=Xt(c);if(Kt[b0(0xe5)](l))return!0x1;throw new P(l);}}}var Zt=/esc to interrupt/i;async function rt(a){const b1=a0aO;let c=await ot(a,0x32);return c['trim']()[b1(0x1a7)]===0x0?!0x0:Zt['test'](c);}async function ot(a,c){const b2=a0aO;try{let {stdout:i}=await $(I,[b2(0x15c),'-t',a,'-p','-S','-'+c]);return st(i);}catch{return'';}}function qt(a){const b3=a0aO;return Math[b3(0xf4)](0x64+Math[b3(0x1d2)](a/0x4),0x5dc);}function a0c(a,b){a=a-0xe2;const c=a0a();let d=c[a];if(a0c['aVYJXI']===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['blZLHd']=e,a0c['gLqoLz']={},a0c['aVYJXI']=!![];}const f=c[0x0],g=a+f,h=a0c['gLqoLz'][g];return!h?(d=a0c['blZLHd'](d),a0c['gLqoLz'][g]=d):d=h,d;}async function it(a,c){const b4=a0aO;try{let i=c[b4(0x1c5)](/\n+$/,'');await $(I,[b4(0x176),'-t',a,'-l',i]);let l=qt(i['length']);return await new Promise(p=>setTimeout(p,l)),await $(I,[b4(0x176),'-t',a,b4(0x15b)]),await new Promise(p=>setTimeout(p,0xc8)),await $(I,[b4(0x176),'-t',a,'Enter']),{'ok':!0x0,'bytes':Buffer[b4(0x125)](i,'utf8')};}catch(o){return{'ok':!0x1,'bytes':0x0,'error':o?.[b4(0x1d9)]||o?.['message']||b4(0x1dc)};}}var B=[a0aO(0x1b3),a0aO(0x135)],ct='\u3010orchestrator\u3011',Qt=a0aO(0x196),ut=a0aO(0x1e6);function te(a){const b5=a0aO;if(typeof a!=b5(0xf1))return null;let c=a[b5(0x10a)]()[b5(0x1c5)](/[^0-9a-f]/g,'');return c[b5(0x1a7)]===0x0?null:c[b5(0x1ec)](0x0,0xc);}function ee(a){const b6=a0aO;return typeof a==b6(0xf1)&&B[b6(0x149)](a);}function ft(a){const b7=a0aO;if(typeof a!=b7(0xf1))return null;let c=Date[b7(0x1d8)](a);if(!Number[b7(0x194)](c))return null;let i=new Date(c),l=String(i['getHours']())[b7(0x1c7)](0x2,'0'),p=String(i[b7(0x161)]())['padStart'](0x2,'0');return l+':'+p;}function ne(a){const b8=a0aO;let c=te(a[b8(0x124)]),i=ft(a['ts']);return!c||!i||!ee(a[b8(0x1b9)])?null:b8(0x173)+c+'\x20が\x20'+a[b8(0x1b9)]+'('+i+')';}function lt(a){const b9=a0aO;let c=[];for(let i of a){if(b9(0x166)!==b9(0x1a6)){let l=ne(i);l&&c[b9(0xe7)](l);}else return!0x1;}return c[b9(0x1a7)]===0x0?null:''+ct+c['join']('\u3001')+Qt;}var se=new RegExp(a0aO(0x1c9)),re=['\u627F\u8A8D','\u627F\u8AFE','\u4E86\u627F','\u8A31\u53EF','\u8A8D\u53EF','\u8A31\u8AFE','\u88C1\u5B9A','\u6C7A\u88C1','GO','\u30B4\u30FC','\u30DE\u30FC\u30B8','\u30BF\u30B0',a0aO(0x18d),a0aO(0x12e),'\u672C\u756A','\u53EF',a0aO(0x17f),a0aO(0x16f),a0aO(0x163),a0aO(0xed),'\u304B\u307E\u308F\u306A\u3044',a0aO(0x174),'\u554F\u984C\u306A\u3044',a0aO(0x1f7),/\b(?:ok|okay|go|approve[ds]?|approval|authoriz(?:e|ed|ation)|merge[ds]?|tag|release|deploy|greenlight)\b/i];function k(a){const ba=a0aO;let c=[];for(let i of re){if(ba(0xe4)===ba(0x1b4))return{'ts':new i()[ba(0x12c)](),'monster_id':o,'event':p,'session':r,'meta':s};else{if(typeof i==ba(0xf1)){a[ba(0x149)](i)&&c[ba(0xe7)](i);continue;}let o=a['match'](i);o&&c[ba(0xe7)](o[0x0]);}}return c;}function b(a){const bb=a0aO;return k(a)[bb(0x1a7)]>0x0;}function pt(a){const bc=a0aO;if(!se['test'](a))return{'ok':!0x1,'reason':bc(0x1a0)};if(b(a))return{'ok':!0x1,'reason':bc(0x1b1)+k(a)[bc(0x1e4)](bc(0x1f8))};if(_t(a)){let c=H(a);return{'ok':!0x1,'reason':ht+':\x20'+c[bc(0x1e4)](bc(0x1f8))};}return{'ok':!0x0};}var dt=0x40,oe=new RegExp('^['+ut+a0aO(0x188));function at(a){const bd=a0aO;if(typeof a!='string')return null;let c=a[bd(0x1e0)]();return c[bd(0x1a7)]===0x0||c[bd(0x1a7)]>dt||!oe[bd(0xe5)](c)?null:c;}function mt(a){const bf=a0aO;let c=at(a[bf(0x146)]),i=at(a[bf(0x1b8)]),l=ft(a[bf(0x164)]);return!c||!i||!l?null:ct+bf(0x17d)+c+bf(0x1ed)+l+')。前景で\x20tmux\x20list-sessions\x20を撃ち、'+c+'\x20と自席\x20'+i+bf(0x1a9);}var D='['+ut+a0aO(0x136)+dt+'}',ie=new RegExp('^【orchestrator】監督\x20session\x20'+D+a0aO(0x1be)+D+a0aO(0xea)+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(0x185),'\u6D88\u6EC5','\u6D88\u5931',a0aO(0x198),'\u6B7B\u4EA1',a0aO(0x14b),a0aO(0x12f),a0aO(0x142),a0aO(0x103),'\u843D\u3061\u305F',a0aO(0x1c2),a0aO(0x171),a0aO(0x14d),a0aO(0x182),a0aO(0xef),'\u4E0D\u5728\u3067\u3059',a0aO(0x189),a0aO(0x1a1),/\b(?:is|has|was|been)\s+(?:gone|dead|missing|terminated|absent)\b/i];function St(a){const bg=a0aO;let c=[];for(let i of le){if(typeof i==bg(0xf1)){if(bg(0x1e8)!==bg(0xe9)){a[bg(0x149)](i)&&c[bg(0xe7)](i);continue;}else return c['includes'](i);}let l=a[bg(0x1cb)](i);l&&c[bg(0xe7)](l[0x0]);}return c;}function pe(a){const bh=a0aO;return St(a)[bh(0x1a7)]>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(0x17c),a0aO(0x1b2),'\u306A\u3055\u3044','\u3059\u3079\u3057','\u9858\u3046'],Se=[new RegExp(a0aO(0x160)+de[a0aO(0x1e4)]('|')+')(?:'+me[a0aO(0x1e4)]('|')+')'),/やめ(?:よ|ろ|て|ること|なさい)/,/\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 bi=a0aO;let c=[];for(let i of Se){if(bi(0x122)!==bi(0x122))c['closeSync'](i);else{let o=a[bi(0x1cb)](i);o&&c[bi(0xe7)](o[0x0]);}}return c;}function _t(a){return H(a)['length']>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 bj=a0aO;if(b(a))return{'ok':!0x1,'reason':bj(0x1b1)+k(a)[bj(0x1e4)](bj(0x1f8))};if(_t(a)){let c=H(a);return{'ok':!0x1,'reason':ht+':\x20'+c[bj(0x1e4)](bj(0x1f8))};}return pe(a)?{'ok':!0x1,'reason':bj(0x170)+St(a)[bj(0x1e4)](bj(0x1f8))+bj(0x187)}:fe[bj(0xe5)](a)?{'ok':!0x1,'reason':'has-session\x20\u3092\u6483\u305F\u305B\u3066\u3044\u308B\uFF08\u80CC\u666F\u30B7\u30A7\u30EB\u3067\u507D\u306E\x20DEAD\x20\u3092\u8FD4\u3059\u6E2C\u308A\u65B9\u3067\u3042\u308A\u3001\u8AA4\u308A\u304C\u5426\u5B9A\u5074\u306B\u3060\u3051\u51FA\u308B\u305F\u3081\u300E\u76E3\u7763\u304C\u6D88\u3048\u305F\u300F\u3092\u904E\u5270\u751F\u6210\u3059\u308B\u3002\u524D\u666F\u306E\x20tmux\x20list-sessions\x20\u3067\u6570\u3048\u3055\u305B\u308B\u3053\u3068\uFF09'}:ae[bj(0xe5)](a)?ce[bj(0xe5)](a)?ue[bj(0xe5)](a)?ie[bj(0xe5)](a)?{'ok':!0x0}:{'ok':!0x1,'reason':bj(0x129)}:{'ok':!0x1,'reason':bj(0x169)}:{'ok':!0x1,'reason':bj(0x1f5)}:{'ok':!0x1,'reason':bj(0x147)};}var _e=['user_prompt',a0aO(0x131)],he=a=>typeof a==a0aO(0x1a3)&&a!==null&&!Array[a0aO(0x143)](a);function ge(i){const bk=a0aO;let l=i['trim']();if(l['length']===0x0)return null;let p;try{if('cUwuQ'===bk(0x1f2))return{...l,'cursor_ts':i};else p=JSON[bk(0x1d8)](l);}catch{return null;}if(!he(p))return null;let {ts:r,monster_id:u,event:x}=p;if(typeof r!=bk(0xf1)||typeof u!=bk(0xf1)||u[bk(0x1a7)]===0x0||typeof x!='string')return null;let y=Date['parse'](r);return Number[bk(0x194)](y)?{'ts':r,'tsMs':y,'monsterId':u,'event':x}:null;}function Tt(a){const bl=a0aO;let c=[];for(let i of a){if(bl(0x117)===bl(0x117)){let l=ge(i);l&&c['push'](l);}else{let p=p[bl(0x1a7)]>0x0?r[s[bl(0x1a7)]-0x1]['ts']:new a()[bl(0x12c)]();return u[bl(0xf2)](bl(0x195)+p+'\x20に設定(過去の停止は注入しない)'),{'state':x(y,p),'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};}}return c;}function Te(a){const bm=a0aO;return B[bm(0x149)](a);}function ye(a){const bn=a0aO;return _e[bn(0x149)](a);}function yt(u,x){const bo=a0aO;let y=new Map(),O=new Map();for(let [a5,a6]of Object['entries'](x[bo(0xe8)])){if(bo(0x1cf)===bo(0x1c4))return a2[bo(0x12c)]()[bo(0x1ec)](0x0,0xa);else{y[bo(0x14f)](a5,a6[bo(0x1e7)]);let a8=Date[bo(0x1d8)](a6['last_injected_event_ts']);Number[bo(0x194)](a8)&&O[bo(0x14f)](a5,a8);}}let a0=new Set(),a1=new Map(),a2=new Map(),a3=null,a4=(a9,aa)=>{const bp=bo;let ab=a9[bp(0x10f)]+'\x00'+aa;a2[bp(0x14f)](ab,{'monsterId':a9[bp(0x10f)],'reason':aa,'count':(a2[bp(0x1fe)](ab)?.[bp(0x144)]??0x0)+0x1,'latestTs':a9['ts'],'latestEvent':a9[bp(0x1b9)]});};for(let a9 of[...u][bo(0x16d)]((aa,ab)=>aa[bo(0x12d)]-ab['tsMs'])){if(x[bo(0x134)]!==null&&a9['tsMs']<=x['cursorMs'])continue;if((a3===null||a9['tsMs']>a3)&&(a3=a9[bo(0x12d)]),ye(a9['event'])){if('yGPjY'==='yGPjY'){y[bo(0x1fe)](a9[bo(0x10f)])&&(y[bo(0x14f)](a9[bo(0x10f)],!0x1),a0[bo(0x1ff)](a9[bo(0x10f)]));continue;}else{if(typeof p!='string')return null;let ac=r[bo(0x1d8)](s);if(!u[bo(0x194)](ac))return null;let ad=new u(ac),af=x(ad[bo(0xe2)]())[bo(0x1c7)](0x2,'0'),ag=y(ad[bo(0x161)]())['padStart'](0x2,'0');return af+':'+ag;}}if(!Te(a9[bo(0x1b9)]))continue;if(y['get'](a9[bo(0x10f)])){a4(a9,'awaiting_reaction');continue;}let aa=O[bo(0x1fe)](a9[bo(0x10f)]);if(aa!==void 0x0&&a9[bo(0x12d)]<=aa){if(bo(0x153)===bo(0x153)){a4(a9,bo(0x14c));continue;}else return a3[bo(0x10e)]+O[bo(0x19b)]+u[bo(0x17b)]+u['unassigned']+x[bo(0x137)]+y[bo(0x1d7)]+O[bo(0x180)]+a0['blocked'];}a1[bo(0x14f)](a9[bo(0x10f)],a9);}return{'notify':[...a1[bo(0x1db)]()][bo(0x16d)]((ad,af)=>ad['tsMs']-af[bo(0x12d)]),'suppressed':[...a2[bo(0x1db)]()],'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 bq=a0aO;try{return process['kill'](a,0x0),!0x0;}catch(c){return c?.[bq(0xfb)]===bq(0x13f);}}var ve=0xc8,C=()=>({'version':0x1,'cursor_ts':null,'monsters':{}}),U=a=>typeof a==a0aO(0x1a3)&&a!==null&&!Array['isArray'](a);function we(a){const br=a0aO;if(!U(a))return{};let c={};for(let [i,l]of Object[br(0xe8)](a))U(l)&&typeof l[br(0x1b7)]=='string'&&(c[i]={'last_injected_event_ts':l[br(0x1b7)],'awaiting_reaction':l[br(0x1e7)]===!0x0,...typeof l[br(0x200)]==br(0xf1)&&l[br(0x200)][br(0x1a7)]>0x0?{'reverse_injected_supervisor':l['reverse_injected_supervisor']}:{}});return c;}function xe(a){const bs=a0aO;let c;try{bs(0x1af)!==bs(0x1f6)?c=JSON[bs(0x1d8)](a):i=l['parse'](n);}catch{return C();}return U(c)?{'version':0x1,'cursor_ts':typeof c[bs(0x11c)]==bs(0xf1)?c[bs(0x11c)]:null,'monsters':we(c[bs(0x114)])}:C();}var V=new WeakMap();async function It(){const bu=a0aO;try{return xe(await a0aL[bu(0x167)](N,'utf8'));}catch{return'UcuhD'==='OOmDz'?(e['kill'](i,0x0),!0x0):C();}}function a0a(){const c3=['Dg11EcdJGRxJG7ZJG5dJGAVNUyVJGyZJGORJGB7JGzVJGPpVViHIAw49','5AsX5yQ544gx44gF','ywXYzwfKEv9PBMPLy3rLza','44ge44gQ44ge','CMv2zxjZzuLUAMvJDgvK','C2v0','77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77Yj','iowpJEw/Nd0','BM9FDgfYz2v0x3nLC3nPB24','ug5bEvy','y2XVC2vtEw5J','ic8G5PAh6z2Ipq','nJa2mtm4mgPrtwfvtG','ioACQUMfJEE3MJ0','C2vSzG','iokgKIdKU4RLM57JGA/KVzxJGOlJGzFJGARJGytVViHZDxbLCNzPC29Yx2DVBMuG44kc6kIy6yYY44gx44gQ44ge77YjoIa','Dg11Ef9ZzxnZAw9U','rw50zxi','y2fWDhvYzs1Wyw5L','77YjiokaLcbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gU44gF44kb5RoO5ywL5ywi44gm54sH44gp44cb44gt44gU5ygC5Q2I44gV6kQW44gR44kc6ycA55+L44gv44km44gQ44ge77YiC3bHD24G5PMc44gRihn1CgvYDMLZB3jtzxnZAw9UioocKUA4OEobMEobK+obQo+8Iq','ugn2wey','C3vWzxj2AxnVCL9NB25LoIbZzxnZAw9Upq','kd86','z2v0twLUDxrLCW','suPyDuq','44gM44ge44ge','zgv0zwn0zwrbDa','y2f0y2G','rhPvqvG','CMvHzezPBgu','sgv4rem','5RIS5A6A5zMO44gU5A++54wN77Yi6iEQ5BIT44gU6kgm5PwW77Yj44ks5zcR44g+44gQ44ge77Yi5y+x44gr5OMl44gm44co55UJ552J44gm5Bgf44gQ44ge44cp44gO44co5RIS44kk5PA544gm5Aok44km44gM44ge44kl44cp44ks5yY65yIL44gN44gn44gQ44ge77Yj','ioobJca','BwTKAxi','AgDJD3i','C29YDa','ioobRUs4JEwCQoocKUMfJEs4IYbTB25ZDgvYpq','44gM6iMV44ge','55UJ552J44gU5lIn5zYO44ks5PAT5A6A44gx44gM44ge44kloIa','5Bgf44gQ44ge','77Yj44g46ycA55+LioAwH+MDOJ0','Bw9UC3rLCIa','44gx44gM44gp44gG44gv44ge','C3bHD25Lzf9HDa','C2vUzc1RzxLZ','DxrMoa','ios7TIaViowpSow4SZ0','C3vWzxj2AxnVCI1UB3rPzNKUBg9N','Ag9TzwrPCG','z29Uzq','44gz44kl44gt44gO','55UJ552JihnLC3nPB24G','rK5hsgC','44gM44ki44ge','CMvHy3rLza','BwvZC2fNzq','44ge44gQ44gp44gQ44gJ44gF','C3vWzxj2AxnVCI1UB3rPzNKUANnVBG','ntq3mZa5mNjzEerjCG','5RAi44gi44gF','ioMaHUwqKEobJEIMI+MaGEocIJ0','77Yi55UJ552J44gm5B6P5Rs744gx44gF5B6m44gR5Bgk44gp44gO5PAh6z2I44gm5zIy44gR44gQ44kl44cc5QsC55+L44gU5AcX5zgk44gO44gx44gM5PU444gp44gt44gO77Yj','xsSK','5lIn5zYO44gG','lNrTCa','khnWyxDUzwqG','CMvHzeXLzgDLCG','44oQ44oQ44o844k5','C3rKB3v0','zgvSAxzLCMvK','zxHPDa','Dw5HC3nPz25Lza','C3vWzxj2AxnVCL9ZzxnZAw9U','CMvHzfn5BMm','AxngAw5PDgu','5yID5zUEihrPy2S6ioocQ+odVoocVEodQ+ocKIa','44cc54Q25Owl44ks56k66kQn44gx44gM5A++5B+C44gB44ki','rufdq0vt','5Q2744kt44gG','5PEI44gR5RoO5ywL5RIi44g/44gU44kK44oz44oZ44oi44gU44gF44kb5yAn5RoO5ywL44gx44gQ44ge77YiWQCZlJmG5yAQ562j77Yj','C3rHDfn5BMm','C2TPChbLzej1C3K','8j+AQcdJGRVJG4pJGRFJG6FJG7pLRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','C2vZC2LVBG','ioobQ+IOREwUMU+8IoMbJUwoU+obRUwbNoATOUobR+AZQowfPEobL+obQUobHo+8Iq','CMvHzfrHCMDLDa','5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','5lIn5zYO44gm56k65A6A','ioobJowUN+IHJos4RsbTB25ZDgvYpq','B2jQzwn0','Dg9tDhjPBMC','iokgKIdNM6pNNApLRPVJGAVJGA/PGihJGONJGARJGytVViJPHy3KUiVJGBJJGA7PGiBLKjhJGy3PGjRNN6xJGA/LIkxOOyZJGAVLH7RJGOVVViK','CuLUuLq','BgvUz3rO','BgfZDfvUD2LYzwrbDwrPDerHEq','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOG','ig1VBNn0zxi9','mtCWmJa3oe5fBxjMAG','ntfIA1POsei','l3vZCI9SB2nHBc9IAw4VDg11Ea','yMXVy2TLza','rgn0CKS','oxvLuLLHuG','5O6i5QIP44ks5Osp5zgZ44gz44kl6kQE44ks5zcR44kaoIa','44gv44km44gF44gx','yxDHAxrPBMDFAw5WDxq','yM1zAK4','C2L6zq','zNn0yxrtEw5J','BgfZDf9PBMPLy3rLzf9LDMvUDf90CW','C3vIB3jKAw5HDgvtzxnZAw9U','zxzLBNq','vg11EfvUyxzHAwXHyMXLrxjYB3i','zxzLBNrZlMXVzY4X','5RoO5ywL6kAl6ycb44kkoIdMLOFPNAlJGPlNTytJGOhJGARJGyVJGApJGz8GBw9UC3rLCJ0','ios7TU+8IoACGoAwSca','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8IfSWltLDEZj9oLSWltLDEZj977Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','Bwf4u2nHBM5Lze1Z','iokaLca','C3vWzxj2AxnVCL9NB25L','5A2y5zYO44gx44gQ44ge','lcbutvvyx1rnuerjuJ0','C05vrg4','CMvWBgfJzq','C3rHDguUBg9JAW','CgfKu3rHCNq','5RoO5ywLoIbZzxnZAw9Upq','xUoaKg9Yy2HLC3rYyxrVCUoaKw1VBNn0zxiGwZaToweTzL17msWXmN0G44gmicG/oMf3ywL0Aw5Nx2LUChv0Fhn0B3bWzwqP77YiwZaTov17mN06wZaTov17mN3VViKOpZRJGifTB25ZDgvYifSWltLHlwzDEZeSmtj9ioobJcaOpZPHD2fPDgLUz19PBNb1DhXZDg9WCgvKkE+8IfSWltLDEZj9oLSWltLDEZj977YjksRJGilNIRBMHyVJGPlNORROQO3JGzFJGABLR77LV5ZJGzVJGOGK','8j+AQcdMS6JLHAxKUk3MRAi6ioAoIoAOQEocKUAeJ+wrS+obMEocI+IQNUocKUwqQ+ocGo+8Ia','Bwf0y2G','8j+AQcdPGiBLKjhJGy3MS6JLHAxKUk3MRAi6ioAwH+MDOUocKUE1HoocGEobQUobI+obO+obNYbTB25ZDgvYpq','n0X5tNrwwG','C3rHDgu','rNHesu8','Dwrnwvm','txf4uNK','zMXVB3i','CgLK','ioocKIa','Dw53AxjLza','ipcFMQGG6kAb5A++5yEMoIbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gUig1VBNn0zxiG44gm44ge44kl77Yi5ygC5Q2Ipq','C3vWChjLC3nLza','CgfYC2u','C3rKzxjY','Dw5SAw5R','DMfSDwvZ','Dg11EcbZzw5KlwTLExmGzMfPBgvK','igj1C3NLVOxJGAe9','zxzLBNrZlMXVzY4Y','Dg11EfnLC3nPB24','DhjPBq','77YiC2vZC2LVBIdLKi3JGyZLJ6/LPiNPG6JJGA4GywXSB3CTBgLZDcdJGPlPGjRJGONJGARJGytJGyVJGihMPjZNN6xMMylLIlVJGyZOQQ3JGOhJGARJGytVViK','A2v5CW','C3rHDguUANnVBG','AM9PBG','B0XYrg8','qs1Ays16mc05lL9akY0','yxDHAxrPBMDFCMvHy3rPB24','EM93zuC','5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','77YiBw9UC3rLCJ0','lMnSyxvKzq','C2XPy2u','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8Ia','wwXdCLK','u1vqrvjwsvnpuL9tvefurv9mt0nlx1rjtuvpvvq6ia','C3rYAw5NAwz5','ios7TIdIGjqG','zwX6swy','CMvHzezPBgvtEw5J','ywXSB2m','5y+x44gr5OMl44gR5yMn5PMV44gUihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGz/JGzVJGOVOOyZLI5xOPOhMSylJGPlLKkVJGB7JGARJGytVViJMS6JLHAxJGyZMUkZLRPRJGA7JGy3JGApJGyVJGzhJGAFJGA/JGARJGy/LGzZMRAlJGA7MOlNMI6dJGAVJGARJGApJGABJGzFJGB7JGyBVViK','B29ADNq','5BEU44gx5PsV44gi44gQ44ge','ic8G','ktOG5PYQ6ywn57EAia','77Yj4Ocuia','mte1mJG4nxLHzg1OuG','ndqYota3mMnyDg9UyG','lNn0ywXLlG','z2v0','ywrK','CMv2zxjZzv9PBMPLy3rLzf9ZDxbLCNzPC29Y','BvPctgi','zMLSDgvY','z2v0sg91CNm','zxHPC3rZu3LUyW','ruH5q08','DgvZDa','C3rHDa','ChvZAa','zw50CMLLCW','DfHSB08','ioobQoIhQUw4Rsa','55UJ552J44gm5yMn5zUE44gU6ycA55+L44gR44g+44gG5y+n5B+C44gx44gM44ge44gQ44ge44gF44kb5RoO5ywL44gx44gQ44ge77YiWQCZlJmG5yAQ562j77Yj','ioAkKEATOJ0','5QEl44kp44gQ44ge','DgfYz2v0','5lIn5zYO44gN44gc44kl','A2PJrfm','C3rYAw5N','Bg9N','yxbWzw5KrMLSzvn5BMm','BwLU','5y+n5B+C6kAZ5RISoIbTB25ZDgvYpq','BMfTzq','wLrvD1y','ioobJowTMowCQoobL+obQUobHcbTB25ZDgvYpq','mvHADNvwCq','ufPfrgW','y29Kzq','iokgKIdKU4RLM57JGA/PGiBLKjhJGy3MS6JLHAxJGzFJGARJGyq6ia','otqXnZj4runkA3K','AxrLBxm','C3rHDhvZ','C2TPChbLza','Dw5ZDxbLCNzPC2vK','zxjYB3i','5ygC5Q2I44gx44gF','8j+AQcdMNkRPHy3NT5O6ig1VBNn0zxi9','6ycg5zcr44gn5RoO5ywL6kAl6ycb44kkoIdPHy3KUiSGC2vZC2LVBJ0','8j+AQcdPGiBLKjhJGy3MS6JLHAxKUk3MRAi6ia','77Yj44ccuefuscdJGASGl29WDc9OB21LyNjLDY9IAw4G44gm54sH44geigXHDw5JAgqG562j44gl44kjioI1T+wlLEobLEocJoobPUobHoocI+wpR+IdVEAaP+obJoobGUocIUobVUobMEoaGK1ptLnurvjFve1vwf9csu4G44gN5PIo56s65OYh5A6A44gN44gn44g+44gz44cc5y6F5zUGoIa','CMfUzg9T','6ycg5zcr44gn5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','Dg9mB3DLCKnHC2u','8j+AQca','BwfW','77Yj44gm5A6F5zYO44gx44gQ44geiokaLcdNN6xJGONJGzVJGOVNM7JMIyVJGyZLSyxJGARJGytVViHYzwnVBMnPBguG44gm5y+W5BIZ44ks55U044gz77Yj','Aw5Qzwn0zwq','Bw9UC3rLCKLK','CMvHzev2zw50CW','CMvHC29U','ru5pru5u','CMvUyw1L','Bw9UC3rLCNm','BM93','BwTKAxjtEw5J','wLzUENK','8j+AQcdPHy3KUiSGC2vZC2LVBIdJGA7LRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','77Yjic8G5PAh6z2Ipq','5PYQ6kIT5A6A','77Yj44cc8j+AQcaQkUocU+odG+ocT+odP+odS+obJoEeOEobHoobK+obQoobRUIOVoAlOoobQ+obR+obQUocIUobVUobM+ocKYOQ77Yi5RIS5A6A5lIn6io977Yj44cc5zg844gZ5yE644gx5ywd44gU55kW5Akd44gm5A++6kMX44k344kN44oR44gO6ygv44gg44k944kX44od44oi44ks6kAl44gM44ge44kl5y+V6io95OcN44gm44gc44kk44g+44gz44cc6kMZ57sWoIa','y3vYC29Yx3rZ','Bgf0zxn0rxzLBNq','Bgf0zxn0vhm','D29mCuC','zNjVBuvUDhjPzxm','DfbiwK8','wufQAwm','ndC3mtC3ohrUEvLjDa','C2HVCNrjza','yNL0zuXLBMD0Aa','Aw5Qzwn0','Dg11EcdJGPlLRP/OOyZJGAFJGy3JGB7JGzVJGPpVViHIAw49','BxmG5lUL5yAf44gR5y+w5B6x44gN44gn44gQ44gl44gJ44gF','6ycg5zcr44gn44gU5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','ioobQ+EBO+EDO+obJowpJEw/NoobL+obNYdIGjqG5OQr5Q2I44ks6kEJ6zMK77Yi5QYH44gU5ygC5Q2I44gl44kj5yAn44gZ5RoO5ywL44gz44kl77Yj','C2HVCNrFAwq','Dg9ju09tDhjPBMC','DhnnCW','44oh44ox44oT44kK','57wc5lQg44gx44gF','ywXYzwfKEv9UB3rPzMLLza','C2vZC2LVBL9LBMq','CMv2zxjZzuzHAwXLza','CMv2zxjZzujSB2nRzwq','y3vYC29Ytxm','C3rVChbLza','xxSXla','zMfPBgvK','ioMaHUwqKEobJEs4JEMbLd0','yNvZEq','mtbNuKjSzwG','C2vZC2LVBKv4Axn0CW','AgfZlxnLC3nPB24','D3jPDgvgAwXL','s3Drzuq','rvbfuK0','ioAZQowfPEs4REATOJ0','C3bSAxq','6yca5BIT44gx44gF','AxnbCNjHEq','y291BNq','C3bHD25Lzef0','C3vWzxj2AxnVCLnLC3nPB24','5QsC55+L5PMc5yI777YiseG6tu3VViNJGPlLKkVJGB7JGARJGytVViJLJ5FJGzhMIyVJGyZPGjRNN6xJGA7LJ6tJGzxJGPlLIktMLQ3JGAFJGy3JGARJGytVViK','zxzLBNruCW','Aw5JBhvKzxm'];a0a=function(){return c3;};return a0a();}async function At(){let a=await It();return V['set'](a,structuredClone(a)),a;}var vt=0x0;function Oe(){const bv=a0aO;return vt+=0x1,N+'.'+process[bv(0x1d3)]+'-'+vt+bv(0x18a);}var wt=0x2710,xt=0x3a98;function Ie(a){return new Promise(c=>setTimeout(c,a));}async function Ae(a){const bw=a0aO;await a0aL[bw(0x16b)](a0aM['dirname'](N),{'recursive':!0x0});let c=Date[bw(0x115)]()+xt;for(;;){try{await a0aL[bw(0x13d)](T,JSON[bw(0x1f0)]({'pid':process['pid'],'ts':Date['now']()}),{'flag':'wx'});break;}catch(l){if(bw(0xf0)!==bw(0x1ee)){if(l?.['code']!=='EEXIST')throw l;}else return e[bw(0x1c5)](i,'')['replace'](/\r/g,'');}let i=!0x1;try{let p=JSON[bw(0x1d8)](await a0aL[bw(0x167)](T,bw(0x177)));i=typeof p?.['pid']=='number'&&(!Et(p[bw(0x1d3)])||Date[bw(0x115)]()-Number(p['ts']??0x0)>wt);}catch{try{let r=await a0aL[bw(0xe6)](T);i=Date[bw(0x115)]()-r['mtimeMs']>wt;}catch{}}if(i){let u=T+bw(0x1fd)+process[bw(0x1d3)];await a0aL[bw(0x113)](T,u)[bw(0x165)](()=>{}),await a0aL['rm'](u,{'force':!0x0})['catch'](()=>{});continue;}if(Date[bw(0x115)]()>c)throw new Error(bw(0x1ef)+T+bw(0x1d4)+xt+bw(0x128));await Ie(0x5+Math[bw(0x108)]()*0x14);}try{return await a();}finally{try{JSON[bw(0x1d8)](await a0aL[bw(0x167)](T,bw(0x177)))?.[bw(0x1d3)]===process[bw(0x1d3)]&&await a0aL['rm'](T,{'force':!0x0});}catch{}}}function Ne(i,l,p){const bx=a0aO;let u={'version':0x1,'cursor_ts':i[bx(0x11c)],'monsters':{...i['monsters']}};l['cursor_ts']!==p['cursor_ts']&&(u['cursor_ts']=p[bx(0x11c)]);let x=new Set([...Object[bx(0x1e2)](l[bx(0x114)]),...Object[bx(0x1e2)](p[bx(0x114)])]);for(let y of x){let O=l[bx(0x114)][y],a0=p[bx(0x114)][y];JSON[bx(0x1f0)](O)!==JSON[bx(0x1f0)](a0)&&(a0===void 0x0?delete u[bx(0x114)][y]:u[bx(0x114)][y]=a0);}return u;}async function Nt(a,c){await Ae(async()=>{const by=a0c;let i=V[by(0x1fe)](c??a),l=i?Ne(await It(),i,a):a,p=JSON[by(0x1f0)](l,null,0x2)+'\x0a',r=Oe();try{await a0aL[by(0x13d)](r,p,'utf8'),await a0aL[by(0x113)](r,N);}catch(u){if(by(0x1e5)!==by(0x1e5)){let y=i(l);return{'ok':!0x1,'reason':n+':\x20'+y[by(0x1e4)](by(0x1f8))};}else throw await a0aL['rm'](r,{'force':!0x0})[by(0x165)](()=>{}),u;}V[by(0x14f)](a,structuredClone(a));});}function $t(a,c,i){const bz=a0aO;return{...a,'monsters':{...a[bz(0x114)],[c]:{...a[bz(0x114)][c],'last_injected_event_ts':i,'awaiting_reaction':!0x0}}};}function kt(a,c,i,l){const bA=a0aO;let p=a[bA(0x114)][c];return{...a,'monsters':{...a[bA(0x114)],[c]:{'last_injected_event_ts':p?.[bA(0x1b7)]??l,'awaiting_reaction':p?.[bA(0x1e7)]??!0x1,'reverse_injected_supervisor':i}}};}function Rt(a,c){const bB=a0aO;let i=a[bB(0x114)][c];return!i||!i[bB(0x1e7)]?a:{...a,'monsters':{...a['monsters'],[c]:{...i,'awaiting_reaction':!0x1}}};}function G(a,c){return{...a,'cursor_ts':c};}function Mt(a){const bC=a0aO;let c=a[bC(0x11c)],i=Object[bC(0xe8)](a[bC(0x114)])[bC(0x202)](([,l])=>l['awaiting_reaction']||l[bC(0x200)]||c===null?!0x0:l[bC(0x1b7)]>c);return i[bC(0x16d)]((l,p)=>l[0x1][bC(0x1b7)]<p[0x1][bC(0x1b7)]?0x1:-0x1),{...a,'monsters':Object[bC(0x120)](i[bC(0x1ec)](0x0,ve))};}function $e(i,l){const bD=a0aO;let p=new Map(),r=[];for(let u of i){let x=l[bD(0x19f)](u['monsterId']);if(!x[bD(0x146)]){if(bD(0x201)!==bD(0x1d0)){r[bD(0xe7)](u);continue;}else{let a0=i(l);a0&&n[bD(0xe7)](a0);}}let y=p[bD(0x1fe)](x[bD(0x146)])??{'session':x[bD(0x146)],'items':[]};y['items'][bD(0xe7)]({'event':u,'target':x}),p[bD(0x14f)](x[bD(0x146)],y);}return{'groups':[...p['values']()],'unassigned':r};}function ke(a,c){const bE=a0aO;if(b(a)){let l=k(a);return c('🚨\x20注入中止:\x20授権を意味する語を含む('+l[bE(0x1e4)](bE(0x1f8))+')\x20/\x20文面='+JSON['stringify'](a)),!0x1;}let i=pt(a);return i['ok']?!0x0:(c('🚨\x20注入中止:\x20'+i[bE(0x111)]+bE(0x155)+JSON[bE(0x1f0)](a)),!0x1);}function Re(i,l,u){const bF=a0aO;let x=new Map(),y=new Map(),O=new Set();for(let {event:a0,target:a1}of i){if(bF(0x1d1)==='MjHKf')i=l[bF(0x1d8)](u);else{if(O['has'](a0[bF(0x10f)]))continue;O['add'](a0['monsterId']);let a3=a4=>{const bG=bF;y[bG(0x14f)](a0[bG(0x10f)],{'monsterId':a0[bG(0x10f)],'shortId':a1[bG(0x124)],'reason':a4});};if(u[a0[bF(0x10f)]]?.['reverse_injected_supervisor']===l){if(bF(0x17e)!=='FNGHg')return l!==i;else{a3(bF(0x130));continue;}}if(a1['tmuxSession'][bF(0x1a7)]===0x0){a3(bF(0x152));continue;}if(a1[bF(0x1df)]===l){a3(bF(0x158));continue;}x['set'](a0[bF(0x10f)],{'monsterId':a0[bF(0x10f)],'shortId':a1[bF(0x124)],'tmuxSession':a1[bF(0x1df)],'supervisorSession':l,'eventTs':a0['ts']});}}return{'targets':[...x[bF(0x1db)]()],'skipped':[...y['values']()]};}function Me(a,c){const bH=a0aO;let i=gt(a);return i['ok']?!0x0:(c(bH(0x106)+i[bH(0x111)]+bH(0x155)+JSON[bH(0x1f0)](a)),!0x1);}async function be(u,x,O,a0){const bI=a0aO;let a1={'state':O,'injected':0x0,'blocked':0x0,'failed':0x0},{targets:a2,skipped:a3}=Re(u['items'],u[bI(0x19d)],O[bI(0x114)]);a1[bI(0x1ae)]+=a3[bI(0x1a7)];for(let a4 of a3){if(a4[bI(0x111)]===bI(0x130))continue;let a5=a4[bI(0x111)]==='no_target_session'?'\u53F0\u5E33\u306B\x20tmux_session\x20\u304C\u7121\u304F\u6CE8\u5165\u5148\u304C\u6C7A\u307E\u3089\u306A\u3044':'\u914D\u4E0B\u81EA\u8EAB\u304C\u76E3\u7763\u3068\u3057\u3066\u8A18\u9332\u3055\u308C\u3066\u3044\u308B\uFF08\u81EA\u5DF1\u6CE8\u5165\u306B\u306A\u308B\uFF09';x[bI(0xf2)]('🚨\x20逆向き注入見送り:\x20monster='+a4[bI(0x124)]+'\x20supervisor_session='+u[bI(0x19d)]+bI(0x1c0)+a5);}for(let a6 of a2){let a7=mt({'supervisorSession':u[bI(0x19d)],'subordinateSession':a6[bI(0x1df)],'detectedAt':a0});if(a7===null){x[bI(0xf2)](bI(0x1cc)+a6[bI(0x124)]+'\x20supervisor_session='+JSON[bI(0x1f0)](u[bI(0x19d)])+'\x20自席='+JSON[bI(0x1f0)](a6[bI(0x1df)])+bI(0x1e1)),a1[bI(0x1ae)]+=0x1;continue;}if(!Me(a7,x[bI(0xf2)])){a1[bI(0x1ae)]+=0x1;continue;}let a8;try{a8=await x[bI(0x13b)](a6[bI(0x1df)]);}catch(aa){x[bI(0xf2)](bI(0x118)+a6[bI(0x1df)]+bI(0x1aa)+a6['shortId']+bI(0xfc)+String(aa)),a1['failed']+=0x1;continue;}if(!a8){if(bI(0x15e)===bI(0x121)){if(o[bI(0x19a)](a7)[bI(0x1b5)]<a6)return;a0['renameSync'](u,u);}else{x[bI(0xf2)](bI(0x105)+a6[bI(0x1df)]+bI(0x1ea)+a6[bI(0x124)]+bI(0x10d)),a1[bI(0x1ae)]+=0x1;continue;}}let a9=await x[bI(0x126)](a6[bI(0x1df)],a7);if(!a9['ok']){x[bI(0xf2)](bI(0x109)+a6[bI(0x1df)]+bI(0x1aa)+a6[bI(0x124)]+'\x20'+(a9[bI(0x102)]??'')),a1[bI(0x137)]+=0x1;continue;}a1[bI(0x1ce)]=kt(a1[bI(0x1ce)],a6[bI(0x10f)],a6[bI(0x146)],a6[bI(0x148)]),a1[bI(0x10e)]+=0x1,x[bI(0xf2)]('逆向き注入:\x20監督\x20session='+u[bI(0x19d)]+bI(0x16e)+a6['shortId']+'(session='+a6[bI(0x1df)]+bI(0x172)+JSON['stringify'](a7));}return a1;}var bt='\u672A\u914D\u7DDA\u76E3\u67FB',je=/未配線監査\((\d{4}-\d{2}-\d{2})\)/;function Le(a){const bJ=a0aO;return a['toISOString']()[bJ(0x1ec)](0x0,0xa);}function Pe(a){const bK=a0aO;return a[bK(0x202)](c=>c[bK(0xff)]==='running'&&!c[bK(0x146)]&&!c['unsupervised'])['map'](c=>({'shortId':c[bK(0x124)],'spawnedAt':c['spawnedAt']}));}function jt(a){let c=null;for(let i of a){let l=i['match'](je);l&&(c=l[0x1]);}return c;}function Fe(a,c){return a!==c;}function De(a,c){const bL=a0aO;if(a[bL(0x1a7)]===0x0)return bt+'('+c+'):\x20未配線\x200\x20件(稼働中の\x20monster\x20はすべて\x20supervisor_session\x20が記録されている)';let i=a['map'](l=>l[bL(0x124)]+bL(0x18b)+l[bL(0x145)]+')')[bL(0x1e4)](bL(0x1f8));return bL(0x10b)+bt+'('+c+bL(0x1f9)+a[bL(0x1a7)]+bL(0x1f1)+i+'\x20—\x20supervisor_session\x20未記録のため、この\x20monster\x20が止まっても誰にも通知されない(spawn\x20時に\x20supervisorSession\x20を渡すこと)';}function Be(a,c){const bM=a0aO;let i=Le(c);if(!Fe(a[bM(0x1a8)](),i))return 0x0;let l=Pe(a[bM(0x18c)]());return a[bM(0xf2)](De(l,i)),l[bM(0x1a7)];}function He(a,c){const bN=a0aO;return bN(0x104)+c[bN(0x124)]+bN(0x16a)+a[bN(0x1b9)]+'('+a['ts']+bN(0x15d);}async function Ce(i,l){const bO=a0aO;let p=i[bO(0xfe)][bO(0x10c)](a0=>a0[bO(0xee)]['shortId'])['join'](','),u;try{if(bO(0x11f)!=='IdQjF')u=await l[bO(0x13b)](i[bO(0x19d)]);else{let a1=n(o);return p(bO(0x1ca)+a1[bO(0x1e4)](bO(0x1f8))+bO(0x119)+r[bO(0x1f0)](s)),!0x1;}}catch(a1){return l['log'](bO(0x19c)+i[bO(0x19d)]+bO(0x1aa)+p+bO(0x159)+String(a1)),bO(0x100);}if(!u){for(let a2 of i[bO(0xfe)])await l['recordSupervisorGone'](a2[bO(0x1b9)],a2[bO(0xee)]);return l['log'](bO(0x15f)+i[bO(0x19d)]+bO(0xf8)+p+bO(0x1a5)),'gone';}if(await l['sessionBusy'](i[bO(0x19d)]))return l[bO(0xf2)]('busy\x20skip:\x20session='+i[bO(0x19d)]+bO(0x1a2)+p+bO(0x150)),bO(0x139);let x=i[bO(0xfe)]['map'](a3=>({'shortId':a3['target']['shortId'],'event':a3['event'][bO(0x1b9)],'ts':a3[bO(0x1b9)]['ts']})),y=lt(x);if(y===null)return l['log'](bO(0x1bc)+p),bO(0x100);if(!ke(y,l[bO(0xf2)]))return bO(0x100);let O=await l[bO(0x126)](i[bO(0x19d)],y);return O['ok']?(l[bO(0xf2)](bO(0x1c8)+i[bO(0x19d)]+'\x20monster='+p+'\x20文面='+JSON['stringify'](y)),bO(0x18f)):(l[bO(0xf2)](bO(0x1e9)+i[bO(0x19d)]+'\x20'+(O[bO(0x102)]??'')),bO(0x137));}function Ue(a,c,i){const bP=a0aO;let l=c['length']>0x0?c[c[bP(0x1a7)]-0x1]['ts']:new Date()[bP(0x12c)]();return i[bP(0xf2)](bP(0x195)+l+bP(0x19e)),{'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 Ve(a){const bQ=a0aO;return a[bQ(0x10e)]+a[bQ(0x19b)]+a['gone']+a[bQ(0x191)]+a[bQ(0x137)]+a[bQ(0x1d7)]+a[bQ(0x180)]+a[bQ(0x1ae)];}function Lt(a){const bR=a0aO;let c=a[bR(0x191)]>0x0||a[bR(0x1d5)]>0x0;if(!a['initialized']&&Ve(a)===0x0&&!c)return null;let i='tick\x20完了:\x20注入='+a['injected']+bR(0x1dd)+a[bR(0x19b)]+'\x20supervisor_gone='+a[bR(0x17b)]+'\x20対象外='+a['unassigned']+'\x20不達='+a[bR(0x137)]+bR(0xec)+a[bR(0x1d7)]+bR(0x151)+a['reacted']+bR(0x140)+a[bR(0x1ae)]+bR(0x157)+a[bR(0x1d5)]+'\x20逆向き注入='+a[bR(0x14e)]+bR(0x186)+a[bR(0x133)]+bR(0x138)+a['reverseFailed'];return c?i+bR(0x1d6)+a['unassigned']+bR(0x178)+a['unwired']+'\x20体)\x20—\x20監視網に穴が開いている':i;}function Ge(a,c){const bS=a0aO;let i=a[bS(0x111)]===bS(0x1e7)?bS(0xeb):bS(0x199);return'抑止:\x20monster='+c+'\x20の停止イベント\x20'+a[bS(0x144)]+bS(0x1bd)+a[bS(0x11d)]+'\x20'+a[bS(0x11e)]+bS(0x1fa)+i;}async function Pt(a0,a1){const bT=a0aO;let a2=new Date(),a3=Be(a1,a2),a4=a1[bT(0x110)]();if(a0[bT(0x11c)]===null)return{...Ue(a0,a4,a1),'unwired':a3};let a5=Date[bT(0x1d8)](a0[bT(0x11c)]),a6=yt(a4,{'cursorMs':Number[bT(0x194)](a5)?a5:null,'entries':a0[bT(0x114)]}),a7=a0;for(let ad of a6[bT(0x180)])a7=Rt(a7,ad),a1[bT(0xf2)](bT(0xf5)+a1[bT(0x19f)](ad)['shortId']+bT(0x12a));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===bT(0x18f)){aa['injected']+=af[bT(0xfe)]['length'];for(let ah of af[bT(0xfe)])a7=$t(a7,ah[bT(0x1b9)][bT(0x10f)],ah['event']['ts']);continue;}if(ag==='busy')aa[bT(0x19b)]+=af['items'][bT(0x1a7)];else{if(ag===bT(0x17b)){aa[bT(0x17b)]+=af['items']['length'];let ai=await be(af,a1,a7,a2[bT(0x12c)]());a7=ai[bT(0x1ce)],aa[bT(0x14e)]+=ai[bT(0x10e)],aa['reverseBlocked']+=ai[bT(0x1ae)],aa['reverseFailed']+=ai[bT(0x137)];}else ag===bT(0x137)?aa[bT(0x137)]+=af['items'][bT(0x1a7)]:ag===bT(0x100)&&(aa[bT(0x1ae)]+=af[bT(0xfe)]['length']);}}let ab=aa[bT(0x19b)]>0x0||aa['failed']>0x0||aa[bT(0x132)]>0x0;if(!ab&&a6[bT(0x1bf)]!==null){if(bT(0x162)===bT(0x162)){for(let aj of a6[bT(0x1d7)])a1['log'](Ge(aj,a1[bT(0x19f)](aj['monsterId'])['shortId']));for(let ak of a9)a1[bT(0xf2)](He(ak,a1[bT(0x19f)](ak[bT(0x10f)])));a7=G(a7,new Date(a6['maxScannedMs'])[bT(0x12c)]());}else{let am=a0[bT(0x114)][u],an=x['monsters'][y];O[bT(0x1f0)](am)!==a0[bT(0x1f0)](an)&&(an===void 0x0?delete a1[bT(0x114)][a2]:a3[bT(0x114)][a4]=an);}}let ac=a6['suppressed']['reduce']((am,an)=>am+an[bT(0x144)],0x0);return{'state':Mt(a7),'initialized':!0x1,'injected':aa[bT(0x10e)],'skippedBusy':aa['skippedBusy'],'gone':aa[bT(0x17b)],'unassigned':a9[bT(0x1a7)],'unwired':a3,'failed':aa[bT(0x137)],'suppressed':ab?0x0:ac,'reacted':a6[bT(0x180)]['length'],'blocked':aa[bT(0x1ae)],'reverseInjected':aa[bT(0x14e)],'reverseBlocked':aa[bT(0x133)],'reverseFailed':aa[bT(0x132)]};}var Je=0x200*0x400;function Ft(c){const bU=a0aO;let i;try{if('ljodR'===bU(0x16c)){if(typeof l!='string')return null;let p=n[bU(0x1e0)]();return p[bU(0x1a7)]===0x0||p[bU(0x1a7)]>o||!p[bU(0xe5)](p)?null:p;}else i=a0aF['openSync'](c,'r');}catch{return[];}try{let p=a0aF[bU(0x1b6)](i)['size'],r=Math[bU(0xf4)](p,Je),u=Buffer[bU(0x1f4)](r);a0aF[bU(0x193)](i,u,0x0,r,p-r);let x=u[bU(0x1a4)](bU(0x177))[bU(0x141)]('\x0a');return r<p?x[bU(0x1ec)](0x1):x;}catch{return[];}finally{a0aF[bU(0x154)](i);}}function Ye(){const bV=a0aO;return[g,A]['flatMap'](a=>Tt(Ft(a)))[bV(0x16d)]((a,c)=>a[bV(0x12d)]-c[bV(0x12d)]);}function J(){const bW=a0aO;try{return JSON[bW(0x1d8)](a0aF[bW(0x1f3)](X,bW(0x177)))['monsters']??{};}catch{return{};}}function Dt(a,c){const bX=a0aO;return{'shortId':typeof c?.['short_id']==bX(0xf1)&&c[bX(0x12b)][bX(0x1a7)]>0x0?c[bX(0x12b)]:a['slice'](0x0,0x8),'supervisorSession':typeof c?.[bX(0x192)]=='string'&&c[bX(0x192)][bX(0x1a7)]>0x0?c[bX(0x192)]:null,'tmuxSession':typeof c?.[bX(0x15a)]==bX(0xf1)?c[bX(0x15a)]:'','status':typeof c?.[bX(0xff)]=='string'?c[bX(0xff)]:'','unsupervised':c?.[bX(0x101)]===!0x0,'spawnedAt':typeof c?.[bX(0x175)]==bX(0xf1)?c['spawned_at']:''};}function ze(a=J()){return c=>{let {shortId:i,supervisorSession:l,tmuxSession:p}=Dt(c,a[c]);return{'shortId':i,'supervisorSession':l,'tmuxSession':p};};}function Xe(a=J()){const bY=a0aO;return Object[bY(0xe8)](a)[bY(0x10c)](([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 bZ=a0aO;await tt(et(a[bZ(0x10f)],c[bZ(0x1df)],bZ(0x1c1),{'supervisor_session':c[bZ(0x146)],'trigger_event':a[bZ(0x1b9)],'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)=>{let p=await it(i,l);return{'ok':p['ok'],'error':p['error']};},'recordSupervisorGone':We,'log':a};}function Y(a){const c0=a0aO;process[c0(0x18e)]['write'](new Date()['toISOString']()+'\x20'+a+'\x0a'),Q(a);}async function Ze(){const c1=a0aO;let a=await At(),c=await Pt(a,Bt(Y));await Nt(c[c1(0x1ce)],a);let i=Lt(c);i!==null&&Y(i);}Ze()['catch'](a=>{const c2=a0aO;Y('tick\x20失敗:\x20'+(a instanceof Error?a[c2(0x181)]:String(a))),process[c2(0x190)](0x1);});
|
|
2
|
+
const a0bQ=a0c;(function(a,c){const bO=a0c,d=a();while(!![]){try{const e=-parseInt(bO(0x255))/0x1*(parseInt(bO(0x2d7))/0x2)+parseInt(bO(0x2b9))/0x3*(-parseInt(bO(0x1cb))/0x4)+-parseInt(bO(0x296))/0x5*(parseInt(bO(0x1da))/0x6)+-parseInt(bO(0x1d5))/0x7+-parseInt(bO(0x23a))/0x8*(-parseInt(bO(0x2c3))/0x9)+-parseInt(bO(0x1b6))/0xa+parseInt(bO(0x22e))/0xb;if(e===c)break;else d['push'](d['shift']());}catch(f){d['push'](d['shift']());}}}(a0a,0xb2127));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['replace'](Wt,'\x20')['replace'](/\s+/g,'\x20')[bP(0x1b3)]();}import*as a0bE from'node:os';import*as a0bF from'node:path';var C=process.env.MONSTER_MCP_ROOT,y=C&&C[a0bQ(0x245)]>0x0?C:a0bF['join'](a0bE[a0bQ(0x1ba)](),a0bQ(0x2e1),a0bQ(0x2a6)),et=a0bF[a0bQ(0x2cb)](y,'state.json'),gn=a0bF['join'](y,a0bQ(0x2f2)),v=a0bF['join'](y,a0bQ(0x2af)),k=a0bF['join'](y,a0bQ(0x1dd)),j=a0bF[a0bQ(0x2cb)](y,a0bQ(0x259)),nt=0xa*0x400*0x400,qt=0x5*0x400*0x400,E=a0bF[a0bQ(0x2cb)](y,'supervisor-notify.json'),x=E+a0bQ(0x2be),O=a0bF[a0bQ(0x2cb)](y,a0bQ(0x22b)),st=O+'.1',rt=0x2*0x400*0x400;function Zt(){const bR=a0bQ;try{if(a0bC[bR(0x239)](O)['size']<rt)return;a0bC[bR(0x2db)](O,st);}catch{}}function it(a){const bS=a0bQ;let c=new Date()[bS(0x1be)]()+'\x20'+Q(a)+'\x0a';try{if('VnuPk'===bS(0x1ef))return d(c)[bS(0x245)]>0x0;else a0bC[bS(0x213)](a0bD[bS(0x288)](O),{'recursive':!0x0}),Zt(),a0bC[bS(0x235)](O,c,bS(0x28b));}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(0x213)](y,{'recursive':!0x0}),a0bH[bT(0x1e5)](v)||a0bH[bT(0x217)](v,'',bT(0x28b));}async function te(){const bU=a0bQ;try{if('xUZhP'===bU(0x2c4)){if((await a0bI[bU(0x2e2)](v))[bU(0x2ed)]<nt)return!0x1;}else return e['min'](0x64+f[bU(0x26a)](h/0x4),0x5dc);}catch{if(bU(0x2b1)!=='kwwAE')return!0x1;else{let d=[];for(let e of f){let f=i['match'](e);f&&d[bU(0x253)](f[0x0]);}return d;}}try{return a0bH['existsSync'](j)&&await a0bI['unlink'](j),a0bH[bU(0x1e5)](k)&&await a0bI[bU(0x2cc)](k,j),await a0bI['rename'](v,k),await a0bI[bU(0x272)](v,'',bU(0x28b)),!0x0;}catch{return!0x1;}}async function at(a){const bV=a0bQ;Qt(),await te();let c=JSON[bV(0x2e5)](a)+'\x0a';await a0bI['appendFile'](v,c,bV(0x28b));}function ct(a,c,d,f={}){const bW=a0bQ;return{'ts':new Date()[bW(0x1be)](),'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[bX(0x20f),'/usr/local/bin/tmux'])try{if(a0bL[bX(0x1e5)](c))return c;}catch{}return bX(0x2c2);}var $=se(),L=class extends Error{},H=class extends L{constructor(a){const bY=a0bQ;super(bY(0x21c)+$+bY(0x1d0)+String(a)),this[bY(0x1c9)]=bY(0x249);}},U=class extends L{constructor(a){const bZ=a0bQ;super(bZ(0x2ad)+$+bZ(0x237)+(process.env.TMUX?'\u3042\u308A':'\u306A\u3057')+bZ(0x246)+(process.env.TMUX_TMPDIR??bZ(0x25e))+bZ(0x1b0)+a),this['name']=bZ(0x2a1);}};function re(a){const c0=a0bQ;let c=a?.[c0(0x280)];return c===c0(0x1db)||c===c0(0x2e8)||c===c0(0x287);}function oe(a){const c1=a0bQ;let c=a,d=typeof c?.[c1(0x292)]==c1(0x221)&&c[c1(0x292)][c1(0x245)]>0x0?c[c1(0x292)]:String(c?.['message']??a);return ft(d)[c1(0x1b3)]();}var ie=/can't find session|session not found/i;function ae(a){const c2=a0bQ;return ie[c2(0x2a4)](a)?c2(0x212):c2(0x2c6);}var ce=/\x1b\[[0-9;?]*[A-Za-z]/g;function ft(a){const c3=a0bQ;return a['replace'](ce,'')[c3(0x29d)](/\r/g,'');}async function B(a){const c4=a0bQ;try{return await M($,[c4(0x216),'-t',a]),!0x0;}catch(c){if(re(c))throw new H(c);let d=oe(c);if(ae(d)==='absent')return!0x1;throw new U(d);}}var ue=/esc to interrupt/i;async function lt(a){const c5=a0bQ;let c=await dt(a,0x32);return c['trim']()[c5(0x245)]===0x0?!0x0:ue[c5(0x2a4)](c);}async function dt(a,c){const c6=a0bQ;try{let {stdout:d}=await M($,[c6(0x281),'-t',a,'-p','-S','-'+c]);return ft(d);}catch{return'';}}function fe(a){const c7=a0bQ;return Math[c7(0x23e)](0x64+Math[c7(0x26a)](a/0x4),0x5dc);}function le(a){const c8=a0bQ;return a[c8(0x29d)](/\n+$/,'');}async function pt(a,c){const c9=a0bQ;try{if('vYIGC'===c9(0x233)){let d=le(c);await M($,[c9(0x1f0),'-t',a,'-l',d]);let f=fe(d[c9(0x245)]);return await new Promise(h=>setTimeout(h,f)),await M($,[c9(0x1f0),'-t',a,'Enter']),await new Promise(h=>setTimeout(h,0xc8)),await M($,[c9(0x1f0),'-t',a,c9(0x2b0)]),{'ok':!0x0,'bytes':Buffer[c9(0x2e3)](d,c9(0x28b))};}else{if(a5(a6))return{'ok':!0x1,'reason':c9(0x1cf)+a7(a8)[c9(0x2cb)](c9(0x29e))};if(a9(aa)){let i=av(aw);return{'ok':!0x1,'reason':ax+':\x20'+i[c9(0x2cb)](c9(0x29e))};}return af(ag)?{'ok':!0x1,'reason':'監督の不在を断定している:\x20'+ah(ai)['join'](c9(0x29e))+c9(0x28a)}:aj[c9(0x2a4)](ak)?{'ok':!0x1,'reason':'has-session\x20\u3092\u6483\u305F\u305B\u3066\u3044\u308B\uFF08\u80CC\u666F\u30B7\u30A7\u30EB\u3067\u507D\u306E\x20DEAD\x20\u3092\u8FD4\u3059\u6E2C\u308A\u65B9\u3067\u3042\u308A\u3001\u8AA4\u308A\u304C\u5426\u5B9A\u5074\u306B\u3060\u3051\u51FA\u308B\u305F\u3081\u300E\u76E3\u7763\u304C\u6D88\u3048\u305F\u300F\u3092\u904E\u5270\u751F\u6210\u3059\u308B\u3002\u524D\u666F\u306E\x20tmux\x20list-sessions\x20\u3067\u6570\u3048\u3055\u305B\u308B\u3053\u3068\uFF09'}:al['test'](am)?ao['test'](ap)?aq[c9(0x2a4)](ar)?as[c9(0x2a4)](au)?{'ok':!0x0}:{'ok':!0x1,'reason':c9(0x2d1)}:{'ok':!0x1,'reason':c9(0x276)}:{'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':c9(0x1f7)};}}catch(i){return{'ok':!0x1,'bytes':0x0,'error':i?.[c9(0x292)]||i?.['message']||c9(0x22a)};}}var G=[a0bQ(0x1ec),a0bQ(0x1b1)],_t=a0bQ(0x283),de=a0bQ(0x1c8),St=a0bQ(0x1dc);function pe(a){const ca=a0bQ;if(typeof a!='string')return null;let c=a['toLowerCase']()[ca(0x29d)](/[^0-9a-f]/g,'');return c['length']===0x0?null:c[ca(0x27f)](0x0,0xc);}function me(a){const cb=a0bQ;return typeof a==cb(0x221)&&G[cb(0x2ac)](a);}function ht(a){const cc=a0bQ;if(typeof a!='string')return null;let c=Date[cc(0x1e4)](a);if(!Number[cc(0x240)](c))return null;let d=new Date(c),f=String(d[cc(0x2c5)]())[cc(0x225)](0x2,'0'),h=String(d[cc(0x26e)]())[cc(0x225)](0x2,'0');return f+':'+h;}function _e(a){const cd=a0bQ;let c=pe(a['shortId']),d=ht(a['ts']);return!c||!d||!me(a['event'])?null:cd(0x290)+c+'\x20が\x20'+a[cd(0x23f)]+'('+d+')';}function gt(a){const cf=a0bQ;let c=[];for(let d of a){if('hFHbw'!==cf(0x219)){let f=_e(d);f&&c[cf(0x253)](f);}else m(cf(0x200)+(d instanceof o?p[cf(0x204)]:r(s))),a[cf(0x21a)](0x1);}return c[cf(0x245)]===0x0?null:''+_t+c[cf(0x2cb)]('\u3001')+de;}var Se=new RegExp(a0bQ(0x252)),he=['\u627F\u8A8D','\u627F\u8AFE','\u4E86\u627F','\u8A31\u53EF','\u8A8D\u53EF','\u8A31\u8AFE','\u88C1\u5B9A','\u6C7A\u88C1','GO','\u30B4\u30FC',a0bQ(0x1ae),'\u30BF\u30B0',a0bQ(0x1ea),a0bQ(0x229),'\u672C\u756A','\u53EF','\u3066\u3088\u3044',a0bQ(0x27d),'\u3066\u3044\u3044',a0bQ(0x2d2),a0bQ(0x2ba),'\u3057\u3066\u304F\u3060\u3055\u3044',a0bQ(0x1ee),a0bQ(0x1b5),/\b(?:ok|okay|go|approve[ds]?|approval|authoriz(?:e|ed|ation)|merge[ds]?|tag|release|deploy|greenlight)\b/i];function b(a){const cg=a0bQ;let c=[];for(let d of he){if(cg(0x2a0)===cg(0x2a0)){if(typeof d=='string'){if(cg(0x25c)!==cg(0x1bf)){a['includes'](d)&&c[cg(0x253)](d);continue;}else return{...i,'monsters':{...m[cg(0x2a6)],[d]:{...o[cg(0x2a6)][p],'last_injected_event_ts':r,'awaiting_reaction':!0x0}}};}let f=a[cg(0x1d8)](d);f&&c['push'](f[0x0]);}else{let m=m(d[cg(0x2b5)]),o=o(p[cg(0x22d)]),p=r(s[cg(0x2f1)]);return!m||!o||!p?null:a+cg(0x208)+m+'\x20が不在と検知された('+p+cg(0x234)+m+cg(0x1e2)+o+cg(0x22f);}}return c;}function P(a){const ch=a0bQ;return b(a)[ch(0x245)]>0x0;}function Et(a){const ci=a0bQ;if(!Se[ci(0x2a4)](a))return{'ok':!0x1,'reason':ci(0x2ef)};if(P(a))return{'ok':!0x1,'reason':ci(0x1cf)+b(a)[ci(0x2cb)]('\x20/\x20')};if(vt(a)){let c=Y(a);return{'ok':!0x1,'reason':xt+':\x20'+c['join'](ci(0x29e))};}return{'ok':!0x0};}var Tt=0x40,ge=new RegExp('^['+St+a0bQ(0x23d));function mt(a){const cj=a0bQ;if(typeof a!=cj(0x221))return null;let c=a['trim']();return c[cj(0x245)]===0x0||c[cj(0x245)]>Tt||!ge[cj(0x2a4)](c)?null:c;}function wt(a){const ck=a0bQ;let c=mt(a[ck(0x2b5)]),d=mt(a[ck(0x22d)]),f=ht(a[ck(0x2f1)]);return!c||!d||!f?null:_t+ck(0x208)+c+'\x20が不在と検知された('+f+ck(0x234)+c+ck(0x1e2)+d+ck(0x22f);}var V='['+St+a0bQ(0x1f5)+Tt+'}',Ee=new RegExp(a0bQ(0x1bd)+V+a0bQ(0x2a9)+V+a0bQ(0x1e2)+V+a0bQ(0x28d)),Te=/([0-9]{2}:[0-9]{2})/,we=/前景で tmux list-sessions を撃ち、/,ye=/(自席が 0 行なら測り方が壊れている)/,ve=/has-session/,xe=[a0bQ(0x2a8),'\u6D88\u6EC5','\u6D88\u5931',a0bQ(0x2a7),'\u6B7B\u4EA1',a0bQ(0x250),a0bQ(0x262),a0bQ(0x2f0),a0bQ(0x29f),a0bQ(0x1af),'\u5B58\u5728\u3057\u306A\u3044',a0bQ(0x291),a0bQ(0x2a5),a0bQ(0x27a),'\u4E0D\u5728\u3067\u3042\u308B',a0bQ(0x271),a0bQ(0x266),'\u4E0D\u5728\u304C\u78BA\u5B9A',/\b(?:is|has|was|been)\s+(?:gone|dead|missing|terminated|absent)\b/i];function yt(a){const cl=a0bQ;let c=[];for(let d of xe){if(cl(0x1f9)==='BpVrZ')return new c(o=>i(o,m));else{if(typeof d==cl(0x221)){a[cl(0x2ac)](d)&&c[cl(0x253)](d);continue;}let h=a[cl(0x1d8)](d);h&&c[cl(0x253)](h[0x0]);}}return c;}function Ie(a){const cm=a0bQ;return yt(a)[cm(0x245)]>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',a0bQ(0x214),a0bQ(0x1b4),a0bQ(0x2e4),a0bQ(0x236),'\u9858\u3046'],Ae=[new RegExp('(?:'+Oe[a0bQ(0x2cb)]('|')+a0bQ(0x2d8)+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 co=a0bQ;let c=[];for(let d of Ae){if(co(0x1d7)===co(0x2dc)){let h=h(i);return h['ok']?!0x0:(m('🚨\x20逆向き注入中止:\x20'+h[co(0x1c0)]+'\x20/\x20文面='+d[co(0x2e5)](o)),!0x1);}else{let h=a[co(0x1d8)](d);h&&c[co(0x253)](h[0x0]);}}return c;}function vt(a){const cp=a0bQ;return Y(a)[cp(0x245)]>0x0;}var xt=a0bQ(0x1b7);function It(a){const cq=a0bQ;if(P(a))return{'ok':!0x1,'reason':cq(0x1cf)+b(a)[cq(0x2cb)](cq(0x29e))};if(vt(a)){let c=Y(a);return{'ok':!0x1,'reason':xt+':\x20'+c['join'](cq(0x29e))};}return Ie(a)?{'ok':!0x1,'reason':cq(0x1ab)+yt(a)[cq(0x2cb)](cq(0x29e))+cq(0x28a)}:ve[cq(0x2a4)](a)?{'ok':!0x1,'reason':cq(0x2d5)}:Te[cq(0x2a4)](a)?we[cq(0x2a4)](a)?ye[cq(0x2a4)](a)?Ee['test'](a)?{'ok':!0x0}:{'ok':!0x1,'reason':cq(0x2d1)}:{'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':cq(0x1f7)};}var $e=[a0bQ(0x2e0),a0bQ(0x285)],ke=a=>typeof a==a0bQ(0x2aa)&&a!==null&&!Array['isArray'](a);function Ne(c){const cr=a0bQ;let d=c[cr(0x1b3)]();if(d[cr(0x245)]===0x0)return null;let f;try{if('dsikp'!==cr(0x1e0)){let I=e(f);return{'ok':!0x1,'reason':h+':\x20'+I['join'](cr(0x29e))};}else f=JSON['parse'](d);}catch{return null;}if(!ke(f))return null;let {ts:h,monster_id:m,event:o}=f;if(typeof h!=cr(0x221)||typeof m!='string'||m[cr(0x245)]===0x0||typeof o!=cr(0x221))return null;let p=Date[cr(0x1e4)](h);return Number[cr(0x240)](p)?{'ts':h,'tsMs':p,'monsterId':m,'event':o}:null;}function Ot(a){const cs=a0bQ;let c=[];for(let d of a){if(cs(0x22c)!==cs(0x22c))return f?.['code']==='ENOENT'?{'ok':!0x0,'state':h()}:{'ok':!0x1,'kind':cs(0x263),'detail':i(m)};else{let h=Ne(d);h&&c['push'](h);}}return c;}function Me(a){const cu=a0bQ;return G[cu(0x2ac)](a);}function be(a){const cv=a0bQ;return $e[cv(0x2ac)](a);}function Rt(f,m){const cw=a0bQ;let I=new Map(),N=new Map(),T=new Map();for(let [a5,a6]of Object[cw(0x24b)](m[cw(0x24b)])){if(cw(0x29b)!=='dNKjV'){I[cw(0x25a)](a5,a6[cw(0x1f6)]);let a7=Date['parse'](a6['last_injected_event_ts']);Number[cw(0x240)](a7)&&N[cw(0x25a)](a5,a7);let a8=a6[cw(0x297)]===void 0x0?NaN:Date['parse'](a6['last_scanned_event_ts']);Number[cw(0x240)](a8)&&T[cw(0x25a)](a5,a8);}else return{...a3,'cursor_ts':m};}let a0=new Set(),a1=new Map(),a2=new Map(),a3=null,a4=(aa,ab)=>{const cx=cw;let ac=aa[cx(0x2b2)]+'\x00'+ab;a2[cx(0x25a)](ac,{'monsterId':aa[cx(0x2b2)],'reason':ab,'count':(a2[cx(0x1eb)](ac)?.[cx(0x210)]??0x0)+0x1,'latestTs':aa['ts'],'latestEvent':aa[cx(0x23f)]});};for(let aa of[...f][cw(0x2bc)]((ab,ac)=>ab[cw(0x1c3)]-ac['tsMs'])){if(m[cw(0x278)]!==null&&aa['tsMs']<=m['cursorMs'])continue;(a3===null||aa['tsMs']>a3)&&(a3=aa[cw(0x1c3)]);let ab=T['get'](aa[cw(0x2b2)]);if(ab!==void 0x0&&aa[cw(0x1c3)]<=ab)continue;if(be(aa[cw(0x23f)])){I['get'](aa[cw(0x2b2)])&&(I['set'](aa['monsterId'],!0x1),a0[cw(0x243)](aa['monsterId']));continue;}if(!Me(aa[cw(0x23f)]))continue;if(I[cw(0x1eb)](aa['monsterId'])){a4(aa,cw(0x1f6));continue;}let ac=N[cw(0x1eb)](aa[cw(0x2b2)]);if(ac!==void 0x0&&aa[cw(0x1c3)]<=ac){a4(aa,cw(0x29c));continue;}a1[cw(0x25a)](aa['monsterId'],aa);}return{'notify':[...a1[cw(0x1c4)]()]['sort']((ad,af)=>ad['tsMs']-af['tsMs']),'suppressed':[...a2['values']()],'reacted':[...a0],'maxScannedMs':a3};}import*as a0bM from'node:fs/promises';import*as a0bN from'node:path';var je=0xea60,Fn=je*0x3;function At(a){const cy=a0bQ;try{return process[cy(0x2c0)](a,0x0),!0x0;}catch(c){return cy(0x1c1)===cy(0x1c6)?!0x1:c?.[cy(0x280)]==='EPERM';}}var Le=0xc8,Pe=()=>({'version':0x1,'cursor_ts':null,'monsters':{}}),z=a=>typeof a==a0bQ(0x2aa)&&a!==null&&!Array[a0bQ(0x25b)](a),J=a=>typeof a==a0bQ(0x221)&&a[a0bQ(0x245)]>0x0?a:void 0x0;function Fe(c){const cz=a0bQ;if(!z(c))return{};let d={};for(let [f,h]of Object[cz(0x24b)](c)){if(!z(h)||typeof h[cz(0x261)]!='string')continue;let m=J(h[cz(0x298)]),o=J(h[cz(0x23c)]),p=J(h['last_scanned_event_ts']);d[f]={'last_injected_event_ts':h[cz(0x261)],'awaiting_reaction':h[cz(0x1f6)]===!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 cA=a0bQ;let c=JSON['parse'](a);if(!z(c))throw new Error('\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u306A\u3044');return{'version':0x1,'cursor_ts':typeof c[cA(0x28c)]==cA(0x221)?c[cA(0x28c)]:null,'monsters':Fe(c[cA(0x2a6)])};}var F=new WeakMap();function $t(a){const cB=a0bQ;let c=a;return''+(typeof c?.[cB(0x280)]==cB(0x221)?c[cB(0x280)]+':\x20':'')+String(c?.[cB(0x204)]??a);}function a0a(){const dp=['AxngAw5PDgu','C2vZC2LVBKj1C3K','lMnVCNj1ChqU','ywrK','C2HVCNrjza','BgvUz3rO','lcbutvvyx1rnuerjuJ0','khnWyxDUzwqG','ios7TIaViowpSow4SZ0','vg11EfvUyxzHAwXHyMXLrxjYB3i','Dg11Ef9ZzxnZAw9U','zw50CMLLCW','DgfYz2v0','CgLK','55UJ552J44gm5yMn5zUE44gU6ycA55+L44gR44g+44gG5y+n5B+C44gx44gM44ge44gQ44ge44gF44kb5RoO5ywL44gx44gQ44ge77YiWQCZlJmG5yAQ562j77Yj','Aw5PDgLHBgL6zwq','5AsX5yQ544gx44gF','77Yjic8G5PAh6z2Ipq','xUoaKg9Yy2HLC3rYyxrVCUoaKw1VBNn0zxiGwZaToweTzL17msWXmN0G44gmicG/oMf3ywL0Aw5Nx2LUChv0Fhn0B3bWzwqP77YiwZaTov17mN06wZaTov17mN3VViKOpZRJGifTB25ZDgvYifSWltLHlwzDEZeSmtj9ioobJcaOpZPHD2fPDgLUz19PBNb1DhXZDg9WCgvKkE+8IfSWltLDEZj9oLSWltLDEZj977YjksRJGilNIRBMHyVJGPlNORROQO3JGzFJGABLR77LV5ZJGzVJGOGK','ChvZAa','Aw5Qzwn0zwq','mZy2nJa1yLjQAvHW','CMv2zxjZzuLUAMvJDgvK','8j+AQca','6ycg5zcr44gn5RoO5ywL6kAl6ycb44kkoIdPHy3KUiSGC2vZC2LVBJ0','zxzLBNrZlMXVzY4Y','C2v0','AxnbCNjHEq','zeXQtKq','ywXSB2m','5PYQ6kIT5A6A','77Yj4Ocuia','ioobJowUN+IHJos4RsbTB25ZDgvYpq','BgfZDf9PBMPLy3rLzf9LDMvUDf90CW','57wc5lQg44gx44gF','Dw5YzwfKywjSzq','C2vSzG','5RoO5ywL6kAl6ycb44kkoIdMLOFPNAlJGPlNTytJGOhJGARJGyVJGApJGz8GBw9UC3rLCJ0','5lIn5zYO44gG','tffVue8','C2vZC2LVBG','ioobQ+IOREwUMU+8IoMbJUwoU+obRUwbNoATOUobR+AZQowfPEobL+obQUobHo+8Iq','zMXVB3i','BM9FDgfYz2v0x3nLC3nPB24','yNvZEsbZA2LWoIbZzxnZAw9Upq','D3L5DuC','z2v0twLUDxrLCW','CNvUBMLUzW','rM9VqNO','5lIn5zYO44gN44gz','D3jPDgvgAwXL','C3bHD25Lzef0','C2vZC2LVBKv4Axn0CW','ios4JEMbLd0','5RIS5A6A5zMO44gU5A++54wN77Yi6iEQ5BIT44gU6kgm5PwW77Yj44ks5zcR44g+44gQ44ge77Yi5y+x44gr5OMl44gm44co55UJ552J44gm5Bgf44gQ44ge44cp44gO44co5RIS44kk5PA544gm5Aok44km44gM44ge44kl44cp44ks5yY65yIL44gN44gn44gQ44ge77Yj','ioobRUs4JEwCQoocKUMfJEs4IYbTB25ZDgvYpq','y3vYC29Ytxm','igj1C3NLVOxJGAe9','44ge44gQ44gp44gQ44gJ44gF','CMvHzeXLzgDLCG','v29ZvgS','44gM6iMV44ge','BM93','C2XPy2u','y29Kzq','y2fWDhvYzs1Wyw5L','ioIhQUw4Rt0','44cqB3jJAgvZDhjHDg9Y44cr','ioMaHUwqKEobJEs4JEMbLd0','C2vZC2LVBL9LBMq','D0X1ELm','rvbfuK0','zgLYBMfTzq','BwfW','77Yi55UJ552J44gm5B6P5Rs744gx44gF5B6m44gR5Bgk44gp44gO5PAh6z2I44gm5zIy44gR44gQ44kl44cc5QsC55+L44gU5AcX5zgk44gO44gx44gM5PU444gp44gt44gO77Yj','DxrMoa','y3vYC29Yx3rZ','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOGK','5y+n5B+C6kAZ5RISoIbTB25ZDgvYpq','zuL6sKK','Bw9UC3rLCIa','5Bgf44gQ44ge','C3rKzxjY','Dw53AxjLza','77YiC2vZC2LVBJ0','iowpJEw/Nd0','nu5zBMjzyq','BgfZDf9Zy2fUBMvKx2v2zw50x3rZ','CMv2zxjZzv9PBMPLy3rLzf9ZDxbLCNzPC29Y','veHcuvq','CMvHzezPBgu','Ae1yug0','ywXYzwfKEv9PBMPLy3rLza','CMvWBgfJzq','ic8G','5ygC5Q2I44gx44gF','qvj6Auu','vg11EfnLCNzLCLvUCMvHy2HHyMXLrxjYB3i','wxDzzMG','ioocKUIQREocGEobVUobM+ocK+obP+obL+obN++8Ia','DgvZDa','44ge44gQ44ge','Bw9UC3rLCNm','5Q2744kt44gG','5RAi44gi44gF','ioobJos4JEwCQoobQoAKNoEFPEobLEocJoobN++8IfSWltLDEZj9oLSWltLDEZj977Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','B2jQzwn0','zgv0ywLS','Aw5JBhvKzxm','Dg11EcdJGRxJG7ZJG5dJGAVNUyVJGyZJGORJGB7JGzVJGPpVViHIAw49','77YjiokaLcbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gU44gF44kb5RoO5ywL5ywi44gm54sH44gp44cb44gt44gU5ygC5Q2I44gV6kQW44gR44kc6ycA55+L44gv44km44gQ44ge77YiC3bHD24G5PMc44gRihn1CgvYDMLZB3jtzxnZAw9UioocKUA4OEobMEobK+obQo+8Iq','zxzLBNrZlMXVzW','rw50zxi','zwfVrgS','Bw9UC3rLCKLK','ic8G5PAh6z2Ipq','C3rHDgu','C3vWzxj2AxnVCLnLC3nPB24','Dg11EfnLC3nPB24','qMnQDu8','y2XVC2vtEw5J','mJK2ota4nujKww9KCW','44gl44g+44kp44gQ44ge','ywXYzwfKEv9UB3rPzMLLza','C29YDa','igDVBMxOQjJPJllMIPhMRAi9','lMXVy2S','u1vqrvjwsvnpuL9tvefurv9mt0nlx1rjtuvpvvq6ia','A2LSBa','Dw5ZDxbLCNzPC2vK','Dg11Ea','mJGYmdG3zMjsrfDz','EfvAAfa','z2v0sg91CNm','Dw5TzwfZDxjHyMXL','ihn1CgvYDMLZB3jFC2vZC2LVBJ0','ioAZQowfPEs4REATOJ0','A2LUza','iowVVUIXOEwKLJ0','AM9PBG','CMvUyw1L','ihn1CgvYDMLZB3jFz29Uzt0','ktOG5PYQ6ywn57EAidaG5lU277Yi56I85yon5lIT44gUig1VBNn0zxiG44gV44gz44g544gMihn1CgvYDMLZB3jFC2vZC2LVBIdJGyZOQjJPJllJGzxJGOZJGABJGytJGOVVViK','CMfUzg9T','77Yj44gm5A6F5zYO44gx44gQ44geiokaLcdNN6xJGONJGzVJGOVNM7JMIyVJGyZLSyxJGARJGytVViHYzwnVBMnPBguG44gm5y+W5BIZ44ks55U044gz77Yj','6ycg5zcr44gn44gU5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','5QEl44kp44gQ44ge','lNrTCa','77Yj44cc44gt44gt44gN5PU444gp44gO6kEM44gJ44gM44ge44gQ44geigvUDhj5ioobJowfQoMdQoA2IoobIoobVUobMq','AgfZlxnLC3nPB24G44ks5Pkd44gF44gB44gM44ge44kl77Yi6iom5PMV44k344kN44oR44gN5yg944gUierfquqG44ks6l+u44gz5RIS44kk5PA544gN44gc44kk44cb6kQK44kk44gm5zcM5A6A5yg044gR44gG44gr5yE644kl44gF44kb44co55UJ552J44gm5RAi44gi44gF44cp44ks6ygo5yMW55sF5OIq44gz44kl44cc5yMn5PMV44gUihrTDxGGBgLZDc1ZzxnZAw9UCYdJGAFMLBdJGyJJGzxJGzVJGOVJGzpJGAJVViK','uKTkugW','neHis1zbAa','ksG/oG','y29YCNvWDa','5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','CMvUyw1Lu3LUyW','zMLVu0e','8j+AQcdMS6JLHAxKUk3MRAi6ioAoIoAOQEocKUAeJ+wrS+obMEocI+IQNUocKUwqQ+ocGo+8Ia','r0nxq2m','A2v5CW','DxnLCL9WCM9TChq','lMnSyxvKzq','C3rHDa','yNL0zuXLBMD0Aa','44gQ44gv44ge','C3rYAw5NAwz5','C2TPChbLzej1C3K','BM90Awz5','rufdq0vt','CMvHzfrHCMDLDa','ios9K++8IsdIGjqG55UJ6kAw57AY44gR56M044gm6zAl44ge44gM44ge44kl','8j+AQcdJGRVJG4pJGRFJG6FJG7pLRP/LNkJJGPlLIktLRPRJGAFJGy3JGB7JGzVJGPmGC2vZC2LVBJ0','5yID5zUEihrPy2S6ioocQ+odVoocVEodQ+ocKIa','C2L6zq','wMvpqu0','5zU65A6A44og44oZ44ox44oS44gR5lIa6iE044gx44gQ44ge','6yca5BIT44gx44gF','zgv0zwn0zwrbDa','C3rHDguUBg9JAW','C3rHDhvZ','55UJ552J44gU5lIn5zYO44ks5PAT5A6A44gx44gM44ge44kloIa','rxzOrMC','C3vWzxj2AxnVCI1ZDgf0ztOG54Q25Owl44ov44kH44kK44oR44gm5Aok44km44gM44ge44gF44gU44gNia','44oE44o844k4','6jc944gH44gF','77Yj44cc8j+AQcaQkUocU+odG+ocT+odP+odS+obJoEeOEobHoobK+obQoobRUIOVoAlOoobQ+obR+obQUocIUobVUobM+ocKYOQ77Yi5RIS5A6A5lIn6io977Yj44cc5zg844gZ5yE644gx5ywd44gU55kW5Akd44gm5A++6kMX44k344kN44oR44gO6ygv44gg44k944kX44od44oi44ks6kAl44gM44ge44kl5y+V6io95OcN44gm44gc44kk44g+44gz44cc6kMZ57sWoIa','C3rVChbLza','CMvHzfn5BMm','DhjPBq','44gv44km44gF44gx','5BEU44gx5PsV44gi44gQ44ge','oti3odK5meXTDLj0DG','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','ioocKIa','ig1VBNn0zxi9','Ag9TzwrPCG','CMvJB3jKu3vWzxj2AxnVCKDVBMu','tMvtrhy','xUoaKg9Yy2HLC3rYyxrVCUoaKEEBO+EDOYbZzxnZAw9Uia','Dg9ju09tDhjPBMC','BgrYBNi','CMvHC29U','AezNywO','CMv2zxjZzuzHAwXLza','DhnnCW','DMfSDwvZ','8j+AQcdMNkRPHy3NT5O6ig1VBNn0zxi9','yxb6s04','5OQr5Q2IoIbTB25ZDgvYpq','44cc54Q25Owl44ks56k66kQn44gx44gM5A++5B+C44gB44ki','BMfTzq','77YiBw9UC3rLCJ0','ngLkywrKBW','u1vqrvjwsvnpuL9tvefurv9vtLjfqurbqKXfoIa','C3vWChjLC3nLza','C3vWzxj2AxnVCL9NB25L','5O6i5QIP44ks5Osp5zgZ44gz44kl6kQE44ks5zcR44kaoIa','77Yj44ccuefuscdJGASGl29WDc9OB21LyNjLDY9IAw4G44gm54sH44geigXHDw5JAgqG562j44gl44kjioI1T+wlLEobLEocJoobPUobHoocI+wpR+IdVEAaP+obJoobGUocIUobVUobMEoaGK1ptLnurvjFve1vwf9csu4G44gN5PIo56s65OYh5A6A44gN44gn44g+44gz44cc5y6F5zUGoIa','ipcFMQGG6kAb5A++5yEMoIbZDxbLCNzPC29Yx3nLC3nPB24G5PYQ6kIy6yYY44gUig1VBNn0zxiG44gm44ge44kl77Yi5ygC5Q2Ipq','wxPYqwu','Dw5HC3nPz25Lza','zMXHDe1HCa','otm5nJyZoujnruzVsa','vMLSy0u','D1fpv0G','Bwf0y2G','ioobJowTMowCQoobL+obQUobHcbTB25ZDgvYpq','ndGYotu3nhDbsKX5vW','ru5pru5u','qs1Ays16mc05lL9akY0','zxzLBNrZlMXVzY4X','ioobRUwbNoATOUocPoodMEodS+odIca','zNn0yxrtEw5J','zhnPA3a','8j+AQcdPGiBLKjhJGy3MS6JLHAxOPOVPGihJGOO6ig1VBNn0zxi9','ioobQoIhQUw4Rsa','ktOG5PYQ6ywn57EAia','CgfYC2u','zxHPC3rZu3LUyW','CMv2zxjZzujSB2nRzwq','5PYQ6ywn57EA55UJ5P+7','yMXVy2TLza','lNn0ywXLlG','44oQ44oQ44o844k5','z2v0','yxDHAxrPBMDFAw5WDxq','5RoO5ywLoIbZzxnZAw9Upq','5zwp6Agm44gQ44ge','q1LqwMu','C2vUzc1RzxLZ','wgTtqu4','CMvHy3rLza','ioobQ+EBO+EDO+obJowpJEw/NoobL+obNYdIGjqG5OQr5Q2I44ks6kEJ6zMK77Yi5QYH44gU5ygC5Q2I44gl44kj5yAn44gZ5RoO5ywL44gz44kl77Yj','zgvSAxzLCMvK','xxSXla','yxDHAxrPBMDFCMvHy3rPB24','5QsC55+L5PMc5yI777YiseG6tu3VViNJGPlLKkVJGB7JGARJGytVViJLJ5FJGzhMIyVJGyZPGjRNN6xJGA7LJ6tJGzxJGPlLIktMLQ3JGAFJGy3JGARJGytVViK','Dg9tDhjPBMC','A0f0rKq','suvqDNu','y1LXC3O','8j+AQcdPGiBLKjhJGy3MS6JLHAxKUk3MRAi6ioAwH+MDOUocKUE1HoocGEobQUobI+obO+obNYbTB25ZDgvYpq','C3bHD25Lzf9HDa','AgfZ','C2HVCNrFAwq','DgLJAYdLPlhMLzC6ia','ioobJca','ruvysvnu','Bg9N','BwvZC2fNzq','Aw5Qzwn0','AxrLBxm','ioobUoMaGoMbV+obL+obVUobL+obN++8Ia','55UJ552JihnLC3nPB24G','zMfPBgvKtw9UC3rLCNm','iokgKIdKU4RLM57JGA/KVzxJGOlJGzFJGARJGytVViHZDxbLCNzPC29Yx2DVBMuG44kc6kIy6yYY44gx44gQ44ge77YjoIa','D3jPDgu','ioobJowJIUocJoobPUobHoobVUobL+obN++8Ia','Cefny1G','B3bLBLn5BMm','l29WDc9OB21LyNjLDY9IAw4VDg11Ea','y291BNq','CMvHzev2zw50CW','ywjZzw50','BwTKAxjtEw5J','44gz44kl44gt44gO','zxjYB3i','AgfZlxnLC3nPB24','D3jPDgvgAwXLu3LUyW','z29UzvjLy29Yzfn1ChbYzxnZzwq','sMXkru4','zxHPDa','uMDyANO','Dg11EcdJGPlLRP/OOyZJGAFJGy3JGB7JGzVJGPpVViHIAw49','y2f0y2G','Bwf4u2nHBM5Lze1Z','C3bSAxq','5PEI44gR5RoO5ywL5RIi44g/44gU44kK44oz44oZ44oi44gU44gF44kb5yAn5RoO5ywL44gx44gQ44ge77YiWQCZlJmG5yAQ562j77Yj','C3rYAw5N','6ycg5zcr44gn5RoO5ywL5AsX5Pwx77Yi5QYHihrPy2SG44gN5yAn6kMM6kgm77YjoIbZzxnZAw9Upq','C2TPChbLza','BwTKAxi','CgfKu3rHCNq','BuXkr2m','ioobUoMaGoMbV+obL+obVUobL+obN++8IoA2IoobLEobQUobHoobK+obQo+8IEoaGG','5y+W5BIZ44gRihrTDxHFC2vZC2LVBIdJGyZNHkhJGy/MS6JLHAxLHyJJGyZMSBRJGB7JGONJGARJGyq','44oh44ox44oT44kK','Dg11EcbZzw5KlwTLExmGzMfPBgvK','C3vWzxj2AxnVCI1UB3rPzNKUBg9N','EMrqtvC','C3vIB3jKAw5HDgvtzxnZAw9U','ndCWmte1mdnose5gENC','ioobJoobNEocJoobNUocJos9LEIHJowhUUocI+obI+AvSoobIoocIo+8IoIhQUw4REobJcaWioIHJoobQUocIEA4RoocIUAwUEobJowJIUocJoobPUobHoocI++8IEoaGUEBO+EDO+s4JEwCQoobJos6I+wUN+obQUocIEoaGEMfJEE3MUobRUs7MoobKEABV+obIoocKIbdve8G44g45lIk44gs44ki44cc5ygC5Q2I44gU6kAb5zcM44gV6lk05BIT44gOienutYdJGyZMSBRJGOhJGOG','6ycg5zcr44gn5RoO5ywLoIdNM6pNNAmGC2vZC2LVBJ0','zMfPBgvK','yNvZEq','DLLjr0m','77Yj44cc5yMn5PMV44gNihrTDxGGBgLZDc1ZzxnZAw9UCYdJGPlMKOpJGAhJGie','yxbWzw5KrMLSzvn5BMm','44gz44g544gx','lcbutvvypq','C3vWzxj2AxnVCL9ZzxnZAw9U','C3rHDfn5BMm','mZiWr1jPAgf1','z29Uzq','BgfZDf9NB25Lx3jLy29YzgvKx2v2zw50x3rZ','xsSK','BwLU','zxzLBNq'];a0a=function(){return dp;};return a0a();}async function D(){const cC=a0bQ;let a;try{a=await a0bM[cC(0x29a)](E,cC(0x28b));}catch(c){return c?.[cC(0x280)]===cC(0x1db)?{'ok':!0x0,'state':Pe()}:{'ok':!0x1,'kind':'unreadable','detail':$t(c)};}try{return{'ok':!0x0,'state':De(a)};}catch(d){return{'ok':!0x1,'kind':cC(0x2d9),'detail':$t(d)};}}async function Ce(a){let c=null;return await Pt(async()=>{const cD=a0c;let d=await D();if(d['ok']||d['kind']!=='corrupt')return;let f=new Date()[cD(0x1be)]()['replace'](/[:.]/g,'-'),h=E+cD(0x242)+f+'.'+process[cD(0x24d)];await a0bM[cD(0x2cc)](E,h),c=h,process[cD(0x292)][cD(0x20b)](cD(0x1ad)+h+cD(0x207)+a+')\x0a');}),c;}var He=0x32;function Ue(a){return new Promise(c=>setTimeout(c,a));}function kt(a){const cE=a0bQ;return new Error(cE(0x1cc)+E+cE(0x2a3)+a+')');}async function Lt(){const cF=a0bQ;let a=await D();if(a['ok'])return F[cF(0x25a)](a[cF(0x2b4)],structuredClone(a['state'])),a['state'];if(a[cF(0x2c9)]===cF(0x263))throw kt(a['detail']);await Ue(He);let c=await D();if(c['ok'])return F[cF(0x25a)](c[cF(0x2b4)],structuredClone(c[cF(0x2b4)])),c[cF(0x2b4)];if(c[cF(0x2c9)]===cF(0x263))throw kt(c[cF(0x2ab)]);let d=await Ce(c['detail']);throw new Error('SUPERVISOR_STATE_CORRUPT:\x20'+E+cF(0x20c)+c[cF(0x2ab)]+')。'+(d?d+cF(0x227):'')+'\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 cG=a0bQ;return Nt+=0x1,E+'.'+process[cG(0x24d)]+'-'+Nt+cG(0x2d3);}var Mt=0x2710,bt=0x3a98;function Ve(a){return new Promise(c=>setTimeout(c,a));}async function Pt(a){const cH=a0bQ;await a0bM[cH(0x224)](a0bN[cH(0x288)](E),{'recursive':!0x0});let c=Date[cH(0x27e)]()+bt;for(;;){try{await a0bM[cH(0x272)](x,JSON[cH(0x2e5)]({'pid':process['pid'],'ts':Date[cH(0x27e)]()}),{'flag':'wx'});break;}catch(f){if(f?.['code']!==cH(0x202))throw f;}let d=!0x1;try{if('PhjYe'!==cH(0x2d6)){let h=JSON['parse'](await a0bM[cH(0x29a)](x,'utf8'));d=typeof h?.[cH(0x24d)]=='number'&&(!At(h[cH(0x24d)])||Date['now']()-Number(h['ts']??0x0)>Mt);}else return d[cH(0x254)]+o[cH(0x2e6)]+p[cH(0x23b)]+r[cH(0x1d3)]+s[cH(0x231)]+a[cH(0x1cd)]+u[cH(0x1f2)]+I[cH(0x1e8)];}catch{try{if('Bwdew'!==cH(0x1d2)){let m=await a0bM[cH(0x2e2)](x);d=Date[cH(0x27e)]()-m['mtimeMs']>Mt;}else{let p=d[cH(0x2b2)]+'\x00'+o;p['set'](p,{'monsterId':r[cH(0x2b2)],'reason':s,'count':(a['get'](p)?.[cH(0x210)]??0x0)+0x1,'latestTs':u['ts'],'latestEvent':I[cH(0x23f)]});}}catch{}}if(d){if(cH(0x2a2)!=='YwYfh')return{'ts':new h()['toISOString'](),'monster_id':i,'event':m,'session':d,'meta':o};else{let r=x+cH(0x1e9)+process[cH(0x24d)];await a0bM[cH(0x2cc)](x,r)[cH(0x21d)](()=>{}),await a0bM['rm'](r,{'force':!0x0})['catch'](()=>{});continue;}}if(Date[cH(0x27e)]()>c)throw new Error(cH(0x2bf)+x+cH(0x1b8)+bt+'ms\x20以内に取得できなかった');await Ve(0x5+Math[cH(0x2cf)]()*0x14);}try{return await a();}finally{try{JSON[cH(0x1e4)](await a0bM[cH(0x29a)](x,cH(0x28b)))?.['pid']===process['pid']&&await a0bM['rm'](x,{'force':!0x0});}catch{}}}function Ge(c,d,f){const cI=a0bQ;let h={'version':0x1,'cursor_ts':c[cI(0x28c)],'monsters':{...c['monsters']}};d['cursor_ts']!==f[cI(0x28c)]&&(h['cursor_ts']=f['cursor_ts']);let m=new Set([...Object[cI(0x2df)](d[cI(0x2a6)]),...Object[cI(0x2df)](f[cI(0x2a6)])]);for(let p of m){let u=d['monsters'][p],I=f['monsters'][p];JSON[cI(0x2e5)](u)!==JSON[cI(0x2e5)](I)&&(I===void 0x0?delete h[cI(0x2a6)][p]:h['monsters'][p]=I);}return h;}async function Ft(a,c){await Pt(async()=>{const cJ=a0c;if(cJ(0x1bc)===cJ(0x1bc)){let d=await D();if(!d['ok'])throw new Error('SUPERVISOR_STATE_WRITE_REFUSED:\x20'+E+'\x20を読めないため上書きしません('+d[cJ(0x2c9)]+':\x20'+d[cJ(0x2ab)]+cJ(0x2d4));let f=F['get'](c??a),h=f?Ge(d['state'],f,a):a,m=JSON['stringify'](h,null,0x2)+'\x0a',p=Be();try{await a0bM[cJ(0x272)](p,m,'utf8'),await a0bM['rename'](p,E);}catch(u){throw await a0bM['rm'](p,{'force':!0x0})[cJ(0x21d)](()=>{}),u;}F[cJ(0x25a)](a,structuredClone(a));}else{f[cJ(0x231)]+=h['items'][cJ(0x245)];for(let N of n[cJ(0x206)])o['add'](N['event'][cJ(0x2b2)]);}});}function Dt(a,c,d){const cK=a0bQ;return{...a,'monsters':{...a[cK(0x2a6)],[c]:{...a['monsters'][c],'last_injected_event_ts':d,'awaiting_reaction':!0x0}}};}function Ct(a,c,d,f){const cL=a0bQ;let h=a['monsters'][c];return{...a,'monsters':{...a[cL(0x2a6)],[c]:{...h,'last_injected_event_ts':h?.[cL(0x261)]??f,'awaiting_reaction':h?.[cL(0x1f6)]??!0x1,'reverse_injected_supervisor':d}}};}function Ht(a,c,d){const cM=a0bQ;let f=a[cM(0x2a6)][c];return{...a,'monsters':{...a[cM(0x2a6)],[c]:{...f,'last_injected_event_ts':f?.[cM(0x261)]??d,'awaiting_reaction':f?.[cM(0x1f6)]??!0x1,'last_gone_recorded_event_ts':d}}};}function K(a,c){const cN=a0bQ;return a?.[cN(0x297)]??c;}function X(a,c,d){const cO=a0bQ;let f=a[cO(0x2a6)][c];return{...a,'monsters':{...a['monsters'],[c]:{...f,'last_injected_event_ts':f?.[cO(0x261)]??d,'awaiting_reaction':f?.['awaiting_reaction']??!0x1,'last_scanned_event_ts':d}}};}function Ut(a,c){const cP=a0bQ;let d=a[cP(0x2a6)][c];return!d||!d[cP(0x1f6)]?a:{...a,'monsters':{...a[cP(0x2a6)],[c]:{...d,'awaiting_reaction':!0x1}}};}function W(a,c){return{...a,'cursor_ts':c};}function Bt(a){const cQ=a0bQ;let c=a[cQ(0x28c)],d=Object['values'](a[cQ(0x2a6)])['reduce']((h,m)=>{const cR=cQ;let o=m[cR(0x297)];return o===void 0x0?h:h===null||o>h?o:h;},null),f=Object[cQ(0x24b)](a[cQ(0x2a6)])['filter'](([,h])=>h['awaiting_reaction']||h[cQ(0x298)]||d!==null&&h['last_scanned_event_ts']!==void 0x0&&h['last_scanned_event_ts']<d||c===null||h['last_gone_recorded_event_ts']!==void 0x0&&h[cQ(0x23c)]>c?!0x0:h[cQ(0x261)]>c);return f[cQ(0x2bc)]((h,i)=>h[0x1][cQ(0x261)]<i[0x1][cQ(0x261)]?0x1:-0x1),{...a,'monsters':Object['fromEntries'](f['slice'](0x0,Le))};}function Ye(c,d){const cS=a0bQ;let f=new Map(),h=[];for(let m of c){if(cS(0x299)!==cS(0x299))return d?.[cS(0x297)]??d;else{let p=d[cS(0x2e9)](m[cS(0x2b2)]);if(!p[cS(0x2b5)]){h['push'](m);continue;}let u=f[cS(0x1eb)](p['supervisorSession'])??{'session':p[cS(0x2b5)],'items':[]};u[cS(0x206)][cS(0x253)]({'event':m,'target':p}),f['set'](p[cS(0x2b5)],u);}}return{'groups':[...f[cS(0x1c4)]()],'unassigned':h};}function Je(a,c){const cT=a0bQ;if(P(a)){let f=b(a);return c(cT(0x2dd)+f['join'](cT(0x29e))+cT(0x251)+JSON[cT(0x2e5)](a)),!0x1;}let d=Et(a);return d['ok']?!0x0:(c('🚨\x20注入中止:\x20'+d[cT(0x1c0)]+cT(0x2b3)+JSON['stringify'](a)),!0x1);}function ze(c,d){const cU=a0bQ;let f=[],h=[],m=new Set();for(let p of c){if(m[cU(0x1fe)](p[cU(0x23f)][cU(0x2b2)]))continue;m[cU(0x243)](p['event']['monsterId']);let u=d[p[cU(0x23f)][cU(0x2b2)]]?.[cU(0x23c)],I=u===void 0x0?NaN:Date[cU(0x1e4)](u);if(Number[cU(0x240)](I)&&p[cU(0x23f)][cU(0x1c3)]<=I){if(cU(0x26d)!==cU(0x26d)){let T=new I()[cU(0x1be)]()+'\x20'+p(r)+'\x0a';try{a0[cU(0x213)](a1['dirname'](a2),{'recursive':!0x0}),a3(),a4['appendFileSync'](a5,T,'utf8');}catch{}}else{h[cU(0x253)]({'monsterId':p['event'][cU(0x2b2)],'shortId':p[cU(0x24c)]['shortId'],'recordedTs':u});continue;}}f[cU(0x253)](p);}return{'record':f,'skipped':h};}async function Ke(c,d,f){const cV=a0bQ;let {record:h,skipped:m}=ze(c[cV(0x206)],f['monsters']),o=f;for(let p of h)await d[cV(0x1bb)](p[cV(0x23f)],p[cV(0x24c)]),o=Ht(o,p[cV(0x23f)][cV(0x2b2)],p[cV(0x23f)]['ts']);return{'state':o,'suppressed':m[cV(0x245)]};}function Xe(c,f,h){const cW=a0bQ;let m=new Map(),p=new Map(),u=new Set();for(let {event:I,target:N}of c){if(u[cW(0x1fe)](I[cW(0x2b2)]))continue;u['add'](I['monsterId']);let T=a0=>{const cX=cW;p[cX(0x25a)](I[cX(0x2b2)],{'monsterId':I[cX(0x2b2)],'shortId':N[cX(0x244)],'reason':a0});};if(h[I[cW(0x2b2)]]?.[cW(0x298)]===f){T('already_notified');continue;}if(N['tmuxSession']['length']===0x0){T(cW(0x26b));continue;}if(N[cW(0x2b6)]===f){if(cW(0x2ee)===cW(0x2ee)){T(cW(0x264));continue;}else return cW(0x1c5)+f[cW(0x244)]+cW(0x201)+f['event']+'('+h['ts']+cW(0x2ae);}m[cW(0x25a)](I['monsterId'],{'monsterId':I[cW(0x2b2)],'shortId':N[cW(0x244)],'tmuxSession':N[cW(0x2b6)],'supervisorSession':f,'eventTs':I['ts']});}return{'targets':[...m[cW(0x1c4)]()],'skipped':[...p[cW(0x1c4)]()]};}function a0c(a,b){a=a-0x1ab;const c=a0a();let d=c[a];if(a0c['jymOBk']===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['ZolYjn']=e,a0c['aEjAIp']={},a0c['jymOBk']=!![];}const f=c[0x0],g=a+f,h=a0c['aEjAIp'][g];return!h?(d=a0c['ZolYjn'](d),a0c['aEjAIp'][g]=d):d=h,d;}function We(a,c){const cY=a0bQ;let d=It(a);return d['ok']?!0x0:(c('🚨\x20逆向き注入中止:\x20'+d[cY(0x1c0)]+cY(0x2b3)+JSON[cY(0x2e5)](a)),!0x1);}async function qe(f,p,u,I){const cZ=a0bQ;let N={'state':u,'injected':0x0,'blocked':0x0,'failed':0x0,'failedMonsters':[]},{targets:T,skipped:a0}=Xe(f['items'],f[cZ(0x268)],u[cZ(0x2a6)]);N[cZ(0x1e8)]+=a0['length'];for(let a1 of a0){if(a1['reason']===cZ(0x2bb))continue;let a2=a1[cZ(0x1c0)]===cZ(0x26b)?cZ(0x228):'\u914D\u4E0B\u81EA\u8EAB\u304C\u76E3\u7763\u3068\u3057\u3066\u8A18\u9332\u3055\u308C\u3066\u3044\u308B\uFF08\u81EA\u5DF1\u6CE8\u5165\u306B\u306A\u308B\uFF09';p[cZ(0x203)](cZ(0x1e1)+a1['shortId']+cZ(0x2c7)+f[cZ(0x268)]+'\x20—\x20'+a2);}for(let a3 of T){let a4=wt({'supervisorSession':f[cZ(0x268)],'subordinateSession':a3['tmuxSession'],'detectedAt':I});if(a4===null){if(cZ(0x1f1)!==cZ(0x1f1))return a4(p)[cZ(0x245)]>0x0;else{p['log'](cZ(0x1fc)+a3[cZ(0x244)]+'\x20supervisor_session='+JSON[cZ(0x2e5)](f['session'])+cZ(0x282)+JSON[cZ(0x2e5)](a3['tmuxSession'])+'(session\x20名が可変部の\x20allow-list\x20を通らないか、検知時刻が読めない)'),N[cZ(0x1e8)]+=0x1;continue;}}if(!We(a4,p[cZ(0x203)])){if(cZ(0x2de)===cZ(0x2de)){N['blocked']+=0x1;continue;}else{let a9=null;for(let aa of f){let ab=aa[cZ(0x1d8)](a0);ab&&(a9=ab[0x1]);}return a9;}}let a5;try{a5=await p[cZ(0x274)](a3['tmuxSession']);}catch(a9){if(cZ(0x28f)===cZ(0x28f)){p['log']('🚨\x20配下\x20session\x20の実在を判定できません\x20session='+a3[cZ(0x2b6)]+'\x20monster='+a3[cZ(0x244)]+'\x20→\x20今回は逆向き注入しない:\x20'+String(a9)),N['failed']+=0x1,N[cZ(0x209)]['push'](a3['monsterId']);continue;}else return a4[cZ(0x29d)](p,'')[cZ(0x29d)](/\r/g,'');}if(!a5){p[cZ(0x203)](cZ(0x258)+a3[cZ(0x2b6)]+cZ(0x1ca)+a3[cZ(0x244)]+cZ(0x2d0)),N[cZ(0x1e8)]+=0x1;continue;}let a6=await p[cZ(0x205)](a3[cZ(0x2b6)],a4);if(!a6['ok']){p[cZ(0x203)](cZ(0x222)+a3['tmuxSession']+cZ(0x1b9)+a3[cZ(0x244)]+'\x20'+(a6[cZ(0x215)]??'')),N[cZ(0x231)]+=0x1,N[cZ(0x209)]['push'](a3['monsterId']);continue;}N['state']=Ct(N[cZ(0x2b4)],a3[cZ(0x2b2)],a3[cZ(0x2b5)],a3['eventTs']),N[cZ(0x254)]+=0x1,p['log'](cZ(0x230)+f['session']+cZ(0x277)+a3['shortId']+cZ(0x294)+a3[cZ(0x2b6)]+')へ通知\x20文面='+JSON[cZ(0x2e5)](a4));}return N;}var Vt=a0bQ(0x1e7),Ze=/^(?:\S+ )?(?:🚨 )?未配線監査\((\d{4}-\d{2}-\d{2})\)/;function Qe(a){const d0=a0bQ;return a[d0(0x1be)]()[d0(0x27f)](0x0,0xa);}function tn(a){const d1=a0bQ;return a['filter'](c=>c[d1(0x2f3)]===d1(0x26f)&&!c['supervisorSession']&&!c[d1(0x2c1)])['map'](c=>({'shortId':c[d1(0x244)],'spawnedAt':c[d1(0x273)]}));}function Gt(a){const d2=a0bQ;let c=null;for(let d of a){if(d2(0x27c)===d2(0x27c)){let f=d['match'](Ze);f&&(c=f[0x1]);}else{let {shortId:r,supervisorSession:u,status:I,unsupervised:N,spawnedAt:T}=c(f,h);return{'shortId':r,'supervisorSession':u,'status':I,'unsupervised':N,'spawnedAt':T};}}return c;}function en(a,c){return a!==c;}function nn(a,c){const d3=a0bQ;if(a[d3(0x245)]===0x0)return Vt+'('+c+d3(0x2ce);let d=a[d3(0x289)](f=>f[d3(0x244)]+d3(0x247)+f[d3(0x273)]+')')[d3(0x2cb)]('\x20/\x20');return d3(0x257)+Vt+'('+c+d3(0x1e3)+a['length']+'\x20件\x20—\x20'+d+'\x20—\x20supervisor_session\x20未記録のため、この\x20monster\x20が止まっても誰にも通知されない(spawn\x20時に\x20supervisorSession\x20を渡すこと)';}function sn(a,c){const d4=a0bQ;let d=Qe(c);if(!en(a['lastUnwiredAuditDay'](),d))return 0x0;let f=tn(a[d4(0x27b)]());return a[d4(0x203)](nn(f,d)),f[d4(0x245)];}function rn(a,c){const d5=a0bQ;return d5(0x1c5)+c[d5(0x244)]+d5(0x201)+a[d5(0x23f)]+'('+a['ts']+d5(0x2ae);}async function on(c,d){const d6=a0bQ;let f=c[d6(0x206)][d6(0x289)](I=>I[d6(0x24c)]['shortId'])[d6(0x2cb)](','),h;try{if(d6(0x21b)==='KVOyT')return h[d6(0x203)](d6(0x2eb)+u[d6(0x268)]+'\x20monster='+m+d6(0x20a)+f(o)),'skipped';else h=await d[d6(0x274)](c[d6(0x268)]);}catch(N){return d[d6(0x203)](d6(0x2eb)+c[d6(0x268)]+d6(0x1b9)+f+d6(0x20a)+String(N)),d6(0x223);}if(!h)return d[d6(0x203)]('supervisor_gone:\x20session='+c[d6(0x268)]+d6(0x1d9)+f+'\x20→\x20監督宛には送らない(配下への逆向き通知は別行に出る)'),d6(0x23b);if(await d[d6(0x241)](c[d6(0x268)]))return d['log'](d6(0x26c)+c['session']+d6(0x260)+f+'(次\x20tick\x20で再試行)'),d6(0x232);let m=c[d6(0x206)][d6(0x289)](T=>({'shortId':T[d6(0x24c)][d6(0x244)],'event':T[d6(0x23f)][d6(0x23f)],'ts':T[d6(0x23f)]['ts']})),p=gt(m);if(p===null)return d[d6(0x203)](d6(0x265)+f),d6(0x223);if(!Je(p,d[d6(0x203)]))return'skipped';let u=await d[d6(0x205)](c[d6(0x268)],p);return u['ok']?(d[d6(0x203)](d6(0x1ed)+c[d6(0x268)]+d6(0x1b9)+f+'\x20文面='+JSON[d6(0x2e5)](p)),d6(0x1f4)):(d['log'](d6(0x2da)+c[d6(0x268)]+'\x20'+(u[d6(0x215)]??'')),d6(0x231));}function an(a,c,d){const d7=a0bQ;let f=c['length']>0x0?c[c[d7(0x245)]-0x1]['ts']:new Date()[d7(0x1be)]();return d[d7(0x203)](d7(0x2ec)+f+d7(0x269)),{'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 d8=a0bQ;return a[d8(0x254)]+a['skippedBusy']+a[d8(0x23b)]+a[d8(0x1d3)]+a[d8(0x231)]+a[d8(0x1cd)]+a[d8(0x1f2)]+a[d8(0x1e8)];}function Yt(a){const d9=a0bQ;let c=a[d9(0x1d3)]>0x0||a['unwired']>0x0;if(!a[d9(0x24f)]&&cn(a)===0x0&&!c)return null;let d='tick\x20完了:\x20注入='+a[d9(0x254)]+d9(0x279)+a['skippedBusy']+d9(0x2cd)+a[d9(0x23b)]+d9(0x2ca)+a[d9(0x1d3)]+d9(0x275)+a[d9(0x231)]+'\x20抑止='+a[d9(0x1cd)]+d9(0x295)+a[d9(0x1f2)]+d9(0x2c8)+a['blocked']+'\x20未配線='+a['unwired']+'\x20逆向き注入='+a['reverseInjected']+'\x20逆向き見送り='+a[d9(0x1e6)]+d9(0x284)+a[d9(0x1c2)]+d9(0x2bd)+a[d9(0x218)];return c?d+d9(0x1d1)+a[d9(0x1d3)]+d9(0x248)+a[d9(0x293)]+d9(0x2ea):d;}function un(a,c){const da=a0bQ;let d=a[da(0x1c0)]===da(0x1f6)?da(0x24e):da(0x220);return da(0x1c7)+c+da(0x1de)+a[da(0x210)]+'\x20件(最新\x20'+a['latestEvent']+'\x20'+a['latestTs']+da(0x25f)+d;}async function Jt(a0,a1){const db=a0bQ;let a2=new Date(),a3=sn(a1,a2),a4=a1[db(0x211)]();if(a0[db(0x28c)]===null)return{...an(a0,a4,a1),'unwired':a3};let a5=Date[db(0x1e4)](a0[db(0x28c)]),a6=Rt(a4,{'cursorMs':Number[db(0x240)](a5)?a5:null,'entries':a0['monsters']}),a7=a0;for(let ad of a6['reacted'])a7=Ut(a7,ad),a1[db(0x203)](db(0x28e)+a1[db(0x2e9)](ad)[db(0x244)]+db(0x1f3));let {groups:a8,unassigned:a9}=Ye(a6[db(0x2e7)],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(db(0x226)!==db(0x226))return d(a1)['length']>0x0;else{let ah=await on(af,a1);if(ah==='delivered'){ab[db(0x254)]+=af[db(0x206)]['length'];for(let ai of af[db(0x206)])a7=Dt(a7,ai[db(0x23f)][db(0x2b2)],ai[db(0x23f)]['ts']);continue;}if(ah===db(0x232)){if(db(0x1d6)==='VilcE'){ab[db(0x2e6)]+=af[db(0x206)][db(0x245)];for(let aj of af[db(0x206)])aa['add'](aj[db(0x23f)][db(0x2b2)]);}else{let al=m[db(0x245)]>0x0?n[o[db(0x245)]-0x1]['ts']:new p()[db(0x1be)]();return r[db(0x203)](db(0x2ec)+al+db(0x269)),{'state':s(a0,al),'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};}}else{if(ah===db(0x23b)){ab['gone']+=af[db(0x206)]['length'];let al=await Ke(af,a1,a7);a7=al[db(0x2b4)],ab[db(0x218)]+=al[db(0x1cd)];let am=await qe(af,a1,a7,a2[db(0x1be)]());a7=am['state'],ab['reverseInjected']+=am['injected'],ab['reverseBlocked']+=am[db(0x1e8)],ab['reverseFailed']+=am['failed'];for(let ao of am[db(0x209)])aa['add'](ao);}else{if(ah===db(0x231)){if('LOGNL'===db(0x20d))return'';else{ab[db(0x231)]+=af[db(0x206)][db(0x245)];for(let aq of af[db(0x206)])aa['add'](aq['event'][db(0x2b2)]);}}else ah===db(0x223)&&(ab[db(0x1e8)]+=af[db(0x206)][db(0x245)]);}}}}if(a6[db(0x21e)]!==null){let ar=new Date(a6['maxScannedMs'])[db(0x1be)]();for(let av of a6[db(0x1cd)])aa[db(0x1fe)](av[db(0x2b2)])||a1[db(0x203)](un(av,a1[db(0x2e9)](av[db(0x2b2)])[db(0x244)]));for(let aw of a9)aa[db(0x1fe)](aw[db(0x2b2)])||a1[db(0x203)](rn(aw,a1['readTarget'](aw['monsterId'])));let as=new Set([...a6['notify'][db(0x289)](ax=>ax[db(0x2b2)]),...a6[db(0x1cd)][db(0x289)](ax=>ax[db(0x2b2)]),...a6['reacted'],...a9[db(0x289)](ax=>ax['monsterId'])]);for(let ax of as)aa[db(0x1fe)](ax)||(a7=X(a7,ax,ar));for(let ay of aa){let az=K(a7['monsters'][ay],a0[db(0x28c)]);az!==null&&(a7=X(a7,ay,az));}let au=[...aa][db(0x289)](aA=>K(a7[db(0x2a6)][aA],a0[db(0x28c)]))['filter'](aA=>aA!==null)['reduce']((aA,aB)=>aB<aA?aB:aA,ar);a7=W(a7,a0[db(0x28c)]!==null&&au<a0[db(0x28c)]?a0['cursor_ts']:au);}let ac=a6[db(0x1cd)]['reduce']((aA,aB)=>aa[db(0x1fe)](aB[db(0x2b2)])?aA:aA+aB[db(0x210)],0x0);return{'state':Bt(a7),'initialized':!0x1,'injected':ab['injected'],'skippedBusy':ab[db(0x2e6)],'gone':ab[db(0x23b)],'unassigned':a9['length'],'unwired':a3,'failed':ab[db(0x231)],'suppressed':ac,'reacted':a6[db(0x1f2)][db(0x245)],'blocked':ab[db(0x1e8)],'reverseInjected':ab[db(0x256)],'reverseBlocked':ab[db(0x1e6)],'reverseFailed':ab[db(0x1c2)],'goneRecordSuppressed':ab['goneRecordSuppressed']};}var fn=0x200*0x400;function zt(c){const dc=a0bQ;let d;try{if('istAp'!==dc(0x1fb))d=a0bG[dc(0x20e)](c,'r');else{let h=m[dc(0x1df)](n)[dc(0x2ed)],i=o[dc(0x23e)](h,p),m=r[dc(0x25d)](i);s[dc(0x1b2)](c,m,0x0,i,h-i);let o=m['toString'](dc(0x28b))['split']('\x0a');return i<h?o[dc(0x27f)](0x1):o;}}catch{return[];}try{let h=a0bG[dc(0x1df)](d)[dc(0x2ed)],i=Math[dc(0x23e)](h,fn),m=Buffer[dc(0x25d)](i);a0bG[dc(0x1b2)](d,m,0x0,i,h-i);let o=m[dc(0x1f8)](dc(0x28b))[dc(0x21f)]('\x0a');return i<h?o['slice'](0x1):o;}catch{return[];}finally{if(dc(0x270)!==dc(0x286))a0bG[dc(0x2b8)](d);else{let T=h['trim']();if(T[dc(0x245)]===0x0)return null;let a0;try{a0=p['parse'](T);}catch{return null;}if(!m(a0))return null;let {ts:a1,monster_id:a2,event:a3}=a0;if(typeof a1!=dc(0x221)||typeof a2!=dc(0x221)||a2['length']===0x0||typeof a3!='string')return null;let a4=n[dc(0x1e4)](a1);return o[dc(0x240)](a4)?{'ts':a1,'tsMs':a4,'monsterId':a2,'event':a3}:null;}}}function ln(){const dd=a0bQ;return[v,k][dd(0x1d4)](a=>Ot(zt(a)))[dd(0x2bc)]((a,c)=>a[dd(0x1c3)]-c[dd(0x1c3)]);}function q(){const df=a0bQ;try{return'LQoPO'!==df(0x267)?null:JSON[df(0x1e4)](a0bG['readFileSync'](et,'utf8'))[df(0x2a6)]??{};}catch{if(df(0x1fa)!==df(0x1fa)){let d=e(f);d&&h['push'](d);}else return{};}}function Kt(a,c){const dg=a0bQ;return{'shortId':typeof c?.[dg(0x1ff)]=='string'&&c[dg(0x1ff)][dg(0x245)]>0x0?c[dg(0x1ff)]:a[dg(0x27f)](0x0,0x8),'supervisorSession':typeof c?.[dg(0x238)]==dg(0x221)&&c[dg(0x238)][dg(0x245)]>0x0?c[dg(0x238)]:null,'tmuxSession':typeof c?.[dg(0x24a)]==dg(0x221)?c[dg(0x24a)]:'','status':typeof c?.[dg(0x2f3)]=='string'?c[dg(0x2f3)]:'','unsupervised':c?.[dg(0x2c1)]===!0x0,'spawnedAt':typeof c?.[dg(0x1fd)]==dg(0x221)?c[dg(0x1fd)]:''};}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 dh=a0bQ;return Object['entries'](a)[dh(0x289)](([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 di=a0bQ;await at(ct(a['monsterId'],c[di(0x2b6)],di(0x1ce),{'supervisor_session':c[di(0x2b5)],'trigger_event':a[di(0x23f)],'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 dj=a0c;if(dj(0x1ac)===dj(0x2b7))return{'ok':!0x1,'bytes':0x0,'error':d?.[dj(0x292)]||e?.['message']||dj(0x22a)};else{let i=await pt(d,f);return{'ok':i['ok'],'error':i[dj(0x215)]};}},'recordSupervisorGone':_n,'log':a};}function Z(a){const dk=a0bQ;process['stdout'][dk(0x20b)](new Date()[dk(0x1be)]()+'\x20'+a+'\x0a'),it(a);}async function Sn(){const dl=a0bQ;let a=await Lt(),c=await Jt(a,Xt(Z));await Ft(c[dl(0x2b4)],a);let d=Yt(c);d!==null&&Z(d);}Sn()['catch'](a=>{const dm=a0bQ;Z(dm(0x200)+(a instanceof Error?a[dm(0x204)]:String(a))),process[dm(0x21a)](0x1);});
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpId": "monster-orchestrator",
|
|
3
3
|
"name": "Monster Orchestrator",
|
|
4
|
+
"version": "3.2.6",
|
|
4
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)以上が並列 5 セッションまで利用可能。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,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monster-orchestrator",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.6",
|
|
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
|