Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c47d87a
feat(diagnostics): add the managed-transport failure contract
JulienAu Aug 10, 2026
0daaa57
fix(diagnostics): encode every emitted log field against injection
JulienAu Aug 10, 2026
007583c
fix(diagnostics): redact untrusted fields at build time
JulienAu Aug 10, 2026
3106eba
fix(diagnostics): constrain cause metadata and supplied trace ids
JulienAu Aug 10, 2026
99523ed
Merge branch 'main' into feat/managed-transport-diagnostics
cv Aug 11, 2026
9dabe78
Merge branch 'main' into feat/managed-transport-diagnostics
cv Aug 11, 2026
7f5d207
Merge branch 'main' into feat/managed-transport-diagnostics
cv Aug 11, 2026
e14b0c4
fix(diagnostics): restrict body capture to failures and encode the sn…
JulienAu Aug 11, 2026
7c007f0
Merge branch 'main' into feat/managed-transport-diagnostics
cv Aug 11, 2026
58e8294
Merge branch 'main' into feat/managed-transport-diagnostics
cv Aug 11, 2026
4783135
fix(diagnostics): harden managed transport failures
apurvvkumaria Aug 11, 2026
7df15ef
fix(diagnostics): adopt the documented transport_phase vocabulary
JulienAu Aug 13, 2026
b9facda
fix(diagnostics): harden transport contract alignment
apurvvkumaria Aug 13, 2026
526513a
merge(diagnostics): update #8964 with main
apurvvkumaria Aug 13, 2026
f750649
test(diagnostics): assert superseded key names stay absent
JulienAu Aug 13, 2026
a79a2c2
merge(main): refresh PR #8964
cv Aug 13, 2026
3b2dbc1
ci(diagnostics): incorporate current main checks
cv Aug 13, 2026
49479c1
merge(main): resolve PR #8964 conflict
cv Aug 13, 2026
254a9a9
Merge remote-tracking branch 'origin/main' into codex/review-8964-ref…
cv Aug 13, 2026
ab1eca2
chore(ci): lower onboarding source budget
cv Aug 13, 2026
debc957
fix(diagnostics): redact target userinfo
cv Aug 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions scripts/patch-openclaw-managed-transport-diagnostics.mts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,19 @@ const SCRIPT_PATH = fileURLToPath(import.meta.url);

export const MARKER = "/* nemoclaw managed transport diagnostics (#7957) */";

/** Transport phases emitted by the active OpenClaw managed-transport patch. */
export const OPENCLAW_MANAGED_TRANSPORT_PHASES = [
"policy",
"connect",
"tls",
"app_connect",
"request",
"response_headers",
] as const;

const [POLICY_PHASE, CONNECT_PHASE, TLS_PHASE, APP_CONNECT_PHASE, REQUEST_PHASE, RESPONSE_PHASE] =
OPENCLAW_MANAGED_TRANSPORT_PHASES;

/** Client identity that only the compiled bundle-mcp session runtime carries. */
const TARGET_SIGNATURE = '"openclaw-bundle-mcp"';

Expand Down Expand Up @@ -121,12 +134,12 @@ export const INJECTED_DIAGNOSTIC_HELPER = [
"}",
"function nemoClawMtdPhase(chain) {",
'\tconst text = chain.map((cause) => (cause.code || "") + " " + (cause.message || "")).join(" ");',
'\tif (NEMOCLAW_MTD_POLICY_RE.test(text) || NEMOCLAW_MTD_CONNECT_DENIED_RE.test(text)) return "policy";',
'\tif (NEMOCLAW_MTD_CONNECT_RE.test(text)) return "connect";',
'\tif (chain.some((cause) => NEMOCLAW_MTD_TLS_CODES.includes(cause.code))) return "tls";',
'\tif (chain.some((cause) => NEMOCLAW_MTD_CONNECT_CODES.includes(cause.code))) return "app_connect";',
'\tif (chain.some((cause) => cause.code === "UND_ERR_HEADERS_TIMEOUT")) return "response_headers";',
'\treturn "request";',
`\tif (NEMOCLAW_MTD_POLICY_RE.test(text) || NEMOCLAW_MTD_CONNECT_DENIED_RE.test(text)) return ${JSON.stringify(POLICY_PHASE)};`,
`\tif (NEMOCLAW_MTD_CONNECT_RE.test(text)) return ${JSON.stringify(CONNECT_PHASE)};`,
`\tif (chain.some((cause) => NEMOCLAW_MTD_TLS_CODES.includes(cause.code))) return ${JSON.stringify(TLS_PHASE)};`,
`\tif (chain.some((cause) => NEMOCLAW_MTD_CONNECT_CODES.includes(cause.code))) return ${JSON.stringify(APP_CONNECT_PHASE)};`,
`\tif (chain.some((cause) => cause.code === "UND_ERR_HEADERS_TIMEOUT")) return ${JSON.stringify(RESPONSE_PHASE)};`,
`\treturn ${JSON.stringify(REQUEST_PHASE)};`,
"}",
"function nemoClawMtdHeaders(response) {",
"\tconst safe = {};",
Expand Down Expand Up @@ -305,7 +318,7 @@ export const INJECTED_DIAGNOSTIC_HELPER = [
"\t\t\t}",
"\t\t\tvoid nemoClawMtdEmitResponseFailure(response, {",
"\t\t\t\t...common,",
'\t\t\t\ttransport_phase: "response_headers",',
`\t\t\t\ttransport_phase: ${JSON.stringify(RESPONSE_PHASE)},`,
"\t\t\t\thttp_status: response ? response.status : undefined,",
"\t\t\t\telapsed_ms: elapsedMs,",
"\t\t\t\tsession_present: sessionPresent",
Expand Down
Loading