본문으로 건너뛰기
LVIS AI

Marketplace · Publisher

퍼블리셔 대시보드 & lvis-publish CLI

PublisherDashboard / PublishPage 가 패키지 업로드를 관리. CLI lvis-publish 도 같은 endpoint 사용. 모든 업로드는 Ed25519 서명 envelope 으로 보호되며 admin pending 큐에 들어갑니다.

POST /plugins/{slug}/versions
Ed25519 multi-sig
@lvis-marketplace/cli
퍼블리셔 대시보드
퍼블리셔 — 업로드 흐름

업로드 흐름

  1. 01

    lvis-publish login / status

    CLI

    CLI 로 ApiKey 등록 (role=publisher). 키는 sha256 hash 로 서버 api_keys.key_hash 에 저장.

  2. 02

    lvis-publish publish <zip>

    로컬 plugin 디렉토리를 zip 으로 패키징. cli/src/commands/publish.tsPOST /api/v1/plugins/{slug}/versions 호출 (server/src/lvis_marketplace/api/publisher.py:126).

  3. 03

    Ed25519 서명

    sig

    publisher private key 로 패키지 서명. 서버는 알려진 public key 와 매칭되는 서명이 최소 1개 있어야 통과 (signing.py:178 sign_artifact_multi, :219 verify_artifact).

  4. 04

    Pending review

    서명 통과 후 admin /api/v1/publishes/pending 큐에 들어감. 사용자에게는 아직 노출되지 않음.

  5. 05

    Admin 승인

    공개

    admin이 POST /publishes/{publish_id}/approve 호출 → 카탈로그에 노출 + 다운로드 가능.

CLI 명령 (실제 구현)

lvis-publish login     # ApiKey 등록
lvis-publish logout
lvis-publish status
lvis-publish list                 # 내가 올린 패키지
lvis-publish show <slug>          # 단일 패키지 상세
lvis-publish publish <zip>        # 새 버전 업로드
lvis-publish yank <slug> <ver>    # 버전 yank (admin 필요)
lvis-publish approve [id]         # admin 권한
lvis-publish reject <id>          # admin 권한
버전 정책 — SemVer + immutable
업로드된 PluginVersion 은 immutable. 같은 (slug, version) 재업로드는 거절. 문제 발생 시 새 버전 + yank 또는 admin rollback 만 사용.