feat(mockup): add OpenAI Codex (gpt-5.6-sol + built-in image_gen) raster mockup generator

This commit is contained in:
airent106 committed 2026-10-29 11:33:33 -06:00
1 parent 744d29c003
commit 8a25771839
6 files changed
+215 -24

No files matched your search

+23 -8
View File
@@ -14,7 +14,8 @@ import {
NANO_BANANA_MODELS,
SURFACE_PRESETS,
buildNanoBananaPrompt,
generateWithNanoBanana
generateWithNanoBanana,
isCodexConfigured
} from "./nano_banana.js";
const __filename = fileURLToPath(import.meta.url);
@@ -328,7 +329,7 @@ export function createAppServer({
});
const storedKey = store.getSetting("gemini_api_key", "");
const selectedModel = body.model || store.getSetting("nano_banana_model", "gemini-nano-banana-2.1");
const selectedModel = body.model || store.getSetting("nano_banana_model", "codex-image-gen");
try {
const genResult = await generateWithNanoBanana({
@@ -479,12 +480,24 @@ export function createAppServer({
const savedKey = store.getSetting("gemini_api_key", "");
const envKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY || "";
const activeKey = savedKey || envKey;
const model = store.getSetting("nano_banana_model", "gemini-nano-banana-2.1");
const codexReady = isCodexConfigured();
const model = store.getSetting("nano_banana_model", "codex-image-gen");
return sendJson(res, 200, {
hasApiKey: Boolean(activeKey),
apiKeySource: savedKey ? "settings" : envKey ? "environment" : "none",
maskedKey: activeKey ? `${activeKey.slice(0, 4)}...${activeKey.slice(-4)}` : "",
hasApiKey: Boolean(activeKey) || codexReady,
codexReady,
apiKeySource: codexReady
? "OpenAI Codex (OAuth)"
: savedKey
? "settings"
: envKey
? "environment"
: "none",
maskedKey: activeKey
? `${activeKey.slice(0, 4)}...${activeKey.slice(-4)}`
: codexReady
? "Authenticated via ~/.codex/auth.json"
: "",
nanoBananaModel: model,
availableModels: NANO_BANANA_MODELS,
surfacePresets: Object.entries(SURFACE_PRESETS).map(([id, val]) => ({
@@ -504,10 +517,12 @@ export function createAppServer({
const savedKey = store.getSetting("gemini_api_key", "");
const envKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY || "";
const activeKey = savedKey || envKey;
const codexReady = isCodexConfigured();
return sendJson(res, 200, {
saved: true,
hasApiKey: Boolean(activeKey),
nanoBananaModel: store.getSetting("nano_banana_model", "gemini-nano-banana-2.1")
hasApiKey: Boolean(activeKey) || codexReady,
codexReady,
nanoBananaModel: store.getSetting("nano_banana_model", "codex-image-gen")
});
}
}