@funny-booth/agent-core 0.1.51 → 0.1.52

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.
@@ -1,198 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inputFromHuman = exports.CANCEL_LABEL = exports.SAVE_LABEL = exports.INPUT_TIMEOUT_SEC = void 0;
4
- exports.inputMessage = inputMessage;
5
- exports.inputDialogCommand = inputDialogCommand;
6
- exports.stripFinalNewline = stripFinalNewline;
7
- exports.interpretInput = interpretInput;
8
- exports.badSitesText = badSitesText;
9
- exports.parseSetRequest = parseSetRequest;
10
- exports.askSecret = askSecret;
11
- // 秘密の値を、AI の会話を通さずに本人に入れてもらう入力画面(ask_secret)。
12
- // 本人が OS の入力画面(伏せ字)に値を入れて「保存」を押すと、その値をそのまま金庫へ「人が入れた」目印付きで入れる。
13
- // AI には名前と結果だけを返し、あとから get_secret でも値を返さない(secretTools.ts)。
14
- // 値はメモリの中だけに置く(一時ファイルに書かない・コマンドの引数に載せない・記録に出さない)。
15
- // 画面の中身(文・コマンド・結果の読み方)は純粋な関数にし、OS を呼ぶのは inputFromHuman だけにする(テストで差し替えられる)。
16
- // 組み立ては approval.ts(本人の確認)と同じ形。
17
- const child_process_1 = require("child_process");
18
- const approval_1 = require("./approval");
19
- const secretNames_1 = require("./secretNames");
20
- const secretSites_1 = require("./secretSites");
21
- exports.INPUT_TIMEOUT_SEC = 120;
22
- exports.SAVE_LABEL = "保存";
23
- exports.CANCEL_LABEL = "キャンセル";
24
- const TITLE = "パスワード等の保存";
25
- // macOS の画面が返す目印(値の前に付ける・時間切れ)。値にカンマ等があっても読み違えない
26
- const VALUE_PREFIX = "VALUE:";
27
- const GAVE_UP = "GAVE_UP";
28
- function inputMessage(name, sites, exists, timeoutSec = exports.INPUT_TIMEOUT_SEC) {
29
- return `金庫に秘密を保存します。値を入れて「${exports.SAVE_LABEL}」を押してください。\n\n` +
30
- `名前: ${name}\n` +
31
- `入れてよいサイト: ${sites.length ? sites.join(", ") : "なし"}\n` +
32
- (exists ? "※ この名前の秘密はすでにあります。保存すると上書きします。\n" : "") +
33
- `\n入れた値は AI には渡りません(AI はあとからも読めず、ブラウザへの入力とツールの設定にだけ使います)。` +
34
- `(${timeoutSec} 秒で閉じ、何も保存しません)`;
35
- }
36
- /**
37
- * OS ごとの入力画面のコマンド。文は引数や環境変数で渡し、コードに埋め込まない(名前やサイト名に記号があっても壊れない)。
38
- * 出せない環境なら null。has は「そのコマンドがあるか」(テストで差し替える)。
39
- */
40
- function inputDialogCommand(platform, message, env, has, timeoutSec = exports.INPUT_TIMEOUT_SEC) {
41
- const killAfterMs = (timeoutSec + 5) * 1000;
42
- const q = JSON.stringify;
43
- if (platform === "darwin") {
44
- // キャンセルは osascript がエラー -128 で終わる(終了コード 1)
45
- return {
46
- cmd: "/usr/bin/osascript",
47
- args: [
48
- "-e", "on run argv",
49
- "-e", `set r to display dialog (item 1 of argv) with title ${q(TITLE)} default answer "" with hidden answer ` +
50
- `buttons {${q(exports.CANCEL_LABEL)}, ${q(exports.SAVE_LABEL)}} default button ${q(exports.SAVE_LABEL)} cancel button ${q(exports.CANCEL_LABEL)} ` +
51
- `giving up after ${timeoutSec}`,
52
- "-e", `if gave up of r then return ${q(GAVE_UP)}`,
53
- "-e", `return ${q(VALUE_PREFIX)} & (text returned of r)`,
54
- "-e", "end run",
55
- message,
56
- ],
57
- killAfterMs,
58
- };
59
- }
60
- if (platform === "win32") {
61
- return (0, approval_1.windowsDialog)({ text: message, title: TITLE, yes: exports.SAVE_LABEL, no: exports.CANCEL_LABEL, timeoutSec, hiddenInput: true });
62
- }
63
- if (!env.DISPLAY && !env.WAYLAND_DISPLAY)
64
- return null;
65
- if (has("zenity")) {
66
- return {
67
- cmd: "zenity",
68
- args: ["--entry", "--hide-text", "--title", TITLE, "--text", message, "--ok-label", exports.SAVE_LABEL,
69
- "--cancel-label", exports.CANCEL_LABEL, `--timeout=${timeoutSec}`],
70
- killAfterMs,
71
- };
72
- }
73
- if (has("kdialog")) {
74
- // kdialog には時間切れが無いので、時間が来たら閉じる(killAfterMs)
75
- return { cmd: "kdialog", args: ["--title", TITLE, "--password", message], killAfterMs: timeoutSec * 1000 };
76
- }
77
- return null;
78
- }
79
- /** 画面やパイプ(echo 等)が足す最後の改行1つだけを外す(パスワードの前後の空白はそのまま)。 */
80
- function stripFinalNewline(s) {
81
- return s.replace(/\r?\n$/, "");
82
- }
83
- function valueOrEmpty(value) {
84
- return value === "" ? { status: "empty" } : { status: "value", value };
85
- }
86
- /** 入力画面の結果を読む。「保存」で値が返ったときだけ value。 */
87
- function interpretInput(platform, r, cmd = "") {
88
- if (r.killed)
89
- return { status: "timeout" };
90
- const reason = r.stderr.trim() || `終了コード ${r.code}`;
91
- if (platform === "darwin") {
92
- if (r.code !== 0)
93
- return /\(-128\)/.test(r.stderr) ? { status: "cancel" } : { status: "unavailable", reason };
94
- const out = stripFinalNewline(r.stdout);
95
- if (out === GAVE_UP)
96
- return { status: "timeout" };
97
- if (!out.startsWith(VALUE_PREFIX))
98
- return { status: "unavailable", reason: "入力画面から思わぬ応答が返りました" };
99
- return valueOrEmpty(out.slice(VALUE_PREFIX.length));
100
- }
101
- if (platform === "win32") {
102
- if (r.code === 0)
103
- return valueOrEmpty(r.stdout);
104
- if (r.code === approval_1.WIN_DIALOG_NO)
105
- return { status: "cancel" };
106
- if (r.code === approval_1.WIN_DIALOG_TIMEOUT)
107
- return { status: "timeout" };
108
- return { status: "unavailable", reason };
109
- }
110
- if (r.code === 0)
111
- return valueOrEmpty(stripFinalNewline(r.stdout));
112
- if (r.code === 1)
113
- return { status: "cancel" };
114
- if (cmd === "zenity" && r.code === 5)
115
- return { status: "timeout" };
116
- return { status: "unavailable", reason };
117
- }
118
- /** 本人に OS の入力画面で値を入れてもらう(実物)。画面を出せない環境では "unavailable"。 */
119
- const inputFromHuman = (message) => {
120
- const env = process.env;
121
- if (env.FB_NO_DIALOG === "1")
122
- return Promise.resolve({ status: "unavailable", reason: "FB_NO_DIALOG" }); // テスト用(approval.ts と同じ)
123
- const c = inputDialogCommand(process.platform, message, env, (cmd) => (0, approval_1.onPath)(cmd, env));
124
- if (!c)
125
- return Promise.resolve({ status: "unavailable" });
126
- return new Promise((resolve) => {
127
- (0, child_process_1.execFile)(c.cmd, c.args, { env: { ...env, ...(c.env ?? {}) }, timeout: c.killAfterMs, windowsHide: false }, (err, stdout, stderr) => {
128
- const e = err;
129
- if (e && typeof e.code === "string") {
130
- resolve({ status: "unavailable", reason: e.message });
131
- return;
132
- } // 起動できない(ENOENT 等)
133
- const code = e ? (typeof e.code === "number" ? e.code : 1) : 0;
134
- resolve(interpretInput(process.platform, { code, stdout: String(stdout ?? ""), stderr: String(stderr ?? ""), killed: Boolean(e?.killed) }, c.cmd));
135
- });
136
- });
137
- };
138
- exports.inputFromHuman = inputFromHuman;
139
- /**
140
- * ask_secret の中身。AI に返す文を作る(値は決して含めない)。
141
- * sites を省く・空にすると、入れてよいサイトは今のまま(ここで外すと get_secret で値を取り出せるようになるため。外すのは set_secret_sites)。
142
- */
143
- function badSitesText(bad) {
144
- return `保存していません: サイトをドメインとして読めません(${bad.join(", ")})。example.com の形で渡してください。`;
145
- }
146
- /**
147
- * CLI の `secret set --stdin-json` が標準入力から受け取る1つの JSON({"name","value","sites"?})を読む(VS Code 拡張の「パスワードを保存」が使う)。
148
- * 値は受け取ったまま使う(空白を外さない)。読めなければ error(日本語1行。値は含めない)。
149
- */
150
- function parseSetRequest(text) {
151
- let o;
152
- // JSON.parse の理由には入力の一部が載ることがあるので出さない(値を漏らさない)
153
- try {
154
- o = JSON.parse(text);
155
- }
156
- catch {
157
- return { error: "保存していません: 標準入力を JSON として読めません。" };
158
- }
159
- if (!o || typeof o !== "object" || Array.isArray(o))
160
- return { error: "保存していません: 標準入力が {\"name\", \"value\", \"sites\"} の形ではありません。" };
161
- const { name, value, sites } = o;
162
- if (typeof name !== "string" || !name)
163
- return { error: "保存していません: 名前(name)がありません。" };
164
- if (typeof value !== "string" || !value)
165
- return { error: "保存していません: 値(value)が空です。" };
166
- if (sites !== undefined && (!Array.isArray(sites) || sites.some((x) => typeof x !== "string"))) {
167
- return { error: "保存していません: サイト(sites)は文字列の配列で渡してください。" };
168
- }
169
- const n = (0, secretSites_1.normalizeSites)(sites ?? []);
170
- if (n.bad.length)
171
- return { error: badSitesText(n.bad) };
172
- return { name, value, sites: n.sites };
173
- }
174
- async function askSecret(name, sites, deps) {
175
- const nameError = (0, secretNames_1.secretNameError)(name);
176
- if (nameError)
177
- return `保存していません: ${nameError}`;
178
- const normalized = (0, secretSites_1.normalizeSites)(sites ?? []);
179
- if (normalized.bad.length)
180
- return badSitesText(normalized.bad);
181
- const given = normalized.sites.length ? normalized.sites : null;
182
- const shown = given ?? deps.currentSites(name);
183
- const r = await deps.input(inputMessage(name, shown, deps.exists(name)));
184
- switch (r.status) {
185
- case "cancel": return `保存していません: ユーザーが入力画面でキャンセルしました。`;
186
- case "timeout": return `保存していません: ${exports.INPUT_TIMEOUT_SEC} 秒以内に入力がありませんでした。もう一度呼ぶ前にユーザーに確かめてください。`;
187
- case "empty": return `保存していません: 値が空のまま「${exports.SAVE_LABEL}」が押されました。`;
188
- case "unavailable":
189
- return `保存していません: この PC では入力画面を出せませんでした${r.reason ? `(${r.reason})` : ""}。` +
190
- `ユーザーに端末で \`${deps.command} secret set ${name}${given ? ` --sites ${given.join(",")}` : ""}\` を実行してもらってください` +
191
- "(入力は画面に表示されません)。値をチャットに貼ってもらわないでください。";
192
- }
193
- deps.save(name, r.value, given);
194
- return `${name} を保存しました(入れてよいサイト: ${shown.length ? shown.join(", ") : "なし"})。値は受け取っていません。` +
195
- (shown.length ? "すぐに browser_fill_secret で使えます。"
196
- : (0, secretSites_1.looksLikeSiteLogin)(name) ? "Web サイトのログイン用なら、どのサイトかユーザーに確かめて set_secret_sites で決めてください。" : "");
197
- }
198
- //# sourceMappingURL=secretInput.js.map
1
+ 'use strict';const _0x56034a=_0x4f7a;(function(_0xf85c90,_0xd84e64){const _0x14134b=_0x4f7a,_0x566328=_0xf85c90();while(!![]){try{const _0x3486ea=-parseInt(_0x14134b(0x26f))/0x1+parseInt(_0x14134b(0x21d))/0x2*(-parseInt(_0x14134b(0x1e8))/0x3)+-parseInt(_0x14134b(0x252))/0x4*(parseInt(_0x14134b(0x218))/0x5)+-parseInt(_0x14134b(0x23b))/0x6*(parseInt(_0x14134b(0x24b))/0x7)+-parseInt(_0x14134b(0x204))/0x8+-parseInt(_0x14134b(0x260))/0x9+-parseInt(_0x14134b(0x256))/0xa*(-parseInt(_0x14134b(0x243))/0xb);if(_0x3486ea===_0xd84e64)break;else _0x566328['push'](_0x566328['shift']());}catch(_0x2ac704){_0x566328['push'](_0x566328['shift']());}}}(_0x169c,0x7b30f));Object[_0x56034a(0x266)](exports,'__esModule',{'value':!![]}),exports['inputFromHuman']=exports[_0x56034a(0x20b)]=exports['SAVE_LABEL']=exports[_0x56034a(0x21f)]=void 0x0,exports[_0x56034a(0x1ff)]=_0xab02d5,exports[_0x56034a(0x1fb)]=_0x3cfbeb,exports[_0x56034a(0x259)]=_0x385126,exports[_0x56034a(0x245)]=_0x41736b,exports['badSitesText']=_0x28da81,exports[_0x56034a(0x270)]=_0x463646,exports[_0x56034a(0x25e)]=_0x4f7a1d;const _0x23b106=require(_0x56034a(0x237)),_0x540d47=require('./approval'),_0x49d865=require(_0x56034a(0x210)),_0x273ba2=require(_0x56034a(0x274));exports[_0x56034a(0x21f)]=0x78,exports[_0x56034a(0x215)]='保存',exports[_0x56034a(0x20b)]='キャンセル';const _0xb1c50d=_0x56034a(0x27c),_0x3390e2='VALUE:',_0x1af723=_0x56034a(0x267);function _0x169c(){const _0x131590=['zxHLy0zPBgu','CgjOrgy','z2L2Aw5NihvWigfMDgvYia','ls1VAY1SywjLBa','tNfNu2m','44or44k544oV44o844oj562j44gU5l+D5A2y','CNjcthO','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJGRxJGQtJG4JVViHZAxrLC++8IEobR+AwH+wTL+wiL+obRUMfJEwiL+obP+A4OEobL+obPUobJ+obOoobLEobHooaGG','BwvZC2fNzq','mtHjzgvXzKW','CNzIEfm','C3rHDhvZ','zw1WDhK','BNvTyMvY','C2L0zxm','ls1OAwrLlxrLEhq','v0Lox0rjquXpr19otW','EvHksvu','Aw5WDxq','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdMQjNMUPBLHAxLIPVJGyWGEYjUyw1LiIWGiNzHBhvLiIWGiNnPDgvZiN0G44gU5B2I44gN44gV44gc44kk44g+44gB44kt44cc','rKjFtK9FreLbte9h','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdLGktJGyZNQBRJGA7JGB7JGB7JGiW','ls10AxrSzq','B3fKBwS','s1bLue8','Dw5HDMfPBgfIBgu','ihnLy3jLDcbZzxqG','ls1WyxnZD29Yza','Aw5WDxreAwfSB2DdB21Tyw5K','tNHKtuO','57wc5lQg44kZ44o844ojia','BgvUz3rO','Aw5WDxrnzxnZywDL','C2v0ihiGDg8GzgLZCgXHEsbKAwfSB2CGkgL0zw0GmsbVzIbHCMD2ksb3AxrOihrPDgXLia','wKzvvu4','CMvWBgfJzq','z0Purvy','nZK3otq0me1RBvnmAG','6yEr5BQR44gR56Ey5A+g44ks5l+D5A2y44gx44g+44gz44cc5ycK44ks5ywL44km44gM44cm','DfrKy3y','t3nwsK0','wKTVDwS','ioENKUs7PEwgHEobQ+wfPEwkM+obJoobGUocIUobVUobM+ocK+obP+obL+obN+oaGUocGUobHUs4Gow6PUwrVoobTUwjJEobQ+odPUodVoocTUodVoobQ+EIUUobI+ocGEobPUobJ+obOoobLEobHooaGG','CMvZB2X2zq','q0foq0vmx0XbqKvm','yMfK','zw52','v0Lox0rjquXpr19usu1ft1vu','ChPYAfG','lI9ZzwnYzxroyw1LCW','C2vJCMv0tMfTzuvYCM9Y','BhrtA0C','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJGzpJGA4GuemG44gN44gV5ywL5yQB55s76z2I44ks5yE644gB44g+44gB44kt44gN44gx44gF','77Yj44cc5ycK44gV5y+x44gr5y+w44gJ44gM44ge44g+44gB44kt44cc','u0fwrv9mqujfta','EgPkz2i','DgLTzw91Da','mtG2nJK1meTzvNfusa','C2f2zq','vfruzeO','C3rKB3v0','wM5AvhC','mJmZmtaYsg5uAKLW','44cn44gm5OQ844gv44km44g+44gx44gF44cc','su5qvvrFveLnru9vvf9trum','zgfYD2LU','qMjqv28','vef3Dha','BM9YBwfSAxPLu2L0zxm','uuDWExe','A0XsvxG','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJGRxJGQtJG4JJGPlJG4NJG6hJGQtJG7pJGAJJGzFJGABOQQ3JGOhJGB7JGzVJGPpVViG','Aw5WDxrgCM9TshvTyw4','C29Tzq','A2LSBgvK','ic0TC2L0zxmG','rLjcEhq','A0Duquq','44gz44gq44gRigjYB3DZzxjFzMLSBf9ZzwnYzxqG44gN5l2/44gi44g+44gz44cc','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdMQjNMUPBLHAxLIPVJGPiGsLnptIdJGAJJGzFJGABOQQ3JGOhJGB7JGzVJGPpJGii','shrPvwW','l3vZCI9IAw4VB3nHC2nYAxb0','A2LSBefMDgvYtxm','yNv0Dg9UCYb7','CMv0DxjUia','v0fzteforf9esvnqtefz','A2rPywXVzW','B25qyxrO','y2HPBgrFChjVy2vZCW','AM9PBG','AwyGz2f2zsb1CcbVzIbYihrOzw4GCMv0DxjUia','t21qDuO','nKjfDeDeAG','ycdJGPlLRP/OOyZJGzFJGABJGOlJGONJGApJGABJGy/JGAdJGzxJGyq','BwvYzue','DMfSDwu','tejtAuu','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdLKi3LIy3VViHUyw1L77Yj44gm44gc44kk44g+44gB44kt44cc','zxHPC3rZ','y2fUy2vS','mJjJv2LzqKK','CureugG','Aw50zxjWCMv0sw5WDxq','4Oc7ioobK+obRUwqJEwjJEobRUENMowVHUobR+obMEobP+obQ+obGUocIUobVUobMEoaGUs/NEwTMoobMEocI+obQos4IUABUoobJEobL+obVUobMEoaGGO','DhDlu3y','C3rYAw5N','y29Kzq','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJG6BJG7ZJGRBJG7ZJGyZLHAxLIPVNLlVPNAlJGAFJGQ3JG6pJG7pJGRVJG6VJGzFJGB7JGzFJGz/JGii','mJC0ntaYmLzczLLpDa','CgnNyKK','tKXPCgm','AxnbCNjHEq','C3rYAw5NAwz5','CgXHDgzVCM0','DhjPBq','oeT6tMLOyq','cUwfPEocJoobN+waPoobRYbbssdJGAVJGA/MUkhJGORJGB7JGzVJGPpVViHbssdJGA/JGylJGAJJGyVJGONJGOlOQQ3JGOhJGzRJGihJG5BJG6NJGQBJGRBJGBJJGA7LHAxLIPVJGAJJG4tJG7ZJG6VJGA7OQk3LRPRJGAVJGAdJGzhKVB/JGytJGB7JGzNVViNJGii','s0LmDMO','yxjNCW','mJm1ntiYotbPBK5tuLy','ioENKUobP+MwIEobMooaGEs9LEocGUs/NEwTMoobL+obVUobM+ocK++8Iq','CMvHC29U','C3rYAxbgAw5HBe5LD2XPBMu','C3rKzxjY','y21K','77Yi5ywL5yQB44gV55s76z2I44gR6kgO56s644gv44km44g+44gB44kt77Yj44cc5ycK44ks44ob44oJ44od44oi44gR6lk844gJ44gM44kc44kj44kp44gQ44ge44gN44gp44gG44gv44ge44cc','77Yj44cczxHHBxbSzs5JB20G44gU5B2I44gN5RIH44gx44gM44gp44gG44gv44ge44cc','yxnRu2vJCMv0','D2LUzg93C0rPywXVzW','odq0nty4mxzZB25YBa','ugzAD28','s0rWD24','zw5Kihj1BG','y3vYCMvUDfnPDgvZ','B24GCNvUigfYz3y','zgvMAw5LuhjVCgvYDhK','r0fwrv9vua','DKrfAMq','B2jQzwn0','D2LUmZi','ls1Jyw5JzwWTBgfIzwW','5l+D5A2y44gx44gM44ge44g+44gB44ktoIa','v2vIioocTEocPoodIoobRUodREocSoocPoodS+EuQoobQUocIEoaGEobQEobRUocTEocPoodIoobI+odPUodVoocTUodVoobQ+EIUUobI+ocGEobPIbZzxrFC2vJCMv0x3nPDgvZioobP+AXUUocGEobPUobJ+obOoobLEobHooaGG','ioocKUs/NEwTMoobL+obVUobL+obN++8IowfPEocJoobPUocIoobHoocTEocPoodIdOG','ndmXnZK2zfziv25q','CgfYC2vtzxrszxf1zxn0','sKzvBxy','EMvUAxr5','ls1LBNrYEq','lI9ZzwnYzxrtAxrLCW','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdLGktVViH2ywX1zE+8IEobJoEPUUobP+obMEoaGG','qKXNsLm'];_0x169c=function(){return _0x131590;};return _0x169c();}function _0xab02d5(_0x55ce70,_0x57277f,_0x4ab252,_0x54a5cb=exports[_0x56034a(0x21f)]){const _0x2cf080=_0x56034a,_0x8abcd0={'jbjbS':_0x2cf080(0x246)};return _0x2cf080(0x205)+exports[_0x2cf080(0x215)]+'」を押してください。\x0a\x0a'+('名前:\x20'+_0x55ce70+'\x0a')+('入れてよいサイト:\x20'+(_0x57277f[_0x2cf080(0x1fe)]?_0x57277f[_0x2cf080(0x238)](',\x20'):'なし')+'\x0a')+(_0x4ab252?_0x8abcd0['jbjbS']:'')+_0x2cf080(0x253)+('('+_0x54a5cb+_0x2cf080(0x257));}function _0x3cfbeb(_0x17cf26,_0x354cd6,_0x4f43d4,_0x4fd0dd,_0x37f723=exports[_0x56034a(0x21f)]){const _0x34c6e8=_0x56034a,_0x5cf205={'OmPuJ':function(_0x53c916,_0x22fea6){return _0x53c916+_0x22fea6;},'wTGQk':function(_0x262c28,_0x53d314){return _0x262c28===_0x53d314;},'HtiUl':_0x34c6e8(0x230),'qDDPh':_0x34c6e8(0x265),'JFUmv':function(_0x5a8a4d,_0x45c0a6){return _0x5a8a4d+_0x45c0a6;},'tTdcv':function(_0x27137f,_0x267ef7){return _0x27137f(_0x267ef7);},'OsVJM':function(_0x5ca220,_0x2f516c){return _0x5ca220(_0x2f516c);},'rrBLz':function(_0x489b0e,_0x47073e){return _0x489b0e===_0x47073e;},'NodfW':function(_0x507f5d,_0x17f717){return _0x507f5d(_0x17f717);},'LBSiE':'zenity','pzrhX':_0x34c6e8(0x1ee),'TAwtp':'--text','bdNSj':_0x34c6e8(0x1f5),'rvbxS':function(_0x2cca51,_0x339a08){return _0x2cca51*_0x339a08;}},_0x4a2044=_0x5cf205[_0x34c6e8(0x23a)](_0x37f723,0x5)*0x3e8,_0x56ab4e=JSON[_0x34c6e8(0x24f)];if(_0x5cf205['wTGQk'](_0x17cf26,_0x34c6e8(0x220)))return{'cmd':_0x5cf205[_0x34c6e8(0x22f)],'args':['-e',_0x5cf205[_0x34c6e8(0x244)],'-e',_0x5cf205[_0x34c6e8(0x271)](_0x34c6e8(0x200)+_0x56ab4e(_0xb1c50d)+'\x20default\x20answer\x20\x22\x22\x20with\x20hidden\x20answer\x20',_0x34c6e8(0x232)+_0x5cf205[_0x34c6e8(0x206)](_0x56ab4e,exports[_0x34c6e8(0x20b)])+',\x20'+_0x5cf205[_0x34c6e8(0x207)](_0x56ab4e,exports['SAVE_LABEL'])+'}\x20default\x20button\x20'+_0x5cf205[_0x34c6e8(0x206)](_0x56ab4e,exports[_0x34c6e8(0x215)])+'\x20cancel\x20button\x20'+_0x56ab4e(exports[_0x34c6e8(0x20b)])+'\x20')+(_0x34c6e8(0x279)+_0x37f723),'-e',_0x34c6e8(0x239)+_0x56ab4e(_0x1af723),'-e',_0x34c6e8(0x233)+_0x56ab4e(_0x3390e2)+'\x20&\x20(text\x20returned\x20of\x20r)','-e',_0x34c6e8(0x263),_0x354cd6],'killAfterMs':_0x4a2044};if(_0x5cf205[_0x34c6e8(0x27d)](_0x17cf26,_0x34c6e8(0x26a)))return(0x0,_0x540d47[_0x34c6e8(0x25f)])({'text':_0x354cd6,'title':_0xb1c50d,'yes':exports[_0x34c6e8(0x215)],'no':exports[_0x34c6e8(0x20b)],'timeoutSec':_0x37f723,'hiddenInput':!![]});if(!_0x4f43d4['DISPLAY']&&!_0x4f43d4[_0x34c6e8(0x234)])return null;if(_0x5cf205['NodfW'](_0x4fd0dd,_0x5cf205[_0x34c6e8(0x23f)]))return{'cmd':'zenity','args':[_0x34c6e8(0x273),_0x5cf205[_0x34c6e8(0x20f)],_0x34c6e8(0x1f5),_0xb1c50d,_0x5cf205[_0x34c6e8(0x222)],_0x354cd6,_0x34c6e8(0x27a),exports[_0x34c6e8(0x215)],_0x34c6e8(0x26b),exports[_0x34c6e8(0x20b)],'--timeout='+_0x37f723],'killAfterMs':_0x4a2044};if(_0x5cf205['tTdcv'](_0x4fd0dd,_0x34c6e8(0x235)))return{'cmd':_0x34c6e8(0x235),'args':[_0x5cf205['bdNSj'],_0xb1c50d,_0x34c6e8(0x1fa),_0x354cd6],'killAfterMs':_0x5cf205[_0x34c6e8(0x1e9)](_0x37f723,0x3e8)};return null;}function _0x385126(_0x321819){const _0x529861=_0x56034a;return _0x321819[_0x529861(0x202)](/\r?\n$/,'');}function _0xfe48bd(_0x304318){const _0x298e35=_0x56034a,_0x25979f={'ZFUUN':function(_0xae3d95,_0x5108b3){return _0xae3d95===_0x5108b3;}};return _0x25979f[_0x298e35(0x201)](_0x304318,'')?{'status':'empty'}:{'status':'value','value':_0x304318};}function _0x4f7a(_0x4ff9e6,_0x4f39f8){_0x4ff9e6=_0x4ff9e6-0x1e7;const _0x169cc3=_0x169c();let _0x4f7a30=_0x169cc3[_0x4ff9e6];if(_0x4f7a['WERIBP']===undefined){var _0x4a62e3=function(_0x394612){const _0x691ef4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x40fc62='',_0x3bfe61='';for(let _0x164fb0=0x0,_0x505c27,_0x3f9a91,_0x13a0cf=0x0;_0x3f9a91=_0x394612['charAt'](_0x13a0cf++);~_0x3f9a91&&(_0x505c27=_0x164fb0%0x4?_0x505c27*0x40+_0x3f9a91:_0x3f9a91,_0x164fb0++%0x4)?_0x40fc62+=String['fromCharCode'](0xff&_0x505c27>>(-0x2*_0x164fb0&0x6)):0x0){_0x3f9a91=_0x691ef4['indexOf'](_0x3f9a91);}for(let _0xe3637e=0x0,_0x577384=_0x40fc62['length'];_0xe3637e<_0x577384;_0xe3637e++){_0x3bfe61+='%'+('00'+_0x40fc62['charCodeAt'](_0xe3637e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3bfe61);};_0x4f7a['rPUjgA']=_0x4a62e3,_0x4f7a['mRmOqs']={},_0x4f7a['WERIBP']=!![];}const _0x1145f8=_0x169cc3[0x0],_0x10495e=_0x4ff9e6+_0x1145f8,_0x233043=_0x4f7a['mRmOqs'][_0x10495e];return!_0x233043?(_0x4f7a30=_0x4f7a['rPUjgA'](_0x4f7a30),_0x4f7a['mRmOqs'][_0x10495e]=_0x4f7a30):_0x4f7a30=_0x233043,_0x4f7a30;}function _0x41736b(_0x354cd9,_0x1ed076,_0x48af63=''){const _0x2082c4=_0x56034a,_0x5c6e93={'QGpyq':'timeout','pbhDf':function(_0x50908d,_0x1ee340){return _0x50908d===_0x1ee340;},'xjJgb':'darwin','kLRUx':_0x2082c4(0x242),'BLgJS':function(_0xbbae09,_0x5bfe22){return _0xbbae09(_0x5bfe22);},'kGTAD':function(_0x125b4f,_0x2038af){return _0x125b4f===_0x2038af;},'LwAQc':_0x2082c4(0x26a),'ZlIZv':function(_0x4a5ae2,_0x25d841){return _0x4a5ae2===_0x25d841;},'vDEjd':function(_0x35e7e1,_0x28e72d){return _0x35e7e1(_0x28e72d);},'NLipc':_0x2082c4(0x272),'oqdmk':function(_0x5be54a,_0x15a399){return _0x5be54a===_0x15a399;},'mereA':_0x2082c4(0x1f8)};if(_0x1ed076[_0x2082c4(0x229)])return{'status':_0x5c6e93[_0x2082c4(0x224)]};const _0x32a227=_0x1ed076[_0x2082c4(0x25a)][_0x2082c4(0x251)]()||_0x2082c4(0x1fd)+_0x1ed076[_0x2082c4(0x249)];if(_0x5c6e93[_0x2082c4(0x278)](_0x354cd9,_0x5c6e93[_0x2082c4(0x216)])){if(_0x1ed076[_0x2082c4(0x249)]!==0x0)return/\(-128\)/['test'](_0x1ed076[_0x2082c4(0x25a)])?{'status':_0x5c6e93[_0x2082c4(0x225)]}:{'status':_0x2082c4(0x1f8),'reason':_0x32a227};const _0x5dd4d5=_0x385126(_0x1ed076[_0x2082c4(0x21b)]);if(_0x5dd4d5===_0x1af723)return{'status':_0x2082c4(0x217)};if(!_0x5dd4d5['startsWith'](_0x3390e2))return{'status':_0x2082c4(0x1f8),'reason':'入力画面から思わぬ応答が返りました'};return _0x5c6e93[_0x2082c4(0x276)](_0xfe48bd,_0x5dd4d5['slice'](_0x3390e2[_0x2082c4(0x1fe)]));}if(_0x5c6e93[_0x2082c4(0x22c)](_0x354cd9,_0x5c6e93['LwAQc'])){if(_0x5c6e93['ZlIZv'](_0x1ed076[_0x2082c4(0x249)],0x0))return _0x5c6e93[_0x2082c4(0x276)](_0xfe48bd,_0x1ed076[_0x2082c4(0x21b)]);if(_0x1ed076[_0x2082c4(0x249)]===_0x540d47[_0x2082c4(0x1ef)])return{'status':_0x5c6e93[_0x2082c4(0x225)]};if(_0x1ed076[_0x2082c4(0x249)]===_0x540d47[_0x2082c4(0x20e)])return{'status':_0x5c6e93[_0x2082c4(0x224)]};return{'status':_0x2082c4(0x1f8),'reason':_0x32a227};}if(_0x5c6e93[_0x2082c4(0x278)](_0x1ed076[_0x2082c4(0x249)],0x0))return _0xfe48bd(_0x5c6e93[_0x2082c4(0x268)](_0x385126,_0x1ed076['stdout']));if(_0x1ed076[_0x2082c4(0x249)]===0x1)return{'status':_0x5c6e93['kLRUx']};if(_0x5c6e93[_0x2082c4(0x22c)](_0x48af63,_0x5c6e93[_0x2082c4(0x24d)])&&_0x5c6e93[_0x2082c4(0x1f6)](_0x1ed076[_0x2082c4(0x249)],0x5))return{'status':_0x5c6e93['QGpyq']};return{'status':_0x5c6e93[_0x2082c4(0x23d)],'reason':_0x32a227};}const _0x3cf0c2=_0x4fe83c=>{const _0x37efe0=_0x56034a,_0x463005={'NxdMJ':function(_0x3387e0,_0x1c01d2){return _0x3387e0===_0x1c01d2;},'yXJIU':function(_0xa27cb1,_0xc5574e){return _0xa27cb1(_0xc5574e);},'ltSkG':function(_0x5b7768,_0x25ebea){return _0x5b7768(_0x25ebea);},'ZnZTw':function(_0x225236,_0x36f440,_0x1d65db,_0x3231b8){return _0x225236(_0x36f440,_0x1d65db,_0x3231b8);},'KILvj':function(_0x11b7b9,_0xdf659d){return _0x11b7b9??_0xdf659d;},'vIsNZ':_0x37efe0(0x1f3)},_0x2b92ef=process.env;if(_0x2b92ef[_0x37efe0(0x1f3)]==='1')return Promise[_0x37efe0(0x20a)]({'status':_0x37efe0(0x1f8),'reason':_0x463005['vIsNZ']});const _0x4a60ab=_0x3cfbeb(process[_0x37efe0(0x250)],_0x4fe83c,_0x2b92ef,_0x2931dd=>(0x0,_0x540d47[_0x37efe0(0x236)])(_0x2931dd,_0x2b92ef));if(!_0x4a60ab)return Promise['resolve']({'status':_0x37efe0(0x1f8)});return new Promise(_0x3fafc5=>{const _0x456c5e=_0x37efe0;(0x0,_0x23b106[_0x456c5e(0x277)])(_0x4a60ab[_0x456c5e(0x25b)],_0x4a60ab[_0x456c5e(0x255)],{'env':{..._0x2b92ef,..._0x4a60ab[_0x456c5e(0x20d)]??{}},'timeout':_0x4a60ab[_0x456c5e(0x231)],'windowsHide':![]},(_0x40f1a7,_0x3225c0,_0x2050fd)=>{const _0x21bc8a=_0x456c5e,_0x27f328=_0x40f1a7;if(_0x27f328&&_0x463005[_0x21bc8a(0x1fc)](typeof _0x27f328['code'],_0x21bc8a(0x248))){_0x463005[_0x21bc8a(0x1f0)](_0x3fafc5,{'status':'unavailable','reason':_0x27f328[_0x21bc8a(0x1e7)]});return;}const _0x2dd77c=_0x27f328?_0x463005[_0x21bc8a(0x1fc)](typeof _0x27f328[_0x21bc8a(0x249)],_0x21bc8a(0x1ec))?_0x27f328['code']:0x1:0x0;_0x463005[_0x21bc8a(0x212)](_0x3fafc5,_0x463005[_0x21bc8a(0x21c)](_0x41736b,process[_0x21bc8a(0x250)],{'code':_0x2dd77c,'stdout':String(_0x463005[_0x21bc8a(0x254)](_0x3225c0,'')),'stderr':String(_0x2050fd??''),'killed':Boolean(_0x27f328?.[_0x21bc8a(0x229)])},_0x4a60ab[_0x21bc8a(0x25b)]));});});};exports[_0x56034a(0x227)]=_0x3cf0c2;function _0x28da81(_0x30e6fc){const _0x5de786=_0x56034a;return _0x5de786(0x226)+_0x30e6fc[_0x5de786(0x238)](',\x20')+_0x5de786(0x25d);}function _0x463646(_0x47f095){const _0x588e35=_0x56034a,_0x478824={'PfZwo':_0x588e35(0x22e),'gJTEV':_0x588e35(0x269),'ZKouk':function(_0x4dde9b,_0x5b1583){return _0x4dde9b!==_0x5b1583;},'pcgbI':_0x588e35(0x248),'BbPWo':_0x588e35(0x240),'EGGot':_0x588e35(0x275),'UCWeK':function(_0x327441,_0x45bd1c){return _0x327441!==_0x45bd1c;},'ThjtK':_0x588e35(0x27e)};let _0x411354;try{_0x411354=JSON['parse'](_0x47f095);}catch{return{'error':_0x478824[_0x588e35(0x261)]};}if(!_0x411354||typeof _0x411354!==_0x478824[_0x588e35(0x203)]||Array[_0x588e35(0x24e)](_0x411354))return{'error':_0x588e35(0x1f2)};const {name:_0x29b994,value:_0x5e6e7b,sites:_0x2aa294}=_0x411354;if(_0x478824[_0x588e35(0x208)](typeof _0x29b994,_0x478824[_0x588e35(0x24c)])||!_0x29b994)return{'error':_0x478824[_0x588e35(0x221)]};if(typeof _0x5e6e7b!==_0x478824[_0x588e35(0x24c)]||!_0x5e6e7b)return{'error':_0x478824['EGGot']};if(_0x478824['UCWeK'](_0x2aa294,undefined)&&(!Array[_0x588e35(0x24e)](_0x2aa294)||_0x2aa294[_0x588e35(0x228)](_0xf3692=>typeof _0xf3692!=='string')))return{'error':_0x478824['ThjtK']};const _0x2605cd=(0x0,_0x273ba2[_0x588e35(0x223)])(_0x2aa294??[]);if(_0x2605cd[_0x588e35(0x20c)][_0x588e35(0x1fe)])return{'error':_0x28da81(_0x2605cd[_0x588e35(0x20c)])};return{'name':_0x29b994,'value':_0x5e6e7b,'sites':_0x2605cd[_0x588e35(0x1ed)]};}async function _0x4f7a1d(_0xbd8dad,_0xbb639e,_0x359c15){const _0x214855=_0x56034a,_0x9cb007={'NqgSc':function(_0x5578a8,_0x541656){return _0x5578a8(_0x541656);},'KDpwn':function(_0x2ab1d0,_0x19b9b1,_0x2a34cf,_0x1e5e4a){return _0x2ab1d0(_0x19b9b1,_0x2a34cf,_0x1e5e4a);},'tYMbL':_0x214855(0x242),'TTTdJ':_0x214855(0x1eb),'FRBxt':function(_0x319196,_0x41ad85){return _0x319196+_0x41ad85;},'QfzWX':function(_0x2cbfd9,_0x3044a4){return _0x2cbfd9+_0x3044a4;},'twKSv':_0x214855(0x22d),'KPePO':_0x214855(0x26d)},_0x57a6ac=(0x0,_0x49d865[_0x214855(0x211)])(_0xbd8dad);if(_0x57a6ac)return _0x214855(0x26c)+_0x57a6ac;const _0x1bcd66=(0x0,_0x273ba2[_0x214855(0x223)])(_0xbb639e??[]);if(_0x1bcd66[_0x214855(0x20c)][_0x214855(0x1fe)])return _0x9cb007[_0x214855(0x27b)](_0x28da81,_0x1bcd66[_0x214855(0x20c)]);const _0x4fb13b=_0x1bcd66['sites']['length']?_0x1bcd66[_0x214855(0x1ed)]:null,_0x91a9cb=_0x4fb13b??_0x359c15[_0x214855(0x264)](_0xbd8dad),_0x38c020=await _0x359c15[_0x214855(0x1f1)](_0x9cb007[_0x214855(0x262)](_0xab02d5,_0xbd8dad,_0x91a9cb,_0x359c15[_0x214855(0x241)](_0xbd8dad)));switch(_0x38c020[_0x214855(0x1ea)]){case _0x9cb007['tYMbL']:return _0x214855(0x24a);case'timeout':return _0x214855(0x26c)+exports[_0x214855(0x21f)]+_0x214855(0x209);case _0x9cb007[_0x214855(0x21a)]:return _0x214855(0x1f4)+exports[_0x214855(0x215)]+_0x214855(0x21e);case _0x214855(0x1f8):return _0x9cb007[_0x214855(0x22b)](_0x9cb007['QfzWX'](_0x214855(0x213)+(_0x38c020[_0x214855(0x258)]?'('+_0x38c020[_0x214855(0x258)]+')':'')+'。','ユーザーに端末で\x20`'+_0x359c15['command']+_0x214855(0x1f9)+_0xbd8dad+(_0x4fb13b?_0x214855(0x22a)+_0x4fb13b[_0x214855(0x238)](','):'')+_0x214855(0x23c)),_0x214855(0x25c));}return _0x359c15[_0x214855(0x219)](_0xbd8dad,_0x38c020[_0x214855(0x23e)],_0x4fb13b),_0xbd8dad+_0x214855(0x26e)+(_0x91a9cb['length']?_0x91a9cb[_0x214855(0x238)](',\x20'):'なし')+_0x214855(0x214)+(_0x91a9cb[_0x214855(0x1fe)]?_0x9cb007[_0x214855(0x247)]:(0x0,_0x273ba2['looksLikeSiteLogin'])(_0xbd8dad)?_0x9cb007[_0x214855(0x1f7)]:'');}
@@ -1,52 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RESERVED_ENV = void 0;
4
- exports.isReservedEnvName = isReservedEnvName;
5
- exports.withoutReserved = withoutReserved;
6
- exports.secretNameError = secretNameError;
7
- // 金庫の秘密の名前の決まり(ask_secret・store_secret・CLI の secret set が同じものを使う)と、
8
- // 起動プログラム(launcher.ts)が MCP に渡す名前のうち、金庫からは差し替えられない名前(RESERVED_ENV)。
9
- //
10
- // 予約した名前を金庫に入れられると、AI が「PORTAL_URL=悪いサーバー」「HEYGEN_API_BASE=悪いサーバー」のような秘密を入れ、
11
- // 次の起動で同梱の MCP がログインのトークンや API キーをそこへ送ってしまう。だから、
12
- // - 入れる口(store_secret・ask_secret・CLI)で断る(secretNameError)
13
- // - 起動プログラムは、金庫に同じ名前があっても渡さない(withoutReserved。古い版で入ったものにも効く)
14
- const vault_1 = require("./vault");
15
- /** 起動プログラムが自分で決めて MCP に渡す名前(launcher.ts の agent-core 本体・同梱 MCP・Mod に渡すもの)。 */
16
- exports.RESERVED_ENV = [
17
- "PORTAL_URL", "TOOL_TOKEN", "TOOL_NAME", "TOOL_KEYWORD", "TOOL_LANGUAGE",
18
- "FB_MCP_CONFIG", "FB_FILL_HELPER", "FB_PROFILE",
19
- // Node.js に別のプログラムを読み込ませる名前。MCP の起動のしかたを金庫から変えさせない
20
- "NODE_OPTIONS",
21
- ];
22
- /**
23
- * 予約した名前か。RESERVED_ENV のほか、FB_ で始まる名前(FUNNY BOOTH の内部用)と、
24
- * 同梱 MCP が読む接続先(HEYGEN_API_BASE・HEYGEN_UPLOAD_BASE・MINIMAX_API_BASE のような *_BASE / *_BASE_URL)。
25
- */
26
- function isReservedEnvName(name) {
27
- return exports.RESERVED_ENV.includes(name) || /^FB_/.test(name) || /_BASE(_URL)?$/.test(name);
28
- }
29
- /** 予約した名前を除いた秘密(起動プログラムが MCP に渡す材料)。 */
30
- function withoutReserved(secrets) {
31
- return Object.fromEntries(Object.entries(secrets).filter(([n]) => !isReservedEnvName(n)));
32
- }
33
- /**
34
- * 新しく入れる秘密の名前を確かめる。だめなら理由(日本語1行)、よければ null。
35
- * 今までの名前(日本語・空白・括弧・@ を含むもの)は通す。断るのは、確認画面の文を偽れる制御文字・改行・見えない文字、
36
- * install_mcp の付け替え(環境変数名=金庫の名前)とぶつかる「=」、前後の空白、長すぎる名前、目印の項目と予約した名前。
37
- */
38
- function secretNameError(name) {
39
- if (!name || name.length > 128)
40
- return "名前は 1〜128 文字にしてください。";
41
- if (/[\p{C}=]/u.test(name))
42
- return "名前に改行・制御文字・見えない文字・「=」は使えません。";
43
- if (name.trim() !== name)
44
- return "名前の前後に空白は使えません。";
45
- if (name === vault_1.META_KEY || name.startsWith("funny-booth:"))
46
- return "funny-booth: で始まる名前は使えません。";
47
- if (isReservedEnvName(name)) {
48
- return `${name} はツールが自分で決める設定の名前なので、金庫には入れられません(接続先やログインを差し替えられないようにしています)。`;
49
- }
50
- return null;
51
- }
52
- //# sourceMappingURL=secretNames.js.map
1
+ 'use strict';const _0x14bc34=_0x3cc8;(function(_0xd82ad8,_0x1513af){const _0x460f6b=_0x3cc8,_0x3fb25f=_0xd82ad8();while(!![]){try{const _0x3f676c=parseInt(_0x460f6b(0x11c))/0x1+-parseInt(_0x460f6b(0x12a))/0x2*(parseInt(_0x460f6b(0x136))/0x3)+-parseInt(_0x460f6b(0x125))/0x4*(-parseInt(_0x460f6b(0x13e))/0x5)+-parseInt(_0x460f6b(0x129))/0x6*(-parseInt(_0x460f6b(0x11e))/0x7)+parseInt(_0x460f6b(0x11d))/0x8*(-parseInt(_0x460f6b(0x122))/0x9)+-parseInt(_0x460f6b(0x124))/0xa*(-parseInt(_0x460f6b(0x140))/0xb)+-parseInt(_0x460f6b(0x12e))/0xc*(parseInt(_0x460f6b(0x12d))/0xd);if(_0x3f676c===_0x1513af)break;else _0x3fb25f['push'](_0x3fb25f['shift']());}catch(_0x29937e){_0x3fb25f['push'](_0x3fb25f['shift']());}}}(_0x21ed,0x57637));Object['defineProperty'](exports,_0x14bc34(0x127),{'value':!![]}),exports[_0x14bc34(0x133)]=void 0x0,exports[_0x14bc34(0x139)]=_0x2ee9a3,exports[_0x14bc34(0x11a)]=_0x304cb7,exports[_0x14bc34(0x13d)]=_0x556c3e;const _0x4925d5=require(_0x14bc34(0x12c));exports[_0x14bc34(0x133)]=['PORTAL_URL','TOOL_TOKEN','TOOL_NAME',_0x14bc34(0x117),_0x14bc34(0x13f),_0x14bc34(0x118),_0x14bc34(0x13b),_0x14bc34(0x131),_0x14bc34(0x135)];function _0x2ee9a3(_0x35b7fd){const _0x23ae10=_0x14bc34;return exports[_0x23ae10(0x133)][_0x23ae10(0x121)](_0x35b7fd)||/^FB_/[_0x23ae10(0x134)](_0x35b7fd)||/_BASE(_URL)?$/[_0x23ae10(0x134)](_0x35b7fd);}function _0x3cc8(_0x507ab9,_0x147a53){_0x507ab9=_0x507ab9-0x116;const _0x21edc=_0x21ed();let _0x3cc819=_0x21edc[_0x507ab9];if(_0x3cc8['UXjjEs']===undefined){var _0x1b95e1=function(_0x949fb3){const _0x1e9926='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3ef53f='',_0x5db86b='';for(let _0x42896d=0x0,_0x1ff82c,_0x1952be,_0x415fdd=0x0;_0x1952be=_0x949fb3['charAt'](_0x415fdd++);~_0x1952be&&(_0x1ff82c=_0x42896d%0x4?_0x1ff82c*0x40+_0x1952be:_0x1952be,_0x42896d++%0x4)?_0x3ef53f+=String['fromCharCode'](0xff&_0x1ff82c>>(-0x2*_0x42896d&0x6)):0x0){_0x1952be=_0x1e9926['indexOf'](_0x1952be);}for(let _0x35aae0=0x0,_0x33a06d=_0x3ef53f['length'];_0x35aae0<_0x33a06d;_0x35aae0++){_0x5db86b+='%'+('00'+_0x3ef53f['charCodeAt'](_0x35aae0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5db86b);};_0x3cc8['NbnLBK']=_0x1b95e1,_0x3cc8['XclGeb']={},_0x3cc8['UXjjEs']=!![];}const _0xc7d508=_0x21edc[0x0],_0x43765a=_0x507ab9+_0xc7d508,_0x40fe2f=_0x3cc8['XclGeb'][_0x43765a];return!_0x40fe2f?(_0x3cc819=_0x3cc8['NbnLBK'](_0x3cc819),_0x3cc8['XclGeb'][_0x43765a]=_0x3cc819):_0x3cc819=_0x40fe2f,_0x3cc819;}function _0x304cb7(_0x28bb11){const _0xceb7a=_0x14bc34;return Object[_0xceb7a(0x126)](Object[_0xceb7a(0x12b)](_0x28bb11)[_0xceb7a(0x11f)](([_0x3ce0f9])=>!_0x2ee9a3(_0x3ce0f9)));}function _0x556c3e(_0x5e5740){const _0x38b124=_0x14bc34,_0x57a3e5={'dOxls':function(_0x247534,_0x2cf9ce){return _0x247534>_0x2cf9ce;},'SKSVg':_0x38b124(0x120),'QXgQW':function(_0x197749,_0x2a7fae){return _0x197749!==_0x2a7fae;},'rhnhr':_0x38b124(0x119),'utQyw':function(_0x51bc33,_0x5a8348){return _0x51bc33===_0x5a8348;},'THbKF':_0x38b124(0x123),'jCegT':function(_0x5abee9,_0x13295b){return _0x5abee9(_0x13295b);}};if(!_0x5e5740||_0x57a3e5['dOxls'](_0x5e5740[_0x38b124(0x128)],0x80))return _0x38b124(0x13c);if(/[\p{C}=]/u[_0x38b124(0x134)](_0x5e5740))return _0x57a3e5['SKSVg'];if(_0x57a3e5['QXgQW'](_0x5e5740[_0x38b124(0x130)](),_0x5e5740))return _0x57a3e5[_0x38b124(0x12f)];if(_0x57a3e5[_0x38b124(0x137)](_0x5e5740,_0x4925d5['META_KEY'])||_0x5e5740[_0x38b124(0x11b)](_0x38b124(0x138)))return _0x57a3e5[_0x38b124(0x132)];if(_0x57a3e5[_0x38b124(0x13a)](_0x2ee9a3,_0x5e5740))return _0x5e5740+_0x38b124(0x116);return null;}function _0x21ed(){const _0x11e9a0=['DhjPBq','rKjFufjprKLmrq','veHIs0y','uKvtrvjwrurFru5w','DgvZDa','tK9erv9pufrjt05t','mJfpu1vOq2O','DxrrExC','zNvUBNKTyM9VDgG6','AxnszxnLCNzLzevUDK5HBwu','AKnLz1q','rKjFrKLmtf9iruXqrvi','5zcn5yMn44gVidhJGjWXmJGG5PAh5A2x44gR44gx44gM44gp44gG44gv44ge44cc','C2vJCMv0tMfTzuvYCM9Y','nuvXDe1pEG','ve9ptf9mqu5hvufhrq','ntvwrhrbyKq','ioobR+odHoodVoodQ+obJoIhQUwiHUobP+AXUUocGEocI+IOREwUMUobRUwqJEwjJEobQUobRUobP+oaGEMhKEw6Q+obQ+obR+wfPEocJoocIEocJoobVUobM+ocK++8IoAoPEE2MUwfIoocHoodREocSoocPoodS+ocKUw3RUobL+ABV+obIoocIEocJoobQUobHoocIoobHUobQ+obL+obPUobHoobVUobME+8IEoaGG','ve9ptf9lrvLxt1je','rKjFtunqx0nptKzjrW','5zcn5yMn44gU5yMn5B6m44gR56M655M944gV5l2/44gi44g+44gB44kt44cc','D2L0Ag91DfjLC2vYDMvK','C3rHCNrZv2L0Aa','mti1mdG0yNv5q0jg','og93rhrXuW','mtm4mdaYowffExrOua','zMLSDgvY','5zcn5yMn44gR5Ps56kgm44o75yI25B6H5PAh5A2x44o76kAl44gi44gQ44ge5PAh5A2x44o744cmpEoaJEobR+s9V+obIoobVUobM+ocK+oaGG','Aw5JBhvKzxm','mJa1ode4m1vpseLRzW','zNvUBNKTyM9VDgG6ioobP+wNI+obVUocI+wqJEwjJEobR+s9V+obIoobVUobM+ocK+oaGG','mtaYodi5mfPlr1rTBq','mtiWmZu2me5QEufxra','zNjVBuvUDhjPzxm','x19LC01VzhvSzq','BgvUz3rO','nKnirMrbsG','mti1otaWCMPrBwXi','zw50CMLLCW','lI92yxvSDa','ndC2nJa2wxfrDhvJ','mZzzvgHLuum','CMHUAhi'];_0x21ed=function(){return _0x11e9a0;};return _0x21ed();}
@@ -1,72 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRE_MOD = exports.REDACT_MIN = void 0;
4
- exports.preBase = preBase;
5
- exports.preHash = preHash;
6
- exports.fingerprint = fingerprint;
7
- exports.secretPrints = secretPrints;
8
- exports.parseKey = parseKey;
9
- // FUNNY BOOTH の Mod(mod/hooks/register.js)が道具の結果から秘密の値を伏せるための「指紋」を作る入口。
10
- // `node secretPrints.js` を Mod が起動し、標準入力に {"key": "<このセッションだけの乱数 64 桁>"} を渡す。
11
- // 標準出力には値を一切出さない。出すのは、6 文字以上の秘密ごとの
12
- // 名前・長さ・pre(値の短い目印。16 ビットだけなので値は戻せない)・fp(key と値をつないだ SHA-256)
13
- // と、金庫のファイルの場所(Mod が書き換わりを見て読み直すため)だけ。
14
- // Mod は結果の文を長さごとに少しずつずらしながら pre で候補を絞り、候補だけ fp を計算して一致を確かめる(mod/hooks/redact.js)。
15
- //
16
- // 以前は値そのものを並べて出す入口(secretValues.js)だったため、AI が Bash で動かせば金庫の中身を全部読めた(第5回 セキュリティチェック)。
17
- // 今は AI がこれを動かしても指紋しか得られない(key は自分で選べるので、弱いパスワードは総当たりで当てられうる。壁ではなく手間を増やす守り)。
18
- const crypto_1 = require("crypto");
19
- const fs_1 = require("fs");
20
- const vault_1 = require("./vault");
21
- /** これより短い値は伏せない(普通の文字まで伏せてしまうため)。 */
22
- exports.REDACT_MIN = 6;
23
- /** pre を割る素数(2^16 未満で最大)。mod/hooks/redact.js と同じ値。 */
24
- exports.PRE_MOD = 65521;
25
- /** pre の多項式の底。key から決める(セッションごとに変わる)。mod/hooks/redact.js と同じ計算。 */
26
- function preBase(key) {
27
- return 256 + (parseInt(key.slice(0, 8), 16) % (exports.PRE_MOD - 256));
28
- }
29
- /** 文字(UTF-16 の単位)ごとの多項式の値を PRE_MOD で割った余り。 */
30
- function preHash(s, base) {
31
- let h = 0;
32
- for (let i = 0; i < s.length; i++)
33
- h = (h * base + s.charCodeAt(i)) % exports.PRE_MOD;
34
- return h;
35
- }
36
- function fingerprint(key, value) {
37
- return (0, crypto_1.createHash)("sha256").update(key + value, "utf8").digest("hex");
38
- }
39
- /** 6 文字以上の秘密の指紋(長い値から)。 */
40
- function secretPrints(secrets, key) {
41
- const base = preBase(key);
42
- return Object.entries(secrets)
43
- .filter(([, v]) => typeof v === "string" && v.length >= exports.REDACT_MIN)
44
- .sort((a, b) => b[1].length - a[1].length)
45
- .map(([name, v]) => ({ name, len: v.length, pre: preHash(v, base), fp: fingerprint(key, v) }));
46
- }
47
- /** 標準入力の {"key"} を読む。64 桁の 16 進数でなければ null。 */
48
- function parseKey(text) {
49
- try {
50
- const key = JSON.parse(text).key;
51
- return typeof key === "string" && /^[0-9a-f]{64}$/.test(key) ? key : null;
52
- }
53
- catch {
54
- return null;
55
- }
56
- }
57
- if (require.main === module) {
58
- const key = parseKey((0, fs_1.readFileSync)(0, "utf-8"));
59
- if (!key) {
60
- process.stderr.write("標準入力に {\"key\": \"<64 桁の 16 進数>\"} を渡してください\n");
61
- process.exit(1);
62
- }
63
- // 金庫を読めないときは理由(値を含まない)を標準エラーに出して非0で終わる(Mod が画面に残す)
64
- try {
65
- process.stdout.write(JSON.stringify({ file: (0, vault_1.secretsFile)(), prints: secretPrints((0, vault_1.readSecrets)(), key) }));
66
- }
67
- catch (e) {
68
- process.stderr.write(`${e.message}\n`);
69
- process.exit(1);
70
- }
71
- }
72
- //# sourceMappingURL=secretPrints.js.map
1
+ 'use strict';const _0x2f7c6e=_0x4336;function _0x4336(_0x3b2ade,_0x583085){_0x3b2ade=_0x3b2ade-0x193;const _0x5e27c3=_0x5e27();let _0x4336d3=_0x5e27c3[_0x3b2ade];if(_0x4336['CFvKon']===undefined){var _0x263a8b=function(_0x265758){const _0x154ecb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a1af5='',_0x395e81='';for(let _0x3c40ca=0x0,_0xb21bd8,_0x480053,_0x5eb8c8=0x0;_0x480053=_0x265758['charAt'](_0x5eb8c8++);~_0x480053&&(_0xb21bd8=_0x3c40ca%0x4?_0xb21bd8*0x40+_0x480053:_0x480053,_0x3c40ca++%0x4)?_0x3a1af5+=String['fromCharCode'](0xff&_0xb21bd8>>(-0x2*_0x3c40ca&0x6)):0x0){_0x480053=_0x154ecb['indexOf'](_0x480053);}for(let _0x56d0ba=0x0,_0x48caeb=_0x3a1af5['length'];_0x56d0ba<_0x48caeb;_0x56d0ba++){_0x395e81+='%'+('00'+_0x3a1af5['charCodeAt'](_0x56d0ba)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x395e81);};_0x4336['nfKufe']=_0x263a8b,_0x4336['NNAiEW']={},_0x4336['CFvKon']=!![];}const _0x2bf5f2=_0x5e27c3[0x0],_0x2fac82=_0x3b2ade+_0x2bf5f2,_0x44e941=_0x4336['NNAiEW'][_0x2fac82];return!_0x44e941?(_0x4336d3=_0x4336['nfKufe'](_0x4336d3),_0x4336['NNAiEW'][_0x2fac82]=_0x4336d3):_0x4336d3=_0x44e941,_0x4336d3;}function _0x5e27(){const _0x8135ae=['otiZnZDeBfb2q1O','CgfYC2vlzxK','C2XPy2u','rvPgvg0','vwjIwuC','CMvHzezPBgvtEw5J','C2HHmJu2','BwfPBG','Agv4','C3rKzxjY','C2vJCMv0C0zPBgu','mZmXnte2mePLte5RAG','C29YDa','DxrMoa','ogvOvgPztq','n1HRvgfJCq','ndq3nJy2Agzervvq','5QIz5RQw5ywL5yQB44gRihSIA2v5iJOGiJW2ncdMOyhJGA4GmtyG6ycY5PwWpIj9ioocKUA4OEobL+obPUobJ+obOoobLEobHaO','BwvZC2fNzq','D3jPDgu','C2jhDuy','thLtrhG','mZeYmJu1meDTsMz4CW','DxrMltG','BfDyq2S','zxHPDa','DxbKyxrL','ChjLsgfZAa','CxHsv3G','DgvZDa','y2HHCKnVzgvbDa','mte2nZK5ntrRuvjsu1q','C3rKB3v0','mtjNA0PqrvG','C3rYAw5NAwz5','rgDntuu','C3rYAw5N','zgLNzxn0','zgvMAw5LuhjVCgvYDhK','uKvequnux01jtG','x19LC01VzhvSzq','ufjfx01pra','nZaXmJq1q01kufbc','BwfW','CgfYC2u','AfPyDu8','A2v5','y3jLyxrLsgfZAa','ovnctwvnzG','C2jVs0S','lI92yxvSDa','mZm0otuWre1qCezs','BgvUz3rO','zMLSDgvY'];_0x5e27=function(){return _0x8135ae;};return _0x5e27();}(function(_0x3d76df,_0xbdab07){const _0x3cda5a=_0x4336,_0x23076a=_0x3d76df();while(!![]){try{const _0x4ea59d=parseInt(_0x3cda5a(0x196))/0x1*(-parseInt(_0x3cda5a(0x1b7))/0x2)+parseInt(_0x3cda5a(0x193))/0x3+parseInt(_0x3cda5a(0x1a4))/0x4*(-parseInt(_0x3cda5a(0x1c0))/0x5)+parseInt(_0x3cda5a(0x1a6))/0x6*(-parseInt(_0x3cda5a(0x1a5))/0x7)+parseInt(_0x3cda5a(0x1a1))/0x8*(parseInt(_0x3cda5a(0x1c6))/0x9)+-parseInt(_0x3cda5a(0x1ac))/0xa+parseInt(_0x3cda5a(0x1b5))/0xb;if(_0x4ea59d===_0xbdab07)break;else _0x23076a['push'](_0x23076a['shift']());}catch(_0x1ef52c){_0x23076a['push'](_0x23076a['shift']());}}}(_0x5e27,0x59699));Object[_0x2f7c6e(0x1bc)](exports,_0x2f7c6e(0x1be),{'value':!![]}),exports[_0x2f7c6e(0x1bf)]=exports['REDACT_MIN']=void 0x0,exports['preBase']=_0x1bac53,exports[_0x2f7c6e(0x1b1)]=_0x2ce646,exports['fingerprint']=_0x12310e,exports['secretPrints']=_0x13d8f4,exports[_0x2f7c6e(0x197)]=_0x425a09;const _0x324bc3=require('crypto'),_0x4ce424=require('fs'),_0x27ab05=require(_0x2f7c6e(0x1c8));exports[_0x2f7c6e(0x1bd)]=0x6,exports[_0x2f7c6e(0x1bf)]=0xfff1;function _0x1bac53(_0x1d8fcf){const _0x46630a=_0x2f7c6e,_0xb830c5={'LySDx':function(_0x42228d,_0x4545f9){return _0x42228d%_0x4545f9;},'sboKK':function(_0x4ebc64,_0x20c72d,_0x568527){return _0x4ebc64(_0x20c72d,_0x568527);},'DgMME':function(_0x3cd77a,_0x487703){return _0x3cd77a-_0x487703;}};return 0x100+_0xb830c5[_0x46630a(0x1ab)](_0xb830c5[_0x46630a(0x1c7)](parseInt,_0x1d8fcf[_0x46630a(0x198)](0x0,0x8),0x10),_0xb830c5[_0x46630a(0x1b9)](exports['PRE_MOD'],0x100));}function _0x2ce646(_0x230bb7,_0x4bbfeb){const _0x4cfa4e=_0x2f7c6e,_0xe37d6e={'lWXCk':function(_0xb53913,_0x15b98f){return _0xb53913*_0x15b98f;}};let _0x374bb2=0x0;for(let _0x4ce60e=0x0;_0x4ce60e<_0x230bb7['length'];_0x4ce60e++)_0x374bb2=(_0xe37d6e[_0x4cfa4e(0x1ae)](_0x374bb2,_0x4bbfeb)+_0x230bb7[_0x4cfa4e(0x1b4)](_0x4ce60e))%exports[_0x4cfa4e(0x1bf)];return _0x374bb2;}function _0x12310e(_0x569fec,_0x4a98d5){const _0x1e5222=_0x2f7c6e,_0x1d8bbc={'EZFTm':_0x1e5222(0x19c),'hZXuO':_0x1e5222(0x1a3),'qxRWx':_0x1e5222(0x19e)};return(0x0,_0x324bc3[_0x1e5222(0x1c5)])(_0x1d8bbc[_0x1e5222(0x199)])[_0x1e5222(0x1b0)](_0x569fec+_0x4a98d5,_0x1d8bbc[_0x1e5222(0x1c3)])[_0x1e5222(0x1bb)](_0x1d8bbc[_0x1e5222(0x1b2)]);}function _0x13d8f4(_0x1259db,_0x5dc1d0){const _0x8ea09c=_0x2f7c6e,_0x5479db={'UbbYG':function(_0x5967fa,_0xce2849){return _0x5967fa(_0xce2849);}},_0x55e65d=_0x5479db[_0x8ea09c(0x19a)](_0x1bac53,_0x5dc1d0);return Object['entries'](_0x1259db)[_0x8ea09c(0x195)](([,_0x2869a4])=>typeof _0x2869a4===_0x8ea09c(0x1ba)&&_0x2869a4['length']>=exports[_0x8ea09c(0x1bd)])[_0x8ea09c(0x1a2)]((_0x2b1447,_0x23d74e)=>_0x23d74e[0x1]['length']-_0x2b1447[0x1]['length'])[_0x8ea09c(0x1c1)](([_0x755e26,_0x13707e])=>({'name':_0x755e26,'len':_0x13707e[_0x8ea09c(0x194)],'pre':_0x2ce646(_0x13707e,_0x55e65d),'fp':_0x12310e(_0x5dc1d0,_0x13707e)}));}function _0x425a09(_0x1f6d5e){const _0x210382=_0x2f7c6e,_0x21cef3={'sbGuF':function(_0x68d617,_0x3f2c11){return _0x68d617===_0x3f2c11;}};try{const _0x3d7344=JSON[_0x210382(0x1c2)](_0x1f6d5e)[_0x210382(0x1c4)];return _0x21cef3[_0x210382(0x1aa)](typeof _0x3d7344,_0x210382(0x1ba))&&/^[0-9a-f]{64}$/[_0x210382(0x1b3)](_0x3d7344)?_0x3d7344:null;}catch{return null;}}if(require[_0x2f7c6e(0x19d)]===module){const _0x2fb603=_0x425a09((0x0,_0x4ce424[_0x2f7c6e(0x19b)])(0x0,_0x2f7c6e(0x1ad)));!_0x2fb603&&(process[_0x2f7c6e(0x19f)][_0x2f7c6e(0x1a9)](_0x2f7c6e(0x1a7)),process[_0x2f7c6e(0x1af)](0x1));try{process[_0x2f7c6e(0x1b6)][_0x2f7c6e(0x1a9)](JSON[_0x2f7c6e(0x1b8)]({'file':(0x0,_0x27ab05[_0x2f7c6e(0x1a0)])(),'prints':_0x13d8f4((0x0,_0x27ab05['readSecrets'])(),_0x2fb603)}));}catch(_0x2ed79d){process[_0x2f7c6e(0x19f)]['write'](_0x2ed79d[_0x2f7c6e(0x1a8)]+'\x0a'),process[_0x2f7c6e(0x1af)](0x1);}}
@@ -1,53 +1 @@
1
- "use strict";
2
- // 秘密を「入れてよいサイト」(受付箱 b1b7ce1b)。ブラウザの入力欄へ値を見せずに入れる道具(playwright-profile-mcp の
3
- // browser_fill_secret)は、ここに登録したサイトのページにしか入れない。悪いページの文に騙されても他のサイトへは入らない。
4
- // 登録はドメイン名(例: example.com)。そのドメインと、その下のサブドメイン(login.example.com 等)で使える。
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.normalizeSite = normalizeSite;
7
- exports.siteAllows = siteAllows;
8
- exports.normalizeSites = normalizeSites;
9
- exports.looksLikeSiteLogin = looksLikeSiteLogin;
10
- /** 入力(URL・ドメイン)をドメイン名にそろえる。ドメインと読めなければ null。 */
11
- function normalizeSite(input) {
12
- let s = input.trim().toLowerCase();
13
- if (!s)
14
- return null;
15
- if (/^[a-z][a-z0-9+.-]*:\/\//.test(s)) {
16
- try {
17
- s = new URL(s).hostname;
18
- }
19
- catch {
20
- return null;
21
- }
22
- }
23
- s = s.replace(/\/.*$/, "").replace(/:\d+$/, "").replace(/^\*\./, "").replace(/\.$/, "");
24
- if (s === "localhost")
25
- return s;
26
- return /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/.test(s) ? s : null;
27
- }
28
- /** そのホスト名のページで使ってよいか(登録したドメインそのもの、またはそのサブドメイン)。 */
29
- function siteAllows(sites, hostname) {
30
- const h = hostname.toLowerCase();
31
- return sites.some((s) => h === s || h.endsWith(`.${s}`));
32
- }
33
- /** 渡されたサイトをそろえる。読めないものがあれば bad に並べる(そのときは保存しない)。 */
34
- function normalizeSites(inputs) {
35
- const sites = [];
36
- const bad = [];
37
- for (const s of inputs) {
38
- const n = normalizeSite(s);
39
- if (!n)
40
- bad.push(s);
41
- else if (!sites.includes(n))
42
- sites.push(n);
43
- }
44
- return { sites, bad };
45
- }
46
- // サイトのログインに使う秘密らしい名前(list_secrets で「入れてよいサイト:未設定」と目印を付け、AI にユーザーへ確かめさせる)。
47
- // API キーやトークンは入力欄に入れるものではないので外す
48
- const LOGIN_NAME = /PASS(WORD|WD)?|(^|[^A-Z])PW([^A-Z]|$)|PWD|LOGIN|SIGN_?IN|ACCOUNT|パスワード|ログイン|アカウント|暗証/i;
49
- const NOT_LOGIN = /API|TOKEN|(^|[^A-Z])KEY([^A-Z]|$)|SECRET_KEY|WEBHOOK/i;
50
- function looksLikeSiteLogin(name) {
51
- return LOGIN_NAME.test(name) && !NOT_LOGIN.test(name);
52
- }
53
- //# sourceMappingURL=secretSites.js.map
1
+ 'use strict';const _0x2bda88=_0x344e;(function(_0x4a0e44,_0xb41df3){const _0x30abf0=_0x344e,_0x24a760=_0x4a0e44();while(!![]){try{const _0x3249fe=-parseInt(_0x30abf0(0x1cf))/0x1+-parseInt(_0x30abf0(0x1d2))/0x2+parseInt(_0x30abf0(0x1d8))/0x3*(parseInt(_0x30abf0(0x1d4))/0x4)+-parseInt(_0x30abf0(0x1d6))/0x5+-parseInt(_0x30abf0(0x1d3))/0x6+-parseInt(_0x30abf0(0x1ce))/0x7+parseInt(_0x30abf0(0x1d1))/0x8;if(_0x3249fe===_0xb41df3)break;else _0x24a760['push'](_0x24a760['shift']());}catch(_0x3ed420){_0x24a760['push'](_0x24a760['shift']());}}}(_0x5476,0xb23de));Object[_0x2bda88(0x1da)](exports,_0x2bda88(0x1cc),{'value':!![]}),exports[_0x2bda88(0x1d9)]=_0x31db7e,exports['siteAllows']=_0x5952ba,exports['normalizeSites']=_0x3f6393,exports[_0x2bda88(0x1d5)]=_0x253510;function _0x31db7e(_0x338f18){const _0x454356=_0x2bda88;let _0x2922ca=_0x338f18[_0x454356(0x1dc)]()[_0x454356(0x1d0)]();if(!_0x2922ca)return null;if(/^[a-z][a-z0-9+.-]*:\/\//[_0x454356(0x1cb)](_0x2922ca))try{_0x2922ca=new URL(_0x2922ca)['hostname'];}catch{return null;}_0x2922ca=_0x2922ca[_0x454356(0x1db)](/\/.*$/,'')[_0x454356(0x1db)](/:\d+$/,'')[_0x454356(0x1db)](/^\*\./,'')['replace'](/\.$/,'');if(_0x2922ca==='localhost')return _0x2922ca;return/^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/[_0x454356(0x1cb)](_0x2922ca)?_0x2922ca:null;}function _0x5476(){const _0x47a259=['DhjPBq','DgvZDa','x19LC01VzhvSzq','zw5KC1DPDgG','mJqXnZG3me5wBNvJvG','mti2mJiYnuLHvKDPDa','Dg9mB3DLCKnHC2u','mJK4ody5mJHkwejiDNq','mtqZntmXng5YwMTosq','nJiZotm0nMHyA0Hesa','nZq4nfHgzLjZrW','Bg9VA3nmAwTLu2L0zuXVz2LU','ndKYoti3mhrPwwHTDW','Aw5JBhvKzxm','mJe1n09tuvb6CW','BM9YBwfSAxPLu2L0zq','zgvMAw5LuhjVCgvYDhK','CMvWBgfJzq'];_0x5476=function(){return _0x47a259;};return _0x5476();}function _0x5952ba(_0xa312c1,_0x51b112){const _0x3b8d06=_0x2bda88,_0x156d89=_0x51b112[_0x3b8d06(0x1d0)]();return _0xa312c1['some'](_0x52cf21=>_0x156d89===_0x52cf21||_0x156d89[_0x3b8d06(0x1cd)]('.'+_0x52cf21));}function _0x3f6393(_0x260ed3){const _0x28f04e=_0x2bda88,_0x7a64b7=[],_0x17f71e=[];for(const _0x3f3ec6 of _0x260ed3){const _0x4b7027=_0x31db7e(_0x3f3ec6);if(!_0x4b7027)_0x17f71e['push'](_0x3f3ec6);else{if(!_0x7a64b7[_0x28f04e(0x1d7)](_0x4b7027))_0x7a64b7['push'](_0x4b7027);}}return{'sites':_0x7a64b7,'bad':_0x17f71e};}function _0x344e(_0x5ca1fe,_0x47478a){_0x5ca1fe=_0x5ca1fe-0x1cb;const _0x547669=_0x5476();let _0x344ebb=_0x547669[_0x5ca1fe];if(_0x344e['yTtDcb']===undefined){var _0xbf7be=function(_0x344559){const _0x1b82b9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56731e='',_0x44b711='';for(let _0x5985b0=0x0,_0x51b197,_0x1390a4,_0x402a7e=0x0;_0x1390a4=_0x344559['charAt'](_0x402a7e++);~_0x1390a4&&(_0x51b197=_0x5985b0%0x4?_0x51b197*0x40+_0x1390a4:_0x1390a4,_0x5985b0++%0x4)?_0x56731e+=String['fromCharCode'](0xff&_0x51b197>>(-0x2*_0x5985b0&0x6)):0x0){_0x1390a4=_0x1b82b9['indexOf'](_0x1390a4);}for(let _0x3b72c8=0x0,_0x41557b=_0x56731e['length'];_0x3b72c8<_0x41557b;_0x3b72c8++){_0x44b711+='%'+('00'+_0x56731e['charCodeAt'](_0x3b72c8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x44b711);};_0x344e['TSThdq']=_0xbf7be,_0x344e['ihxbGq']={},_0x344e['yTtDcb']=!![];}const _0x271d34=_0x547669[0x0],_0x13031c=_0x5ca1fe+_0x271d34,_0x514cfe=_0x344e['ihxbGq'][_0x13031c];return!_0x514cfe?(_0x344ebb=_0x344e['TSThdq'](_0x344ebb),_0x344e['ihxbGq'][_0x13031c]=_0x344ebb):_0x344ebb=_0x514cfe,_0x344ebb;}const _0x21bd5e=/PASS(WORD|WD)?|(^|[^A-Z])PW([^A-Z]|$)|PWD|LOGIN|SIGN_?IN|ACCOUNT|パスワード|ログイン|アカウント|暗証/i,_0x28055a=/API|TOKEN|(^|[^A-Z])KEY([^A-Z]|$)|SECRET_KEY|WEBHOOK/i;function _0x253510(_0x224fa3){const _0x356a6d=_0x2bda88;return _0x21bd5e[_0x356a6d(0x1cb)](_0x224fa3)&&!_0x28055a[_0x356a6d(0x1cb)](_0x224fa3);}