fix(resume): pass workspace, role, and epoch to update_yaml_resumed.sh to fix fallback silent bugs
This commit is contained in:
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user