대시보드
Morit Plugin3. 화면과 사용자 경험

UI extension point

UI extension은 Host의 노출 위치와 Runtime config를 연결합니다.

json
{
  "id": "school_life.home",
  "point": "screen",
  "title": "학교 생활",
  "order": 10,
  "permissions": ["network", "storage"],
  "config": {
    "ui_schema": 2,
    "view": {"type": "text", "props": {"text": "오늘 학교 생활"}}
  }
}

point 선택

point노출 위치사용 기준
screen독립 플러그인 화면목록·상세·편집 등 주 작업
surface기존 일반 surface기존 패키지 호환; 새 화면은 screen 권장
menu홈 플러그인 메뉴독립 화면으로 가는 보조 진입점
action홈 extension 영역짧은 즉시 행동 또는 작은 embedded UI
card홈 extension 영역상태·진행·다음 행동 요약
settings플러그인 상세의 설정 영역사용자 설정과 Connection 진입
workspaceMorit AI 작업 공간 선택기대화와 함께 쓰는 독립 작업 surface
responsecapability를 실행한 AI 메시지 내부읽기 중심 결과와 후속 행동

일반 Tool/Skill은 자동으로 workspace가 되지 않습니다. AI 작업 공간 UI가 필요할 때만 별도 workspace extension을 선언합니다. Slash Command와 Tool discovery도 별도 계약입니다.

response는 Runtime v2와 config.a2ui가 모두 필수입니다. 활성 Instance의 권한과 capability data source가 확인되면 Host가 plugin.<extension-id> 컴포넌트로 동적 등록하고, AI가 최종 답변에 필요하다고 명시적으로 선택한 경우에만 렌더링합니다. 다른 point에 a2ui를 선언하거나 기존 Runtime v1 Response 형식을 사용하는 것은 오류입니다.

Home placement

Runtime v2의 cardaction은 고유 section을 만들 수 있습니다.

json
{
  "placement": {
    "section_id": "school_life.home",
    "section_title": "학교 생활",
    "section_order": 15,
    "layout": "grid",
    "show_header": true
  }
}

layoutstack, horizontal, grid입니다. 같은 플러그인에서 같은 section_id를 사용한 extension은 함께 배치됩니다. 다른 플러그인의 ID와 겹치지 않게 package namespace를 붙입니다. placementcardaction에서만 사용할 수 있습니다.

권한과 action

UI permissions는 Manifest 전역 권한의 부분집합입니다. 화면이 참조하는 capability도 자신의 권한을 따로 가집니다. UI가 표시됐다는 사실만으로 capability 권한이 허용되는 것은 아닙니다. invoke는 enabled, generation, granted permission, timeout을 Host 실행 경계에서 다시 확인합니다.

Runtime v1 호환

ui_schema가 없는 기존 extension은 sections, actions, form, shorthand capability/label을 사용하는 Runtime v1으로 읽힙니다. v1은 Response 이외의 기존 설치 호환용입니다. 새 서비스형 화면에는 state, data source, navigation, theme를 함께 사용할 수 있는 Runtime v2를 사용합니다.

Runtime v1 action style은 primary 또는 secondary이고, form field는 text, integer, select만 지원합니다. v1 JSON에 v2 필드를 섞으면 오류입니다.

다음은 UI Runtime v2 레퍼런스입니다.

UI extension point - Developers | Moring Developers