@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.
- 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/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/secretTools.js
CHANGED
|
@@ -1,156 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HUMAN_SECRET_TEXT = exports.execHint = exports.HUMAN_STEP_ADVICE = void 0;
|
|
4
|
-
exports.sitesNeedingApproval = sitesNeedingApproval;
|
|
5
|
-
exports.listSecretsText = listSecretsText;
|
|
6
|
-
exports.getSecretText = getSecretText;
|
|
7
|
-
exports.storeSecretText = storeSecretText;
|
|
8
|
-
exports.setSecretSitesText = setSecretSitesText;
|
|
9
|
-
exports.setSecretHumanStepText = setSecretHumanStepText;
|
|
10
|
-
exports.deleteSecretText = deleteSecretText;
|
|
11
|
-
// 金庫の道具(list_secrets・get_secret・store_secret・set_secret_sites・set_secret_human_step・delete_secret)の中身。AI に返す文を作る。
|
|
12
|
-
// 金庫と本人の確認は deps で受け取る(index.ts が実物をつなぎ、テストは差し替える)。
|
|
13
|
-
//
|
|
14
|
-
// 守り(第5回 セキュリティチェック):
|
|
15
|
-
// - 人が入れた秘密(ask_secret の画面・CLI)は get_secret で値を返さない(ブラウザへの入力とツールの設定にだけ使う)
|
|
16
|
-
// - AI が値を上書きする・入れてよいサイトを足す・秘密を消すときは、本人に OS の確認画面で聞く(この PC のサイトだけは聞かない)
|
|
17
|
-
// - 名前の決まり(secretNameError)に合わない名前・予約した名前は入れない
|
|
18
|
-
const approval_1 = require("./approval");
|
|
19
|
-
const secretNames_1 = require("./secretNames");
|
|
20
|
-
const secretSites_1 = require("./secretSites");
|
|
21
|
-
const vault_1 = require("./vault");
|
|
22
|
-
const has = (o, k) => Object.prototype.hasOwnProperty.call(o, k);
|
|
23
|
-
const SITES_UNSET = "入れてよいサイト:未設定";
|
|
24
|
-
const HUMAN_MARK = "人が入力・AI は読めない";
|
|
25
|
-
const HUMAN_STEP_MARK = "ログインに人の手が要る";
|
|
26
|
-
/** 人の手が要るログインの前に AI がすること(browser_fill_secret の結果にも同じ趣旨を出す)。 */
|
|
27
|
-
exports.HUMAN_STEP_ADVICE = `「${HUMAN_STEP_MARK}」の秘密でログインするときは、始める前に、どこで人の操作が要るか` +
|
|
28
|
-
"(画像パズル等)をユーザーに伝えてから進めてください(途中で見つけてから頼み直さない)。";
|
|
29
|
-
/** 値を取り出さずにコマンド(curl・CLI 等)へ渡す方法(secret exec)の案内。 */
|
|
30
|
-
const execHint = (command, name = "NAME") => `コマンド(curl・CLI など)に渡すときは、端末で \`${command} secret exec ${name} -- コマンド 引数…\` を使ってください` +
|
|
31
|
-
`(値は環境変数 $${name} で渡り、実行のたびに本人の確認が出て、出力に出た値は伏せます。シェルの展開が要るなら sh -c '… "$${name}"')。`;
|
|
32
|
-
exports.execHint = execHint;
|
|
33
|
-
const HUMAN_SECRET_TEXT = (name, command) => `シークレット ${name} は人が入力したもので、AI は値を読めません(get_secret では返しません)。` +
|
|
34
|
-
"この値は、ブラウザの入力欄へ入れる browser_fill_secret と、ツール(MCP)の設定と、secret exec で動かすコマンドにだけ使えます。" +
|
|
35
|
-
(0, exports.execHint)(command, name) +
|
|
36
|
-
"値をチャットに貼ってもらったり、別の方法で取り出そうとしたりしないでください。";
|
|
37
|
-
exports.HUMAN_SECRET_TEXT = HUMAN_SECRET_TEXT;
|
|
38
|
-
function siteError(head, bad) {
|
|
39
|
-
return `${head}: サイトをドメインとして読めません(${bad.join(", ")})。example.com の形で渡してください。`;
|
|
40
|
-
}
|
|
41
|
-
/** 足すサイトのうち、本人に聞くもの(今のサイトでもう使えるもの・この PC のサイトは聞かない)。 */
|
|
42
|
-
function sitesNeedingApproval(before, after) {
|
|
43
|
-
return after.filter((s) => !(0, secretSites_1.siteAllows)(before, s) && (0, approval_1.needsApproval)(s));
|
|
44
|
-
}
|
|
45
|
-
function listSecretsText(deps) {
|
|
46
|
-
const names = Object.keys(deps.secrets());
|
|
47
|
-
if (!names.length)
|
|
48
|
-
return "保管中のシークレットはありません。ask_secret でユーザーに入れてもらえます。";
|
|
49
|
-
const sites = deps.sites();
|
|
50
|
-
const human = deps.human();
|
|
51
|
-
const steps = deps.humanSteps();
|
|
52
|
-
// サイトのログイン用らしいのにサイトが決まっていない秘密には目印を付ける(browser_fill_secret で入れられないため)
|
|
53
|
-
const line = (n) => {
|
|
54
|
-
const marks = [
|
|
55
|
-
...(human.has(n) ? [HUMAN_MARK] : []),
|
|
56
|
-
...(sites[n]?.length ? [`入れてよいサイト: ${sites[n].join(", ")}`] : (0, secretSites_1.looksLikeSiteLogin)(n) ? [SITES_UNSET] : []),
|
|
57
|
-
...(has(steps, n) ? [`${HUMAN_STEP_MARK}: ${vault_1.HUMAN_STEPS[steps[n]]}`] : []),
|
|
58
|
-
];
|
|
59
|
-
return `- ${n}${marks.length ? `(${marks.join("・")})` : ""}`;
|
|
60
|
-
};
|
|
61
|
-
const unset = names.some((n) => !sites[n]?.length && (0, secretSites_1.looksLikeSiteLogin)(n));
|
|
62
|
-
return `保管中のシークレット:\n${names.map(line).join("\n")}` + (unset
|
|
63
|
-
? `\n\n「${SITES_UNSET}」の秘密は browser_fill_secret でブラウザに入れられません。使うときは、どのサイト(ドメイン)で使うものか` +
|
|
64
|
-
"をユーザーに確かめてから set_secret_sites で決めてください(値は聞き直さない・get_secret で取り出さない)。"
|
|
65
|
-
: "") + (names.some((n) => human.has(n)) ? `\n\n「${HUMAN_MARK}」の秘密は get_secret で値を読めません。` : "") +
|
|
66
|
-
(names.some((n) => has(steps, n)) ? `\n\n${exports.HUMAN_STEP_ADVICE}` : "");
|
|
67
|
-
}
|
|
68
|
-
function getSecretText(name, deps) {
|
|
69
|
-
const secrets = deps.secrets();
|
|
70
|
-
if (!has(secrets, name)) {
|
|
71
|
-
// 「鍵が無い」と早合点して止まらないよう、別の秘密管理がありうることを示す(受付箱 b101123a)
|
|
72
|
-
return `シークレット ${name} はこの金庫(この PC の全ツール共通・list_secrets で名前を確認できる)にありません。` +
|
|
73
|
-
"プロジェクトや PC の CLAUDE.md が別の秘密管理(パスワード管理の MCP や CLI など)を指定していれば、そちらから取ってください。" +
|
|
74
|
-
"どこにも無ければユーザーに確認し、ask_secret で本人に入れてもらってください(値をチャットに貼ってもらわない)。";
|
|
75
|
-
}
|
|
76
|
-
if (deps.human().has(name))
|
|
77
|
-
return (0, exports.HUMAN_SECRET_TEXT)(name, deps.command);
|
|
78
|
-
// 入れてよいサイトが決まっている秘密(サイトのログイン用)は値を会話に出さない。ブラウザへは本人の許可を得て入れる
|
|
79
|
-
const all = deps.sites();
|
|
80
|
-
const sites = has(all, name) ? all[name] : undefined;
|
|
81
|
-
if (sites?.length) {
|
|
82
|
-
return `この秘密はサイトのログイン用です(入れてよいサイト: ${sites.join(", ")})。値は渡せません。` +
|
|
83
|
-
"ブラウザの入力欄へは browser_fill_secret を使ってください(入れる前に本人の画面で許可を求めます)。";
|
|
84
|
-
}
|
|
85
|
-
return secrets[name];
|
|
86
|
-
}
|
|
87
|
-
async function storeSecretText(name, value, sites, deps) {
|
|
88
|
-
const nameError = (0, secretNames_1.secretNameError)(name);
|
|
89
|
-
if (nameError)
|
|
90
|
-
return `保存していません: ${nameError}`;
|
|
91
|
-
const normalized = sites ? (0, secretSites_1.normalizeSites)(sites) : null;
|
|
92
|
-
if (normalized?.bad.length)
|
|
93
|
-
return siteError("保存していません", normalized.bad);
|
|
94
|
-
const overwrite = has(deps.secrets(), name);
|
|
95
|
-
const addedSites = normalized ? sitesNeedingApproval(deps.sites()[name] ?? [], normalized.sites) : [];
|
|
96
|
-
if (overwrite || addedSites.length) {
|
|
97
|
-
const d = await deps.confirm((0, approval_1.secretChangeMessage)(name, { overwrite, addedSites }));
|
|
98
|
-
if (d !== "approved")
|
|
99
|
-
return (0, approval_1.notApprovedText)("保存していません", d, deps.command);
|
|
100
|
-
}
|
|
101
|
-
deps.setSecret(name, value, "model");
|
|
102
|
-
if (normalized)
|
|
103
|
-
deps.setSites(name, normalized.sites);
|
|
104
|
-
const now = deps.sites()[name];
|
|
105
|
-
return `✅ シークレット ${name} をローカル暗号金庫に保存しました(この PC の全ツールで共通。値はこのマシンから出ません)。` +
|
|
106
|
-
(now?.length ? `入れてよいサイト: ${now.join(", ")}(すぐに browser_fill_secret で使えます)。`
|
|
107
|
-
: (0, secretSites_1.looksLikeSiteLogin)(name) ? "入れてよいサイトは未設定です。Web サイトのログイン用なら、どのサイトかユーザーに確かめて set_secret_sites で決めてください。" : "");
|
|
108
|
-
}
|
|
109
|
-
async function setSecretSitesText(name, sites, deps) {
|
|
110
|
-
if (!has(deps.secrets(), name))
|
|
111
|
-
return `シークレット ${name} は金庫にありません(list_secrets で名前を確かめてください)。`;
|
|
112
|
-
const normalized = (0, secretSites_1.normalizeSites)(sites);
|
|
113
|
-
if (normalized.bad.length)
|
|
114
|
-
return siteError("決めていません", normalized.bad);
|
|
115
|
-
const before = deps.sites()[name] ?? [];
|
|
116
|
-
// 足すときは、そのサイトへ値を入れてよいかを本人に聞く
|
|
117
|
-
const added = sitesNeedingApproval(before, normalized.sites);
|
|
118
|
-
if (added.length) {
|
|
119
|
-
const d = await deps.confirm((0, approval_1.secretChangeMessage)(name, { overwrite: false, addedSites: added }));
|
|
120
|
-
if (d !== "approved")
|
|
121
|
-
return (0, approval_1.notApprovedText)("決めていません", d, deps.command);
|
|
122
|
-
}
|
|
123
|
-
// 全部外すと get_secret で値を取り出せるようになる(人が入れた秘密は除く)。外す前に本人に聞く
|
|
124
|
-
if ((0, approval_1.clearingNeedsApproval)(before, normalized.sites) && !deps.human().has(name)) {
|
|
125
|
-
const d = await deps.confirm((0, approval_1.clearSitesMessage)(name, before));
|
|
126
|
-
if (d !== "approved")
|
|
127
|
-
return (0, approval_1.notApprovedText)("外していません", d, deps.command);
|
|
128
|
-
}
|
|
129
|
-
deps.setSites(name, normalized.sites);
|
|
130
|
-
return normalized.sites.length
|
|
131
|
-
? `✅ ${name} を入れてよいサイトを ${normalized.sites.join(", ")} にしました(すぐに browser_fill_secret で使えます。値は変えていません)。`
|
|
132
|
-
: `✅ ${name} の入れてよいサイトを外しました(browser_fill_secret では入れられなくなります。値は残っています)。`;
|
|
133
|
-
}
|
|
134
|
-
function setSecretHumanStepText(name, step, deps) {
|
|
135
|
-
if (!has(deps.secrets(), name))
|
|
136
|
-
return `シークレット ${name} は金庫にありません(list_secrets で名前を確かめてください)。`;
|
|
137
|
-
// 目印は AI が人に頼む回数を増やすだけで、値・入れてよいサイトは変えないので、本人には聞かない
|
|
138
|
-
if (step === "none") {
|
|
139
|
-
deps.setHumanStep(name, null);
|
|
140
|
-
return `✅ ${name} の「${HUMAN_STEP_MARK}」の目印を外しました。`;
|
|
141
|
-
}
|
|
142
|
-
if (!has(vault_1.HUMAN_STEPS, step))
|
|
143
|
-
return `決めていません: 種類は ${Object.keys(vault_1.HUMAN_STEPS).join(" / ")} / none のどれかで渡してください。`;
|
|
144
|
-
deps.setHumanStep(name, step);
|
|
145
|
-
return `✅ ${name} に「${HUMAN_STEP_MARK}: ${vault_1.HUMAN_STEPS[step]}」の目印を付けました。次からは、ログインを始める前にユーザーへ伝えてください。`;
|
|
146
|
-
}
|
|
147
|
-
async function deleteSecretText(name, deps) {
|
|
148
|
-
if (!has(deps.secrets(), name))
|
|
149
|
-
return `シークレット ${name} は見つかりません。`;
|
|
150
|
-
// 消すと元に戻せない(人が入れたパスワードも消える)。AI がページの文などに騙されても消せないよう、毎回本人に聞く
|
|
151
|
-
const d = await deps.confirm((0, approval_1.deleteSecretMessage)(name, { human: deps.human().has(name), sites: deps.sites()[name] ?? [] }));
|
|
152
|
-
if (d !== "approved")
|
|
153
|
-
return (0, approval_1.notApprovedText)("削除していません", d, deps.command);
|
|
154
|
-
return deps.deleteSecret(name) ? `シークレット ${name} を削除しました。` : `シークレット ${name} は見つかりません。`;
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=secretTools.js.map
|
|
1
|
+
'use strict';const _0x5aa9f2=_0xd67b;(function(_0x1227e5,_0x12f97d){const _0x185bab=_0xd67b,_0x5c594c=_0x1227e5();while(!![]){try{const _0x52d2d5=parseInt(_0x185bab(0x1f9))/0x1*(-parseInt(_0x185bab(0x1e4))/0x2)+parseInt(_0x185bab(0x215))/0x3+-parseInt(_0x185bab(0x20b))/0x4*(parseInt(_0x185bab(0x239))/0x5)+-parseInt(_0x185bab(0x1fa))/0x6+parseInt(_0x185bab(0x1de))/0x7*(-parseInt(_0x185bab(0x1e8))/0x8)+parseInt(_0x185bab(0x242))/0x9+parseInt(_0x185bab(0x1d8))/0xa;if(_0x52d2d5===_0x12f97d)break;else _0x5c594c['push'](_0x5c594c['shift']());}catch(_0x1f580d){_0x5c594c['push'](_0x5c594c['shift']());}}}(_0x59e2,0x99703));Object[_0x5aa9f2(0x228)](exports,_0x5aa9f2(0x203),{'value':!![]}),exports[_0x5aa9f2(0x1f6)]=exports[_0x5aa9f2(0x201)]=exports[_0x5aa9f2(0x1ef)]=void 0x0,exports['sitesNeedingApproval']=_0x5394fe,exports['listSecretsText']=_0x1686a5,exports['getSecretText']=_0x12b2e1,exports[_0x5aa9f2(0x212)]=_0x40181e,exports[_0x5aa9f2(0x213)]=_0x33d967,exports['setSecretHumanStepText']=_0x6ebc4d,exports[_0x5aa9f2(0x236)]=_0x1f5f5b;const _0x569080=require(_0x5aa9f2(0x219)),_0x2155f6=require(_0x5aa9f2(0x241)),_0x26a375=require(_0x5aa9f2(0x220)),_0x495e1e=require(_0x5aa9f2(0x208)),_0x6e16ac=(_0x4ee574,_0x56a92b)=>Object[_0x5aa9f2(0x1f4)][_0x5aa9f2(0x1eb)]['call'](_0x4ee574,_0x56a92b),_0x1f33e9=_0x5aa9f2(0x1dd),_0x35541a=_0x5aa9f2(0x1f8),_0x20019f='ログインに人の手が要る';exports[_0x5aa9f2(0x1ef)]='「'+_0x20019f+'」の秘密でログインするときは、始める前に、どこで人の操作が要るか'+_0x5aa9f2(0x222);const _0x29d4bf=(_0x11140d,_0x9384a6=_0x5aa9f2(0x20d))=>_0x5aa9f2(0x1f2)+_0x11140d+_0x5aa9f2(0x22b)+_0x9384a6+_0x5aa9f2(0x243)+('(値は環境変数\x20$'+_0x9384a6+_0x5aa9f2(0x23b)+_0x9384a6+_0x5aa9f2(0x23e));exports['execHint']=_0x29d4bf;const _0x459cf9=(_0x20ab5a,_0xf3710)=>_0x5aa9f2(0x227)+_0x20ab5a+_0x5aa9f2(0x21a)+_0x5aa9f2(0x209)+(0x0,exports[_0x5aa9f2(0x201)])(_0xf3710,_0x20ab5a)+'値をチャットに貼ってもらったり、別の方法で取り出そうとしたりしないでください。';exports[_0x5aa9f2(0x1f6)]=_0x459cf9;function _0x2b4529(_0x32d063,_0x2f8a5e){return _0x32d063+':\x20サイトをドメインとして読めません('+_0x2f8a5e['join'](',\x20')+')。example.com\x20の形で渡してください。';}function _0x5394fe(_0x47d2a0,_0x2ce16c){const _0x413429=_0x5aa9f2;return _0x2ce16c[_0x413429(0x205)](_0x213bfb=>!(0x0,_0x26a375[_0x413429(0x233)])(_0x47d2a0,_0x213bfb)&&(0x0,_0x569080[_0x413429(0x1ec)])(_0x213bfb));}function _0x1686a5(_0x2b1f28){const _0x3a16fb=_0x5aa9f2,_0x1cc266={'pXITJ':_0x3a16fb(0x22a),'xhFms':function(_0x64ec22,_0x1c6bae){return _0x64ec22+_0x1c6bae;}},_0x57ed32=Object[_0x3a16fb(0x238)](_0x2b1f28[_0x3a16fb(0x221)]());if(!_0x57ed32[_0x3a16fb(0x231)])return _0x1cc266[_0x3a16fb(0x206)];const _0x1af75e=_0x2b1f28[_0x3a16fb(0x217)](),_0x39917e=_0x2b1f28[_0x3a16fb(0x229)](),_0x121f83=_0x2b1f28[_0x3a16fb(0x21d)](),_0x5e5024=_0x2394d5=>{const _0x161694=_0x3a16fb,_0x4541a2=[..._0x39917e[_0x161694(0x1db)](_0x2394d5)?[_0x35541a]:[],..._0x1af75e[_0x2394d5]?.[_0x161694(0x231)]?[_0x161694(0x207)+_0x1af75e[_0x2394d5][_0x161694(0x223)](',\x20')]:(0x0,_0x26a375[_0x161694(0x20e)])(_0x2394d5)?[_0x1f33e9]:[],..._0x6e16ac(_0x121f83,_0x2394d5)?[_0x20019f+':\x20'+_0x495e1e[_0x161694(0x1ee)][_0x121f83[_0x2394d5]]]:[]];return'-\x20'+_0x2394d5+(_0x4541a2[_0x161694(0x231)]?'('+_0x4541a2['join']('・')+')':'');},_0xd4c0fe=_0x57ed32['some'](_0x47cf1d=>!_0x1af75e[_0x47cf1d]?.[_0x3a16fb(0x231)]&&(0x0,_0x26a375[_0x3a16fb(0x20e)])(_0x47cf1d));return _0x1cc266[_0x3a16fb(0x1e1)](_0x3a16fb(0x1fd)+_0x57ed32[_0x3a16fb(0x1dc)](_0x5e5024)[_0x3a16fb(0x223)]('\x0a'),_0xd4c0fe?_0x3a16fb(0x23a)+_0x1f33e9+_0x3a16fb(0x216)+'をユーザーに確かめてから\x20set_secret_sites\x20で決めてください(値は聞き直さない・get_secret\x20で取り出さない)。':'')+(_0x57ed32[_0x3a16fb(0x22c)](_0x3e0817=>_0x39917e['has'](_0x3e0817))?'\x0a\x0a「'+_0x35541a+_0x3a16fb(0x214):'')+(_0x57ed32[_0x3a16fb(0x22c)](_0x57fcc0=>_0x6e16ac(_0x121f83,_0x57fcc0))?'\x0a\x0a'+exports['HUMAN_STEP_ADVICE']:'');}function _0x12b2e1(_0x5f35e7,_0x2283e2){const _0x2529ec=_0x5aa9f2,_0x335442={'jplml':function(_0x289727,_0x12f54b){return _0x289727+_0x12f54b;},'SlSmp':function(_0x5a290f,_0x6f5187){return _0x5a290f+_0x6f5187;},'GJjbK':_0x2529ec(0x1e0)},_0x4ef8e8=_0x2283e2['secrets']();if(!_0x6e16ac(_0x4ef8e8,_0x5f35e7))return _0x335442['jplml'](_0x335442[_0x2529ec(0x200)](_0x2529ec(0x227)+_0x5f35e7+_0x2529ec(0x1d7),_0x2529ec(0x1e5)),_0x335442['GJjbK']);if(_0x2283e2[_0x2529ec(0x229)]()[_0x2529ec(0x1db)](_0x5f35e7))return(0x0,exports[_0x2529ec(0x1f6)])(_0x5f35e7,_0x2283e2[_0x2529ec(0x1f7)]);const _0x162a02=_0x2283e2['sites'](),_0x357025=_0x6e16ac(_0x162a02,_0x5f35e7)?_0x162a02[_0x5f35e7]:undefined;if(_0x357025?.[_0x2529ec(0x231)])return'この秘密はサイトのログイン用です(入れてよいサイト:\x20'+_0x357025[_0x2529ec(0x223)](',\x20')+_0x2529ec(0x21e)+'ブラウザの入力欄へは\x20browser_fill_secret\x20を使ってください(入れる前に本人の画面で許可を求めます)。';return _0x4ef8e8[_0x5f35e7];}async function _0x40181e(_0x508ec6,_0x57d5b2,_0x40cc02,_0x17f06a){const _0x3bc080=_0x5aa9f2,_0x16c45d={'yJRPp':function(_0x520a0d,_0x53543d,_0x1b059b){return _0x520a0d(_0x53543d,_0x1b059b);},'uMLmJ':_0x3bc080(0x1ea),'voSTS':_0x3bc080(0x204),'NlIGS':'model','rPADB':'入れてよいサイトは未設定です。Web\x20サイトのログイン用なら、どのサイトかユーザーに確かめて\x20set_secret_sites\x20で決めてください。'},_0x30af15=(0x0,_0x2155f6[_0x3bc080(0x1f0)])(_0x508ec6);if(_0x30af15)return _0x3bc080(0x1f3)+_0x30af15;const _0x557759=_0x40cc02?(0x0,_0x26a375['normalizeSites'])(_0x40cc02):null;if(_0x557759?.['bad']['length'])return _0x16c45d[_0x3bc080(0x21c)](_0x2b4529,_0x3bc080(0x204),_0x557759[_0x3bc080(0x20f)]);const _0x136e36=_0x6e16ac(_0x17f06a[_0x3bc080(0x221)](),_0x508ec6),_0x565cf8=_0x557759?_0x5394fe(_0x17f06a['sites']()[_0x508ec6]??[],_0x557759[_0x3bc080(0x217)]):[];if(_0x136e36||_0x565cf8[_0x3bc080(0x231)]){const _0x422db3=await _0x17f06a[_0x3bc080(0x230)]((0x0,_0x569080[_0x3bc080(0x240)])(_0x508ec6,{'overwrite':_0x136e36,'addedSites':_0x565cf8}));if(_0x422db3!==_0x16c45d[_0x3bc080(0x225)])return(0x0,_0x569080['notApprovedText'])(_0x16c45d[_0x3bc080(0x1da)],_0x422db3,_0x17f06a[_0x3bc080(0x1f7)]);}_0x17f06a['setSecret'](_0x508ec6,_0x57d5b2,_0x16c45d[_0x3bc080(0x234)]);if(_0x557759)_0x17f06a[_0x3bc080(0x1e7)](_0x508ec6,_0x557759['sites']);const _0x31f9c1=_0x17f06a[_0x3bc080(0x217)]()[_0x508ec6];return'✅\x20シークレット\x20'+_0x508ec6+_0x3bc080(0x218)+(_0x31f9c1?.['length']?_0x3bc080(0x207)+_0x31f9c1[_0x3bc080(0x223)](',\x20')+_0x3bc080(0x23d):(0x0,_0x26a375[_0x3bc080(0x20e)])(_0x508ec6)?_0x16c45d[_0x3bc080(0x22f)]:'');}function _0x59e2(){const _0x22b6e8=['CLbbrei','y29UzMLYBq','BgvUz3rO','ioobR+IMI+obPoobI+ocIUobVUobM+ocK+oaGG','C2L0zufSBg93CW','tMXjr1m','CfzXv1q','zgvSzxrLu2vJCMv0vgv4Da','C2v0shvTyw5tDgvW','A2v5CW','mtvLAg1Tr3C','cGRJGiW','ioobP+A4OEocIUoaGEwUN+IHJoobRUobN+obS+obQ+ACRos6UUobRUEIUUIQJEobJowhUUobPUoaGEwhUUwkM+obQ+whUUobN+waPoobR+s8J+obM+obVUobMEoaGUocT+ocP+odQ+obRUwXLEMwI+obJoIMGEocI+obQUocIsbZAcaTyYaN4OcMiciK','5Rg644kb44gM44ge44g+44gB44kt','77Yi44gz44gq44gRigjYB3DZzxjFzMLSBf9ZzwnYzxqG44gN5l2/44gi44g+44gz77Yj44cc','iIFVViNJGii','BM9Uzq','C2vJCMv0q2HHBMDLtwvZC2fNzq','lI9ZzwnYzxroyw1LCW','mZGZmtGWnfLcC2jTDq','ic0TioocS+odNUodS+odIsdLVjxMLBdIGkzGioocKUs9V+obO+obPUobJ+obOoobLEobHa','ioobR+obK+obRUMhKEw6Q++8IoobK+obRIbqqYdJGA7LHAJJG4tJG7ZJG6VLHBhPGjRJG7TSAxn0x3nLy3jLDhmG44gN5zcn5yMn44ks56k66kQn44gN44gn44kl77Yj44gR44gc44kk44g+44gB44kt44cc','mJa4odi3odbJB3bftgm','rNPpDfG','DM9tvfm','AgfZ','BwfW','5ywL44km44gM44ki44ge44k144kK44oi77YA5PYQ6kIT5A6A','nJm5mdyZnNzMswfwvG','CezbsM0','44gP44gt44gR44kc54sH44gr44km44gW44oM44o844k244o844gR56k66kQn44gx44cbyxnRx3nLy3jLDcdJGAFMNkZKURRJGAVLHAxJGOZJGABJGOlJGONJGApJGABJGy/JGAdJGzxJGytVViJLGktJGPlJG4hJG6pJG4pJG4JJGAVOSRZJGApJGABJGOlJGONJGO/JGARJGytVViNJGii','EgHgBxm','ioobQ+oaJa','BM90qxbWCM92zwruzxH0','mtK1mtbtB3HZDLa','44ox44oT44k444kN44kV44oi44keifbdioobRIbdtefvreuUBwqG44gm5yIL44gU56Ey5A+g566H55cg77Yi44or44k544oV44o844oj566H55cg44gUie1ducdJGOqGq0XjioobQUobQE+8IEocKUAmH+wUMUobL+obPUobHoocJoobSooaGEobNEobOEocIEobI+ocIEwpLUobO+obPUobJ+obOoobLEobHooaGG','ioobR+MhKEw6Q+obQ+obGUocIUobVUobM+ocK++8IgXPC3rFC2vJCMv0CYdJGAFLKi3LIy3JGPlNORRJGyVJGOhJGABJGy/JGAdJGzxJGytVViNJGii','C2v0u2L0zxm','oe14A2reta','ic8G','yxbWCM92zwq','AgfZt3DUuhjVCgvYDhK','BMvLzhnbChbYB3zHBa','5Rg644kb44gM44ge44g+44gB44ktoIdNQk7POz7JGA8G','sfvnqu5Fu1rfufm','sfvnqu5Fu1rfuf9brfzjq0u','C2vJCMv0tMfTzuvYCM9Y','AvH2y2K','44kZ44oE44oZ44oj77Yiy3vYBoodU0nmssdJGARJGANVViNJGAVMUkhJGzNJGAJJGy3JGA/JGihNQ6/MNkVJGACGya','5l+D5A2y44gx44gM44ge44g+44gB44ktoIa','ChjVDg90ExbL','tKrsBwC','sfvnqu5Fu0vduKvux1rfwfq','y29TBwfUza','5lQ644gm5ywL5yQB44o7quKG44gV6kQT44kb44gQ44ge','mti3re9kBLnp','mZq4mJq2uLnRvMDV','5Asw44gx44gM44ge44g+44gB44kt','zgvSzxrLu2vJCMv0','5l+D566H5lIT44gU44k344o844kV44oS44od44oioGO','C1rozM8','ioobRUoaJa','u2XtBxa','zxHLy0HPBNq','yvfpDwG','x19LC01VzhvSzq','5l+D5A2y44gx44gM44ge44g+44gB44kt','zMLSDgvY','CfHjveO','5ywL44km44gM44ki44ge44k144kK44oioIa','lI92yxvSDa','44gt44gU5ycK44gV44cb44ow44oP44kM44k244gU5ywL5yQB5QYe44g45ywL44km44kligjYB3DZzxjFzMLSBf9ZzwnYzxqG44gO44cb44oe44o844oR77Yitunq77Yj44gU6kIT5A6A44gO44cbC2vJCMv0igv4zwmG44gN5yUv44gl44gz44kZ44oE44oZ44oj44gR44gG44gr5l2/44gi44g+44gz44cc','rfbUyLe','nJm1mtjnANnSvwW','ioocKUwjIUMzPoobL+obVUobL+obN+oaGG','tKfnrq','Bg9VA3nmAwTLu2L0zuXVz2LU','yMfK','44cn44gU55UU5y2W44ks5Asw44gx44g+44gx44gF44cc','ioocKUwfPEocJoobPUocIoobHoocTEocPoodIoocKIa','C3rVCMvtzwnYzxruzxH0','C2v0u2vJCMv0u2L0zxnuzxH0','44cn44gU56Ey5A+g44gVigDLDf9ZzwnYzxqG44gN5ycK44ks6kQT44kb44g+44gB44kt44cc','mteXntG3mvDgtNHQsa','44cn44gU56Ey5A+g44gVigjYB3DZzxjFzMLSBf9ZzwnYzxqG44gN44ow44oP44kM44k244gR5ywL44km44kj44km44g+44gB44kt44cc5l2/44gg44gO44gn44gV44cb44gP44gU44k144kK44oi77Yi44oj44oH44kK44oZ77Yj44gN5l2/44gg44kc44gU44gl','C2L0zxm','ioocKUodREodVoocQ+odQ+AAL+wpT+MhKEw6Q+obQ+s/NEwTMoobL+obVUobL+obN++8IoobK+obRIbqqYdJGA7LHAJJG4tJG7ZJG6VJGAFLHBhPGjRJGilLGktJGA/JGzpJGA7JG57JGRFJG7pJGyVJGONLH7RJGB7JGzVJGPpVViNJGii','lI9HChbYB3zHBa','ioobR+s6UUobJowfPEwkM+obL+obN+ocGUobRUobP+oaGufjioobR+waPoocKUIQREocGEobVUobM+ocK++8IgDLDf9ZzwnYzxqG44gN44gV6l+u44gx44g+44gB44kt77Yj44cc','BM9YBwfSAxPLu2L0zxm','EuPsuha','AhvTyw5tDgvWCW','77Yj44cc5ycK44gV5RIH44gB44g+44gB44kt44cc','swzOteK','lI9ZzwnYzxrtAxrLCW','C2vJCMv0CW','77Yi55s75yop44or44k644oR562j77Yj44ks44oM44o844k244o844gR5lYD44gi44gM44gl44kj6ycY44kb44gM44gp44gG44gv44ge77Yi6ycu5lIT44gN6kAl44gK44gr44gM44gl44kj6Ac844g/55U044gv44gQ44ge77Yj44cc','AM9PBG','zgvSzxrLu2vJCMv0twvZC2fNzq','Du1mBuO','ioobQ+obL+obVUobL+obN++8IoobMEobKoobQYbICM93C2vYx2zPBgXFC2vJCMv0ioobP+s9V+obIoobVUobMEoaGUwaPoobR+wKIEobIoobPUobHoobVUobM+ocK++8IEoaGG','44k344o844kV44oS44od44oiia','zgvMAw5LuhjVCgvYDhK','AhvTyw4','5l+D566H5lIT44gU44k344o844kV44oS44od44oi44gV44gc44kk44g+44gB44kt44ccyxnRx3nLy3jLDcdJGAFJG6BJG7ZJGRBJG7ZJGAVLHAxJGOZJGABJGOlJGONJGyJJGB7JGzNJGii','ihnLy3jLDcbLEgvJia','C29Tzq','5yMk6zMK44gx44gM44ge44g+44gB44kt','CNfyr2G'];_0x59e2=function(){return _0x22b6e8;};return _0x59e2();}async function _0x33d967(_0x35900e,_0x4ed354,_0x5bf9c5){const _0xf8fe22=_0x5aa9f2,_0x1cc0ac={'rqXGh':function(_0x1e65c7,_0x346985,_0x490fd4){return _0x1e65c7(_0x346985,_0x490fd4);},'iXvci':function(_0x287e51,_0x447fe0,_0x11afc2){return _0x287e51(_0x447fe0,_0x11afc2);},'DPnbQ':_0xf8fe22(0x23c),'pFAJm':function(_0x96e3b5,_0x28489b){return _0x96e3b5!==_0x28489b;},'FzOtX':_0xf8fe22(0x1ea),'aQOuh':_0xf8fe22(0x1fb)};if(!_0x1cc0ac[_0xf8fe22(0x22e)](_0x6e16ac,_0x5bf9c5[_0xf8fe22(0x221)](),_0x35900e))return _0xf8fe22(0x227)+_0x35900e+_0xf8fe22(0x1e6);const _0x411687=(0x0,_0x26a375[_0xf8fe22(0x21b)])(_0x4ed354);if(_0x411687[_0xf8fe22(0x20f)]['length'])return _0x1cc0ac[_0xf8fe22(0x1f1)](_0x2b4529,_0x1cc0ac[_0xf8fe22(0x20a)],_0x411687[_0xf8fe22(0x20f)]);const _0x6a15b1=_0x5bf9c5['sites']()[_0x35900e]??[],_0x1b403a=_0x5394fe(_0x6a15b1,_0x411687['sites']);if(_0x1b403a['length']){const _0x9a3eed=await _0x5bf9c5[_0xf8fe22(0x230)]((0x0,_0x569080[_0xf8fe22(0x240)])(_0x35900e,{'overwrite':![],'addedSites':_0x1b403a}));if(_0x1cc0ac[_0xf8fe22(0x1df)](_0x9a3eed,_0x1cc0ac[_0xf8fe22(0x1d9)]))return(0x0,_0x569080[_0xf8fe22(0x1e3)])(_0x1cc0ac[_0xf8fe22(0x20a)],_0x9a3eed,_0x5bf9c5['command']);}if((0x0,_0x569080['clearingNeedsApproval'])(_0x6a15b1,_0x411687['sites'])&&!_0x5bf9c5['human']()['has'](_0x35900e)){const _0x4fb3c7=await _0x5bf9c5[_0xf8fe22(0x230)]((0x0,_0x569080['clearSitesMessage'])(_0x35900e,_0x6a15b1));if(_0x1cc0ac[_0xf8fe22(0x1df)](_0x4fb3c7,'approved'))return(0x0,_0x569080[_0xf8fe22(0x1e3)])(_0x1cc0ac[_0xf8fe22(0x202)],_0x4fb3c7,_0x5bf9c5[_0xf8fe22(0x1f7)]);}return _0x5bf9c5[_0xf8fe22(0x1e7)](_0x35900e,_0x411687[_0xf8fe22(0x217)]),_0x411687['sites'][_0xf8fe22(0x231)]?'✅\x20'+_0x35900e+_0xf8fe22(0x211)+_0x411687[_0xf8fe22(0x217)][_0xf8fe22(0x223)](',\x20')+_0xf8fe22(0x226):'✅\x20'+_0x35900e+'\x20の入れてよいサイトを外しました(browser_fill_secret\x20では入れられなくなります。値は残っています)。';}function _0x6ebc4d(_0x3c58f6,_0x2a1593,_0xaf3c56){const _0xd9ce17=_0x5aa9f2,_0x21b5d8={'sTNfo':function(_0x21ef2b,_0x58b304){return _0x21ef2b===_0x58b304;},'IfhLI':_0xd9ce17(0x23f),'pVqWT':function(_0x4a8c76,_0x3e138c,_0x8bfad6){return _0x4a8c76(_0x3e138c,_0x8bfad6);}};if(!_0x6e16ac(_0xaf3c56[_0xd9ce17(0x221)](),_0x3c58f6))return _0xd9ce17(0x227)+_0x3c58f6+_0xd9ce17(0x1e6);if(_0x21b5d8[_0xd9ce17(0x1fe)](_0x2a1593,_0x21b5d8[_0xd9ce17(0x21f)]))return _0xaf3c56[_0xd9ce17(0x237)](_0x3c58f6,null),'✅\x20'+_0x3c58f6+_0xd9ce17(0x1ff)+_0x20019f+_0xd9ce17(0x210);if(!_0x21b5d8[_0xd9ce17(0x235)](_0x6e16ac,_0x495e1e[_0xd9ce17(0x1ee)],_0x2a1593))return _0xd9ce17(0x1ed)+Object[_0xd9ce17(0x238)](_0x495e1e[_0xd9ce17(0x1ee)])[_0xd9ce17(0x223)](_0xd9ce17(0x1e9))+'\x20/\x20none\x20のどれかで渡してください。';return _0xaf3c56[_0xd9ce17(0x237)](_0x3c58f6,_0x2a1593),'✅\x20'+_0x3c58f6+_0xd9ce17(0x1e2)+_0x20019f+':\x20'+_0x495e1e[_0xd9ce17(0x1ee)][_0x2a1593]+'」の目印を付けました。次からは、ログインを始める前にユーザーへ伝えてください。';}function _0xd67b(_0x10011d,_0x29acbc){_0x10011d=_0x10011d-0x1d7;const _0x59e2bd=_0x59e2();let _0xd67b28=_0x59e2bd[_0x10011d];if(_0xd67b['MNhZLh']===undefined){var _0x1df7dc=function(_0x2253c2){const _0x3e918a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x20b768='',_0x364952='';for(let _0x5cb1a5=0x0,_0x2deb2a,_0x325024,_0x52b535=0x0;_0x325024=_0x2253c2['charAt'](_0x52b535++);~_0x325024&&(_0x2deb2a=_0x5cb1a5%0x4?_0x2deb2a*0x40+_0x325024:_0x325024,_0x5cb1a5++%0x4)?_0x20b768+=String['fromCharCode'](0xff&_0x2deb2a>>(-0x2*_0x5cb1a5&0x6)):0x0){_0x325024=_0x3e918a['indexOf'](_0x325024);}for(let _0x56d4ec=0x0,_0x4dc9d0=_0x20b768['length'];_0x56d4ec<_0x4dc9d0;_0x56d4ec++){_0x364952+='%'+('00'+_0x20b768['charCodeAt'](_0x56d4ec)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x364952);};_0xd67b['zzABTn']=_0x1df7dc,_0xd67b['ZTgRTl']={},_0xd67b['MNhZLh']=!![];}const _0x4f3d9b=_0x59e2bd[0x0],_0x2599e7=_0x10011d+_0x4f3d9b,_0x2b5dbd=_0xd67b['ZTgRTl'][_0x2599e7];return!_0x2b5dbd?(_0xd67b28=_0xd67b['zzABTn'](_0xd67b28),_0xd67b['ZTgRTl'][_0x2599e7]=_0xd67b28):_0xd67b28=_0x2b5dbd,_0xd67b28;}async function _0x1f5f5b(_0x1d4ac9,_0x14677f){const _0x59ed96=_0x5aa9f2,_0x170dd8={'NDRmg':_0x59ed96(0x1ea)};if(!_0x6e16ac(_0x14677f['secrets'](),_0x1d4ac9))return'シークレット\x20'+_0x1d4ac9+_0x59ed96(0x232);const _0x8c2a54=await _0x14677f[_0x59ed96(0x230)]((0x0,_0x569080[_0x59ed96(0x224)])(_0x1d4ac9,{'human':_0x14677f[_0x59ed96(0x229)]()[_0x59ed96(0x1db)](_0x1d4ac9),'sites':_0x14677f[_0x59ed96(0x217)]()[_0x1d4ac9]??[]}));if(_0x8c2a54!==_0x170dd8[_0x59ed96(0x1f5)])return(0x0,_0x569080[_0x59ed96(0x1e3)])(_0x59ed96(0x22d),_0x8c2a54,_0x14677f[_0x59ed96(0x1f7)]);return _0x14677f[_0x59ed96(0x1fc)](_0x1d4ac9)?'シークレット\x20'+_0x1d4ac9+_0x59ed96(0x20c):_0x59ed96(0x227)+_0x1d4ac9+_0x59ed96(0x232);}
|
package/dist/vault.d.ts
CHANGED
|
@@ -7,22 +7,14 @@ export declare class VaultError extends Error {
|
|
|
7
7
|
}
|
|
8
8
|
export declare function vaultKey(): Buffer;
|
|
9
9
|
export declare function resetVault(): string[];
|
|
10
|
-
/** 人が入れた秘密の目印を入れておく項目。名前の検査(secretNameError)で使えない形にしてあり、秘密の名前とぶつからない。 */
|
|
11
10
|
export declare const META_KEY = "funny-booth:meta";
|
|
12
11
|
export type SecretOrigin = "human" | "model";
|
|
13
12
|
export declare function readSecrets(): Record<string, string>;
|
|
14
|
-
/** 人が入れた秘密の名前(get_secret が値を返さないもの)。 */
|
|
15
13
|
export declare function humanSecretNames(): Set<string>;
|
|
16
|
-
/**
|
|
17
|
-
* 秘密を入れる。origin が human なら人が入れた目印を付け、model なら外す(AI が値を知っている)。
|
|
18
|
-
* 鍵の作成も同じロックを使うため、ロックを取る前に鍵を用意しておく(ロックは再入できない)
|
|
19
|
-
*/
|
|
20
14
|
export declare function setSecret(name: string, value: string, origin?: SecretOrigin): void;
|
|
21
15
|
export declare function deleteSecret(name: string): boolean;
|
|
22
|
-
/** 金庫のファイルの場所(Mod が「書き換わったか」を確かめるため。secretPrints.ts)。 */
|
|
23
16
|
export declare function secretsFile(): string;
|
|
24
17
|
export declare function readSecretSites(): Record<string, string[]>;
|
|
25
|
-
/** 入れてよいサイトを決め直す(空の配列なら外す)。サイトはドメイン名にそろえたもの(secretSites.normalizeSite)を渡す。 */
|
|
26
18
|
export declare function setSecretSites(name: string, sites: string[]): void;
|
|
27
19
|
export declare const HUMAN_STEPS: {
|
|
28
20
|
readonly captcha: "画像パズル(CAPTCHA)";
|
|
@@ -31,12 +23,7 @@ export declare const HUMAN_STEPS: {
|
|
|
31
23
|
};
|
|
32
24
|
export type HumanStep = keyof typeof HUMAN_STEPS;
|
|
33
25
|
export declare function readHumanSteps(): Record<string, HumanStep>;
|
|
34
|
-
/** ログインに人の手が要る目印を付ける(null で外す)。 */
|
|
35
26
|
export declare function setHumanStep(name: string, step: HumanStep | null): void;
|
|
36
|
-
/**
|
|
37
|
-
* ブラウザへ値を見せずに入れる道具(playwright-profile-mcp の browser_fill_secret)に渡す材料を、呼ばれたその時の金庫から作る。
|
|
38
|
-
* 入れてよいサイトが決まっていない秘密は値を返さない(fillSecretHelper.ts)。
|
|
39
|
-
*/
|
|
40
27
|
export type FillableSecret = {
|
|
41
28
|
status: "ok";
|
|
42
29
|
value: string;
|
|
@@ -64,5 +51,4 @@ export declare function conflictedSecretNames(names: string[]): string[];
|
|
|
64
51
|
export declare function migrateToolVault(toolName: string): {
|
|
65
52
|
migrated: boolean;
|
|
66
53
|
conflicts: string[];
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=vault.d.ts.map
|
|
54
|
+
};
|