Files
ISEP/scripts/gitea-arm-status.sh
Leo c2638668e3 ISEP 0.1.0:環境設定收成一個 plugin,本機與雲端共用一份
leo 2026-08-20:「同一個 plugin 你用,薄殼也用,保證兩邊同步」
              「我要你幫雲端做薄殼,永遠都有問題,你要做的就是這組設定
                你自己可以 dogfooding」

搬進來:41 支 hook(51 條註冊)/7 支 command/2 支 skill/23 支腳本。
不搬 .env、wiki、docs——那些是知識不是環境。

51 條 hook 路徑全部從 $CLAUDE_PROJECT_DIR/.claude/hooks/ 改成 ${CLAUDE_PLUGIN_ROOT}/hooks/,
零漏網。那正是薄殼一直壞掉的根:雲端 cwd 不是真身,寫死路徑就斷。

尚未驗證:Claude Code 能不能從私有 Gitea repo 裝 marketplace(要憑證)。
下一步就是在本機實際裝一次,通了才動雲端 bootstrap.sh。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:41:46 +08:00

52 lines
2.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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
# gitea-arm-status.sh — 列出目前還「活著」的 ARM 待核請求(純讀、不打網路、不消耗任何東西)
#
# 🔴 為什麼存在(2026-08-13 實撞):
# 總管在測試 gitea-arm 機制時,為了重置測試狀態隨手 `rm -rf .claude/gitea-arm`
# 把剛請 leo 處理的那筆真請求也一起清掉了——leo 差點拿一組已經失效的代碼去回覆。
# **叫人做事然後把前提刪掉,浪費的是他的注意力**,而那正是這整套系統最該省的東西。
#
# ⇒ 規約:**發出請求後,不准動該請求的狀態檔**
# (不 `rm -rf .claude/gitea-arm/`、不手動刪 `pending/*.json`、不改內容)。
# 讓它自然被 `scripts/gitea-arm-check.sh` 消耗,或自然過期。
# 真的要清「已知作廢」的單一 nonce,也只刪那一個檔,不要整個目錄清空。
#
# ⇒ 這支的存在本身就是防呆:**清東西前先看看有沒有還活著的請求**,
# 別在不知道自己清了什麼的狀態下動那個目錄。
set -uo pipefail
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
# shellcheck source=lib/gitea-arm-common.sh
. "$SCRIPT_DIR/lib/gitea-arm-common.sh"
STATE_DIR=$(gitea_arm_state_dir)
PENDING_DIR="$STATE_DIR/pending"
NOW=$(date +%s)
shopt -s nullglob
PENDING_FILES=("$PENDING_DIR"/*.json)
shopt -u nullglob
if [ "${#PENDING_FILES[@]}" -eq 0 ]; then
echo "(沒有待核請求,這個目錄現在動它是安全的)"
exit 0
fi
echo "🔴 下面這些請求還活著——動 .claude/gitea-arm/ 之前先看這份清單:"
echo ""
for PF in "${PENDING_FILES[@]}"; do
NONCE=$(jq -r '.nonce // "?"' "$PF" 2>/dev/null)
MISSION=$(jq -r '.mission // "?"' "$PF" 2>/dev/null)
ISSUE=$(jq -r '.issue // "?"' "$PF" 2>/dev/null)
EXPIRES_AT=$(jq -r '.expires_at // 0' "$PF" 2>/dev/null)
case "$EXPIRES_AT" in ''|*[!0-9]*) EXPIRES_AT=0;; esac
EXPIRES_HUMAN=$(date -r "$EXPIRES_AT" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || date -d "@$EXPIRES_AT" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "?")
if [ "$NOW" -ge "$EXPIRES_AT" ]; then
STATUS="⌛ 已過期(下次 check 會自動清掉,不必手動動它)"
else
STATUS="⏳ 還在等 Leo 回覆($EXPIRES_HUMAN 前有效)"
fi
echo " $NONCE#$ISSUE)— $MISSION"
echo " $STATUS"
done