Skip to content

feat(dashboard): Add telemetry reporting#471

Merged
dcramer merged 17 commits into
mainfrom
feat/dashboard-telemetry-metrics
Jun 2, 2026
Merged

feat(dashboard): Add telemetry reporting#471
dcramer merged 17 commits into
mainfrom
feat/dashboard-telemetry-metrics

Conversation

@dcramer
Copy link
Copy Markdown
Member

@dcramer dcramer commented Jun 1, 2026

Add dashboard telemetry reporting across conversation, chart, and transcript surfaces while keeping the reporting API on dashboard-owned DTOs. The dashboard now uses structured requester identity, consistent duration/token/message/tool-call summaries, and scan-friendly transcript activity rendering without synthetic identity fallbacks.

Reporting And Identity

The reporting boundary projects turn-session state into explicit dashboard types, carries structured requester identity, and redacts private transcript payloads while preserving safe metadata. Conversation titles and requester labels stay separate so Slack thread titles are not reused as requester identity.

Telemetry Metrics

Conversation headers, turn headers, and chart tooltips share compact metric formatting for tokens, durations, messages, and tool calls while preserving per-turn Sentry trace shortcuts. Native tooltip/title fallbacks were removed from metric hovers, the messages tooltip was removed, empty tool-call metric rows are omitted, and duration chart labels now use the same elapsed-time contract as the rest of the dashboard.

Transcript Rendering

Tool calls and thinking blocks render as lower-contrast activity rows, long tool-call runs collapse behind an expand control, and collapsed system prompts are vertically centered. Tool call/result matching now uses one shared id-first matcher, and the cleanup pass removed dead exported helpers and fake missing-data labels.

Add shared dashboard metric components for tokens, durations, messages, and tool calls so conversation and turn headers use the same tooltip styling as chart metadata.

Let the duration chart switch between turns and conversations, tighten duration tick labels, remove per-turn Sentry links, and keep Slack thread titles out of requester metadata.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
junior-docs Ready Ready Preview, Comment Jun 2, 2026 7:07am

Request Review

Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Comment thread packages/junior/src/reporting.ts Outdated
Match tool results only by id when ids are present, and reuse conversation display rules in duration chart tooltips.

Keep Slack display names available in dashboard reporting while preferring stable requester labels.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Avoid rebuilding dashboard conversation groups while the duration chart is in turn mode. Tighten generic turn-title matching so meaningful titles that start with Turn remain visible.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Use the same current-time snapshot for open-ended conversation duration points and labels. Keep Slack display names with spaces as requester labels instead of degrading to raw ids.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Comment thread packages/junior-dashboard/src/client/format.ts
Remove the derived requester string from dashboard reporting responses and make the client derive display labels only from requesterIdentity. Align dashboard client payload types with the reporting API types and avoid inventing conversation durations without valid timestamps.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Expose dashboard-owned requester, usage, surface, status, and transcript projection types instead of leaking turn-session internals through the reporting API.

Make grouped conversation and chart models rely on required report fields, and keep requester labels visible even when a generated conversation title has the same text.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Plot turn and conversation duration chart points as wall-clock spans so mode toggles use the same semantic duration.

Remove the unused duration-point subtitle field and rely on required report timestamps when sorting grouped conversations.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Remove native title attributes from metric tooltip triggers so browser tooltips do not overlap the dashboard tooltip.

Render tooltip labels in normal case, with code-styled tool names and readable message authors instead of forcing content labels to uppercase.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Comment thread packages/junior-dashboard/src/client/components/TurnDurationChart.tsx Outdated
Render message counts without a hover tooltip and remove the help cursor from remaining metric tooltip triggers.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Render thinking as standalone muted transcript events, lower the visual weight of tool rows, and collapse long consecutive tool-call runs.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Render thinking as muted italic thought text and align turn duration labels with chart duration points.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/format.ts
Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Keep the collapsed system prompt disclosure aligned as a single row instead of inheriting expanded message spacing.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Remove dead dashboard formatting exports and stale imports. Keep tool-call/result grouping keyed by shared ids or names so the dashboard does not infer relationships from missing metadata.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Comment thread packages/junior-dashboard/src/client/format.ts Outdated
Move the dashboard tool call/result matching rule into one helper so transcript rendering and telemetry summaries cannot drift.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
@dcramer dcramer changed the title feat(dashboard): Add telemetry metric tooltips feat(dashboard): Add telemetry metrics Jun 2, 2026
Comment thread packages/junior-dashboard/src/client/components/ConversationRowStats.tsx Outdated
Restore the runtime noun in conversation row stats so duration values keep the same scan context as turns and token counts.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
@dcramer dcramer changed the title feat(dashboard): Add telemetry metrics feat(dashboard): Add telemetry reporting Jun 2, 2026
Comment thread packages/junior-dashboard/src/client/components/TranscriptTurn.tsx
Restore per-turn Sentry trace links in transcript headers and avoid empty tool-call metric rows for zero-count summaries.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a26c9dd. Configure here.

Comment thread packages/junior-dashboard/src/client/pages/ConversationPage.tsx Outdated
Omit the conversation-level tool-call metric slot after detail loads with no tool calls, so metric separators do not render around empty content.

Preserve valid zero timestamps in transcript tool and thinking metadata, and prefer the newest available conversation title when grouping turn summaries.

Co-Authored-By: GPT-5 Codex <codex@openai.com>
@dcramer dcramer merged commit 9259f65 into main Jun 2, 2026
16 checks passed
@dcramer dcramer deleted the feat/dashboard-telemetry-metrics branch June 2, 2026 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant