mergegate/scripts/gate-bus-bridge.sh
林 駿甫 (Shunsuke Hayashi) f936605794 [追加] Bus ドッキング: gate-bus-bridge.sh + post-commit 統合 (#61)
scripts/gate-bus-bridge.sh:
  register: miyabi gate register 後に Bus に auto enqueue
  complete: miyabi gate merge 後に Bus に auto complete
  sync: tasks.json の pending タスクを Bus に一括 enqueue

post-commit hook に Bus bridge を統合:
  merge/完了コミットを検出 → Bus に complete 自動通知

Bus stats: 51 → 53 (sync テストで 2件 enqueue 成功)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 07:15:46 +09:00

105 lines
2.9 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Polaris ↔ Bus ブリッジ
#
# miyabi gate の操作後に miyabi bus を自動呼び出しする。
# post-commit hook から呼ばれるか、直接呼び出す。
#
# Usage:
# gate-bus-bridge.sh register <task-id> <title> [--issue N]
# gate-bus-bridge.sh complete <task-id>
# gate-bus-bridge.sh sync
set -euo pipefail
ACTION="${1:-}"
TASK_ID="${2:-}"
TITLE="${3:-}"
REPO="Miyabi-G-K/miyabi-cli-standalone"
case "$ACTION" in
register)
# miyabi gate register 後に Bus に自動 enqueue
if [ -z "$TASK_ID" ] || [ -z "$TITLE" ]; then
echo "Usage: gate-bus-bridge.sh register <task-id> <title>"
exit 1
fi
# Issue 番号を抽出
ISSUE_NUM=$(echo "$TASK_ID" | grep -oE '[0-9]+' | head -1)
echo "[Bus Bridge] enqueue: $TASK_ID ($TITLE)"
npx miyabi bus enqueue "$TITLE" \
--agent "polaris" \
--source "miyabi-gate" \
--priority "medium" \
${ISSUE_NUM:+--issue "$ISSUE_NUM"} \
${REPO:+--repo "$REPO"} \
2>/dev/null && echo "[Bus Bridge] ✅ enqueued" || echo "[Bus Bridge] ⚠️ enqueue failed (non-fatal)"
;;
complete)
# miyabi gate merge 後に Bus の該当タスクを complete
if [ -z "$TASK_ID" ]; then
echo "Usage: gate-bus-bridge.sh complete <task-id>"
exit 1
fi
echo "[Bus Bridge] completing: $TASK_ID"
# Bus の queue から該当タスクを探す
PR_ID=$(npx miyabi bus dispatch --json 2>/dev/null \
| python3 -c "
import sys,json
try:
data = json.load(sys.stdin)
for pr in data:
if '$TASK_ID' in pr.get('task','') or '$TASK_ID' in pr.get('id',''):
print(pr['id'])
break
except: pass
" 2>/dev/null)
if [ -n "$PR_ID" ]; then
npx miyabi bus complete "$PR_ID" 2>/dev/null \
&& echo "[Bus Bridge] ✅ completed: $PR_ID" \
|| echo "[Bus Bridge] ⚠️ complete failed"
else
echo "[Bus Bridge] task not found in Bus queue (already completed or not enqueued)"
fi
;;
sync)
# tasks.json の全タスクを Bus と同期
echo "[Bus Bridge] syncing tasks.json → Bus"
STORE="project_memory/tasks.json"
if [ ! -f "$STORE" ]; then
echo "[Bus Bridge] ⚠️ tasks.json not found"
exit 1
fi
# pending タスクを Bus に enqueue
python3 -c "
import json
with open('$STORE') as f:
data = json.load(f)
for task in data.get('tasks', []):
if task['current_state'] == 'pending':
print(f\"{task['id']}|{task['title']}\")
" 2>/dev/null | while IFS='|' read -r id title; do
echo "[Bus Bridge] enqueue: $id ($title)"
npx miyabi bus enqueue "$title" \
--agent "polaris" \
--source "miyabi-gate-sync" \
--priority "medium" \
2>/dev/null || true
done
echo "[Bus Bridge] ✅ sync complete"
;;
*)
echo "Usage: gate-bus-bridge.sh <register|complete|sync> [args...]"
exit 1
;;
esac