@sentry/junior 0.94.0 → 0.96.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.
Files changed (127) hide show
  1. package/dist/{agent-hooks-ZG7IDOIN.js → agent-hooks-5URSMY3O.js} +10 -11
  2. package/dist/api/people/list.js +8 -8
  3. package/dist/api/people/profile.js +8 -8
  4. package/dist/api/people/shared.d.ts +2 -2
  5. package/dist/api-reference.d.ts +2 -2
  6. package/dist/app.js +434 -199
  7. package/dist/{catalog-runtime-NZHMSMYC.js → catalog-runtime-MSMAYYIK.js} +4 -4
  8. package/dist/chat/advisor-request.d.ts +4 -0
  9. package/dist/chat/agent/request.d.ts +2 -0
  10. package/dist/chat/agent/resume.d.ts +2 -0
  11. package/dist/chat/conversations/history.d.ts +128 -0
  12. package/dist/chat/conversations/legacy-import.d.ts +38 -0
  13. package/dist/chat/conversations/messages.d.ts +39 -0
  14. package/dist/chat/conversations/projection.d.ts +94 -0
  15. package/dist/chat/conversations/retention.d.ts +36 -0
  16. package/dist/chat/conversations/sql/conversation-row.d.ts +14 -0
  17. package/dist/chat/conversations/sql/history.d.ts +4 -0
  18. package/dist/chat/conversations/sql/legacy-history-import.d.ts +55 -0
  19. package/dist/chat/conversations/sql/messages.d.ts +4 -0
  20. package/dist/chat/conversations/sql/migrations.d.ts +14 -3
  21. package/dist/chat/conversations/sql/purge.d.ts +53 -0
  22. package/dist/chat/conversations/sql/store.d.ts +7 -2
  23. package/dist/chat/conversations/store.d.ts +19 -0
  24. package/dist/chat/conversations/visible-compactions.d.ts +11 -0
  25. package/dist/chat/conversations/visible-messages.d.ts +47 -0
  26. package/dist/chat/db.d.ts +12 -1
  27. package/dist/chat/identities/sql.d.ts +1 -1
  28. package/dist/chat/logging.d.ts +4 -3
  29. package/dist/chat/plugins/auth/oauth-request.d.ts +2 -0
  30. package/dist/chat/resource-events/notification.d.ts +2 -0
  31. package/dist/chat/resource-events/store.d.ts +2 -1
  32. package/dist/chat/runtime/agent-run-outcome.d.ts +3 -0
  33. package/dist/chat/runtime/reply-executor.d.ts +8 -0
  34. package/dist/chat/runtime/thread-state.d.ts +2 -0
  35. package/dist/chat/sandbox/resources.d.ts +4 -0
  36. package/dist/chat/sentry.d.ts +1 -1
  37. package/dist/chat/services/mcp-auth-orchestration.d.ts +8 -0
  38. package/dist/chat/services/plugin-auth-orchestration.d.ts +12 -0
  39. package/dist/chat/services/turn-session-record.d.ts +14 -2
  40. package/dist/chat/sleep.d.ts +2 -0
  41. package/dist/chat/state/conversation.d.ts +7 -4
  42. package/dist/chat/state/session-log.d.ts +23 -1
  43. package/dist/chat/state/turn-session.d.ts +9 -1
  44. package/dist/chat/tool-support/private-trace-result.d.ts +4 -0
  45. package/dist/chat/tool-support/zod-tool.d.ts +1 -0
  46. package/dist/chat/tools/advisor/tool.d.ts +9 -4
  47. package/dist/chat/tools/definition.d.ts +2 -0
  48. package/dist/chat/tools/execution/tool-error-handler.d.ts +2 -2
  49. package/dist/chat/tools/system-time.d.ts +8 -0
  50. package/dist/chat/usage.d.ts +27 -13
  51. package/dist/chat/xml.d.ts +2 -0
  52. package/dist/{chunk-TNUUATT7.js → chunk-2NAZZPPS.js} +2 -2
  53. package/dist/{chunk-NYWPISSO.js → chunk-2XXEKR44.js} +1 -1
  54. package/dist/chunk-5C6XTTFI.js +1037 -0
  55. package/dist/{chunk-3DA7X2U3.js → chunk-6GWA276C.js} +15 -0
  56. package/dist/{chunk-LFLTJQVR.js → chunk-7FBGKXPE.js} +4 -0
  57. package/dist/{chunk-LNCREA5Z.js → chunk-AAZXTVJT.js} +4 -128
  58. package/dist/{chunk-GHGPTPBL.js → chunk-B7PUBQQM.js} +1 -1
  59. package/dist/{chunk-6H4PP63X.js → chunk-BYZWPRJA.js} +24 -14
  60. package/dist/chunk-CM5EZD5F.js +17 -0
  61. package/dist/{chunk-G3E7SCME.js → chunk-CZEX6KIQ.js} +23 -0
  62. package/dist/{chunk-YJ4OPVNA.js → chunk-DZENG5ML.js} +1 -1
  63. package/dist/{chunk-QGEWC27H.js → chunk-GQ3GK22G.js} +5 -7
  64. package/dist/{chunk-YYBX2BD5.js → chunk-GY34VGP5.js} +1 -1
  65. package/dist/{chunk-S6QKIGRM.js → chunk-I35CTGPO.js} +71 -29
  66. package/dist/{chunk-KRMANDHI.js → chunk-IYM2SIVG.js} +1489 -355
  67. package/dist/{chunk-BTH37NCU.js → chunk-L7CDEIVJ.js} +12 -4
  68. package/dist/chunk-MNTINMWR.js +865 -0
  69. package/dist/{chunk-MAVOJ54A.js → chunk-P3YFQLEN.js} +25 -388
  70. package/dist/{chunk-YTNPU7I2.js → chunk-PMNN6ST4.js} +2 -2
  71. package/dist/{chunk-PFXC67GJ.js → chunk-RAIB6WSG.js} +6 -80
  72. package/dist/{chunk-NFXSLTYG.js → chunk-RITD7E5L.js} +864 -62
  73. package/dist/{chunk-UUB3D2XI.js → chunk-S5KZ5LPG.js} +8 -10
  74. package/dist/{chunk-HDNWZMUN.js → chunk-UKHVMPX5.js} +112 -103
  75. package/dist/chunk-WM6KHPBQ.js +48 -0
  76. package/dist/{chunk-MC4ZZE4Q.js → chunk-YDT7SNCN.js} +1 -1
  77. package/dist/{chunk-NAPITCZ6.js → chunk-YDVEH3SB.js} +251 -6
  78. package/dist/cli/chat.js +25 -24
  79. package/dist/cli/check.js +5 -5
  80. package/dist/cli/main.js +1 -1
  81. package/dist/cli/plugins.js +12 -13
  82. package/dist/cli/snapshot-warmup.js +8 -9
  83. package/dist/cli/upgrade.js +79 -18
  84. package/dist/db/schema/agent-steps.d.ts +134 -0
  85. package/dist/db/schema/conversation-messages.d.ts +153 -0
  86. package/dist/{chat/conversations/sql → db}/schema/conversations.d.ts +34 -0
  87. package/dist/{chat/conversations/sql → db}/schema.d.ts +319 -8
  88. package/dist/db-2D6RMG67.js +24 -0
  89. package/dist/deployment.d.ts +2 -0
  90. package/dist/handlers/retention.d.ts +6 -0
  91. package/dist/instrumentation.js +17 -4
  92. package/dist/legacy-import-VZ2MEGP7.js +17 -0
  93. package/dist/nitro.js +14 -4
  94. package/dist/reporting/conversations/activity.d.ts +40 -0
  95. package/dist/reporting/conversations/context.d.ts +8 -0
  96. package/dist/reporting/conversations/details.d.ts +6 -0
  97. package/dist/reporting/conversations/index.d.ts +4 -0
  98. package/dist/reporting/conversations/shared.d.ts +9 -0
  99. package/dist/reporting/conversations/statistics.d.ts +4 -0
  100. package/dist/reporting/conversations/summaries.d.ts +20 -0
  101. package/dist/reporting/conversations/transcript.d.ts +28 -0
  102. package/dist/reporting/conversations/types.d.ts +191 -0
  103. package/dist/reporting/conversations.d.ts +1 -178
  104. package/dist/reporting.d.ts +5 -4
  105. package/dist/reporting.js +703 -837
  106. package/dist/{runner-XAZPJNAQ.js → runner-JZBRQP4F.js} +36 -42
  107. package/dist/{sentry-EGFOV3DH.js → sentry-JMWTS32N.js} +11 -1
  108. package/dist/{validation-KYAWETI4.js → validation-6XOOQGME.js} +5 -5
  109. package/migrations/README.md +32 -0
  110. package/migrations/meta/0000_snapshot.json +978 -0
  111. package/migrations/meta/_journal.json +13 -0
  112. package/package.json +10 -7
  113. package/dist/chat/sql/schema.d.ts +0 -1049
  114. package/dist/chat/state/conversation-details.d.ts +0 -47
  115. package/dist/chunk-7STN2ZSK.js +0 -250
  116. package/dist/chunk-LE5ANBUZ.js +0 -1040
  117. package/dist/chunk-QL66APYJ.js +0 -1377
  118. package/dist/db-YDN6AFJH.js +0 -18
  119. /package/dist/{chat/sql → db}/db.d.ts +0 -0
  120. /package/dist/{chat/sql → db}/executor.d.ts +0 -0
  121. /package/dist/{chat/sql → db}/neon.d.ts +0 -0
  122. /package/dist/{chat/sql → db}/postgres.d.ts +0 -0
  123. /package/dist/{chat/conversations/sql → db}/schema/destinations.d.ts +0 -0
  124. /package/dist/{chat/conversations/sql → db}/schema/identities.d.ts +0 -0
  125. /package/dist/{chat/conversations/sql → db}/schema/migrations.d.ts +0 -0
  126. /package/dist/{chat/conversations/sql → db}/schema/timestamps.d.ts +0 -0
  127. /package/dist/{chat/conversations/sql → db}/schema/users.d.ts +0 -0
