























@@ -229,6 +229,7 @@ async function buildAllOpenAiCodexRows(opts: { supplementCatalog?: boolean } = {
229229const seenKeys = listRowsModule.appendDiscoveredRows({
230230rows: rows as never,
231231models: loaded.models as never,
232+modelRegistry: loaded.registry as never,
232233context: context as never,
233234});
234235if (opts.supplementCatalog !== false) {
@@ -576,6 +577,74 @@ describe("modelsListCommand forward-compat", () => {
576577]);
577578});
578579580+it("uses provider runtime metadata for discovered codex gpt-5.5 rows", async () => {
581+mocks.resolveConfiguredEntries.mockReturnValueOnce({ entries: [] });
582+mocks.loadModelRegistry.mockResolvedValueOnce({
583+models: [
584+{
585+provider: "openai-codex",
586+id: "gpt-5.5",
587+name: "GPT-5.5",
588+api: "openai-codex-responses",
589+baseUrl: "https://chatgpt.com/backend-api",
590+input: ["text", "image"],
591+contextWindow: 272000,
592+maxTokens: 128000,
593+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
594+},
595+],
596+availableKeys: new Set(["openai-codex/gpt-5.5"]),
597+registry: {
598+getAll: () => [
599+{
600+provider: "openai-codex",
601+id: "gpt-5.5",
602+name: "GPT-5.5",
603+api: "openai-codex-responses",
604+baseUrl: "https://chatgpt.com/backend-api",
605+input: ["text", "image"],
606+contextWindow: 272000,
607+maxTokens: 128000,
608+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
609+},
610+],
611+},
612+});
613+mocks.resolveModelWithRegistry.mockImplementation(
614+({ provider, modelId }: { provider: string; modelId: string }) =>
615+provider === "openai-codex" && modelId === "gpt-5.5"
616+ ? {
617+provider: "openai-codex",
618+id: "gpt-5.5",
619+name: "GPT-5.5",
620+api: "openai-codex-responses",
621+baseUrl: "https://chatgpt.com/backend-api",
622+input: ["text", "image"],
623+contextWindow: 400000,
624+contextTokens: 272000,
625+maxTokens: 128000,
626+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
627+}
628+ : undefined,
629+);
630+631+const runtime = createRuntime();
632+await modelsListCommand(
633+{ all: true, provider: "openai-codex", json: true },
634+runtime as never,
635+);
636+637+expect(
638+lastPrintedRows<{ key: string; contextWindow: number; contextTokens?: number }>(),
639+).toEqual([
640+expect.objectContaining({
641+key: "openai-codex/gpt-5.5",
642+contextWindow: 400000,
643+contextTokens: 272000,
644+}),
645+]);
646+});
647+579648it("suppresses direct openai gpt-5.3-codex-spark rows in --all output", async () => {
580649mocks.resolveConfiguredEntries.mockReturnValueOnce({ entries: [] });
581650const rows: unknown[] = [];
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。