본문으로 건너뛰기
LVIS AI

Plugins

권한 허용 흐름

플러그인이 처음 활성화될 때 manifest로 선언한 권한 요소(capabilities · tools 카테고리 · pluginAccess · hostSecrets · agentApprovalScopes)를 사용자에게 한번에 표시하는 통합 다이얼로그.

플러그인 최초 활성 시 권한 허용 다이얼로그

manifest 로부터 검토되는 항목

  • capabilities: 닫힌 enum 12종 — mail-source, calendar-source, meeting-recorder, knowledge-index, background-watcher, external-auth-consumer, document-indexer, routine-provider, lifecycle-observer, worker-client, ms-graph-consumer, host:overlay.
  • tools[]: 도구 이름 목록. 각 도구의 toolSchemas.<name>.categoryread | write | shell | network | meta 중 무엇인지 카테고리별로 묶어 노출.
  • pluginAccess: 다른 plugin 의 어떤 도구/이벤트를 사용할지 (예: work-assistant 가 ms-graph 의 msgraph_calendar_today 호출).
  • agentApprovalScopes: cross-plugin 위험 액션의 표준 라벨 (예: agent_file_share, agent_task_delegate, agent_external_api_call).
  • hostSecrets / llmKeySource: secret 접근 / LLM 키 vendor 선언.
  • configSchema: 사용자가 수정 가능한 설정 필드 + 기본값.

사용자가 보는 흐름

  1. 01

    Marketplace 에서 deeplink

    웹 페이지의 “설치” 버튼이 lvis://install/<slug> 또는 lvis://install/<type>/<slug> 발사. 호스트가 URL 받아 처리 (lvis-protocol.ts:72).

  2. 02

    패키지 + 서명 검증

    sig

    Marketplace가 발급한 Ed25519 서명 envelope을 호스트가 검증. 알려진 public key 와 매칭되는 서명이 1개 이상이면 통과 (marketplace/server/src/lvis_marketplace/signing.py:219).

  3. 03

    권한 다이얼로그 — 한 번에 모두

    manifest 파싱 결과를 capabilities / tools / pluginAccess / secrets 별 카테고리로 묶어 표시. 사용자 확인 후 grant 저장.

  4. 04

    최초 활성화

    start()

    ~/.lvis/plugins/<pluginId>/ 자기 namespace 생성 (0o700). 플러그인 start() 콜백 호출 — hostApi.registerKeywords 있다면 등록.

권한 회수 후 동작
설치 후에도 호스트 설정 → 플러그인 → 해당 플러그인 → 권한 관리에서 grant 회수 가능. 회수 상태에서 도구 호출이 들어오면 fallback 없이 즉시 reject + 재허용 카드 발사 (LVIS no-fallback 룰).