diff --git a/.agents/skills/multi-agent-mux-resume/scripts/resume_session.sh b/.agents/skills/multi-agent-mux-resume/scripts/resume_session.sh index 4dd6220..a35a542 100755 --- a/.agents/skills/multi-agent-mux-resume/scripts/resume_session.sh +++ b/.agents/skills/multi-agent-mux-resume/scripts/resume_session.sh @@ -116,6 +116,6 @@ sleep 2 # 5. Update agent-sessions.yaml: status running, last_visible_status bash "$(dirname "${BASH_SOURCE[0]}")/update_yaml_resumed.sh" \ - --session "$SESSION_NAME" --uuid "$UUID" --agent "$AGENT" + --session "$SESSION_NAME" --uuid "$UUID" --agent "$AGENT" --workspace "$WORKSPACE" echo "Successfully resumed $SESSION_NAME ($AGENT)" diff --git a/.agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh b/.agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh index 4986848..98d383f 100755 --- a/.agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh +++ b/.agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh @@ -17,13 +17,16 @@ EOF SESSION_NAME="" UUID="" -AGENT="" +WORKSPACE="" +ROLE="" while [ $# -gt 0 ]; do case "$1" in - --session) SESSION_NAME="$2"; shift 2 ;; - --uuid) UUID="$2"; shift 2 ;; - --agent) AGENT="$2"; shift 2 ;; + --session) SESSION_NAME="$2"; shift 2 ;; + --uuid) UUID="$2"; shift 2 ;; + --agent) AGENT="$2"; shift 2 ;; + --workspace) WORKSPACE="$2"; shift 2 ;; + --role) ROLE="$2"; shift 2 ;; -h|--help) usage; exit 0 ;; *) echo "ERROR: unknown arg: $1" >&2; exit 2 ;; esac @@ -39,15 +42,24 @@ export HERDR_SERVER_NAME # --agent 미지정 시 이름 suffix 로 fallback (P1-F: 가능하면 --agent 명시) if [ -z "$AGENT" ]; then case "$SESSION_NAME" in - *-creator-claude) AGENT=claude ;; - *-creator-agy) AGENT=agy ;; - *-creator-hermes) AGENT=hermes ;; - *-creator-cline) AGENT=cline ;; + *-creator-claude|*-planner-claude|*-reviewer-claude) AGENT=claude ;; + *-creator-agy|*-planner-agy|*-reviewer-agy) AGENT=agy ;; + *-creator-hermes|*-planner-hermes|*-reviewer-hermes) AGENT=hermes ;; + *-creator-cline|*-planner-cline|*-reviewer-cline) AGENT=cline ;; *) echo "ERROR: cannot infer agent from '$SESSION_NAME'; pass --agent" >&2; exit 2 ;; esac fi +if [ -z "$ROLE" ]; then + case "$SESSION_NAME" in + *-planner-*) ROLE="planner" ;; + *-reviewer-*) ROLE="reviewer" ;; + *) ROLE="creator" ;; + esac +fi + NOW_ISO=$(date -u +'%Y-%m-%dT%H:%M:%SZ') +NOW_EPOCH=$(date +%s) # 새 herdr pane pid / 자식 pid 를 bash 에서 캡처 (env 로 전달, P1-B) PANE_PID=$(_herdr list-panes -t "$SESSION_NAME" -F '#{pane_pid}' 2>/dev/null | head -1 || true) @@ -70,11 +82,15 @@ for s in d.get('herdr_sessions', []): atomic_dump_yaml "$AGENT_SESSIONS_YAML" \ SESSION_NAME="$SESSION_NAME" UUID="$UUID" AGENT="$AGENT" NOW_ISO="$NOW_ISO" \ + NOW_EPOCH="$NOW_EPOCH" TARGET_WORKSPACE="${WORKSPACE:-$WORKSPACE_ROOT}" ROLE="$ROLE" \ PANE_PID="$PANE_PID" CHILD_PID="$CHILD_PID" <<'PYEOF' name = os.environ['SESSION_NAME'] uuid = os.environ['UUID'] agent = os.environ['AGENT'] now = os.environ['NOW_ISO'] +epoch = int(os.environ.get('NOW_EPOCH', '0') or '0') +ws_root = os.environ.get('TARGET_WORKSPACE', '') or os.environ.get('WORKSPACE_ROOT', '') +role = os.environ.get('ROLE', 'creator') pane_pid = os.environ.get('PANE_PID', '') target = None @@ -84,14 +100,13 @@ for s in d.get('herdr_sessions', []): break if target is None: - ws_root = os.environ.get('WORKSPACE_ROOT', '') server_name = os.environ.get('HERDR_SERVER_NAME', 'multi-agent-mux') target = { 'name': name, 'status': 'running', - 'role': 'creator', + 'role': role, 'herdr_session_created_at': now, - 'herdr_session_epoch': int(os.environ.get('NOW_EPOCH', '0') or '0'), + 'herdr_session_epoch': epoch, 'herdr_server': server_name, 'delegate_job_id': None, 'pane': {'index': 0, 'pid': int(pane_pid) if pane_pid.isdigit() else 0, 'cmd': agent, 'cwd': ws_root},