Skip to content

Commit 0cde1e0

Browse files
meme-dayoclaude
andcommitted
feat: periodic_monitor.shがTMUX環境変数から自動的にプロジェクト名を検出
- $TMUX環境変数からセッション名を取得 - _PMまたは_Workers接尾辞からプロジェクト名を抽出 - マルチプロジェクト環境での干渉を完全に防止 🤖 Generated with Claude Code Co-Authored-By: Claude <[email protected]>
1 parent 6341b86 commit 0cde1e0

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

telemetry/periodic_monitor.sh

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,29 @@ set -e
88
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
99
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
1010

11+
# TMUXセッションから自動的にプロジェクト名を検出
12+
if [ -n "$TMUX" ]; then
13+
# 現在のtmuxセッション名を取得
14+
CURRENT_SESSION=$(tmux display-message -p '#S' 2>/dev/null || echo "")
15+
16+
# プロジェクト名を抽出(最後の_PMまたは_Workersを削除)
17+
if [[ "$CURRENT_SESSION" =~ ^(.*)_PM$ ]]; then
18+
PROJECT_NAME="${BASH_REMATCH[1]}"
19+
elif [[ "$CURRENT_SESSION" =~ ^(.*)_Workers[0-9]*$ ]]; then
20+
PROJECT_NAME="${BASH_REMATCH[1]}"
21+
else
22+
# パターンにマッチしない場合はデフォルト
23+
PROJECT_NAME="Team1"
24+
fi
25+
else
26+
# TMUX外から起動された場合のフォールバック
27+
PROJECT_NAME="Team1"
28+
fi
29+
30+
# 検出されたプロジェクト名でセッション名を構築
31+
PM_SESSION="${PROJECT_NAME}_PM"
32+
WORKER_SESSION="${PROJECT_NAME}_Workers1"
33+
1134
# ログファイル
1235
LOG_FILE="$PROJECT_ROOT/Agent-shared/periodic_monitor.log"
1336
PID_FILE="$PROJECT_ROOT/Agent-shared/periodic_monitor.pid"
@@ -59,7 +82,8 @@ cleanup_existing_processes
5982
# 新しいPIDを記録
6083
echo $$ > "$PID_FILE"
6184

62-
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] Periodic monitor started (PID: $$)" >> "$LOG_FILE"
85+
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] Periodic monitor started (PID: $$, Project: ${PROJECT_NAME})" >> "$LOG_FILE"
86+
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] Monitoring sessions: ${PM_SESSION}, ${WORKER_SESSION}" >> "$LOG_FILE"
6387
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] Config: UPDATE_INTERVAL_SEC=${UPDATE_INTERVAL_SEC}s, MILESTONE_INTERVAL_MIN=${MILESTONE_INTERVAL_MIN}min, MAX_RUNTIME_MIN=${MAX_RUNTIME_MIN}min" >> "$LOG_FILE"
6488

6589
# Python実行コマンドを決定
@@ -129,9 +153,9 @@ START_EPOCH=$(date -d "$START_TIME" +%s 2>/dev/null || date -u +%s)
129153
echo $BASHPID > "$CHILD_PID_FILE"
130154

131155
while true; do
132-
# プロジェクト名を含むセッションの存在確認(より安全な方法
133-
if ! tmux list-panes -t Team1_PM 2>/dev/null | grep -q . && \
134-
! tmux list-panes -t Team1_Workers1 2>/dev/null | grep -q .; then
156+
# プロジェクト名を含むセッションの存在確認(動的に検出
157+
if ! tmux list-panes -t "$PM_SESSION" 2>/dev/null | grep -q . && \
158+
! tmux list-panes -t "$WORKER_SESSION" 2>/dev/null | grep -q .; then
135159
# 該当プロジェクトのセッションが存在しない場合のみ終了
136160
exit 0
137161
fi
@@ -182,10 +206,10 @@ LAST_MILESTONE=0
182206
MILESTONE_CHECK_INTERVAL=$((MILESTONE_INTERVAL_MIN * 60)) # 分を秒に変換
183207

184208
while true; do
185-
# プロジェクト名を含むセッションの存在確認(より安全な方法
186-
if ! tmux list-panes -t Team1_PM 2>/dev/null | grep -q . && \
187-
! tmux list-panes -t Team1_Workers1 2>/dev/null | grep -q .; then
188-
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] No project tmux sessions found, exiting" >> "$LOG_FILE"
209+
# プロジェクト名を含むセッションの存在確認(動的に検出
210+
if ! tmux list-panes -t "$PM_SESSION" 2>/dev/null | grep -q . && \
211+
! tmux list-panes -t "$WORKER_SESSION" 2>/dev/null | grep -q .; then
212+
echo "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] No project tmux sessions found (${PROJECT_NAME}), exiting" >> "$LOG_FILE"
189213
cleanup_and_exit
190214
fi
191215

0 commit comments

Comments
 (0)