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
@@ -356,9 +358,51 @@ function normalizePrimaryLlmMode(value: unknown): "codex_chatgpt_only" | "openai
356
358
returnvalue==="openai_api" ? value : "codex_chatgpt_only";
357
359
}
358
360
361
+
functionwritePrimaryLlmTradeoffGuidance(): void{
362
+
output.write(
363
+
[
364
+
"Primary LLM provider trade-off:",
365
+
"- codex: uses Sign in with ChatGPT, no OpenAI API key needed, best fit for interactive coding and implement_experiments.",
366
+
"- api: uses OpenAI API models, requires OPENAI_API_KEY, easier to control model choice and structured API behavior, but API usage is billed separately.",
367
+
""
368
+
].join("\n")
369
+
);
370
+
}
371
+
372
+
functionwritePdfAnalysisTradeoffGuidance(): void{
373
+
output.write(
374
+
[
375
+
"PDF analysis trade-off:",
376
+
"- codex: downloads PDFs locally and extracts text with local tools; cheaper to operate inside the current Codex flow, but extraction quality depends on local tooling.",
377
+
"- api: sends PDFs to the OpenAI Responses API; usually better document understanding, but slower and requires OPENAI_API_KEY.",
378
+
""
379
+
].join("\n")
380
+
);
381
+
}
382
+
359
383
asyncfunctionaskPrimaryLlmMode(
360
384
promptReader: PromptReader=askLine
361
385
): Promise<"codex_chatgpt_only"|"openai_api">{
386
+
if(promptReader===askLine){
387
+
constanswer=awaitaskChoice(
388
+
"Primary LLM provider",
389
+
[
390
+
{
391
+
label: "codex",
392
+
value: "codex_chatgpt_only",
393
+
description: "(ChatGPT sign-in, best for interactive coding)"
394
+
},
395
+
{
396
+
label: "api",
397
+
value: "openai_api",
398
+
description: "(OPENAI_API_KEY required, direct API control)"
0 commit comments