@funny-booth/playwright-profile-mcp 0.1.9 → 0.1.11
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/fillGuard.js +90 -0
- package/dist/index.js +1 -1
- package/dist/secretFill.js +89 -10
- package/package.json +1 -1
|
@@ -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 _0x21c2b3=_0xec96;(function(_0x5378c0,_0xc1af32){const _0xf66405=_0xec96,_0x28791f=_0x5378c0();while(!![]){try{const _0x4a294b=parseInt(_0xf66405(0x170))/0x1*(parseInt(_0xf66405(0x184))/0x2)+parseInt(_0xf66405(0xff))/0x3*(-parseInt(_0xf66405(0x141))/0x4)+-parseInt(_0xf66405(0x12d))/0x5+parseInt(_0xf66405(0x109))/0x6+-parseInt(_0xf66405(0x174))/0x7+-parseInt(_0xf66405(0xf4))/0x8*(-parseInt(_0xf66405(0x18d))/0x9)+-parseInt(_0xf66405(0x11d))/0xa*(-parseInt(_0xf66405(0x140))/0xb);if(_0x4a294b===_0xc1af32)break;else _0x28791f['push'](_0x28791f['shift']());}catch(_0xd49e8a){_0x28791f['push'](_0x28791f['shift']());}}}(_0x1147,0xbf3f8));Object[_0x21c2b3(0x16f)](exports,_0x21c2b3(0x1b0),{'value':!![]});const hints_1=require('./hints'),profiles_1=require(_0x21c2b3(0x14c)),secretFill_1=require('./secretFill'),child_process_1=require('child_process'),fs_1=require('fs'),path_1=require(_0x21c2b3(0x164)),os_1=require('os'),HOME=(0x0,os_1[_0x21c2b3(0x12e)])(),DIR=(0x0,path_1[_0x21c2b3(0x19a)])(HOME,_0x21c2b3(0x171)),PROFILES=(0x0,path_1['join'])(DIR,'profiles.json');function playwrightCli(){const _0x24f0c5=_0x21c2b3,_0x4f765e={'RUYDc':_0x24f0c5(0x192)},_0x11b33d=require['resolve'](_0x4f765e['RUYDc']),_0x30c890=JSON['parse']((0x0,fs_1[_0x24f0c5(0x168)])(_0x11b33d,_0x24f0c5(0x198)))[_0x24f0c5(0x136)];return(0x0,path_1[_0x24f0c5(0x19a)])((0x0,path_1[_0x24f0c5(0x112)])(_0x11b33d),Object['values'](_0x30c890)[0x0]);}function ensureDir(){const _0x137c98=_0x21c2b3;if(!(0x0,fs_1[_0x137c98(0x13d)])(DIR))(0x0,fs_1[_0x137c98(0x165)])(DIR,{'recursive':!![],'mode':0x1c0});if(!(0x0,fs_1[_0x137c98(0x13d)])(PROFILES))(0x0,fs_1[_0x137c98(0x114)])(PROFILES,JSON[_0x137c98(0x1a0)]({'active':null,'profiles':{}},null,0x2));}function readProfiles(){const _0x513d88=_0x21c2b3;ensureDir();try{const _0x2d893b=JSON[_0x513d88(0x1b2)]((0x0,fs_1[_0x513d88(0x168)])(PROFILES,_0x513d88(0x198)));return{'active':_0x2d893b[_0x513d88(0x121)]??null,'profiles':_0x2d893b[_0x513d88(0x194)]??{}};}catch{return{'active':null,'profiles':{}};}}function writeProfiles(_0x54d06f){const _0x45c6d5=_0x21c2b3,_0x510e14=PROFILES+'.'+process[_0x45c6d5(0xfa)]+_0x45c6d5(0x139);(0x0,fs_1[_0x45c6d5(0x114)])(_0x510e14,JSON[_0x45c6d5(0x1a0)](_0x54d06f,null,0x2)),(0x0,fs_1['renameSync'])(_0x510e14,PROFILES);}function profileDir(_0x2d635b){const _0x194a12=_0x21c2b3;return(0x0,path_1[_0x194a12(0x19a)])(DIR,_0x2d635b);}function storagePath(_0x518263){const _0x39cc20=_0x21c2b3,_0x2f40a2={'CPBDo':function(_0x2c6f64,_0x106ab4){return _0x2c6f64(_0x106ab4);}};return(0x0,path_1[_0x39cc20(0x19a)])(_0x2f40a2[_0x39cc20(0xf2)](profileDir,_0x518263),'storage.json');}function isolatedArgs(_0x240f56,_0x5a88ac){const _0x9d7c12=_0x21c2b3,_0x5975fe={'kfrAD':'--isolated','hclzq':_0x9d7c12(0x180)},_0x3a81b8=[_0x5975fe[_0x9d7c12(0x18a)]];if((0x0,fs_1[_0x9d7c12(0x13d)])(storagePath(_0x240f56)))_0x3a81b8[_0x9d7c12(0x1b5)](_0x9d7c12(0x16a),storagePath(_0x240f56));if(_0x5a88ac)_0x3a81b8[_0x9d7c12(0x1b5)](_0x5975fe['hclzq']);return _0x3a81b8;}let child=null,childBuf='',childTools=[],childArgs=[];function _0x1147(){const _0x3fb1a0=['ufzUs24','BwfW','mtfSv3vHyKu','ntCZodGYoe5IswTWta','ALzhDKC','CgXHExDYAwDODc1WCM9MAwXLlw1JCa','jYdJGPlNLkJMHi/JGzFJGihJG5BJG6NJGQBJGRBJGPlOTBFLI5xJGzFJGB7JGzFJGz/JGijICM93C2vYx25HDMLNyxrLioobP+odREocSoocPoodS+odMUodVoocUoocKUMwI+obJEoaGEAjI+wlLEodREocSoocPoodS+w+JoobQYbICM93C2vYx3nHDMvFBg9NAw4OChjVzMLSzuLKoIi','Dg9VBhmVy2fSBa','Aw5PDgLHBgL6zq','DfrWuMS','CgXHExDYAwDODc1WCM9MAwXLlxbYB3H5','jYdJGA/MNkRNMBVPJllJGAFJGzNJGilLHyJJGASGyNjVD3nLCL9Zzxr1Cf9WCM9MAwXLioocKUwUN+IHJoobL+obPUobJ+obOoobLEobHooaGG','vK1kq3O','yNjVD3nLCL9ZyxzLx2XVz2LU','lI9WCM9MAwXLCW','4PYfioodL+odREodLEocOEocPoodQYaN','C3rYAw5N','44or44k544oV44o844oj44gV44gt44gH44kj44ks5l2/44gg44cc5ywL44km44kj44km44kl44gU44gV44cb44cm5ywL44km44gM44ki44ge44k144kK44oi44cn44ks5Rg644kb44gF56Ey5A+g44ks44cb44gD44gU44k144kK44oi44gU44oA44o844k444gR5ywL44km44kl44gO44gn44gG44gr','C1HHy0e','yxjNDw1LBNrZ','jYdJGAVJG63JGRdJGQtJG7pNIRBMHyVJGPlKV53LRzJJGzFJGB7JGzFJGz/JGilKU6xLVOZJGANJGA7JGRVJG4pJGRFJG6FJG7pJGAFJGOlJGihJGzpJGA7JG5FJG63JG5xJGQhJGQtJG6VJGAFPLOVJGzhJGBdLKiZJGzJJG63JGRdJGQtJG7pJGAFLP4VJGB7JGORJGB7JGzNJGii','y2HPBgqG','AgfUzgXLigvYCM9YoIa','ChjVzMLSzuLK','5A6F5zYO44gU44k144kK44oi44gN44gV5Q+o5zUE44cb5PYS5lQ644gU55s76z2I44gR6kIX5y+V44gU56k66kQn44gm5yE644gM44cb6kIX5y+V44gv44km44gF44gO44gn44gG44gr5ywL44km44kl44ccCMvMioobRYbICM93C2vYx3nUyxbZAg90ioobRIbYzwBJGii','54++5zYO44gU44ow44oP44kM44k244gU44oT44kW44kK44oZ54Q25Owlkhn0B3jHz2uTC3rHDgu6ignVB2TPzs9SB2nHBfn0B3jHz2uP44ks44ox44oT44ov44kH44kK44oR44gR5l+D5A2y44gz44kl44cc5lUL5B6m44gP44gU44k744od44k344oN44oZ44gl44kj44kc5zcm5PMc44gR5yAn5yIP55sO44gN44gn44kl44cc','CMvSzwfZzvnLy3jLDa','yNjVD3nLCL9ZD2L0y2HFChjVzMLSzq','q1brz2e','AhPSs3G','BMfTzq','C3rKAw4','yM9VBgvHBG','yxn5BMmGkhbHz2uPid0+ihSGyxDHAxqGCgfNzs5JB250zxH0kcKUC3rVCMfNzvn0yxrLkhSGCgf0AdOG','yNjVD3nLCL9Zzxr1Cf9WCM9MAwXL','Aw1WB3j0u3rVCMfNzvn0yxrL','A2LSBa','q0f1uNq','Cgf0Aa','BwTKAxjtEw5J','y2XLyxi','v2HRsLK','CMvHzezPBgvtEw5J','44kO44oP44o8oIdJG5FJG63JG5xJGQhJGQtJG6SGjW','ls1ZDg9YywDLlxn0yxrL','77Yj44cc5QYH44gR5l2/44gg44gO44gn44gR6lw35yUv44gx55U044gx44g+44gzcG','44oT44kW44kK44oZ5PYQ5l+D5A2y77Yi5PYQ44oT44kW44kK44oZ54Q25Owl44gN6zAl44ge44gM44ge44g+44gz77Yj','qMzTy2e','AxD2sKK','zgvMAw5LuhjVCgvYDhK','nti3nJK5Eer1wwv1','lMz1BM55lwjVB3rOlxbSyxL3CMLNAhq','CMvHzfn0B3jHz2vtDgf0zq','z2v0','nZiZnZC2ovbxBg5oqq','Dg9VBhmVBgLZDa','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','ihrPBwvVDxq','EMrpwu4','AMH3t2K','zxjYB3i','y2HPBgqGzxjYB3i','CMvZDwX0','ufjprKLmrv9jrf9svuXf','C2vJCMv0x25HBwu','DKDcugy','ls1OzwfKBgvZCW','zMLSBfnLy3jLDa','tfzRwgG','5zcn5yMn5lUy44gn44ox44oT44ov44kH44kK44oR44ks55sO5Osp44gx44cb44oT44kW44kK44oZ5l2C5QwT55sO44gR55s76z2I44gc44kk44gU44ow44oP44kM44k244gN6zAl44gp77Yi5l+D5A2y5RIi44g/44oT44kW44kK44oZ44gm44gc44km44gW5OYb44gH6l6844ka77Yj44cc6zAl44ge44gF44ow44oP44kM44k244gN5OMl5yUv44oT44kW44kK44oZ5B6m44gRigjYB3DZzxjFC2f2zv9SB2DPBIdJGPlLKBZJGBBJGilMIyVLHypJGASGC3rVCMfNzs1ZDgf0zs5QC29UioobJoobGUocJoobScbPBxbVCNrtDg9YywDLu3rHDguG44gN5y+w44kk6l6844kb44kl44cc','mLz5BeLOwa','DMzUvKW','y29UDgvUDa','44kO44oP44o8oIbZDg9YywDLlxn0yxrLioodLEocOEocPoodQ+obJoEuN+AiKoobLEocJoobVUobM+ocK+obP+obL+obN++8IoodLUodQEocPUocTUobJoMwI+obHoobPUobHoobQUobHowpR+IdVEAaP++8IEoaGMjYB3DZzxjFBMf2AwDHDguG44gN44oA44o844k444ks6zAl44ge44gM44gl44kj5yAn5A6F6kgm44gx44gM44gp44gG44gv44ge44cc','vw56txq','y2HkB3G','A2zYquq','jYdJGAVLIiFMM7/VViG','yvzxv0K','nJy3mJC2mKHqA2vNDq','yNjVD3nLCL9YDw5Fy29Kzv91BNnHzMu','rNLRDuO','Dg9VBhm','yuforha','qhbSyxL3CMLNAhqVBwnWl3bHy2THz2uUANnVBG','sLfoDhO','ChjVzMLSzxm','weXmyKS','ChL3EMy','shnsu0G','DxrMltG','mI4W','AM9PBG','Bwv0Ag9Kig5VDcbMB3vUzdOG','qhbSyxL3CMLNAhqVBwnWioobRUI1T+wlLEobQ+wKSEAvL+obL+obVUobL+obNZOG','thPHC2K','zw5K','Dhj3s1u','C3rYAw5NAwz5','CMvUyw1Lu3LUyW','yNjVD3nLCL9ZBMfWC2HVDcdJGA7LHAxLIPVMRitJGA4GCMvM77Yi5l6liguXmU+8Iq','yNjVD3nLCKHPBNq','DKrSrNK','t3HryKG','C3rKzxjY','EeTPBMG','Dhj1zsdJGAFNLlVPNAlJGARJGzFOTBFLI5u','5OYh5A6A44ox44oT44ov44kH44kK44oR44gU5l+D5A2y44oT44kW44kK44oZ44gN44ow44oP44kM44k244ks6zAl44gn55U044gz44cc5BI444gR5l2/44ge5O2O44gM44ow44oP44kM44k244gN6lw35yUv44gz44kl44gU44gN44cb5lIM5yIx44gUihDPEMfYzcdJGyZLKiZJGzJJG5FJG63JG5xJGQhJGQtJG6VJGPlLKiZMMylJGAVKVB/JGApJGABJGOlOOz3NQOhJGzFJGARJGytJGii','z01AvLi','zxHLy1bHDgG','Dg9tDhjPBMC','A25Hr08','zw50CMLLCW','77Yi5yIL44gU44k144kK44oi44gU44oA44o844k444gQ44kj5ywL44km44gA44gR5PAT44kl77Yj44cc44k144kK44oi44gVihn0B3jLx3nLy3jLDcdJGA4GC2L0zxmG44glihnLDf9ZzwnYzxrFC2L0zxmG44gN5Rg644kb44cb5Rg644kb44gF55U05B6m44gl44kj5l2/44gi44kl44cc','x19LC01VzhvSzq','zgf0yq','CgfYC2u','AgfZ','AgvHzgXLC3m','ChvZAa','DhLWzq','twjvCLG','q1bcrg8','zuPMCNC','oefwEevArW','AvzSr1y','AePHEum','u0Lhsu5u','Dgv4Da','5ywL5yQB5QYe44gU6kQS5PIo77Yi5l6loIdJG5hJGRNJG6/JG7ZJG4NJGA7LHAxLIPVMRitVViK','CgLK','AgfZtg9NAw4','zxHPDa','BxPkANC','5yIh5PU/5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','m1flyuzYsq','wKvmA2C','DhjPBq','tgTjDg4','44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q77Yi6iUX5PwW5A2x44o7lIbFic0GqcaR44cc44oH44o844oR44kI44oj44oS44k544kc5y+V77Yj','CMvKywn0u2vJCMv0CW','wwXzru0','55M76yYY5RIi44g/44ox44oT44ov44kH44kK44oR5lIa6kAN77Yi44oT44kW44kK44oZ5l+D5A2y54Q25Rob44o7ywn0AxzLioodL+odREodLEocOEocPoodQ++8IEocKUI/LoobMEoaGG','y2f0y2G','venfr0u','nJiXmZyWBejOt0Py','ueThBMq','y29Kzq','C2XPy2u','BwvYz2vtDg9YywDLu3rHDgu','C2v0','BwvZC2fNzq','yNjVD3nLCL9SAxn0x3bYB2zPBgvZ','zgvMyxvSDa','zgLYBMfTzq','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobP+s+I+wKLJOG','D3jPDgvgAwXLu3LUyW','yuXvv24','EfrSrKy','44kO44oP44o8oIdKUi3MRApJGAOGChjVzMLSzuLKicC','yNjVD3nLCL9MAwXSx3nLy3jLDa','A0feuKi','suzIse4','qhbSyxL3CMLNAhqVBwnWioobJoE1GUs6HUobL+obVUobL+obN++8IgnVzguG','qMnJEMq','mJyZmZuYotbHtMPPzeO','zgvSzxrL','AgLIs2C','B2jQzwn0','ywn0AxzL','uLHUsui','44kO44oP44o8oIdJG63JGRdJGQtJG7pKV53LRzJJG5xJGQhJGQtJG6VJGPlLJ5BJGOROVRZJGOhJGB7JGzVJGPm6ia','s0P2u1y','iIKG44ks5zg844kt44gN44gp44gG44gv44ge77Yi5l+D5A2y44gx44gQ44ge44gO44ow44oP44kM44k244ks6zAj44gy44gF5PMc54k544gN44oT44kW44kK44oZ44gV5RAi44gi44g+44gz77Yj44cc','CMvM','wM5nzM0','sK5cvem','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobQ+wKSEAvLZOG','C3btEMK','6yEr5BQR44gU56Ey5A+g44gU5zcn5yMn77YiBgLZDf9ZzwnYzxrZioobP+EIUUobI+ocGEocIEocJoocI++8Iq','CgLWzq','mZC3mdKWmeLzy25sqW','Ag9TzwrPCG','C3rKB3v0','jYdJGA/MNkRNMBVPJllJGAFJGzNJGii','5OMl5ywd44gU44oT44kW44kK44oZ5l+D5A2y44ov44kH44kK44oR77YiugXHExDYAwDODcdJGA4GC3rVCMfNzs1ZDgf0zs5QC29U77Yj44gU44or44k544cc5OYh5A6A44gz44kl44gO44gD44gU44oT44kW44kK44oZ44ks5y+w44kk6l6844kt44gN6zAl44gpkos7U+AeJYK','Aw5KzxHpzG','BgvUz3rO','zNfpseu','C3bHD24','yMLU','AxnfCNjVCG','5l+D5A2y5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','lNrTCa','D3jPDgu','y2HPBgqGBM90ihj1BM5PBMC','mJaYnc0Xms0Wnq','zxHPC3rZu3LUyW'];_0x1147=function(){return _0x3fb1a0;};return _0x1147();}const childPending=new Map();let childReqId=0x1;function _0xec96(_0x1567c8,_0x268fc4){_0x1567c8=_0x1567c8-0xf0;const _0x114738=_0x1147();let _0xec96ac=_0x114738[_0x1567c8];if(_0xec96['nEmTHI']===undefined){var _0x1e4d07=function(_0x3f23d9){const _0x89a40c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb64a76='',_0x1f12ca='';for(let _0x3ecb14=0x0,_0x3db3be,_0x80e365,_0x1f5cc0=0x0;_0x80e365=_0x3f23d9['charAt'](_0x1f5cc0++);~_0x80e365&&(_0x3db3be=_0x3ecb14%0x4?_0x3db3be*0x40+_0x80e365:_0x80e365,_0x3ecb14++%0x4)?_0xb64a76+=String['fromCharCode'](0xff&_0x3db3be>>(-0x2*_0x3ecb14&0x6)):0x0){_0x80e365=_0x89a40c['indexOf'](_0x80e365);}for(let _0x12c143=0x0,_0x5504cb=_0xb64a76['length'];_0x12c143<_0x5504cb;_0x12c143++){_0x1f12ca+='%'+('00'+_0xb64a76['charCodeAt'](_0x12c143)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1f12ca);};_0xec96['urkGaH']=_0x1e4d07,_0xec96['ovKBPQ']={},_0xec96['nEmTHI']=!![];}const _0x11a0b7=_0x114738[0x0],_0x62daef=_0x1567c8+_0x11a0b7,_0xbd82e7=_0xec96['ovKBPQ'][_0x62daef];return!_0xbd82e7?(_0xec96ac=_0xec96['urkGaH'](_0xec96ac),_0xec96['ovKBPQ'][_0x62daef]=_0xec96ac):_0xec96ac=_0xbd82e7,_0xec96ac;}function stopChild(){const _0x257481=_0x21c2b3;if(child){try{child[_0x257481(0x162)]();}catch{}child=null;}childPending[_0x257481(0x166)](),childBuf='';}function startChild(_0x2fcc0d){const _0x530f63=_0x21c2b3,_0xcb2097={'PVnKn':function(_0x9c8547,_0x22856d){return _0x9c8547===_0x22856d;},'Lzasi':function(_0x345f70,_0x38511b){return _0x345f70>=_0x38511b;},'PKGnd':function(_0x5cf179,_0x12fdb0,_0x5114e0,_0x587241){return _0x5cf179(_0x12fdb0,_0x5114e0,_0x587241);},'vfnVL':function(_0x767480){return _0x767480();},'FNbZg':function(_0x4da80e){return _0x4da80e();},'vGBPf':'pipe','IFbHN':_0x530f63(0x17a),'fqOHE':_0x530f63(0xfc)};return new Promise((_0x3b49eb,_0x525652)=>{const _0xa30a1b=_0x530f63,_0x1a46d9={'YlYEM':function(_0x2cc963,_0x59c9a8){const _0x104622=_0xec96;return _0xcb2097[_0x104622(0x19d)](_0x2cc963,_0x59c9a8);},'aANDp':function(_0x48b9a9,_0x2dc751){return _0x48b9a9+_0x2dc751;},'iwvJI':function(_0x4aa98d,_0x542e91,_0x312d3c,_0x732b68){const _0x34586b=_0xec96;return _0xcb2097[_0x34586b(0x10a)](_0x4aa98d,_0x542e91,_0x312d3c,_0x732b68);},'WhkJY':'0.1.0','RXnIB':function(_0x339021,_0x3feed2,_0x4b4cb7){return _0x339021(_0x3feed2,_0x4b4cb7);},'hzlKx':_0xa30a1b(0x176),'LVkXh':_0xa30a1b(0x175),'chJox':function(_0xd2f3f){const _0x238b81=_0xa30a1b;return _0xcb2097[_0x238b81(0x185)](_0xd2f3f);}};stopChild(),childArgs=_0x2fcc0d;const _0x2058fb=(0x0,child_process_1[_0xa30a1b(0x135)])(process[_0xa30a1b(0x1ab)],[_0xcb2097['FNbZg'](playwrightCli),..._0x2fcc0d],{'stdio':[_0xcb2097[_0xa30a1b(0x17f)],_0xcb2097[_0xa30a1b(0x17f)],_0xa30a1b(0x12c)]});child=_0x2058fb,_0x2058fb['on'](_0xcb2097[_0xa30a1b(0x11a)],_0x7525fe=>_0x525652(_0x7525fe)),_0x2058fb['on'](_0xcb2097[_0xa30a1b(0x134)],_0x58679d=>{const _0x3656c8=_0xa30a1b;_0xcb2097[_0x3656c8(0x13e)](child,_0x2058fb)&&(child=null,childReady=null,childPending[_0x3656c8(0x166)]()),process[_0x3656c8(0x1a6)]['write'](_0x3656c8(0x11b)+_0x58679d+_0x3656c8(0x16b));}),_0x2058fb[_0xa30a1b(0x12f)]['on'](_0xa30a1b(0x1b1),_0x1ccbb4=>{const _0x118708=_0xa30a1b;childBuf+=_0x1ccbb4[_0x118708(0x1ac)]();let _0x429616;while(_0x1a46d9[_0x118708(0x105)](_0x429616=childBuf[_0x118708(0x132)]('\x0a'),0x0)){const _0x1fa2da=childBuf['slice'](0x0,_0x429616);childBuf=childBuf[_0x118708(0x10c)](_0x1a46d9[_0x118708(0x191)](_0x429616,0x1));if(!_0x1fa2da[_0x118708(0x101)]())continue;let _0x4e9638;try{_0x4e9638=JSON[_0x118708(0x1b2)](_0x1fa2da);}catch{continue;}if(_0x4e9638['id']!==undefined&&childPending[_0x118708(0x1b3)](_0x4e9638['id'])){const _0x2473b3=childPending[_0x118708(0x173)](_0x4e9638['id']);childPending[_0x118708(0x11e)](_0x4e9638['id']),_0x2473b3(_0x4e9638);}}}),((async()=>{const _0x5badac=_0xa30a1b;try{await _0x1a46d9[_0x5badac(0x16e)](childRequest,_0x5badac(0x146),{'protocolVersion':_0x5badac(0x13c),'capabilities':{},'clientInfo':{'name':_0x5badac(0x148),'version':_0x1a46d9[_0x5badac(0x167)]}},0x7530),_0x1a46d9[_0x5badac(0x122)](childNotify,_0x1a46d9[_0x5badac(0x15b)],{});const _0xaf9362=await childRequest(_0x1a46d9[_0x5badac(0x182)],{},0x3a98);childTools=_0xaf9362?.['result']?.[_0x5badac(0x190)]??[],_0x1a46d9[_0x5badac(0x189)](_0x3b49eb);}catch(_0x4434b9){_0x525652(_0x4434b9);}})());});}let childReady=null;function ensureChild(){const _0x144d45=_0x21c2b3,_0x1bbfbc={'zdOYN':_0x144d45(0x111),'TCEGE':function(_0x5db0cb,_0x4d4626){return _0x5db0cb(_0x4d4626);},'ETogu':function(_0x4cc093,_0x4d20d6,_0x128e24){return _0x4cc093(_0x4d20d6,_0x128e24);}};if(child&&childReady)return childReady;const _0x364cab=readProfiles(),_0x2f6fd0=_0x364cab[_0x144d45(0x121)]&&_0x364cab['profiles'][_0x364cab[_0x144d45(0x121)]]?_0x364cab['active']:_0x144d45(0x111);return!_0x364cab[_0x144d45(0x194)][_0x1bbfbc['zdOYN']]&&_0x2f6fd0===_0x144d45(0x111)&&(_0x364cab[_0x144d45(0x194)][_0x1bbfbc['zdOYN']]={'name':_0x1bbfbc[_0x144d45(0x178)],'storageState':_0x1bbfbc[_0x144d45(0x108)](storagePath,_0x1bbfbc[_0x144d45(0x178)]),'hasLogin':![]},_0x364cab['active']=_0x1bbfbc[_0x144d45(0x178)],writeProfiles(_0x364cab)),childReady=startChild(childArgs[_0x144d45(0x133)]?childArgs:_0x1bbfbc['ETogu'](isolatedArgs,_0x2f6fd0,![])),childReady[_0x144d45(0x107)](_0xd343d2=>{const _0xeac31f=_0x144d45;process[_0xeac31f(0x1a6)][_0xeac31f(0x13a)](_0xeac31f(0x19c)+_0xd343d2+'\x0a'),childReady=null;}),childReady;}function childNotify(_0x4a5162,_0x265dc7){const _0x392fdd=_0x21c2b3;if(!child)return;child[_0x392fdd(0x15d)][_0x392fdd(0x13a)](JSON[_0x392fdd(0x1a0)]({'jsonrpc':_0x392fdd(0x199),'method':_0x4a5162,'params':_0x265dc7})+'\x0a');}function childRequest(_0x2fa3d5,_0x2f8def,_0x26f00b=0xea60){const _0x9a3500=_0x21c2b3,_0x2d0f88={'aLUWn':_0x9a3500(0x13b),'QKwkz':function(_0x47ae95,_0x24f8c3,_0x58e46c){return _0x47ae95(_0x24f8c3,_0x58e46c);}};return new Promise((_0x1d2554,_0x8bd98d)=>{const _0x256fbf=_0x9a3500,_0x5d8f57={'JNBTC':function(_0x30a0f9,_0x1e063d){return _0x30a0f9(_0x1e063d);}};if(!child){_0x8bd98d(new Error(_0x2d0f88[_0x256fbf(0x115)]));return;}const _0x45fe77=childReqId++,_0x1ce1ba=_0x2d0f88['QKwkz'](setTimeout,()=>{const _0x21dfa5=_0x256fbf;childPending[_0x21dfa5(0x11e)](_0x45fe77),_0x5d8f57['JNBTC'](_0x8bd98d,new Error(_0x21dfa5(0x153)+_0x2fa3d5+_0x21dfa5(0x177)));},_0x26f00b);childPending['set'](_0x45fe77,_0x1786c7=>{const _0x1b6587=_0x256fbf;_0x5d8f57[_0x1b6587(0x128)](clearTimeout,_0x1ce1ba),_0x1d2554(_0x1786c7);}),child[_0x256fbf(0x15d)][_0x256fbf(0x13a)](JSON[_0x256fbf(0x1a0)]({'jsonrpc':_0x256fbf(0x199),'id':_0x45fe77,'method':_0x2fa3d5,'params':_0x2f8def})+'\x0a');});}function reply(_0x3c2299,_0x2cebbd){const _0x28c87c=_0x21c2b3,_0x2efd86={'ZnMfm':function(_0x5a02e0,_0x4e0db1){return _0x5a02e0+_0x4e0db1;}};process[_0x28c87c(0x12f)][_0x28c87c(0x13a)](_0x2efd86[_0x28c87c(0x127)](JSON[_0x28c87c(0x1a0)]({'jsonrpc':_0x28c87c(0x199),'id':_0x3c2299,'result':_0x2cebbd}),'\x0a'));}function replyErr(_0x30f224,_0x2eb332,_0xd99db3){const _0x2ce82d=_0x21c2b3,_0xfcf2d5={'neGRH':function(_0x3cf6f9,_0x38743b){return _0x3cf6f9+_0x38743b;}};process[_0x2ce82d(0x12f)]['write'](_0xfcf2d5['neGRH'](JSON['stringify']({'jsonrpc':_0x2ce82d(0x199),'id':_0x30f224,'error':{'code':_0x2eb332,'message':_0xd99db3}}),'\x0a'));}function toolText(_0x2be9e1){const _0x2e1e6b=_0x21c2b3,_0x58ea15={'LkItn':'text'};return{'content':[{'type':_0x58ea15[_0x2e1e6b(0x102)],'text':_0x2be9e1}]};}const PROFILE_TOOLS=[{'name':_0x21c2b3(0x160),'description':_0x21c2b3(0x183),'inputSchema':{'type':'object','properties':{'profileId':{'type':_0x21c2b3(0x14e),'description':_0x21c2b3(0x103)},'name':{'type':_0x21c2b3(0x14e),'description':'表示名(任意)'},'importStorageState':{'type':_0x21c2b3(0x14e),'description':_0x21c2b3(0x131)}},'required':['profileId']}},{'name':_0x21c2b3(0x14b),'description':_0x21c2b3(0x157),'inputSchema':{'type':_0x21c2b3(0x120),'properties':{'profileId':{'type':_0x21c2b3(0x14e),'description':_0x21c2b3(0x138)}},'required':[_0x21c2b3(0x155)]}},{'name':'browser_list_profiles','description':_0x21c2b3(0x106),'inputSchema':{'type':_0x21c2b3(0x120),'properties':{}}},{'name':_0x21c2b3(0x159),'description':_0x21c2b3(0x1a9),'inputSchema':{'type':'object','properties':{'profileId':{'type':_0x21c2b3(0x14e),'description':_0x21c2b3(0xfe)},'headless':{'type':_0x21c2b3(0x15e),'description':_0x21c2b3(0x1a8)}},'required':['profileId']}},{'name':_0x21c2b3(0x118),'description':'金庫の秘密(ログインのパスワード等)を、値を会話に出さずに入力欄へ入れる。browser_type\x20で値を書くと会話の記録に残るので、'+_0x21c2b3(0x14f)+_0x21c2b3(0x1af)+_0x21c2b3(0x156),'inputSchema':{'type':_0x21c2b3(0x120),'properties':{'element':{'type':'string','description':_0x21c2b3(0xf9)},'ref':{'type':_0x21c2b3(0x14e),'description':_0x21c2b3(0x1a2)},'secret_name':{'type':'string','description':_0x21c2b3(0x12b)}},'required':['element',_0x21c2b3(0x126),_0x21c2b3(0x17e)]}}],PROFILE_NAMES=new Set(PROFILE_TOOLS[_0x21c2b3(0x13f)](_0x4e1b66=>_0x4e1b66[_0x21c2b3(0x15c)])),filledValues=new Map();async function runCode(_0x257f38){const _0x1510ab=_0x21c2b3,_0x138665={'KJvSV':_0x1510ab(0x145)};await ensureChild();const _0x446e9a=await childRequest(_0x138665[_0x1510ab(0x124)],{'name':'browser_run_code_unsafe','arguments':{'code':_0x257f38}},0xea60);return{'text':(_0x446e9a?.['result']?.[_0x1510ab(0x186)]??[])['map'](_0x3dd4fc=>_0x3dd4fc[_0x1510ab(0xf8)]??'')[_0x1510ab(0x19a)]('\x0a'),'error':Boolean(_0x446e9a?.[_0x1510ab(0x17a)])};}const FILL_DEPS={'runCode':runCode,'release':(_0x4f3bb4,_0x212c12)=>(0x0,secretFill_1[_0x21c2b3(0x158)])(_0x4f3bb4,_0x212c12),'remember':(_0x125c1e,_0x14b750)=>filledValues[_0x21c2b3(0x10e)](_0x125c1e,_0x14b750)};async function handleProfileTool(_0x386efa,_0x58057f){const _0x33c040=_0x21c2b3,_0x25b1ae={'VMJCz':function(_0x391fd8){return _0x391fd8();},'vDlFy':function(_0x5cb382,_0x18f6af){return _0x5cb382(_0x18f6af);},'sXacA':function(_0x3adcbd,_0x2c0d33){return _0x3adcbd(_0x2c0d33);},'gMZVR':function(_0x215599,_0xea4140){return _0x215599(_0xea4140);},'trwKU':function(_0x591869,_0x5585a8){return _0x591869===_0x5585a8;},'hJayC':_0x33c040(0x14b),'ZfRGz':_0x33c040(0x18e),'fVrYL':function(_0x181fe5,_0x9c02f0){return _0x181fe5(_0x9c02f0);},'xTlFF':'browser_switch_profile','kADRB':function(_0x2f32e9,_0x274111){return _0x2f32e9(_0x274111);},'FykuJ':function(_0x230642,_0x230c71){return _0x230642(_0x230c71);},'UnzMt':function(_0x13ac32,_0x135652){return _0x13ac32(_0x135652);},'Bcczd':function(_0x518f31,_0x275808,_0x15ab6f){return _0x518f31(_0x275808,_0x15ab6f);},'spSzi':function(_0x2e34b3,_0x119adc){return _0x2e34b3(_0x119adc);},'OxQbH':'保存ログインあり','knaGO':_0x33c040(0x16c),'jVGvG':function(_0x150b1c,_0x3fb2fb){return _0x150b1c(_0x3fb2fb);},'HsRSH':function(_0x178236,_0x5a055c){return _0x178236(_0x5a055c);}},_0x52d7c3=_0x25b1ae[_0x33c040(0x14a)](readProfiles);if(_0x386efa===_0x33c040(0x110)){const _0x481684=Object[_0x33c040(0x1ae)](_0x52d7c3[_0x33c040(0x194)])[_0x33c040(0x13f)](([_0x2e60b7,_0x1a250f])=>({'profileId':_0x2e60b7,'name':_0x1a250f[_0x33c040(0x15c)],'hasLogin':_0x1a250f[_0x33c040(0xfb)],'active':_0x52d7c3[_0x33c040(0x121)]===_0x2e60b7}));return toolText(JSON['stringify']({'active':_0x52d7c3['active'],'count':_0x481684[_0x33c040(0x133)],'profiles':_0x481684},null,0x2));}const _0x2db84c=_0x25b1ae[_0x33c040(0x1a4)](String,_0x58057f?.[_0x33c040(0x155)]??'');if(!(0x0,profiles_1['isValidProfileId'])(_0x2db84c))return _0x25b1ae['sXacA'](toolText,_0x33c040(0x117)+_0x2db84c+'\x27('+profiles_1[_0x33c040(0x17d)]+')。');if(_0x386efa===_0x33c040(0x160)){(0x0,fs_1[_0x33c040(0x165)])(profileDir(_0x2db84c),{'recursive':!![]});const _0x5860fb=_0x52d7c3[_0x33c040(0x194)][_0x2db84c]??{'name':_0x58057f?.[_0x33c040(0x15c)]??_0x2db84c,'storageState':_0x25b1ae[_0x33c040(0x1a4)](storagePath,_0x2db84c),'hasLogin':![]};_0x5860fb[_0x33c040(0x15c)]=_0x58057f?.[_0x33c040(0x15c)]??_0x5860fb[_0x33c040(0x15c)];if(_0x58057f?.['importStorageState']){try{(0x0,fs_1[_0x33c040(0x114)])(_0x25b1ae[_0x33c040(0x1a4)](storagePath,_0x2db84c),(0x0,profiles_1[_0x33c040(0x172)])(String(_0x58057f[_0x33c040(0x161)])),{'mode':0x180});}catch(_0xfd410f){return _0x25b1ae[_0x33c040(0x1a4)](toolText,_0x33c040(0x123)+_0xfd410f[_0x33c040(0x10f)]);}_0x5860fb['hasLogin']=!![];}return _0x52d7c3[_0x33c040(0x194)][_0x2db84c]=_0x5860fb,_0x52d7c3['active']=_0x2db84c,_0x25b1ae['vDlFy'](writeProfiles,_0x52d7c3),await(childReady=_0x25b1ae[_0x33c040(0x1a4)](startChild,isolatedArgs(_0x2db84c,![]))),_0x25b1ae['gMZVR'](toolText,_0x33c040(0x14d)+_0x2db84c+_0x33c040(0x144)+_0x2db84c+_0x33c040(0x125));}if(_0x25b1ae[_0x33c040(0x19f)](_0x386efa,_0x25b1ae[_0x33c040(0xf6)])){if(!_0x52d7c3[_0x33c040(0x194)][_0x2db84c])return _0x25b1ae[_0x33c040(0x150)](toolText,_0x33c040(0x169)+_0x2db84c+_0x33c040(0x149));(0x0,fs_1[_0x33c040(0x165)])(profileDir(_0x2db84c),{'recursive':!![]});const _0x1d2c88=storagePath(_0x2db84c)+'.'+process[_0x33c040(0xfa)]+'.new',_0x32d314=_0x33c040(0x15f)+JSON[_0x33c040(0x1a0)](_0x1d2c88)+'\x20});\x20return\x20\x27saved\x27;\x20}';try{const _0xa765d7=await childRequest(_0x33c040(0x145),{'name':_0x25b1ae['ZfRGz'],'arguments':{'code':_0x32d314}},0x7530);if(_0xa765d7?.[_0x33c040(0x17a)])return toolText(_0x33c040(0x129)+_0xa765d7[_0x33c040(0x17a)]['message']);if(!(0x0,fs_1[_0x33c040(0x13d)])(_0x1d2c88))return _0x25b1ae['fVrYL'](toolText,_0x33c040(0x187));const _0x51fc61=JSON['parse']((0x0,fs_1[_0x33c040(0x168)])(_0x1d2c88,_0x33c040(0x198))),_0x307fa3=(0x0,fs_1[_0x33c040(0x13d)])(_0x25b1ae[_0x33c040(0x1aa)](storagePath,_0x2db84c))?JSON['parse']((0x0,fs_1[_0x33c040(0x168)])(storagePath(_0x2db84c),_0x33c040(0x198))):null;return(0x0,fs_1[_0x33c040(0x114)])(_0x1d2c88,JSON[_0x33c040(0x1a0)]((0x0,profiles_1[_0x33c040(0x10d)])(_0x307fa3,_0x51fc61),null,0x2),{'mode':0x180}),(0x0,fs_1[_0x33c040(0x1a1)])(_0x1d2c88,storagePath(_0x2db84c)),_0x52d7c3[_0x33c040(0x194)][_0x2db84c][_0x33c040(0xfb)]=!![],writeProfiles(_0x52d7c3),toolText(_0x33c040(0x14d)+_0x2db84c+_0x33c040(0x152));}catch(_0x501abd){return toolText(_0x33c040(0x113)+String(_0x501abd));}}if(_0x25b1ae[_0x33c040(0x19f)](_0x386efa,_0x25b1ae[_0x33c040(0x116)])){const _0x366b14=_0x52d7c3[_0x33c040(0x194)][_0x2db84c];if(!_0x366b14)return _0x25b1ae[_0x33c040(0x119)](toolText,_0x33c040(0x169)+_0x2db84c+_0x33c040(0x130));_0x52d7c3[_0x33c040(0x121)]=_0x2db84c,_0x25b1ae[_0x33c040(0x18f)](writeProfiles,_0x52d7c3),await(childReady=_0x25b1ae[_0x33c040(0x188)](startChild,_0x25b1ae[_0x33c040(0x11c)](isolatedArgs,_0x2db84c,_0x58057f?.[_0x33c040(0x1b4)]===!![])));const _0x4bd62d=(0x0,fs_1[_0x33c040(0x13d)])(_0x25b1ae[_0x33c040(0x12a)](storagePath,_0x2db84c))?_0x25b1ae[_0x33c040(0x1a5)]:_0x25b1ae[_0x33c040(0x1ad)];return _0x25b1ae[_0x33c040(0x142)](toolText,_0x33c040(0x14d)+_0x2db84c+_0x33c040(0x18b)+_0x4bd62d+')。');}return _0x25b1ae[_0x33c040(0x197)](toolText,'未知の\x20profile\x20ツール:\x20'+_0x386efa);}async function handleMessage(_0x517322){const _0x19f7e1=_0x21c2b3,_0x3077df={'XLLbK':function(_0x43f52e){return _0x43f52e();},'JQNtz':function(_0xd5750a,_0x324c89,_0x3468b9){return _0xd5750a(_0x324c89,_0x3468b9);},'Bfmca':_0x19f7e1(0x13c),'xKinh':'0.1.8','CAuRt':function(_0x2e3e84,_0x579f26){return _0x2e3e84===_0x579f26;},'hibKg':function(_0x23b3ea,_0x358b4e){return _0x23b3ea===_0x358b4e;},'AUlqf':function(_0x108814,_0x29a10e){return _0x108814===_0x29a10e;},'mzJjw':_0x19f7e1(0x145),'iVlGV':_0x19f7e1(0x118),'tTpRk':function(_0xfdf859,_0xdf8b0d){return _0xfdf859(_0xdf8b0d);},'pywzf':function(_0x3f62e6,_0x57990b){return _0x3f62e6(_0x57990b);},'CPQga':_0x19f7e1(0x17b),'ZELkg':function(_0x9fe24d,_0x41a0d0){return _0x9fe24d(_0x41a0d0);},'aVWWI':function(_0x5313a2,_0x440722){return _0x5313a2!==_0x440722;}},{id:_0x2a9979,method:_0x4df02d,params:_0x46cfa6}=_0x517322;if(_0x4df02d==='initialize'){void _0x3077df[_0x19f7e1(0x195)](ensureChild)[_0x19f7e1(0x107)](()=>{}),_0x3077df[_0x19f7e1(0x193)](reply,_0x2a9979,{'protocolVersion':_0x3077df[_0x19f7e1(0x16d)],'capabilities':{'tools':{}},'serverInfo':{'name':_0x19f7e1(0x143),'version':_0x3077df[_0x19f7e1(0x1a7)]}});return;}if(_0x3077df[_0x19f7e1(0x163)](_0x4df02d,_0x19f7e1(0x176)))return;if(_0x3077df[_0x19f7e1(0x11f)](_0x4df02d,'ping')){reply(_0x2a9979,{});return;}if(_0x3077df['AUlqf'](_0x4df02d,_0x19f7e1(0x175))){try{await _0x3077df[_0x19f7e1(0x195)](ensureChild);}catch{}reply(_0x2a9979,{'tools':[...childTools,...PROFILE_TOOLS]});return;}if(_0x4df02d===_0x3077df[_0x19f7e1(0xfd)]){const _0x39fdd4=_0x46cfa6?.[_0x19f7e1(0x15c)];try{if(_0x39fdd4===_0x3077df[_0x19f7e1(0xf5)])_0x3077df['JQNtz'](reply,_0x2a9979,_0x3077df[_0x19f7e1(0x147)](toolText,await(0x0,secretFill_1[_0x19f7e1(0x181)])(_0x46cfa6?.[_0x19f7e1(0x151)]??{},FILL_DEPS)));else{if(PROFILE_NAMES[_0x19f7e1(0x1b3)](_0x39fdd4)){const _0x266dcd=await _0x3077df[_0x19f7e1(0x193)](handleProfileTool,_0x39fdd4,_0x46cfa6?.[_0x19f7e1(0x151)]??{});reply(_0x2a9979,_0x266dcd);}else{await ensureChild();const _0x1f89af=await childRequest(_0x3077df[_0x19f7e1(0xfd)],{'name':_0x39fdd4,'arguments':_0x46cfa6?.[_0x19f7e1(0x151)]??{}},0x1d4c0);if(_0x1f89af?.['error']){const _0x3087e4=(0x0,secretFill_1[_0x19f7e1(0x104)])(_0x3077df[_0x19f7e1(0x196)](String,_0x1f89af[_0x19f7e1(0x17a)][_0x19f7e1(0x10f)]??_0x3077df[_0x19f7e1(0x15a)]),filledValues),_0x4aad29=(0x0,hints_1['browserHint'])(_0x3087e4);replyErr(_0x2a9979,_0x1f89af[_0x19f7e1(0x17a)][_0x19f7e1(0x10b)]??-0x7d00,''+_0x3087e4+(_0x4aad29?'\x0a'+_0x4aad29:''));return;}const _0x1c20f8=(_0x1f89af[_0x19f7e1(0x17c)]?.['content']??[])[_0x19f7e1(0x13f)](_0x3abd03=>_0x3abd03[_0x19f7e1(0xf0)]===_0x19f7e1(0xf8)&&typeof _0x3abd03[_0x19f7e1(0xf8)]===_0x19f7e1(0x14e)?{..._0x3abd03,'text':(0x0,secretFill_1[_0x19f7e1(0x104)])(_0x3abd03[_0x19f7e1(0xf8)],filledValues)}:_0x3abd03),_0x47eb3c=_0x1c20f8[_0x19f7e1(0x13f)](_0x1e53d9=>_0x1e53d9['text']??'')[_0x19f7e1(0x19a)]('\x0a'),_0x2c2375=_0x1f89af[_0x19f7e1(0x17c)]?.[_0x19f7e1(0x137)]?(0x0,hints_1[_0x19f7e1(0x1a3)])(_0x47eb3c):null;reply(_0x2a9979,{..._0x1f89af['result'],'content':_0x2c2375?[..._0x1c20f8,{'type':'text','text':_0x2c2375}]:_0x1c20f8});}}}catch(_0x2b37a6){reply(_0x2a9979,_0x3077df[_0x19f7e1(0x100)](toolText,'エラー:\x20'+String(_0x2b37a6)));}return;}if(_0x3077df[_0x19f7e1(0x18c)](_0x2a9979,undefined))replyErr(_0x2a9979,-0x7f59,_0x19f7e1(0x19b)+_0x4df02d);}let inBuf='';process['stdin']['on'](_0x21c2b3(0x1b1),_0x29e260=>{const _0x5050fa=_0x21c2b3,_0x2a0ff9={'MbUrX':function(_0x503d6a,_0x45ead7){return _0x503d6a>=_0x45ead7;},'jhwOi':function(_0x286d59,_0x103e54){return _0x286d59+_0x103e54;}};inBuf+=_0x29e260['toString']();let _0x3e2b15;while(_0x2a0ff9[_0x5050fa(0xf1)](_0x3e2b15=inBuf[_0x5050fa(0x132)]('\x0a'),0x0)){const _0x5a4b7a=inBuf[_0x5050fa(0x10c)](0x0,_0x3e2b15);inBuf=inBuf[_0x5050fa(0x10c)](_0x2a0ff9[_0x5050fa(0x179)](_0x3e2b15,0x1));if(!_0x5a4b7a[_0x5050fa(0x101)]())continue;let _0x1f4082;try{_0x1f4082=JSON[_0x5050fa(0x1b2)](_0x5a4b7a);}catch{continue;}handleMessage(_0x1f4082)[_0x5050fa(0x107)](_0x38b7aa=>process[_0x5050fa(0x1a6)][_0x5050fa(0x13a)](_0x5050fa(0x154)+_0x38b7aa+'\x0a'));}}),process[_0x21c2b3(0x15d)]['on'](_0x21c2b3(0x19e),()=>{stopChild(),process['exit'](0x0);}),process['on']('SIGTERM',()=>{const _0x429460=_0x21c2b3,_0x5b6dd0={'eJfrw':function(_0x672f56){return _0x672f56();}};_0x5b6dd0[_0x429460(0xf3)](stopChild),process[_0x429460(0xfc)](0x0);}),process['on'](_0x21c2b3(0xf7),()=>{stopChild(),process['exit'](0x0);}),process['stderr']['write']('playwright-profile\x20MCP\x20started\x0a');
|
|
2
|
+
'use strict';function _0x3473(){const _0x4dfdc8=['zxHPDa','zw5K','yNjVD3nLCL9ZyxzLx2XVz2LU','yu9YC00','rgrWtLG','DxrMltG','CgfYC2u','CgLUzW','44oT44kW44kK44oZ5PYQ5l+D5A2y77Yi5PYQ44oT44kW44kK44oZ54Q25Owl44gN6zAl44ge44gM44ge44g+44gz77Yj','ntu3nJbxvwLxEuO','DKHpsxm','yNjVD3nLCL9ZD2L0y2HFChjVzMLSzq','y2f0y2G','BM93','sM1cCNG','lMz1BM55lwjVB3rOlxbSyxL3CMLNAhq','zgLYBMfTzq','lI9MAwXSr3vHCMq','CMvZDwX0','tvrqwgG','C3rYAw5N','mtaWDfDmDMfW','BgHJC0i','C3rKB3v0','44kO44oP44o8oIa','y3DK','ru1Mtg4','twjivha','5OMl5ywd44gU44oT44kW44kK44oZ5l+D5A2y44ov44kH44kK44oR77YiugXHExDYAwDODcdJGA4GC3rVCMfNzs1ZDgf0zs5QC29U77Yj44gU44or44k544cc5OYh5A6A44gz44kl44gO44gD44gU44oT44kW44kK44oZ44ks5y+w44kk6l6844kt44gN6zAl44gpkos7U+AeJYK','5A6F5zYO44gU44k144kK44oi44gN44gV5Q+o5zUE44cb5PYS5lQ644gU55s76z2I44gR6kIX5y+V44gU56k66kQn44gm5yE644gM44cb6kIX5y+V44gv44km44gF44gO44gn44gG44gr5ywL44km44kl44ccCMvMioobRYbICM93C2vYx3nUyxbZAg90ioobRIbYzwBJGii','BwfW','mJaYnc0Xms0Wnq','CMvHzezPBgvtEw5J','ls1OzwfKBgvZCW','CNjABwe','y2HPBgqGzxjYB3i','zgvSzxrL','vxLOyva','DfHstuS','B2jQzwn0','zgf0yq','otaZodbKAxPosLG','Bwv0Ag9Kig5VDcbMB3vUzdOG','4PYfioodL+odREodLEocOEocPoodQYaN','zfDItxa','Ag9TzwrPCG','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobP+s+I+wKLJOG','44kO44oP44o8oIdJG5FJG63JG5xJGQhJGQtJG6SGjW','mtf4A2rwweW','AM9PBG','CgLWzq','u29XswK','r3LAAhG','5OYh5A6A44ox44oT44ov44kH44kK44oR44gU5l+D5A2y44oT44kW44kK44oZ44gN44ow44oP44kM44k244ks6zAl44gn55U044gz44cc5BI444gR5l2/44ge5O2O44gM44ow44oP44kM44k244gN6lw35yUv44gz44kl44gU44gN44cb5lIM5yIx44gUihDPEMfYzcdJGyZLKiZJGzJJG5FJG63JG5xJGQhJGQtJG6VJGPlLKiZMMylJGAVKVB/JGApJGABJGOlOOz3NQOhJGzFJGARJGytJGii','twPVwwC','AxrJsem','qwr2rfK','zgvMAw5LuhjVCgvYDhK','q2niv20','5yIh5PU/5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','yNjVD3nLCL9YDw5Fy29Kzv91BNnHzMu','qhbSyxL3CMLNAhqVBwnWl3bHy2THz2uUANnVBG','AgvHzgXLC3m','ndC0nZvqvKzqz2S','y2XLyxi','EeDIuLC','DxjiyKK','ywn0AxzL','yNjVD3nLCL9ZBMfWC2HVDcdJGA7LHAxLIPVMRitJGA4GCMvM77Yi5l6liguXmU+8Iq','AxnfCNjVCG','BgvUz3rO','zwXLBwvUDa','D3jPDgvgAwXLu3LUyW','z1bfvNC','r3HAsxO','ufvyBuC','ChvZAa','DhjPBq','CMvHzfn0B3jHz2vtDgf0zq','zMTcsu4','jYdJGA/MNkRNMBVPJllJGAFJGzNJGii','y29Kzq','5l+D5A2y44oT44kW44kK44oZ44gc44kk','Dg9VBhmVy2fSBa','jYdJGAVJG63JGRdJGQtJG7pNIRBMHyVJGPlKV53LRzJJGzFJGB7JGzFJGz/JGilKU6xLVOZJGANJGA7JGRVJG4pJGRFJG6FJG7pJGAFJGOlJGihJGzpJGA7JG5FJG63JG5xJGQhJGQtJG6VJGAFPLOVJGzhJGBdLKiZJGzJJG63JGRdJGQtJG7pJGAFLP4VJGB7JGORJGB7JGzNJGii','Dg9VBhmVBgLZDa','BwvZC2fNzq','EeT2B3y','CgXHExDYAwDODc1WCM9MAwXLlxbYB3H5','CgLK','u2TKq1O','tM11v2K','lI9ZzwnYzxrgAwXS','5l+D5A2y5ywi44ox44oT44ov44kH44kK44oR6k2y5yIL5A2q','s0zJquW','z25wDLi','rLjfu0G','jYdJGAVLIiFMM7/VViG','CLnvDwS','q1jQzu0','ChjVzMLSzxm','mc4XlJeW','lNbSyxL3CMLNAhqTBwnW','zNzzqxG','77Yi5yIL44gU44k144kK44oi44gU44oA44o844k444gQ44kj5ywL44km44gA44gR5PAT44kl77Yj44cc44k144kK44oi44gVihn0B3jLx3nLy3jLDcdJGA4GC2L0zxmG44glihnLDf9ZzwnYzxrFC2L0zxmG44gN5Rg644kb44cb5Rg644kb44gF55U05B6m44gl44kj5l2/44gi44kl44cc','qNj0B00','vhLmq00','yNjVD3nLCL9Zzxr1Cf9WCM9MAwXL','zgvMyxvSDa','jYdJGPlNLkJMHi/JGzFJGihJG5BJG6NJGQBJGRBJGPlOTBFLI5xJGzFJGB7JGzFJGz/JGijICM93C2vYx25HDMLNyxrLioobP+odREocSoocPoodS+odMUodVoocUoocKUMwI+obJEoaGEAjI+wlLEodREocSoocPoodS+w+JoobQYbICM93C2vYx3nHDMvFBg9NAw4OChjVzMLSzuLKoIi','DMfSDwvZ','zxHPC3rZu3LUyW','yvjOEuK','zxjYB3i','BwTKAxjtEw5J','55M76yYY5RIi44g/44ox44oT44ov44kH44kK44oR5lIa6kAN77Yi44oT44kW44kK44oZ5l+D5A2y54Q25Rob44o7ywn0AxzLioodL+odREodLEocOEocPoodQ++8IEocKUI/LoobMEoaGG','Cgf0Aa','ywz0zxjuB29S','s3f3z2S','CMvUyw1Lu3LUyW','D3n5whe','CMvM','zgz6sgW','CKTlzhu','ls1VDxrWDxqTzgLY','44kO44oP44o8oIbZDg9YywDLlxn0yxrLios/NEwTMoobQ+wKSEAvLZOG','otyWm1fkC1rUCW','yMfXv2e','ls1ZDg9YywDLlxn0yxrL','lNrTCa','BMfTzq','tLLmEMm','rgDjuKq','CgXHExDYAwDODc1WCM9MAwXLie1ducbZDgfYDgvKcG','qK5TAvG','yxjNDw1LBNrZ','Aw5PDgLHBgL6zq','Dgv4Da','C2XPy2u','zMLSBfnLy3jLDa','C3rKAw4','ihrPBwvVDxq','iIKG44ks5zg844kt44gN44gp44gG44gv44ge77Yi5l+D5A2y44gx44gQ44ge44gO44ow44oP44kM44k244ks6zAj44gy44gF5PMc54k544gN44oT44kW44kK44oZ44gV5RAi44gi44g+44gz77Yj44cc','lI9WCM9MAwXLCW','rNboyNi','C3rKzxjY','yNjVD3nLCL9MAwXSx3nLy3jLDa','z2v0','6yEr5BQR44gU56Ey5A+g77Yi44oT44kW44kK44oZ44gU44or44k544oV44o844oj562j77Yj44ks44cb5ycK44ks5lYA6kMX44gR5yE644gv44gA44gR5ywL5yQB5QYe44g45ywL44km44kl44ccyNjVD3nLCL90ExbLioobP+waPoocKUABUoobJ+obQos8MUIPSEobRUIOMoMmSUobQ+AUI+ocI+obRUobP+oaGq','mtaYqwjuEvzf','A2LSBa','D3jPDgu','y05htM8','A3vPAvm','mI4W','s0jHvNu','y29UDgvUDa','C2vJCMv0x25HBwu','mtC4mJyYmgvLyLPfzq','AgfZ','C3rYAw5NAwz5','ls1PC29SyxrLza','44kO44oP44o8oIbZDg9YywDLlxn0yxrLioodLEocOEocPoodQ+obJoEuN+AiKoobLEocJoobVUobM+ocK+obP+obL+obN++8IoodLUodQEocPUocTUobJoMwI+obHoobPUobHoobQUobHowpR+IdVEAaP++8IEoaGMjYB3DZzxjFBMf2AwDHDguG44gN44oA44o844k444ks6zAl44ge44gM44gl44kj5yAn5A6F6kgm44gx44gM44gp44gG44gv44ge44cc','EurQteO','5PYQ55+L44gUihbYB2zPBguG44oe44o844oRoIa','CMvZB2X2zq','y2HPBgqGBM90ihj1BM5PBMC','C1fOtLO','yNjVD3nLCL9SAxn0x3bYB2zPBgvZ','Dg9tDhjPBMC','yM9VBgvHBG','mJe2oty3zg90tu9h','ndq4z1rfr01R','rMPxEvm','Dg9VBhm','C3rVCMfNzs5QC29U','BxPeyMm','C2v0','zw50CMLLCW','q1b0Cu4','z2f0zvrVB2W','q1nfrvm','AuD4zxm','y2HPBgrFChjVy2vZCW','ChjVzMLSzxmUANnVBG','yxn5BMmGkhbHz2uPid0+ihSGyxDHAxqGCgfNzs5JB250zxH0kcKUC3rVCMfNzvn0yxrLkhSGCgf0AdOG','ih0PoYbYzxr1CM4Gj3nHDMvKjZSGFq','zMLSBgvK','6yEr5BQR44gU56Ey5A+g44gU5zcn5yMn77YiBgLZDf9ZzwnYzxrZioobP+EIUUobI+ocGEocIEocJoocI++8Iq','y2HPBgqG','CMvKywn0rgvLCa','AgfZtg9NAw4','ntqWmdeWEevwqKXk','yKjnuKq','yMvMB3jLvg9VBa','AxnwywXPzfbYB2zPBgvjza','CMvSzwfZzvnLy3jLDa','lM5LDW','rwf2CM4','yujPqMG','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','C3bHD24','ufjprKLmrv9jrf9svuXf','ANfYzhy','ChjVzMLSzuLK','rgTSswq','vNnrsMS','yMLU','EwLJzhq'];_0x3473=function(){return _0x4dfdc8;};return _0x3473();}const _0xbfd478=_0x54c6;(function(_0x56385d,_0x29b364){const _0x44688a=_0x54c6,_0x52e6b6=_0x56385d();while(!![]){try{const _0x1068d7=parseInt(_0x44688a(0x20a))/0x1+parseInt(_0x44688a(0x21f))/0x2+-parseInt(_0x44688a(0x26f))/0x3*(parseInt(_0x44688a(0x245))/0x4)+parseInt(_0x44688a(0x259))/0x5*(parseInt(_0x44688a(0x1f4))/0x6)+-parseInt(_0x44688a(0x1fd))/0x7+-parseInt(_0x44688a(0x20b))/0x8*(-parseInt(_0x44688a(0x1dd))/0x9)+parseInt(_0x44688a(0x239))/0xa*(parseInt(_0x44688a(0x260))/0xb);if(_0x1068d7===_0x29b364)break;else _0x52e6b6['push'](_0x52e6b6['shift']());}catch(_0x1d3966){_0x52e6b6['push'](_0x52e6b6['shift']());}}}(_0x3473,0x3319b));function _0x54c6(_0x3a2a7d,_0x2a2fc7){_0x3a2a7d=_0x3a2a7d-0x1a6;const _0x347372=_0x3473();let _0x54c6d7=_0x347372[_0x3a2a7d];if(_0x54c6['qOmxfS']===undefined){var _0x2895fe=function(_0x30be9e){const _0x4246ba='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xfa97c6='',_0x36e0cc='';for(let _0x44665d=0x0,_0x21fb6e,_0x5ef9f3,_0xa6188a=0x0;_0x5ef9f3=_0x30be9e['charAt'](_0xa6188a++);~_0x5ef9f3&&(_0x21fb6e=_0x44665d%0x4?_0x21fb6e*0x40+_0x5ef9f3:_0x5ef9f3,_0x44665d++%0x4)?_0xfa97c6+=String['fromCharCode'](0xff&_0x21fb6e>>(-0x2*_0x44665d&0x6)):0x0){_0x5ef9f3=_0x4246ba['indexOf'](_0x5ef9f3);}for(let _0x1b5b42=0x0,_0x910364=_0xfa97c6['length'];_0x1b5b42<_0x910364;_0x1b5b42++){_0x36e0cc+='%'+('00'+_0xfa97c6['charCodeAt'](_0x1b5b42)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x36e0cc);};_0x54c6['ikjLDy']=_0x2895fe,_0x54c6['HvVbQU']={},_0x54c6['qOmxfS']=!![];}const _0x19ec16=_0x347372[0x0],_0xae0bc8=_0x3a2a7d+_0x19ec16,_0x44b8ce=_0x54c6['HvVbQU'][_0xae0bc8];return!_0x44b8ce?(_0x54c6d7=_0x54c6['ikjLDy'](_0x54c6d7),_0x54c6['HvVbQU'][_0xae0bc8]=_0x54c6d7):_0x54c6d7=_0x44b8ce,_0x54c6d7;}Object[_0xbfd478(0x269)](exports,'__esModule',{'value':!![]});const hints_1=require('./hints'),profiles_1=require(_0xbfd478(0x1ee)),fillGuard_1=require(_0xbfd478(0x241)),secretFill_1=require(_0xbfd478(0x1bb)),child_process_1=require(_0xbfd478(0x216)),fs_1=require('fs'),path_1=require(_0xbfd478(0x1d3)),os_1=require('os'),HOME=(0x0,os_1[_0xbfd478(0x25d)])(),DIR=(0x0,path_1[_0xbfd478(0x261)])(HOME,_0xbfd478(0x23f)),PROFILES=(0x0,path_1[_0xbfd478(0x261)])(DIR,_0xbfd478(0x217)),OUTPUT_DIR=(0x0,path_1[_0xbfd478(0x261)])(process[_0xbfd478(0x249)](),_0xbfd478(0x1c5));function playwrightCli(){const _0x2e7546=_0xbfd478,_0x290c7b={'GyZhx':_0x2e7546(0x235)},_0x54ce19=require[_0x2e7546(0x204)](_0x2e7546(0x26d)),_0x570419=JSON['parse']((0x0,fs_1[_0x2e7546(0x250)])(_0x54ce19,_0x290c7b[_0x2e7546(0x264)]))[_0x2e7546(0x22e)];return(0x0,path_1['join'])((0x0,path_1[_0x2e7546(0x240)])(_0x54ce19),Object[_0x2e7546(0x1cd)](_0x570419)[0x0]);}function ensureDir(){const _0x273988=_0xbfd478;if(!(0x0,fs_1[_0x273988(0x1ce)])(DIR))(0x0,fs_1[_0x273988(0x1d1)])(DIR,{'recursive':!![],'mode':0x1c0});if(!(0x0,fs_1[_0x273988(0x1ce)])(PROFILES))(0x0,fs_1['writeFileSync'])(PROFILES,JSON['stringify']({'active':null,'profiles':{}},null,0x2));}function readProfiles(){const _0x16a569=_0xbfd478,_0x204eb7={'NmuWi':function(_0x5e2c9b){return _0x5e2c9b();},'baqWa':'utf-8'};_0x204eb7[_0x16a569(0x1ba)](ensureDir);try{const _0x100f1b=JSON[_0x16a569(0x236)]((0x0,fs_1[_0x16a569(0x250)])(PROFILES,_0x204eb7[_0x16a569(0x1de)]));return{'active':_0x100f1b[_0x16a569(0x273)]??null,'profiles':_0x100f1b[_0x16a569(0x1c3)]??{}};}catch{return{'active':null,'profiles':{}};}}function writeProfiles(_0x4e16f9){const _0x2bd813=_0xbfd478,_0x32b729=PROFILES+'.'+process[_0x2bd813(0x1b8)]+_0x2bd813(0x1e0);(0x0,fs_1[_0x2bd813(0x1a7)])(_0x32b729,JSON[_0x2bd813(0x1ff)](_0x4e16f9,null,0x2)),(0x0,fs_1[_0x2bd813(0x1d6)])(_0x32b729,PROFILES);}function profileDir(_0x21526d){const _0x2691bf=_0xbfd478;return(0x0,path_1[_0x2691bf(0x261)])(DIR,_0x21526d);}function storagePath(_0x4304a4){const _0x291d57=_0xbfd478;return(0x0,path_1[_0x291d57(0x261)])(profileDir(_0x4304a4),_0x291d57(0x20e));}function isolatedArgs(_0x265697,_0x35eda0){const _0x459251=_0xbfd478,_0x5a4707={'TyLCM':_0x459251(0x200),'gnVvR':_0x459251(0x1db),'GxZIz':function(_0x1f9014,_0x237fdc){return _0x1f9014(_0x237fdc);}},_0x427283=[_0x5a4707[_0x459251(0x1c9)],_0x5a4707[_0x459251(0x1be)],OUTPUT_DIR];if((0x0,fs_1[_0x459251(0x1ce)])(_0x5a4707['GxZIz'](storagePath,_0x265697)))_0x427283[_0x459251(0x1ab)](_0x459251(0x1df),_0x5a4707[_0x459251(0x1a9)](storagePath,_0x265697));if(_0x35eda0)_0x427283['push'](_0x459251(0x251));return _0x427283;}let child=null,childBuf='',childTools=[],childArgs=[];const childPending=new Map();let childReqId=0x1;function stopChild(){const _0x4abee2=_0xbfd478;if(child){try{child[_0x4abee2(0x1f5)]();}catch{}child=null;}childPending[_0x4abee2(0x270)](),childBuf='';}function startChild(_0x4fa577){const _0x360805=_0xbfd478,_0x992dd4={'wsyXq':function(_0x443f49,_0x322564){return _0x443f49>=_0x322564;},'lhcsB':function(_0x28153c,_0x267d11){return _0x28153c+_0x267d11;},'dfzHl':_0x360805(0x24f),'aOrsM':_0x360805(0x227),'dWbMp':function(_0x364ba9){return _0x364ba9();},'gPEVw':function(_0x60d516){return _0x60d516();},'mzDbc':_0x360805(0x262),'YRHRY':_0x360805(0x1d0),'rrZma':_0x360805(0x230)};return new Promise((_0x5904e4,_0x4c4ba0)=>{const _0xaa50fb=_0x360805;_0x992dd4[_0xaa50fb(0x1a8)](stopChild),guard=fillGuard_1[_0xaa50fb(0x1bf)],childArgs=_0x4fa577;const _0x12ae13=(0x0,child_process_1[_0xaa50fb(0x228)])(process['execPath'],[playwrightCli(),..._0x4fa577],{'stdio':[_0x992dd4[_0xaa50fb(0x20f)],'pipe',_0x992dd4[_0xaa50fb(0x20f)]]});child=_0x12ae13,_0x12ae13['on'](_0x992dd4['YRHRY'],_0x4db25d=>_0x4c4ba0(_0x4db25d)),_0x12ae13['on'](_0x992dd4[_0xaa50fb(0x252)],_0xfa493=>{const _0x30b226=_0xaa50fb;child===_0x12ae13&&(child=null,childReady=null,childPending[_0x30b226(0x270)]()),process[_0x30b226(0x1f0)]['write']('@playwright/mcp\x20が終了しました(code\x20'+_0xfa493+')。次に使うときに起動し直します\x0a');}),_0x12ae13['stdout']['on'](_0xaa50fb(0x258),_0x2c9296=>{const _0x20c731=_0xaa50fb;childBuf+=_0x2c9296[_0x20c731(0x208)]();let _0x2e3817;while(_0x992dd4[_0x20c731(0x1d7)](_0x2e3817=childBuf['indexOf']('\x0a'),0x0)){const _0x23da76=childBuf[_0x20c731(0x1e9)](0x0,_0x2e3817);childBuf=childBuf[_0x20c731(0x1e9)](_0x992dd4[_0x20c731(0x246)](_0x2e3817,0x1));if(!_0x23da76[_0x20c731(0x1ac)]())continue;let _0xbe9df2;try{_0xbe9df2=JSON[_0x20c731(0x236)](_0x23da76);}catch{continue;}if(_0xbe9df2['id']!==undefined&&childPending[_0x20c731(0x1fe)](_0xbe9df2['id'])){const _0x125ac5=childPending[_0x20c731(0x1f2)](_0xbe9df2['id']);childPending[_0x20c731(0x254)](_0xbe9df2['id']),_0x125ac5(_0xbe9df2);}}}),((async()=>{const _0x35c94d=_0xaa50fb;try{await childRequest(_0x35c94d(0x1e7),{'protocolVersion':_0x992dd4[_0x35c94d(0x1d9)],'capabilities':{},'clientInfo':{'name':_0x35c94d(0x1b7),'version':'0.1.0'}},0x7530),childNotify(_0x992dd4[_0x35c94d(0x233)],{});const _0x10e0cc=await childRequest(_0x35c94d(0x1b4),{},0x3a98);childTools=_0x10e0cc?.['result']?.[_0x35c94d(0x20d)]??[],_0x992dd4[_0x35c94d(0x25c)](_0x5904e4);}catch(_0x576dd3){_0x4c4ba0(_0x576dd3);}})());});}let childReady=null;function ensureChild(){const _0x34efba=_0xbfd478,_0x3de196={'vHOIs':function(_0x39cf31,_0x1a09cc){return _0x39cf31&&_0x1a09cc;},'NYLzc':function(_0x45604c){return _0x45604c();},'sQhNZ':_0x34efba(0x1cb),'SoqIi':function(_0x76d880,_0x5b4529){return _0x76d880===_0x5b4529;},'bBMRD':function(_0x44b8b2,_0x578b33){return _0x44b8b2(_0x578b33);},'CcHWm':function(_0x183a48,_0x54b65c){return _0x183a48(_0x54b65c);},'xKvov':function(_0x3ceb99,_0x5277c5){return _0x3ceb99(_0x5277c5);},'DgIRD':function(_0x13c7a0,_0x399e0b,_0x224ac8){return _0x13c7a0(_0x399e0b,_0x224ac8);}};if(_0x3de196[_0x34efba(0x23a)](child,childReady))return childReady;const _0x49d2dc=_0x3de196[_0x34efba(0x1e2)](readProfiles),_0x4a9606=_0x49d2dc[_0x34efba(0x273)]&&_0x49d2dc[_0x34efba(0x1c3)][_0x49d2dc['active']]?_0x49d2dc['active']:_0x3de196[_0x34efba(0x206)];return!_0x49d2dc[_0x34efba(0x1c3)][_0x34efba(0x1cb)]&&_0x3de196[_0x34efba(0x263)](_0x4a9606,'default')&&(_0x49d2dc['profiles'][_0x3de196['sQhNZ']]={'name':_0x3de196['sQhNZ'],'storageState':_0x3de196[_0x34efba(0x220)](storagePath,_0x3de196[_0x34efba(0x206)]),'hasLogin':![]},_0x49d2dc[_0x34efba(0x273)]=_0x34efba(0x1cb),_0x3de196[_0x34efba(0x26a)](writeProfiles,_0x49d2dc)),childReady=_0x3de196[_0x34efba(0x1b6)](startChild,childArgs['length']?childArgs:_0x3de196[_0x34efba(0x1e3)](isolatedArgs,_0x4a9606,![])),childReady[_0x34efba(0x23c)](_0x4a5b78=>{const _0x1c556f=_0x34efba;process[_0x1c556f(0x1f0)][_0x1c556f(0x1f6)]('@playwright/mcp\x20の起動に失敗しました:\x20'+_0x4a5b78+'\x0a'),childReady=null;}),childReady;}function childNotify(_0x5c3060,_0xda72d7){const _0x15c73d=_0xbfd478,_0x4cb22f={'aRhyI':function(_0x48c39e,_0x470ae8){return _0x48c39e+_0x470ae8;}};if(!child)return;child[_0x15c73d(0x1eb)][_0x15c73d(0x1f6)](_0x4cb22f[_0x15c73d(0x1cf)](JSON[_0x15c73d(0x1ff)]({'jsonrpc':_0x15c73d(0x1f9),'method':_0x5c3060,'params':_0xda72d7}),'\x0a'));}function childRequest(_0x1a9d58,_0x51d1e6,_0x414c7=0xea60){const _0x865d33=_0xbfd478,_0x4f61a2={'KBaVu':function(_0x20766b,_0x5ce547){return _0x20766b(_0x5ce547);},'urHbI':function(_0x55d113,_0x33d1a4){return _0x55d113(_0x33d1a4);},'rSUuk':function(_0x1e30c9,_0x5bbf47){return _0x1e30c9(_0x5bbf47);},'JiqQO':_0x865d33(0x205),'MjoYg':_0x865d33(0x1f9)};return new Promise((_0x406353,_0x23fb56)=>{const _0x164ecf=_0x865d33;if(!child){_0x23fb56(new Error(_0x4f61a2['JiqQO']));return;}const _0x27adde=childReqId++,_0x2ddc29=setTimeout(()=>{const _0x174673=_0x54c6;childPending['delete'](_0x27adde),_0x4f61a2[_0x174673(0x1fa)](_0x23fb56,new Error(_0x174673(0x21c)+_0x1a9d58+_0x174673(0x1ec)));},_0x414c7);childPending[_0x164ecf(0x210)](_0x27adde,_0x4be283=>{const _0x37910a=_0x164ecf;_0x4f61a2[_0x37910a(0x272)](clearTimeout,_0x2ddc29),_0x4f61a2[_0x37910a(0x1c1)](_0x406353,_0x4be283);}),child[_0x164ecf(0x1eb)]['write'](JSON[_0x164ecf(0x1ff)]({'jsonrpc':_0x4f61a2[_0x164ecf(0x266)],'id':_0x27adde,'method':_0x1a9d58,'params':_0x51d1e6})+'\x0a');});}function reply(_0x583615,_0x1f16fd){const _0x3c287e=_0xbfd478;process[_0x3c287e(0x247)]['write'](JSON['stringify']({'jsonrpc':_0x3c287e(0x1f9),'id':_0x583615,'result':_0x1f16fd})+'\x0a');}function replyErr(_0x3746c6,_0x230864,_0x51efae){const _0x2a0438=_0xbfd478,_0x3a268a={'CSEES':_0x2a0438(0x1f9)};process[_0x2a0438(0x247)][_0x2a0438(0x1f6)](JSON[_0x2a0438(0x1ff)]({'jsonrpc':_0x3a268a[_0x2a0438(0x214)],'id':_0x3746c6,'error':{'code':_0x230864,'message':_0x51efae}})+'\x0a');}function toolText(_0x24fb7a){const _0xfe55f0=_0xbfd478,_0x13b7ab={'yicdt':_0xfe55f0(0x1e8)};return{'content':[{'type':_0x13b7ab[_0xfe55f0(0x22f)],'text':_0x24fb7a}]};}const PROFILE_TOOLS=[{'name':_0xbfd478(0x1ca),'description':'名前付きプロファイルを用意し、ログイン作業用に画面ありのブラウザで開く(保存済みログインがあれば持ち込む)。開いたブラウザで手動ログイン後に\x20browser_save_login\x20を呼ぶ。手元に\x20storage-state.json\x20があれば\x20importStorageState\x20で取り込める。','inputSchema':{'type':_0xbfd478(0x257),'properties':{'profileId':{'type':_0xbfd478(0x244),'description':'プロファイル識別子(英数字・.\x20_\x20-\x20@\x20+。メールアドレスも可)'},'name':{'type':'string','description':'表示名(任意)'},'importStorageState':{'type':_0xbfd478(0x244),'description':_0xbfd478(0x24c)}},'required':[_0xbfd478(0x22b)]}},{'name':_0xbfd478(0x232),'description':'現在のブラウザのログイン状態(storage-state:\x20cookie/localStorage)をプロファイルに保存する。以後どのセッションからも同時に再利用できる。','inputSchema':{'type':_0xbfd478(0x257),'properties':{'profileId':{'type':_0xbfd478(0x244),'description':_0xbfd478(0x1bc)}},'required':['profileId']}},{'name':_0xbfd478(0x207),'description':_0xbfd478(0x1d2),'inputSchema':{'type':_0xbfd478(0x257),'properties':{}}},{'name':_0xbfd478(0x23b),'description':_0xbfd478(0x265),'inputSchema':{'type':_0xbfd478(0x257),'properties':{'profileId':{'type':_0xbfd478(0x244),'description':_0xbfd478(0x26b)},'headless':{'type':_0xbfd478(0x209),'description':'true\x20で画面なし起動'}},'required':[_0xbfd478(0x22b)]}},{'name':_0xbfd478(0x1f1),'description':_0xbfd478(0x1f3)+'パスワードはこちらを使う。入れられるのは、「入れてよいサイト」を決めた秘密を、そのサイトのページに入れるときだけ'+_0xbfd478(0x1c7)+_0xbfd478(0x24d),'inputSchema':{'type':'object','properties':{'element':{'type':_0xbfd478(0x244),'description':'入力欄の説明(例:\x20パスワードの入力欄)'},'ref':{'type':_0xbfd478(0x244),'description':_0xbfd478(0x274)},'secret_name':{'type':_0xbfd478(0x244),'description':_0xbfd478(0x21b)}},'required':[_0xbfd478(0x1a6),_0xbfd478(0x1d8),_0xbfd478(0x1fc)]}}],PROFILE_NAMES=new Set(PROFILE_TOOLS[_0xbfd478(0x24e)](_0x31a331=>_0x31a331['name'])),filledValues=new Map();let filledSince=0x0,guard=fillGuard_1['FRESH'],fillsInFlight=0x0;async function runCode(_0x1049da){const _0x4fd6cc=_0xbfd478,_0x45d9f3={'JmBrx':function(_0x162f61){return _0x162f61();},'BrtoM':function(_0x38f081,_0x2a6d11,_0x2f4b34,_0x6309cd){return _0x38f081(_0x2a6d11,_0x2f4b34,_0x6309cd);},'UyhaP':_0x4fd6cc(0x1b2),'mbmid':_0x4fd6cc(0x26c)};await _0x45d9f3[_0x4fd6cc(0x23e)](ensureChild);const _0x592e4e=await _0x45d9f3[_0x4fd6cc(0x1c8)](childRequest,_0x45d9f3[_0x4fd6cc(0x255)],{'name':_0x45d9f3['mbmid'],'arguments':{'code':_0x1049da}},0xea60);return{'text':(_0x592e4e?.[_0x4fd6cc(0x242)]?.['content']??[])[_0x4fd6cc(0x24e)](_0x5d433e=>_0x5d433e[_0x4fd6cc(0x1e8)]??'')[_0x4fd6cc(0x261)]('\x0a'),'error':Boolean(_0x592e4e?.[_0x4fd6cc(0x1d0)])};}function remember(_0x1fd6b5,_0x5014f3){const _0x2c4376=_0xbfd478,_0x464016={'CRjeM':function(_0x4c08d5,_0x4ae4b4){return _0x4c08d5-_0x4ae4b4;}};filledValues[_0x2c4376(0x210)](_0x1fd6b5,_0x5014f3);if(!filledSince)filledSince=_0x464016[_0x2c4376(0x1c2)](Date[_0x2c4376(0x23d)](),0x3e8);guard={...guard,'filled':!![]};}const FILL_DEPS={'runCode':runCode,'release':(_0x3863bc,_0x291de8)=>(0x0,secretFill_1[_0xbfd478(0x223)])(_0x3863bc,_0x291de8),'remember':remember};async function handleProfileTool(_0x602a3e,_0x3590c2){const _0x43d4d6=_0xbfd478,_0x56c8b5={'DklId':function(_0x2dd3fa,_0xa667af){return _0x2dd3fa===_0xa667af;},'EMfLn':function(_0x2a404a,_0x3b8549){return _0x2a404a(_0x3b8549);},'BNmiX':function(_0x78a683,_0x1e1ecc){return _0x78a683(_0x1e1ecc);},'tXRMK':function(_0x3a5627,_0x24f187){return _0x3a5627(_0x24f187);},'Eavrn':function(_0x3fe6e5,_0x3143a0,_0x3e5a48){return _0x3fe6e5(_0x3143a0,_0x3e5a48);},'aBiBh':function(_0x175837,_0x1c7a3c){return _0x175837(_0x1c7a3c);},'DdpNX':_0x43d4d6(0x232),'Kqwgk':function(_0x533047,_0x44677d){return _0x533047(_0x44677d);},'itcHC':function(_0x3ba6af,_0x3d7195){return _0x3ba6af(_0x3d7195);},'PUXmG':function(_0x1b83a1,_0x2e1f23){return _0x1b83a1(_0x2e1f23);},'jqrdv':_0x43d4d6(0x23b),'FpNbr':function(_0x3839b3,_0x387fcc){return _0x3839b3(_0x387fcc);},'MTPXh':function(_0x27a4b4,_0x5423e0){return _0x27a4b4(_0x5423e0);},'cNGNo':_0x43d4d6(0x1b1),'LtrVN':_0x43d4d6(0x238)},_0x1b9677=readProfiles();if(_0x56c8b5[_0x43d4d6(0x22c)](_0x602a3e,_0x43d4d6(0x207))){const _0x4e9515=Object[_0x43d4d6(0x211)](_0x1b9677['profiles'])[_0x43d4d6(0x24e)](([_0x4ae6f5,_0x595518])=>({'profileId':_0x4ae6f5,'name':_0x595518[_0x43d4d6(0x1e1)],'hasLogin':_0x595518[_0x43d4d6(0x21e)],'active':_0x1b9677['active']===_0x4ae6f5}));return toolText(JSON[_0x43d4d6(0x1ff)]({'active':_0x1b9677[_0x43d4d6(0x273)],'count':_0x4e9515[_0x43d4d6(0x276)],'profiles':_0x4e9515},null,0x2));}const _0x4fdc3b=_0x56c8b5[_0x43d4d6(0x24a)](String,_0x3590c2?.[_0x43d4d6(0x22b)]??'');if(!(0x0,profiles_1[_0x43d4d6(0x222)])(_0x4fdc3b))return toolText('エラー:\x20不正な\x20profileId\x20\x27'+_0x4fdc3b+'\x27('+profiles_1[_0x43d4d6(0x229)]+')。');if(_0x602a3e===_0x43d4d6(0x1ca)){(0x0,fs_1[_0x43d4d6(0x1d1)])(profileDir(_0x4fdc3b),{'recursive':!![]});const _0x3297f6=_0x1b9677['profiles'][_0x4fdc3b]??{'name':_0x3590c2?.[_0x43d4d6(0x1e1)]??_0x4fdc3b,'storageState':storagePath(_0x4fdc3b),'hasLogin':![]};_0x3297f6[_0x43d4d6(0x1e1)]=_0x3590c2?.[_0x43d4d6(0x1e1)]??_0x3297f6['name'];if(_0x3590c2?.['importStorageState']){try{(0x0,fs_1[_0x43d4d6(0x1a7)])(_0x56c8b5[_0x43d4d6(0x1e5)](storagePath,_0x4fdc3b),(0x0,profiles_1[_0x43d4d6(0x1ad)])(String(_0x3590c2['importStorageState'])),{'mode':0x180});}catch(_0x2559f){return _0x56c8b5[_0x43d4d6(0x1e5)](toolText,'エラー:\x20ログイン保存ファイルを取り込めません:\x20'+_0x2559f[_0x43d4d6(0x1b5)]);}_0x3297f6[_0x43d4d6(0x21e)]=!![];}return _0x1b9677['profiles'][_0x4fdc3b]=_0x3297f6,_0x1b9677[_0x43d4d6(0x273)]=_0x4fdc3b,_0x56c8b5[_0x43d4d6(0x1e5)](writeProfiles,_0x1b9677),await(childReady=_0x56c8b5[_0x43d4d6(0x256)](startChild,_0x56c8b5[_0x43d4d6(0x225)](isolatedArgs,_0x4fdc3b,![]))),_0x56c8b5[_0x43d4d6(0x226)](toolText,_0x43d4d6(0x25b)+_0x4fdc3b+_0x43d4d6(0x1cc)+_0x4fdc3b+_0x43d4d6(0x1ed));}if(_0x56c8b5['DklId'](_0x602a3e,_0x56c8b5[_0x43d4d6(0x234)])){if(!_0x1b9677['profiles'][_0x4fdc3b])return toolText(_0x43d4d6(0x25f)+_0x4fdc3b+'\x27\x20は未登録です。先に\x20browser_setup_profile\x20を実行してください。');(0x0,fs_1[_0x43d4d6(0x1d1)])(profileDir(_0x4fdc3b),{'recursive':!![]});const _0xad600f=storagePath(_0x4fdc3b)+'.'+process[_0x43d4d6(0x1b8)]+_0x43d4d6(0x224),_0x4369d0=_0x43d4d6(0x218)+JSON[_0x43d4d6(0x1ff)](_0xad600f)+_0x43d4d6(0x219);try{const _0x40805d=await childRequest(_0x43d4d6(0x1b2),{'name':'browser_run_code_unsafe','arguments':{'code':_0x4369d0}},0x7530);if(_0x40805d?.[_0x43d4d6(0x1d0)])return toolText(_0x43d4d6(0x1dc)+_0x40805d['error'][_0x43d4d6(0x1b5)]);if(!(0x0,fs_1[_0x43d4d6(0x1ce)])(_0xad600f))return _0x56c8b5['EMfLn'](toolText,_0x43d4d6(0x201));const _0x1b51d8=JSON['parse']((0x0,fs_1[_0x43d4d6(0x250)])(_0xad600f,_0x43d4d6(0x235))),_0x2d059e=(0x0,fs_1[_0x43d4d6(0x1ce)])(_0x56c8b5['EMfLn'](storagePath,_0x4fdc3b))?JSON[_0x43d4d6(0x236)]((0x0,fs_1[_0x43d4d6(0x250)])(_0x56c8b5[_0x43d4d6(0x1d5)](storagePath,_0x4fdc3b),_0x43d4d6(0x235))):null;return(0x0,fs_1[_0x43d4d6(0x1a7)])(_0xad600f,JSON[_0x43d4d6(0x1ff)]((0x0,profiles_1['mergeStorageState'])(_0x2d059e,_0x1b51d8),null,0x2),{'mode':0x180}),(0x0,fs_1['renameSync'])(_0xad600f,_0x56c8b5[_0x43d4d6(0x267)](storagePath,_0x4fdc3b)),_0x1b9677[_0x43d4d6(0x1c3)][_0x4fdc3b]['hasLogin']=!![],_0x56c8b5[_0x43d4d6(0x1aa)](writeProfiles,_0x1b9677),_0x56c8b5[_0x43d4d6(0x1e5)](toolText,'✅\x20プロファイル\x20\x27'+_0x4fdc3b+_0x43d4d6(0x1b3));}catch(_0x344b34){return toolText(_0x43d4d6(0x25e)+_0x56c8b5['aBiBh'](String,_0x344b34));}}if(_0x602a3e===_0x56c8b5[_0x43d4d6(0x22a)]){const _0x524c04=_0x1b9677[_0x43d4d6(0x1c3)][_0x4fdc3b];if(!_0x524c04)return toolText(_0x43d4d6(0x25f)+_0x4fdc3b+_0x43d4d6(0x1af));_0x1b9677[_0x43d4d6(0x273)]=_0x4fdc3b,_0x56c8b5[_0x43d4d6(0x1ef)](writeProfiles,_0x1b9677),await(childReady=_0x56c8b5[_0x43d4d6(0x243)](startChild,_0x56c8b5[_0x43d4d6(0x225)](isolatedArgs,_0x4fdc3b,_0x56c8b5[_0x43d4d6(0x22c)](_0x3590c2?.[_0x43d4d6(0x26e)],!![]))));const _0x1a248c=(0x0,fs_1['existsSync'])(storagePath(_0x4fdc3b))?_0x56c8b5[_0x43d4d6(0x1f7)]:_0x56c8b5['LtrVN'];return toolText(_0x43d4d6(0x25b)+_0x4fdc3b+_0x43d4d6(0x1c0)+_0x1a248c+')。');}return toolText(_0x43d4d6(0x203)+_0x602a3e);}async function handleMessage(_0x179547){const _0x56c6a0=_0xbfd478,_0x4df175={'fvYAx':function(_0x2033ed,_0x15bfc8){return _0x2033ed===_0x15bfc8;},'kuiiS':function(_0x3ed357,_0x194590,_0x51867b){return _0x3ed357(_0x194590,_0x51867b);},'VsQJk':_0x56c6a0(0x24f),'lNTbN':_0x56c6a0(0x1c4),'SkdCZ':_0x56c6a0(0x227),'KFcAL':function(_0x14b2df,_0x1e7d3d,_0x5cb97d){return _0x14b2df(_0x1e7d3d,_0x5cb97d);},'UiniF':'tools/list','CPtqN':function(_0x24b22c){return _0x24b22c();},'fkBIN':_0x56c6a0(0x1b2),'AdvDY':function(_0x10de27,_0xa59abf){return _0x10de27>_0xa59abf;},'yDjLJ':_0x56c6a0(0x1f1),'ZosBT':function(_0x1928e5,_0x33f36d,_0x447bb2){return _0x1928e5(_0x33f36d,_0x447bb2);},'FjWyS':function(_0x455e52){return _0x455e52();},'GxWJg':function(_0x309930,_0x209ad7,_0x1572c3,_0x5cb6e6){return _0x309930(_0x209ad7,_0x1572c3,_0x5cb6e6);},'rKKdu':function(_0x4730bc,_0x4aafab){return _0x4730bc(_0x4aafab);},'wooKx':function(_0x237560,_0x33b82c,_0x34956a,_0x5c324c){return _0x237560(_0x33b82c,_0x34956a,_0x5c324c);},'VQmym':function(_0x5270b8,_0x597512){return _0x5270b8(_0x597512);},'iGxes':function(_0xe9ece9,_0xcd36d){return _0xe9ece9!==_0xcd36d;}},{id:_0x9ab870,method:_0x496c4e,params:_0x58b25a}=_0x179547;if(_0x4df175[_0x56c6a0(0x1c6)](_0x496c4e,_0x56c6a0(0x1e7))){void ensureChild()[_0x56c6a0(0x23c)](()=>{}),_0x4df175['kuiiS'](reply,_0x9ab870,{'protocolVersion':_0x4df175[_0x56c6a0(0x22d)],'capabilities':{'tools':{}},'serverInfo':{'name':'playwright-profile-mcp','version':_0x4df175['lNTbN']}});return;}if(_0x496c4e===_0x4df175[_0x56c6a0(0x1b9)])return;if(_0x496c4e===_0x56c6a0(0x237)){_0x4df175['KFcAL'](reply,_0x9ab870,{});return;}if(_0x496c4e===_0x4df175['UiniF']){try{await _0x4df175[_0x56c6a0(0x212)](ensureChild);}catch{}_0x4df175[_0x56c6a0(0x1bd)](reply,_0x9ab870,{'tools':[...childTools,...PROFILE_TOOLS]});return;}if(_0x4df175[_0x56c6a0(0x1c6)](_0x496c4e,_0x4df175[_0x56c6a0(0x1ae)])){const _0x453bdc=_0x58b25a?.['name'],_0x575344=_0x58b25a?.[_0x56c6a0(0x1e6)]??{};try{const _0x43df91={...guard,'filled':guard[_0x56c6a0(0x21a)]||_0x4df175[_0x56c6a0(0x268)](fillsInFlight,0x0)},_0x570ff9=PROFILE_NAMES[_0x56c6a0(0x1fe)](_0x453bdc)&&_0x453bdc!==_0x4df175[_0x56c6a0(0x202)]?null:(0x0,fillGuard_1[_0x56c6a0(0x213)])(_0x43df91,_0x453bdc,_0x575344);if(_0x570ff9)_0x4df175['ZosBT'](reply,_0x9ab870,{...toolText(_0x570ff9),'isError':!![]});else{if(_0x453bdc===_0x4df175[_0x56c6a0(0x202)]){fillsInFlight++;try{reply(_0x9ab870,toolText(await(0x0,secretFill_1[_0x56c6a0(0x1ea)])(_0x575344,FILL_DEPS)));}finally{fillsInFlight--;}}else{if(PROFILE_NAMES[_0x56c6a0(0x1fe)](_0x453bdc)){const _0x3377ad=await _0x4df175[_0x56c6a0(0x1f8)](handleProfileTool,_0x453bdc,_0x575344);reply(_0x9ab870,_0x3377ad);}else{await _0x4df175[_0x56c6a0(0x20c)](ensureChild),guard=(0x0,fillGuard_1[_0x56c6a0(0x221)])(guard,_0x453bdc,_0x575344);let _0x19133f;try{_0x19133f=await _0x4df175['GxWJg'](childRequest,_0x56c6a0(0x1b2),{'name':_0x453bdc,'arguments':_0x575344},0x1d4c0);}finally{guard=(0x0,fillGuard_1[_0x56c6a0(0x1d4)])(guard,_0x453bdc,_0x575344,Boolean(_0x19133f&&!_0x19133f['error']&&!_0x19133f[_0x56c6a0(0x242)]?.[_0x56c6a0(0x275)])),(0x0,secretFill_1['redactFiles'])(OUTPUT_DIR,filledValues,filledSince);}if(_0x19133f?.[_0x56c6a0(0x1d0)]){const _0x155613=(0x0,secretFill_1[_0x56c6a0(0x21d)])(_0x4df175[_0x56c6a0(0x1da)](String,_0x19133f[_0x56c6a0(0x1d0)][_0x56c6a0(0x1b5)]??_0x56c6a0(0x253)),filledValues),_0x50fd77=(0x0,hints_1['browserHint'])(_0x155613);_0x4df175['wooKx'](replyErr,_0x9ab870,_0x19133f[_0x56c6a0(0x1d0)][_0x56c6a0(0x1b0)]??-0x7d00,''+_0x155613+(_0x50fd77?'\x0a'+_0x50fd77:''));return;}const _0x5adbbb=(0x0,secretFill_1[_0x56c6a0(0x21d)])(_0x19133f['result']??{},filledValues),_0x4ba599=_0x5adbbb[_0x56c6a0(0x1fb)]??[],_0x51cb2e=_0x4ba599[_0x56c6a0(0x24e)](_0x5bf11d=>_0x5bf11d['text']??'')['join']('\x0a'),_0x34c7df=_0x5adbbb[_0x56c6a0(0x275)]?(0x0,hints_1['browserHint'])(_0x51cb2e):null;_0x4df175[_0x56c6a0(0x1bd)](reply,_0x9ab870,{..._0x5adbbb,'content':_0x34c7df?[..._0x4ba599,{'type':'text','text':_0x34c7df}]:_0x4ba599});}}}}catch(_0x23c508){reply(_0x9ab870,toolText(_0x56c6a0(0x248)+_0x4df175['VQmym'](String,_0x23c508)));}return;}if(_0x4df175[_0x56c6a0(0x215)](_0x9ab870,undefined))replyErr(_0x9ab870,-0x7f59,_0x56c6a0(0x25a)+_0x496c4e);}let inBuf='';process[_0xbfd478(0x1eb)]['on'](_0xbfd478(0x258),_0x3cf998=>{const _0x306809=_0xbfd478,_0x35752a={'MbHTp':function(_0x21380d,_0x36cf91){return _0x21380d+_0x36cf91;}};inBuf+=_0x3cf998[_0x306809(0x208)]();let _0x5f03e6;while((_0x5f03e6=inBuf['indexOf']('\x0a'))>=0x0){const _0xa65d2d=inBuf[_0x306809(0x1e9)](0x0,_0x5f03e6);inBuf=inBuf[_0x306809(0x1e9)](_0x35752a[_0x306809(0x24b)](_0x5f03e6,0x1));if(!_0xa65d2d['trim']())continue;let _0x5429b0;try{_0x5429b0=JSON[_0x306809(0x236)](_0xa65d2d);}catch{continue;}handleMessage(_0x5429b0)[_0x306809(0x23c)](_0x348c8d=>process[_0x306809(0x1f0)][_0x306809(0x1f6)]('handle\x20error:\x20'+_0x348c8d+'\x0a'));}}),process[_0xbfd478(0x1eb)]['on'](_0xbfd478(0x231),()=>{const _0x476cd9=_0xbfd478;stopChild(),process[_0x476cd9(0x230)](0x0);}),process['on']('SIGTERM',()=>{const _0x15e70c=_0xbfd478,_0x198d60={'xGbRW':function(_0x274acf){return _0x274acf();}};_0x198d60[_0x15e70c(0x271)](stopChild),process[_0x15e70c(0x230)](0x0);}),process['on']('SIGINT',()=>{stopChild(),process['exit'](0x0);}),process[_0xbfd478(0x1f0)][_0xbfd478(0x1f6)](_0xbfd478(0x1e4));
|
package/dist/secretFill.js
CHANGED
|
@@ -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
|
|
100
|
+
* (パスワード欄でも)、この MCP が返す全ての文から、このセッションで入れた秘密の値とその変換形(secretForms)を消す。
|
|
101
|
+
* 短すぎる値(REDACT_MIN 未満)は普通の文字(「x」「pass」等)まで伏せてページの写しを壊すので伏せない(パスワードは通常これより長い)。
|
|
71
102
|
*/
|
|
72
103
|
function redactSecrets(text, values) {
|
|
73
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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__(\{[^}]*\})/);
|
|
@@ -133,5 +206,11 @@ async function fillSecret(args, deps) {
|
|
|
133
206
|
return `エラー: ${name} を入れられませんでした(ブラウザでの実行に失敗しました)。${retry}`;
|
|
134
207
|
if (!res.ok)
|
|
135
208
|
return `断りました: 確かめている間にページが変わりました(${at.host} → ${res.host || "不明"})。${retry}`;
|
|
136
|
-
return `✅ ${name} を ${res.host} の入力欄(${String(args?.element ?? ref)}
|
|
209
|
+
return `✅ ${name} を ${res.host} の入力欄(${String(args?.element ?? ref)})に入れました(値は表示しません)。` + humanStepText(name, s.humanStep);
|
|
210
|
+
}
|
|
211
|
+
/** ログインに人の手が要るかを、結果に添える文。目印があれば先に伝えさせ、無ければ見つけたときに付けさせる。 */
|
|
212
|
+
function humanStepText(name, step) {
|
|
213
|
+
return step
|
|
214
|
+
? `\nこのログインは途中で人の手が要ります(${step})。まだ伝えていなければ、今のうちにユーザーへ伝えてから進めてください。`
|
|
215
|
+
: `\nこのあと画像パズル・SMS の確認コードなど人に頼む所があったら、頼むのと一緒に set_secret_human_step(name: "${name}") で目印を付けてください(次から先に伝えられます)。`;
|
|
137
216
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funny-booth/playwright-profile-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
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",
|