























@@ -15,6 +15,7 @@ import { createWebSocketTransport } from "./transport-websocket.js";
1515import { closeCodexAppServerTransport, type CodexAppServerTransport } from "./transport.js";
16161717export const MIN_CODEX_APP_SERVER_VERSION = "0.118.0";
18+const CODEX_APP_SERVER_PARSE_LOG_MAX = 500;
18191920type PendingRequest = {
2021method: string;
@@ -234,7 +235,10 @@ export class CodexAppServerClient {
234235try {
235236parsed = JSON.parse(trimmed);
236237} catch (error) {
237-embeddedAgentLog.warn("failed to parse codex app-server message", { error });
238+embeddedAgentLog.warn("failed to parse codex app-server message", {
239+ error,
240+linePreview: redactCodexAppServerLinePreview(trimmed),
241+});
238242return;
239243}
240244if (!parsed || typeof parsed !== "object") {
@@ -416,6 +420,19 @@ function numericVersionParts(version: string): number[] {
416420.map((part) => (Number.isFinite(part) ? part : 0));
417421}
418422423+function redactCodexAppServerLinePreview(value: string): string {
424+const compact = value.replace(/\s+/g, " ").trim();
425+const redacted = compact
426+.replace(/(Bearer\s+)[A-Za-z0-9._~+/-]+/gi, "$1<redacted>")
427+.replace(
428+/("(?:api_?key|authorization|token|access_token|refresh_token)"\s*:\s*")([^"]+)(")/gi,
429+"$1<redacted>$3",
430+);
431+return redacted.length > CODEX_APP_SERVER_PARSE_LOG_MAX
432+ ? `${redacted.slice(0, CODEX_APP_SERVER_PARSE_LOG_MAX)}...`
433+ : redacted;
434+}
435+419436const CODEX_APP_SERVER_APPROVAL_REQUEST_METHODS = new Set([
420437"item/commandExecution/requestApproval",
421438"item/fileChange/requestApproval",
@@ -438,4 +455,5 @@ function formatExitValue(value: unknown): string {
438455439456export const __testing = {
440457 closeCodexAppServerTransport,
458+ redactCodexAppServerLinePreview,
441459} as const;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。