@@ -0,0 +1,191 @@
1
+ import type { PluginConversationStatus, PluginConversations, PluginConversationSummary } from "@sentry/junior-plugin-api";
2
+ export type { PluginConversationStatus, PluginConversations, PluginConversationSummary, };
3
+ export type ConversationReportStatus = "active" | "completed" | "failed" | "hung" | "superseded";
4
+ export type ConversationSurface = "api" | "internal" | "scheduler" | "slack";
5
+ /** Estimated USD cost breakdown for a conversation run. */
6
+ export interface ConversationCost {
7
+ input?: number;
8
+ output?: number;
9
+ cacheRead?: number;
10
+ cacheWrite?: number;
11
+ total?: number;
12
+ }
13
+ /** Token and estimated USD cost usage for a conversation run. */
14
+ export interface ConversationUsage {
15
+ inputTokens?: number;
16
+ outputTokens?: number;
17
+ cachedInputTokens?: number;
18
+ cacheCreationTokens?: number;
19
+ reasoningTokens?: number;
20
+ totalTokens?: number;
21
+ cost?: ConversationCost;
22
+ }
23
+ export interface ActorIdentity {
24
+ email?: string;
25
+ fullName?: string;
26
+ slackUserId?: string;
27
+ slackUserName?: string;
28
+ }
29
+ export interface ConversationSummaryReport {
30
+ /** Always-populated display title, with privacy redaction applied first. */
31
+ displayTitle: string;
32
+ cumulativeDurationMs: number;
33
+ cumulativeUsage?: ConversationUsage;
34
+ conversationId: string;
35
+ id: string;
36
+ status: ConversationReportStatus;
37
+ startedAt: string;
38
+ lastSeenAt: string;
39
+ lastProgressAt: string;
40
+ completedAt?: string;
41
+ surface: ConversationSurface;
42
+ actorIdentity?: ActorIdentity;
43
+ channel?: string;
44
+ channelName?: string;
45
+ channelNameRedacted?: boolean;
46
+ sentryTraceUrl?: string;
47
+ traceId?: string;
48
+ }
49
+ export type TranscriptPartType = "text" | "thinking" | "tool_call" | "tool_result" | "unknown";
50
+ export interface TranscriptPart {
51
+ bytes?: number;
52
+ chars?: number;
53
+ id?: string;
54
+ input?: unknown;
55
+ inputKeys?: string[];
56
+ inputSizeBytes?: number;
57
+ inputSizeChars?: number;
58
+ inputType?: string;
59
+ name?: string;
60
+ output?: unknown;
61
+ outputKeys?: string[];
62
+ outputSizeBytes?: number;
63
+ outputSizeChars?: number;
64
+ outputType?: string;
65
+ redacted?: boolean;
66
+ sourceType?: string;
67
+ text?: string;
68
+ type: TranscriptPartType;
69
+ }
70
+ export type TranscriptRole = "assistant" | "system" | "tool" | "toolResult" | "unknown" | "user";
71
+ export interface TranscriptMessage {
72
+ parts: TranscriptPart[];
73
+ role: TranscriptRole;
74
+ timestamp?: number;
75
+ }
76
+ export interface ConversationRunReport extends ConversationSummaryReport {
77
+ activity?: ConversationActivityReport[];
78
+ modelId?: string;
79
+ reasoningLevel?: string;
80
+ transcriptAvailable: boolean;
81
+ transcriptMetadata?: TranscriptMessage[];
82
+ transcriptMessageCount?: number;
83
+ transcriptRedacted?: boolean;
84
+ transcriptRedactionReason?: "non_public_conversation";
85
+ /**
86
+ * True when retention purged this conversation's content. Expiry under
87
+ * retention is distinct from privacy redaction: the content aged out and was
88
+ * deleted, so no metadata is derived from it (see data-redaction-policy.md).
89
+ */
90
+ transcriptExpired?: boolean;
91
+ /** When the content was purged (ISO 8601); present only with `transcriptExpired`. */
92
+ transcriptExpiredAt?: string;
93
+ transcript: TranscriptMessage[];
94
+ }
95
+ export type ConversationActivityStatus = "aborted" | "completed" | "error" | "running" | "success";
96
+ export interface ConversationSubagentActivityReport {
97
+ type: "subagent";
98
+ createdAt: string;
99
+ endedAt?: string;
100
+ id: string;
101
+ modelId?: string;
102
+ outcome?: "success" | "error" | "aborted";
103
+ parentToolCallId?: string;
104
+ reasoningLevel?: string;
105
+ status: ConversationActivityStatus;
106
+ subagentKind: string;
107
+ transcriptAvailable?: boolean;
108
+ }
109
+ export interface ConversationToolActivityReport {
110
+ type: "tool_execution";
111
+ args?: unknown;
112
+ createdAt: string;
113
+ id: string;
114
+ inputKeys?: string[];
115
+ inputSizeBytes?: number;
116
+ inputSizeChars?: number;
117
+ inputType?: string;
118
+ redacted?: boolean;
119
+ status: ConversationActivityStatus;
120
+ subagents: ConversationSubagentActivityReport[];
121
+ toolCallId: string;
122
+ toolName: string;
123
+ }
124
+ export type ConversationActivityReport = ConversationToolActivityReport | ConversationSubagentActivityReport;
125
+ export interface ConversationReport {
126
+ conversationId: string;
127
+ /** Always-populated display title, computed the same way as per-run reports. */
128
+ displayTitle: string;
129
+ generatedAt: string;
130
+ sentryConversationUrl?: string;
131
+ runs: ConversationRunReport[];
132
+ }
133
+ export interface ConversationSubagentTranscriptReport {
134
+ type: "subagent";
135
+ createdAt: string;
136
+ endedAt?: string;
137
+ id: string;
138
+ modelId?: string;
139
+ outcome?: "success" | "error" | "aborted";
140
+ parentToolCallId?: string;
141
+ reasoningLevel?: string;
142
+ status: ConversationActivityStatus;
143
+ subagentConversationId?: string;
144
+ subagentKind: string;
145
+ subagentSentryConversationUrl?: string;
146
+ transcript: TranscriptMessage[];
147
+ transcriptAvailable: boolean;
148
+ transcriptMessageCount?: number;
149
+ transcriptRedacted?: boolean;
150
+ transcriptRedactionReason?: "non_public_conversation";
151
+ /** True when retention purged the parent conversation's content. */
152
+ transcriptExpired?: boolean;
153
+ /** When the content was purged (ISO 8601); present only with `transcriptExpired`. */
154
+ transcriptExpiredAt?: string;
155
+ unavailableReason?: "missing_transcript_range" | "missing_transcript_ref" | "not_found";
156
+ }
157
+ export interface ConversationFeed {
158
+ conversations: ConversationSummaryReport[];
159
+ source: "conversation_index";
160
+ generatedAt: string;
161
+ }
162
+ export interface ConversationStatsItem {
163
+ active: number;
164
+ conversations: number;
165
+ durationMs: number;
166
+ failed: number;
167
+ hung: number;
168
+ label: string;
169
+ runs: number;
170
+ costUsd?: number;
171
+ tokens?: number;
172
+ }
173
+ export interface ConversationStatsReport {
174
+ active: number;
175
+ conversations: number;
176
+ durationMs: number;
177
+ failed: number;
178
+ generatedAt: string;
179
+ hung: number;
180
+ locations: ConversationStatsItem[];
181
+ actors: ConversationStatsItem[];
182
+ sampleLimit: number;
183
+ sampleSize: number;
184
+ source: "conversation_index";
185
+ costUsd?: number;
186
+ tokens?: number;
187
+ truncated: boolean;
188
+ runs: number;
189
+ windowEnd: string;
190
+ windowStart: string;
191
+ }
@@ -1,178 +1 @@
1
- import type { PluginConversationStatus, PluginConversations, PluginConversationSummary } from "@sentry/junior-plugin-api";
2
- import type { ConversationStore } from "@/chat/conversations/store";
3
- export type { PluginConversationStatus, PluginConversations, PluginConversationSummary, };
4
- interface ConversationReaderOptions {
5
- conversationStore?: ConversationStore;
6
- }
7
- export type ConversationReportStatus = "active" | "completed" | "failed" | "hung" | "superseded";
8
- export type ConversationSurface = "api" | "internal" | "scheduler" | "slack";
9
- export interface ConversationUsage {
10
- inputTokens?: number;
11
- outputTokens?: number;
12
- cachedInputTokens?: number;
13
- cacheCreationTokens?: number;
14
- totalTokens?: number;
15
- }
16
- export interface ActorIdentity {
17
- email?: string;
18
- fullName?: string;
19
- slackUserId?: string;
20
- slackUserName?: string;
21
- }
22
- export interface ConversationSummaryReport {
23
- /** Always-populated display title, with privacy redaction applied first. */
24
- displayTitle: string;
25
- cumulativeDurationMs: number;
26
- cumulativeUsage?: ConversationUsage;
27
- conversationId: string;
28
- id: string;
29
- status: ConversationReportStatus;
30
- startedAt: string;
31
- lastSeenAt: string;
32
- lastProgressAt: string;
33
- completedAt?: string;
34
- surface: ConversationSurface;
35
- actorIdentity?: ActorIdentity;
36
- channel?: string;
37
- channelName?: string;
38
- channelNameRedacted?: boolean;
39
- sentryTraceUrl?: string;
40
- traceId?: string;
41
- }
42
- export type TranscriptPartType = "text" | "thinking" | "tool_call" | "tool_result" | "unknown";
43
- export interface TranscriptPart {
44
- bytes?: number;
45
- chars?: number;
46
- id?: string;
47
- input?: unknown;
48
- inputKeys?: string[];
49
- inputSizeBytes?: number;
50
- inputSizeChars?: number;
51
- inputType?: string;
52
- name?: string;
53
- output?: unknown;
54
- outputKeys?: string[];
55
- outputSizeBytes?: number;
56
- outputSizeChars?: number;
57
- outputType?: string;
58
- redacted?: boolean;
59
- sourceType?: string;
60
- text?: string;
61
- type: TranscriptPartType;
62
- }
63
- export type TranscriptRole = "assistant" | "system" | "tool" | "toolResult" | "unknown" | "user";
64
- export interface TranscriptMessage {
65
- parts: TranscriptPart[];
66
- role: TranscriptRole;
67
- timestamp?: number;
68
- }
69
- export interface ConversationRunReport extends ConversationSummaryReport {
70
- activity?: ConversationActivityReport[];
71
- transcriptAvailable: boolean;
72
- transcriptMetadata?: TranscriptMessage[];
73
- transcriptMessageCount?: number;
74
- transcriptRedacted?: boolean;
75
- transcriptRedactionReason?: "non_public_conversation";
76
- transcript: TranscriptMessage[];
77
- }
78
- export type ConversationActivityStatus = "aborted" | "completed" | "error" | "running" | "success";
79
- interface ActivityPayloadMetadata {
80
- inputKeys?: string[];
81
- inputSizeBytes?: number;
82
- inputSizeChars?: number;
83
- inputType?: string;
84
- }
85
- export interface ConversationSubagentActivityReport {
86
- type: "subagent";
87
- createdAt: string;
88
- endedAt?: string;
89
- id: string;
90
- outcome?: "success" | "error" | "aborted";
91
- parentToolCallId?: string;
92
- status: ConversationActivityStatus;
93
- subagentKind: string;
94
- transcriptAvailable?: boolean;
95
- }
96
- export interface ConversationToolActivityReport extends ActivityPayloadMetadata {
97
- type: "tool_execution";
98
- args?: unknown;
99
- createdAt: string;
100
- id: string;
101
- redacted?: boolean;
102
- status: ConversationActivityStatus;
103
- subagents: ConversationSubagentActivityReport[];
104
- toolCallId: string;
105
- toolName: string;
106
- }
107
- export type ConversationActivityReport = ConversationToolActivityReport | ConversationSubagentActivityReport;
108
- export interface ConversationReport {
109
- conversationId: string;
110
- /** Always-populated display title, computed the same way as per-run reports. */
111
- displayTitle: string;
112
- generatedAt: string;
113
- sentryConversationUrl?: string;
114
- runs: ConversationRunReport[];
115
- }
116
- export interface ConversationSubagentTranscriptReport {
117
- type: "subagent";
118
- createdAt: string;
119
- endedAt?: string;
120
- id: string;
121
- outcome?: "success" | "error" | "aborted";
122
- parentToolCallId?: string;
123
- status: ConversationActivityStatus;
124
- subagentConversationId?: string;
125
- subagentKind: string;
126
- subagentSentryConversationUrl?: string;
127
- transcript: TranscriptMessage[];
128
- transcriptAvailable: boolean;
129
- transcriptMessageCount?: number;
130
- transcriptRedacted?: boolean;
131
- transcriptRedactionReason?: "non_public_conversation";
132
- unavailableReason?: "missing_transcript_range" | "missing_transcript_ref" | "not_found";
133
- }
134
- export interface ConversationFeed {
135
- conversations: ConversationSummaryReport[];
136
- source: "conversation_index";
137
- generatedAt: string;
138
- }
139
- export interface ConversationStatsItem {
140
- active: number;
141
- conversations: number;
142
- durationMs: number;
143
- failed: number;
144
- hung: number;
145
- label: string;
146
- runs: number;
147
- tokens?: number;
148
- }
149
- export interface ConversationStatsReport {
150
- active: number;
151
- conversations: number;
152
- durationMs: number;
153
- failed: number;
154
- generatedAt: string;
155
- hung: number;
156
- locations: ConversationStatsItem[];
157
- actors: ConversationStatsItem[];
158
- sampleLimit: number;
159
- sampleSize: number;
160
- source: "conversation_index";
161
- tokens?: number;
162
- truncated: boolean;
163
- runs: number;
164
- windowEnd: string;
165
- windowStart: string;
166
- }
167
- /** Read the recent conversation feed for reporting consumers. */
168
- export declare function readConversationFeed(options?: ConversationReaderOptions): Promise<ConversationFeed>;
169
- /** Read aggregate conversation statistics for reporting consumers. */
170
- export declare function readConversationStatsReport(options?: ConversationReaderOptions): Promise<ConversationStatsReport>;
171
- /** List recent conversation summaries for plugin operational reports. */
172
- export declare function listRecentConversationSummaries(options?: {
173
- limit?: number;
174
- } & ConversationReaderOptions): Promise<PluginConversationSummary[]>;
175
- /** Read one conversation transcript for reporting consumers. */
176
- export declare function readConversationReport(conversationId: string, options?: ConversationReaderOptions): Promise<ConversationReport>;
177
- /** Read one child-agent transcript through its parent conversation run. */
178
- export declare function readConversationSubagentTranscriptReport(conversationId: string, runId: string, subagentId: string, options?: ConversationReaderOptions): Promise<ConversationSubagentTranscriptReport>;
1
+ export * from "./conversations/index";
@@ -1,6 +1,6 @@
1
1
  import type { PluginOperationalReport } from "@sentry/junior-plugin-api";
