promptkaizen-agent 0.6.4 → 0.7.2
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/README.md +24 -0
- package/dist/analyze/index.d.ts.map +1 -1
- package/dist/analyze/index.js +1 -1
- package/dist/analyze/index.js.map +1 -1
- package/dist/analyze/optimize-rules-fetcher.d.ts +1 -2
- package/dist/analyze/optimize-rules-fetcher.d.ts.map +1 -1
- package/dist/analyze/optimize-rules-fetcher.js +5 -2
- package/dist/analyze/optimize-rules-fetcher.js.map +1 -1
- package/dist/cli/disable-hooks.d.ts +2 -0
- package/dist/cli/disable-hooks.d.ts.map +1 -0
- package/dist/cli/disable-hooks.js +117 -0
- package/dist/cli/disable-hooks.js.map +1 -0
- package/dist/cli/hook.d.ts.map +1 -1
- package/dist/cli/hook.js +15 -5
- package/dist/cli/hook.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +4 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp.js +1 -1
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/start.d.ts.map +1 -1
- package/dist/cli/start.js +11 -3
- package/dist/cli/start.js.map +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +15 -1
- package/dist/cli/status.js.map +1 -1
- package/dist/config.d.ts +66 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +72 -2
- package/dist/config.js.map +1 -1
- package/dist/detection/engine.d.ts +149 -0
- package/dist/detection/engine.d.ts.map +1 -0
- package/dist/detection/engine.js +0 -0
- package/dist/detection/engine.js.map +1 -0
- package/dist/detection/index.d.ts +3 -0
- package/dist/detection/index.d.ts.map +1 -0
- package/dist/detection/index.js +24 -0
- package/dist/detection/index.js.map +1 -0
- package/dist/detection/rules.d.ts +103 -0
- package/dist/detection/rules.d.ts.map +1 -0
- package/dist/detection/rules.js +586 -0
- package/dist/detection/rules.js.map +1 -0
- package/dist/hooks/claude-hook.d.ts +31 -4
- package/dist/hooks/claude-hook.d.ts.map +1 -1
- package/dist/hooks/claude-hook.js +131 -16
- package/dist/hooks/claude-hook.js.map +1 -1
- package/dist/hooks/hook-pause.d.ts +34 -0
- package/dist/hooks/hook-pause.d.ts.map +1 -0
- package/dist/hooks/hook-pause.js +111 -0
- package/dist/hooks/hook-pause.js.map +1 -0
- package/dist/hooks/pretooluse-policy.d.ts +34 -0
- package/dist/hooks/pretooluse-policy.d.ts.map +1 -0
- package/dist/hooks/pretooluse-policy.js +97 -0
- package/dist/hooks/pretooluse-policy.js.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/mask-rules-fetcher.d.ts +5 -0
- package/dist/mask-rules-fetcher.d.ts.map +1 -1
- package/dist/mask-rules-fetcher.js +9 -2
- package/dist/mask-rules-fetcher.js.map +1 -1
- package/dist/pii-masker.d.ts.map +1 -1
- package/dist/pii-masker.js.map +1 -1
- package/dist/secret-detector.d.ts +51 -27
- package/dist/secret-detector.d.ts.map +1 -1
- package/dist/secret-detector.js +108 -441
- package/dist/secret-detector.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/suppress-sea-warning.d.ts +0 -2
- package/dist/suppress-sea-warning.d.ts.map +0 -1
- package/dist/suppress-sea-warning.js +0 -21
- package/dist/suppress-sea-warning.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ==========================================================================
|
|
3
|
+
// 自動生成ファイル — 直接編集しないこと
|
|
4
|
+
// 正: shared/src/detection/index.ts
|
|
5
|
+
// 再生成: npm run sync:detection
|
|
6
|
+
// ==========================================================================
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./rules"), exports);
|
|
23
|
+
__exportStar(require("./engine"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":";AAAA,6EAA6E;AAC7E,uBAAuB;AACvB,mCAAmC;AACnC,8BAA8B;AAC9B,6EAA6E;;;;;;;;;;;;;;;;AAE7E,0CAAuB;AACvB,2CAAwB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export type DetectionCategory = 'secret' | 'pii' | 'pii_jp' | 'custom';
|
|
2
|
+
export type DetectionSeverity = 'low' | 'medium' | 'high';
|
|
3
|
+
/**
|
|
4
|
+
* マスク時のグループ。ポリシー (RedactPolicy) で ON/OFF する単位。
|
|
5
|
+
* - secret : API キー / トークン / 秘密鍵 / 汎用クレデンシャル
|
|
6
|
+
* - strong_pii : 検査数字やラベルで裏取りできる高精度 PII (カード / マイナンバー /
|
|
7
|
+
* 口座 / 人名)。誤検知が低いので既定で伏せる
|
|
8
|
+
* - contact_pii : 電話 / 住所 / 郵便番号 / 法人番号。文脈によっては伏せたくないため
|
|
9
|
+
* ブラウザでは既定 ON、agent (クラウド保存前) は既定 OFF
|
|
10
|
+
* - email : メールアドレス
|
|
11
|
+
* - custom : 利用者・組織が登録した辞書 (取引先名・商品名など)
|
|
12
|
+
* - null : 検知のみ。マスクすると文意が壊れるもの (和暦日付)
|
|
13
|
+
*/
|
|
14
|
+
export type MaskGroup = 'secret' | 'strong_pii' | 'contact_pii' | 'email' | 'custom';
|
|
15
|
+
export type ValidatorId = 'luhn' | 'mynumber' | 'corporate' | 'credential' | 'bankAccount' | 'personName' | 'accountHolder';
|
|
16
|
+
export interface DetectionRuleSpec {
|
|
17
|
+
ruleId: string;
|
|
18
|
+
category: DetectionCategory;
|
|
19
|
+
severity: DetectionSeverity;
|
|
20
|
+
/** 正規表現ソース。フラグは flags で指定 (既定 'g')。 */
|
|
21
|
+
source: string;
|
|
22
|
+
flags?: string;
|
|
23
|
+
/** マッチ後の追加検証。false で破棄する。 */
|
|
24
|
+
validator?: ValidatorId;
|
|
25
|
+
/** マスク時の置換ラベル。 */
|
|
26
|
+
redaction: string;
|
|
27
|
+
/** 所属するマスクグループ。null は検知のみでマスクしない。 */
|
|
28
|
+
maskGroup: MaskGroup | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 正規化テキストと、正規化後の各 UTF-16 単位が原文のどの範囲から来たかの対応表。
|
|
32
|
+
*
|
|
33
|
+
* 検知は正規化テキストに対して行う (全角で書かれたカード番号や電話番号を拾うため) が、
|
|
34
|
+
* マスクは**原文の該当範囲だけ**を置換しなければならない。文字列全体に normalize() を
|
|
35
|
+
* かけると長さが変わって原文の位置が失われるため、対応表を併せて返す。
|
|
36
|
+
*/
|
|
37
|
+
export interface NormalizedText {
|
|
38
|
+
text: string;
|
|
39
|
+
/** text[i] に対応する原文の開始位置。 */
|
|
40
|
+
starts: number[];
|
|
41
|
+
/** text[i] に対応する原文の終了位置 (排他)。 */
|
|
42
|
+
ends: number[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 検知前の正規化 (NFKC + 単一桁の漢数字→算用数字) を、原文への対応表つきで行う。
|
|
46
|
+
* 位取りの誤変換を避けるため漢数字は単一桁のみ寄せる。
|
|
47
|
+
*
|
|
48
|
+
* コードポイント単位 (結合文字は直前と合成) で正規化し、出力 1 単位ごとに由来範囲を
|
|
49
|
+
* 記録する。1 文字が複数文字へ展開されても (㍿ → 株式会社) 由来はその 1 文字を指す。
|
|
50
|
+
*/
|
|
51
|
+
export declare function normalizeWithMap(raw: string): NormalizedText;
|
|
52
|
+
/** 検知前の正規化。位取りの誤変換を避けるため単一桁の漢数字のみ寄せる。 */
|
|
53
|
+
export declare function normalizeForDetection(text: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* 高エントロピー検出の閾値。クレデンシャル判定でも同じ境目を使うので、
|
|
56
|
+
* 検証ヘルパより前に置く (const は巻き上げられない)。
|
|
57
|
+
*/
|
|
58
|
+
export declare const ENTROPY_MIN_LENGTH = 20;
|
|
59
|
+
export declare const ENTROPY_THRESHOLD = 4;
|
|
60
|
+
/** クレジットカード番号の Luhn チェック (13〜19 桁)。 */
|
|
61
|
+
export declare function luhnValid(value: string): boolean;
|
|
62
|
+
/** マイナンバー (個人番号, 12 桁) のチェックデジット検証。 */
|
|
63
|
+
export declare function isValidMyNumber(value: string): boolean;
|
|
64
|
+
/** 法人番号 (13 桁) のチェックデジット検証 (先頭 1 桁が検査数字)。 */
|
|
65
|
+
export declare function isValidCorporateNumber(value: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 汎用クレデンシャルの値が「本物っぽい」か (プレースホルダ/自然文/識別子を弾く)。
|
|
68
|
+
*
|
|
69
|
+
* このルールはラベル (password / secret / token 等) だけを手掛かりにしていて
|
|
70
|
+
* **値の形を問わない**ため、変数への代入というだけのソースコードの記述が
|
|
71
|
+
* そのまま重大度 high に化ける。PreToolUse の deny は無条件ブロックなので、
|
|
72
|
+
* ここでの取りこぼしは「当該ファイルを一切編集できない」に直結する。
|
|
73
|
+
* 値側の足切りをここに集約する。
|
|
74
|
+
*/
|
|
75
|
+
export declare function isLikelyCredential(value: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* 銀行口座番号らしさ (T3)。ラベル後読みで拾った 6〜8 桁が、伝票番号や
|
|
78
|
+
* 金額の一部でないことを最低限確認する。全桁同一・連番のダミーは弾く。
|
|
79
|
+
*/
|
|
80
|
+
export declare function isLikelyBankAccount(value: string): boolean;
|
|
81
|
+
/** 口座名義らしさ (T3)。カタカナ列で、金融機関名や口座種別の断片を弾く。 */
|
|
82
|
+
export declare function isLikelyAccountHolder(value: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* 人名らしさ (T4)。ラベル・敬称で拾った語から、一般名詞・組織呼称を弾く。
|
|
85
|
+
* 網羅的な人名判定はしない (辞書と学習型辞書で補う設計)。
|
|
86
|
+
*/
|
|
87
|
+
export declare function isLikelyPersonName(value: string): boolean;
|
|
88
|
+
/** 秘密鍵は BEGIN 行だけでなく本体ごと伏せる (#104)。 */
|
|
89
|
+
export declare const PEM_BLOCK_SOURCE = "-----BEGIN (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----[\\s\\S]*?-----END (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----";
|
|
90
|
+
/** Shannon エントロピー (bits/char)。 */
|
|
91
|
+
export declare function shannonEntropy(s: string): number;
|
|
92
|
+
export declare const DETECTION_RULES: readonly DetectionRuleSpec[];
|
|
93
|
+
/** 高エントロピー検出の擬似ルール (正規表現ではなくトークン走査で拾う)。 */
|
|
94
|
+
export declare const HIGH_ENTROPY_RULE: {
|
|
95
|
+
ruleId: string;
|
|
96
|
+
category: DetectionCategory;
|
|
97
|
+
severity: DetectionSeverity;
|
|
98
|
+
redaction: string;
|
|
99
|
+
};
|
|
100
|
+
export declare const VALIDATORS: Record<ValidatorId, (v: string) => boolean>;
|
|
101
|
+
/** ruleId → 置換ラベル。未知の ruleId は [MASKED_<RULEID>] に倒す。 */
|
|
102
|
+
export declare function redactionLabel(ruleId: string): string;
|
|
103
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/detection/rules.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpF,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,eAAe,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6BAA6B;IAC7B,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CAC5B;AAUD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iCAAiC;IACjC,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AASD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAyB5D;AAED,yCAAyC;AACzC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAMD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAA;AACpC,eAAO,MAAM,iBAAiB,IAAM,CAAA;AAEpC,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAehD;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CActD;AAED,6CAA6C;AAC7C,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAc7D;AAgDD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAuCzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAK5D;AAwCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAgBzD;AAuGD,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,mIACqG,CAAA;AAElI,kCAAkC;AAClC,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAQD,eAAO,MAAM,eAAe,EAAE,SAAS,iBAAiB,EA4JvD,CAAA;AAED,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB;;cAEN,iBAAiB;cACjB,iBAAiB;;CAExC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAQlE,CAAA;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKrD"}
|