@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.
Files changed (184) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +50 -0
  3. package/lib/commonjs/blocks/AskBlocks.js +338 -0
  4. package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
  5. package/lib/commonjs/blocks/BlockRenderer.js +250 -0
  6. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
  7. package/lib/commonjs/blocks/ChromePrototypes.js +514 -0
  8. package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
  9. package/lib/commonjs/blocks/DataBlocks.js +545 -0
  10. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  11. package/lib/commonjs/blocks/ExtraBlocks.js +1821 -0
  12. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  13. package/lib/commonjs/blocks/MediaBlocks.js +140 -0
  14. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
  15. package/lib/commonjs/blocks/ReceiptBlocks.js +596 -0
  16. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
  17. package/lib/commonjs/blocks/context.js +42 -0
  18. package/lib/commonjs/blocks/context.js.map +1 -0
  19. package/lib/commonjs/blocks/icons.js +96 -0
  20. package/lib/commonjs/blocks/icons.js.map +1 -0
  21. package/lib/commonjs/blocks/index.js +95 -0
  22. package/lib/commonjs/blocks/index.js.map +1 -0
  23. package/lib/commonjs/blocks/primitives.js +312 -0
  24. package/lib/commonjs/blocks/primitives.js.map +1 -0
  25. package/lib/commonjs/blocks/primitivesIndex.js +56 -0
  26. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  27. package/lib/commonjs/components/ApprovalCard.js +140 -0
  28. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  29. package/lib/commonjs/components/AskBuoyHeader.js +127 -0
  30. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  31. package/lib/commonjs/components/AskBuoyIcon.js +19 -0
  32. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  33. package/lib/commonjs/components/AskBuoyModal.js +322 -0
  34. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  35. package/lib/commonjs/components/ChangesBar.js +211 -0
  36. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  37. package/lib/commonjs/components/Composer.js +175 -0
  38. package/lib/commonjs/components/Composer.js.map +1 -0
  39. package/lib/commonjs/components/EmptyState.js +154 -0
  40. package/lib/commonjs/components/EmptyState.js.map +1 -0
  41. package/lib/commonjs/components/Markdown.js +252 -0
  42. package/lib/commonjs/components/Markdown.js.map +1 -0
  43. package/lib/commonjs/components/MessageList.js +648 -0
  44. package/lib/commonjs/components/MessageList.js.map +1 -0
  45. package/lib/commonjs/components/TypingDots.js +63 -0
  46. package/lib/commonjs/components/TypingDots.js.map +1 -0
  47. package/lib/commonjs/index.js +205 -0
  48. package/lib/commonjs/index.js.map +1 -0
  49. package/lib/commonjs/package.json +1 -0
  50. package/lib/commonjs/preset.js +90 -0
  51. package/lib/commonjs/preset.js.map +1 -0
  52. package/lib/commonjs/store/askBuoyStore.js +279 -0
  53. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  54. package/lib/commonjs/store/useAskBuoy.js +299 -0
  55. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  56. package/lib/commonjs/sync/askBuoySyncAdapter.js +119 -0
  57. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  58. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +136 -0
  59. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  60. package/lib/commonjs/sync/wire.js +58 -0
  61. package/lib/commonjs/sync/wire.js.map +1 -0
  62. package/lib/commonjs/types.js +6 -0
  63. package/lib/commonjs/types.js.map +1 -0
  64. package/lib/module/blocks/AskBlocks.js +331 -0
  65. package/lib/module/blocks/AskBlocks.js.map +1 -0
  66. package/lib/module/blocks/BlockRenderer.js +245 -0
  67. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  68. package/lib/module/blocks/ChromePrototypes.js +503 -0
  69. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  70. package/lib/module/blocks/DataBlocks.js +532 -0
  71. package/lib/module/blocks/DataBlocks.js.map +1 -0
  72. package/lib/module/blocks/ExtraBlocks.js +1794 -0
  73. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  74. package/lib/module/blocks/MediaBlocks.js +135 -0
  75. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  76. package/lib/module/blocks/ReceiptBlocks.js +584 -0
  77. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  78. package/lib/module/blocks/context.js +35 -0
  79. package/lib/module/blocks/context.js.map +1 -0
  80. package/lib/module/blocks/icons.js +91 -0
  81. package/lib/module/blocks/icons.js.map +1 -0
  82. package/lib/module/blocks/index.js +8 -0
  83. package/lib/module/blocks/index.js.map +1 -0
  84. package/lib/module/blocks/primitives.js +301 -0
  85. package/lib/module/blocks/primitives.js.map +1 -0
  86. package/lib/module/blocks/primitivesIndex.js +5 -0
  87. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  88. package/lib/module/components/ApprovalCard.js +135 -0
  89. package/lib/module/components/ApprovalCard.js.map +1 -0
  90. package/lib/module/components/AskBuoyHeader.js +124 -0
  91. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  92. package/lib/module/components/AskBuoyIcon.js +8 -0
  93. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  94. package/lib/module/components/AskBuoyModal.js +317 -0
  95. package/lib/module/components/AskBuoyModal.js.map +1 -0
  96. package/lib/module/components/ChangesBar.js +206 -0
  97. package/lib/module/components/ChangesBar.js.map +1 -0
  98. package/lib/module/components/Composer.js +170 -0
  99. package/lib/module/components/Composer.js.map +1 -0
  100. package/lib/module/components/EmptyState.js +149 -0
  101. package/lib/module/components/EmptyState.js.map +1 -0
  102. package/lib/module/components/Markdown.js +246 -0
  103. package/lib/module/components/Markdown.js.map +1 -0
  104. package/lib/module/components/MessageList.js +642 -0
  105. package/lib/module/components/MessageList.js.map +1 -0
  106. package/lib/module/components/TypingDots.js +58 -0
  107. package/lib/module/components/TypingDots.js.map +1 -0
  108. package/lib/module/index.js +29 -0
  109. package/lib/module/index.js.map +1 -0
  110. package/lib/module/preset.js +73 -0
  111. package/lib/module/preset.js.map +1 -0
  112. package/lib/module/store/askBuoyStore.js +275 -0
  113. package/lib/module/store/askBuoyStore.js.map +1 -0
  114. package/lib/module/store/useAskBuoy.js +293 -0
  115. package/lib/module/store/useAskBuoy.js.map +1 -0
  116. package/lib/module/sync/askBuoySyncAdapter.js +114 -0
  117. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  118. package/lib/module/sync/askBuoySyncAdapter.test.js +135 -0
  119. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  120. package/lib/module/sync/wire.js +47 -0
  121. package/lib/module/sync/wire.js.map +1 -0
  122. package/lib/module/types.js +4 -0
  123. package/lib/module/types.js.map +1 -0
  124. package/lib/typescript/blocks/AskBlocks.d.ts +11 -0
  125. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  126. package/lib/typescript/blocks/BlockRenderer.d.ts +5 -0
  127. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  128. package/lib/typescript/blocks/ChromePrototypes.d.ts +27 -0
  129. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  130. package/lib/typescript/blocks/DataBlocks.d.ts +29 -0
  131. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  132. package/lib/typescript/blocks/ExtraBlocks.d.ts +69 -0
  133. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  134. package/lib/typescript/blocks/MediaBlocks.d.ts +5 -0
  135. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  136. package/lib/typescript/blocks/ReceiptBlocks.d.ts +27 -0
  137. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  138. package/lib/typescript/blocks/context.d.ts +35 -0
  139. package/lib/typescript/blocks/context.d.ts.map +1 -0
  140. package/lib/typescript/blocks/icons.d.ts +6 -0
  141. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  142. package/lib/typescript/blocks/index.d.ts +6 -0
  143. package/lib/typescript/blocks/index.d.ts.map +1 -0
  144. package/lib/typescript/blocks/primitives.d.ts +85 -0
  145. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  146. package/lib/typescript/blocks/primitivesIndex.d.ts +3 -0
  147. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  148. package/lib/typescript/components/ApprovalCard.d.ts +7 -0
  149. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  150. package/lib/typescript/components/AskBuoyHeader.d.ts +14 -0
  151. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  152. package/lib/typescript/components/AskBuoyIcon.d.ts +6 -0
  153. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  154. package/lib/typescript/components/AskBuoyModal.d.ts +13 -0
  155. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  156. package/lib/typescript/components/ChangesBar.d.ts +9 -0
  157. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  158. package/lib/typescript/components/Composer.d.ts +9 -0
  159. package/lib/typescript/components/Composer.d.ts.map +1 -0
  160. package/lib/typescript/components/EmptyState.d.ts +6 -0
  161. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  162. package/lib/typescript/components/Markdown.d.ts +23 -0
  163. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  164. package/lib/typescript/components/MessageList.d.ts +18 -0
  165. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  166. package/lib/typescript/components/TypingDots.d.ts +2 -0
  167. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  168. package/lib/typescript/index.d.ts +28 -0
  169. package/lib/typescript/index.d.ts.map +1 -0
  170. package/lib/typescript/preset.d.ts +61 -0
  171. package/lib/typescript/preset.d.ts.map +1 -0
  172. package/lib/typescript/store/askBuoyStore.d.ts +124 -0
  173. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  174. package/lib/typescript/store/useAskBuoy.d.ts +22 -0
  175. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  176. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +73 -0
  177. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  178. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts +2 -0
  179. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  180. package/lib/typescript/sync/wire.d.ts +17 -0
  181. package/lib/typescript/sync/wire.d.ts.map +1 -0
  182. package/lib/typescript/types.d.ts +119 -0
  183. package/lib/typescript/types.d.ts.map +1 -0
  184. 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":[]}