@buoy-gg/ask-buoy 7.0.33
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/LICENSE +58 -0
- package/README.md +50 -0
- package/lib/commonjs/blocks/AskBlocks.js +338 -0
- package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
- package/lib/commonjs/blocks/BlockRenderer.js +250 -0
- package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
- package/lib/commonjs/blocks/ChromePrototypes.js +514 -0
- package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
- package/lib/commonjs/blocks/DataBlocks.js +545 -0
- package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
- package/lib/commonjs/blocks/ExtraBlocks.js +1821 -0
- package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
- package/lib/commonjs/blocks/MediaBlocks.js +140 -0
- package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
- package/lib/commonjs/blocks/ReceiptBlocks.js +596 -0
- package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
- package/lib/commonjs/blocks/context.js +42 -0
- package/lib/commonjs/blocks/context.js.map +1 -0
- package/lib/commonjs/blocks/icons.js +96 -0
- package/lib/commonjs/blocks/icons.js.map +1 -0
- package/lib/commonjs/blocks/index.js +95 -0
- package/lib/commonjs/blocks/index.js.map +1 -0
- package/lib/commonjs/blocks/primitives.js +312 -0
- package/lib/commonjs/blocks/primitives.js.map +1 -0
- package/lib/commonjs/blocks/primitivesIndex.js +56 -0
- package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
- package/lib/commonjs/components/ApprovalCard.js +140 -0
- package/lib/commonjs/components/ApprovalCard.js.map +1 -0
- package/lib/commonjs/components/AskBuoyHeader.js +127 -0
- package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
- package/lib/commonjs/components/AskBuoyIcon.js +19 -0
- package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
- package/lib/commonjs/components/AskBuoyModal.js +322 -0
- package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
- package/lib/commonjs/components/ChangesBar.js +211 -0
- package/lib/commonjs/components/ChangesBar.js.map +1 -0
- package/lib/commonjs/components/Composer.js +175 -0
- package/lib/commonjs/components/Composer.js.map +1 -0
- package/lib/commonjs/components/EmptyState.js +154 -0
- package/lib/commonjs/components/EmptyState.js.map +1 -0
- package/lib/commonjs/components/Markdown.js +252 -0
- package/lib/commonjs/components/Markdown.js.map +1 -0
- package/lib/commonjs/components/MessageList.js +648 -0
- package/lib/commonjs/components/MessageList.js.map +1 -0
- package/lib/commonjs/components/TypingDots.js +63 -0
- package/lib/commonjs/components/TypingDots.js.map +1 -0
- package/lib/commonjs/index.js +205 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +90 -0
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/store/askBuoyStore.js +279 -0
- package/lib/commonjs/store/askBuoyStore.js.map +1 -0
- package/lib/commonjs/store/useAskBuoy.js +299 -0
- package/lib/commonjs/store/useAskBuoy.js.map +1 -0
- package/lib/commonjs/sync/askBuoySyncAdapter.js +119 -0
- package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
- package/lib/commonjs/sync/askBuoySyncAdapter.test.js +136 -0
- package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
- package/lib/commonjs/sync/wire.js +58 -0
- package/lib/commonjs/sync/wire.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/blocks/AskBlocks.js +331 -0
- package/lib/module/blocks/AskBlocks.js.map +1 -0
- package/lib/module/blocks/BlockRenderer.js +245 -0
- package/lib/module/blocks/BlockRenderer.js.map +1 -0
- package/lib/module/blocks/ChromePrototypes.js +503 -0
- package/lib/module/blocks/ChromePrototypes.js.map +1 -0
- package/lib/module/blocks/DataBlocks.js +532 -0
- package/lib/module/blocks/DataBlocks.js.map +1 -0
- package/lib/module/blocks/ExtraBlocks.js +1794 -0
- package/lib/module/blocks/ExtraBlocks.js.map +1 -0
- package/lib/module/blocks/MediaBlocks.js +135 -0
- package/lib/module/blocks/MediaBlocks.js.map +1 -0
- package/lib/module/blocks/ReceiptBlocks.js +584 -0
- package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
- package/lib/module/blocks/context.js +35 -0
- package/lib/module/blocks/context.js.map +1 -0
- package/lib/module/blocks/icons.js +91 -0
- package/lib/module/blocks/icons.js.map +1 -0
- package/lib/module/blocks/index.js +8 -0
- package/lib/module/blocks/index.js.map +1 -0
- package/lib/module/blocks/primitives.js +301 -0
- package/lib/module/blocks/primitives.js.map +1 -0
- package/lib/module/blocks/primitivesIndex.js +5 -0
- package/lib/module/blocks/primitivesIndex.js.map +1 -0
- package/lib/module/components/ApprovalCard.js +135 -0
- package/lib/module/components/ApprovalCard.js.map +1 -0
- package/lib/module/components/AskBuoyHeader.js +124 -0
- package/lib/module/components/AskBuoyHeader.js.map +1 -0
- package/lib/module/components/AskBuoyIcon.js +8 -0
- package/lib/module/components/AskBuoyIcon.js.map +1 -0
- package/lib/module/components/AskBuoyModal.js +317 -0
- package/lib/module/components/AskBuoyModal.js.map +1 -0
- package/lib/module/components/ChangesBar.js +206 -0
- package/lib/module/components/ChangesBar.js.map +1 -0
- package/lib/module/components/Composer.js +170 -0
- package/lib/module/components/Composer.js.map +1 -0
- package/lib/module/components/EmptyState.js +149 -0
- package/lib/module/components/EmptyState.js.map +1 -0
- package/lib/module/components/Markdown.js +246 -0
- package/lib/module/components/Markdown.js.map +1 -0
- package/lib/module/components/MessageList.js +642 -0
- package/lib/module/components/MessageList.js.map +1 -0
- package/lib/module/components/TypingDots.js +58 -0
- package/lib/module/components/TypingDots.js.map +1 -0
- package/lib/module/index.js +29 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +73 -0
- package/lib/module/preset.js.map +1 -0
- package/lib/module/store/askBuoyStore.js +275 -0
- package/lib/module/store/askBuoyStore.js.map +1 -0
- package/lib/module/store/useAskBuoy.js +293 -0
- package/lib/module/store/useAskBuoy.js.map +1 -0
- package/lib/module/sync/askBuoySyncAdapter.js +114 -0
- package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
- package/lib/module/sync/askBuoySyncAdapter.test.js +135 -0
- package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
- package/lib/module/sync/wire.js +47 -0
- package/lib/module/sync/wire.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/blocks/AskBlocks.d.ts +11 -0
- package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
- package/lib/typescript/blocks/BlockRenderer.d.ts +5 -0
- package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
- package/lib/typescript/blocks/ChromePrototypes.d.ts +27 -0
- package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
- package/lib/typescript/blocks/DataBlocks.d.ts +29 -0
- package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
- package/lib/typescript/blocks/ExtraBlocks.d.ts +69 -0
- package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
- package/lib/typescript/blocks/MediaBlocks.d.ts +5 -0
- package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
- package/lib/typescript/blocks/ReceiptBlocks.d.ts +27 -0
- package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
- package/lib/typescript/blocks/context.d.ts +35 -0
- package/lib/typescript/blocks/context.d.ts.map +1 -0
- package/lib/typescript/blocks/icons.d.ts +6 -0
- package/lib/typescript/blocks/icons.d.ts.map +1 -0
- package/lib/typescript/blocks/index.d.ts +6 -0
- package/lib/typescript/blocks/index.d.ts.map +1 -0
- package/lib/typescript/blocks/primitives.d.ts +85 -0
- package/lib/typescript/blocks/primitives.d.ts.map +1 -0
- package/lib/typescript/blocks/primitivesIndex.d.ts +3 -0
- package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
- package/lib/typescript/components/ApprovalCard.d.ts +7 -0
- package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
- package/lib/typescript/components/AskBuoyHeader.d.ts +14 -0
- package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
- package/lib/typescript/components/AskBuoyIcon.d.ts +6 -0
- package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
- package/lib/typescript/components/AskBuoyModal.d.ts +13 -0
- package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
- package/lib/typescript/components/ChangesBar.d.ts +9 -0
- package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
- package/lib/typescript/components/Composer.d.ts +9 -0
- package/lib/typescript/components/Composer.d.ts.map +1 -0
- package/lib/typescript/components/EmptyState.d.ts +6 -0
- package/lib/typescript/components/EmptyState.d.ts.map +1 -0
- package/lib/typescript/components/Markdown.d.ts +23 -0
- package/lib/typescript/components/Markdown.d.ts.map +1 -0
- package/lib/typescript/components/MessageList.d.ts +18 -0
- package/lib/typescript/components/MessageList.d.ts.map +1 -0
- package/lib/typescript/components/TypingDots.d.ts +2 -0
- package/lib/typescript/components/TypingDots.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +28 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts +61 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/store/askBuoyStore.d.ts +124 -0
- package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
- package/lib/typescript/store/useAskBuoy.d.ts +22 -0
- package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
- package/lib/typescript/sync/askBuoySyncAdapter.d.ts +73 -0
- package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
- package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts +2 -0
- package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
- package/lib/typescript/sync/wire.d.ts +17 -0
- package/lib/typescript/sync/wire.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +119 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The transcript.
|
|
5
|
+
*
|
|
6
|
+
* Owns the ONLY scroller in the sheet. JsModal's default wrapper uses
|
|
7
|
+
* `contentContainerStyle: { flexGrow: 1 }`, so a `flex: 1` scroller nested
|
|
8
|
+
* inside resolves against the CONTENT rather than the viewport: it grows to
|
|
9
|
+
* full content height, never scrolls, and the outer wrapper scrolls instead.
|
|
10
|
+
* That is invisible to a human and fatal to Detox ("View is not scrollable at
|
|
11
|
+
* the given start point"). The sheet passes `disableScrollWrapper` and this
|
|
12
|
+
* list is the one scroller.
|
|
13
|
+
*
|
|
14
|
+
* Layout, and why:
|
|
15
|
+
* - The user's messages are bubbles on the right; the assistant's text is
|
|
16
|
+
* plain, full-width prose on the left. A grey bubble around every answer
|
|
17
|
+
* cost 28pt of width per line and made the two sides look like the same
|
|
18
|
+
* speaker.
|
|
19
|
+
* - Tool calls render as an ACTIVITY CARD above the answer they produced —
|
|
20
|
+
* one row per call, a status mark, a short human title ("Open /bag") and a
|
|
21
|
+
* result word ("Done", "12 items", "Not found"). Nothing in a row is
|
|
22
|
+
* truncated to the point of being unreadable: the title wraps, and tapping
|
|
23
|
+
* the row expands it to the catalog's full sentence plus the tool it ran on.
|
|
24
|
+
* The previous version showed the model-facing sentence cut off at two
|
|
25
|
+
* lines with the result's JSON key names beside it, which was unreadable
|
|
26
|
+
* AND uninformative.
|
|
27
|
+
*/
|
|
28
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
29
|
+
import { ActivityIndicator, FlatList, Pressable, Share, StyleSheet, Text, View } from "react-native";
|
|
30
|
+
import { AlertTriangle, Check, ChevronDown, ChevronRight, night, X } from "@buoy-gg/shared-ui";
|
|
31
|
+
import { isAskBlock, toolTitle } from "@buoy-gg/agent-core";
|
|
32
|
+
import { BlockRenderer } from "../blocks/BlockRenderer";
|
|
33
|
+
import { Markdown } from "./Markdown";
|
|
34
|
+
import { TypingDots } from "./TypingDots";
|
|
35
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
36
|
+
function StatusMark({
|
|
37
|
+
status
|
|
38
|
+
}) {
|
|
39
|
+
switch (status) {
|
|
40
|
+
case "running":
|
|
41
|
+
return /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
42
|
+
size: "small",
|
|
43
|
+
color: night.color.textSecondary
|
|
44
|
+
});
|
|
45
|
+
case "ok":
|
|
46
|
+
return /*#__PURE__*/_jsx(View, {
|
|
47
|
+
style: [styles.mark, styles.markOk],
|
|
48
|
+
children: /*#__PURE__*/_jsx(Check, {
|
|
49
|
+
size: 10,
|
|
50
|
+
color: night.color.onAccent
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
case "failed":
|
|
54
|
+
return /*#__PURE__*/_jsx(View, {
|
|
55
|
+
style: [styles.mark, styles.markFailed],
|
|
56
|
+
children: /*#__PURE__*/_jsx(X, {
|
|
57
|
+
size: 10,
|
|
58
|
+
color: night.color.text
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
case "refused":
|
|
62
|
+
return /*#__PURE__*/_jsx(View, {
|
|
63
|
+
style: [styles.mark, styles.markRefused],
|
|
64
|
+
children: /*#__PURE__*/_jsx(AlertTriangle, {
|
|
65
|
+
size: 10,
|
|
66
|
+
color: night.color.onAccent
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** The trailing word: what happened, in one glance. */
|
|
73
|
+
function statusText(call) {
|
|
74
|
+
if (call.status === "running") return {
|
|
75
|
+
text: "",
|
|
76
|
+
tone: "muted"
|
|
77
|
+
};
|
|
78
|
+
if (call.status === "refused") return {
|
|
79
|
+
text: "Refused",
|
|
80
|
+
tone: "warning"
|
|
81
|
+
};
|
|
82
|
+
if (call.status === "failed") return {
|
|
83
|
+
text: "Failed",
|
|
84
|
+
tone: "danger"
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
text: call.summary || "Done",
|
|
88
|
+
tone: "muted"
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function ActivityRow({
|
|
92
|
+
call,
|
|
93
|
+
last
|
|
94
|
+
}) {
|
|
95
|
+
const [open, setOpen] = useState(false);
|
|
96
|
+
const status = statusText(call);
|
|
97
|
+
const Chevron = open ? ChevronDown : ChevronRight;
|
|
98
|
+
const failureDetail = call.status === "failed" && call.summary && call.summary !== "Failed" ? call.summary : null;
|
|
99
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
100
|
+
testID: `buoy-ask-buoy-tool-${call.toolId}`,
|
|
101
|
+
accessibilityRole: "button",
|
|
102
|
+
accessibilityLabel: `${call.label}, ${status.text || "running"}`,
|
|
103
|
+
accessibilityState: {
|
|
104
|
+
expanded: open
|
|
105
|
+
},
|
|
106
|
+
onPress: () => setOpen(v => !v),
|
|
107
|
+
style: [styles.row, !last && styles.rowDivider],
|
|
108
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
109
|
+
style: styles.rowLine,
|
|
110
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
111
|
+
style: styles.markSlot,
|
|
112
|
+
children: /*#__PURE__*/_jsx(StatusMark, {
|
|
113
|
+
status: call.status
|
|
114
|
+
})
|
|
115
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
116
|
+
style: styles.rowTitle,
|
|
117
|
+
children: call.label
|
|
118
|
+
}), status.text ? /*#__PURE__*/_jsx(Text, {
|
|
119
|
+
style: [styles.rowStatus, status.tone === "danger" && styles.rowStatusDanger, status.tone === "warning" && styles.rowStatusWarning],
|
|
120
|
+
numberOfLines: 1,
|
|
121
|
+
children: status.text
|
|
122
|
+
}) : null, /*#__PURE__*/_jsx(Chevron, {
|
|
123
|
+
size: 12,
|
|
124
|
+
color: night.color.textTertiary
|
|
125
|
+
})]
|
|
126
|
+
}), open && /*#__PURE__*/_jsxs(View, {
|
|
127
|
+
style: styles.rowDetail,
|
|
128
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
129
|
+
style: styles.rowTool,
|
|
130
|
+
children: toolTitle(call.toolId).toUpperCase()
|
|
131
|
+
}), call.description ? /*#__PURE__*/_jsx(Text, {
|
|
132
|
+
style: styles.rowDescription,
|
|
133
|
+
children: call.description
|
|
134
|
+
}) : null, failureDetail ? /*#__PURE__*/_jsx(Text, {
|
|
135
|
+
style: styles.rowFailure,
|
|
136
|
+
children: failureDetail
|
|
137
|
+
}) : null]
|
|
138
|
+
})]
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const COLLAPSE_AFTER = 4;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* More than four steps collapse to one line — "Did 15 things · 5 failed" —
|
|
145
|
+
* with the failed and refused rows pinned so the bad news is never hidden.
|
|
146
|
+
*/
|
|
147
|
+
function ActivityCard({
|
|
148
|
+
calls
|
|
149
|
+
}) {
|
|
150
|
+
const [expanded, setExpanded] = useState(false);
|
|
151
|
+
const running = calls.some(c => c.status === "running");
|
|
152
|
+
const collapse = calls.length > COLLAPSE_AFTER && !expanded && !running;
|
|
153
|
+
const failed = calls.filter(c => c.status === "failed").length;
|
|
154
|
+
const refused = calls.filter(c => c.status === "refused").length;
|
|
155
|
+
const shown = collapse ? calls.filter(c => c.status === "failed" || c.status === "refused") : calls;
|
|
156
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
157
|
+
style: styles.card,
|
|
158
|
+
testID: "buoy-ask-buoy-activity",
|
|
159
|
+
children: [collapse && /*#__PURE__*/_jsx(Pressable, {
|
|
160
|
+
onPress: () => setExpanded(true),
|
|
161
|
+
accessibilityRole: "button",
|
|
162
|
+
style: [styles.row, shown.length > 0 && styles.rowDivider],
|
|
163
|
+
testID: "buoy-ask-buoy-activity-expand",
|
|
164
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
165
|
+
style: styles.rowLine,
|
|
166
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
167
|
+
style: styles.rowTitle,
|
|
168
|
+
children: ["Did ", calls.length, " things", failed ? ` · ${failed} failed` : "", refused ? ` · ${refused} refused` : ""]
|
|
169
|
+
}), /*#__PURE__*/_jsx(ChevronRight, {
|
|
170
|
+
size: 12,
|
|
171
|
+
color: night.color.textTertiary
|
|
172
|
+
})]
|
|
173
|
+
})
|
|
174
|
+
}), shown.map((c, i) => /*#__PURE__*/_jsx(ActivityRow, {
|
|
175
|
+
call: c,
|
|
176
|
+
last: i === shown.length - 1
|
|
177
|
+
}, c.id))]
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/** Receipts and model blocks render between the activity card and the prose; Ask blocks last. */
|
|
182
|
+
function Blocks({
|
|
183
|
+
blocks
|
|
184
|
+
}) {
|
|
185
|
+
if (blocks.length === 0) return null;
|
|
186
|
+
return /*#__PURE__*/_jsx(View, {
|
|
187
|
+
style: styles.blocks,
|
|
188
|
+
children: blocks.map(({
|
|
189
|
+
block
|
|
190
|
+
}) => /*#__PURE__*/_jsx(BlockRenderer, {
|
|
191
|
+
block: block
|
|
192
|
+
}, block.id))
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function UserMessage({
|
|
196
|
+
message
|
|
197
|
+
}) {
|
|
198
|
+
return /*#__PURE__*/_jsx(View, {
|
|
199
|
+
style: styles.userWrap,
|
|
200
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
201
|
+
style: styles.userBubble,
|
|
202
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
203
|
+
style: styles.userText,
|
|
204
|
+
selectable: true,
|
|
205
|
+
children: message.text
|
|
206
|
+
})
|
|
207
|
+
})
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function AssistantMessage({
|
|
211
|
+
message,
|
|
212
|
+
onRetry
|
|
213
|
+
}) {
|
|
214
|
+
const running = message.toolCalls.some(c => c.status === "running");
|
|
215
|
+
const waiting = !!message.streaming && message.text.length === 0 && !running;
|
|
216
|
+
const askBlocks = message.blocks.filter(b => isAskBlock(b.block));
|
|
217
|
+
const showBlocks = message.blocks.filter(b => !isAskBlock(b.block));
|
|
218
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
219
|
+
style: styles.assistantWrap,
|
|
220
|
+
children: [message.toolCalls.length > 0 && /*#__PURE__*/_jsx(ActivityCard, {
|
|
221
|
+
calls: message.toolCalls
|
|
222
|
+
}), /*#__PURE__*/_jsx(Blocks, {
|
|
223
|
+
blocks: showBlocks
|
|
224
|
+
}), message.text.length > 0 && /*#__PURE__*/_jsx(Markdown, {
|
|
225
|
+
text: message.text,
|
|
226
|
+
style: styles.assistantText
|
|
227
|
+
}), /*#__PURE__*/_jsx(Blocks, {
|
|
228
|
+
blocks: askBlocks
|
|
229
|
+
}), waiting && /*#__PURE__*/_jsx(TypingDots, {}), message.error && /*#__PURE__*/_jsx(ErrorNote, {
|
|
230
|
+
error: message.error,
|
|
231
|
+
onRetry: onRetry
|
|
232
|
+
})]
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* A failed turn. The headline is for the tester ("couldn't reach the
|
|
238
|
+
* endpoint"); the raw message stays underneath for whoever gets the bug
|
|
239
|
+
* report, because "fetch failed: UnexpectedException: The network connection
|
|
240
|
+
* was lost" is what a developer needs and nothing a tester can act on.
|
|
241
|
+
*/
|
|
242
|
+
function ErrorNote({
|
|
243
|
+
error,
|
|
244
|
+
onRetry
|
|
245
|
+
}) {
|
|
246
|
+
const network = /fetch failed|network|ECONN|timed? ?out|socket|abort/i.test(error);
|
|
247
|
+
const headline = network ? "Couldn't reach your AI endpoint. Check the connection and try again." : "Something went wrong with that turn.";
|
|
248
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
249
|
+
style: styles.errorBox,
|
|
250
|
+
testID: "buoy-ask-buoy-error",
|
|
251
|
+
children: [/*#__PURE__*/_jsx(AlertTriangle, {
|
|
252
|
+
size: 14,
|
|
253
|
+
color: night.color.danger
|
|
254
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
255
|
+
style: styles.errorBody,
|
|
256
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
257
|
+
style: styles.errorText,
|
|
258
|
+
children: headline
|
|
259
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
260
|
+
style: styles.errorDetail,
|
|
261
|
+
selectable: true,
|
|
262
|
+
children: error
|
|
263
|
+
}), onRetry && /*#__PURE__*/_jsx(Pressable, {
|
|
264
|
+
testID: "buoy-ask-buoy-retry",
|
|
265
|
+
accessibilityRole: "button",
|
|
266
|
+
onPress: onRetry,
|
|
267
|
+
style: ({
|
|
268
|
+
pressed
|
|
269
|
+
}) => [styles.retry, pressed && styles.retryPressed],
|
|
270
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
271
|
+
style: styles.retryText,
|
|
272
|
+
children: "Retry"
|
|
273
|
+
})
|
|
274
|
+
})]
|
|
275
|
+
})]
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* The transcript as a ticket-ready text. Deliberately the ONLY way a session
|
|
281
|
+
* leaves the sheet: the transcript is never persisted (it can contain
|
|
282
|
+
* anything the agent read), so "attach this to the Jira ticket" has to be an
|
|
283
|
+
* explicit human act through the OS share sheet — which also offers Copy.
|
|
284
|
+
*/
|
|
285
|
+
export function transcriptToText(messages) {
|
|
286
|
+
const lines = [];
|
|
287
|
+
for (const m of messages) {
|
|
288
|
+
if (m.role === "user") {
|
|
289
|
+
lines.push(`You: ${m.text}`);
|
|
290
|
+
} else {
|
|
291
|
+
for (const c of m.toolCalls) {
|
|
292
|
+
const status = c.status === "failed" || c.status === "refused" ? ` (${c.status})` : "";
|
|
293
|
+
lines.push(` · ${c.label}${c.summary ? ` — ${c.summary}` : ""}${status}`);
|
|
294
|
+
}
|
|
295
|
+
if (m.text) lines.push(`Ask Buoy: ${m.text}`);
|
|
296
|
+
if (m.error) lines.push(` ! ${m.error}`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return lines.join("\n");
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Under the newest finished answer: the session's exit into a ticket. Small
|
|
304
|
+
* and quiet — QA's workflow ENDS in Jira/Slack, and without this the
|
|
305
|
+
* deliberately-unpersisted transcript had no way out at all.
|
|
306
|
+
*/
|
|
307
|
+
function TranscriptActions({
|
|
308
|
+
message,
|
|
309
|
+
messages
|
|
310
|
+
}) {
|
|
311
|
+
const shareReply = useCallback(() => {
|
|
312
|
+
void Share.share({
|
|
313
|
+
message: message.text
|
|
314
|
+
}).catch(() => {});
|
|
315
|
+
}, [message.text]);
|
|
316
|
+
const shareSession = useCallback(() => {
|
|
317
|
+
void Share.share({
|
|
318
|
+
message: transcriptToText(messages)
|
|
319
|
+
}).catch(() => {});
|
|
320
|
+
}, [messages]);
|
|
321
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
322
|
+
style: styles.transcriptActions,
|
|
323
|
+
children: [message.text.length > 0 && /*#__PURE__*/_jsx(Pressable, {
|
|
324
|
+
testID: "buoy-ask-buoy-share-reply",
|
|
325
|
+
accessibilityRole: "button",
|
|
326
|
+
onPress: shareReply,
|
|
327
|
+
style: ({
|
|
328
|
+
pressed
|
|
329
|
+
}) => [styles.shareBtn, pressed && styles.sharePressed],
|
|
330
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
331
|
+
style: styles.shareText,
|
|
332
|
+
children: "Share reply"
|
|
333
|
+
})
|
|
334
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
335
|
+
testID: "buoy-ask-buoy-share-session",
|
|
336
|
+
accessibilityRole: "button",
|
|
337
|
+
onPress: shareSession,
|
|
338
|
+
style: ({
|
|
339
|
+
pressed
|
|
340
|
+
}) => [styles.shareBtn, pressed && styles.sharePressed],
|
|
341
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
342
|
+
style: styles.shareText,
|
|
343
|
+
children: "Share session"
|
|
344
|
+
})
|
|
345
|
+
})]
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
function Row({
|
|
349
|
+
message,
|
|
350
|
+
messages,
|
|
351
|
+
onRetry,
|
|
352
|
+
isLast
|
|
353
|
+
}) {
|
|
354
|
+
if (message.role === "user") return /*#__PURE__*/_jsx(UserMessage, {
|
|
355
|
+
message: message
|
|
356
|
+
});
|
|
357
|
+
const finished = !message.streaming && !message.error;
|
|
358
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
359
|
+
children: [/*#__PURE__*/_jsx(AssistantMessage, {
|
|
360
|
+
message: message,
|
|
361
|
+
onRetry: onRetry
|
|
362
|
+
}), isLast && finished && /*#__PURE__*/_jsx(TranscriptActions, {
|
|
363
|
+
message: message,
|
|
364
|
+
messages: messages
|
|
365
|
+
})]
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
export function MessageList({
|
|
369
|
+
messages,
|
|
370
|
+
ListHeaderComponent,
|
|
371
|
+
ListEmptyComponent,
|
|
372
|
+
ListFooterComponent,
|
|
373
|
+
onRetry
|
|
374
|
+
}) {
|
|
375
|
+
const ref = useRef(null);
|
|
376
|
+
// Only auto-scroll when the user is already at the bottom. Yanking them back
|
|
377
|
+
// down while they are reading an earlier answer is the classic chat-UI sin.
|
|
378
|
+
//
|
|
379
|
+
// "At the bottom" is decided from the USER's gestures, not from every scroll
|
|
380
|
+
// event. An animated scrollToEnd fires intermediate events while the content
|
|
381
|
+
// is still growing under it, and reading those as "the user scrolled up"
|
|
382
|
+
// silently unpinned the list mid-answer — the reply then streamed in below
|
|
383
|
+
// the fold and the last thing on screen was the question.
|
|
384
|
+
const pinned = useRef(true);
|
|
385
|
+
const dragging = useRef(false);
|
|
386
|
+
const measure = useCallback(e => {
|
|
387
|
+
const {
|
|
388
|
+
contentOffset,
|
|
389
|
+
contentSize,
|
|
390
|
+
layoutMeasurement
|
|
391
|
+
} = e.nativeEvent;
|
|
392
|
+
const distance = contentSize.height - layoutMeasurement.height - contentOffset.y;
|
|
393
|
+
pinned.current = distance < 80;
|
|
394
|
+
}, []);
|
|
395
|
+
const onScrollBeginDrag = useCallback(() => {
|
|
396
|
+
dragging.current = true;
|
|
397
|
+
}, []);
|
|
398
|
+
const onScroll = useCallback(e => {
|
|
399
|
+
if (dragging.current) measure(e);
|
|
400
|
+
}, [measure]);
|
|
401
|
+
const onScrollEndDrag = useCallback(e => {
|
|
402
|
+
dragging.current = false;
|
|
403
|
+
measure(e);
|
|
404
|
+
}, [measure]);
|
|
405
|
+
const scrollToEnd = useCallback(() => {
|
|
406
|
+
if (!pinned.current) return;
|
|
407
|
+
// The size change fires before the new row has finished laying out its
|
|
408
|
+
// wrapped text; one frame later the end really is the end.
|
|
409
|
+
ref.current?.scrollToEnd({
|
|
410
|
+
animated: false
|
|
411
|
+
});
|
|
412
|
+
requestAnimationFrame(() => ref.current?.scrollToEnd({
|
|
413
|
+
animated: false
|
|
414
|
+
}));
|
|
415
|
+
}, []);
|
|
416
|
+
|
|
417
|
+
// A row can grow without the list reporting a size change in the same tick
|
|
418
|
+
// (an error box appended to the last message). Follow the transcript too.
|
|
419
|
+
const last = messages[messages.length - 1];
|
|
420
|
+
const tail = last ? `${last.id}:${last.text.length}:${last.toolCalls.length}:${last.error ?? ""}` : "";
|
|
421
|
+
useEffect(() => {
|
|
422
|
+
scrollToEnd();
|
|
423
|
+
}, [tail, scrollToEnd]);
|
|
424
|
+
return /*#__PURE__*/_jsx(FlatList, {
|
|
425
|
+
ref: ref,
|
|
426
|
+
testID: "buoy-ask-buoy-messages-scroll",
|
|
427
|
+
style: styles.list,
|
|
428
|
+
contentContainerStyle: styles.listContent,
|
|
429
|
+
data: messages,
|
|
430
|
+
keyExtractor: m => m.id,
|
|
431
|
+
renderItem: ({
|
|
432
|
+
item
|
|
433
|
+
}) => /*#__PURE__*/_jsx(Row, {
|
|
434
|
+
message: item,
|
|
435
|
+
messages: messages,
|
|
436
|
+
isLast: item.id === last?.id,
|
|
437
|
+
onRetry: item.id === last?.id ? onRetry : undefined
|
|
438
|
+
}),
|
|
439
|
+
onScroll: onScroll,
|
|
440
|
+
onScrollBeginDrag: onScrollBeginDrag,
|
|
441
|
+
onScrollEndDrag: onScrollEndDrag,
|
|
442
|
+
onMomentumScrollEnd: measure,
|
|
443
|
+
scrollEventThrottle: 32,
|
|
444
|
+
onContentSizeChange: scrollToEnd
|
|
445
|
+
// Mandatory with a focused input below: without it the first tap after
|
|
446
|
+
// typing only dismisses the keyboard and the button never fires.
|
|
447
|
+
,
|
|
448
|
+
keyboardShouldPersistTaps: "handled",
|
|
449
|
+
keyboardDismissMode: "interactive",
|
|
450
|
+
ListHeaderComponent: ListHeaderComponent,
|
|
451
|
+
ListEmptyComponent: ListEmptyComponent,
|
|
452
|
+
ListFooterComponent: ListFooterComponent
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
const styles = StyleSheet.create({
|
|
456
|
+
list: {
|
|
457
|
+
flex: 1,
|
|
458
|
+
backgroundColor: "transparent"
|
|
459
|
+
},
|
|
460
|
+
listContent: {
|
|
461
|
+
paddingHorizontal: night.gutter,
|
|
462
|
+
paddingTop: 12,
|
|
463
|
+
paddingBottom: 16,
|
|
464
|
+
gap: 16,
|
|
465
|
+
flexGrow: 1
|
|
466
|
+
},
|
|
467
|
+
// User
|
|
468
|
+
userWrap: {
|
|
469
|
+
alignItems: "flex-end"
|
|
470
|
+
},
|
|
471
|
+
userBubble: {
|
|
472
|
+
maxWidth: "84%",
|
|
473
|
+
paddingHorizontal: 14,
|
|
474
|
+
paddingVertical: 9,
|
|
475
|
+
borderRadius: 18,
|
|
476
|
+
borderBottomRightRadius: 6,
|
|
477
|
+
backgroundColor: night.color.accentFill,
|
|
478
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
479
|
+
borderColor: night.color.accentBorder
|
|
480
|
+
},
|
|
481
|
+
userText: {
|
|
482
|
+
color: night.color.text,
|
|
483
|
+
fontSize: night.font.row,
|
|
484
|
+
lineHeight: 21
|
|
485
|
+
},
|
|
486
|
+
// Assistant
|
|
487
|
+
assistantWrap: {
|
|
488
|
+
alignItems: "stretch",
|
|
489
|
+
gap: 10
|
|
490
|
+
},
|
|
491
|
+
blocks: {
|
|
492
|
+
gap: 10
|
|
493
|
+
},
|
|
494
|
+
assistantText: {
|
|
495
|
+
color: night.color.text,
|
|
496
|
+
fontSize: night.font.row,
|
|
497
|
+
lineHeight: 22,
|
|
498
|
+
paddingHorizontal: 2
|
|
499
|
+
},
|
|
500
|
+
// Activity card
|
|
501
|
+
card: {
|
|
502
|
+
borderRadius: night.radius.card,
|
|
503
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
504
|
+
borderColor: night.color.border,
|
|
505
|
+
backgroundColor: night.color.surface,
|
|
506
|
+
overflow: "hidden"
|
|
507
|
+
},
|
|
508
|
+
row: {
|
|
509
|
+
paddingHorizontal: 12,
|
|
510
|
+
paddingVertical: 10
|
|
511
|
+
},
|
|
512
|
+
rowDivider: {
|
|
513
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
514
|
+
borderBottomColor: night.color.separator
|
|
515
|
+
},
|
|
516
|
+
rowLine: {
|
|
517
|
+
flexDirection: "row",
|
|
518
|
+
alignItems: "center",
|
|
519
|
+
gap: 10
|
|
520
|
+
},
|
|
521
|
+
markSlot: {
|
|
522
|
+
width: 18,
|
|
523
|
+
height: 18,
|
|
524
|
+
alignItems: "center",
|
|
525
|
+
justifyContent: "center"
|
|
526
|
+
},
|
|
527
|
+
mark: {
|
|
528
|
+
width: 16,
|
|
529
|
+
height: 16,
|
|
530
|
+
borderRadius: 8,
|
|
531
|
+
alignItems: "center",
|
|
532
|
+
justifyContent: "center"
|
|
533
|
+
},
|
|
534
|
+
markOk: {
|
|
535
|
+
backgroundColor: night.color.accent
|
|
536
|
+
},
|
|
537
|
+
markFailed: {
|
|
538
|
+
backgroundColor: night.color.danger
|
|
539
|
+
},
|
|
540
|
+
markRefused: {
|
|
541
|
+
backgroundColor: night.color.warning
|
|
542
|
+
},
|
|
543
|
+
rowTitle: {
|
|
544
|
+
flex: 1,
|
|
545
|
+
color: night.color.text,
|
|
546
|
+
fontSize: night.font.body,
|
|
547
|
+
lineHeight: 19
|
|
548
|
+
},
|
|
549
|
+
rowStatus: {
|
|
550
|
+
color: night.color.textTertiary,
|
|
551
|
+
fontSize: night.font.caption,
|
|
552
|
+
maxWidth: 120
|
|
553
|
+
},
|
|
554
|
+
rowStatusDanger: {
|
|
555
|
+
color: night.color.danger
|
|
556
|
+
},
|
|
557
|
+
rowStatusWarning: {
|
|
558
|
+
color: night.color.warning
|
|
559
|
+
},
|
|
560
|
+
rowDetail: {
|
|
561
|
+
paddingLeft: 28,
|
|
562
|
+
paddingTop: 8,
|
|
563
|
+
gap: 4
|
|
564
|
+
},
|
|
565
|
+
rowTool: {
|
|
566
|
+
color: night.color.textTertiary,
|
|
567
|
+
fontSize: night.font.micro,
|
|
568
|
+
fontWeight: "600",
|
|
569
|
+
letterSpacing: 0.8
|
|
570
|
+
},
|
|
571
|
+
rowDescription: {
|
|
572
|
+
color: night.color.textSecondary,
|
|
573
|
+
fontSize: night.font.caption,
|
|
574
|
+
lineHeight: 18
|
|
575
|
+
},
|
|
576
|
+
rowFailure: {
|
|
577
|
+
color: night.color.danger,
|
|
578
|
+
fontSize: night.font.caption,
|
|
579
|
+
lineHeight: 18
|
|
580
|
+
},
|
|
581
|
+
// Error
|
|
582
|
+
errorBox: {
|
|
583
|
+
flexDirection: "row",
|
|
584
|
+
alignItems: "flex-start",
|
|
585
|
+
gap: 8,
|
|
586
|
+
paddingHorizontal: 12,
|
|
587
|
+
paddingVertical: 10,
|
|
588
|
+
borderRadius: night.radius.row,
|
|
589
|
+
backgroundColor: night.color.dangerSoft
|
|
590
|
+
},
|
|
591
|
+
errorBody: {
|
|
592
|
+
flex: 1,
|
|
593
|
+
gap: 4
|
|
594
|
+
},
|
|
595
|
+
errorText: {
|
|
596
|
+
color: night.color.danger,
|
|
597
|
+
fontSize: night.font.caption,
|
|
598
|
+
fontWeight: "600",
|
|
599
|
+
lineHeight: 18
|
|
600
|
+
},
|
|
601
|
+
errorDetail: {
|
|
602
|
+
color: night.color.textSecondary,
|
|
603
|
+
fontSize: night.font.micro,
|
|
604
|
+
lineHeight: 15
|
|
605
|
+
},
|
|
606
|
+
retry: {
|
|
607
|
+
alignSelf: "flex-start",
|
|
608
|
+
marginTop: 6,
|
|
609
|
+
paddingHorizontal: 14,
|
|
610
|
+
paddingVertical: 7,
|
|
611
|
+
borderRadius: night.radius.row,
|
|
612
|
+
backgroundColor: night.color.button
|
|
613
|
+
},
|
|
614
|
+
retryPressed: {
|
|
615
|
+
opacity: 0.7
|
|
616
|
+
},
|
|
617
|
+
retryText: {
|
|
618
|
+
color: night.color.accent,
|
|
619
|
+
fontSize: night.font.caption,
|
|
620
|
+
fontWeight: "600"
|
|
621
|
+
},
|
|
622
|
+
transcriptActions: {
|
|
623
|
+
flexDirection: "row",
|
|
624
|
+
gap: 8,
|
|
625
|
+
marginTop: 8
|
|
626
|
+
},
|
|
627
|
+
shareBtn: {
|
|
628
|
+
paddingHorizontal: 10,
|
|
629
|
+
paddingVertical: 5,
|
|
630
|
+
borderRadius: night.radius.badge,
|
|
631
|
+
backgroundColor: night.color.fill
|
|
632
|
+
},
|
|
633
|
+
sharePressed: {
|
|
634
|
+
opacity: 0.7
|
|
635
|
+
},
|
|
636
|
+
shareText: {
|
|
637
|
+
color: night.color.textSecondary,
|
|
638
|
+
fontSize: night.font.micro,
|
|
639
|
+
fontWeight: "600"
|
|
640
|
+
}
|
|
641
|
+
});
|
|
642
|
+
//# sourceMappingURL=MessageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","ActivityIndicator","FlatList","Pressable","Share","StyleSheet","Text","View","AlertTriangle","Check","ChevronDown","ChevronRight","night","X","isAskBlock","toolTitle","BlockRenderer","Markdown","TypingDots","jsx","_jsx","jsxs","_jsxs","StatusMark","status","size","color","textSecondary","style","styles","mark","markOk","children","onAccent","markFailed","text","markRefused","statusText","call","tone","summary","ActivityRow","last","open","setOpen","Chevron","failureDetail","testID","toolId","accessibilityRole","accessibilityLabel","label","accessibilityState","expanded","onPress","v","row","rowDivider","rowLine","markSlot","rowTitle","rowStatus","rowStatusDanger","rowStatusWarning","numberOfLines","textTertiary","rowDetail","rowTool","toUpperCase","description","rowDescription","rowFailure","COLLAPSE_AFTER","ActivityCard","calls","setExpanded","running","some","c","collapse","length","failed","filter","refused","shown","card","map","i","id","Blocks","blocks","block","UserMessage","message","userWrap","userBubble","userText","selectable","AssistantMessage","onRetry","toolCalls","waiting","streaming","askBlocks","b","showBlocks","assistantWrap","assistantText","error","ErrorNote","network","test","headline","errorBox","danger","errorBody","errorText","errorDetail","pressed","retry","retryPressed","retryText","transcriptToText","messages","lines","m","role","push","join","TranscriptActions","shareReply","share","catch","shareSession","transcriptActions","shareBtn","sharePressed","shareText","Row","isLast","finished","MessageList","ListHeaderComponent","ListEmptyComponent","ListFooterComponent","ref","pinned","dragging","measure","e","contentOffset","contentSize","layoutMeasurement","nativeEvent","distance","height","y","current","onScrollBeginDrag","onScroll","onScrollEndDrag","scrollToEnd","animated","requestAnimationFrame","tail","list","contentContainerStyle","listContent","data","keyExtractor","renderItem","item","undefined","onMomentumScrollEnd","scrollEventThrottle","onContentSizeChange","keyboardShouldPersistTaps","keyboardDismissMode","create","flex","backgroundColor","paddingHorizontal","gutter","paddingTop","paddingBottom","gap","flexGrow","alignItems","maxWidth","paddingVertical","borderRadius","borderBottomRightRadius","accentFill","borderWidth","hairlineWidth","borderColor","accentBorder","fontSize","font","lineHeight","radius","border","surface","overflow","borderBottomWidth","borderBottomColor","separator","flexDirection","width","justifyContent","accent","warning","body","caption","paddingLeft","micro","fontWeight","letterSpacing","dangerSoft","alignSelf","marginTop","button","opacity","badge","fill"],"sourceRoot":"../../../src","sources":["components/MessageList.tsx"],"mappings":"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","ignoreList":[]}
|