@sentry/junior-dashboard 0.243.0 → 0.244.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/junior-dashboard",
3
- "version": "0.243.0",
3
+ "version": "0.244.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -34,8 +34,8 @@
34
34
  "react-router": "^7.18.2",
35
35
  "shiki": "4.1.0",
36
36
  "zod": "^4.5.4",
37
- "@sentry/junior": "0.243.0",
38
- "@sentry/junior-plugin-api": "0.243.0"
37
+ "@sentry/junior": "0.244.0",
38
+ "@sentry/junior-plugin-api": "0.244.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@oxlint/plugins": "1.79.0",
@@ -84,6 +84,11 @@ export function ConversationChildAgents(props: {
84
84
  {agent.status}
85
85
  </StatusChip>
86
86
  </div>
87
+ {agent.title ? (
88
+ <p className="m-0 break-words text-sm font-semibold text-dashboard-text">
89
+ {agent.title}
90
+ </p>
91
+ ) : null}
87
92
  {agent.task ? (
88
93
  <p className="m-0 line-clamp-4 whitespace-pre-wrap break-words text-sm leading-relaxed text-dashboard-text">
89
94
  {agent.task}
@@ -50,7 +50,10 @@ function SubagentTranscriptDrawerContent(props: {
50
50
  const [searchOpen, setSearchOpen] = useState(false);
51
51
 
52
52
  const detail = query.data;
53
- const label = detail?.displayTitle || props.target.part.subagentKind;
53
+ const label =
54
+ props.target.part.title ||
55
+ detail?.displayTitle ||
56
+ props.target.part.subagentKind;
54
57
  const meta = [
55
58
  statusLabel(props.target.part, detail?.status),
56
59
  detail ? formatMessageTimestamp(Date.parse(detail.startedAt)) : undefined,
@@ -9,7 +9,8 @@ export function TranscriptSubagentView(props: {
9
9
  part: TranscriptViewSubagentPart;
10
10
  timestamp?: number;
11
11
  }) {
12
- const label = props.part.subagentKind;
12
+ const label = props.part.agentName ?? props.part.subagentKind;
13
+ const summary = props.part.title ?? props.part.task;
13
14
  const status = props.part.status;
14
15
  const meta = [
15
16
  status,
@@ -27,6 +28,11 @@ export function TranscriptSubagentView(props: {
27
28
  <strong className="min-w-0 break-words font-bold text-cyan-100">
28
29
  <HighlightText text={label} />
29
30
  </strong>
31
+ {summary ? (
32
+ <span className="min-w-0 truncate text-dashboard-text-muted">
33
+ <HighlightText text={summary} />
34
+ </span>
35
+ ) : null}
30
36
  {props.part.status === "running" ? (
31
37
  <span
32
38
  aria-hidden="true"
@@ -44,7 +50,7 @@ export function TranscriptSubagentView(props: {
44
50
 
45
51
  return (
46
52
  <button
47
- aria-label={`Open ${props.part.subagentKind} transcript`}
53
+ aria-label={`Open ${label} transcript`}
48
54
  className="block w-full min-w-0 cursor-pointer text-left transition-colors hover:bg-white/[0.035] focus-visible:outline focus-visible:outline-1 focus-visible:outline-cyan-300/55"
49
55
  onClick={() => props.onOpenTranscript?.(props.part)}
50
56
  type="button"
@@ -94,7 +94,7 @@ export function eventLogSummary(data: ConversationReportEventData): string {
94
94
  case "handoff":
95
95
  return "Handoff · New configuration applied";
96
96
  case "subagent":
97
- return `${data.subagentKind} · ${data.status} · ${data.childConversationId}`;
97
+ return `${data.agentName ?? data.subagentKind} · ${data.status} · ${data.childConversationId}`;
98
98
  }
99
99
  }
100
100
 
@@ -362,6 +362,9 @@ export function transcriptMessagesFromEvents(
362
362
  childConversationId: data.childConversationId,
363
363
  subagentKind: data.subagentKind,
364
364
  status: data.status,
365
+ ...(data.agentName ? { agentName: data.agentName } : undefined),
366
+ ...(data.task ? { task: data.task } : undefined),
367
+ ...(data.title ? { title: data.title } : undefined),
365
368
  };
366
369
  subagents.set(subagentId, part);
367
370
  messages.push({
@@ -194,7 +194,12 @@ export function messageRawText(message: TranscriptViewMessage): string {
194
194
  if (part.type === "reasoning") return part.text ?? "reasoning redacted";
195
195
  if (part.type === "tool_call") return `tool_call ${part.name}`;
196
196
  if (part.type === "subagent") {
197
- return `subagent ${part.subagentKind}\nstatus ${part.status}`;
197
+ return [
198
+ `subagent ${part.agentName ?? part.subagentKind}`,
199
+ ...(part.title ? [`title ${part.title}`] : []),
200
+ ...(part.task ? [`task ${part.task}`] : []),
201
+ `status ${part.status}`,
202
+ ].join("\n");
198
203
  }
199
204
  if (part.type === "structured_event") {
200
205
  return [
@@ -160,7 +160,12 @@ export function entryMatchesSearch(
160
160
 
161
161
  if (entry.kind === "subagent") {
162
162
  return (
163
- textContains(entry.part.subagentKind, normalizedQuery) ||
163
+ textContains(
164
+ entry.part.agentName ?? entry.part.subagentKind,
165
+ normalizedQuery,
166
+ ) ||
167
+ textContains(entry.part.title, normalizedQuery) ||
168
+ textContains(entry.part.task, normalizedQuery) ||
164
169
  textContains(entry.part.status, normalizedQuery)
165
170
  );
166
171
  }
@@ -396,9 +396,14 @@ function appendSubagent(
396
396
  part: TranscriptViewSubagentPart,
397
397
  timestamp: number | undefined,
398
398
  ): void {
399
- lines.push("", `### Subagent: ${headingText(part.subagentKind)}`);
399
+ lines.push(
400
+ "",
401
+ `### Subagent: ${headingText(part.agentName ?? part.subagentKind)}`,
402
+ );
400
403
  addEventMeta(lines, conversationTranscript, timestamp);
401
404
  addMetaLine(lines, "Status", part.status);
405
+ addMetaLine(lines, "Title", part.title);
406
+ addMetaLine(lines, "Task", part.task);
402
407
  }
403
408
 
404
409
  function appendTool(
@@ -38,10 +38,13 @@ export type TranscriptViewToolCallPart = {
38
38
  };
39
39
 
40
40
  export type TranscriptViewSubagentPart = {
41
+ agentName?: string;
41
42
  childConversationId: string;
42
43
  id: string;
43
44
  status: "aborted" | "blocked" | "completed" | "error" | "running";
44
45
  subagentKind: string;
46
+ task?: string;
47
+ title?: string;
45
48
  type: "subagent";
46
49
  };
47
50
 
@@ -719,6 +719,9 @@ function dashboardQaConversation(nowMs: number): ConversationDetailReport {
719
719
  startedAt: iso(Date.parse(startedAt), 4_000),
720
720
  childConversationId: DASHBOARD_QA_PLAN_ID,
721
721
  subagentKind: "agent",
722
+ agentName: "planner",
723
+ task: "Review the dashboard plan before editing.",
724
+ title: "Review the dashboard plan",
722
725
  parentToolCallId: "qa-advisor",
723
726
  status: "running",
724
727
  }),
@@ -728,6 +731,9 @@ function dashboardQaConversation(nowMs: number): ConversationDetailReport {
728
731
  startedAt: iso(Date.parse(startedAt), 4_000),
729
732
  childConversationId: DASHBOARD_QA_PLAN_ID,
730
733
  subagentKind: "agent",
734
+ agentName: "planner",
735
+ task: "Review the dashboard plan before editing.",
736
+ title: "Review the dashboard plan",
731
737
  parentToolCallId: "qa-advisor",
732
738
  status: "completed",
733
739
  }),
@@ -750,6 +756,7 @@ function dashboardQaConversation(nowMs: number): ConversationDetailReport {
750
756
  startedAt: iso(Date.parse(startedAt), 25_000),
751
757
  childConversationId: DASHBOARD_QA_REVIEW_ID,
752
758
  subagentKind: "agent",
759
+ agentName: "reviewer",
753
760
  status: "running",
754
761
  }),
755
762
  reportEvent(7, iso(Date.parse(startedAt), 44_000), {
@@ -758,6 +765,7 @@ function dashboardQaConversation(nowMs: number): ConversationDetailReport {
758
765
  startedAt: iso(Date.parse(startedAt), 25_000),
759
766
  childConversationId: DASHBOARD_QA_REVIEW_ID,
760
767
  subagentKind: "agent",
768
+ agentName: "reviewer",
761
769
  status: "blocked",
762
770
  }),
763
771
  reportEvent(8, iso(Date.parse(startedAt), 50_000), {
@@ -1843,6 +1851,7 @@ export function readMockConversationChildAgents(
1843
1851
  conversationId: DASHBOARD_QA_PLAN_ID,
1844
1852
  status: "completed",
1845
1853
  task: "Review the dashboard plan before editing.",
1854
+ title: "Review the dashboard plan",
1846
1855
  updatedAt: iso(startedAtMs, 20_000),
1847
1856
  },
1848
1857
  ],