@funny-booth/agent-core 0.1.51 → 0.1.53
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/LICENSE +39 -0
- package/dist/approval.js +1 -219
- package/dist/extraMcps.js +1 -1
- package/dist/feedback.js +1 -1
- package/dist/fillSecretHelper.js +1 -51
- package/dist/index.js +1 -1
- package/dist/knowledgeForMod.js +1 -31
- package/dist/launcher.js +1 -1
- package/dist/mcpPackages.js +1 -1
- package/dist/mod/hooks/knowledgeText.js +1 -0
- package/dist/mod/hooks/look.js +1 -0
- package/dist/mod/hooks/redact.js +1 -0
- package/dist/mod/hooks/register.js +1 -0
- package/dist/mod/hooks/vaultGate.js +1 -0
- package/dist/mod/hooks/words.js +1 -0
- package/dist/portalClient.d.ts +1 -2
- package/dist/portalClient.js +1 -117
- package/dist/prompt.js +1 -65
- package/dist/secretExec.js +1 -174
- package/dist/secretInput.js +1 -198
- package/dist/secretNames.js +1 -52
- package/dist/secretPrints.js +1 -72
- package/dist/secretSites.js +1 -53
- package/dist/secretTools.js +1 -156
- package/dist/selfUpdate.js +1 -0
- package/dist/vault.d.ts +1 -15
- package/dist/vault.js +1 -565
- package/dist/waitingHook.js +1 -101
- package/package.json +5 -5
- package/mod/hooks/knowledgeText.js +0 -13
- package/mod/hooks/look.js +0 -81
- package/mod/hooks/redact.js +0 -98
- package/mod/hooks/register.js +0 -340
- package/mod/hooks/vaultGate.js +0 -54
- package/mod/hooks/words.js +0 -125
- package/mod/tsconfig.json +0 -3
- /package/{mod → dist/mod}/.claude-plugin/plugin.json +0 -0
- /package/{mod → dist/mod}/hooks/hooks.json +0 -0
- /package/{mod → dist/mod}/package.json +0 -0
package/dist/secretInput.js
CHANGED
|
@@ -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 _0x60057e=_0x4416;(function(_0x4a898c,_0x43f267){const _0x4ab1c5=_0x4416,_0x16da09=_0x4a898c();while(!![]){try{const _0x331812=parseInt(_0x4ab1c5(0x141))/0x1+-parseInt(_0x4ab1c5(0x19a))/0x2*(parseInt(_0x4ab1c5(0x16b))/0x3)+-parseInt(_0x4ab1c5(0x1b5))/0x4*(-parseInt(_0x4ab1c5(0x172))/0x5)+parseInt(_0x4ab1c5(0x161))/0x6*(parseInt(_0x4ab1c5(0x19c))/0x7)+parseInt(_0x4ab1c5(0x157))/0x8+-parseInt(_0x4ab1c5(0x1d1))/0x9*(parseInt(_0x4ab1c5(0x14a))/0xa)+parseInt(_0x4ab1c5(0x18e))/0xb;if(_0x331812===_0x43f267)break;else _0x16da09['push'](_0x16da09['shift']());}catch(_0xedc39b){_0x16da09['push'](_0x16da09['shift']());}}}(_0x5da8,0x7c870));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports[_0x60057e(0x166)]=exports[_0x60057e(0x1a8)]=exports[_0x60057e(0x154)]=exports['INPUT_TIMEOUT_SEC']=void 0x0,exports[_0x60057e(0x190)]=_0x51fa68,exports[_0x60057e(0x144)]=_0x356edf,exports[_0x60057e(0x168)]=_0x120099,exports[_0x60057e(0x1a6)]=_0x25e9bf,exports[_0x60057e(0x1ba)]=_0x90f278,exports[_0x60057e(0x1c2)]=_0x310872,exports[_0x60057e(0x158)]=_0x340377;const _0x36e001=require('child_process'),_0xbc862=require(_0x60057e(0x1ab)),_0x3d37b2=require('./secretNames'),_0x40b838=require(_0x60057e(0x192));exports[_0x60057e(0x1b2)]=0x78,exports[_0x60057e(0x154)]='保存',exports['CANCEL_LABEL']='キャンセル';const _0x52bd27=_0x60057e(0x1c3),_0x226d89=_0x60057e(0x178),_0x1349b5='GAVE_UP';function _0x51fa68(_0x1dafc3,_0xe2ca96,_0x4978e4,_0x563300=exports['INPUT_TIMEOUT_SEC']){const _0x170994=_0x60057e,_0x5819f7={'FGiID':function(_0x57c827,_0x4d96c2){return _0x57c827+_0x4d96c2;},'YnmcD':'※\x20この名前の秘密はすでにあります。保存すると上書きします。\x0a'};return _0x5819f7[_0x170994(0x1bb)](_0x5819f7[_0x170994(0x1bb)](_0x5819f7[_0x170994(0x1bb)](_0x5819f7['FGiID'](_0x170994(0x151)+exports[_0x170994(0x154)]+'」を押してください。\x0a\x0a',_0x170994(0x162)+_0x1dafc3+'\x0a'),_0x170994(0x196)+(_0xe2ca96[_0x170994(0x14e)]?_0xe2ca96[_0x170994(0x156)](',\x20'):'なし')+'\x0a')+(_0x4978e4?_0x5819f7[_0x170994(0x18f)]:''),_0x170994(0x1bd)),'('+_0x563300+_0x170994(0x185));}function _0x356edf(_0x5a5c29,_0x31c476,_0x1f6da3,_0x4f2861,_0x43c8ee=exports[_0x60057e(0x1b2)]){const _0x3e53fe=_0x60057e,_0x3611cc={'ePtuQ':function(_0x5164c6,_0x5b3b47){return _0x5164c6+_0x5b3b47;},'InSeR':function(_0x20a561,_0x2c8b03){return _0x20a561===_0x2c8b03;},'fJgKQ':_0x3e53fe(0x1c4),'myZei':_0x3e53fe(0x1af),'LMcyU':function(_0x4eed40,_0x4f4f58){return _0x4eed40(_0x4f4f58);},'SRoOJ':function(_0x3b6f61,_0x19c33f){return _0x3b6f61(_0x19c33f);},'NlJXf':_0x3e53fe(0x1a4),'RTFHD':_0x3e53fe(0x1bc),'aNAig':'--hide-text','JYdkq':_0x3e53fe(0x147),'Yzdcg':_0x3e53fe(0x177),'apXTy':'--password','hMzKf':function(_0x1514e3,_0x2ca341){return _0x1514e3*_0x2ca341;}},_0x2bb8f8=_0x3611cc[_0x3e53fe(0x16f)](_0x43c8ee,0x5)*0x3e8,_0x139d72=JSON[_0x3e53fe(0x1c0)];if(_0x3611cc[_0x3e53fe(0x15b)](_0x5a5c29,_0x3e53fe(0x176)))return{'cmd':_0x3611cc[_0x3e53fe(0x19e)],'args':['-e',_0x3611cc[_0x3e53fe(0x14d)],'-e',_0x3611cc[_0x3e53fe(0x16f)](_0x3611cc[_0x3e53fe(0x16f)](_0x3e53fe(0x1ac)+_0x139d72(_0x52bd27)+_0x3e53fe(0x195),_0x3e53fe(0x1cc)+_0x139d72(exports[_0x3e53fe(0x1a8)])+',\x20'+_0x139d72(exports[_0x3e53fe(0x154)])+_0x3e53fe(0x199)+_0x3611cc[_0x3e53fe(0x1cb)](_0x139d72,exports[_0x3e53fe(0x154)])+_0x3e53fe(0x146)+_0x3611cc['LMcyU'](_0x139d72,exports['CANCEL_LABEL'])+'\x20'),_0x3e53fe(0x1b8)+_0x43c8ee),'-e',_0x3e53fe(0x1cf)+_0x139d72(_0x1349b5),'-e',_0x3e53fe(0x193)+_0x3611cc['SRoOJ'](_0x139d72,_0x226d89)+_0x3e53fe(0x1d4),'-e',_0x3611cc['NlJXf'],_0x31c476],'killAfterMs':_0x2bb8f8};if(_0x3611cc['InSeR'](_0x5a5c29,_0x3e53fe(0x1aa)))return(0x0,_0xbc862['windowsDialog'])({'text':_0x31c476,'title':_0x52bd27,'yes':exports[_0x3e53fe(0x154)],'no':exports[_0x3e53fe(0x1a8)],'timeoutSec':_0x43c8ee,'hiddenInput':!![]});if(!_0x1f6da3[_0x3e53fe(0x15a)]&&!_0x1f6da3[_0x3e53fe(0x1a2)])return null;if(_0x4f2861(_0x3611cc[_0x3e53fe(0x164)]))return{'cmd':_0x3e53fe(0x1bc),'args':['--entry',_0x3611cc[_0x3e53fe(0x160)],_0x3e53fe(0x183),_0x52bd27,_0x3e53fe(0x181),_0x31c476,_0x3e53fe(0x14c),exports[_0x3e53fe(0x154)],_0x3611cc[_0x3e53fe(0x1a0)],exports['CANCEL_LABEL'],_0x3e53fe(0x175)+_0x43c8ee],'killAfterMs':_0x2bb8f8};if(_0x4f2861(_0x3611cc[_0x3e53fe(0x1b3)]))return{'cmd':_0x3611cc[_0x3e53fe(0x1b3)],'args':[_0x3e53fe(0x183),_0x52bd27,_0x3611cc['apXTy'],_0x31c476],'killAfterMs':_0x3611cc['hMzKf'](_0x43c8ee,0x3e8)};return null;}function _0x120099(_0x190074){const _0x470874=_0x60057e;return _0x190074[_0x470874(0x13e)](/\r?\n$/,'');}function _0x2bbe76(_0x3804be){const _0x3da1a9=_0x60057e,_0x1ae280={'hdilJ':_0x3da1a9(0x15e)};return _0x3804be===''?{'status':_0x1ae280[_0x3da1a9(0x145)]}:{'status':'value','value':_0x3804be};}function _0x25e9bf(_0x391eb8,_0x2581d7,_0x4d35b3=''){const _0x217417=_0x60057e,_0x30b433={'ebqBD':_0x217417(0x176),'BfBqV':_0x217417(0x1d3),'UpXLe':function(_0x295ec1,_0x35fd55){return _0x295ec1(_0x35fd55);},'gYSEM':function(_0x3a5c4d,_0x6dd3f5){return _0x3a5c4d===_0x6dd3f5;},'VMdur':_0x217417(0x19b),'pTzNl':_0x217417(0x189),'HaaNC':function(_0x33d012,_0x72c49a){return _0x33d012===_0x72c49a;},'XlvES':_0x217417(0x1b1),'RsFaT':function(_0x8647e1,_0x1b76f4){return _0x8647e1===_0x1b76f4;},'qFHxB':function(_0x95a6b1,_0x51de43){return _0x95a6b1===_0x51de43;}};if(_0x2581d7[_0x217417(0x1d0)])return{'status':_0x217417(0x19b)};const _0x3c5809=_0x2581d7['stderr'][_0x217417(0x13d)]()||_0x217417(0x186)+_0x2581d7['code'];if(_0x391eb8===_0x30b433[_0x217417(0x140)]){if(_0x2581d7[_0x217417(0x15d)]!==0x0)return/\(-128\)/[_0x217417(0x148)](_0x2581d7[_0x217417(0x16d)])?{'status':_0x30b433['BfBqV']}:{'status':_0x217417(0x1b1),'reason':_0x3c5809};const _0x2b8c5d=_0x30b433[_0x217417(0x1d2)](_0x120099,_0x2581d7[_0x217417(0x15c)]);if(_0x30b433[_0x217417(0x1c8)](_0x2b8c5d,_0x1349b5))return{'status':_0x30b433[_0x217417(0x18b)]};if(!_0x2b8c5d[_0x217417(0x149)](_0x226d89))return{'status':_0x217417(0x1b1),'reason':_0x30b433[_0x217417(0x1ae)]};return _0x2bbe76(_0x2b8c5d[_0x217417(0x1d5)](_0x226d89[_0x217417(0x14e)]));}if(_0x30b433['gYSEM'](_0x391eb8,_0x217417(0x1aa))){if(_0x30b433[_0x217417(0x1c8)](_0x2581d7[_0x217417(0x15d)],0x0))return _0x2bbe76(_0x2581d7[_0x217417(0x15c)]);if(_0x30b433['HaaNC'](_0x2581d7[_0x217417(0x15d)],_0xbc862[_0x217417(0x1c9)]))return{'status':_0x30b433[_0x217417(0x19d)]};if(_0x30b433[_0x217417(0x14b)](_0x2581d7['code'],_0xbc862[_0x217417(0x167)]))return{'status':_0x217417(0x19b)};return{'status':_0x30b433[_0x217417(0x1b4)],'reason':_0x3c5809};}if(_0x30b433['RsFaT'](_0x2581d7[_0x217417(0x15d)],0x0))return _0x30b433[_0x217417(0x1d2)](_0x2bbe76,_0x120099(_0x2581d7[_0x217417(0x15c)]));if(_0x2581d7['code']===0x1)return{'status':_0x30b433['BfBqV']};if(_0x30b433[_0x217417(0x180)](_0x4d35b3,_0x217417(0x1bc))&&_0x2581d7[_0x217417(0x15d)]===0x5)return{'status':_0x30b433['VMdur']};return{'status':_0x217417(0x1b1),'reason':_0x3c5809};}const _0x469fd4=_0x1c52cd=>{const _0x4251f7=_0x60057e,_0x37e7b8={'ItipO':_0x4251f7(0x1ad),'BmMpK':function(_0x81a9fa,_0x39a66c,_0xf2011f,_0x4478d4){return _0x81a9fa(_0x39a66c,_0xf2011f,_0x4478d4);},'mFtXZ':function(_0x4ba953,_0x46deae){return _0x4ba953===_0x46deae;},'EZEBN':'FB_NO_DIALOG','eryjS':function(_0x4435b5,_0x2fba19,_0xf89c05,_0x2f91c9,_0x75d20e){return _0x4435b5(_0x2fba19,_0xf89c05,_0x2f91c9,_0x75d20e);}},_0x24b285=process.env;if(_0x37e7b8[_0x4251f7(0x150)](_0x24b285[_0x4251f7(0x17e)],'1'))return Promise[_0x4251f7(0x187)]({'status':'unavailable','reason':_0x37e7b8[_0x4251f7(0x15f)]});const _0x5792ec=_0x37e7b8[_0x4251f7(0x1cd)](_0x356edf,process[_0x4251f7(0x1a7)],_0x1c52cd,_0x24b285,_0xdd0173=>(0x0,_0xbc862[_0x4251f7(0x169)])(_0xdd0173,_0x24b285));if(!_0x5792ec)return Promise['resolve']({'status':_0x4251f7(0x1b1)});return new Promise(_0x2ead24=>{const _0x3b8964=_0x4251f7,_0x11fdc8={'FpOIZ':_0x37e7b8[_0x3b8964(0x1be)],'UuGNz':function(_0x584d02,_0x298d54){return _0x584d02(_0x298d54);},'etAKt':function(_0x4c4a3d,_0x6a387a,_0x45b94d,_0x5ecccc){const _0x5e3533=_0x3b8964;return _0x37e7b8[_0x5e3533(0x1b7)](_0x4c4a3d,_0x6a387a,_0x45b94d,_0x5ecccc);},'tFEKP':function(_0x306510,_0x203e98){return _0x306510??_0x203e98;}};(0x0,_0x36e001[_0x3b8964(0x155)])(_0x5792ec['cmd'],_0x5792ec[_0x3b8964(0x143)],{'env':{..._0x24b285,..._0x5792ec['env']??{}},'timeout':_0x5792ec[_0x3b8964(0x188)],'windowsHide':![]},(_0x4cf4fd,_0x30ef5c,_0x3f0669)=>{const _0x58e6ac=_0x3b8964,_0x6b3445=_0x4cf4fd;if(_0x6b3445&&typeof _0x6b3445[_0x58e6ac(0x15d)]===_0x58e6ac(0x1ce)){_0x2ead24({'status':_0x58e6ac(0x1b1),'reason':_0x6b3445[_0x58e6ac(0x163)]});return;}const _0x420f95=_0x6b3445?typeof _0x6b3445[_0x58e6ac(0x15d)]===_0x11fdc8[_0x58e6ac(0x1bf)]?_0x6b3445[_0x58e6ac(0x15d)]:0x1:0x0;_0x11fdc8[_0x58e6ac(0x191)](_0x2ead24,_0x11fdc8[_0x58e6ac(0x19f)](_0x25e9bf,process[_0x58e6ac(0x1a7)],{'code':_0x420f95,'stdout':String(_0x11fdc8[_0x58e6ac(0x171)](_0x30ef5c,'')),'stderr':String(_0x3f0669??''),'killed':Boolean(_0x6b3445?.[_0x58e6ac(0x1d0)])},_0x5792ec[_0x58e6ac(0x1c5)]));});});};function _0x4416(_0x1a0755,_0x5e5d66){_0x1a0755=_0x1a0755-0x13d;const _0x5da8bb=_0x5da8();let _0x4416ea=_0x5da8bb[_0x1a0755];if(_0x4416['iucwCc']===undefined){var _0x56b8a6=function(_0x245a63){const _0x304aaa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x410027='',_0x3c1d66='';for(let _0x586237=0x0,_0xcd0979,_0x5b0a48,_0x180ae6=0x0;_0x5b0a48=_0x245a63['charAt'](_0x180ae6++);~_0x5b0a48&&(_0xcd0979=_0x586237%0x4?_0xcd0979*0x40+_0x5b0a48:_0x5b0a48,_0x586237++%0x4)?_0x410027+=String['fromCharCode'](0xff&_0xcd0979>>(-0x2*_0x586237&0x6)):0x0){_0x5b0a48=_0x304aaa['indexOf'](_0x5b0a48);}for(let _0xb9513f=0x0,_0x283f9b=_0x410027['length'];_0xb9513f<_0x283f9b;_0xb9513f++){_0x3c1d66+='%'+('00'+_0x410027['charCodeAt'](_0xb9513f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3c1d66);};_0x4416['AatlgY']=_0x56b8a6,_0x4416['QgNSte']={},_0x4416['iucwCc']=!![];}const _0x3c26a6=_0x5da8bb[0x0],_0x3fde3b=_0x1a0755+_0x3c26a6,_0x508336=_0x4416['QgNSte'][_0x3fde3b];return!_0x508336?(_0x4416ea=_0x4416['AatlgY'](_0x4416ea),_0x4416['QgNSte'][_0x3fde3b]=_0x4416ea):_0x4416ea=_0x508336,_0x4416ea;}exports['inputFromHuman']=_0x469fd4;function _0x5da8(){const _0x2d0ef6=['5ywL44km44gM44ki44ge44k144kK44oioIa','qw1vt3G','s0n2qwm','FsbKzwzHDwX0igj1DhrVBIa','nZq4mdm2wxr0DMTs','DgLTzw91Da','ntaWmJi3u1HbEeDx','qMzcCvy','zKPNs1e','zxrbs3q','sLLKA3e','y29TBwfUza','v0fzteforf9esvnqtefz','y3vYCMvUDfnPDgvZ','zw5Kihj1BG','C2vJCMv0tMfTzuvYCM9Y','Aw50zxjWCMv0sw5WDxq','CgXHDgzVCM0','q0foq0vmx0XbqKvm','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJGRxJGQtJG4JVViHZAxrLC++8IEobR+AwH+wTL+wiL+obRUMfJEwiL+obP+A4OEobL+obPUobJ+obOoobLEobHooaGG','D2LUmZi','lI9HChbYB3zHBa','C2v0ihiGDg8GzgLZCgXHEsbKAwfSB2CGkgL0zw0GmsbVzIbHCMD2ksb3AxrOihrPDgXLia','BNvTyMvY','Cfr6tMW','B24GCNvUigfYz3y','C2L0zxm','Dw5HDMfPBgfIBgu','su5qvvrFveLnru9vvf9trum','wxPKy2C','wgX2rvm','ohPWDK9erG','77Yj44cczxHHBxbSzs5JB20G44gU5B2I44gN5RIH44gx44gM44gp44gG44gv44ge44cc','qM1nCeS','z2L2Aw5NihvWigfMDgvYia','wKvYzwi','yMfKu2L0zxnuzxH0','rKDPsuq','EMvUAxr5','cUwfPEocJoobN+waPoobRYbbssdJGAVJGA/MUkhJGORJGB7JGzVJGPpVViHbssdJGA/JGylJGAJJGyVJGONJGOlOQQ3JGOhJGzRJGihJG5BJG6NJGQBJGRBJGBJJGA7LHAxLIPVJGAJJG4tJG7ZJG6VJGA7OQk3LRPRJGAVJGAdJGzhKVB/JGytJGB7JGzNVViNJGii','sxrPCe8','rNbpsvO','C3rYAw5NAwz5','yMfK','CgfYC2vtzxrszxf1zxn0','44or44k544oV44o844oj562j44gU5l+D5A2y','l3vZCI9IAw4VB3nHC2nYAxb0','y21K','tvrgv3m','ANvMt2G','z1Ltru0','v0Lox0rjquXpr19otW','5l+D5A2y44gx44gM44ge44g+44gB44ktoIa','te1JEvu','yNv0Dg9UCYb7','zxj5ALm','C3rYAw5N','AwyGz2f2zsb1CcbVzIbYihrOzw4GCMv0DxjUia','A2LSBgvK','mJq4mda3nMvms0frDG','vxbytgu','y2fUy2vS','icyGkhrLEhqGCMv0DxjUzwqGB2yGCIK','C2XPy2u','DhjPBq','CMvWBgfJzq','C3rHDhvZ','zwjXqKq','ndKXnde4uufPEwL2','zuHbAwG','yxjNCW','Aw5WDxreAwfSB2DdB21Tyw5K','AgrPBeO','ignHBMnLBcbIDxr0B24G','ls1Jyw5JzwWTBgfIzwW','DgvZDa','C3rHCNrZv2L0Aa','mtbouMjlu1e','sgfHtKm','ls1VAY1SywjLBa','BxLAzwK','BgvUz3rO','BM9YBwfSAxPLu2L0zxm','Buz0wfO','6yEr5BQR44gR56Ey5A+g44ks5l+D5A2y44gx44g+44gz44cc5ycK44ks5ywL44km44gM44cm','Aw5WDxq','44gz44gq44gRigjYB3DZzxjFzMLSBf9ZzwnYzxqG44gN5l2/44gi44g+44gz44cc','u0fwrv9mqujfta','zxHLy0zPBgu','AM9PBG','nJa5mdrkwNvnDgK','yxnRu2vJCMv0','C29Tzq','reLtueXbwq','sw5tzvi','C3rKB3v0','y29Kzq','zw1WDhK','rvPfqK4','yu5bAwC','mZbUDKz5tLO','5zcn5yMnoIa','BwvZC2fNzq','uLrgseq','EeHzyKu','Aw5WDxrgCM9TshvTyw4','v0Lox0rjquXpr19usu1ft1vu','C3rYAxbgAw5HBe5LD2XPBMu','B25qyxrO','AxnbCNjHEq','m29szu9wra','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdLKi3LIy3VViHUyw1L77Yj44gm44gc44kk44g+44gB44kt44cc','C3rKzxjY','B2jQzwn0','zvb0Dve','44cn44gm5OQ844gv44km44g+44gx44gF44cc','Dezfs1a','mty3mJyWzKXSuvzn','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdMQjNMUPBLHAxLIPVJGyWGEYjUyw1LiIWGiNzHBhvLiIWGiNnPDgvZiN0G44gU5B2I44gN44gV44gc44kk44g+44gB44kt44cc','CgfYC2u','ls10Aw1LB3v0pq','zgfYD2LU','A2rPywXVzW','vKfmvuu6','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdLGktJGyZNQBRJGA7JGB7JGB7JGiW','v2vIioocTEocPoodIoobRUodREocSoocPoodS+EuQoobQUocIEoaGEobQEobRUocTEocPoodIoobI+odPUodVoocTUodVoobQ+EIUUobI+ocGEobPIbZzxrFC2vJCMv0x3nPDgvZioobP+AXUUocGEobPUobJ+obOoobLEobHooaGG','DMfSDwu','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJG6BJG7ZJGRBJG7ZJGyZLHAxLIPVNLlVPNAlJGAFJGQ3JG6pJG7pJGRVJG6VJGzFJGB7JGzFJGz/JGii','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdMQjNMUPBLHAxLIPVJGPiGsLnptIdJGAJJGzFJGABOQQ3JGOhJGB7JGzVJGPpJGii','rKjFtK9FreLbte9h','ihnLy3jLDcbZzxqG','CuziEei','ls10zxH0','ycdJGPlLRP/OOyZJGzFJGABJGOlJGONJGApJGABJGy/JGAdJGzxJGyq','ls10AxrSzq','C2f2zq','ioENKUobP+MwIEobMooaGEs9LEocGUs/NEwTMoobL+obVUobM+ocK++8Iq','57wc5lQg44kZ44o844ojia','CMvZB2X2zq','A2LSBefMDgvYtxm','5ywL5yQB55s76z2I44gl44kj5OcD44kp44gS5B+C562u44gm6l+u44kk44g+44gx44gF','CMvHC29U','vK1KDxi','Bg9VA3nmAwTLu2L0zuXVz2LU','44oM44o844k244o844gR56UV5PYR44gNiga','mJyWmdq2nMvKEgvVuG','ww5Ty0q','Aw5WDxrnzxnZywDL','vxvhtNO','lI9ZzwnYzxrtAxrLCW','CMv0DxjUia','5l+D5A2y44gx44gM44ge44g+44gB44ktoIdJGzpJGA4GuemG44gN44gV5ywL5yQB55s76z2I44ks5yE644gB44g+44gB44kt44gN44gx44gF','igrLzMf1BhqGyw5ZD2vYiciIihDPDgGGAgLKzgvUigfUC3DLCIa'];_0x5da8=function(){return _0x2d0ef6;};return _0x5da8();}function _0x90f278(_0x38a64f){const _0x53bbbe=_0x60057e;return'保存していません:\x20サイトをドメインとして読めません('+_0x38a64f[_0x53bbbe(0x156)](',\x20')+_0x53bbbe(0x1b6);}function _0x310872(_0x45e4c3){const _0x51b766=_0x60057e,_0x546b22={'jufOh':_0x51b766(0x17d),'ZEreb':function(_0x56fed1,_0x16b203){return _0x56fed1!==_0x16b203;},'AmUOx':_0x51b766(0x16e),'Ercdb':_0x51b766(0x173),'RnwnZ':_0x51b766(0x1ce),'eHAih':function(_0x5f2cc8,_0x90e600){return _0x5f2cc8(_0x90e600);}};let _0x278ed5;try{_0x278ed5=JSON[_0x51b766(0x174)](_0x45e4c3);}catch{return{'error':_0x546b22[_0x51b766(0x1c7)]};}if(!_0x278ed5||_0x546b22[_0x51b766(0x1b9)](typeof _0x278ed5,_0x546b22[_0x51b766(0x197)])||Array[_0x51b766(0x16a)](_0x278ed5))return{'error':_0x546b22['Ercdb']};const {name:_0x4293aa,value:_0x53bbda,sites:_0x3fdcbe}=_0x278ed5;if(typeof _0x4293aa!==_0x51b766(0x1ce)||!_0x4293aa)return{'error':_0x51b766(0x16c)};if(typeof _0x53bbda!==_0x546b22['RnwnZ']||!_0x53bbda)return{'error':'保存していません:\x20値(value)が空です。'};if(_0x3fdcbe!==undefined&&(!Array[_0x51b766(0x16a)](_0x3fdcbe)||_0x3fdcbe[_0x51b766(0x159)](_0x5edc68=>typeof _0x5edc68!==_0x51b766(0x1ce))))return{'error':_0x51b766(0x1a9)};const _0x349ef7=(0x0,_0x40b838[_0x51b766(0x14f)])(_0x3fdcbe??[]);if(_0x349ef7[_0x51b766(0x1c1)][_0x51b766(0x14e)])return{'error':_0x546b22[_0x51b766(0x142)](_0x90f278,_0x349ef7['bad'])};return{'name':_0x4293aa,'value':_0x53bbda,'sites':_0x349ef7[_0x51b766(0x1b0)]};}async function _0x340377(_0x144101,_0x10ae89,_0x267729){const _0x4ce546=_0x60057e,_0x197ead={'xHYbE':function(_0x5d3fe5,_0x5727c2){return _0x5d3fe5(_0x5727c2);},'KCvAc':function(_0x35cf16,_0x10db3a,_0x2bc4c8,_0x38dbd4){return _0x35cf16(_0x10db3a,_0x2bc4c8,_0x38dbd4);},'gDrAF':'timeout','MTFWs':_0x4ce546(0x17a)},_0x2ad007=(0x0,_0x3d37b2[_0x4ce546(0x1a5)])(_0x144101);if(_0x2ad007)return _0x4ce546(0x1ca)+_0x2ad007;const _0x407aeb=(0x0,_0x40b838[_0x4ce546(0x14f)])(_0x10ae89??[]);if(_0x407aeb['bad'][_0x4ce546(0x14e)])return _0x197ead[_0x4ce546(0x165)](_0x90f278,_0x407aeb[_0x4ce546(0x1c1)]);const _0x3acd8e=_0x407aeb[_0x4ce546(0x1b0)][_0x4ce546(0x14e)]?_0x407aeb[_0x4ce546(0x1b0)]:null,_0x400e95=_0x3acd8e??_0x267729[_0x4ce546(0x1a3)](_0x144101),_0x55e345=await _0x267729[_0x4ce546(0x152)](_0x197ead[_0x4ce546(0x198)](_0x51fa68,_0x144101,_0x400e95,_0x267729['exists'](_0x144101)));switch(_0x55e345[_0x4ce546(0x13f)]){case _0x4ce546(0x1d3):return _0x4ce546(0x17c);case _0x197ead['gDrAF']:return _0x4ce546(0x1ca)+exports[_0x4ce546(0x1b2)]+'\x20秒以内に入力がありませんでした。もう一度呼ぶ前にユーザーに確かめてください。';case _0x4ce546(0x15e):return _0x4ce546(0x179)+exports[_0x4ce546(0x154)]+_0x4ce546(0x170);case _0x4ce546(0x1b1):return _0x4ce546(0x194)+(_0x55e345[_0x4ce546(0x18a)]?'('+_0x55e345[_0x4ce546(0x18a)]+')':'')+'。'+(_0x4ce546(0x18d)+_0x267729[_0x4ce546(0x1a1)]+_0x4ce546(0x17f)+_0x144101+(_0x3acd8e?'\x20--sites\x20'+_0x3acd8e[_0x4ce546(0x156)](','):'')+_0x4ce546(0x182))+'(入力は画面に表示されません)。値をチャットに貼ってもらわないでください。';}return _0x267729[_0x4ce546(0x184)](_0x144101,_0x55e345[_0x4ce546(0x17b)],_0x3acd8e),_0x144101+'\x20を保存しました(入れてよいサイト:\x20'+(_0x400e95['length']?_0x400e95['join'](',\x20'):'なし')+')。値は受け取っていません。'+(_0x400e95[_0x4ce546(0x14e)]?_0x4ce546(0x153):(0x0,_0x40b838[_0x4ce546(0x18c)])(_0x144101)?_0x197ead[_0x4ce546(0x1c6)]:'');}
|
package/dist/secretNames.js
CHANGED
|
@@ -1,52 +1 @@
|
|
|
1
|
-
|
|
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 _0x4379b0=_0x2164;(function(_0x53c58f,_0x5e7869){const _0x2a4174=_0x2164,_0x2ed95e=_0x53c58f();while(!![]){try{const _0x269569=-parseInt(_0x2a4174(0x166))/0x1+parseInt(_0x2a4174(0x167))/0x2*(parseInt(_0x2a4174(0x179))/0x3)+-parseInt(_0x2a4174(0x177))/0x4+-parseInt(_0x2a4174(0x17b))/0x5+parseInt(_0x2a4174(0x174))/0x6*(parseInt(_0x2a4174(0x175))/0x7)+parseInt(_0x2a4174(0x161))/0x8+parseInt(_0x2a4174(0x158))/0x9;if(_0x269569===_0x5e7869)break;else _0x2ed95e['push'](_0x2ed95e['shift']());}catch(_0x4819d3){_0x2ed95e['push'](_0x2ed95e['shift']());}}}(_0x1cfa,0x769bd));Object[_0x4379b0(0x163)](exports,_0x4379b0(0x171),{'value':!![]}),exports[_0x4379b0(0x15c)]=void 0x0,exports[_0x4379b0(0x17a)]=_0x5b6138,exports[_0x4379b0(0x15a)]=_0x435d89,exports['secretNameError']=_0x2ecad9;const _0x507e25=require(_0x4379b0(0x176));exports['RESERVED_ENV']=['PORTAL_URL',_0x4379b0(0x162),_0x4379b0(0x17d),_0x4379b0(0x168),'TOOL_LANGUAGE','FB_MCP_CONFIG','FB_FILL_HELPER','FB_PROFILE',_0x4379b0(0x159)];function _0x5b6138(_0xe45896){const _0x10ccd4=_0x4379b0;return exports[_0x10ccd4(0x15c)][_0x10ccd4(0x172)](_0xe45896)||/^FB_/[_0x10ccd4(0x16b)](_0xe45896)||/_BASE(_URL)?$/[_0x10ccd4(0x16b)](_0xe45896);}function _0x2164(_0x51feb7,_0x11ef68){_0x51feb7=_0x51feb7-0x157;const _0x1cfa0a=_0x1cfa();let _0x2164a9=_0x1cfa0a[_0x51feb7];if(_0x2164['SyMhVD']===undefined){var _0x32708b=function(_0x59a13f){const _0x24b50b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f7f2a='',_0x26f35a='';for(let _0x31e086=0x0,_0x459f82,_0x2d6e38,_0x35a937=0x0;_0x2d6e38=_0x59a13f['charAt'](_0x35a937++);~_0x2d6e38&&(_0x459f82=_0x31e086%0x4?_0x459f82*0x40+_0x2d6e38:_0x2d6e38,_0x31e086++%0x4)?_0x1f7f2a+=String['fromCharCode'](0xff&_0x459f82>>(-0x2*_0x31e086&0x6)):0x0){_0x2d6e38=_0x24b50b['indexOf'](_0x2d6e38);}for(let _0xbe6865=0x0,_0x4a38c5=_0x1f7f2a['length'];_0xbe6865<_0x4a38c5;_0xbe6865++){_0x26f35a+='%'+('00'+_0x1f7f2a['charCodeAt'](_0xbe6865)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x26f35a);};_0x2164['hbPyLs']=_0x32708b,_0x2164['pUTYWj']={},_0x2164['SyMhVD']=!![];}const _0x35afb2=_0x1cfa0a[0x0],_0x43c8d9=_0x51feb7+_0x35afb2,_0x34095d=_0x2164['pUTYWj'][_0x43c8d9];return!_0x34095d?(_0x2164a9=_0x2164['hbPyLs'](_0x2164a9),_0x2164['pUTYWj'][_0x43c8d9]=_0x2164a9):_0x2164a9=_0x34095d,_0x2164a9;}function _0x1cfa(){const _0x1db7dd=['DgvZDa','C3bSAxq','zNvUBNKTyM9VDgG6','mNWZFdv8nhWWFde','C3rHCNrZv2L0Aa','5zcn5yMn44gVidhJGjWXmJGG5PAh5A2x44gR44gx44gM44gp44gG44gv44ge44cc','x19LC01VzhvSzq','Aw5JBhvKzxm','zw50CMLLCW','nK5iqM9HAq','mJK2nJq4mvHxqvruBG','lI92yxvSDa','mty0mtmXnKrPDgPPqq','BNjvu1C','mZq5ofn2A2HOBG','AxnszxnLCNzLzevUDK5HBwu','mZu0mtu1mhDrDurQyW','zMLSDgvY','ve9ptf9oqu1f','5zcn5yMn44gU5yMn5B6m44gR56M655M944gV5l2/44gi44g+44gB44kt44cc','oda1ntiWn3rgA0PiuW','tK9erv9pufrjt05t','D2L0Ag91DfjLC2vYDMvK','zNvUBNKTyM9VDgG6ioobP+wNI+obVUocI+wqJEwjJEobR+s9V+obIoobVUobM+ocK+oaGG','uKvtrvjwrurFru5w','AePNvxq','tuvuqv9lrvK','zxDgr20','tfzqsMC','ndK1odKXmLDrtfvrza','ve9ptf9ut0TftG','zgvMAw5LuhjVCgvYDhK','BgvUz3rO','ioobR+odHoodVoodQ+obJoIhQUwiHUobP+AXUUocGEocI+IOREwUMUobRUwqJEwjJEobQUobRUobP+oaGEMhKEw6Q+obQ+obR+wfPEocJoocIEocJoobVUobM+ocK++8IoAoPEE2MUwfIoocHoodREocSoocPoodS+ocKUw3RUobL+ABV+obIoocIEocJoobQUobHoocIoobHUobQ+obL+obPUobHoobVUobME+8IEoaGG','odyWmdC2DLDeDLrw','otaYrfnerKjl','ve9ptf9lrvLxt1je','zNjVBuvUDhjPzxm','ufnxr1C'];_0x1cfa=function(){return _0x1db7dd;};return _0x1cfa();}function _0x435d89(_0x4f720e){const _0x4745f8=_0x4379b0;return Object[_0x4745f8(0x169)](Object[_0x4745f8(0x173)](_0x4f720e)[_0x4745f8(0x17c)](([_0x40af7f])=>!_0x5b6138(_0x40af7f)));}function _0x2ecad9(_0x3a602b){const _0xe7579e=_0x4379b0,_0x499fc4={'nrUSW':_0xe7579e(0x16e),'LVPJg':function(_0x33bc22,_0x12ab39){return _0x33bc22(_0x12ab39);},'PSWGW':function(_0x429fe2,_0x1c3c2f){return _0x429fe2>_0x1c3c2f;},'ewFGm':_0xe7579e(0x170),'hJgUt':function(_0xfa3386,_0x230c1d){return _0xfa3386===_0x230c1d;}},_0x1bb411=_0x499fc4[_0xe7579e(0x178)][_0xe7579e(0x16c)]('|');let _0x47899e=0x0;while(!![]){switch(_0x1bb411[_0x47899e++]){case'0':if(_0x499fc4[_0xe7579e(0x160)](_0x5b6138,_0x3a602b))return _0x3a602b+_0xe7579e(0x165);continue;case'1':return null;case'2':if(!_0x3a602b||_0x499fc4[_0xe7579e(0x16a)](_0x3a602b[_0xe7579e(0x164)],0x80))return _0x499fc4[_0xe7579e(0x15f)];continue;case'3':if(/[\p{C}=]/u[_0xe7579e(0x16b)](_0x3a602b))return'名前に改行・制御文字・見えない文字・「=」は使えません。';continue;case'4':if(_0x499fc4[_0xe7579e(0x15d)](_0x3a602b,_0x507e25[_0xe7579e(0x15e)])||_0x3a602b[_0xe7579e(0x16f)](_0xe7579e(0x16d)))return _0xe7579e(0x15b);continue;case'5':if(_0x3a602b['trim']()!==_0x3a602b)return _0xe7579e(0x157);continue;}break;}}
|
package/dist/secretPrints.js
CHANGED
|
@@ -1,72 +1 @@
|
|
|
1
|
-
|
|
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 _0x2cb270=_0x5bc2;function _0x5bc2(_0x2a69b7,_0x421e04){_0x2a69b7=_0x2a69b7-0x1f3;const _0x459d99=_0x459d();let _0x5bc25c=_0x459d99[_0x2a69b7];if(_0x5bc2['KUHXgX']===undefined){var _0x27fd69=function(_0x435e9a){const _0x37ec41='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xcde908='',_0x4cd40e='';for(let _0x26a09d=0x0,_0x1d9e90,_0x42ad10,_0x35489f=0x0;_0x42ad10=_0x435e9a['charAt'](_0x35489f++);~_0x42ad10&&(_0x1d9e90=_0x26a09d%0x4?_0x1d9e90*0x40+_0x42ad10:_0x42ad10,_0x26a09d++%0x4)?_0xcde908+=String['fromCharCode'](0xff&_0x1d9e90>>(-0x2*_0x26a09d&0x6)):0x0){_0x42ad10=_0x37ec41['indexOf'](_0x42ad10);}for(let _0x338047=0x0,_0x8f30eb=_0xcde908['length'];_0x338047<_0x8f30eb;_0x338047++){_0x4cd40e+='%'+('00'+_0xcde908['charCodeAt'](_0x338047)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4cd40e);};_0x5bc2['uXLkrU']=_0x27fd69,_0x5bc2['pnmiRT']={},_0x5bc2['KUHXgX']=!![];}const _0xf52e58=_0x459d99[0x0],_0x4e1cc4=_0x2a69b7+_0xf52e58,_0x312e6d=_0x5bc2['pnmiRT'][_0x4e1cc4];return!_0x312e6d?(_0x5bc25c=_0x5bc2['uXLkrU'](_0x5bc25c),_0x5bc2['pnmiRT'][_0x4e1cc4]=_0x5bc25c):_0x5bc25c=_0x312e6d,_0x5bc25c;}(function(_0x74d65b,_0x4852af){const _0x18b51e=_0x5bc2,_0x39b91e=_0x74d65b();while(!![]){try{const _0x5f2fdd=-parseInt(_0x18b51e(0x1fd))/0x1+parseInt(_0x18b51e(0x1f4))/0x2*(parseInt(_0x18b51e(0x21a))/0x3)+parseInt(_0x18b51e(0x218))/0x4*(parseInt(_0x18b51e(0x20d))/0x5)+parseInt(_0x18b51e(0x216))/0x6*(-parseInt(_0x18b51e(0x203))/0x7)+-parseInt(_0x18b51e(0x1fa))/0x8+parseInt(_0x18b51e(0x213))/0x9+-parseInt(_0x18b51e(0x201))/0xa;if(_0x5f2fdd===_0x4852af)break;else _0x39b91e['push'](_0x39b91e['shift']());}catch(_0x57d211){_0x39b91e['push'](_0x39b91e['shift']());}}}(_0x459d,0x79241));Object[_0x2cb270(0x217)](exports,_0x2cb270(0x1f8),{'value':!![]}),exports['PRE_MOD']=exports[_0x2cb270(0x212)]=void 0x0,exports[_0x2cb270(0x1fb)]=_0x350283,exports[_0x2cb270(0x1f5)]=_0x127a82,exports[_0x2cb270(0x21d)]=_0xe1ebf3,exports[_0x2cb270(0x209)]=_0x258aae,exports[_0x2cb270(0x21c)]=_0x32781f;function _0x459d(){const _0x122db0=['mtaXndqWvxPMEfbi','ChjLqMfZzq','ueXirfe','mtK2ndC1r3HHy1L4','C2vJCMv0C0zPBgu','C29YDa','DxbKyxrL','ntC5nJe2mgD1Dw9csG','DgvZDa','mJKXovHlBuLcCG','C3rKB3v0','CgfYC2u','A2v5','BgvUz3rO','CMvHzfnLy3jLDhm','C2vJCMv0uhjPBNrZ','BwfW','y2HHCKnVzgvbDa','zMLSDgvY','otvhwMDVANO','zw50CMLLCW','t05gvvK','yKTRuhe','D3jPDgu','uKvequnux01jtG','nJeZnJyZmK9szMnrra','DwXgDve','DxrMltG','mJq3oeTozuX4sq','zgvMAw5LuhjVCgvYDhK','nZG4ntzRtMTAqNO','zxHPDa','m1b4yvfdsG','C2HHmJu2','CgfYC2vlzxK','zMLUz2vYChjPBNq','C3rYAw5N','odaXntqYr25Usgfb','ChjLsgfZAa','lI92yxvSDa','C25TwMW','x19LC01VzhvSzq','5QIz5RQw5ywL5yQB44gRihSIA2v5iJOGiJW2ncdMOyhJGA4GmtyG6ycY5PwWpIj9ioocKUA4OEobL+obPUobJ+obOoobLEobHaO'];_0x459d=function(){return _0x122db0;};return _0x459d();}const _0x3b6e19=require('crypto'),_0x21c7dc=require('fs'),_0x3f8d9a=require(_0x2cb270(0x1f6));exports[_0x2cb270(0x212)]=0x6,exports['PRE_MOD']=0xfff1;function _0x350283(_0x4328a3){const _0x3ee246=_0x2cb270,_0x22b891={'mcvFX':function(_0x2d66e0,_0x2dc4d8){return _0x2d66e0+_0x2dc4d8;},'PLHDQ':function(_0x34d680,_0x3c6312,_0x5186de){return _0x34d680(_0x3c6312,_0x5186de);},'snmZl':function(_0x1e10e3,_0x466a61){return _0x1e10e3-_0x466a61;}};return _0x22b891['mcvFX'](0x100,_0x22b891[_0x3ee246(0x1fc)](parseInt,_0x4328a3['slice'](0x0,0x8),0x10)%_0x22b891[_0x3ee246(0x1f7)](exports['PRE_MOD'],0x100));}function _0x127a82(_0x12f0a5,_0x2e5db8){const _0x12b5c6=_0x2cb270,_0x2179a8={'qMzFb':function(_0x1130ec,_0x38f96c){return _0x1130ec%_0x38f96c;},'ONFUY':function(_0x16ea67,_0x24ce7b){return _0x16ea67*_0x24ce7b;}};let _0x2ce662=0x0;for(let _0x5444c7=0x0;_0x5444c7<_0x12f0a5[_0x12b5c6(0x207)];_0x5444c7++)_0x2ce662=_0x2179a8['qMzFb'](_0x2179a8[_0x12b5c6(0x20f)](_0x2ce662,_0x2e5db8)+_0x12f0a5[_0x12b5c6(0x20b)](_0x5444c7),exports['PRE_MOD']);return _0x2ce662;}function _0xe1ebf3(_0x3e298c,_0x290569){const _0x474815=_0x2cb270,_0x2c0985={'bKkPq':function(_0x59c41f,_0x27bbce){return _0x59c41f+_0x27bbce;}};return(0x0,_0x3b6e19['createHash'])(_0x474815(0x21b))[_0x474815(0x200)](_0x2c0985[_0x474815(0x210)](_0x3e298c,_0x290569),'utf8')['digest']('hex');}function _0x258aae(_0x241e0d,_0x126287){const _0x11fb80=_0x2cb270,_0xcf588e=_0x350283(_0x126287);return Object[_0x11fb80(0x20e)](_0x241e0d)[_0x11fb80(0x20c)](([,_0x4af8c7])=>typeof _0x4af8c7===_0x11fb80(0x1f3)&&_0x4af8c7[_0x11fb80(0x207)]>=exports[_0x11fb80(0x212)])[_0x11fb80(0x1ff)]((_0x4fcbc7,_0x2aafa2)=>_0x2aafa2[0x1][_0x11fb80(0x207)]-_0x4fcbc7[0x1][_0x11fb80(0x207)])[_0x11fb80(0x20a)](([_0x34160f,_0x3dcba0])=>({'name':_0x34160f,'len':_0x3dcba0[_0x11fb80(0x207)],'pre':_0x127a82(_0x3dcba0,_0xcf588e),'fp':_0xe1ebf3(_0x126287,_0x3dcba0)}));}function _0x32781f(_0x5ba828){const _0x11805e=_0x2cb270,_0x1cb741={'ulFuQ':function(_0x58b5eb,_0x3009e9){return _0x58b5eb===_0x3009e9;},'UPLEr':_0x11805e(0x1f3)};try{const _0x3b5acc=JSON[_0x11805e(0x205)](_0x5ba828)[_0x11805e(0x206)];return _0x1cb741[_0x11805e(0x214)](typeof _0x3b5acc,_0x1cb741['UPLEr'])&&/^[0-9a-f]{64}$/[_0x11805e(0x202)](_0x3b5acc)?_0x3b5acc:null;}catch{return null;}}if(require['main']===module){const _0x178d46=_0x32781f((0x0,_0x21c7dc['readFileSync'])(0x0,_0x2cb270(0x215)));!_0x178d46&&(process['stderr'][_0x2cb270(0x211)](_0x2cb270(0x1f9)),process[_0x2cb270(0x219)](0x1));try{process[_0x2cb270(0x204)][_0x2cb270(0x211)](JSON['stringify']({'file':(0x0,_0x3f8d9a[_0x2cb270(0x1fe)])(),'prints':_0x258aae((0x0,_0x3f8d9a[_0x2cb270(0x208)])(),_0x178d46)}));}catch(_0x3bcda6){process['stderr'][_0x2cb270(0x211)](_0x3bcda6['message']+'\x0a'),process['exit'](0x1);}}
|
package/dist/secretSites.js
CHANGED
|
@@ -1,53 +1 @@
|
|
|
1
|
-
|
|
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 _0x443143=_0x5f24;(function(_0x30e317,_0x58b092){const _0x3cacbf=_0x5f24,_0x53a152=_0x30e317();while(!![]){try{const _0x4a0437=-parseInt(_0x3cacbf(0x1f6))/0x1*(-parseInt(_0x3cacbf(0x1f1))/0x2)+-parseInt(_0x3cacbf(0x1f7))/0x3+parseInt(_0x3cacbf(0x1e4))/0x4*(parseInt(_0x3cacbf(0x1f4))/0x5)+parseInt(_0x3cacbf(0x1eb))/0x6*(parseInt(_0x3cacbf(0x1f5))/0x7)+parseInt(_0x3cacbf(0x1e7))/0x8*(-parseInt(_0x3cacbf(0x1e9))/0x9)+-parseInt(_0x3cacbf(0x1f0))/0xa+parseInt(_0x3cacbf(0x1e3))/0xb;if(_0x4a0437===_0x58b092)break;else _0x53a152['push'](_0x53a152['shift']());}catch(_0x476dda){_0x53a152['push'](_0x53a152['shift']());}}}(_0x2c60,0x5e81e));function _0x2c60(){const _0xb3f472=['Ag9ZDg5HBwu','mtu0ndH3ruTmyK0','C2L0zufSBg93CW','nJnZtNfVwNa','BM9YBwfSAxPLu2L0zq','nde3mhHqr1rnva','Dg9mB3DLCKnHC2u','BM9YBwfSAxPLu2L0zxm','ChvZAa','zgvMAw5LuhjVCgvYDhK','mZC1mtyYmgTurhn5wG','nJaWnZzItwfkEfe','Bg9VA3nmAwTLu2L0zuXVz2LU','Aw5JBhvKzxm','mtiYmZmWzNHVzgnL','nJiWovzcuerlzG','m0D1ugHZzq','mtuXodiZmw5gAhHmvq','CMvWBgfJzq','mtq4mZGWmwvbDLzrrW','nZjgs3PivgG','DgvZDa'];_0x2c60=function(){return _0xb3f472;};return _0x2c60();}Object[_0x443143(0x1ef)](exports,'__esModule',{'value':!![]}),exports[_0x443143(0x1ea)]=_0x191d3d,exports[_0x443143(0x1e8)]=_0x5f18f1,exports[_0x443143(0x1ed)]=_0x33c62f,exports[_0x443143(0x1f2)]=_0x5d253d;function _0x5f24(_0x4255a5,_0x5a964a){_0x4255a5=_0x4255a5-0x1e3;const _0x2c608b=_0x2c60();let _0x5f24d0=_0x2c608b[_0x4255a5];if(_0x5f24['kFouxb']===undefined){var _0x4add11=function(_0x194a63){const _0x3fe9f5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4b5078='',_0x51b732='';for(let _0x437c22=0x0,_0xeb983,_0x4b4c9c,_0x186038=0x0;_0x4b4c9c=_0x194a63['charAt'](_0x186038++);~_0x4b4c9c&&(_0xeb983=_0x437c22%0x4?_0xeb983*0x40+_0x4b4c9c:_0x4b4c9c,_0x437c22++%0x4)?_0x4b5078+=String['fromCharCode'](0xff&_0xeb983>>(-0x2*_0x437c22&0x6)):0x0){_0x4b4c9c=_0x3fe9f5['indexOf'](_0x4b4c9c);}for(let _0x43624b=0x0,_0x182381=_0x4b5078['length'];_0x43624b<_0x182381;_0x43624b++){_0x51b732+='%'+('00'+_0x4b5078['charCodeAt'](_0x43624b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51b732);};_0x5f24['WnrjfN']=_0x4add11,_0x5f24['oZxKMA']={},_0x5f24['kFouxb']=!![];}const _0x2d6a42=_0x2c608b[0x0],_0x3be491=_0x4255a5+_0x2d6a42,_0x1810f3=_0x5f24['oZxKMA'][_0x3be491];return!_0x1810f3?(_0x5f24d0=_0x5f24['WnrjfN'](_0x5f24d0),_0x5f24['oZxKMA'][_0x3be491]=_0x5f24d0):_0x5f24d0=_0x1810f3,_0x5f24d0;}function _0x191d3d(_0xd62c3f){const _0x24020c=_0x443143;let _0x42b0a5=_0xd62c3f['trim']()[_0x24020c(0x1ec)]();if(!_0x42b0a5)return null;if(/^[a-z][a-z0-9+.-]*:\/\//[_0x24020c(0x1e5)](_0x42b0a5))try{_0x42b0a5=new URL(_0x42b0a5)[_0x24020c(0x1e6)];}catch{return null;}_0x42b0a5=_0x42b0a5[_0x24020c(0x1f8)](/\/.*$/,'')['replace'](/:\d+$/,'')[_0x24020c(0x1f8)](/^\*\./,'')[_0x24020c(0x1f8)](/\.$/,'');if(_0x42b0a5==='localhost')return _0x42b0a5;return/^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/[_0x24020c(0x1e5)](_0x42b0a5)?_0x42b0a5:null;}function _0x5f18f1(_0x15dc99,_0x419e84){const _0x5d93d3=_0x443143,_0x53eb2f=_0x419e84[_0x5d93d3(0x1ec)]();return _0x15dc99['some'](_0x3aa21d=>_0x53eb2f===_0x3aa21d||_0x53eb2f['endsWith']('.'+_0x3aa21d));}function _0x33c62f(_0x5bbc59){const _0x4309d0=_0x443143,_0x5e5b5a=[],_0x4573fe=[];for(const _0x1d3ffe of _0x5bbc59){const _0x5e870c=_0x191d3d(_0x1d3ffe);if(!_0x5e870c)_0x4573fe[_0x4309d0(0x1ee)](_0x1d3ffe);else{if(!_0x5e5b5a[_0x4309d0(0x1f3)](_0x5e870c))_0x5e5b5a['push'](_0x5e870c);}}return{'sites':_0x5e5b5a,'bad':_0x4573fe};}const _0x40974e=/PASS(WORD|WD)?|(^|[^A-Z])PW([^A-Z]|$)|PWD|LOGIN|SIGN_?IN|ACCOUNT|パスワード|ログイン|アカウント|暗証/i,_0x279634=/API|TOKEN|(^|[^A-Z])KEY([^A-Z]|$)|SECRET_KEY|WEBHOOK/i;function _0x5d253d(_0x4147ea){const _0x5cb621=_0x443143;return _0x40974e[_0x5cb621(0x1e5)](_0x4147ea)&&!_0x279634[_0x5cb621(0x1e5)](_0x4147ea);}
|