@funny-booth/playwright-profile-mcp 0.1.8 → 0.1.10

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.
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ // 秘密を入れたあとに、値を読み戻させない(第5回 セキュリティチェック)。
3
+ //
4
+ // browser_fill_secret は値を会話に出さずに入れるが、入れたあとにページの中で JS を動かせば値を読み戻せる
5
+ // (page.inputValue()、base64 にして伏せ字をすり抜ける等)。入れる前に JS を動かせば、偽のページ(page.route)や
6
+ // 値を外へ送る仕掛けを置いてから入れさせられる。そこで子(@playwright/mcp)の道具を次のように分けて扱う:
7
+ //
8
+ // process_js : 子のプロセスで任意の JS を動かす(browser_run_code_unsafe)。仕掛けはブラウザを閉じても子に残る
9
+ // page_js : ページの中で任意の JS を動かす(browser_evaluate、javascript: の URL を開く browser_navigate / browser_tabs)
10
+ // image : 画面の画像を返す(browser_take_screenshot)。画像の中の値は伏せられない(「パスワードを表示」を押せば見える)
11
+ // close : ブラウザを閉じる(browser_close)。ページの値はここで消える
12
+ // safe : それ以外の、下の一覧にある道具。返事の文は redactSecrets で伏せる
13
+ // 一覧に無い道具(子の版上げ・--caps で増えたもの)は process_js として扱う(分からないものは止める側に倒す)
14
+ //
15
+ // 決まり:
16
+ // ・入れたあと(filled)は process_js / page_js / image を断り、filename(伏せられないファイルへの書き出し)も断る
17
+ // ・page_js を使ったブラウザ(閉じるまで)、process_js を使った子(起動し直すまで)には、秘密を入れない
18
+ // ・browser_close で filled と page_js の跡が消える。子を起動し直す(プロファイルの切替・用意、落ちた子の起動)と全部消える
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.BLOCKED_FILL_AFTER_JS = exports.BLOCKED_AFTER_FILL = exports.FRESH = void 0;
21
+ exports.toolRisk = toolRisk;
22
+ exports.gateTool = gateTool;
23
+ exports.beforeTool = beforeTool;
24
+ exports.afterTool = afterTool;
25
+ /** @playwright/mcp 0.0.83 の道具のうち、ページの値を読み出せないもの(返事の文は伏せてから返す)。 */
26
+ const SAFE_TOOLS = new Set([
27
+ "browser_resize", "browser_console_messages", "browser_handle_dialog", "browser_emulate_media", "browser_file_upload",
28
+ "browser_drop", "browser_find", "browser_fill_form", "browser_press_key", "browser_type", "browser_navigate",
29
+ "browser_navigate_back", "browser_network_requests", "browser_network_request", "browser_snapshot", "browser_click",
30
+ "browser_drag", "browser_hover", "browser_select_option", "browser_tabs", "browser_wait_for",
31
+ ]);
32
+ function isJavascriptUrl(url) {
33
+ // ブラウザは URL の前後の空白・制御文字と、途中のタブ・改行を無視するので、それを除いてから見る
34
+ return typeof url === "string" && /^javascript:/i.test(url.replace(/[\u0000- ]/g, ""));
35
+ }
36
+ function toolRisk(name, args = {}) {
37
+ if (name === "browser_run_code_unsafe")
38
+ return "process_js";
39
+ if (name === "browser_evaluate")
40
+ return "page_js";
41
+ if (name === "browser_take_screenshot")
42
+ return "image";
43
+ if (name === "browser_close")
44
+ return "close";
45
+ if ((name === "browser_navigate" || name === "browser_tabs") && isJavascriptUrl(args.url))
46
+ return "page_js";
47
+ return SAFE_TOOLS.has(name) ? "safe" : "process_js";
48
+ }
49
+ /** 子を起動した直後の状態。 */
50
+ exports.FRESH = { filled: false, pageJs: false, processJs: false };
51
+ exports.BLOCKED_AFTER_FILL = "断りました: パスワードを入れたあとは、ページの中を直接調べる道具(browser_evaluate・browser_run_code_unsafe・" +
52
+ "javascript: の URL・画面の画像・ファイルへの書き出し)は使えません。ブラウザを閉じる(browser_close)と元に戻ります。" +
53
+ "ページの様子は browser_snapshot で確かめてください。";
54
+ exports.BLOCKED_FILL_AFTER_JS = "断りました: このブラウザでは、ページの中で JS を動かす道具が使われたため、秘密を入れません(入れる前に仕掛けを置けるため)。";
55
+ /** 子の道具(と browser_fill_secret)を今の状態で使ってよいか。断るときは返す文、よければ null。 */
56
+ function gateTool(state, name, args = {}) {
57
+ if (name === "browser_fill_secret") {
58
+ if (state.processJs)
59
+ return `${exports.BLOCKED_FILL_AFTER_JS}browser_switch_profile で開き直してから入れてください。`;
60
+ if (state.pageJs)
61
+ return `${exports.BLOCKED_FILL_AFTER_JS}browser_close で閉じて開き直してから入れてください。`;
62
+ return null;
63
+ }
64
+ if (!state.filled)
65
+ return null;
66
+ const risk = toolRisk(name, args);
67
+ if (risk === "process_js" || risk === "page_js" || risk === "image")
68
+ return exports.BLOCKED_AFTER_FILL;
69
+ if (args.filename !== undefined && args.filename !== null && args.filename !== "")
70
+ return exports.BLOCKED_AFTER_FILL;
71
+ return null;
72
+ }
73
+ /**
74
+ * 子の道具を呼ぶ直前の状態。JS の道具は、動き出した時点で跡を残す(失敗・時間切れでも動いた可能性があり、
75
+ * 同時に呼ばれた browser_fill_secret がその跡を見て断れるように、終わるのを待たない)。
76
+ */
77
+ function beforeTool(state, name, args = {}) {
78
+ const risk = toolRisk(name, args);
79
+ if (risk === "process_js")
80
+ return { ...state, processJs: true };
81
+ if (risk === "page_js")
82
+ return { ...state, pageJs: true };
83
+ return state;
84
+ }
85
+ /** 子の道具を呼んだあとの状態。ok は子がエラーを返さなかったか。閉じたのは成功したときだけ認める。 */
86
+ function afterTool(state, name, args, ok) {
87
+ if (toolRisk(name, args) === "close" && ok)
88
+ return { ...state, filled: false, pageJs: false };
89
+ return state;
90
+ }
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';const _0x1c879a=_0xb80f;(function(_0x105327,_0x2d56ef){const _0x1b644c=_0xb80f,_0x1db4dc=_0x105327();while(!![]){try{const _0xdf6c11=-parseInt(_0x1b644c(0x1cf))/0x1+parseInt(_0x1b644c(0x190))/0x2*(parseInt(_0x1b644c(0x189))/0x3)+parseInt(_0x1b644c(0x1a8))/0x4*(parseInt(_0x1b644c(0x16c))/0x5)+-parseInt(_0x1b644c(0x161))/0x6+parseInt(_0x1b644c(0x1b5))/0x7+-parseInt(_0x1b644c(0x1d9))/0x8+-parseInt(_0x1b644c(0x1b4))/0x9;if(_0xdf6c11===_0x2d56ef)break;else _0x1db4dc['push'](_0x1db4dc['shift']());}catch(_0x16ef2d){_0x1db4dc['push'](_0x1db4dc['shift']());}}}(_0x9415,0x74540));Object[_0x1c879a(0x17b)](exports,'__esModule',{'value':!![]});const hints_1=require(_0x1c879a(0x153)),profiles_1=require(_0x1c879a(0x1e1)),secretFill_1=require('./secretFill'),child_process_1=require(_0x1c879a(0x136)),fs_1=require('fs'),path_1=require('path'),os_1=require('os'),HOME=(0x0,os_1[_0x1c879a(0x1df)])(),DIR=(0x0,path_1[_0x1c879a(0x175)])(HOME,_0x1c879a(0x133)),PROFILES=(0x0,path_1[_0x1c879a(0x175)])(DIR,'profiles.json');function playwrightCli(){const _0x2e076b=_0x1c879a,_0x3cecf9={'PJSbg':_0x2e076b(0x15d)},_0x3730cf=require[_0x2e076b(0x128)](_0x3cecf9[_0x2e076b(0x1c5)]),_0x51a653=JSON[_0x2e076b(0x16f)]((0x0,fs_1['readFileSync'])(_0x3730cf,_0x2e076b(0x148)))[_0x2e076b(0x127)];return(0x0,path_1[_0x2e076b(0x175)])((0x0,path_1[_0x2e076b(0x15b)])(_0x3730cf),Object[_0x2e076b(0x1c4)](_0x51a653)[0x0]);}function ensureDir(){const _0x37e900=_0x1c879a;if(!(0x0,fs_1[_0x37e900(0x1bb)])(DIR))(0x0,fs_1[_0x37e900(0x1e4)])(DIR,{'recursive':!![],'mode':0x1c0});if(!(0x0,fs_1[_0x37e900(0x1bb)])(PROFILES))(0x0,fs_1[_0x37e900(0x1c0)])(PROFILES,JSON[_0x37e900(0x1bd)]({'active':null,'profiles':{}},null,0x2));}function readProfiles(){const _0x2a972a=_0x1c879a,_0x21f02c={'HeTmG':_0x2a972a(0x148)};ensureDir();try{const _0x59c7dd=JSON[_0x2a972a(0x16f)]((0x0,fs_1[_0x2a972a(0x177)])(PROFILES,_0x21f02c[_0x2a972a(0x1b2)]));return{'active':_0x59c7dd['active']??null,'profiles':_0x59c7dd['profiles']??{}};}catch{return{'active':null,'profiles':{}};}}function writeProfiles(_0x23e079){const _0x403546=_0x1c879a,_0x5728a0=PROFILES+'.'+process[_0x403546(0x16e)]+_0x403546(0x1d8);(0x0,fs_1['writeFileSync'])(_0x5728a0,JSON[_0x403546(0x1bd)](_0x23e079,null,0x2)),(0x0,fs_1[_0x403546(0x17d)])(_0x5728a0,PROFILES);}function profileDir(_0x3a2c23){const _0x4ff1ef=_0x1c879a;return(0x0,path_1[_0x4ff1ef(0x175)])(DIR,_0x3a2c23);}function _0x9415(){const _0x3e768c=['yNjVD3nLCL9ZD2L0y2HFChjVzMLSzq','yNjVD3nLCL9Zzxr1Cf9WCM9MAwXL','v0vdAhC','mZmXmdmYvhrXvLzv','thPUr1i','AxnwywXPzfbYB2zPBgvjza','54++5zYO44gU44ow44oP44kM44k244gU44oT44kW44kK44oZ54Q25Owlkhn0B3jHz2uTC3rHDgu6ignVB2TPzs9SB2nHBfn0B3jHz2uP44ks44ox44oT44ov44kH44kK44oR44gR5l+D5A2y44gz44kl44cc5lUL5B6m44gP44gU44k744od44k344oN44oZ44gl44kj44kc5zcm5PMc44gR5yAn5yIP55sO44gN44gn44kl44cc','Aw5PDgLHBgL6zq','lM5LDW','DhjPBq','Dg9tDhjPBMC','C3rYAw5N','yxjNDw1LBNrZ','sgvuBuC','zgf0yq','ntqXmZuWuvH6wwzX','mZmZntm0nK5btMP5Dq','D0rXBhG','yNjVD3nLCL9ZBMfWC2HVDcdJGA7LHAxLIPVMRitJGA4GCMvM77Yi5l6liguXmU+8Iq','yNjVD3nLCKHPBNq','CgLUzW','jYdJGA/MNkRNMBVPJllJGAFJGzNJGii','zxHPC3rZu3LUyW','jYdJGAVLIiFMM7/VViG','C3rYAw5NAwz5','yMXtwMu','44kO44oP44o8oIa','D3jPDgvgAwXLu3LUyW','BwvZC2fNzq','DhLWzq','y2HPBgqGBM90ihj1BM5PBMC','DMfSDwvZ','uePtyMC','y29Kzq','vxLNCwi','ExfmsNC','CMvKywn0u2vJCMv0CW','Cxr6rMm','C3rKAw4','5l+D5A2y5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','qvHvBM0','jYdJGAVJG63JGRdJGQtJG7pNIRBMHyVJGPlKV53LRzJJGzFJGB7JGzFJGz/JGilKU6xLVOZJGANJGA7JGRVJG4pJGRFJG6FJG7pJGAFJGOlJGihJGzpJGA7JG5FJG63JG5xJGQhJGQtJG6VJGAFPLOVJGzhJGBdLKiZJGzJJG63JGRdJGQtJG7pJGAFLP4VJGB7JGORJGB7JGzNJGii','ndCWmJCZCe1Yshrc','tMD4rMG','tgDlwhi','y2XLyxi','5yIh5PU/5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','5l+D5A2y44oT44kW44kK44oZ44gc44kk','y2f0y2G','ls1ZDg9YywDLlxn0yxrL','6kgO56s65zcnkos7U+AeJYK','lNrTCa','mZy0mJy3mLHVtxHqCq','CMvHzfn0B3jHz2vtDgf0zq','zKTOtMe','ENbdAum','Bwv0Ag9Kig5VDcbMB3vUzdOG','yNjVD3nLCL9SAxn0x3bYB2zPBgvZ','Ag9TzwrPCG','AgvHzgXLC3m','lI9WCM9MAwXLCW','44kO44oP44o8oIdKUi3MRApJGAOGChjVzMLSzuLKicC','D1LxuMu','BwTKAxjtEw5J','AgLNEg0','DhvNB3G','B2jQzwn0','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobQ+wKSEAvLZOG','Aw5KzxHpzG','44kO44oP44o8oIdJG63JGRdJGQtJG7pKV53LRzJJG5xJGQhJGQtJG6VJGPlLJ5BJGOROVRZJGOhJGB7JGzVJGPm6ia','D3jPDgu','qKTvsuO','rM9pDNm','zw5K','yMLU','CMvZB2X2zq','44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q77Yi6iUX5PwW5A2x44o7lIbFic0GqcaR44cc44oH44o844oR44kI44oj44oS44k544kc5y+V77Yj','C2v0','tM5zt2O','zxjYB3i','CMvSzwfZzvnLy3jLDa','C2XPy2u','AgfZ','zePODhi','u0nqDeG','mc4XlJa','lMz1BM55lwjVB3rOlxbSyxL3CMLNAhq','CgXHExDYAwDODc1WCM9MAwXLlw1JCa','zgvMyxvSDa','y2HPBgrFChjVy2vZCW','6yEr5BQR44gU56Ey5A+g44gU5zcn5yMn77YiBgLZDf9ZzwnYzxrZioobP+EIUUobI+ocGEocIEocJoocI++8Iq','CvPcr3e','yxn5BMmGkhbHz2uPid0+ihSGyxDHAxqGCgfNzs5JB250zxH0kcKUC3rVCMfNzvn0yxrLkhSGCgf0AdOG','BwvYz2vtDg9YywDLu3rHDgu','DuL3uNy','A2LSBa','sg5xweO','y05jsMm','zxHPDa','mI4W','ChD3whq','Dgv4Da','C0zprhu','iIKG44ks5zg844kt44gN44gp44gG44gv44ge77Yi5l+D5A2y44gx44gQ44ge44gO44ow44oP44kM44k244ks6zAj44gy44gF5PMc54k544gN44oT44kW44kK44oZ44gV5RAi44gi44g+44gz77Yj44cc','CNr0tgy','CgXHExDYAwDODc1WCM9MAwXLie1ducbZDgfYDgvKcG','A0LJD3y','DxrMltG','C3bHD24','CgXHExDYAwDODc1WCM9MAwXLlxbYB3H5','BgvUz3rO','EeH6thC','ChjVzMLSzxm','AxnfCNjVCG','ChvZAa','5A6F5zYO44gU44k144kK44oi44gN44gV5Q+o5zUE44cb5PYS5lQ644gU55s76z2I44gR6kIX5y+V44gU56k66kQn44gm5yE644gM44cb6kIX5y+V44gv44km44gF44gO44gn44gG44gr5ywL44km44kl44ccCMvMioobRYbICM93C2vYx3nUyxbZAg90ioobRIbYzwBJGii','Dg9VBhm','5OMl5ywd44gU44oT44kW44kK44oZ5l+D5A2y44ov44kH44kK44oR77YiugXHExDYAwDODcdJGA4GC3rVCMfNzs1ZDgf0zs5QC29U77Yj44gU44or44k544cc5OYh5A6A44gz44kl44gO44gD44gU44oT44kW44kK44oZ44ks5y+w44kk6l6844kt44gN6zAl44gpkos7U+AeJYK','lI9OAw50CW','sgzNq2q','AgfUzgXLigvYCM9YoIa','wKfsv2C','tNbQteS','Aw1WB3j0u3rVCMfNzvn0yxrL','zhHQy3C','ru9Vve4','zgLYBMfTzq','yM9VBgvHBG','qhbSyxL3CMLNAhqVBwnWl3bHy2THz2uUANnVBG','AgfZtg9NAw4','jYdJGA/MNkRNMBVPJllJGAFJGzNJGilLHyJJGASGyNjVD3nLCL9Zzxr1Cf9WCM9MAwXLioocKUwUN+IHJoobL+obPUobJ+obOoobLEobHooaGG','y0TjDeC','mtq0ndyZogPHtMXPEq','qhbSyxL3CMLNAhqVBwnWioobJoE1GUs6HUobL+obVUobL+obN++8IgnVzguG','Dg9VBhmVy2fSBa','yNjVD3nLCL9YDw5Fy29Kzv91BNnHzMu','y2HPBgqGzxjYB3i','zMLSBfnLy3jLDa','C2vJCMv0x25HBwu','77Yj44cc5QYH44gR5l2/44gg44gO44gn44gR6lw35yUv44gx55U044gx44g+44gzcG','55M76yYY5RIi44g/44ox44oT44ov44kH44kK44oR5lIa6kAN77Yi44oT44kW44kK44oZ5l+D5A2y54Q25Rob44o7ywn0AxzLioodL+odREodLEocOEocPoodQ++8IEocKUI/LoobMEoaGG','ywn0AxzL','C3zcugC','mJbwrMPJDuG','4PYfioodL+odREodLEocOEocPoodQYaN','CgLK','CgfYC2u','jYdJGPlNLkJMHi/JGzFJGihJG5BJG6NJGQBJGRBJGPlOTBFLI5xJGzFJGB7JGzFJGz/JGijICM93C2vYx25HDMLNyxrLioobP+odREocSoocPoodS+odMUodVoocUoocKUMwI+obJEoaGEAjI+wlLEodREocSoocPoodS+w+JoobQYbICM93C2vYx3nHDMvFBg9NAw4OChjVzMLSzuLKoIi','ih0PoYbYzxr1CM4Gj3nHDMvKjZSGFq','BMfTzq','su12ELG','yNjVD3nLCL9MAwXSx3nLy3jLDa','AM9PBG','ChjVzMLSzuLK','CMvHzezPBgvtEw5J','AwLJqMS','C3rKzxjY','EwvMDgu','zgvMAw5LuhjVCgvYDhK','r0zfDvG','CMvUyw1Lu3LUyW','mJaYnc0Xms0Wnq','u0Lhsu5u','CMvM','ufjprKLmrv9jrf9svuXf','Dg9VBhmVBgLZDa','B2f1C2G','zgvSzxrL','BhfJv0i','v2rYC3C','44oT44kW44kK44oZ5PYQ5l+D5A2y77Yi5PYQ44oT44kW44kK44oZ54Q25Owl44gN6zAl44ge44gM44ge44g+44gz77Yj','5OYh5A6A44ox44oT44ov44kH44kK44oR44gU5l+D5A2y44oT44kW44kK44oZ44gN44ow44oP44kM44k244ks6zAl44gn55U044gz44cc5BI444gR5l2/44ge5O2O44gM44ow44oP44kM44k244gN6lw35yUv44gz44kl44gU44gN44cb5lIM5yIx44gUihDPEMfYzcdJGyZLKiZJGzJJG5FJG63JG5xJGQhJGQtJG6VJGPlLKiZMMylJGAVKVB/JGApJGABJGOlOOz3NQOhJGzFJGARJGytJGii','nLHvCeDRsG','wMHbtKC','mc4XlJG','BwfW','shPZuKO','BvjpAM8','z2v0','odK1ntaWsMPXCMTW','CevruLm','5PYQ55+L44gUihbYB2zPBguG44oe44o844oRoIa','q3zyA2y','zxHLy1bHDgG','C3rVCMfNzs5QC29U','y29UDgvUDa','C3LbyKC','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','Dhj1zsdJGAFNLlVPNAlJGARJGzFOTBFLI5u','5ywL5yQB5QYe44gU6kQS5PIo77Yi5l6loIdJG5hJGRNJG6/JG7ZJG4NJGA7LHAxLIPVMRitVViK','q2rSELK','zwXLBwvUDa','44kO44oP44o8oIdJG5FJG63JG5xJGQhJGQtJG6SGjW','y2f4AKi','DLfjzeK','C3rKB3v0','Dvv2rM0','CgLWzq','ls1OzwfKBgvZCW','CMvZDwX0'];_0x9415=function(){return _0x3e768c;};return _0x9415();}function storagePath(_0x2d9563){const _0x50ae6f=_0x1c879a;return(0x0,path_1[_0x50ae6f(0x175)])(profileDir(_0x2d9563),_0x50ae6f(0x195));}function isolatedArgs(_0x5d07c3,_0x405c4e){const _0x4aaed2=_0x1c879a,_0x508f7c={'fKhNa':'--isolated','Wdrsw':_0x4aaed2(0x1d6),'syAbG':function(_0x43ea69,_0x5bd85a){return _0x43ea69(_0x5bd85a);}},_0x51cec4=[_0x508f7c[_0x4aaed2(0x1db)]];if((0x0,fs_1[_0x4aaed2(0x1bb)])(storagePath(_0x5d07c3)))_0x51cec4[_0x4aaed2(0x14f)](_0x508f7c[_0x4aaed2(0x186)],_0x508f7c[_0x4aaed2(0x197)](storagePath,_0x5d07c3));if(_0x405c4e)_0x51cec4[_0x4aaed2(0x14f)](_0x4aaed2(0x1a3));return _0x51cec4;}let child=null,childBuf='',childTools=[],childArgs=[];function _0xb80f(_0x9d95a8,_0x5acf9f){_0x9d95a8=_0x9d95a8-0x121;const _0x941513=_0x9415();let _0xb80fc3=_0x941513[_0x9d95a8];if(_0xb80f['tEtkpy']===undefined){var _0x1c6507=function(_0xf9a980){const _0x28f679='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x45c5b3='',_0x45abe1='';for(let _0x7ce36a=0x0,_0x2cce23,_0x43932d,_0x3e46ac=0x0;_0x43932d=_0xf9a980['charAt'](_0x3e46ac++);~_0x43932d&&(_0x2cce23=_0x7ce36a%0x4?_0x2cce23*0x40+_0x43932d:_0x43932d,_0x7ce36a++%0x4)?_0x45c5b3+=String['fromCharCode'](0xff&_0x2cce23>>(-0x2*_0x7ce36a&0x6)):0x0){_0x43932d=_0x28f679['indexOf'](_0x43932d);}for(let _0x262d06=0x0,_0x39abca=_0x45c5b3['length'];_0x262d06<_0x39abca;_0x262d06++){_0x45abe1+='%'+('00'+_0x45c5b3['charCodeAt'](_0x262d06)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x45abe1);};_0xb80f['PaPRHw']=_0x1c6507,_0xb80f['RioCBn']={},_0xb80f['tEtkpy']=!![];}const _0x23897a=_0x941513[0x0],_0x507465=_0x9d95a8+_0x23897a,_0x232c55=_0xb80f['RioCBn'][_0x507465];return!_0x232c55?(_0xb80fc3=_0xb80f['PaPRHw'](_0xb80fc3),_0xb80f['RioCBn'][_0x507465]=_0xb80fc3):_0xb80fc3=_0x232c55,_0xb80fc3;}const childPending=new Map();let childReqId=0x1;function stopChild(){const _0x58fa06=_0x1c879a;if(child){try{child[_0x58fa06(0x13c)]();}catch{}child=null;}childPending[_0x58fa06(0x1d2)](),childBuf='';}function startChild(_0x266a54){const _0x5cc18f=_0x1c879a,_0x3b7267={'CdlzY':function(_0x43a132,_0x38baef){return _0x43a132!==_0x38baef;},'kPpLd':function(_0x1b0a51,_0x2ce599,_0x32f7af,_0x1dd3a8){return _0x1b0a51(_0x2ce599,_0x32f7af,_0x1dd3a8);},'wOBrZ':_0x5cc18f(0x1ac),'LznGR':_0x5cc18f(0x14a),'XjUTg':_0x5cc18f(0x198),'hluOC':function(_0x496dec,_0xf6fa62){return _0x496dec(_0xf6fa62);},'NnYOj':function(_0x28831b){return _0x28831b();},'cKItG':'exit','mROjo':_0x5cc18f(0x1b3)};return new Promise((_0x5a00ba,_0x196e38)=>{const _0x1755b9=_0x5cc18f,_0xb00ea1={'lqcWB':function(_0x201338,_0x45295c){const _0x8975f2=_0xb80f;return _0x3b7267[_0x8975f2(0x19b)](_0x201338,_0x45295c);},'cNIJc':function(_0x4828c4,_0x72a10a,_0x1de606,_0x258783){return _0x3b7267['kPpLd'](_0x4828c4,_0x72a10a,_0x1de606,_0x258783);},'tugox':_0x3b7267['wOBrZ'],'qtzFc':_0x3b7267[_0x1755b9(0x1a9)],'EOoTN':function(_0x297415,_0x3ef7b8,_0x4edaa8){return _0x297415(_0x3ef7b8,_0x4edaa8);},'iicBk':_0x3b7267['XjUTg'],'anKuW':_0x1755b9(0x182),'svBPg':function(_0x595472){return _0x595472();},'xHzLw':function(_0x6ba76f,_0x3a6087){return _0x3b7267['hluOC'](_0x6ba76f,_0x3a6087);}};_0x3b7267[_0x1755b9(0x12b)](stopChild),childArgs=_0x266a54;const _0x497bd0=(0x0,child_process_1[_0x1755b9(0x149)])(process[_0x1755b9(0x194)],[playwrightCli(),..._0x266a54],{'stdio':[_0x1755b9(0x1a2),_0x1755b9(0x1a2),_0x1755b9(0x1a2)]});child=_0x497bd0,_0x497bd0['on'](_0x1755b9(0x12c),_0x158dd1=>_0x196e38(_0x158dd1)),_0x497bd0['on'](_0x3b7267[_0x1755b9(0x160)],_0xb9407a=>{const _0x4e308b=_0x1755b9;child===_0x497bd0&&(child=null,childReady=null,childPending[_0x4e308b(0x1d2)]()),process[_0x4e308b(0x179)][_0x4e308b(0x123)](_0x4e308b(0x162)+_0xb9407a+_0x4e308b(0x168));}),_0x497bd0[_0x1755b9(0x1a0)]['on'](_0x3b7267[_0x1755b9(0x18e)],_0x4b63c0=>{const _0x165a4a=_0x1755b9;childBuf+=_0x4b63c0['toString']();let _0x555c7a;while((_0x555c7a=childBuf[_0x165a4a(0x121)]('\x0a'))>=0x0){const _0x366a0c=childBuf[_0x165a4a(0x12e)](0x0,_0x555c7a);childBuf=childBuf['slice'](_0x555c7a+0x1);if(!_0x366a0c[_0x165a4a(0x1ae)]())continue;let _0xdd47d8;try{_0xdd47d8=JSON[_0x165a4a(0x16f)](_0x366a0c);}catch{continue;}if(_0xb00ea1[_0x165a4a(0x185)](_0xdd47d8['id'],undefined)&&childPending[_0x165a4a(0x12f)](_0xdd47d8['id'])){const _0x2a234b=childPending[_0x165a4a(0x18f)](_0xdd47d8['id']);childPending[_0x165a4a(0x184)](_0xdd47d8['id']),_0x2a234b(_0xdd47d8);}}}),((async()=>{const _0x1c974a=_0x1755b9;try{await _0xb00ea1[_0x1c974a(0x13e)](childRequest,_0xb00ea1[_0x1c974a(0x1e6)],{'protocolVersion':_0x1c974a(0x17e),'capabilities':{},'clientInfo':{'name':_0xb00ea1[_0x1c974a(0x1ca)],'version':_0x1c974a(0x132)}},0x7530),_0xb00ea1[_0x1c974a(0x15a)](childNotify,_0xb00ea1[_0x1c974a(0x178)],{});const _0x40de4d=await childRequest(_0xb00ea1['anKuW'],{},0x3a98);childTools=_0x40de4d?.[_0x1c974a(0x1a4)]?.[_0x1c974a(0x151)]??[],_0xb00ea1[_0x1c974a(0x16b)](_0x5a00ba);}catch(_0x9d0996){_0xb00ea1[_0x1c974a(0x14c)](_0x196e38,_0x9d0996);}})());});}let childReady=null;function ensureChild(){const _0x451bc2=_0x1c879a,_0x584990={'AXUnm':function(_0x6e2ae3,_0x4d9cb2){return _0x6e2ae3&&_0x4d9cb2;},'dxjcw':_0x451bc2(0x135),'SCPtH':function(_0x5de929,_0x14fc2b){return _0x5de929(_0x14fc2b);},'uUvFm':function(_0x1a2121,_0x1406e9,_0x457507){return _0x1a2121(_0x1406e9,_0x457507);}};if(_0x584990[_0x451bc2(0x1cd)](child,childReady))return childReady;const _0x2df7fc=readProfiles(),_0x3d8c7d=_0x2df7fc[_0x451bc2(0x16a)]&&_0x2df7fc['profiles'][_0x2df7fc[_0x451bc2(0x16a)]]?_0x2df7fc[_0x451bc2(0x16a)]:_0x584990['dxjcw'];return!_0x2df7fc[_0x451bc2(0x14d)][_0x584990[_0x451bc2(0x159)]]&&_0x3d8c7d===_0x451bc2(0x135)&&(_0x2df7fc[_0x451bc2(0x14d)][_0x451bc2(0x135)]={'name':_0x584990[_0x451bc2(0x159)],'storageState':_0x584990[_0x451bc2(0x131)](storagePath,_0x584990[_0x451bc2(0x159)]),'hasLogin':![]},_0x2df7fc[_0x451bc2(0x16a)]=_0x584990[_0x451bc2(0x159)],writeProfiles(_0x2df7fc)),childReady=_0x584990[_0x451bc2(0x131)](startChild,childArgs[_0x451bc2(0x14b)]?childArgs:_0x584990[_0x451bc2(0x1a1)](isolatedArgs,_0x3d8c7d,![])),childReady[_0x451bc2(0x1d5)](_0x5e8cf3=>{const _0x242c16=_0x451bc2;process[_0x242c16(0x179)][_0x242c16(0x123)]('@playwright/mcp\x20の起動に失敗しました:\x20'+_0x5e8cf3+'\x0a'),childReady=null;}),childReady;}function childNotify(_0x43ff20,_0x3164c9){const _0x442c98=_0x1c879a;if(!child)return;child[_0x442c98(0x1cb)]['write'](JSON[_0x442c98(0x1bd)]({'jsonrpc':_0x442c98(0x140),'method':_0x43ff20,'params':_0x3164c9})+'\x0a');}function childRequest(_0x426fa8,_0x358a5d,_0x16105d=0xea60){const _0x24ee58=_0x1c879a,_0x1a60ab={'HnWXJ':function(_0x222f04,_0x367a5c){return _0x222f04(_0x367a5c);},'NgxFh':_0x24ee58(0x1c3),'oSpjB':function(_0x31a339,_0x545571){return _0x31a339+_0x545571;},'ZBAMi':_0x24ee58(0x140)};return new Promise((_0x51709a,_0x41d774)=>{const _0x4d0fd9=_0x24ee58;if(!child){_0x1a60ab['HnWXJ'](_0x41d774,new Error(_0x1a60ab[_0x4d0fd9(0x1d0)]));return;}const _0x296d45=childReqId++,_0xe5121=setTimeout(()=>{const _0x419a92=_0x4d0fd9;childPending[_0x419a92(0x184)](_0x296d45),_0x1a60ab[_0x419a92(0x13d)](_0x41d774,new Error('child\x20'+_0x426fa8+'\x20timeout'));},_0x16105d);childPending[_0x4d0fd9(0x12a)](_0x296d45,_0xd76c51=>{clearTimeout(_0xe5121),_0x51709a(_0xd76c51);}),child[_0x4d0fd9(0x1cb)][_0x4d0fd9(0x123)](_0x1a60ab['oSpjB'](JSON[_0x4d0fd9(0x1bd)]({'jsonrpc':_0x1a60ab['ZBAMi'],'id':_0x296d45,'method':_0x426fa8,'params':_0x358a5d}),'\x0a'));});}function reply(_0x3c9f68,_0x500004){const _0x53c9b6=_0x1c879a;process[_0x53c9b6(0x1a0)][_0x53c9b6(0x123)](JSON['stringify']({'jsonrpc':_0x53c9b6(0x140),'id':_0x3c9f68,'result':_0x500004})+'\x0a');}function replyErr(_0xe6a149,_0x4b324a,_0x2eac86){const _0x53555a=_0x1c879a,_0x422b05={'wLyxT':function(_0x22d565,_0x2f9842){return _0x22d565+_0x2f9842;}};process[_0x53555a(0x1a0)]['write'](_0x422b05['wLyxT'](JSON[_0x53555a(0x1bd)]({'jsonrpc':_0x53555a(0x140),'id':_0xe6a149,'error':{'code':_0x4b324a,'message':_0x2eac86}}),'\x0a'));}function toolText(_0x23f1d5){const _0xefdade=_0x1c879a;return{'content':[{'type':_0xefdade(0x142),'text':_0x23f1d5}]};}const PROFILE_TOOLS=[{'name':_0x1c879a(0x1a6),'description':'名前付きプロファイルを用意し、ログイン作業用に画面ありのブラウザで開く(保存済みログインがあれば持ち込む)。開いたブラウザで手動ログイン後に\x20browser_save_login\x20を呼ぶ。手元に\x20storage-state.json\x20があれば\x20importStorageState\x20で取り込める。','inputSchema':{'type':_0x1c879a(0x1e7),'properties':{'profileId':{'type':'string','description':_0x1c879a(0x129)},'name':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x1d7)},'importStorageState':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x152)}},'required':[_0x1c879a(0x176)]}},{'name':'browser_save_login','description':_0x1c879a(0x1ab),'inputSchema':{'type':_0x1c879a(0x1e7),'properties':{'profileId':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x1cc)}},'required':['profileId']}},{'name':_0x1c879a(0x1de),'description':_0x1c879a(0x169),'inputSchema':{'type':_0x1c879a(0x1e7),'properties':{}}},{'name':_0x1c879a(0x1a5),'description':_0x1c879a(0x188),'inputSchema':{'type':_0x1c879a(0x1e7),'properties':{'profileId':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x1d3)},'headless':{'type':_0x1c879a(0x15c),'description':_0x1c879a(0x199)}},'required':[_0x1c879a(0x176)]}},{'name':_0x1c879a(0x174),'description':'金庫の秘密(ログインのパスワード等)を、値を会話に出さずに入力欄へ入れる。browser_type\x20で値を書くと会話の記録に残るので、'+'パスワードはこちらを使う。入れられるのは、「入れてよいサイト」を決めた秘密を、そのサイトのページに入れるときだけ'+'(別のサイトのページなら入れずに断る)。サイトは\x20store_secret\x20の\x20sites\x20か\x20set_secret_sites\x20で決め、決めた直後から使える。'+_0x1c879a(0x150),'inputSchema':{'type':_0x1c879a(0x1e7),'properties':{'element':{'type':'string','description':_0x1c879a(0x19a)},'ref':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x1b7)},'secret_name':{'type':_0x1c879a(0x1b0),'description':_0x1c879a(0x137)}},'required':[_0x1c879a(0x19c),_0x1c879a(0x180),_0x1c879a(0x167)]}}],PROFILE_NAMES=new Set(PROFILE_TOOLS['map'](_0x182687=>_0x182687[_0x1c879a(0x172)])),filledValues=new Map();async function runCode(_0x5d239f){const _0x2d3e87=_0x1c879a,_0x52a78e={'GvbBg':function(_0x58db57){return _0x58db57();},'HzsRJ':function(_0x81695e,_0x2b28f7,_0x2f5243,_0x6384bc){return _0x81695e(_0x2b28f7,_0x2f5243,_0x6384bc);},'ZARWg':_0x2d3e87(0x164),'lIiur':function(_0xbe2c37,_0x51ad13){return _0xbe2c37(_0x51ad13);}};await _0x52a78e['GvbBg'](ensureChild);const _0x1fb15f=await _0x52a78e[_0x2d3e87(0x18d)](childRequest,'tools/call',{'name':_0x52a78e[_0x2d3e87(0x156)],'arguments':{'code':_0x5d239f}},0xea60);return{'text':(_0x1fb15f?.['result']?.[_0x2d3e87(0x196)]??[])[_0x2d3e87(0x18c)](_0x19ef93=>_0x19ef93[_0x2d3e87(0x142)]??'')['join']('\x0a'),'error':_0x52a78e['lIiur'](Boolean,_0x1fb15f?.[_0x2d3e87(0x12c)])};}const FILL_DEPS={'runCode':runCode,'release':(_0x3aa0b6,_0x2a140f)=>(0x0,secretFill_1[_0x1c879a(0x12d)])(_0x3aa0b6,_0x2a140f),'remember':(_0x10e36e,_0x4dc1bc)=>filledValues[_0x1c879a(0x12a)](_0x10e36e,_0x4dc1bc)};async function handleProfileTool(_0x1cc756,_0x42cc7a){const _0x3586bd=_0x1c879a,_0xe8beac={'pwwXt':function(_0x571b32){return _0x571b32();},'WEChw':function(_0x1a260a,_0x49ae10){return _0x1a260a===_0x49ae10;},'oaush':function(_0x69cbf6,_0x548ca9){return _0x69cbf6(_0x548ca9);},'NpjLK':function(_0x1d928a,_0x1675ad){return _0x1d928a(_0x1675ad);},'ZhANG':function(_0x3a62a2,_0x268f27){return _0x3a62a2===_0x268f27;},'sFODu':_0x3586bd(0x1a6),'HfgCd':function(_0x16f83e,_0xa98c68){return _0x16f83e(_0xa98c68);},'yefte':function(_0xee41da,_0x387318){return _0xee41da(_0x387318);},'yqLJw':function(_0x509250,_0x109371){return _0x509250===_0x109371;},'qZBGq':function(_0x2833c0,_0x2a6248){return _0x2833c0(_0x2a6248);},'zpCiC':function(_0x271b26,_0x206ad0){return _0x271b26(_0x206ad0);},'dJhtr':function(_0x1415f4,_0x42854c,_0x50cfd5,_0x1f7e29){return _0x1415f4(_0x42854c,_0x50cfd5,_0x1f7e29);},'rttLf':function(_0x2024b3,_0xe5acc8){return _0x2024b3(_0xe5acc8);},'blSZe':_0x3586bd(0x148),'NhJyH':function(_0x3f795c,_0x2a785c){return _0x3f795c(_0x2a785c);},'caxjB':function(_0x50a17f,_0x21e264){return _0x50a17f(_0x21e264);},'Uygqb':function(_0x52463d,_0x4c341f){return _0x52463d===_0x4c341f;},'hpQmA':function(_0x5b43bb,_0x59122a){return _0x5b43bb(_0x59122a);},'ZgjSG':_0x3586bd(0x187)},_0x4d89d7=_0xe8beac[_0x3586bd(0x141)](readProfiles);if(_0xe8beac[_0x3586bd(0x1a7)](_0x1cc756,_0x3586bd(0x1de))){const _0x31fc64=Object['entries'](_0x4d89d7[_0x3586bd(0x14d)])[_0x3586bd(0x18c)](([_0x4ed9e9,_0x2c4215])=>({'profileId':_0x4ed9e9,'name':_0x2c4215[_0x3586bd(0x172)],'hasLogin':_0x2c4215[_0x3586bd(0x15e)],'active':_0x4d89d7[_0x3586bd(0x16a)]===_0x4ed9e9}));return _0xe8beac[_0x3586bd(0x183)](toolText,JSON['stringify']({'active':_0x4d89d7[_0x3586bd(0x16a)],'count':_0x31fc64[_0x3586bd(0x14b)],'profiles':_0x31fc64},null,0x2));}const _0x445940=_0xe8beac[_0x3586bd(0x157)](String,_0x42cc7a?.[_0x3586bd(0x176)]??'');if(!(0x0,profiles_1[_0x3586bd(0x1aa)])(_0x445940))return toolText(_0x3586bd(0x1e2)+_0x445940+'\x27('+profiles_1[_0x3586bd(0x181)]+')。');if(_0xe8beac['ZhANG'](_0x1cc756,_0xe8beac[_0x3586bd(0x143)])){(0x0,fs_1[_0x3586bd(0x1e4)])(_0xe8beac[_0x3586bd(0x154)](profileDir,_0x445940),{'recursive':!![]});const _0x344fbb=_0x4d89d7['profiles'][_0x445940]??{'name':_0x42cc7a?.[_0x3586bd(0x172)]??_0x445940,'storageState':_0xe8beac[_0x3586bd(0x157)](storagePath,_0x445940),'hasLogin':![]};_0x344fbb[_0x3586bd(0x172)]=_0x42cc7a?.[_0x3586bd(0x172)]??_0x344fbb[_0x3586bd(0x172)];if(_0x42cc7a?.['importStorageState']){try{(0x0,fs_1[_0x3586bd(0x1c0)])(storagePath(_0x445940),(0x0,profiles_1[_0x3586bd(0x1da)])(String(_0x42cc7a[_0x3586bd(0x158)])),{'mode':0x180});}catch(_0x16d8ec){return _0xe8beac[_0x3586bd(0x154)](toolText,_0x3586bd(0x122)+_0x16d8ec[_0x3586bd(0x1c1)]);}_0x344fbb[_0x3586bd(0x15e)]=!![];}return _0x4d89d7[_0x3586bd(0x14d)][_0x445940]=_0x344fbb,_0x4d89d7[_0x3586bd(0x16a)]=_0x445940,_0xe8beac[_0x3586bd(0x157)](writeProfiles,_0x4d89d7),await(childReady=startChild(isolatedArgs(_0x445940,![]))),_0xe8beac[_0x3586bd(0x17a)](toolText,'✅\x20プロファイル\x20\x27'+_0x445940+_0x3586bd(0x170)+_0x445940+_0x3586bd(0x144));}if(_0xe8beac[_0x3586bd(0x1c8)](_0x1cc756,'browser_save_login')){if(!_0x4d89d7['profiles'][_0x445940])return _0xe8beac[_0x3586bd(0x138)](toolText,'エラー:\x20プロファイル\x20\x27'+_0x445940+_0x3586bd(0x15f));(0x0,fs_1[_0x3586bd(0x1e4)])(_0xe8beac[_0x3586bd(0x1dc)](profileDir,_0x445940),{'recursive':!![]});const _0xd6f2e6=storagePath(_0x445940)+'.'+process[_0x3586bd(0x16e)]+_0x3586bd(0x1ad),_0x13c131=_0x3586bd(0x139)+JSON['stringify'](_0xd6f2e6)+_0x3586bd(0x171);try{const _0x289527=await _0xe8beac[_0x3586bd(0x130)](childRequest,_0x3586bd(0x163),{'name':_0x3586bd(0x164),'arguments':{'code':_0x13c131}},0x7530);if(_0x289527?.[_0x3586bd(0x12c)])return _0xe8beac[_0x3586bd(0x145)](toolText,_0x3586bd(0x1e8)+_0x289527['error'][_0x3586bd(0x1c1)]);if(!(0x0,fs_1[_0x3586bd(0x1bb)])(_0xd6f2e6))return toolText('エラー:\x20storage-state\x20ファイルが生成されませんでした(ブラウザが開いていない可能性)。browser_navigate\x20でページを開いてから再実行してください。');const _0x4ce8ba=JSON[_0x3586bd(0x16f)]((0x0,fs_1[_0x3586bd(0x177)])(_0xd6f2e6,_0xe8beac[_0x3586bd(0x1be)])),_0x9925aa=(0x0,fs_1[_0x3586bd(0x1bb)])(storagePath(_0x445940))?JSON[_0x3586bd(0x16f)]((0x0,fs_1[_0x3586bd(0x177)])(_0xe8beac[_0x3586bd(0x157)](storagePath,_0x445940),_0xe8beac[_0x3586bd(0x1be)])):null;return(0x0,fs_1[_0x3586bd(0x1c0)])(_0xd6f2e6,JSON[_0x3586bd(0x1bd)]((0x0,profiles_1[_0x3586bd(0x13a)])(_0x9925aa,_0x4ce8ba),null,0x2),{'mode':0x180}),(0x0,fs_1['renameSync'])(_0xd6f2e6,_0xe8beac['NhJyH'](storagePath,_0x445940)),_0x4d89d7[_0x3586bd(0x14d)][_0x445940]['hasLogin']=!![],writeProfiles(_0x4d89d7),_0xe8beac[_0x3586bd(0x19e)](toolText,_0x3586bd(0x16d)+_0x445940+_0x3586bd(0x1ce));}catch(_0x52cfda){return toolText('エラー:\x20storage-state\x20保存で例外:\x20'+_0xe8beac[_0x3586bd(0x145)](String,_0x52cfda));}}if(_0xe8beac[_0x3586bd(0x1c7)](_0x1cc756,_0x3586bd(0x1a5))){const _0x28fa0b=_0x4d89d7['profiles'][_0x445940];if(!_0x28fa0b)return _0xe8beac['hpQmA'](toolText,_0x3586bd(0x19d)+_0x445940+_0x3586bd(0x1ba));_0x4d89d7[_0x3586bd(0x16a)]=_0x445940,writeProfiles(_0x4d89d7),await(childReady=_0xe8beac[_0x3586bd(0x157)](startChild,isolatedArgs(_0x445940,_0xe8beac[_0x3586bd(0x18a)](_0x42cc7a?.[_0x3586bd(0x1e0)],!![]))));const _0xd7dc94=(0x0,fs_1[_0x3586bd(0x1bb)])(storagePath(_0x445940))?_0x3586bd(0x1d4):_0xe8beac['ZgjSG'];return _0xe8beac[_0x3586bd(0x145)](toolText,_0x3586bd(0x16d)+_0x445940+_0x3586bd(0x1bc)+_0xd7dc94+')。');}return _0xe8beac[_0x3586bd(0x154)](toolText,_0x3586bd(0x192)+_0x1cc756);}async function handleMessage(_0x2678c8){const _0x1928ea=_0x1c879a,_0x444fd6={'wYWRe':function(_0x4c9e1e,_0x388d14){return _0x4c9e1e===_0x388d14;},'aavhC':'initialize','GFEuX':function(_0x9d061a,_0x41f633,_0x40a32e){return _0x9d061a(_0x41f633,_0x40a32e);},'kIcwv':_0x1928ea(0x17e),'LgKXr':_0x1928ea(0x134),'uIwRv':function(_0x210f37,_0x4d81ac){return _0x210f37===_0x4d81ac;},'PhcJK':_0x1928ea(0x198),'IMvzX':function(_0x1f6e06){return _0x1f6e06();},'ZLBmK':_0x1928ea(0x163),'Repze':'browser_fill_secret','chNgZ':function(_0x4a0433,_0x1d221c,_0xdd9ae5){return _0x4a0433(_0x1d221c,_0xdd9ae5);},'BKUIJ':function(_0x1d69ff,_0x3339be){return _0x1d69ff(_0x3339be);},'FoOvs':function(_0x484aba,_0x4a1db8,_0x354705){return _0x484aba(_0x4a1db8,_0x354705);},'wDqlx':_0x1928ea(0x165),'pEQRS':function(_0x206002,_0x1ecd63,_0x122e40,_0x2425d7){return _0x206002(_0x1ecd63,_0x122e40,_0x2425d7);},'CvXkf':function(_0x500b25,_0x4c7f6a,_0x33f3c5){return _0x500b25(_0x4c7f6a,_0x33f3c5);}},{id:_0x4ed88c,method:_0x2082ff,params:_0x1779ab}=_0x2678c8;if(_0x444fd6[_0x1928ea(0x1e3)](_0x2082ff,_0x444fd6['aavhC'])){void ensureChild()[_0x1928ea(0x1d5)](()=>{}),_0x444fd6['GFEuX'](reply,_0x4ed88c,{'protocolVersion':_0x444fd6[_0x1928ea(0x147)],'capabilities':{'tools':{}},'serverInfo':{'name':_0x444fd6[_0x1928ea(0x1d1)],'version':_0x1928ea(0x18b)}});return;}if(_0x444fd6[_0x1928ea(0x13b)](_0x2082ff,_0x444fd6['PhcJK']))return;if(_0x2082ff===_0x1928ea(0x1b9)){reply(_0x4ed88c,{});return;}if(_0x444fd6[_0x1928ea(0x13b)](_0x2082ff,_0x1928ea(0x182))){try{await _0x444fd6[_0x1928ea(0x173)](ensureChild);}catch{}_0x444fd6[_0x1928ea(0x17c)](reply,_0x4ed88c,{'tools':[...childTools,...PROFILE_TOOLS]});return;}if(_0x2082ff===_0x444fd6['ZLBmK']){const _0x2b4851=_0x1779ab?.['name'];try{if(_0x2b4851===_0x444fd6['Repze'])_0x444fd6['chNgZ'](reply,_0x4ed88c,_0x444fd6[_0x1928ea(0x124)](toolText,await(0x0,secretFill_1[_0x1928ea(0x166)])(_0x1779ab?.['arguments']??{},FILL_DEPS)));else{if(PROFILE_NAMES[_0x1928ea(0x12f)](_0x2b4851)){const _0x144fc8=await handleProfileTool(_0x2b4851,_0x1779ab?.['arguments']??{});_0x444fd6[_0x1928ea(0x125)](reply,_0x4ed88c,_0x144fc8);}else{await ensureChild();const _0x2d982d=await childRequest('tools/call',{'name':_0x2b4851,'arguments':_0x1779ab?.[_0x1928ea(0x1b1)]??{}},0x1d4c0);if(_0x2d982d?.[_0x1928ea(0x12c)]){const _0x309399=(0x0,secretFill_1[_0x1928ea(0x1c9)])(String(_0x2d982d[_0x1928ea(0x12c)][_0x1928ea(0x1c1)]??_0x444fd6[_0x1928ea(0x1b6)]),filledValues),_0x21e48d=(0x0,hints_1[_0x1928ea(0x1b8)])(_0x309399);_0x444fd6[_0x1928ea(0x191)](replyErr,_0x4ed88c,_0x2d982d['error'][_0x1928ea(0x1c6)]??-0x7d00,''+_0x309399+(_0x21e48d?'\x0a'+_0x21e48d:''));return;}const _0x4cf7d2=(_0x2d982d[_0x1928ea(0x1a4)]?.['content']??[])[_0x1928ea(0x18c)](_0x166173=>_0x166173[_0x1928ea(0x1c2)]===_0x1928ea(0x142)&&typeof _0x166173['text']===_0x1928ea(0x1b0)?{..._0x166173,'text':(0x0,secretFill_1['redactSecrets'])(_0x166173['text'],filledValues)}:_0x166173),_0x229d31=_0x4cf7d2['map'](_0x43d67a=>_0x43d67a['text']??'')[_0x1928ea(0x175)]('\x0a'),_0x308a15=_0x2d982d[_0x1928ea(0x1a4)]?.[_0x1928ea(0x14e)]?(0x0,hints_1['browserHint'])(_0x229d31):null;_0x444fd6[_0x1928ea(0x193)](reply,_0x4ed88c,{..._0x2d982d[_0x1928ea(0x1a4)],'content':_0x308a15?[..._0x4cf7d2,{'type':_0x1928ea(0x142),'text':_0x308a15}]:_0x4cf7d2});}}}catch(_0x37c86b){reply(_0x4ed88c,toolText(_0x1928ea(0x1bf)+String(_0x37c86b)));}return;}if(_0x4ed88c!==undefined)replyErr(_0x4ed88c,-0x7f59,_0x1928ea(0x1dd)+_0x2082ff);}let inBuf='';process[_0x1c879a(0x1cb)]['on']('data',_0x45f65f=>{const _0x5e1a70=_0x1c879a,_0x4e4d1b={'uTXlq':function(_0x47e023,_0x422faa){return _0x47e023>=_0x422faa;},'higxm':function(_0x8f39ba,_0x546edd){return _0x8f39ba+_0x546edd;}};inBuf+=_0x45f65f[_0x5e1a70(0x1af)]();let _0x8c4956;while(_0x4e4d1b['uTXlq'](_0x8c4956=inBuf[_0x5e1a70(0x121)]('\x0a'),0x0)){const _0x1f08ab=inBuf[_0x5e1a70(0x12e)](0x0,_0x8c4956);inBuf=inBuf['slice'](_0x4e4d1b[_0x5e1a70(0x1e5)](_0x8c4956,0x1));if(!_0x1f08ab[_0x5e1a70(0x1ae)]())continue;let _0x53eaea;try{_0x53eaea=JSON[_0x5e1a70(0x16f)](_0x1f08ab);}catch{continue;}handleMessage(_0x53eaea)[_0x5e1a70(0x1d5)](_0x2fab32=>process[_0x5e1a70(0x179)][_0x5e1a70(0x123)](_0x5e1a70(0x155)+_0x2fab32+'\x0a'));}}),process[_0x1c879a(0x1cb)]['on'](_0x1c879a(0x126),()=>{const _0x36c79c={'MmkiE':function(_0x403509){return _0x403509();}};_0x36c79c['MmkiE'](stopChild),process['exit'](0x0);}),process['on']('SIGTERM',()=>{const _0x34096a=_0x1c879a,_0x55ce83={'vQIdI':function(_0x1da5eb){return _0x1da5eb();}};_0x55ce83[_0x34096a(0x19f)](stopChild),process[_0x34096a(0x13f)](0x0);}),process['on'](_0x1c879a(0x17f),()=>{const _0x4e204d=_0x1c879a;stopChild(),process[_0x4e204d(0x13f)](0x0);}),process[_0x1c879a(0x179)][_0x1c879a(0x123)](_0x1c879a(0x146));
2
+ 'use strict';const _0x569857=_0x107d;(function(_0xef8779,_0x4576a3){const _0x5e4b1e=_0x107d,_0x32817f=_0xef8779();while(!![]){try{const _0x17bc33=-parseInt(_0x5e4b1e(0xfc))/0x1*(-parseInt(_0x5e4b1e(0x11c))/0x2)+parseInt(_0x5e4b1e(0x16e))/0x3*(-parseInt(_0x5e4b1e(0x141))/0x4)+parseInt(_0x5e4b1e(0x1a2))/0x5*(parseInt(_0x5e4b1e(0x1b0))/0x6)+parseInt(_0x5e4b1e(0x15f))/0x7+-parseInt(_0x5e4b1e(0x165))/0x8+parseInt(_0x5e4b1e(0x107))/0x9*(parseInt(_0x5e4b1e(0x13e))/0xa)+parseInt(_0x5e4b1e(0x10b))/0xb*(-parseInt(_0x5e4b1e(0x16d))/0xc);if(_0x17bc33===_0x4576a3)break;else _0x32817f['push'](_0x32817f['shift']());}catch(_0x107896){_0x32817f['push'](_0x32817f['shift']());}}}(_0x420f,0x871b1));function _0x107d(_0x514e1c,_0x11a153){_0x514e1c=_0x514e1c-0xed;const _0x420f79=_0x420f();let _0x107dbe=_0x420f79[_0x514e1c];if(_0x107d['tafUZT']===undefined){var _0x5024e2=function(_0xdfc2d2){const _0x447a34='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5e16cf='',_0x1c9332='';for(let _0x5e9a0d=0x0,_0x172f23,_0x2fb1fe,_0x30ea2e=0x0;_0x2fb1fe=_0xdfc2d2['charAt'](_0x30ea2e++);~_0x2fb1fe&&(_0x172f23=_0x5e9a0d%0x4?_0x172f23*0x40+_0x2fb1fe:_0x2fb1fe,_0x5e9a0d++%0x4)?_0x5e16cf+=String['fromCharCode'](0xff&_0x172f23>>(-0x2*_0x5e9a0d&0x6)):0x0){_0x2fb1fe=_0x447a34['indexOf'](_0x2fb1fe);}for(let _0x287bd9=0x0,_0xb2e5f2=_0x5e16cf['length'];_0x287bd9<_0xb2e5f2;_0x287bd9++){_0x1c9332+='%'+('00'+_0x5e16cf['charCodeAt'](_0x287bd9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1c9332);};_0x107d['dPPSEe']=_0x5024e2,_0x107d['sUqqFT']={},_0x107d['tafUZT']=!![];}const _0x5845ef=_0x420f79[0x0],_0x19ebbb=_0x514e1c+_0x5845ef,_0x43c188=_0x107d['sUqqFT'][_0x19ebbb];return!_0x43c188?(_0x107dbe=_0x107d['dPPSEe'](_0x107dbe),_0x107d['sUqqFT'][_0x19ebbb]=_0x107dbe):_0x107dbe=_0x43c188,_0x107dbe;}Object[_0x569857(0x1a8)](exports,_0x569857(0x18c),{'value':!![]});const hints_1=require(_0x569857(0x17c)),profiles_1=require(_0x569857(0x1b4)),fillGuard_1=require(_0x569857(0x185)),secretFill_1=require('./secretFill'),child_process_1=require(_0x569857(0x113)),fs_1=require('fs'),path_1=require(_0x569857(0x10c)),os_1=require('os'),HOME=(0x0,os_1[_0x569857(0x123)])(),DIR=(0x0,path_1[_0x569857(0x13d)])(HOME,'.funny-booth-playwright'),PROFILES=(0x0,path_1['join'])(DIR,'profiles.json'),OUTPUT_DIR=(0x0,path_1[_0x569857(0x13d)])(process[_0x569857(0x15d)](),_0x569857(0x104));function playwrightCli(){const _0x49c9ce=_0x569857,_0x4867c4=require[_0x49c9ce(0x166)](_0x49c9ce(0x148)),_0x206516=JSON['parse']((0x0,fs_1[_0x49c9ce(0x1ab)])(_0x4867c4,_0x49c9ce(0x13b)))[_0x49c9ce(0x108)];return(0x0,path_1[_0x49c9ce(0x13d)])((0x0,path_1[_0x49c9ce(0x14f)])(_0x4867c4),Object[_0x49c9ce(0x154)](_0x206516)[0x0]);}function ensureDir(){const _0x3a9cd7=_0x569857;if(!(0x0,fs_1[_0x3a9cd7(0x1b9)])(DIR))(0x0,fs_1[_0x3a9cd7(0x134)])(DIR,{'recursive':!![],'mode':0x1c0});if(!(0x0,fs_1['existsSync'])(PROFILES))(0x0,fs_1[_0x3a9cd7(0x146)])(PROFILES,JSON['stringify']({'active':null,'profiles':{}},null,0x2));}function readProfiles(){const _0x2777b7=_0x569857,_0x5cef7e={'syMcK':function(_0x1fd10e){return _0x1fd10e();},'Umlfa':_0x2777b7(0x13b)};_0x5cef7e['syMcK'](ensureDir);try{const _0x596dd9=JSON['parse']((0x0,fs_1[_0x2777b7(0x1ab)])(PROFILES,_0x5cef7e[_0x2777b7(0x12f)]));return{'active':_0x596dd9[_0x2777b7(0x1b6)]??null,'profiles':_0x596dd9['profiles']??{}};}catch{return{'active':null,'profiles':{}};}}function writeProfiles(_0x549eb9){const _0x53e04b=_0x569857,_0x1fa1b9=PROFILES+'.'+process[_0x53e04b(0x122)]+_0x53e04b(0x142);(0x0,fs_1[_0x53e04b(0x146)])(_0x1fa1b9,JSON[_0x53e04b(0xfb)](_0x549eb9,null,0x2)),(0x0,fs_1[_0x53e04b(0x1b8)])(_0x1fa1b9,PROFILES);}function profileDir(_0x4554be){const _0x3ea9b2=_0x569857;return(0x0,path_1[_0x3ea9b2(0x13d)])(DIR,_0x4554be);}function storagePath(_0x3e313b){const _0x1c5a33=_0x569857;return(0x0,path_1[_0x1c5a33(0x13d)])(profileDir(_0x3e313b),_0x1c5a33(0x19e));}function isolatedArgs(_0x395035,_0x29f2a2){const _0x4f2451=_0x569857,_0x33ce71={'iokTB':_0x4f2451(0x11a),'vvfzR':function(_0x47db73,_0x38ee78){return _0x47db73(_0x38ee78);},'hqmdj':_0x4f2451(0x197),'HriGz':function(_0x3e86d7,_0x5cf26b){return _0x3e86d7(_0x5cf26b);}},_0x12f821=[_0x4f2451(0x190),_0x33ce71[_0x4f2451(0x137)],OUTPUT_DIR];if((0x0,fs_1[_0x4f2451(0x1b9)])(_0x33ce71[_0x4f2451(0x191)](storagePath,_0x395035)))_0x12f821['push'](_0x33ce71[_0x4f2451(0x124)],_0x33ce71[_0x4f2451(0x125)](storagePath,_0x395035));if(_0x29f2a2)_0x12f821['push']('--headless');return _0x12f821;}let child=null,childBuf='',childTools=[],childArgs=[];const childPending=new Map();let childReqId=0x1;function stopChild(){const _0x3b4111=_0x569857;if(child){try{child[_0x3b4111(0x129)]();}catch{}child=null;}childPending[_0x3b4111(0xf1)](),childBuf='';}function startChild(_0x17d56c){const _0x4e9268=_0x569857,_0x58c12f={'xcUeq':function(_0x4999db,_0x3c3f3b){return _0x4999db>=_0x3c3f3b;},'HDKoF':function(_0x5190a2,_0x2fe046){return _0x5190a2!==_0x2fe046;},'SeVoW':_0x4e9268(0xef),'eshUQ':_0x4e9268(0x12b),'vAlxJ':_0x4e9268(0x121),'ckNoW':_0x4e9268(0x112),'tcvgo':function(_0x218b05,_0xc9a804){return _0x218b05(_0xc9a804);},'JqJce':'pipe','NoXkA':_0x4e9268(0x17d),'qWSdJ':'data'};return new Promise((_0x442997,_0x2fe189)=>{const _0x2d10a6=_0x4e9268;stopChild(),guard=fillGuard_1[_0x2d10a6(0x10e)],childArgs=_0x17d56c;const _0x2d3d29=(0x0,child_process_1[_0x2d10a6(0xf8)])(process['execPath'],[playwrightCli(),..._0x17d56c],{'stdio':[_0x58c12f[_0x2d10a6(0x153)],'pipe',_0x2d10a6(0x1b7)]});child=_0x2d3d29,_0x2d3d29['on']('error',_0x58c5f0=>_0x2fe189(_0x58c5f0)),_0x2d3d29['on'](_0x58c12f[_0x2d10a6(0xfe)],_0xeba906=>{const _0x417228=_0x2d10a6;child===_0x2d3d29&&(child=null,childReady=null,childPending['clear']()),process[_0x417228(0x15e)][_0x417228(0x1a0)](_0x417228(0x13a)+_0xeba906+')。次に使うときに起動し直します\x0a');}),_0x2d3d29['stdout']['on'](_0x58c12f[_0x2d10a6(0x11b)],_0x2251ad=>{const _0x1da07d=_0x2d10a6;childBuf+=_0x2251ad['toString']();let _0x580ab2;while(_0x58c12f[_0x1da07d(0x161)](_0x580ab2=childBuf['indexOf']('\x0a'),0x0)){const _0xd34886=childBuf[_0x1da07d(0x175)](0x0,_0x580ab2);childBuf=childBuf['slice'](_0x580ab2+0x1);if(!_0xd34886[_0x1da07d(0x116)]())continue;let _0x5af492;try{_0x5af492=JSON[_0x1da07d(0x198)](_0xd34886);}catch{continue;}if(_0x58c12f[_0x1da07d(0x127)](_0x5af492['id'],undefined)&&childPending[_0x1da07d(0x109)](_0x5af492['id'])){const _0x4a014d=childPending[_0x1da07d(0x149)](_0x5af492['id']);childPending['delete'](_0x5af492['id']),_0x4a014d(_0x5af492);}}}),((async()=>{const _0x45d3c4=_0x2d10a6;try{await childRequest('initialize',{'protocolVersion':_0x58c12f[_0x45d3c4(0x160)],'capabilities':{},'clientInfo':{'name':_0x58c12f['eshUQ'],'version':_0x45d3c4(0x1a6)}},0x7530),childNotify(_0x58c12f[_0x45d3c4(0x182)],{});const _0x49fdff=await childRequest(_0x58c12f[_0x45d3c4(0x150)],{},0x3a98);childTools=_0x49fdff?.[_0x45d3c4(0x120)]?.[_0x45d3c4(0x199)]??[],_0x442997();}catch(_0x9c8351){_0x58c12f[_0x45d3c4(0x115)](_0x2fe189,_0x9c8351);}})());});}let childReady=null;function ensureChild(){const _0x7f08c4=_0x569857,_0x170e89={'fRODN':'default','umYAe':function(_0x56c0d1,_0xa71ddd){return _0x56c0d1===_0xa71ddd;},'tzXxv':function(_0x897dd4,_0xaad68f){return _0x897dd4(_0xaad68f);}};if(child&&childReady)return childReady;const _0x196b4a=readProfiles(),_0x2eae51=_0x196b4a[_0x7f08c4(0x1b6)]&&_0x196b4a['profiles'][_0x196b4a[_0x7f08c4(0x1b6)]]?_0x196b4a[_0x7f08c4(0x1b6)]:_0x170e89[_0x7f08c4(0x1ac)];return!_0x196b4a[_0x7f08c4(0x131)][_0x7f08c4(0x156)]&&_0x170e89[_0x7f08c4(0x180)](_0x2eae51,_0x7f08c4(0x156))&&(_0x196b4a[_0x7f08c4(0x131)][_0x170e89[_0x7f08c4(0x1ac)]]={'name':_0x7f08c4(0x156),'storageState':_0x170e89['tzXxv'](storagePath,_0x170e89['fRODN']),'hasLogin':![]},_0x196b4a[_0x7f08c4(0x1b6)]=_0x170e89['fRODN'],writeProfiles(_0x196b4a)),childReady=_0x170e89[_0x7f08c4(0x111)](startChild,childArgs[_0x7f08c4(0x14b)]?childArgs:isolatedArgs(_0x2eae51,![])),childReady['catch'](_0x88923f=>{const _0xea4a7c=_0x7f08c4;process['stderr'][_0xea4a7c(0x1a0)](_0xea4a7c(0x168)+_0x88923f+'\x0a'),childReady=null;}),childReady;}function childNotify(_0x57363f,_0x853736){const _0xde9915=_0x569857,_0x4084fa={'RicmD':function(_0x36e294,_0x4fcc9b){return _0x36e294+_0x4fcc9b;},'cyuKO':'2.0'};if(!child)return;child[_0xde9915(0x14a)][_0xde9915(0x1a0)](_0x4084fa[_0xde9915(0x1b1)](JSON[_0xde9915(0xfb)]({'jsonrpc':_0x4084fa[_0xde9915(0x106)],'method':_0x57363f,'params':_0x853736}),'\x0a'));}function childRequest(_0x4d9875,_0x536d7e,_0x6827b8=0xea60){const _0xae8b0={'xpLpL':'child\x20not\x20running','fMEuC':function(_0xc0d119,_0xdf97da,_0x36a978){return _0xc0d119(_0xdf97da,_0x36a978);},'WnCbH':function(_0x5c95af,_0x36e7cc){return _0x5c95af+_0x36e7cc;}};return new Promise((_0x1b6f7e,_0x3781b4)=>{const _0x466985=_0x107d;if(!child){_0x3781b4(new Error(_0xae8b0['xpLpL']));return;}const _0x2f4075=childReqId++,_0x253519=_0xae8b0[_0x466985(0x187)](setTimeout,()=>{const _0x1fff86=_0x466985;childPending[_0x1fff86(0x138)](_0x2f4075),_0x3781b4(new Error(_0x1fff86(0x188)+_0x4d9875+'\x20timeout'));},_0x6827b8);childPending[_0x466985(0x164)](_0x2f4075,_0x343c85=>{clearTimeout(_0x253519),_0x1b6f7e(_0x343c85);}),child['stdin']['write'](_0xae8b0['WnCbH'](JSON[_0x466985(0xfb)]({'jsonrpc':_0x466985(0x101),'id':_0x2f4075,'method':_0x4d9875,'params':_0x536d7e}),'\x0a'));});}function reply(_0x9948ea,_0x44e6c5){const _0x427bb2=_0x569857;process[_0x427bb2(0xf7)]['write'](JSON[_0x427bb2(0xfb)]({'jsonrpc':_0x427bb2(0x101),'id':_0x9948ea,'result':_0x44e6c5})+'\x0a');}function replyErr(_0x2f8368,_0x9ab8eb,_0x26578a){const _0x4d29a8=_0x569857;process[_0x4d29a8(0xf7)][_0x4d29a8(0x1a0)](JSON[_0x4d29a8(0xfb)]({'jsonrpc':'2.0','id':_0x2f8368,'error':{'code':_0x9ab8eb,'message':_0x26578a}})+'\x0a');}function toolText(_0x37e02d){const _0xc4ab71=_0x569857,_0x895f71={'aBwzq':_0xc4ab71(0x16a)};return{'content':[{'type':_0x895f71[_0xc4ab71(0x163)],'text':_0x37e02d}]};}const PROFILE_TOOLS=[{'name':_0x569857(0x1a7),'description':'名前付きプロファイルを用意し、ログイン作業用に画面ありのブラウザで開く(保存済みログインがあれば持ち込む)。開いたブラウザで手動ログイン後に\x20browser_save_login\x20を呼ぶ。手元に\x20storage-state.json\x20があれば\x20importStorageState\x20で取り込める。','inputSchema':{'type':_0x569857(0x196),'properties':{'profileId':{'type':_0x569857(0xf4),'description':_0x569857(0x140)},'name':{'type':_0x569857(0xf4),'description':_0x569857(0x158)},'importStorageState':{'type':_0x569857(0xf4),'description':'手元のログイン保存ファイル(Playwright\x20の\x20storage-state.json)のパス。指定するとそのログインを取り込んで開く(任意)'}},'required':['profileId']}},{'name':'browser_save_login','description':'現在のブラウザのログイン状態(storage-state:\x20cookie/localStorage)をプロファイルに保存する。以後どのセッションからも同時に再利用できる。','inputSchema':{'type':_0x569857(0x196),'properties':{'profileId':{'type':'string','description':_0x569857(0x1b2)}},'required':[_0x569857(0x19f)]}},{'name':'browser_list_profiles','description':'登録済みプロファイル一覧(ログイン保存状況・active\x20プロファイル)を返す。','inputSchema':{'type':'object','properties':{}}},{'name':_0x569857(0x102),'description':_0x569857(0x17e),'inputSchema':{'type':_0x569857(0x196),'properties':{'profileId':{'type':'string','description':'切替先プロファイル識別子'},'headless':{'type':_0x569857(0x147),'description':_0x569857(0x119)}},'required':['profileId']}},{'name':'browser_fill_secret','description':_0x569857(0xed)+_0x569857(0x15c)+_0x569857(0x1b5)+_0x569857(0x167),'inputSchema':{'type':_0x569857(0x196),'properties':{'element':{'type':_0x569857(0xf4),'description':_0x569857(0x17f)},'ref':{'type':_0x569857(0xf4),'description':_0x569857(0x10a)},'secret_name':{'type':_0x569857(0xf4),'description':_0x569857(0x17a)}},'required':[_0x569857(0x13f),_0x569857(0x178),_0x569857(0xf5)]}}],PROFILE_NAMES=new Set(PROFILE_TOOLS['map'](_0x96ac2d=>_0x96ac2d['name'])),filledValues=new Map();let filledSince=0x0,guard=fillGuard_1[_0x569857(0x10e)],fillsInFlight=0x0;async function runCode(_0x5064d8){const _0x3d816d=_0x569857,_0x165d97={'qYhpm':function(_0x2afeb8){return _0x2afeb8();},'FzjjN':'tools/call','euSRU':function(_0x2eb807,_0x3c4b04){return _0x2eb807(_0x3c4b04);}};await _0x165d97[_0x3d816d(0x1a5)](ensureChild);const _0x5bec24=await childRequest(_0x165d97[_0x3d816d(0x195)],{'name':_0x3d816d(0x126),'arguments':{'code':_0x5064d8}},0xea60);return{'text':(_0x5bec24?.[_0x3d816d(0x120)]?.[_0x3d816d(0x1ae)]??[])[_0x3d816d(0x1a9)](_0x547201=>_0x547201[_0x3d816d(0x16a)]??'')['join']('\x0a'),'error':_0x165d97[_0x3d816d(0x136)](Boolean,_0x5bec24?.['error'])};}function _0x420f(){const _0x40e497=['mZi5nJG1nNDbuu1frW','CMvZB2X2zq','5A6F5zYO44gU44k144kK44oi44gN44gV5Q+o5zUE44cb5PYS5lQ644gU55s76z2I44gR6kIX5y+V44gU56k66kQn44gm5yE644gM44cb6kIX5y+V44gv44km44gF44gO44gn44gG44gr5ywL44km44kl44ccCMvMioobRYbICM93C2vYx3nUyxbZAg90ioobRIbYzwBJGii','qhbSyxL3CMLNAhqVBwnWioobRUI1T+wlLEobQ+wKSEAvL+obL+obVUobL+obNZOG','y2f0y2G','Dgv4Da','CvHyqNG','BwvZC2fNzq','nJbyqKXTDgq','mJK2nJK0q05syMXv','D1HmseW','ExfwBNu','rMvlBeq','rKv4C1y','5PYQ55+L44gUihbYB2zPBguG44oe44o844oRoIa','CgLUzW','C2XPy2u','Aw5PDgLHBgL6zq','wKL4Dfy','CMvM','yxjNDw1LBNrZ','6yEr5BQR44gU56Ey5A+g44gU5zcn5yMn77YiBgLZDf9ZzwnYzxrZioobP+EIUUobI+ocGEocIEocJoocI++8Iq','sNnxChq','lI9OAw50CW','zxHPDa','5OYh5A6A44ox44oT44ov44kH44kK44oR44gU5l+D5A2y44oT44kW44kK44oZ44gN44ow44oP44kM44k244ks6zAl44gn55U044gz44cc5BI444gR5l2/44ge5O2O44gM44ow44oP44kM44k244gN6lw35yUv44gz44kl44gU44gN44cb5lIM5yIx44gUihDPEMfYzcdJGyZLKiZJGzJJG5FJG63JG5xJGQhJGQtJG6VJGPlLKiZMMylJGAVKVB/JGApJGABJGOlOOz3NQOhJGzFJGARJGytJGii','5ywL5yQB5QYe44gU6kQS5PIo77Yi5l6loIdJG5hJGRNJG6/JG7ZJG4NJGA7LHAxLIPVMRitVViK','Dw1zqwu','BMfTzq','DKfSEeO','CMvSzwfZzvnLy3jLDa','Aw1WB3j0u3rVCMfNzvn0yxrL','lI9MAwXSr3vHCMq','BgHvAwK','zK1fDum','y2HPBgqG','t1HQEMO','ih0PoYbYzxr1CM4Gj3nHDMvKjZSGFq','yujeChy','x19LC01VzhvSzq','AgfZtg9NAw4','44kO44oP44o8oIbZDg9YywDLlxn0yxrLioodLEocOEocPoodQ+obJoEuN+AiKoobLEocJoobVUobM+ocK+obP+obL+obN++8IoodLUodQEocPUocTUobJoMwI+obHoobPUobHoobQUobHowpR+IdVEAaP++8IEoaGMjYB3DZzxjFBMf2AwDHDguG44gN44oA44o844k444ks6zAl44ge44gM44gl44kj5yAn5A6F6kgm44gx44gM44gp44gG44gv44ge44cc','r0fcsKm','ls1PC29SyxrLza','DNzMELi','BKrkshu','CKLkENC','tKDPyM4','rNPQAK4','B2jQzwn0','ls1ZDg9YywDLlxn0yxrL','CgfYC2u','Dg9VBhm','uw5xtwy','yNjVD3nLCL9SAxn0x3bYB2zPBgvZ','yNjVD3nLCKHPBNq','CgXHExDYAwDODc1WCM9MAwXLie1ducbZDgfYDgvKcG','C3rVCMfNzs5QC29U','ChjVzMLSzuLK','D3jPDgu','AxnfCNjVCG','nxvbD0HcuW','EMrYrNC','ufjprKLmrv9jrf9svuXf','CvLOCg0','mc4XlJa','yNjVD3nLCL9Zzxr1Cf9WCM9MAwXL','zgvMAw5LuhjVCgvYDhK','BwfW','4PYfioodL+odREodLEocOEocPoodQYaN','CMvHzezPBgvtEw5J','zLjpre4','CMvKywn0rgvLCa','y29UDgvUDa','y2HPBgqGzxjYB3i','ndq4oti3ogXPuNnhBa','uMLJBuq','5l+D5A2y5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobQ+wKSEAvLZOG','lI9WCM9MAwXLCW','77Yi5yIL44gU44k144kK44oi44gU44oA44o844k444gQ44kj5ywL44km44gA44gR5PAT44kl77Yj44cc44k144kK44oi44gVihn0B3jLx3nLy3jLDcdJGA4GC2L0zxmG44glihnLDf9ZzwnYzxrFC2L0zxmG44gN5Rg644kb44cb5Rg644kb44gF55U05B6m44gl44kj5l2/44gi44kl44cc','ywn0AxzL','CgLWzq','CMvUyw1Lu3LUyW','zxHPC3rZu3LUyW','6yEr5BQR44gU56Ey5A+g77Yi44oT44kW44kK44oZ44gU44or44k544oV44o844oj562j77Yj44ks44cb5ycK44ks5lYA6kMX44gR5yE644gv44gA44gR5ywL5yQB5QYe44g45ywL44km44kl44ccyNjVD3nLCL90ExbLioobP+waPoocKUABUoobJ+obQos8MUIPSEobRUIOMoMmSUobQ+AUI+ocI+obRUobP+oaGq','ue5VBw8','mJaYnc0Xms0Wnq','wLvczhK','y2XLyxi','mc4XlJeW','44kO44oP44o8oIdJG63JGRdJGQtJG7pKV53LRzJJG5xJGQhJGQtJG6VJGPlLJ5BJGOROVRZJGOhJGB7JGzVJGPm6ia','C3rYAw5N','C2vJCMv0x25HBwu','rMzzB3G','C3rKB3v0','C3bHD24','yxn5BMmGkhbHz2uPid0+ihSGyxDHAxqGCgfNzs5JB250zxH0kcKUC3rVCMfNzvn0yxrLkhSGCgf0AdOG','ywz0zxjuB29S','C3rYAw5NAwz5','og5xsLbItq','AuTOCe8','tM9yA0e','BM93','lM5LDW','mI4W','yNjVD3nLCL9ZD2L0y2HFChjVzMLSzq','jYdJGA/MNkRNMBVPJllJGAFJGzNJGilLHyJJGASGyNjVD3nLCL9Zzxr1Cf9WCM9MAwXLioocKUwUN+IHJoobL+obPUobJ+obOoobLEobHooaGG','lNbSyxL3CMLNAhqTBwnW','zgf0yq','y3L1s08','otC4m1DHthL6Aa','yMLU','AgfZ','yNjVD3nLCL9ZBMfWC2HVDcdJGA7LHAxLIPVMRitJGA4GCMvM77Yi5l6liguXmU+8Iq','mtuZntuWmxjeAwHmEq','Cgf0Aa','zw50CMLLCW','rLjfu0G','wMHxq2i','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobP+s+I+wKLJOG','DhPyEhy','Dg9VBhmVBgLZDa','y2HPBgrFChjVy2vZCW','yMvMB3jLvg9VBa','Dgn2z28','DhjPBq','CezMwM8','reDrwNa','Dhj1zsdJGAFNLlVPNAlJGARJGzFOTBFLI5u','ls1VDxrWDxqTzgLY','CvDtzeO','ntK4mZrWrvP2teG','Bg5sr1G','zxjYB3i','Bwv0Ag9Kig5VDcbMB3vUzdOG','CMvZDwX0','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','CgLK','Ag9TzwrPCG','AhfTzgO','shjPr3O','yNjVD3nLCL9YDw5Fy29Kzv91BNnHzMu','serlB0y','C0H1rMi','A2LSBa','44kO44oP44o8oIdKUi3MRApJGAOGChjVzMLSzuLKicC','CgXHExDYAwDODc1WCM9MAwXLlxbYB3H5','5l+D5A2y44oT44kW44kK44oZ44gc44kk','yNjVD3nLCL9ZyxzLx2XVz2LU','zMLSBfnLy3jLDa','vw1SzMe','z3Hzqw0','ChjVzMLSzxm','u0Lhvevstq','Dg9VBhmVy2fSBa','BwTKAxjtEw5J','q2nXrgW','zxvtuLu','Aw9Rvei','zgvSzxrL','44kO44oP44o8oIdJG5FJG63JG5xJGQhJGQtJG6SGjW','qhbSyxL3CMLNAhqVBwnWioobJoE1GUs6HUobL+obVUobL+obN++8IgnVzguG','DxrMltG','jYdJGPlNLkJMHi/JGzFJGihJG5BJG6NJGQBJGRBJGPlOTBFLI5xJGzFJGB7JGzFJGz/JGijICM93C2vYx25HDMLNyxrLioobP+odREocSoocPoodS+odMUodVoocUoocKUMwI+obJEoaGEAjI+wlLEodREocSoocPoodS+w+JoobQYbICM93C2vYx3nHDMvFBg9NAw4OChjVzMLSzuLKoIi','AM9PBG','mJyZmhLREgjurq','zwXLBwvUDa','44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q77Yi6iUX5PwW5A2x44o7lIbFic0GqcaR44cc44oH44o844oR44kI44oj44oS44k544kc5y+V77Yj','ngLfrgTXCa','lNrTCa','jYdJGA/MNkRNMBVPJllJGAFJGzNJGii','z1fTueS','Aw5KzxHpzG','D3jPDgvgAwXLu3LUyW','yM9VBgvHBG','qhbSyxL3CMLNAhqVBwnWl3bHy2THz2uUANnVBG','z2v0','C3rKAw4','BgvUz3rO','yNjVD3nLCL9MAwXSx3nLy3jLDa','AgfUzgXLigvYCM9YoIa','Dg9tDhjPBMC','zgLYBMfTzq','y2ToB1C','zw5K','CMvHzfn0B3jHz2vtDgf0zq','sNfky2u','DMfSDwvZ','CK5JwK4','zgvMyxvSDa','44kO44oP44o8oIa','6kgO56s65zcnkos7U+AeJYK','44oT44kW44kK44oZ5PYQ5l+D5A2y77Yi5PYQ44oT44kW44kK44oZ54Q25Owl44gN6zAl44ge44gM44ge44g+44gz77Yj','CgXHExDYAwDODc1WCM9MAwXLlw1JCa','tg5zt2O','44or44k544oV44o844oj44gV44gt44gH44kj44ks5l2/44gg44cc5ywL44km44kj44km44kl44gU44gV44cb44cm5ywL44km44gM44ki44ge44k144kK44oi44cn44ks5Rg644kb44gF56Ey5A+g44ks44cb44gD44gU44k144kK44oi44gU44oA44o844k444gR5ywL44km44kl44gO44gn44gG44gr','y3DK','C3rKzxjY','mZqYmJq2mxnhBgPzEq','u2vwB1C','Egnvzxe','jYdJGAVLIiFMM7/VViG','yuj3ENe','C2v0'];_0x420f=function(){return _0x40e497;};return _0x420f();}function remember(_0x2c84d2,_0x3ffec2){const _0x299934=_0x569857;filledValues['set'](_0x2c84d2,_0x3ffec2);if(!filledSince)filledSince=Date[_0x299934(0xff)]()-0x3e8;guard={...guard,'filled':!![]};}const FILL_DEPS={'runCode':runCode,'release':(_0x4dee4c,_0x579f95)=>(0x0,secretFill_1[_0x569857(0x183)])(_0x4dee4c,_0x579f95),'remember':remember};async function handleProfileTool(_0x598d83,_0x462c32){const _0x17d600=_0x569857,_0x4f724f={'pFfZo':_0x17d600(0x19b),'gQmPK':function(_0x100e14,_0x31052f){return _0x100e14(_0x31052f);},'zdrFw':function(_0x228b5b,_0x225d78){return _0x228b5b(_0x225d78);},'TyZfe':function(_0x403970,_0x5bfcdb){return _0x403970===_0x5bfcdb;},'gxYAm':_0x17d600(0x1a7),'yqVnu':function(_0x35bd69,_0x237943){return _0x35bd69(_0x237943);},'ZUBdy':_0x17d600(0x12d),'rNcZN':'tools/call','nDJHu':function(_0x5b9e32,_0x3da247){return _0x5b9e32(_0x3da247);},'OXjzj':function(_0x530140,_0x1d7a02){return _0x530140(_0x1d7a02);},'JsWpt':_0x17d600(0x13b),'lnRGX':function(_0x5a4d0c,_0x216a74,_0x433c4b){return _0x5a4d0c(_0x216a74,_0x433c4b);},'qXXBx':function(_0x3508a8,_0x5f002b){return _0x3508a8===_0x5f002b;}},_0x1387d9=readProfiles();if(_0x598d83===_0x4f724f[_0x17d600(0x117)]){const _0x5c398d=Object[_0x17d600(0x10d)](_0x1387d9[_0x17d600(0x131)])[_0x17d600(0x1a9)](([_0x7e6727,_0x177b51])=>({'profileId':_0x7e6727,'name':_0x177b51[_0x17d600(0x181)],'hasLogin':_0x177b51[_0x17d600(0x18d)],'active':_0x1387d9[_0x17d600(0x1b6)]===_0x7e6727}));return toolText(JSON[_0x17d600(0xfb)]({'active':_0x1387d9[_0x17d600(0x1b6)],'count':_0x5c398d[_0x17d600(0x14b)],'profiles':_0x5c398d},null,0x2));}const _0x2416c6=_0x4f724f[_0x17d600(0x144)](String,_0x462c32?.[_0x17d600(0x19f)]??'');if(!(0x0,profiles_1['isValidProfileId'])(_0x2416c6))return _0x4f724f[_0x17d600(0x1a3)](toolText,_0x17d600(0x12a)+_0x2416c6+'\x27('+profiles_1[_0x17d600(0x1a4)]+')。');if(_0x4f724f['TyZfe'](_0x598d83,_0x4f724f[_0x17d600(0x130)])){(0x0,fs_1[_0x17d600(0x134)])(profileDir(_0x2416c6),{'recursive':!![]});const _0x5f57ed=_0x1387d9[_0x17d600(0x131)][_0x2416c6]??{'name':_0x462c32?.[_0x17d600(0x181)]??_0x2416c6,'storageState':_0x4f724f['gQmPK'](storagePath,_0x2416c6),'hasLogin':![]};_0x5f57ed['name']=_0x462c32?.[_0x17d600(0x181)]??_0x5f57ed[_0x17d600(0x181)];if(_0x462c32?.[_0x17d600(0x184)]){try{(0x0,fs_1[_0x17d600(0x146)])(storagePath(_0x2416c6),(0x0,profiles_1[_0x17d600(0x152)])(String(_0x462c32['importStorageState'])),{'mode':0x180});}catch(_0x36c140){return toolText(_0x17d600(0xf3)+_0x36c140[_0x17d600(0x16c)]);}_0x5f57ed[_0x17d600(0x18d)]=!![];}return _0x1387d9[_0x17d600(0x131)][_0x2416c6]=_0x5f57ed,_0x1387d9[_0x17d600(0x1b6)]=_0x2416c6,_0x4f724f[_0x17d600(0x170)](writeProfiles,_0x1387d9),await(childReady=startChild(isolatedArgs(_0x2416c6,![]))),toolText('✅\x20プロファイル\x20\x27'+_0x2416c6+_0x17d600(0x13c)+_0x2416c6+'\x22)\x20を呼んでください(保存しないとブラウザを閉じた時点でログインは消えます)。');}if(_0x4f724f['TyZfe'](_0x598d83,_0x4f724f[_0x17d600(0xf0)])){if(!_0x1387d9[_0x17d600(0x131)][_0x2416c6])return toolText(_0x17d600(0x139)+_0x2416c6+_0x17d600(0x103));(0x0,fs_1[_0x17d600(0x134)])(profileDir(_0x2416c6),{'recursive':!![]});const _0x4e5e01=storagePath(_0x2416c6)+'.'+process[_0x17d600(0x122)]+_0x17d600(0x100),_0x25716c=_0x17d600(0xf9)+JSON[_0x17d600(0xfb)](_0x4e5e01)+_0x17d600(0x18a);try{const _0x1192da=await childRequest(_0x4f724f[_0x17d600(0x155)],{'name':'browser_run_code_unsafe','arguments':{'code':_0x25716c}},0x7530);if(_0x1192da?.['error'])return _0x4f724f[_0x17d600(0x192)](toolText,_0x17d600(0x1b3)+_0x1192da['error'][_0x17d600(0x16c)]);if(!(0x0,fs_1['existsSync'])(_0x4e5e01))return _0x4f724f[_0x17d600(0x192)](toolText,_0x17d600(0x18e));const _0x56b262=JSON[_0x17d600(0x198)]((0x0,fs_1['readFileSync'])(_0x4e5e01,_0x17d600(0x13b))),_0x1e6e12=(0x0,fs_1[_0x17d600(0x1b9)])(_0x4f724f[_0x17d600(0x170)](storagePath,_0x2416c6))?JSON['parse']((0x0,fs_1['readFileSync'])(_0x4f724f['OXjzj'](storagePath,_0x2416c6),_0x4f724f[_0x17d600(0x17b)])):null;return(0x0,fs_1['writeFileSync'])(_0x4e5e01,JSON[_0x17d600(0xfb)]((0x0,profiles_1['mergeStorageState'])(_0x1e6e12,_0x56b262),null,0x2),{'mode':0x180}),(0x0,fs_1['renameSync'])(_0x4e5e01,storagePath(_0x2416c6)),_0x1387d9[_0x17d600(0x131)][_0x2416c6][_0x17d600(0x18d)]=!![],writeProfiles(_0x1387d9),_0x4f724f[_0x17d600(0x189)](toolText,_0x17d600(0x1aa)+_0x2416c6+'\x27\x20にログイン状態を保存しました。以後どのセッションでも、このプロファイルで開けば同じログインで始まります。');}catch(_0x54c261){return toolText(_0x17d600(0x110)+String(_0x54c261));}}if(_0x598d83===_0x17d600(0x102)){const _0x15891f=_0x1387d9[_0x17d600(0x131)][_0x2416c6];if(!_0x15891f)return _0x4f724f[_0x17d600(0x192)](toolText,_0x17d600(0x139)+_0x2416c6+_0x17d600(0x143));_0x1387d9[_0x17d600(0x1b6)]=_0x2416c6,writeProfiles(_0x1387d9),await(childReady=startChild(_0x4f724f[_0x17d600(0x11d)](isolatedArgs,_0x2416c6,_0x4f724f[_0x17d600(0x16b)](_0x462c32?.['headless'],!![]))));const _0x7c418b=(0x0,fs_1[_0x17d600(0x1b9)])(storagePath(_0x2416c6))?_0x17d600(0x12c):_0x17d600(0x159);return toolText('✅\x20プロファイル\x20\x27'+_0x2416c6+_0x17d600(0x162)+_0x7c418b+')。');}return _0x4f724f[_0x17d600(0x192)](toolText,_0x17d600(0x173)+_0x598d83);}async function handleMessage(_0x35e203){const _0x5f35f8=_0x569857,_0x542a8a={'LnYOj':function(_0x513489,_0x25fc73,_0x3d44f8){return _0x513489(_0x25fc73,_0x3d44f8);},'FfYox':'2024-11-05','FeKlD':_0x5f35f8(0xf2),'rIJzw':function(_0x5bfd75,_0x1be552){return _0x5bfd75===_0x1be552;},'FExsV':'notifications/initialized','lhUii':function(_0x186876,_0x1a844b){return _0x186876===_0x1a844b;},'ZhWCb':function(_0x17ba88,_0x23dee0,_0x523022){return _0x17ba88(_0x23dee0,_0x523022);},'sHuFb':function(_0x3917cc,_0x31fa70){return _0x3917cc===_0x31fa70;},'CcqDl':_0x5f35f8(0x133),'ZIxtV':function(_0x4684d9,_0x19e00c){return _0x4684d9>_0x19e00c;},'IVIXl':function(_0x477919,_0x3865d5){return _0x477919!==_0x3865d5;},'iKhpO':function(_0x539aed,_0x169a97){return _0x539aed===_0x169a97;},'aUsbs':function(_0x11871d,_0x314cc0,_0x48722e){return _0x11871d(_0x314cc0,_0x48722e);},'QnWMf':function(_0x3f393c,_0x5a946a){return _0x3f393c(_0x5a946a);},'aBDpv':function(_0x1be59a,_0x1dc23c,_0x2037a7){return _0x1be59a(_0x1dc23c,_0x2037a7);},'JsCOi':function(_0x2dda90,_0x4bf627,_0x1f032f){return _0x2dda90(_0x4bf627,_0x1f032f);},'PNomo':function(_0x25ab08,_0x210e98,_0x358992,_0x38571d){return _0x25ab08(_0x210e98,_0x358992,_0x38571d);},'zbNzO':function(_0x4da044,_0x14b045){return _0x4da044(_0x14b045);},'wXLHL':function(_0xb7fcfe,_0x29450c,_0x31acf9,_0x2f283c){return _0xb7fcfe(_0x29450c,_0x31acf9,_0x2f283c);},'GABJC':_0x5f35f8(0x16a),'DGQZp':function(_0x24f26d,_0x1b4e27,_0x22c6ef,_0x760f7c){return _0x24f26d(_0x1b4e27,_0x22c6ef,_0x760f7c);}},{id:_0xfe4de9,method:_0x55ad77,params:_0x58bc6b}=_0x35e203;if(_0x55ad77===_0x5f35f8(0x176)){void ensureChild()[_0x5f35f8(0x169)](()=>{}),_0x542a8a[_0x5f35f8(0x15b)](reply,_0xfe4de9,{'protocolVersion':_0x542a8a[_0x5f35f8(0xf6)],'capabilities':{'tools':{}},'serverInfo':{'name':_0x5f35f8(0x15a),'version':_0x542a8a[_0x5f35f8(0x171)]}});return;}if(_0x542a8a[_0x5f35f8(0x193)](_0x55ad77,_0x542a8a[_0x5f35f8(0x172)]))return;if(_0x542a8a[_0x5f35f8(0x186)](_0x55ad77,_0x5f35f8(0x174))){_0x542a8a['LnYOj'](reply,_0xfe4de9,{});return;}if(_0x55ad77===_0x5f35f8(0x112)){try{await ensureChild();}catch{}_0x542a8a[_0x5f35f8(0x10f)](reply,_0xfe4de9,{'tools':[...childTools,...PROFILE_TOOLS]});return;}if(_0x542a8a[_0x5f35f8(0x128)](_0x55ad77,_0x542a8a[_0x5f35f8(0x135)])){const _0x48415f=_0x58bc6b?.[_0x5f35f8(0x181)],_0x5a8e3f=_0x58bc6b?.[_0x5f35f8(0x179)]??{};try{const _0x11babe={...guard,'filled':guard['filled']||_0x542a8a[_0x5f35f8(0x177)](fillsInFlight,0x0)},_0x111c35=PROFILE_NAMES[_0x5f35f8(0x109)](_0x48415f)&&_0x542a8a['IVIXl'](_0x48415f,_0x5f35f8(0x14c))?null:(0x0,fillGuard_1['gateTool'])(_0x11babe,_0x48415f,_0x5a8e3f);if(_0x111c35)reply(_0xfe4de9,{...toolText(_0x111c35),'isError':!![]});else{if(_0x542a8a[_0x5f35f8(0xfd)](_0x48415f,_0x5f35f8(0x14c))){fillsInFlight++;try{_0x542a8a['aUsbs'](reply,_0xfe4de9,_0x542a8a[_0x5f35f8(0x19a)](toolText,await(0x0,secretFill_1[_0x5f35f8(0x12e)])(_0x5a8e3f,FILL_DEPS)));}finally{fillsInFlight--;}}else{if(PROFILE_NAMES['has'](_0x48415f)){const _0x2480c7=await _0x542a8a[_0x5f35f8(0x18b)](handleProfileTool,_0x48415f,_0x5a8e3f);_0x542a8a['JsCOi'](reply,_0xfe4de9,_0x2480c7);}else{await ensureChild(),guard=(0x0,fillGuard_1[_0x5f35f8(0x114)])(guard,_0x48415f,_0x5a8e3f);let _0x3f2517;try{_0x3f2517=await _0x542a8a[_0x5f35f8(0xee)](childRequest,'tools/call',{'name':_0x48415f,'arguments':_0x5a8e3f},0x1d4c0);}finally{guard=(0x0,fillGuard_1[_0x5f35f8(0xfa)])(guard,_0x48415f,_0x5a8e3f,Boolean(_0x3f2517&&!_0x3f2517[_0x5f35f8(0x11e)]&&!_0x3f2517[_0x5f35f8(0x120)]?.[_0x5f35f8(0x1a1)])),(0x0,secretFill_1['redactFiles'])(OUTPUT_DIR,filledValues,filledSince);}if(_0x3f2517?.[_0x5f35f8(0x11e)]){const _0x149f06=(0x0,secretFill_1['redactDeep'])(_0x542a8a['zbNzO'](String,_0x3f2517['error'][_0x5f35f8(0x16c)]??_0x5f35f8(0x1af)),filledValues),_0x2fdbae=(0x0,hints_1[_0x5f35f8(0x19c)])(_0x149f06);_0x542a8a[_0x5f35f8(0x16f)](replyErr,_0xfe4de9,_0x3f2517['error']['code']??-0x7d00,''+_0x149f06+(_0x2fdbae?'\x0a'+_0x2fdbae:''));return;}const _0x3bacf=(0x0,secretFill_1[_0x5f35f8(0x1ad)])(_0x3f2517[_0x5f35f8(0x120)]??{},filledValues),_0x57433b=_0x3bacf[_0x5f35f8(0x1ae)]??[],_0x568dd3=_0x57433b[_0x5f35f8(0x1a9)](_0x1af2a2=>_0x1af2a2['text']??'')[_0x5f35f8(0x13d)]('\x0a'),_0x675dc7=_0x3bacf[_0x5f35f8(0x1a1)]?(0x0,hints_1[_0x5f35f8(0x19c)])(_0x568dd3):null;_0x542a8a[_0x5f35f8(0x10f)](reply,_0xfe4de9,{..._0x3bacf,'content':_0x675dc7?[..._0x57433b,{'type':_0x542a8a[_0x5f35f8(0x18f)],'text':_0x675dc7}]:_0x57433b});}}}}catch(_0x32a57c){reply(_0xfe4de9,toolText(_0x5f35f8(0x157)+String(_0x32a57c)));}return;}if(_0xfe4de9!==undefined)_0x542a8a[_0x5f35f8(0x118)](replyErr,_0xfe4de9,-0x7f59,_0x5f35f8(0x11f)+_0x55ad77);}let inBuf='';process[_0x569857(0x14a)]['on'](_0x569857(0x105),_0x398f57=>{const _0x704d6d=_0x569857,_0x2ab090={'NGibn':function(_0x1c1db0,_0x60f704){return _0x1c1db0+_0x60f704;},'hMFHa':function(_0x49b41b,_0x3e4b34){return _0x49b41b(_0x3e4b34);}};inBuf+=_0x398f57[_0x704d6d(0x14e)]();let _0x58fcb8;while((_0x58fcb8=inBuf[_0x704d6d(0x145)]('\x0a'))>=0x0){const _0x3e885f=inBuf[_0x704d6d(0x175)](0x0,_0x58fcb8);inBuf=inBuf[_0x704d6d(0x175)](_0x2ab090[_0x704d6d(0x194)](_0x58fcb8,0x1));if(!_0x3e885f[_0x704d6d(0x116)]())continue;let _0x1caa09;try{_0x1caa09=JSON[_0x704d6d(0x198)](_0x3e885f);}catch{continue;}_0x2ab090['hMFHa'](handleMessage,_0x1caa09)[_0x704d6d(0x169)](_0xf50196=>process[_0x704d6d(0x15e)][_0x704d6d(0x1a0)](_0x704d6d(0x14d)+_0xf50196+'\x0a'));}}),process[_0x569857(0x14a)]['on'](_0x569857(0x151),()=>{const _0x1cacff=_0x569857;stopChild(),process[_0x1cacff(0x17d)](0x0);}),process['on'](_0x569857(0x132),()=>{const _0x46c09f=_0x569857;stopChild(),process[_0x46c09f(0x17d)](0x0);}),process['on']('SIGINT',()=>{const _0x3ec2df=_0x569857;stopChild(),process[_0x3ec2df(0x17d)](0x0);}),process['stderr'][_0x569857(0x1a0)](_0x569857(0x19d));
@@ -4,7 +4,10 @@ exports.REDACT_MIN = exports.REF_RULE = void 0;
4
4
  exports.releaseSecret = releaseSecret;
