alpacon event wait

결과를 정하는 이벤트 하나가 올 때까지 기다렸다가 그 이벤트를 출력하고 종료합니다. 결과는 종료 코드가 알려주므로 스크립트가 문장을 파싱할 필요가 없습니다.

자동화에 쓰라고 만든 명령어입니다. “요청한다”와 “결과에 따라 움직인다” 사이에 끼워 두면 답이 오는 순간 그 단계가 끝납니다. 작업 세션을 요청한 AI 에이전트라면 wait를 돌린 뒤 종료 코드만 보고 분기하면 됩니다. 0이면 진행, 6이면 거절, 4면 아직 미정입니다. --type과 --target이 무엇인지는 이벤트 채널이란에서 설명합니다.

alpacon event wait --type TYPE [--target TARGET_ID] [--until SUB_TYPE...] [--timeout DURATION]

옵션 (Options)

  -h, --help                 wait 명령어에 대한 도움말 출력
      --target string        대상 리소스 ID. 서버가 대상 없는 구독을 허용하면 생략 가능
      --timeout duration     기다릴 시간 (기본값 5m0s)
      --type string          구독할 이벤트 타입 (예: work_session) (필수)
      --until strings        대기를 끝낼 서브 타입(쉼표 구분). 내장 조건을 덮어쓰며, 내장 조건이 없는 타입에는 필수

줄 형식은 전역 플래그 --output(table 또는 json)으로 정합니다.

종료 코드 (Exit codes)

코드뜻
0성공 집합에 해당하는 이벤트가 도착함
1대기를 시작하지 못함: 연결 실패, 구독 거부, 사용법 오류
4타임아웃 또는 중단. 결과는 아직 정해지지 않음
6실패 집합에 해당하는 이벤트가 도착함

종료 코드 4는 실패가 아니라 결과가 아직 미정이라는 뜻입니다. --output json을 쓰면 alpacon exec와 같은 형태로 stdout에 {"status": "pending_approval", ...}을 출력합니다.

종료 조건

내장 종료 조건이 있는 타입은 work_session 하나뿐입니다.

집합서브 타입종료 코드
성공approved, activated0
실패rejected, expired, revoked, cancelled, completed6

그 밖의 타입은 대기를 끝낼 서브 타입을 --until로 지정하세요. --until은 내장 조건도 덮어씁니다. 실패 집합이 함께 사라지므로 종료 코드 6은 나오지 않습니다.

--until은 이벤트의 서브 타입과 맞춰 보므로 서브 타입을 내보내는 이벤트 타입에서만 대기를 끝낼 수 있습니다. 서브 타입이 없는 타입에 쓰면 타임아웃까지 기다린 뒤 종료 코드 4로 끝납니다.

결과를 놓치지 않는 방법

내장 종료 조건이 있는 타입에 --target까지 주면 구독한 직후 현재 상태를 한 번 읽습니다. 구독과 첫 이벤트 사이에 결과가 지나가 버려도 놓치지 않습니다. 끊긴 동안 발행된 이벤트는 유실되므로 재연결할 때마다 다시 읽습니다. 다른 타입에는 이 읽기가 붙지 않습니다.

출력

stdout에 한 줄이 나가고, 형식은 alpacon event watch와 같습니다. 나머지는 모두 stderr로 나갑니다.

예제

작업 세션 승인을 기다린 뒤 결과에 따라 분기:

alpacon event wait --type work_session --target a1b2c3d4-5678-abcd-ef01-234567890abc
case $? in
  0) echo "approved" ;;
  4) echo "still pending" ;;
  6) echo "not approved" ;;
  *) echo "could not wait" ;;
esac

최대 30분 대기:

alpacon event wait --type work_session --target a1b2c3d4-5678-abcd-ef01-234567890abc --timeout 30m

내장 실패 집합을 무시하고 승인일 때만 끝내기:

alpacon event wait --type work_session --target a1b2c3d4-5678-abcd-ef01-234567890abc --until approved

대상 ID 찾기

alpacon work-session ls를 실행하거나 Alpacon 콘솔에서 확인하세요.

최종 수정: