--- name: ennoia-publish description: "Ennoia 에이전트의 운영 배포·상태 확인·중지, 기존 배포의 API 사용법·API 키 확인 링크·cURL 조회, App 생성·수정·공유 또는 명시적인 배포/App 삭제에 사용합니다. draft 저장만 요청된 경우에는 사용하지 않습니다." --- # Ennoia 배포와 App 관리 저장된 에이전트를 요청한 운영 상태로 전환하고 실제 결과를 확인한다. 응답 해석과 최종 안내는 [공통 응답 규칙](../../references/response-guide.md)을 적용한다. ## 실행 범위 Ennoia MCP의 `get_current_ennoia_project`로 대상 그룹·프로젝트를 확인해 표시한다. 사용자 선택이 없는 `auto_selected` 상태에서는 배포하지 않는다. 이미 승인된 구체적 배포·App 변경은 단계마다 다시 허락을 묻지 않는다. 배포 요청이 App 공개 공유나 기존 배포 중지까지 의미하지는 않는다. `list_multi_agents`/`get_multi_agent`로 대상 ID와 draft를 확인하고 `list_multi_agent_deployments`로 현재 배포를 확인한다. tool 입력은 현재 schema를 따른다. graph 수정·검증·저장이 필요한 요청은 `ennoia-build-agent`의 작업부터 완료한다. ## 배포 `deploy_multi_agent`에 사용자 대상, `operation_id`, 현재 schema의 옵션을 전달한다. 기존 배포를 중지하라는 요청이 없으면 `keep_previous_running=true`를 유지한다. 반환된 버전·상태와 `list_multi_agent_deployments`를 대조한다. timeout 또는 응답 유실은 배포 실패 확정이 아니다. 같은 에이전트의 현재 배포부터 조회하고, 동일 요청의 재시도에는 **기존 `operation_id`와 같은 payload**를 사용한다. 새 ID로 중복 배포를 만들지 않는다. 무한 재시도 대신 확인된 상태와 미확인 지점을 보고한다. 배포 후에는 사용자가 따로 묻지 않아도 [배포 사용 안내](references/deployment-usage.md)에 따라 배포 버전 열기·API 키 확인 링크와 기본 cURL을 제공한다. 새 대화의 API 사용법·키 확인 요청도 같은 reference를 적용한다. 호출 정보 조회를 위해 재배포하지 않는다. 사용자가 실행 검증도 요청했다면 `invoke_deployed_multi_agent` 또는 요청한 App 실행 경로로 실제 결과를 확인한다. 현재 schema에서 `api_key`가 선택 입력이면 생략해 서버가 권한 안에서 처리하도록 한다. 이전 schema가 키를 요구하면 이미 받은 배포 결과의 키를 도구 인자로만 사용한다. 키·사용자 ID를 사용자에게 다시 입력시키거나 답변·파일·공유 URL에 노출하지 않는다. 이전 backend가 키 생략을 거절하면 지원 차이를 설명하고 새 실행을 자동 재전송하지 않는다. 배포 Ready와 업무 결과 성공은 별도로 보고한다. `invoke_deployed_multi_agent`의 개인 MCP 연결은 backend가 MCP 로그인 계정의 사용자 ID를 검증해 내부 전달하는 방식으로 사용한다. 사용자에게 ID·인증 header를 요구하거나 도구 입력·Plugin 설정에 추가하지 않는다. 개인 인증이 필요한 도구라는 이유만으로 웹에서만 실행 가능하다고 단정하지 않는다. 실제 `MCP_CONNECTION_REQUIRED` 응답이면 [개인 외부 도구 연결 오류](../../references/response-guide.md#개인-외부-도구-연결-오류)에 따라 플랫폼 링크를 안내하고 실행 검증은 미완료로 남긴다. ## App과 공개 범위 App 생성·수정·복제·공유·삭제 요청은 [App 관리](references/apps-and-lifecycle.md)를 읽는다. 특정 App이 있으면 그 `assistant_hash`를 먼저 발견한다. 단순 에이전트 배포를 위해 App이나 공개 링크를 자동 생성하지 않는다. 새 `settings_readiness`·`settings_field_states`·`settings_input_required`는 실제 상세 응답에 있을 때만 사용한다. `complete`는 관측된 field가 충분하다는 뜻이며 원자적 PATCH·CAS가 있다는 뜻이 아니다. 이전 응답에는 새 field를 채워 넣지 않고 전체 설정 보존 여부를 제한 조회로 판단한다. 중지·삭제는 사용자 요청의 exact 대상·버전만 처리한다. 필요한 `confirm=true`는 서버 계약을 충족하기 위한 값이며 사용자의 실제 삭제 요청을 대신하지 않는다. `stop_multi_agent_deployment`와 `delete_multi_agent_deployment`의 선행 상태를 확인한다. ## 결과 프로젝트, 에이전트/App, 배포 버전·상태, 확인한 실행 결과와 변경된 공개 범위를 보고한다. [배포 사용 안내](references/deployment-usage.md)의 링크·예제·다음 행동을 함께 제공한다. 요청이 수락됐다는 사실만으로 배포·실행 완료라고 말하지 않는다.