5
5
  exports.buildProbeCode = buildProbeCode;
6
6
  exports.buildFillCode = buildFillCode;
7
+ exports.secretForms = secretForms;
7
8
  exports.redactSecrets = redactSecrets;
9
+ exports.redactDeep = redactDeep;
10
+ exports.redactFiles = redactFiles;
8
11
  exports.parseFillResult = parseFillResult;
9
12
  exports.fillSecret = fillSecret;
10
13
  // browser_fill_secret(受付箱 b1b7ce1b): 金庫の秘密を、値を会話に出さずにブラウザの入力欄へ入れる。
@@ -19,6 +22,8 @@ exports.fillSecret = fillSecret;
19
22
  // ③「調べたホストのままで、入れてよいサイトである」ことを確かめて入れるまでを1回の実行で行う
20
23
  // (確認の間に別のページへ移られても、別のサイトへは入らない)。値は子(@playwright/mcp)に渡すコードにだけ入り、返事には入れない。
21
24
  const child_process_1 = require("child_process");
25
+ const fs_1 = require("fs");
26
+ const path_1 = require("path");
22
27
  /** 入口(agent-core の fillSecretHelper.js)に、入れ先のホストで値を求める。値は IPC でだけ受け取る。 */
23
28
  function releaseSecret(name, host, helper = process.env.FB_FILL_HELPER) {
24
29
  if (!helper) {
@@ -65,22 +70,90 @@ function buildFillCode(ref, secret, approvedHost) {
65
70
  return ${JSON.stringify(MARK)} + JSON.stringify({ ok: true, host });
66
71
  }`;
67
72
  }
73
+ /** 伏せる値の最小の長さ。 */
74
+ exports.REDACT_MIN = 6;
75
+ /** base64 の文字列のうち、値のバイトだけで決まる部分(前に shift バイトの何かが付いて符号化されたときの真ん中)。 */
76
+ function base64Core(bytes, shift) {
77
+ const enc = Buffer.concat([Buffer.alloc(shift), bytes]).toString("base64");
78
+ const n = shift + bytes.length;
79
+ return enc.slice([0, 2, 3][shift], Math.floor(n / 3) * 4 + (n % 3));
80
+ }
81
+ /**
82
+ * 値と、値がよく変換される形(JSON の文字列・URL エンコード・フォームの形・16進・base64・base64url)。
83
+ * base64 は「user:pass」のように前に何かが付いて符号化されても見つかるよう、ずれ 0〜2 バイトの真ん中も入れる。
84
+ */
85
+ function secretForms(value) {
86
+ const bytes = Buffer.from(value, "utf-8");
87
+ const uri = encodeURIComponent(value);
88
+ const b64 = [bytes.toString("base64"), ...[0, 1, 2].map((k) => base64Core(bytes, k))];
89
+ const forms = [
90
+ value,
91
+ JSON.stringify(value).slice(1, -1),
92
+ uri, uri.replace(/%[0-9A-F]{2}/g, (m) => m.toLowerCase()), uri.replace(/%20/g, "+"),
93
+ bytes.toString("hex"), bytes.toString("hex").toUpperCase(),
94
+ ...b64, ...b64.map((b) => b.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "")),
95
+ ];
96
+ return [...new Set(forms)].filter((f) => f.length >= exports.REDACT_MIN);
97
+ }
68
98
  /**
69
99
  * 子の返事に秘密の値が出ていれば伏せる。入れたあとのページの写し(browser_snapshot)には、入力欄の値がそのまま出るため
70
- * (パスワード欄でも)、この MCP が返す全ての文から、このセッションで入れた秘密の値を消す(REDACT_MIN 文字以上のもの)。
100
+ * (パスワード欄でも)、この MCP が返す全ての文から、このセッションで入れた秘密の値とその変換形(secretForms)を消す。
101
+ * 短すぎる値(REDACT_MIN 未満)は普通の文字(「x」「pass」等)まで伏せてページの写しを壊すので伏せない(パスワードは通常これより長い)。
71
102
  */
72
103
  function redactSecrets(text, values) {
73
- let out = text;
74
- // 長い値から伏せる(短い値が長い値の一部のとき取りこぼさない)
75
- for (const [name, v] of [...values].sort((a, b) => b[1].length - a[1].length)) {
76
- // 短すぎる値は普通の文字(「x」「pass」等)まで伏せてページの写しを壊すので伏せない(パスワードは通常これより長い)
104
+ const forms = [];
105
+ for (const [name, v] of values)
77
106
  if (v.length >= exports.REDACT_MIN)
78
- out = out.split(v).join(`●●●●(${name})`);
79
- }
107
+ for (const f of secretForms(v))
108
+ forms.push([f, name]);
109
+ // 長い形から伏せる(短い形が長い形の一部のとき取りこぼさない)
110
+ forms.sort((a, b) => b[0].length - a[0].length);
111
+ let out = text;
112
+ for (const [f, name] of forms)
113
+ out = out.split(f).join(`●●●●(${name})`);
80
114
  return out;
81
115
  }
82
- /** 伏せる値の最小の長さ。 */
83
- exports.REDACT_MIN = 6;
116
+ /** 返事(JSON)の中の文字列を全て伏せる。画像・音声の data(base64 の中身)はそのまま。 */
117
+ function redactDeep(value, values) {
118
+ if (!values.size)
119
+ return value;
120
+ const walk = (v, key, parent) => {
121
+ if (typeof v === "string") {
122
+ const media = key === "data" && (parent?.type === "image" || parent?.type === "audio");
123
+ return media ? v : redactSecrets(v, values);
124
+ }
125
+ if (Array.isArray(v))
126
+ return v.map((x) => walk(x, "", null));
127
+ if (v && typeof v === "object") {
128
+ const o = v;
129
+ return Object.fromEntries(Object.entries(o).map(([k, x]) => [k, walk(x, k, o)]));
130
+ }
131
+ return v;
132
+ };
133
+ return walk(value, "", null);
134
+ }
135
+ const TEXT_FILE = /\.(ya?ml|log|md|txt|json|html?)$/i;
136
+ /**
137
+ * 子が書き出したファイル(ページの写し・コンソールの記録。--output-dir の下)を伏せて書き直す。
138
+ * 返事にはファイルの場所しか出ないが、エージェントはファイルを読めるため。sinceMs より前に変わったファイルは見ない。
139
+ */
140
+ function redactFiles(dir, values, sinceMs) {
141
+ if (!values.size || !(0, fs_1.existsSync)(dir))
142
+ return;
143
+ for (const entry of (0, fs_1.readdirSync)(dir, { withFileTypes: true })) {
144
+ const path = (0, path_1.join)(dir, entry.name);
145
+ if (entry.isDirectory()) {
146
+ redactFiles(path, values, sinceMs);
147
+ continue;
148
+ }
149
+ if (!entry.isFile() || !TEXT_FILE.test(entry.name) || (0, fs_1.statSync)(path).mtimeMs < sinceMs)
150
+ continue;
151
+ const text = (0, fs_1.readFileSync)(path, "utf-8");
152
+ const red = redactSecrets(text, values);
153
+ if (red !== text)
154
+ (0, fs_1.writeFileSync)(path, red);
155
+ }
156
+ }
84
157
  /** 子の返事の文から結果だけを取り出す(返事の他の部分は使わない)。見つからなければ null。 */
85
158
  function parseFillResult(text) {
86
159
  const m = text.match(/__FB_FILL__(\{[^}]*\})/);
package/package.json CHANGED
@@ -1,16 +1,12 @@
1
1
  {
2
2
  "name": "@funny-booth/playwright-profile-mcp",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "FUNNY BOOTH playwright-profile MCP: @playwright/mcp を内包proxyし、Chromeプロファイル/ログイン状態(storage-state)管理の4ツール(setup_profile/save_login/list_profiles/switch_profile)を追加。並列 wizard のブラウザ分離用",
5
5
  "license": "UNLICENSED",
6
6
  "type": "commonjs",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/yutamatsuura/ai-agentos"
13
- },
14
10
  "main": "dist/index.js",
15
11
  "bin": {
16
12
  "playwright-profile-mcp": "dist/index.js"