Plugins
권한 허용 흐름
플러그인이 처음 활성화될 때 manifest 선언과 호스트가 분류한 도구 위험도, pluginAccess, hostSecrets, agentApprovalScopes를 사용자에게 한번에 표시하는 통합 다이얼로그.
manifest 로부터 검토되는 항목
- capabilities: 형식 검증된 기능 태그. 호스트가 런타임에 강제하는 집합에는 두 개 가 들어 있고, 그 집합 밖의 문자열은 그 두 게이트를 열지 못합니다. 다만 “게이트가 아니다” 가 “아무 효과도 없다” 는 뜻은 아닙니다 — 호스트가 어느 플러그인이 어떤 역할을 맡는지 찾을 때 이 문자열을 조회 키로 쓰는 자리가 있어서, 선언 하나로 그 역할의 도구 표면 전체가 그 플러그인에 배선될 수 있습니다.
- tools[]: 순수 MCP
Tool객체 목록. 호스트가 입력 스키마와 실행 경로로 위험도를 분류하며, 서명된tool._meta["lvisai/operationPolicy"]는 operation별 최소 위험도와 read-before-write 요구를 강화할 수만 있음. - 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 받아 처리 (src/main/lvis-protocol.ts). - 02
패키지 + 서명 검증
sigMarketplace가 발급한 Ed25519 서명 envelope을 호스트가 검증. 알려진 public key 와 매칭되는 서명이 1개 이상이면 통과 (
marketplace/server/src/lvis_marketplace/signing.py). - 03
권한 다이얼로그 — 한 번에 모두
manifest 파싱 결과와 호스트가 분류한 도구 위험도를 capabilities / tools / pluginAccess / secrets 별로 묶어 표시. 사용자 확인 후 grant 저장.
- 04
최초 활성화
start()~/.lvis/plugins/<pluginId>/자기 namespace 생성 (0o700). 검증된 Skill, Hook, MCP 서버를 플러그인 런타임과 함께 원자적으로 활성화.
권한 회수 후 동작
설치 후에도 호스트 설정 → 플러그인 → 해당 플러그인 → 권한 관리에서 grant 회수 가능. 회수 상태에서 도구 호출이 들어오면 fallback 없이 즉시 reject + 재허용 카드 발사 (LVIS no-fallback 룰).