Discord 承認システム仕様書(実装済み)

概要

Discord起点タスクでAntigravityが承認待ちになった場合、Discordへ承認要求を投げ返す。 ローカル起点タスクは従来通りローカルUIで操作する。

ファイル構成

パス役割
utils/run_manager.pyrun_id生成, context.json, フォルダ構造
utils/approval_manager.pypending/resolved/archive管理, 多重発火防止, TTL
cogs/approval_watcher.pypending監視→Discord Embed→ボタンUI→resolved

SAVE_ROOT

C:\Users\umecc\GoogleDrive\AI_DROPBOX\inbound\anticrow\runs\<run_id>\
  ├─ context.json
  ├─ logs/run.log
  ├─ approvals/
  │   ├─ pending/
  │   ├─ resolved/
  │   └─ archive/
  ├─ artifacts/
  └─ snapshots/

フロー

  1. #ai-command にメッセージ → command_relay.pycreate_run(origin=discord) → context.json 生成 → VPS Hub push
  2. Worker が承認必要検知 → create_pending() → pending JSON 作成
  3. approval_watcher.py が5秒ポーリングで検出 → Discord Embed + Approve/Reject/Details
  4. ユーザーがボタン押下 → resolve_approval() → resolved JSON 作成 + pending → archive
  5. Worker が wait_for_resolution() で検出 → 再開 or 安全停止

安全制約

  • ボタン操作はホワイトリスト制限(Uさんのみ)
  • 多重発火防止(同一run_idでpending重複なし)
  • TTL超過で自動rejected
  • ローカル起点は承認システム不使用