You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#885 (plugin contract v6) 완료 후, @lvis/plugin-sdk 의 계약/스키마 레이어가 크로스레포 락스텝 부담(host-types→SDK-sync→tag→frozen-dist→marketplace-submodule + 순환 schema re-export; 2개월 57 태그)이라는 문제 제기. architect + critic 독립 분석 결과:
SDK 통째 삭제 불가 — 플러그인은 ~/.lvis/plugins/ 앱 바깥 ESM 번들이고 tsup noExternal 강제로 SDK 런타임/UI 코드를 각 번들에 복사함. /ui(컴포넌트+테마), /runtime/electron(safeStorage 토큰 암호화), /runtime/network(사설 DNS egress)는 보안 민감·테스트 완비 → 공유 설치형 런타임 라이브러리는 반드시 유지.
"SDK는 스키마만 제공" 오해의 근원 = SDK README.md 의 stale 문구 "Source/type-only ... Does not ship runtime code" (v5.22.0 표기).
배경
#885 (plugin contract v6) 완료 후,
@lvis/plugin-sdk의 계약/스키마 레이어가 크로스레포 락스텝 부담(host-types→SDK-sync→tag→frozen-dist→marketplace-submodule + 순환 schema re-export; 2개월 57 태그)이라는 문제 제기. architect + critic 독립 분석 결과:~/.lvis/plugins/앱 바깥 ESM 번들이고 tsupnoExternal강제로 SDK 런타임/UI 코드를 각 번들에 복사함./ui(컴포넌트+테마),/runtime/electron(safeStorage 토큰 암호화),/runtime/network(사설 DNS egress)는 보안 민감·테스트 완비 → 공유 설치형 런타임 라이브러리는 반드시 유지.README.md의 stale 문구 "Source/type-only ... Does not ship runtime code" (v5.22.0 표기).결정: Option A — 계약 흡수 + SDK 슬림화
계약 레이어(스키마+검증기+타입생성)를 호스트로 흡수해 단일 SoT화하고, SDK를 락스텝 없는 런타임/UI 라이브러리로 슬림화한다. 런타임/UI 라이브러리는 유지(비협상).
이행 계획 (점진적, 호스트 우선 — big-bang 아님)
normalizeManifestlegacy 제거 (feat(sdk): #885 후속 (R) — 레거시 manifest reader 제거 (0.6.0, compat window 경과 후) #1570). 계약이 types+schema로 축소된 뒤 재구성.lvis-app/schemas/plugin-manifest.schema.json신설(pure v6, types.ts 옆) + 호스트 자체 AJV 검증기.manifest-validation.ts의await import("@lvis/plugin-sdk")+ compat probe 6종 삭제. deadsync-schema-from-host.mjs제거. in-host schema↔types 테스트 추가.config.pyplugin_schema_url을 호스트 발행 스키마로 repoint + 오프라인 폴백(vendor 서브모듈) 갱신. (schema_loader 는 이미 URL fetch.)@lvis/plugin-runtime-ui로 rename. README 재작성(stale 문구 교정). host CI가 plugins용 types(+schema) 발행하도록 배선. SDK 독립 SemVer.리스크 (분석 도출)
schema_loader가 stale 스키마를 조용히 서빙 안 함.참고