Context
GptImageProvider at lib/providers/image.ts:40-42 is a mock. Per ROUTING-MATRIX.md, gpt-image is the default for quote cards, carousels, inpaint, and before/after — anywhere typography precision matters.
Goal
Real adapter calling OpenAI's images.generate (and images.edit for inpaint).
Acceptance criteria
Files
lib/providers/image.ts:40-42
.skills/gpt-image-prompt-builder/SKILL.md (no code change — read-only reference)
Depends on
- #provider-mocks-isolation, #policy-module
Context
GptImageProvideratlib/providers/image.ts:40-42is a mock. Per ROUTING-MATRIX.md, gpt-image is the default for quote cards, carousels, inpaint, and before/after — anywhere typography precision matters.Goal
Real adapter calling OpenAI's
images.generate(andimages.editfor inpaint).Acceptance criteria
openaiSDK (gpt-image-1model)aspect(1:1/4:5/9:16/16:9) to OpenAI sizes (1024x1024,1024x1536, etc.) — fallback to closest supported with warningn(number of variants) andtransparent_backgroundflag (passed bygpt-image-prompt-builderskill)outputs/<client>/<date>/<piece-id>/<slot>-<seed>.pngoutput: string[]cost_usdfrom OpenAI pricing table (use sharedlib/providers/cost.ts)DRY_RUN=trueFiles
lib/providers/image.ts:40-42.skills/gpt-image-prompt-builder/SKILL.md(no code change — read-only reference)Depends on