2
2
  import { type ConversationFeed, type PluginConversationSummary, type ConversationReport, type ConversationSubagentTranscriptReport, type ConversationStatsReport } from "./reporting/conversations";
3
- export type { PluginConversationStatus, PluginConversations, PluginConversationSummary, ConversationActivityReport, ConversationActivityStatus, ConversationFeed, ConversationReport, ConversationReportStatus, ConversationRunReport, ConversationSubagentActivityReport, ConversationSubagentTranscriptReport, ConversationStatsItem, ConversationStatsReport, ConversationSummaryReport, ConversationSurface, ConversationToolActivityReport, ConversationUsage, ActorIdentity, TranscriptMessage, TranscriptPart, TranscriptPartType, TranscriptRole, } from "./reporting/conversations";
3
+ export type { PluginConversationStatus, PluginConversations, PluginConversationSummary, ConversationActivityReport, ConversationActivityStatus, ConversationCost, ConversationFeed, ConversationReport, ConversationReportStatus, ConversationRunReport, ConversationSubagentActivityReport, ConversationSubagentTranscriptReport, ConversationStatsItem, ConversationStatsReport, ConversationSummaryReport, ConversationSurface, ConversationToolActivityReport, ConversationUsage, ActorIdentity, TranscriptMessage, TranscriptPart, TranscriptPartType, TranscriptRole, } from "./reporting/conversations";
4
4
  export interface HealthReport {
5
5
  status: "ok";
6
6
  service: string;
@@ -62,9 +62,10 @@ export interface JuniorReporting {
62
62
  /**
63
63
  * Read one conversation transcript for reporting consumers.
64
64
  *
65
- * The current implementation joins turn-session records with expiring session
66
- * logs, but the API should stay compatible with a future Sentry trace-history
67
- * source. Avoid adding fields that require Redis-only transcript internals.
65
+ * Transcript messages and activity steps come from SQL (`junior_agent_steps`
66
+ * / `junior_conversation_messages`); the API should stay compatible with a
67
+ * future Sentry trace-history source, so avoid fields that require store
68
+ * internals.
68
69
  */
69
70
  getConversation(conversationId: string): Promise<ConversationReport>;
70
71
  /** Load a child-agent transcript only when an operator opens that subagent. */