Skip to content

[architecture][RFC] Provider Adapter v1 behind the capability registry #150

Description

@lidge-jun

배경

Provider Capability Registry는 완성됐습니다. 8개 lane(oauth, api, grok,
grok-api, agy, gemini-api, atlascloud, minimax)의 메타데이터가
중앙화됐고, parity 테스트가 routes/edit.ts / config.ts / Responses adapter /
MCP 제한 / runtime timeout을 실제로 읽어 일치를 검증합니다.

하지만 Registry는 control plane이지 플러그인 인터페이스가 아닙니다.

Registry가 답하는 것:

누가 존재하는가 / 무슨 모델을 갖는가 / 무슨 인증을 쓰는가 / 어떤 제한이 있는가

아직 하나의 인터페이스로 고정되지 않은 것: 실제 런타임 동작. 그래서 신규
provider는 여전히 core adapter, route, UI, 오류 처리, 테스트, package release를
횡단으로 건드립니다.

제안: Registry 뒤에 Adapter v1

interface ProviderAdapter {
  validateAuth(): Promise<AuthResult>;
  listModels(): Promise<Model[]>;
  generateImage(input: ImageRequest): Promise<JobHandle>;
  editImage(input: EditRequest): Promise<JobHandle>;
  generateVideo?(input: VideoRequest): Promise<JobHandle>;
  getJob?(id: string): Promise<JobSnapshot>;
  cancelJob?(id: string): Promise<void>;
  normalizeError(error: unknown): ProviderError;
}

첫 단계에서 npm package로 쪼갤 필요는 없습니다. 폴더 경계와 인터페이스를 먼저
고정합니다.

packages/
  core/
  provider-sdk/
  providers/{openai,grok,gemini,minimax}/

수용 조건

  • 신규 provider 구현 시 core 변경 5개 파일 이하
  • UI에 provider별 switch 문이 없음
  • Registry에서 모델·기능·제한 자동 생성
  • 공통 contract suite가 모든 adapter에 자동 적용
  • adapter가 자신의 오류 정규화를 소유
  • adapter 하나를 core 밖 실험 패키지로 로딩 성공

이것이 끝나기 전에 하지 말 것

새 provider를 추가하지 않는 것이 맞습니다. Adapter v1 없이 provider를 더
넣으면 Registry가 있어도 횡단 수정이 다시 늘어납니다.

근거: 2026-08-14 성숙도 재평가 (64/80) Phase 2-1. 아키텍처 점수를 58→69로 올린
것이 Registry였고, 다음 상승은 그 뒤의 adapter 계층에서 나옵니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: typescriptTypeScript migration and build/runtime typing workdependenciesPull requests that update a dependency filepriority: p1High priority after p0

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions