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>.category가read | 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: 사용자가 수정 가능한 설정 필드 + 기본값.
사용자가 보는 흐름
- 01
Marketplace 에서 deeplink
웹 페이지의 “설치” 버튼이
lvis://install/<slug>또는lvis://install/<type>/<slug>발사. 호스트가 URL 받아 처리 (lvis-protocol.ts:72). - 02
패키지 + 서명 검증
sigMarketplace가 발급한 Ed25519 서명 envelope을 호스트가 검증. 알려진 public key 와 매칭되는 서명이 1개 이상이면 통과 (
marketplace/server/src/lvis_marketplace/signing.py:219). - 03
권한 다이얼로그 — 한 번에 모두
manifest 파싱 결과를 capabilities / tools / pluginAccess / secrets 별 카테고리로 묶어 표시. 사용자 확인 후 grant 저장.
- 04
최초 활성화
start()~/.lvis/plugins/<pluginId>/자기 namespace 생성 (0o700). 플러그인start()콜백 호출 —hostApi.registerKeywords있다면 등록.
권한 회수 후 동작
설치 후에도 호스트 설정 → 플러그인 → 해당 플러그인 → 권한 관리에서 grant 회수 가능. 회수 상태에서 도구 호출이 들어오면 fallback 없이 즉시 reject + 재허용 카드 발사 (LVIS no-fallback 룰).