promptkaizen-agent 0.7.4 → 0.8.0

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.
@@ -5,7 +5,7 @@
5
5
  // 再生成: npm run sync:detection
6
6
  // ==========================================================================
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.VALIDATORS = exports.HIGH_ENTROPY_RULE = exports.DETECTION_RULES = exports.PEM_BLOCK_SOURCE = exports.ENTROPY_THRESHOLD = exports.ENTROPY_MIN_LENGTH = void 0;
8
+ exports.MASK_CATEGORIES = exports.VALIDATORS = exports.HIGH_ENTROPY_RULE = exports.DETECTION_RULES = exports.PEM_BLOCK_SOURCE = exports.ENTROPY_THRESHOLD = exports.ENTROPY_MIN_LENGTH = void 0;
9
9
  exports.normalizeWithMap = normalizeWithMap;
10
10
  exports.normalizeForDetection = normalizeForDetection;
11
11
  exports.luhnValid = luhnValid;
@@ -16,6 +16,9 @@ exports.isLikelyBankAccount = isLikelyBankAccount;
16
16
  exports.isLikelyAccountHolder = isLikelyAccountHolder;
17
17
  exports.isLikelyPersonName = isLikelyPersonName;
18
18
  exports.shannonEntropy = shannonEntropy;
19
+ exports.isMaskCategoryId = isMaskCategoryId;
20
+ exports.rulesForCategories = rulesForCategories;
21
+ exports.categoryOfRule = categoryOfRule;
19
22
  exports.redactionLabel = redactionLabel;
20
23
  // ---------------------------------------------
21
24
  // 正規化前処理 (全角→半角 / 単一桁の漢数字→算用数字)
