
























@@ -534,6 +534,91 @@ describe("buildStatusReply subagent summary", () => {
534534expect(normalized).not.toContain("Fast · codex");
535535});
536536537+it("uses Codex OAuth auth labels for openai models running on the Codex harness", async () => {
538+registerStatusCodexHarness();
539+540+await withTempHome(
541+async (dir) => {
542+const authPath = path.join(
543+dir,
544+".openclaw",
545+"agents",
546+"main",
547+"agent",
548+"auth-profiles.json",
549+);
550+fs.mkdirSync(path.dirname(authPath), { recursive: true });
551+fs.writeFileSync(
552+authPath,
553+JSON.stringify({
554+version: 1,
555+profiles: {
556+"openai-codex:status": {
557+type: "oauth",
558+provider: "openai-codex",
559+access: "access-token",
560+refresh: "refresh-token",
561+expires: Date.now() + 60_000,
562+},
563+},
564+}),
565+"utf8",
566+);
567+568+const commonParams = {
569+sessionEntry: {
570+sessionId: "sess-status-codex-oauth",
571+updatedAt: 0,
572+},
573+sessionKey: "agent:main:main",
574+parentSessionKey: "agent:main:main",
575+sessionScope: "per-sender" as const,
576+statusChannel: "mobilechat",
577+provider: "openai",
578+model: "gpt-5.5",
579+contextTokens: 32_000,
580+resolvedFastMode: false,
581+resolvedVerboseLevel: "off" as const,
582+resolvedReasoningLevel: "off" as const,
583+resolveDefaultThinkingLevel: async () => undefined,
584+isGroup: false,
585+defaultGroupActivation: () => "mention" as const,
586+};
587+588+const codexText = await buildStatusText({
589+cfg: {
590+ ...baseCfg,
591+agents: {
592+defaults: {
593+agentRuntime: { id: "codex", fallback: "none" },
594+},
595+},
596+},
597+ ...commonParams,
598+});
599+const piText = await buildStatusText({
600+cfg: baseCfg,
601+ ...commonParams,
602+});
603+604+const normalizedCodex = normalizeTestText(codexText);
605+const normalizedPi = normalizeTestText(piText);
606+expect(normalizedCodex).toContain("Model: openai/gpt-5.5");
607+expect(normalizedCodex).toContain("oauth (openai-codex:status)");
608+expect(normalizedCodex).toContain("openai-codex:status");
609+expect(normalizedPi).toContain("Model: openai/gpt-5.5");
610+expect(normalizedPi).toContain("unknown");
611+expect(normalizedPi).not.toContain("openai-codex:status");
612+},
613+{
614+env: {
615+OPENAI_API_KEY: undefined,
616+OPENAI_OAUTH_TOKEN: undefined,
617+},
618+},
619+);
620+});
621+537622it("uses workspace-scoped auth evidence in /status auth labels", async () => {
538623const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-status-auth-label-"));
539624const workspaceDir = path.join(tempRoot, "workspace");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。