Skip to content

Commit 76a79bf

Browse files
jerryliang64claude
andcommitted
fix(agent-tracing): populate thread_id from session_id in ClaudeAgentTracer
Claude SDK runs are manually constructed and don't have LangChain's automatic metadata.thread_id. Use session_id as thread_id in run.extra.metadata so getLogInfoPrefix can extract it consistently across both LangGraph and Claude tracers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c4d24f7 commit 76a79bf

2 files changed

Lines changed: 7 additions & 0 deletions

File tree

tegg/core/agent-tracing/src/ClaudeAgentTracer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,9 @@ export class ClaudeAgentTracer {
341341
parent_run_id: undefined,
342342
tags: [],
343343
extra: {
344+
metadata: {
345+
thread_id: initMsg.session_id,
346+
},
344347
apiKeySource: initMsg.apiKeySource,
345348
claude_code_version: initMsg.claude_code_version,
346349
output_style: initMsg.output_style,

tegg/core/agent-tracing/test/ClaudeAgentTracer.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ describe('test/ClaudeAgentTracer.test.ts', () => {
218218
assert.strictEqual(traceIds.size, 1, `All runs should share one trace_id, got ${traceIds.size}`);
219219
assert.strictEqual([...traceIds][0], 'test-session-001', 'trace_id should match session_id');
220220

221+
// Root run should carry session_id as thread_id in extra.metadata
222+
const rootExtra = rootStart.run.extra as Record<string, any>;
223+
assert.strictEqual(rootExtra?.metadata?.thread_id, 'test-session-001', 'thread_id should match session_id');
224+
221225
// Child runs reference root run as parent
222226
const childEntries = capturedRuns.filter((e) => !!e.run.parent_run_id);
223227
for (const child of childEntries) {

0 commit comments

Comments
 (0)