@@ -30,9 +33,31 @@ const KANJI_DIGITS = {
30
33
  * 結合用の濁点 (U+3099/U+309A) やラテン文字のアクセントは \p{Mn}/\p{Mc} で拾う。
31
34
  */
32
35
  const COMBINING = /[\uFF9E\uFF9F]|\p{Mn}|\p{Mc}/u;
36
+ /** 算用数字 (半角・全角)。漢数字を寄せるかの判定に使う。 */
37
+ const ARABIC_DIGIT = /[0-90-9]/;
33
38
  /**
34
- * 検知前の正規化 (NFKC + 単一桁の漢数字→算用数字) を、原文への対応表つきで行う。
35
- * 位取りの誤変換を避けるため漢数字は単一桁のみ寄せる。
39
+ * その位置の漢数字を算用数字へ寄せてよいか。
40
+ *
41
+ * **数字の並びの一部であるときだけ寄せる。** 単独の漢数字を寄せると、氏名が
42
+ * その 1 文字で分断される — 「佐藤健一」が `佐藤健1` になり、人名ルールの文字クラス
43
+ * (漢字・カタカナ) が数字で途切れて **姓だけ伏せて名が残る**。敬称ルールに至っては
44
+ * 「山田二郎様」が `山田2郎様` となり敬称の直前が 1 文字になるため**一度も発火しない**。
45
+ * 健一・一郎・二郎・七海のような頻出の名前が丸ごと素通りしていた (2026-09-19 実データで確認)。
46
+ *
47
+ * 寄せる目的は「漢数字で書かれた数値 (マイナンバー・電話・口座) を拾う」ことなので、
48
+ * 桁の並び (漢数字どうし、または算用数字に隣接) に限れば目的は損なわれない。
49
+ * 単独の漢数字が数値として意味を持つ場面は検知対象に無い。
50
+ */
51
+ function shouldFoldKanjiDigit(raw, index, length) {
52
+ const prev = index > 0 ? raw[index - 1] : '';
53
+ const next = index + length < raw.length ? raw[index + length] : '';
54
+ const isDigitish = (c) => c !== '' && (c in KANJI_DIGITS || ARABIC_DIGIT.test(c));
55
+ return isDigitish(prev) || isDigitish(next);
56
+ }
57
+ /**
58
+ * 検知前の正規化 (NFKC + 漢数字→算用数字) を、原文への対応表つきで行う。
59
+ * 位取りの誤変換を避けるため漢数字は単一桁のみ、かつ**数字の並びの中にあるときだけ**寄せる
60
+ * (`shouldFoldKanjiDigit` を参照)。
36
61
  *
37
62
  * コードポイント単位 (結合文字は直前と合成) で正規化し、出力 1 単位ごとに由来範囲を
38
63
  * 記録する。1 文字が複数文字へ展開されても (㍿ → 株式会社) 由来はその 1 文字を指す。
@@ -54,7 +79,8 @@ function normalizeWithMap(raw) {
54
79
  chunk += next;
55
80
  len += next.length;
56
81
  }
57
- const norm = KANJI_DIGITS[chunk] ?? chunk.normalize('NFKC');
82
+ const folded = chunk in KANJI_DIGITS && shouldFoldKanjiDigit(raw, i, len) ? KANJI_DIGITS[chunk] : undefined;
83
+ const norm = folded ?? chunk.normalize('NFKC');
58
84
  for (let k = 0; k < norm.length; k++) {
59
85
  starts.push(i);
60
86
  ends.push(i + len);
@@ -242,7 +268,7 @@ function isLikelyBankAccount(value) {
242
268
  }
243
269
  /** 口座名義らしさ (T3)。カタカナ列で、金融機関名や口座種別の断片を弾く。 */
244
270
  function isLikelyAccountHolder(value) {
245
- const v = value.trim().replace(/[\s ]/g, '');
271
+ const v = value.trim().replace(/[\s\u3000]/g, '');
246
272
  if (v.length < 2)
247
273
  return false;
248
274
  const DENY = ['カブシキガイシャ', 'フツウ', 'トウザ', 'チョキン', 'コウザ', 'シテン', 'ギンコウ'];
@@ -282,6 +308,21 @@ const GENERIC_NOUN_WORDS = [
282
308
  '一覧', '詳細', '概要', '例外', '権限', '認証', '承認', '手続', '経路', '範囲',
283
309
  ];
284
310
  const GENERIC_NOUN_SUFFIX_RE = new RegExp(`(?:${GENERIC_NOUN_WORDS.join('|')})$`);
311
+ /**
312
+ * 値が入っていないことを表す語 (誤検知修正)。
313
+ *
314
+ * 帳票・管理画面の文面では「氏名が未入力です」「担当者は未定です」のように、
315
+ * **人名のラベルの直後に状態語が来る**。これを人名として伏せると
316
+ * 「氏名が[MASKED_PERSON]です」になり、何が起きているか分からない文になる。
317
+ * 実データの走査で、ラベル × 状態語 × 区切りの 288 通りのうち 224 通りが
318
+ * 伏字になっていた (2026-09-19)。
319
+ */
320
+ const UNSET_STATE_WORDS = [
321
+ '未入力', '未定', '未記入', '未登録', '未選択', '未割当', '未割り当て', '未着手',
322
+ '空欄', '空白', '不明', '匿名', '非公開', '同上', '該当なし', '別途連絡',
323
+ '調整中', '確認中', '検討中', '募集中', '複数名', '本人確認',
324
+ ];
325
+ const UNSET_STATE_SUFFIX_RE = new RegExp(`(?:${UNSET_STATE_WORDS.join('|')})$`);
285
326
  /**
286
327
  * 組織であることを示す語 (誤検知修正)。語中のどこかにあれば人名ではない。
287
328
  *
@@ -311,7 +352,7 @@ const ORGANIZATION_SUFFIX_RE = new RegExp(`(?:${ORGANIZATION_SUFFIX_WORDS.join('
311
352
  * 網羅的な人名判定はしない (辞書と学習型辞書で補う設計)。
312
353
  */
313
354
  function isLikelyPersonName(value) {
314
- const v = value.trim().replace(/[\s ]/g, '');
355
+ const v = value.trim().replace(/[\s\u3000]/g, '');
315
356
  if (v.length < 2 || v.length > 16)
316
357
  return false;
317
358
  const DENY = new Set([
@@ -327,6 +368,9 @@ function isLikelyPersonName(value) {
327
368
  // 末尾が一般名詞 (引数・関数など) の語は人名ではない。
328
369
  if (GENERIC_NOUN_SUFFIX_RE.test(v))
329
370
  return false;
371
+ // 「未入力」「未定」など値が無いことを表す語は人名ではない。
372
+ if (UNSET_STATE_SUFFIX_RE.test(v))
373
+ return false;
330
374
  // 組織を示す語を含む / 組織名の末尾で終わる語は人名ではない。
331
375
  if (ORGANIZATION_MARKERS.some((w) => v.includes(w)))
332
376
  return false;
@@ -386,7 +430,10 @@ const PERSON_TITLE_ONLY = 'さま|さん|副社長|取締役|マネージャー|
386
430
  * 人名として拾えなくなる。熟語であっても、姓や名の最後の字と衝突するものは諦める。
387
431
  */
388
432
  const HONORIFIC_COMPOUND_WORDS = [
389
- '仕様', '模様', '多様', '同様', '一様', '異様', '各様', '態様', '文様', '紋様',
433
+ // 「一様」は**あえて載せない**。一 は名の末尾に頻出する字で (健一 / 陽一 / 誠一)、
434
+ // 載せると「佐藤健一様」が丸ごと素通りする。単独の「一様に」は、敬称の直前で
435
+ // 終わる人名トークンが 一 の 1 文字になり、isLikelyPersonName の 2 文字下限で落ちる。
436
+ '仕様', '模様', '多様', '同様', '異様', '各様', '態様', '文様', '紋様',
390
437
  '有様', '王様', '神様', '奥様', '殿様', '皆様', '客様', '今様', '何様', '貴様',
391
438
  '彼氏', '両氏', '姓氏', '華氏', '摂氏',
392
439
  '御殿', '拝殿', '仏殿', '湯殿',
@@ -603,6 +650,83 @@ exports.VALIDATORS = {
603
650
  personName: isLikelyPersonName,
604
651
  accountHolder: isLikelyAccountHolder,
605
652
  };
653
+ exports.MASK_CATEGORIES = [
654
+ {
655
+ id: 'secret',
656
+ label: 'API キー・トークン・秘密鍵',
657
+ description: 'Anthropic / OpenAI / GitHub / Slack / AWS / GCP のキー、JWT、Bearer トークン、秘密鍵、ラベル付きの資格情報。',
658
+ ruleIds: [
659
+ 'anthropic_key', 'openai_key', 'github_token', 'slack_token', 'aws_access_key',
660
+ 'gcp_api_key', 'private_key_block', 'jwt', 'bearer_token', 'generic_credential',
661
+ ],
662
+ defaultOn: 'both',
663
+ },
664
+ {
665
+ id: 'credit_card',
666
+ label: 'クレジットカード番号',
667
+ description: 'Luhn 検査を通る 14〜16 桁のカード番号。',
668
+ ruleIds: ['credit_card'],
669
+ defaultOn: 'both',
670
+ },
671
+ {
672
+ id: 'jp_mynumber',
673
+ label: 'マイナンバー',
674
+ description: '検査数字を満たす 12 桁の個人番号。',
675
+ ruleIds: ['jp_mynumber'],
676
+ defaultOn: 'both',
677
+ },
678
+ {
679
+ id: 'bank_account',
680
+ label: '口座情報',
681
+ description: '金融機関名・支店・口座番号・口座名義。',
682
+ ruleIds: ['jp_bank_account', 'jp_bank_branch', 'jp_account_holder'],
683
+ defaultOn: 'both',
684
+ },
685
+ {
686
+ id: 'person_name',
687
+ label: '人名',
688
+ description: 'ラベル (氏名・担当者など) の直後、または敬称の直前にある氏名。状況証拠での判定なので、文書の性質によっては切ることもできます。',
689
+ ruleIds: ['jp_person_name', 'jp_person_name_honorific'],
690
+ defaultOn: 'both',
691
+ },
692
+ {
693
+ id: 'contact',
694
+ label: '電話番号・住所・郵便番号・法人番号',
695
+ description: '連絡先の情報。文意を壊しやすいため、agent (クラウド保存前) では既定で伏せません。',
696
+ ruleIds: ['jp_phone', 'jp_address', 'jp_postal', 'jp_corporate_number'],
697
+ defaultOn: 'browser',
698
+ },
699
+ {
700
+ id: 'email',
701
+ label: 'メールアドレス',
702
+ description: 'メールアドレス全体を伏せます。',
703
+ ruleIds: ['email'],
704
+ defaultOn: 'browser',
705
+ },
706
+ ];
707
+ const MASK_CATEGORY_BY_ID = new Map(exports.MASK_CATEGORIES.map((c) => [c.id, c]));
708
+ /** 既知のカテゴリ ID か。設定値の検証に使う。 */
709
+ function isMaskCategoryId(value) {
710
+ return MASK_CATEGORY_BY_ID.has(value);
711
+ }
712
+ /**
713
+ * 「伏せないカテゴリ」→ 対象 ruleId の一覧。
714
+ * 未知の ID は黙って無視する (新しい dashboard が古いクライアントへ未知の ID を
715
+ * 配っても、そのクライアントは従来どおり伏せ続ける = 安全側に倒れる)。
716
+ */
717
+ function rulesForCategories(ids) {
718
+ const out = [];
719
+ for (const id of ids) {
720
+ const cat = MASK_CATEGORY_BY_ID.get(id);
721
+ if (cat)
722
+ out.push(...cat.ruleIds);
723
+ }
724
+ return out;
725
+ }
726
+ /** ruleId → 所属カテゴリ。どのカテゴリにも属さないルールは undefined。 */
727
+ function categoryOfRule(ruleId) {
728
+ return exports.MASK_CATEGORIES.find((c) => c.ruleIds.includes(ruleId));
729
+ }
606
730
  /** ruleId → 置換ラベル。未知の ruleId は [MASKED_<RULEID>] に倒す。 */
607
731
  function redactionLabel(ruleId) {
608
732
  const spec = exports.DETECTION_RULES.find((r) => r.ruleId === ruleId);
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/detection/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/detection/rules.ts"],"names":[],"mappings":";AAAA,6EAA6E;AAC7E,uBAAuB;AACvB,mCAAmC;AACnC,8BAA8B;AAC9B,6EAA6E;;;AA0H7E,4CA2BC;AAGD,sDAEC;AAcD,8BAeC;AAGD,0CAcC;AAGD,wDAcC;AAyDD,gDAuCC;AAMD,kDAMC;AAGD,sDAKC;AAwFD,gDAqBC;AA+GD,wCAUC;AAuRD,4CAEC;AAOD,gDAOC;AAGD,wCAEC;AAGD,wCAKC;AA1yBD,gDAAgD;AAChD,gCAAgC;AAChC,gDAAgD;AAChD,MAAM,YAAY,GAA2B;IAC3C,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAC9C,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;CACvC,CAAA;AAiBD;;;;GAIG;AACH,MAAM,SAAS,GAAG,+BAA+B,CAAA;AAEjD,mCAAmC;AACnC,MAAM,YAAY,GAAG,UAAU,CAAA;AAE/B;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,KAAa,EAAE,MAAc;IACtE,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5C,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAClG,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAW,CAAC,CAAA;QAC7D,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;QACnB,2CAA2C;QAC3C,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,CAAW,CAAC,CAAA;YACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAK;YAChC,KAAK,IAAI,IAAI,CAAA;YACb,GAAG,IAAI,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;QACD,MAAM,MAAM,GACV,KAAK,IAAI,YAAY,IAAI,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9F,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACd,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;QACpB,CAAC;QACD,IAAI,IAAI,IAAI,CAAA;QACZ,CAAC,IAAI,GAAG,CAAA;IACV,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAC/B,CAAC;AAED,yCAAyC;AACzC,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC;AAED,gDAAgD;AAChD,gBAAgB;AAChB,gDAAgD;AAEhD;;;GAGG;AACU,QAAA,kBAAkB,GAAG,EAAE,CAAA;AACvB,QAAA,iBAAiB,GAAG,GAAG,CAAA;AAEpC,uCAAuC;AACvC,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IAC1D,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,IAAI,CAAC,CAAA;YACN,IAAI,CAAC,GAAG,CAAC;gBAAE,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QACD,GAAG,IAAI,CAAC,CAAA;QACR,GAAG,GAAG,CAAC,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,uCAAuC;AACvC,SAAgB,eAAe,CAAC,KAAa;IAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACjC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpC,OAAO,QAAQ,KAAK,KAAK,CAAA;AAC3B,CAAC;AAED,6CAA6C;AAC7C,SAAgB,sBAAsB,CAAC,KAAa;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACjB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,OAAO,QAAQ,KAAK,KAAK,CAAA;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,IAAI,CAAC,2DAA2D,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1F,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAC3C,MAAM,iCAAiC,GAAG,yBAAiB,CAAA;AAE3D,qCAAqC;AACrC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACtB,IAAI,CAAC,CAAC,MAAM,GAAG,qBAAqB;QAAE,OAAO,KAAK,CAAA;IAClD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,0BAA0B;IAC7D,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,yBAAyB;IAC9D,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,0BAA0B;IACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,8BAA8B;IAC/D,2BAA2B;IAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAEhF,8CAA8C;IAC9C,yDAAyD;IACzD,mDAAmD;IACnD,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAqB;QAAE,OAAO,KAAK,CAAA;IACrD,kCAAkC;IAClC,gCAAgC;IAChC,IACE,uBAAuB,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,gCAAgC;QAC9C,cAAc,CAAC,IAAI,CAAC,GAAG,iCAAiC,EACxD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;QAC1E,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;QAC7E,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO;QACpF,kCAAkC;QAClC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;QAC/E,qBAAqB;QACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;QACtF,qCAAqC;QACrC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ;QACpF,SAAS,EAAE,YAAY;KACxB,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,YAAY;IAClD,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,SAAS;IAC/D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,4CAA4C;AAC5C,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACjD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9B,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACrE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,KAAK,EAAE,KAAK;CACnB,CAAA;AAED,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAE7E;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC3D,CAAA;AAED,MAAM,sBAAsB,GAAG,IAAI,MAAM,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAEjF;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG;IACxB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;IACvD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IACnD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;CAC1C,CAAA;AAED,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtC,IAAI,EAAE,IAAI;CACX,CAAA;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAAG;IAChC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;IAC/C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACpD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;IACtD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACvB,CAAA;AAED,MAAM,sBAAsB,GAAG,IAAI,MAAM,CAAC,MAAM,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAExF;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACjD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC3D,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC3D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACrD,CAAC,CAAA;IACF,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7B,qCAAqC;IACrC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9C,+BAA+B;IAC/B,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,gCAAgC;IAChC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/C,kCAAkC;IAClC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACjE,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,qCAAqC;IACrC,IAAI,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,gDAAgD;AAChD,KAAK;AACL,gDAAgD;AAEhD,oBAAoB;AACpB,MAAM,WAAW,GACf,gMAAgM,CAAA;AAElM,4BAA4B;AAC5B,MAAM,gBAAgB,GACpB,mFAAmF,CAAA;AAErF;;;;GAIG;AACH,MAAM,cAAc,GAClB,uFAAuF,CAAA;AAEzF;;;GAGG;AACH,MAAM,kBAAkB,GACtB,0DAA0D,CAAA;AAE5D,qBAAqB;AACrB,MAAM,oBAAoB,GAAG,2BAA2B,CAAA;AAExD;;;;;GAKG;AACH,MAAM,YAAY,GAChB,uDAAuD,CAAA;AAEzD;;;;GAIG;AACH,MAAM,iBAAiB,GACrB,iDAAiD,CAAA;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,wBAAwB,GAAG;IAC/B,kDAAkD;IAClD,wCAAwC;IACxC,0DAA0D;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACpD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACvB,CAAA;AAED,gCAAgC;AAChC,MAAM,yBAAyB,GAC7B,wBAAwB,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AAER;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAC3D,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,QAAQ,KAAK,SAAS,EAAE,CAC5D,CAAA;IACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAA;AACxD,CAAC,CAAC,EAAE,CAAA;AAEJ;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,+BAA+B,CAAA;AACjD,MAAM,SAAS,GACb,uEAAuE,CAAA;AACzE,MAAM,UAAU,GAAG,GAAG,SAAS,GAAG,SAAS,qBAAqB,SAAS,GAAG,SAAS,SAAS,CAAA;AAE9F,uCAAuC;AAC1B,QAAA,gBAAgB,GAC3B,gIAAgI,CAAA;AAElI,kCAAkC;AAClC,SAAgB,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,IAAI,GAA2B,EAAE,CAAA;IACvC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;QAC5B,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,gDAAgD;AAChD,OAAO;AACP,gDAAgD;AAChD,2CAA2C;AAC3C,yDAAyD;AAE5C,QAAA,eAAe,GAAiC;IAC3D,iBAAiB;IACjB;QACE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QAClF,MAAM,EAAE,+CAA+C;QACvD,SAAS,EAAE,wBAAwB;KACpC;IACD;QACE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QAC/E,MAAM,EAAE,uCAAuC;QAC/C,SAAS,EAAE,qBAAqB;KACjC;IACD;QACE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QACjF,MAAM,EAAE,2BAA2B;QACnC,SAAS,EAAE,uBAAuB;KACnC;IACD;QACE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QAChF,MAAM,EAAE,8BAA8B;QACtC,SAAS,EAAE,sBAAsB;KAClC;IACD;QACE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QACnF,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,kBAAkB;KAC9B;IACD;QACE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QAChF,MAAM,EAAE,6BAA6B;QACrC,SAAS,EAAE,kBAAkB;KAC9B;IACD;QACE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QACtF,MAAM,EAAE,6DAA6D;QACrE,SAAS,EAAE,sBAAsB;KAClC;IACD;QACE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;QAC1E,MAAM,EAAE,uEAAuE;QAC/E,SAAS,EAAE,cAAc;KAC1B;IACD;QACE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;QACnF,MAAM,EAAE,+BAA+B;QACvC,SAAS,EAAE,uBAAuB;KACnC;IACD;QACE,yCAAyC;QACzC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;QACvF,MAAM,EAAE,UAAU,gBAAgB,kCAAkC;QACpE,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,qBAAqB;KACjC;IAED,mBAAmB;IACnB;QACE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;QACjF,MAAM,EAAE,8BAA8B;QACtC,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,sBAAsB;KAClC;IACD;QACE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO;QACrE,MAAM,EAAE,oDAAoD;QAC5D,SAAS,EAAE,gBAAgB;KAC5B;IAED,sCAAsC;IACtC;QACE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;QACpF,MAAM,EAAE,wCAAwC;QAChD,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,mBAAmB;KAC/B;IAED,2BAA2B;IAC3B,4CAA4C;IAC5C;QACE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;QACxF,MAAM,EAAE,OAAO,kBAAkB,kCAAkC;QACnE,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,uBAAuB;KACnC;IACD;QACE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;QACvF,MAAM,EAAE,GAAG,cAAc,yDAAyD,cAAc,wBAAwB;QACxH,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,eAAe;KAC3B;IACD;QACE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;QAC1F,MAAM,EAAE,OAAO,oBAAoB,iFAAiF;QACpH,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,yBAAyB;KACrC;IAED,kBAAkB;IAClB,uCAAuC;IACvC,mCAAmC;IACnC,EAAE;IACF,gDAAgD;IAChD,wCAAwC;IACxC,oDAAoD;IACpD,qDAAqD;IACrD,yCAAyC;IACzC;QACE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY;QACzF,2CAA2C;QAC3C,oCAAoC;QACpC,mCAAmC;QACnC,MAAM,EAAE,OAAO,YAAY,iDAAiD,UAAU,EAAE;QACxF,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,iBAAiB;KAC7B;IACD;QACE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY;QACnG,MAAM,EAAE,GAAG,UAAU,MAAM,wBAAwB,GAAG;QACtD,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,iBAAiB;KAC7B;IAED,wCAAwC;IACxC;QACE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;QAC/F,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,2BAA2B;KACvC;IACD;QACE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;QACpF,MAAM,EACJ,+GAA+G;QACjH,SAAS,EAAE,gBAAgB;KAC5B;IACD;QACE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;QACtF,MAAM,EAAE,MAAM,WAAW,0EAA0E;QACnG,SAAS,EAAE,kBAAkB;KAC9B;IACD;QACE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa;QAClF,MAAM,EAAE,8CAA8C;QACtD,SAAS,EAAE,iBAAiB;KAC7B;IAED,8BAA8B;IAC9B;QACE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;QAC9E,MAAM,EAAE,uFAAuF;QAC/F,SAAS,EAAE,eAAe;KAC3B;CACF,CAAA;AAED,2CAA2C;AAC9B,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,QAA6B;IACvC,QAAQ,EAAE,QAA6B;IACvC,SAAS,EAAE,iBAAiB;CAC7B,CAAA;AAEY,QAAA,UAAU,GAAgD;IACrE,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,sBAAsB;IACjC,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,mBAAmB;IAChC,UAAU,EAAE,kBAAkB;IAC9B,aAAa,EAAE,qBAAqB;CACrC,CAAA;AAsCY,QAAA,eAAe,GAA4B;IACtD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,qFAAqF;QAClG,OAAO,EAAE;YACP,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB;YAC9E,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB;SAChF;QACD,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;QACnE,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,IAAI;QACX,WAAW,EACT,mEAAmE;QACrE,OAAO,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;QACvD,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,CAAC;QACvE,SAAS,EAAE,SAAS;KACrB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,SAAS,EAAE,SAAS;KACrB;CACF,CAAA;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,uBAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1E,8BAA8B;AAC9B,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAuB,CAAC,CAAA;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,GAAsB;IACvD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAoB,CAAC,CAAA;QACzD,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,kDAAkD;AAClD,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,yDAAyD;AACzD,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,IAAI,GAAG,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAC7D,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAA;IAC/B,IAAI,MAAM,KAAK,yBAAiB,CAAC,MAAM;QAAE,OAAO,yBAAiB,CAAC,SAAS,CAAA;IAC3E,OAAO,WAAW,MAAM,CAAC,WAAW,EAAE,GAAG,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** サーバー (functions/src/billing/access.ts) が返す状態。 */
2
+ export type CustomerState = 'trial' | 'paid' | 'org' | 'comp' | 'locked';
3
+ export interface EntitlementSnapshot {
4
+ allowed: boolean;
5
+ state: CustomerState;
6
+ /** トライアル終了時刻 (ms)。state='trial' のときだけ入る。 */
7
+ trialEndsAt?: number;
8
+ /** この内容をサーバーから受け取った時刻 (ms)。猶予の起点。 */
9
+ checkedAt: number;
10
+ }
11
+ /** 通信できないまま使える期間。最後に成功した確認からの日数。 */
12
+ export declare const OFFLINE_GRACE_DAYS = 7;
13
+ export declare function entitlementPath(homeDir?: string): string;
14
+ /** デーモンが取得した結果を保存する。書けなくても致命ではない (次回また取りに行く)。 */
15
+ export declare function saveEntitlement(snap: EntitlementSnapshot, homeDir?: string): void;
16
+ export declare function loadEntitlement(homeDir?: string): EntitlementSnapshot | null;
17
+ export interface LockDecision {
18
+ /** 機能を止めるか。 */
19
+ locked: boolean;
20
+ /** 利用者に見せる理由。locked=true のときだけ入る。 */
21
+ reason?: string;
22
+ }
23
+ /**
24
+ * 端末側の最終判定。
25
+ *
26
+ * - キャッシュ無し → **ロックしない** (判定不能。デーモンが取りに行くまで待つ)
27
+ * - allowed=true → ロックしない
28
+ * - allowed=false → ロックする (サーバーが明確に「未課金」と言っている)
29
+ * - 古い allowed=true (7 日超) → ロックする (確認できないまま使い続けさせない)
30
+ *
31
+ * 最後の 1 つだけが「猶予」の実体である。**allowed=false は猶予の対象にしない** —
32
+ * 一度ロックと分かった後にオフラインへ逃げれば使える、では意味がないため。
33
+ */
34
+ export declare function decideLock(snap: EntitlementSnapshot | null, now?: number): LockDecision;
35
+ /** フックから使う同期ヘルパ。判定できないときは必ず「ロックしない」に倒す。 */
36
+ export declare function isLocked(homeDir?: string, now?: number): LockDecision;
37
+ //# sourceMappingURL=entitlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.d.ts","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"AA0BA,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;AAExE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;IACpB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAGnC,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEtE;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAQjF;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAe5E;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe;IACf,MAAM,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,GAAG,GAAE,MAAmB,GACvB,YAAY,CAkBd;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,YAAY,CAEjF"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ // =============================================
3
+ // 利用可否 (完全ロック) — 端末側のキャッシュと判定
4
+ // =============================================
5
+ //
6
+ // 方針 (2026-09-21): **未課金では保護機能も動かさない。**
7
+ // それまでは「端末内のマスキング・検知は課金判定を持たない = 無料で動く」設計だったが、
8
+ // 無料のまま使い続けられる状態を無くすという判断により、送信前フックも止める。
9
+ //
10
+ // ここで扱うのは **判定とキャッシュだけ**。実際に何を止めるかは呼び出し側が決める:
11
+ // - hooks (cli/hook.ts) … UserPromptSubmit / PostToolUse / PreToolUse を素通りさせる
12
+ // - daemon (cli/start.ts) … 取得して書くだけ (送信自体はサーバーが 402 で止める)
13
+ //
14
+ // 設計上の制約:
15
+ // 1. **フックは同期で判定できなければならない。** Claude Code のフックは短時間で
16
+ // 返す必要があり、毎回ネットワークへ問い合わせる余地はない。そのためファイルに
17
+ // キャッシュし、デーモンが 30 分ごとに更新する。
18
+ // 2. **通信できないときに即ロックしない。** 出張・社内ネットワーク制限・当社障害で
19
+ // 正規の利用者が止まる方が実害が大きい。最後に成功した確認から 7 日は猶予する。
20
+ // 3. **キャッシュが無い場合はロックしない。** 初回起動直後やデーモン未稼働の端末を
21
+ // 「未課金」と誤判定すると、購入済みの利用者が使えなくなる。判定できないことと
22
+ // 未課金であることは別に扱う。
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.OFFLINE_GRACE_DAYS = void 0;
28
+ exports.entitlementPath = entitlementPath;
29
+ exports.saveEntitlement = saveEntitlement;
30
+ exports.loadEntitlement = loadEntitlement;
31
+ exports.decideLock = decideLock;
32
+ exports.isLocked = isLocked;
33
+ const fs_1 = require("fs");
34
+ const path_1 = require("path");
35
+ const os_1 = __importDefault(require("os"));
36
+ /** 通信できないまま使える期間。最後に成功した確認からの日数。 */
37
+ exports.OFFLINE_GRACE_DAYS = 7;
38
+ const GRACE_MS = exports.OFFLINE_GRACE_DAYS * 24 * 60 * 60 * 1000;
39
+ function entitlementPath(homeDir = os_1.default.homedir()) {
40
+ return (0, path_1.join)(homeDir, '.promptkaizen', 'entitlement.json');
41
+ }
42
+ /** デーモンが取得した結果を保存する。書けなくても致命ではない (次回また取りに行く)。 */
43
+ function saveEntitlement(snap, homeDir) {
44
+ const p = entitlementPath(homeDir);
45
+ try {
46
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(p), { recursive: true });
47
+ (0, fs_1.writeFileSync)(p, JSON.stringify(snap, null, 2) + '\n', { mode: 0o600 });
48
+ }
49
+ catch {
50
+ // 保存できないときは判定不能 = ロックしない (loadEntitlement が null を返す)
51
+ }
52
+ }
53
+ function loadEntitlement(homeDir) {
54
+ const p = entitlementPath(homeDir);
55
+ if (!(0, fs_1.existsSync)(p))
56
+ return null;
57
+ try {
58
+ const raw = JSON.parse((0, fs_1.readFileSync)(p, 'utf-8'));
59
+ if (typeof raw.allowed !== 'boolean' || typeof raw.checkedAt !== 'number')
60
+ return null;
61
+ return {
62
+ allowed: raw.allowed,
63
+ state: raw.state ?? 'locked',
64
+ trialEndsAt: typeof raw.trialEndsAt === 'number' ? raw.trialEndsAt : undefined,
65
+ checkedAt: raw.checkedAt,
66
+ };
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * 端末側の最終判定。
74
+ *
75
+ * - キャッシュ無し → **ロックしない** (判定不能。デーモンが取りに行くまで待つ)
76
+ * - allowed=true → ロックしない
77
+ * - allowed=false → ロックする (サーバーが明確に「未課金」と言っている)
78
+ * - 古い allowed=true (7 日超) → ロックする (確認できないまま使い続けさせない)
79
+ *
80
+ * 最後の 1 つだけが「猶予」の実体である。**allowed=false は猶予の対象にしない** —
81
+ * 一度ロックと分かった後にオフラインへ逃げれば使える、では意味がないため。
82
+ */
83
+ function decideLock(snap, now = Date.now()) {
84
+ if (!snap)
85
+ return { locked: false };
86
+ if (!snap.allowed) {
87
+ return {
88
+ locked: true,
89
+ reason: 'トライアル期間が終了しました。ご利用を続けるにはプランのご購入が必要です (https://app.promptkaizen.ai/billing/)。',
90
+ };
91
+ }
92
+ const age = now - snap.checkedAt;
93
+ if (age > GRACE_MS) {
94
+ const days = Math.floor(age / (24 * 60 * 60 * 1000));
95
+ return {
96
+ locked: true,
97
+ reason: `ライセンスの確認が ${days} 日間できていません (猶予 ${exports.OFFLINE_GRACE_DAYS} 日)。ネットワークに接続すると自動で復帰します。`,
98
+ };
99
+ }
100
+ return { locked: false };
101
+ }
102
+ /** フックから使う同期ヘルパ。判定できないときは必ず「ロックしない」に倒す。 */
103
+ function isLocked(homeDir, now = Date.now()) {
104
+ return decideLock(loadEntitlement(homeDir), now);
105
+ }
106
+ //# sourceMappingURL=entitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,9 @@ export interface FetchMaskRulesOptions {
15
15
  * 組織/ユーザーのマスクルールを取得する。
16
16
  * - 未設定 (cloud に doc がない) → null (ローカル設定のみで動作)
17
17
  * - 通信エラー / 不正レスポンス → null + warn log (検知・送信は止めない)
18
+ *
19
+ * **利用可否 (entitlement) は rules の有無と独立して保存する。** ルール未設定の利用者でも
20
+ * ロック状態は知る必要があり、ここで早期 return すると永久に判定できないままになる。
18
21
  */
19
22
  export declare function fetchMaskRules(opts: FetchMaskRulesOptions): Promise<MaskRulesConfig | null>;
20
23
  //# sourceMappingURL=mask-rules-fetcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mask-rules-fetcher.d.ts","sourceRoot":"","sources":["../src/mask-rules-fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAWnD,gFAAgF;AAChF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAA;AAE/C,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGxD;AAsBD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAuBjG"}
1
+ {"version":3,"file":"mask-rules-fetcher.d.ts","sourceRoot":"","sources":["../src/mask-rules-fetcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAWnD,gFAAgF;AAChF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAA;AAE/C,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGxD;AAwBD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AASD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAkCjG"}
@@ -4,6 +4,7 @@ exports.MAX_RECEIVABLE_CUSTOM_RULES = void 0;
4
4
  exports.maskRulesUrl = maskRulesUrl;
5
5
  exports.fetchMaskRules = fetchMaskRules;
6
6
  const zod_1 = require("zod");
7
+ const entitlement_1 = require("./entitlement");
7
8
  const logger_1 = require("./logger");
8
9
  // =============================================
9
10
  // 組織マスクルールの取得 (Issue #43)
@@ -29,6 +30,8 @@ const MaskRulesSchema = zod_1.z.object({
29
30
  maskApiKeys: zod_1.z.boolean(),
30
31
  maskFilePaths: zod_1.z.boolean(),
31
32
  maskEmails: zod_1.z.boolean(),
33
+ // 伏せないマスクカテゴリ。未設定 = 除外なし (従来の挙動)。
34
+ disabledCategories: zod_1.z.array(zod_1.z.string().max(64)).max(32).optional(),
32
35
  }),
33
36
  customRules: zod_1.z
34
37
  .array(zod_1.z.object({
@@ -40,10 +43,19 @@ const MaskRulesSchema = zod_1.z.object({
40
43
  .max(1000),
41
44
  updatedAt: zod_1.z.number().optional(),
42
45
  });
46
+ const EntitlementSchema = zod_1.z.object({
47
+ allowed: zod_1.z.boolean(),
48
+ state: zod_1.z.enum(['trial', 'paid', 'org', 'comp', 'locked']),
49
+ trialEndsAt: zod_1.z.number().optional(),
50
+ checkedAt: zod_1.z.number().optional(),
51
+ });
43
52
  /**
44
53
  * 組織/ユーザーのマスクルールを取得する。
45
54
  * - 未設定 (cloud に doc がない) → null (ローカル設定のみで動作)
46
55
  * - 通信エラー / 不正レスポンス → null + warn log (検知・送信は止めない)
56
+ *
57
+ * **利用可否 (entitlement) は rules の有無と独立して保存する。** ルール未設定の利用者でも
58
+ * ロック状態は知る必要があり、ここで早期 return すると永久に判定できないままになる。
47
59
  */
48
60
  async function fetchMaskRules(opts) {
49
61
  const doFetch = opts.fetchImpl ?? fetch;
@@ -57,6 +69,17 @@ async function fetchMaskRules(opts) {
57
69
  return null;
58
70
  }
59
71
  const body = (await res.json());
72
+ const ent = EntitlementSchema.safeParse(body.entitlement);
73
+ if (ent.success) {
74
+ (0, entitlement_1.saveEntitlement)({
75
+ allowed: ent.data.allowed,
76
+ state: ent.data.state,
77
+ trialEndsAt: ent.data.trialEndsAt,
78
+ // サーバー時刻ではなく **受け取った側の時計** を猶予の起点にする
79
+ // (端末とサーバーの時刻ずれで猶予が消えたり伸びたりしないように)。
80
+ checkedAt: Date.now(),
81
+ });
82
+ }
60
83
  if (!body.success || body.rules == null)
61
84
  return null;
62
85
  const parsed = MaskRulesSchema.safeParse(body.rules);
@@ -1 +1 @@
1
- {"version":3,"file":"mask-rules-fetcher.js","sourceRoot":"","sources":["../src/mask-rules-fetcher.ts"],"names":[],"mappings":";;;AAoBA,oCAGC;AAiCD,wCAuBC;AA/ED,6BAAuB;AACvB,qCAAiC;AAGjC,gDAAgD;AAChD,0BAA0B;AAC1B,gDAAgD;AAChD,EAAE;AACF,wEAAwE;AACxE,2DAA2D;AAC3D,oDAAoD;AACpD,8BAA8B;AAE9B,gFAAgF;AAChF;;;GAGG;AACU,QAAA,2BAA2B,GAAG,IAAI,CAAA;AAE/C,SAAgB,YAAY,CAAC,WAAmB;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAA;IACnF,OAAO,GAAG,IAAI,aAAa,mCAA2B,EAAE,CAAA;AAC1D,CAAC;AAED,gEAAgE;AAChE,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE;QACxB,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE;QAC1B,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE;KACxB,CAAC;IACF,WAAW,EAAE,OAAC;SACX,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACjD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACnC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QAChC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;KACrB,CAAC,CACH;SACA,GAAG,CAAC,IAAI,CAAC;IACZ,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA;AAQF;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,IAA2B;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE;SACpD,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,eAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACtE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2C,CAAA;QACzE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QACpD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,eAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACrF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,eAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAA;QACrE,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mask-rules-fetcher.js","sourceRoot":"","sources":["../src/mask-rules-fetcher.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export interface MaskRulesConfig {
25
25
  maskApiKeys: boolean;
26
26
  maskFilePaths: boolean;
27
27
  maskEmails: boolean;
28
+ /** 伏せないマスクカテゴリ (shared の MaskCategoryId)。未設定 = 除外なし。 */
29
+ disabledCategories?: string[];
28
30
  };
29
31
  customRules: CustomMaskRule[];
30
32
  updatedAt?: number;
@@ -34,6 +36,8 @@ export interface EffectiveMaskConfig {
34
36
  maskApiKeys: boolean;
35
37
  maskFilePaths: boolean;
36
38
  maskEmails: boolean;
39
+ /** 伏せないマスクカテゴリ。組織設定があればそちらを正とする。 */
40
+ disabledCategories: string[];
37
41
  customRules: CustomMaskRule[];
38
42
  }
39
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pii-masker.d.ts","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwB1C,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,aAAa,UAAU,CAAA;AACpC,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAWD,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAA;QACpB,aAAa,EAAE,OAAO,CAAA;QACtB,UAAU,EAAE,OAAO,CAAA;KACpB,CAAA;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EACzB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAC9B,mBAAmB,CAqBrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACrC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+D;IAI9F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;gBAElE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE,gBAAqB;IAenE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYrC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAI9C;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7B,kEAAkE;IAClE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,UAAU;IAqBlB,wBAAwB;IACxB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;CAevB"}
1
+ {"version":3,"file":"pii-masker.d.ts","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwB1C,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,aAAa,UAAU,CAAA;AACpC,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAWD,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAA;QACpB,aAAa,EAAE,OAAO,CAAA;QACtB,UAAU,EAAE,OAAO,CAAA;QACnB,wDAAwD;QACxD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;KAC9B,CAAA;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EACzB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAC9B,mBAAmB,CAwBrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACrC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+D;IAI9F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE,gBAAqB;IAoBnE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYrC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAI9C;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7B,kEAAkE;IAClE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,UAAU;IAqBlB,wBAAwB;IACxB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;CAevB"}
@@ -7,6 +7,7 @@ exports.PiiMasker = exports.MAX_MASK_STATS_PER_ENTRY = exports.RULE_ID_IMAGE = e
7
7
  exports.resolveMaskConfig = resolveMaskConfig;
8
8
  const crypto_1 = require("crypto");
9
9
  const os_1 = __importDefault(require("os"));
10
+ const detection_1 = require("./detection");
10
11
  const secret_detector_1 = require("./secret-detector");
11
12
  // =============================================
12
13
  // PII マスキング (送信前に伏せる) — Issue #43 でルール駆動化
@@ -51,6 +52,7 @@ function resolveMaskConfig(local, remote) {
51
52
  maskApiKeys: local.maskApiKeys,
52
53
  maskFilePaths: local.maskFilePaths,
53
54
  maskEmails: local.maskEmails,
55
+ disabledCategories: [...(local.disabledCategories ?? [])],
54
56
  customRules: localCustom,
55
57
  };
56
58
  }
@@ -58,6 +60,8 @@ function resolveMaskConfig(local, remote) {
58
60
  maskApiKeys: remote.builtin.maskApiKeys,
59
61
  maskFilePaths: remote.builtin.maskFilePaths,
60
62
  maskEmails: remote.builtin.maskEmails,
63
+ // 除外カテゴリは組織設定を正とする (個人が勝手に増やせると統制が崩れる)。
64
+ disabledCategories: [...(remote.builtin.disabledCategories ?? [])],
61
65
  customRules: [...remote.customRules.filter((r) => r.enabled), ...localCustom],
62
66
  };
63
67
  }
@@ -68,9 +72,14 @@ class PiiMasker {
68
72
  // 秘密情報マスクは検出器に委譲 (#104)。確定ルール (キー/秘密鍵/JWT/トークン/
69
73
  // クレジットカード/マイナンバー) のみ伏せる。高エントロピーは検出専用で、マスキングでは
70
74
  // 無効化する (正当な識別子や base64 断片まで潰して本文を壊さないため)。
71
- secretRedactor = new secret_detector_1.SecretDetector({ enableEntropy: false });
75
+ secretRedactor;
72
76
  constructor(config, opts = {}) {
73
77
  this.effective = resolveMaskConfig(config, opts.remoteRules);
78
+ // 伏せないカテゴリは redactText へ ruleId 単位で渡す (検知は従来どおり動く)。
79
+ this.secretRedactor = new secret_detector_1.SecretDetector({
80
+ enableEntropy: false,
81
+ disabledRules: (0, detection_1.rulesForCategories)(this.effective.disabledCategories),
82
+ });
74
83
  this.homeDir = opts.homeDir ?? os_1.default.homedir();
75
84
  this.customPatterns = this.effective.customRules
76
85
  .map((rule) => {