배경
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를 추가하지 않는 것이 맞습니다. Adapter v1 없이 provider를 더
넣으면 Registry가 있어도 횡단 수정이 다시 늘어납니다.
근거: 2026-08-14 성숙도 재평가 (64/80) Phase 2-1. 아키텍처 점수를 58→69로 올린
것이 Registry였고, 다음 상승은 그 뒤의 adapter 계층에서 나옵니다.
배경
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
첫 단계에서 npm package로 쪼갤 필요는 없습니다. 폴더 경계와 인터페이스를 먼저
고정합니다.
수용 조건
이것이 끝나기 전에 하지 말 것
새 provider를 추가하지 않는 것이 맞습니다. Adapter v1 없이 provider를 더
넣으면 Registry가 있어도 횡단 수정이 다시 늘어납니다.
근거: 2026-08-14 성숙도 재평가 (64/80) Phase 2-1. 아키텍처 점수를 58→69로 올린
것이 Registry였고, 다음 상승은 그 뒤의 adapter 계층에서 나옵니다.