@tyhld/conductor 0.12.22 → 0.12.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyhld/conductor",
3
- "version": "0.12.22",
3
+ "version": "0.12.23",
4
4
  "description": "采配くん管制の見守りアプリ(conductor-agent)。各PCで常駐し、中央(devlog-tracker)へ定期的に生存報告(heartbeat)を送る常駐CLI。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -126,7 +126,9 @@ branch protection は「CI が通っていない物を main に入れない」
126
126
  5. **SQL の字面**は、実行しうる入口のときだけ見ます。入口とは、DB の道具・移行の道具・その場で走らせる形
127
127
  (`python3 -c`・`node -e`・`python3 - <<EOF`・DB の道具へ流す形)・知らない実行ファイルです。
128
128
  6. 本番反映は、`wrangler deploy`(`--dry-run` を除く)・`wrangler versions/pages deploy`・`vercel --prod`・
129
- `vercel promote/alias/rollback`・`npm/pnpm/yarn publish`・`supabase functions deploy`・「deploy の語+`--prod`」です。
129
+ `vercel promote/alias/rollback`・`vercel domains add/rm/buy/move/transfer`(本番ドメインの変更・便 6d6f2ff8)・
130
+ `npm/pnpm/yarn publish`・`supabase functions deploy`・「deploy の語+`--prod`」です。
131
+ ★Preview への公開(`vercel`・`vercel deploy`・`--prod` 無し)と、読み取り(`vercel domains ls`・`vercel ls` 等)は自走です。
130
132
 
131
133
  ★**止める側(deny)は変えていません**。危険と抜け道の判定は、今までどおり機械的な区切り(`split_segments`)で見ます
132
134
  (引用符の中まで見る方が、止める側としては広いため)。7日分の記録では、DENY の件数は前後で同じ(1,559件)でした。
@@ -2804,6 +2804,13 @@ def _gate_release(words, tokens):
2804
2804
  for w in words[1:]:
2805
2805
  if w in ('promote', 'alias', 'rollback'):
2806
2806
  return f'vercel {w}'
2807
+ # ★本番ドメインの変更(追加・削除・移管・購入)だけ関門。ls・inspect は読み取りなので自走
2808
+ # (便 6d6f2ff8・えふさん確定 #1: プレビューは自走・本番へ影響する操作は関門・強める向きのみ)。
2809
+ if 'domains' in words[1:]:
2810
+ after = [w for w in words[words.index('domains') + 1:] if not w.startswith('-')]
2811
+ if after[:1] and after[0] in ('add', 'rm', 'remove', 'buy', 'move',
2812
+ 'transfer', 'transfer-in'):
2813
+ return f'vercel domains {after[0]}'
2807
2814
  if v == 'wrangler' and '--dry-run' not in tokens and (
2808
2815
  words[1:2] in (['deploy'], ['publish'])
2809
2816
  or words[1:3] in (['versions', 'deploy'], ['pages', 'deploy'])):
@@ -1028,6 +1028,35 @@ if "allow" in perms:
1028
1028
  del perms["allow"]
1029
1029
  changes.append(f"permissions.allow を全削除({n} 件・関門素通りの原因を除去。deny は非改変)")
1030
1030
 
1031
+ # --- (2c) 自動許可封じのキー名・値を正す(便 6d6f2ff8=便2.7) ---
1032
+ # 【なぜ要るか(調査 6fd6eee0 の重大発見3)】utatane-backend の設定は、bypassPermissions モード
1033
+ # (全部自動で許可)を封じるキーが disableBypassPermissions: true になっていて、正しい名前と違う。
1034
+ # 間違ったキー名は Claude Code から無視される=封じが効かない。見本と他の全現場は
1035
+ # disableBypassPermissionsMode: "disable"。
1036
+ # 【正しいキーと値(出典)】permissions.disableBypassPermissionsMode を "disable" にする。
1037
+ # 出典: https://code.claude.com/docs/en/permissions (91行・632行。確認日 2026-09-18)
1038
+ # 「set permissions.disableBypassPermissionsMode ... to "disable" in any settings file」。
1039
+ # ★managed settings が最も強いが、どのスコープの settings でも効く(同ページ 632行)。
1040
+ # ★触るのはこのキーだけ。allow・ask・deny・hooks・sandbox・defaultMode には一切触れない。
1041
+ # ★冪等: 既に正しい名前と値なら何もしない(2回流しても差分は出ない)。
1042
+ _BYPASS_WRONG = "disableBypassPermissions" # 誤ったキー名(値も true 等)
1043
+ _BYPASS_RIGHT = "disableBypassPermissionsMode" # 正しいキー名
1044
+ _BYPASS_VALUE = "disable" # 正しい値(文字列・公式)
1045
+ if _BYPASS_WRONG in perms:
1046
+ _had = perms.pop(_BYPASS_WRONG)
1047
+ if perms.get(_BYPASS_RIGHT) != _BYPASS_VALUE:
1048
+ perms[_BYPASS_RIGHT] = _BYPASS_VALUE
1049
+ changes.append(
1050
+ f'自動許可封じのキーを是正: {_BYPASS_WRONG}={json.dumps(_had)} → '
1051
+ f'{_BYPASS_RIGHT}="{_BYPASS_VALUE}"(誤ったキー名は本体に無視され封じが効かない)')
1052
+ else:
1053
+ changes.append(f'古い重複キー {_BYPASS_WRONG} を削除({_BYPASS_RIGHT} は既に正しい)')
1054
+ elif _BYPASS_RIGHT in perms and perms.get(_BYPASS_RIGHT) != _BYPASS_VALUE:
1055
+ # 正しいキー名だが値が "disable" 以外(例 true)=公式の値へ揃えて確実に効かせる。
1056
+ _old = perms[_BYPASS_RIGHT]
1057
+ perms[_BYPASS_RIGHT] = _BYPASS_VALUE
1058
+ changes.append(f'自動許可封じの値を是正: {_BYPASS_RIGHT}={json.dumps(_old)}→"{_BYPASS_VALUE}"')
1059
+
1031
1060
  # --- (3) サンドボックスのネット許可の不足分を追記 ---
1032
1061
  # 職人が通信するたびに Claude Code のサンドボックスが「Network request outside of sandbox」を
1033
1062
  # 聞いてくる。これは番人(cc2_guard)の判定とは別の OS レベルのゲートなので、番人では消えない。