claude code plugin that sends telemetry to otlp destinations (traces)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: emit session.id alongside gen_ai.conversation.id

Claude Code's native log events use session.id as the correlation key.
Emit both session.id (for compatibility with native events in the same
dataset) and gen_ai.conversation.id (for semconv compliance) on all
spans so queries work without derived columns.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+18 -1
+4
bundle/session-end.cjs
··· 22598 22598 attributes: { 22599 22599 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22600 22600 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22601 + "session.id": sessionId, 22601 22602 "claude_code.turn_number": turnNum 22602 22603 } 22603 22604 }, turnParentCtx); ··· 22629 22630 [ATTR_GEN_AI_TOOL_CALL_ID]: toolCall.tool_use.id, 22630 22631 [ATTR_GEN_AI_TOOL_TYPE]: "extension", 22631 22632 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22633 + "session.id": sessionId, 22632 22634 ...toolCall.agentId ? { 22633 22635 [ATTR_GEN_AI_AGENT_ID]: toolCall.agentId 22634 22636 } : {} ··· 22649 22651 [ATTR_GEN_AI_RESPONSE_MODEL]: llmCall.model, 22650 22652 [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: [finishReason], 22651 22653 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22654 + "session.id": sessionId, 22652 22655 ...usageAttributes(llmCall.usage) 22653 22656 }; 22654 22657 if (llmCall.messageId) { ··· 22727 22730 attributes: { 22728 22731 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22729 22732 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22733 + "session.id": sessionId, 22730 22734 "claude_code.turn_number": turnNum 22731 22735 } 22732 22736 }, parentCtx);
+5 -1
bundle/stop.cjs
··· 22690 22690 attributes: { 22691 22691 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22692 22692 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22693 + "session.id": sessionId, 22693 22694 "claude_code.turn_number": turnNum 22694 22695 } 22695 22696 }, turnParentCtx); ··· 22721 22722 [ATTR_GEN_AI_TOOL_CALL_ID]: toolCall.tool_use.id, 22722 22723 [ATTR_GEN_AI_TOOL_TYPE]: "extension", 22723 22724 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22725 + "session.id": sessionId, 22724 22726 ...toolCall.agentId ? { 22725 22727 [ATTR_GEN_AI_AGENT_ID]: toolCall.agentId 22726 22728 } : {} ··· 22741 22743 [ATTR_GEN_AI_RESPONSE_MODEL]: llmCall.model, 22742 22744 [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: [finishReason], 22743 22745 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22746 + "session.id": sessionId, 22744 22747 ...usageAttributes(llmCall.usage) 22745 22748 }; 22746 22749 if (llmCall.messageId) { ··· 22793 22796 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22794 22797 [ATTR_GEN_AI_AGENT_NAME]: toolName, 22795 22798 [ATTR_GEN_AI_AGENT_ID]: sub.agent_id, 22796 - [ATTR_GEN_AI_CONVERSATION_ID]: sessionId 22799 + [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22800 + "session.id": sessionId 22797 22801 } 22798 22802 }, parentCtx); 22799 22803 const chainSpanId = chainSpan.spanContext().spanId;
+4
bundle/user-prompt-submit.cjs
··· 22649 22649 attributes: { 22650 22650 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22651 22651 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22652 + "session.id": sessionId, 22652 22653 "claude_code.turn_number": turnNum 22653 22654 } 22654 22655 }, turnParentCtx); ··· 22680 22681 [ATTR_GEN_AI_TOOL_CALL_ID]: toolCall.tool_use.id, 22681 22682 [ATTR_GEN_AI_TOOL_TYPE]: "extension", 22682 22683 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22684 + "session.id": sessionId, 22683 22685 ...toolCall.agentId ? { 22684 22686 [ATTR_GEN_AI_AGENT_ID]: toolCall.agentId 22685 22687 } : {} ··· 22700 22702 [ATTR_GEN_AI_RESPONSE_MODEL]: llmCall.model, 22701 22703 [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: [finishReason], 22702 22704 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22705 + "session.id": sessionId, 22703 22706 ...usageAttributes(llmCall.usage) 22704 22707 }; 22705 22708 if (llmCall.messageId) { ··· 22778 22781 attributes: { 22779 22782 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 22780 22783 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 22784 + "session.id": sessionId, 22781 22785 "claude_code.turn_number": turnNum 22782 22786 } 22783 22787 }, parentCtx);
+5
src/tracing.ts
··· 135 135 attributes: { 136 136 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 137 137 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 138 + "session.id": sessionId, 138 139 "claude_code.turn_number": turnNum, 139 140 }, 140 141 }, turnParentCtx); ··· 176 177 [ATTR_GEN_AI_TOOL_CALL_ID]: toolCall.tool_use.id, 177 178 [ATTR_GEN_AI_TOOL_TYPE]: "extension", 178 179 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 180 + "session.id": sessionId, 179 181 ...(toolCall.agentId ? { 180 182 [ATTR_GEN_AI_AGENT_ID]: toolCall.agentId, 181 183 } : {}), ··· 203 205 [ATTR_GEN_AI_RESPONSE_MODEL]: llmCall.model, 204 206 [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: [finishReason], 205 207 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 208 + "session.id": sessionId, 206 209 ...usageAttributes(llmCall.usage), 207 210 }; 208 211 ··· 317 320 attributes: { 318 321 [ATTR_GEN_AI_SYSTEM]: GEN_AI_SYSTEM_VALUE_ANTHROPIC, 319 322 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 323 + "session.id": sessionId, 320 324 "claude_code.turn_number": turnNum, 321 325 }, 322 326 }, parentCtx); ··· 390 394 [ATTR_GEN_AI_AGENT_NAME]: toolName, 391 395 [ATTR_GEN_AI_AGENT_ID]: sub.agent_id, 392 396 [ATTR_GEN_AI_CONVERSATION_ID]: sessionId, 397 + "session.id": sessionId, 393 398 }, 394 399 }, parentCtx); 395 400