@buoy-gg/ask-buoy 7.0.38 → 7.0.39

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 (306) hide show
  1. package/lib/commonjs/blocks/AskBlocks.js +338 -1
  2. package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
  3. package/lib/commonjs/blocks/BlockRenderer.js +262 -1
  4. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
  5. package/lib/commonjs/blocks/ChromePrototypes.js +514 -1
  6. package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
  7. package/lib/commonjs/blocks/DataBlocks.js +781 -1
  8. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  9. package/lib/commonjs/blocks/ExtraBlocks.js +1860 -1
  10. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  11. package/lib/commonjs/blocks/MediaBlocks.js +156 -1
  12. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
  13. package/lib/commonjs/blocks/ReceiptBlocks.js +586 -1
  14. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
  15. package/lib/commonjs/blocks/blockText.js +60 -1
  16. package/lib/commonjs/blocks/blockText.js.map +1 -0
  17. package/lib/commonjs/blocks/blockText.test.js +53 -1
  18. package/lib/commonjs/blocks/blockText.test.js.map +1 -0
  19. package/lib/commonjs/blocks/context.js +42 -1
  20. package/lib/commonjs/blocks/context.js.map +1 -0
  21. package/lib/commonjs/blocks/icons.js +96 -1
  22. package/lib/commonjs/blocks/icons.js.map +1 -0
  23. package/lib/commonjs/blocks/index.js +95 -1
  24. package/lib/commonjs/blocks/index.js.map +1 -0
  25. package/lib/commonjs/blocks/listRow.test.js +55 -1
  26. package/lib/commonjs/blocks/listRow.test.js.map +1 -0
  27. package/lib/commonjs/blocks/pageState.js +34 -1
  28. package/lib/commonjs/blocks/pageState.js.map +1 -0
  29. package/lib/commonjs/blocks/pageState.test.js +57 -1
  30. package/lib/commonjs/blocks/pageState.test.js.map +1 -0
  31. package/lib/commonjs/blocks/primitives.js +457 -1
  32. package/lib/commonjs/blocks/primitives.js.map +1 -0
  33. package/lib/commonjs/blocks/primitivesIndex.js +62 -1
  34. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  35. package/lib/commonjs/components/ApprovalCard.js +297 -1
  36. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  37. package/lib/commonjs/components/AskBuoyHeader.js +196 -1
  38. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  39. package/lib/commonjs/components/AskBuoyIcon.js +19 -1
  40. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  41. package/lib/commonjs/components/AskBuoyModal.js +479 -1
  42. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  43. package/lib/commonjs/components/AskBuoySettings.js +181 -1
  44. package/lib/commonjs/components/AskBuoySettings.js.map +1 -0
  45. package/lib/commonjs/components/ChangesBar.js +211 -1
  46. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  47. package/lib/commonjs/components/Composer.js +255 -1
  48. package/lib/commonjs/components/Composer.js.map +1 -0
  49. package/lib/commonjs/components/EmptyState.js +161 -1
  50. package/lib/commonjs/components/EmptyState.js.map +1 -0
  51. package/lib/commonjs/components/KeyboardPad.js +80 -1
  52. package/lib/commonjs/components/KeyboardPad.js.map +1 -0
  53. package/lib/commonjs/components/Markdown.js +310 -1
  54. package/lib/commonjs/components/Markdown.js.map +1 -0
  55. package/lib/commonjs/components/MessageList.js +970 -1
  56. package/lib/commonjs/components/MessageList.js.map +1 -0
  57. package/lib/commonjs/components/QueuedMessages.js +145 -1
  58. package/lib/commonjs/components/QueuedMessages.js.map +1 -0
  59. package/lib/commonjs/components/ThinkingStrip.js +223 -1
  60. package/lib/commonjs/components/ThinkingStrip.js.map +1 -0
  61. package/lib/commonjs/components/TypingDots.js +63 -1
  62. package/lib/commonjs/components/TypingDots.js.map +1 -0
  63. package/lib/commonjs/components/markdownParse.js +131 -1
  64. package/lib/commonjs/components/markdownParse.js.map +1 -0
  65. package/lib/commonjs/components/markdownParse.test.js +99 -1
  66. package/lib/commonjs/components/markdownParse.test.js.map +1 -0
  67. package/lib/commonjs/components/useCopyAction.js +50 -1
  68. package/lib/commonjs/components/useCopyAction.js.map +1 -0
  69. package/lib/commonjs/index.js +252 -1
  70. package/lib/commonjs/index.js.map +1 -0
  71. package/lib/commonjs/preset.js +91 -1
  72. package/lib/commonjs/preset.js.map +1 -0
  73. package/lib/commonjs/store/activityGroups.js +110 -1
  74. package/lib/commonjs/store/activityGroups.js.map +1 -0
  75. package/lib/commonjs/store/activityGroups.test.js +78 -1
  76. package/lib/commonjs/store/activityGroups.test.js.map +1 -0
  77. package/lib/commonjs/store/askBuoySettings.js +72 -1
  78. package/lib/commonjs/store/askBuoySettings.js.map +1 -0
  79. package/lib/commonjs/store/askBuoyStore.js +589 -1
  80. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  81. package/lib/commonjs/store/blockPlacement.js +64 -1
  82. package/lib/commonjs/store/blockPlacement.js.map +1 -0
  83. package/lib/commonjs/store/blockPlacement.test.js +123 -1
  84. package/lib/commonjs/store/blockPlacement.test.js.map +1 -0
  85. package/lib/commonjs/store/queue.test.js +150 -1
  86. package/lib/commonjs/store/queue.test.js.map +1 -0
  87. package/lib/commonjs/store/resetConversation.js +77 -1
  88. package/lib/commonjs/store/resetConversation.js.map +1 -0
  89. package/lib/commonjs/store/restorePending.test.js +63 -1
  90. package/lib/commonjs/store/restorePending.test.js.map +1 -0
  91. package/lib/commonjs/store/restoredIds.test.js +47 -1
  92. package/lib/commonjs/store/restoredIds.test.js.map +1 -0
  93. package/lib/commonjs/store/suggestions.js +54 -1
  94. package/lib/commonjs/store/suggestions.js.map +1 -0
  95. package/lib/commonjs/store/suggestions.test.js +58 -1
  96. package/lib/commonjs/store/suggestions.test.js.map +1 -0
  97. package/lib/commonjs/store/systemLine.test.js +77 -1
  98. package/lib/commonjs/store/systemLine.test.js.map +1 -0
  99. package/lib/commonjs/store/ticketPrompt.js +17 -1
  100. package/lib/commonjs/store/ticketPrompt.js.map +1 -0
  101. package/lib/commonjs/store/traceText.js +81 -1
  102. package/lib/commonjs/store/traceText.js.map +1 -0
  103. package/lib/commonjs/store/traceText.test.js +112 -1
  104. package/lib/commonjs/store/traceText.test.js.map +1 -0
  105. package/lib/commonjs/store/transcriptPersistence.js +297 -1
  106. package/lib/commonjs/store/transcriptPersistence.js.map +1 -0
  107. package/lib/commonjs/store/transcriptPersistence.test.js +333 -1
  108. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -0
  109. package/lib/commonjs/store/turnRendering.test.js +151 -1
  110. package/lib/commonjs/store/turnRendering.test.js.map +1 -0
  111. package/lib/commonjs/store/useAskBuoy.js +651 -1
  112. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  113. package/lib/commonjs/store/useAskBuoySettings.js +14 -1
  114. package/lib/commonjs/store/useAskBuoySettings.js.map +1 -0
  115. package/lib/commonjs/sync/askBuoySyncAdapter.js +153 -1
  116. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  117. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +141 -1
  118. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  119. package/lib/commonjs/sync/wire.js +58 -1
  120. package/lib/commonjs/sync/wire.js.map +1 -0
  121. package/lib/commonjs/types.js +6 -1
  122. package/lib/commonjs/types.js.map +1 -0
  123. package/lib/module/blocks/AskBlocks.js +331 -1
  124. package/lib/module/blocks/AskBlocks.js.map +1 -0
  125. package/lib/module/blocks/BlockRenderer.js +257 -1
  126. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  127. package/lib/module/blocks/ChromePrototypes.js +503 -1
  128. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  129. package/lib/module/blocks/DataBlocks.js +767 -1
  130. package/lib/module/blocks/DataBlocks.js.map +1 -0
  131. package/lib/module/blocks/ExtraBlocks.js +1833 -1
  132. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  133. package/lib/module/blocks/MediaBlocks.js +151 -1
  134. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  135. package/lib/module/blocks/ReceiptBlocks.js +574 -1
  136. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  137. package/lib/module/blocks/blockText.js +55 -1
  138. package/lib/module/blocks/blockText.js.map +1 -0
  139. package/lib/module/blocks/blockText.test.js +53 -1
  140. package/lib/module/blocks/blockText.test.js.map +1 -0
  141. package/lib/module/blocks/context.js +35 -1
  142. package/lib/module/blocks/context.js.map +1 -0
  143. package/lib/module/blocks/icons.js +91 -1
  144. package/lib/module/blocks/icons.js.map +1 -0
  145. package/lib/module/blocks/index.js +8 -1
  146. package/lib/module/blocks/index.js.map +1 -0
  147. package/lib/module/blocks/listRow.test.js +56 -1
  148. package/lib/module/blocks/listRow.test.js.map +1 -0
  149. package/lib/module/blocks/pageState.js +30 -1
  150. package/lib/module/blocks/pageState.js.map +1 -0
  151. package/lib/module/blocks/pageState.test.js +56 -1
  152. package/lib/module/blocks/pageState.test.js.map +1 -0
  153. package/lib/module/blocks/primitives.js +445 -1
  154. package/lib/module/blocks/primitives.js.map +1 -0
  155. package/lib/module/blocks/primitivesIndex.js +5 -1
  156. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  157. package/lib/module/components/ApprovalCard.js +292 -1
  158. package/lib/module/components/ApprovalCard.js.map +1 -0
  159. package/lib/module/components/AskBuoyHeader.js +193 -1
  160. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  161. package/lib/module/components/AskBuoyIcon.js +8 -1
  162. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  163. package/lib/module/components/AskBuoyModal.js +474 -1
  164. package/lib/module/components/AskBuoyModal.js.map +1 -0
  165. package/lib/module/components/AskBuoySettings.js +176 -1
  166. package/lib/module/components/AskBuoySettings.js.map +1 -0
  167. package/lib/module/components/ChangesBar.js +206 -1
  168. package/lib/module/components/ChangesBar.js.map +1 -0
  169. package/lib/module/components/Composer.js +250 -1
  170. package/lib/module/components/Composer.js.map +1 -0
  171. package/lib/module/components/EmptyState.js +156 -1
  172. package/lib/module/components/EmptyState.js.map +1 -0
  173. package/lib/module/components/KeyboardPad.js +75 -1
  174. package/lib/module/components/KeyboardPad.js.map +1 -0
  175. package/lib/module/components/Markdown.js +305 -1
  176. package/lib/module/components/Markdown.js.map +1 -0
  177. package/lib/module/components/MessageList.js +964 -1
  178. package/lib/module/components/MessageList.js.map +1 -0
  179. package/lib/module/components/QueuedMessages.js +140 -1
  180. package/lib/module/components/QueuedMessages.js.map +1 -0
  181. package/lib/module/components/ThinkingStrip.js +218 -1
  182. package/lib/module/components/ThinkingStrip.js.map +1 -0
  183. package/lib/module/components/TypingDots.js +58 -1
  184. package/lib/module/components/TypingDots.js.map +1 -0
  185. package/lib/module/components/markdownParse.js +125 -1
  186. package/lib/module/components/markdownParse.js.map +1 -0
  187. package/lib/module/components/markdownParse.test.js +98 -1
  188. package/lib/module/components/markdownParse.test.js.map +1 -0
  189. package/lib/module/components/useCopyAction.js +46 -1
  190. package/lib/module/components/useCopyAction.js.map +1 -0
  191. package/lib/module/index.js +34 -1
  192. package/lib/module/index.js.map +1 -0
  193. package/lib/module/preset.js +74 -1
  194. package/lib/module/preset.js.map +1 -0
  195. package/lib/module/store/activityGroups.js +103 -1
  196. package/lib/module/store/activityGroups.js.map +1 -0
  197. package/lib/module/store/activityGroups.test.js +77 -1
  198. package/lib/module/store/activityGroups.test.js.map +1 -0
  199. package/lib/module/store/askBuoySettings.js +67 -1
  200. package/lib/module/store/askBuoySettings.js.map +1 -0
  201. package/lib/module/store/askBuoyStore.js +583 -1
  202. package/lib/module/store/askBuoyStore.js.map +1 -0
  203. package/lib/module/store/blockPlacement.js +59 -1
  204. package/lib/module/store/blockPlacement.js.map +1 -0
  205. package/lib/module/store/blockPlacement.test.js +122 -1
  206. package/lib/module/store/blockPlacement.test.js.map +1 -0
  207. package/lib/module/store/queue.test.js +149 -1
  208. package/lib/module/store/queue.test.js.map +1 -0
  209. package/lib/module/store/resetConversation.js +72 -1
  210. package/lib/module/store/resetConversation.js.map +1 -0
  211. package/lib/module/store/restorePending.test.js +62 -1
  212. package/lib/module/store/restorePending.test.js.map +1 -0
  213. package/lib/module/store/restoredIds.test.js +46 -1
  214. package/lib/module/store/restoredIds.test.js.map +1 -0
  215. package/lib/module/store/suggestions.js +49 -1
  216. package/lib/module/store/suggestions.js.map +1 -0
  217. package/lib/module/store/suggestions.test.js +57 -1
  218. package/lib/module/store/suggestions.test.js.map +1 -0
  219. package/lib/module/store/systemLine.test.js +76 -1
  220. package/lib/module/store/systemLine.test.js.map +1 -0
  221. package/lib/module/store/ticketPrompt.js +13 -1
  222. package/lib/module/store/ticketPrompt.js.map +1 -0
  223. package/lib/module/store/traceText.js +75 -1
  224. package/lib/module/store/traceText.js.map +1 -0
  225. package/lib/module/store/traceText.test.js +111 -1
  226. package/lib/module/store/traceText.test.js.map +1 -0
  227. package/lib/module/store/transcriptPersistence.js +287 -1
  228. package/lib/module/store/transcriptPersistence.js.map +1 -0
  229. package/lib/module/store/transcriptPersistence.test.js +332 -1
  230. package/lib/module/store/transcriptPersistence.test.js.map +1 -0
  231. package/lib/module/store/turnRendering.test.js +150 -1
  232. package/lib/module/store/turnRendering.test.js.map +1 -0
  233. package/lib/module/store/useAskBuoy.js +646 -1
  234. package/lib/module/store/useAskBuoy.js.map +1 -0
  235. package/lib/module/store/useAskBuoySettings.js +9 -1
  236. package/lib/module/store/useAskBuoySettings.js.map +1 -0
  237. package/lib/module/sync/askBuoySyncAdapter.js +148 -1
  238. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  239. package/lib/module/sync/askBuoySyncAdapter.test.js +140 -1
  240. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  241. package/lib/module/sync/wire.js +47 -1
  242. package/lib/module/sync/wire.js.map +1 -0
  243. package/lib/module/types.js +4 -1
  244. package/lib/module/types.js.map +1 -0
  245. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  246. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  247. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  248. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  249. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  250. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  251. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  252. package/lib/typescript/blocks/blockText.d.ts.map +1 -0
  253. package/lib/typescript/blocks/blockText.test.d.ts.map +1 -0
  254. package/lib/typescript/blocks/context.d.ts.map +1 -0
  255. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  256. package/lib/typescript/blocks/index.d.ts.map +1 -0
  257. package/lib/typescript/blocks/listRow.test.d.ts.map +1 -0
  258. package/lib/typescript/blocks/pageState.d.ts.map +1 -0
  259. package/lib/typescript/blocks/pageState.test.d.ts.map +1 -0
  260. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  261. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  262. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  263. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  264. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  265. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  266. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -0
  267. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  268. package/lib/typescript/components/Composer.d.ts.map +1 -0
  269. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  270. package/lib/typescript/components/KeyboardPad.d.ts.map +1 -0
  271. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  272. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  273. package/lib/typescript/components/QueuedMessages.d.ts.map +1 -0
  274. package/lib/typescript/components/ThinkingStrip.d.ts.map +1 -0
  275. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  276. package/lib/typescript/components/markdownParse.d.ts.map +1 -0
  277. package/lib/typescript/components/markdownParse.test.d.ts.map +1 -0
  278. package/lib/typescript/components/useCopyAction.d.ts.map +1 -0
  279. package/lib/typescript/index.d.ts.map +1 -0
  280. package/lib/typescript/preset.d.ts.map +1 -0
  281. package/lib/typescript/store/activityGroups.d.ts.map +1 -0
  282. package/lib/typescript/store/activityGroups.test.d.ts.map +1 -0
  283. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -0
  284. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  285. package/lib/typescript/store/blockPlacement.d.ts.map +1 -0
  286. package/lib/typescript/store/blockPlacement.test.d.ts.map +1 -0
  287. package/lib/typescript/store/queue.test.d.ts.map +1 -0
  288. package/lib/typescript/store/resetConversation.d.ts.map +1 -0
  289. package/lib/typescript/store/restorePending.test.d.ts.map +1 -0
  290. package/lib/typescript/store/restoredIds.test.d.ts.map +1 -0
  291. package/lib/typescript/store/suggestions.d.ts.map +1 -0
  292. package/lib/typescript/store/suggestions.test.d.ts.map +1 -0
  293. package/lib/typescript/store/systemLine.test.d.ts.map +1 -0
  294. package/lib/typescript/store/ticketPrompt.d.ts.map +1 -0
  295. package/lib/typescript/store/traceText.d.ts.map +1 -0
  296. package/lib/typescript/store/traceText.test.d.ts.map +1 -0
  297. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -0
  298. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +1 -0
  299. package/lib/typescript/store/turnRendering.test.d.ts.map +1 -0
  300. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  301. package/lib/typescript/store/useAskBuoySettings.d.ts.map +1 -0
  302. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  303. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  304. package/lib/typescript/sync/wire.d.ts.map +1 -0
  305. package/lib/typescript/types.d.ts.map +1 -0
  306. package/package.json +8 -8
@@ -1 +1,292 @@
1
- "use strict";import{useState}from"react";import{Pressable,ScrollView,StyleSheet,Text,TextInput,View}from"react-native";import{AlertTriangle,ChevronDown,night}from"@buoy-gg/shared-ui";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function ApprovalCard({pending:e,onAnswer:t}){const[o,r]=useState("");return _jsxs(View,{style:styles.card,testID:"buoy-ask-buoy-approval",children:[_jsxs(View,{style:styles.titleRow,children:[_jsx(AlertTriangle,{size:14,color:night.color.warning}),_jsx(Text,{style:styles.title,children:"Allow this change?"})]}),e.restored?_jsx(Text,{style:styles.restored,testID:"buoy-ask-buoy-approval-restored",children:"Asked before the app restarted — check it still applies."}):null,_jsx(Text,{style:styles.label,children:e.label}),_jsx(Text,{style:styles.reason,children:e.reason}),e.description?_jsx(ApprovalDetails,{text:e.description}):null,_jsx(TextInput,{testID:"buoy-ask-buoy-approval-note",value:o,onChangeText:r,placeholder:"Add a note for the agent (optional)",placeholderTextColor:night.color.textTertiary,style:styles.note,returnKeyType:"done",blurOnSubmit:!0}),_jsxs(View,{style:styles.actions,children:[_jsx(Pressable,{testID:"buoy-ask-buoy-approve",accessibilityRole:"button",onPress:()=>t({approved:!0,reason:o}),style:({pressed:e})=>[styles.button,styles.approve,e&&styles.pressed],children:_jsx(Text,{style:styles.approveText,children:"Allow"})}),e.restored?null:_jsx(Pressable,{testID:"buoy-ask-buoy-approve-trust",accessibilityRole:"button",onPress:()=>t({approved:!0,reason:o,trust:!0}),style:({pressed:e})=>[styles.button,styles.trust,e&&styles.pressed],children:_jsx(Text,{style:styles.trustText,children:"Allow for this chat"})}),_jsx(Pressable,{testID:"buoy-ask-buoy-reject",accessibilityRole:"button",onPress:()=>t({approved:!1,reason:o}),style:({pressed:e})=>[styles.button,styles.reject,e&&styles.pressed],children:_jsx(Text,{style:styles.rejectText,children:"Not now"})})]})]})}function ApprovalDetails({text:e}){const[t,o]=useState(!1);return _jsxs(View,{children:[_jsxs(Pressable,{testID:"buoy-ask-buoy-approval-details",accessibilityRole:"button",accessibilityState:{expanded:t},onPress:()=>o(e=>!e),style:({pressed:e})=>[styles.disclosure,e&&styles.pressed],hitSlop:6,children:[_jsx(View,{style:t?styles.chevronOpen:styles.chevronClosed,children:_jsx(ChevronDown,{size:12,color:night.color.textTertiary})}),_jsx(Text,{style:styles.disclosureText,children:t?"Hide details":"Details"})]}),t?_jsx(ScrollView,{style:styles.detail,contentContainerStyle:styles.detailContent,nestedScrollEnabled:!0,children:_jsx(Text,{style:styles.description,children:e})}):null]})}const styles=StyleSheet.create({card:{marginHorizontal:night.gutter,marginBottom:10,padding:night.cardPad,borderRadius:night.radius.card,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.accentBorderStrong,backgroundColor:night.color.surface,gap:6},titleRow:{flexDirection:"row",alignItems:"center",gap:6},title:{color:night.color.text,fontSize:night.font.caption,fontWeight:"600"},label:{color:night.color.text,fontSize:night.font.row,fontWeight:"600",lineHeight:20},description:{color:night.color.textSecondary,fontSize:night.font.caption,lineHeight:18},reason:{color:night.color.warning,fontSize:night.font.caption,lineHeight:18},restored:{color:night.color.info,backgroundColor:night.color.infoSoft,fontSize:night.font.micro,lineHeight:16,paddingHorizontal:8,paddingVertical:5,borderRadius:8},disclosure:{flexDirection:"row",alignItems:"center",gap:4,paddingVertical:4},disclosureText:{color:night.color.textTertiary,fontSize:night.font.micro,fontWeight:"600"},chevronOpen:{transform:[{rotate:"0deg"}]},chevronClosed:{transform:[{rotate:"-90deg"}]},detail:{maxHeight:150,marginTop:2},detailContent:{paddingBottom:2},note:{color:night.color.text,fontSize:night.font.caption,paddingHorizontal:10,paddingVertical:7,borderRadius:night.radius.row,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.border,backgroundColor:night.color.button,marginTop:2},actions:{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:6},button:{paddingHorizontal:16,paddingVertical:9,borderRadius:night.radius.row},approve:{backgroundColor:night.color.accent},approveText:{color:night.color.onAccent,fontWeight:"600",fontSize:night.font.caption},trust:{backgroundColor:night.color.button,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.accentBorderStrong},trustText:{color:night.color.accent,fontWeight:"600",fontSize:night.font.caption},reject:{backgroundColor:night.color.button},rejectText:{color:night.color.text,fontSize:night.font.caption},pressed:{opacity:.7}});
1
+ "use strict";
2
+
3
+ /**
4
+ * The approval prompt, shown only when the policy asks for a tap.
5
+ *
6
+ * It renders the EFFECT, not the payload. That is the whole design constraint:
7
+ * every other agent product assumes a developer is reading the proposed
8
+ * command before approving it, and the people this tool is for cannot evaluate
9
+ * `redux_dispatch({type:'SET_ENTITLEMENTS', payload:{…}})`. An approval prompt
10
+ * nobody can read is not oversight — it is a rubber stamp that looks like
11
+ * oversight, which is worse than having no prompt at all.
12
+ *
13
+ * WHICH IS WHY THE DETAIL IS COLLAPSED. The card sits between the message list
14
+ * and the composer, so its height is taken out of the transcript rather than
15
+ * scrolled: a card taller than the sheet pushes its own buttons off the bottom
16
+ * with nothing to scroll them back. That is what happened — `description` is
17
+ * the catalog summary, written for the MODEL, and zustand's runs to a
18
+ * twenty-line paragraph about merge semantics. A prompt you physically cannot
19
+ * answer is the worst failure mode this component has.
20
+ *
21
+ * So the visible card is fixed-height by construction — the title, the effect
22
+ * in one line, the consequence in one line, a disclosure, and the buttons —
23
+ * and the long text lives behind the disclosure inside a capped scroll box, so
24
+ * expanding it can never push the buttons away again either.
25
+ */
26
+ import { useState } from "react";
27
+ import { Pressable, ScrollView, StyleSheet, Text, TextInput, View } from "react-native";
28
+ import { AlertTriangle, ChevronDown, night } from "@buoy-gg/shared-ui";
29
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
+ export function ApprovalCard({
31
+ pending,
32
+ onAnswer
33
+ }) {
34
+ const [note, setNote] = useState("");
35
+ return /*#__PURE__*/_jsxs(View, {
36
+ style: styles.card,
37
+ testID: "buoy-ask-buoy-approval",
38
+ children: [/*#__PURE__*/_jsxs(View, {
39
+ style: styles.titleRow,
40
+ children: [/*#__PURE__*/_jsx(AlertTriangle, {
41
+ size: 14,
42
+ color: night.color.warning
43
+ }), /*#__PURE__*/_jsx(Text, {
44
+ style: styles.title,
45
+ children: "Allow this change?"
46
+ })]
47
+ }), pending.restored ? /*#__PURE__*/_jsx(Text, {
48
+ style: styles.restored,
49
+ testID: "buoy-ask-buoy-approval-restored",
50
+ children: "Asked before the app restarted \u2014 check it still applies."
51
+ }) : null, /*#__PURE__*/_jsx(Text, {
52
+ style: styles.label,
53
+ children: pending.label
54
+ }), /*#__PURE__*/_jsx(Text, {
55
+ style: styles.reason,
56
+ children: pending.reason
57
+ }), pending.description ? /*#__PURE__*/_jsx(ApprovalDetails, {
58
+ text: pending.description
59
+ }) : null, /*#__PURE__*/_jsx(TextInput, {
60
+ testID: "buoy-ask-buoy-approval-note",
61
+ value: note,
62
+ onChangeText: setNote,
63
+ placeholder: "Add a note for the agent (optional)",
64
+ placeholderTextColor: night.color.textTertiary,
65
+ style: styles.note,
66
+ returnKeyType: "done",
67
+ blurOnSubmit: true
68
+ }), /*#__PURE__*/_jsxs(View, {
69
+ style: styles.actions,
70
+ children: [/*#__PURE__*/_jsx(Pressable, {
71
+ testID: "buoy-ask-buoy-approve",
72
+ accessibilityRole: "button",
73
+ onPress: () => onAnswer({
74
+ approved: true,
75
+ reason: note
76
+ }),
77
+ style: ({
78
+ pressed
79
+ }) => [styles.button, styles.approve, pressed && styles.pressed],
80
+ children: /*#__PURE__*/_jsx(Text, {
81
+ style: styles.approveText,
82
+ children: "Allow"
83
+ })
84
+ }), pending.restored ? null : /*#__PURE__*/_jsx(Pressable, {
85
+ testID: "buoy-ask-buoy-approve-trust",
86
+ accessibilityRole: "button",
87
+ onPress: () => onAnswer({
88
+ approved: true,
89
+ reason: note,
90
+ trust: true
91
+ }),
92
+ style: ({
93
+ pressed
94
+ }) => [styles.button, styles.trust, pressed && styles.pressed],
95
+ children: /*#__PURE__*/_jsx(Text, {
96
+ style: styles.trustText,
97
+ children: "Allow for this chat"
98
+ })
99
+ }), /*#__PURE__*/_jsx(Pressable, {
100
+ testID: "buoy-ask-buoy-reject",
101
+ accessibilityRole: "button",
102
+ onPress: () => onAnswer({
103
+ approved: false,
104
+ reason: note
105
+ }),
106
+ style: ({
107
+ pressed
108
+ }) => [styles.button, styles.reject, pressed && styles.pressed],
109
+ children: /*#__PURE__*/_jsx(Text, {
110
+ style: styles.rejectText,
111
+ children: "Not now"
112
+ })
113
+ })]
114
+ })]
115
+ });
116
+ }
117
+
118
+ /**
119
+ * The catalog's own description, behind a disclosure, closed by default.
120
+ *
121
+ * Owns its open state rather than taking it as a prop: nothing above the card
122
+ * needs to know, and answering the prompt unmounts the whole thing anyway.
123
+ * One ChevronDown rotated in place, not a swap between two icon components —
124
+ * the tree keeps its shape whichever way it is pointing.
125
+ */
126
+ function ApprovalDetails({
127
+ text
128
+ }) {
129
+ const [open, setOpen] = useState(false);
130
+ return /*#__PURE__*/_jsxs(View, {
131
+ children: [/*#__PURE__*/_jsxs(Pressable, {
132
+ testID: "buoy-ask-buoy-approval-details",
133
+ accessibilityRole: "button",
134
+ accessibilityState: {
135
+ expanded: open
136
+ },
137
+ onPress: () => setOpen(prev => !prev),
138
+ style: ({
139
+ pressed
140
+ }) => [styles.disclosure, pressed && styles.pressed],
141
+ hitSlop: 6,
142
+ children: [/*#__PURE__*/_jsx(View, {
143
+ style: open ? styles.chevronOpen : styles.chevronClosed,
144
+ children: /*#__PURE__*/_jsx(ChevronDown, {
145
+ size: 12,
146
+ color: night.color.textTertiary
147
+ })
148
+ }), /*#__PURE__*/_jsx(Text, {
149
+ style: styles.disclosureText,
150
+ children: open ? "Hide details" : "Details"
151
+ })]
152
+ }), open ?
153
+ /*#__PURE__*/
154
+ // Capped and scrollable: the text behind this is unbounded, and the
155
+ // buttons below must stay on screen whatever it says.
156
+ _jsx(ScrollView, {
157
+ style: styles.detail,
158
+ contentContainerStyle: styles.detailContent,
159
+ nestedScrollEnabled: true,
160
+ children: /*#__PURE__*/_jsx(Text, {
161
+ style: styles.description,
162
+ children: text
163
+ })
164
+ }) : null]
165
+ });
166
+ }
167
+ const styles = StyleSheet.create({
168
+ card: {
169
+ marginHorizontal: night.gutter,
170
+ marginBottom: 10,
171
+ padding: night.cardPad,
172
+ borderRadius: night.radius.card,
173
+ borderWidth: StyleSheet.hairlineWidth,
174
+ borderColor: night.color.accentBorderStrong,
175
+ backgroundColor: night.color.surface,
176
+ gap: 6
177
+ },
178
+ titleRow: {
179
+ flexDirection: "row",
180
+ alignItems: "center",
181
+ gap: 6
182
+ },
183
+ title: {
184
+ color: night.color.text,
185
+ fontSize: night.font.caption,
186
+ fontWeight: "600"
187
+ },
188
+ label: {
189
+ color: night.color.text,
190
+ fontSize: night.font.row,
191
+ fontWeight: "600",
192
+ lineHeight: 20
193
+ },
194
+ description: {
195
+ color: night.color.textSecondary,
196
+ fontSize: night.font.caption,
197
+ lineHeight: 18
198
+ },
199
+ reason: {
200
+ color: night.color.warning,
201
+ fontSize: night.font.caption,
202
+ lineHeight: 18
203
+ },
204
+ restored: {
205
+ color: night.color.info,
206
+ backgroundColor: night.color.infoSoft,
207
+ fontSize: night.font.micro,
208
+ lineHeight: 16,
209
+ paddingHorizontal: 8,
210
+ paddingVertical: 5,
211
+ borderRadius: 8
212
+ },
213
+ disclosure: {
214
+ flexDirection: "row",
215
+ alignItems: "center",
216
+ gap: 4,
217
+ paddingVertical: 4
218
+ },
219
+ disclosureText: {
220
+ color: night.color.textTertiary,
221
+ fontSize: night.font.micro,
222
+ fontWeight: "600"
223
+ },
224
+ chevronOpen: {
225
+ transform: [{
226
+ rotate: "0deg"
227
+ }]
228
+ },
229
+ chevronClosed: {
230
+ transform: [{
231
+ rotate: "-90deg"
232
+ }]
233
+ },
234
+ detail: {
235
+ maxHeight: 150,
236
+ marginTop: 2
237
+ },
238
+ detailContent: {
239
+ paddingBottom: 2
240
+ },
241
+ note: {
242
+ color: night.color.text,
243
+ fontSize: night.font.caption,
244
+ paddingHorizontal: 10,
245
+ paddingVertical: 7,
246
+ borderRadius: night.radius.row,
247
+ borderWidth: StyleSheet.hairlineWidth,
248
+ borderColor: night.color.border,
249
+ backgroundColor: night.color.button,
250
+ marginTop: 2
251
+ },
252
+ actions: {
253
+ flexDirection: "row",
254
+ flexWrap: "wrap",
255
+ gap: 8,
256
+ marginTop: 6
257
+ },
258
+ button: {
259
+ paddingHorizontal: 16,
260
+ paddingVertical: 9,
261
+ borderRadius: night.radius.row
262
+ },
263
+ approve: {
264
+ backgroundColor: night.color.accent
265
+ },
266
+ approveText: {
267
+ color: night.color.onAccent,
268
+ fontWeight: "600",
269
+ fontSize: night.font.caption
270
+ },
271
+ trust: {
272
+ backgroundColor: night.color.button,
273
+ borderWidth: StyleSheet.hairlineWidth,
274
+ borderColor: night.color.accentBorderStrong
275
+ },
276
+ trustText: {
277
+ color: night.color.accent,
278
+ fontWeight: "600",
279
+ fontSize: night.font.caption
280
+ },
281
+ reject: {
282
+ backgroundColor: night.color.button
283
+ },
284
+ rejectText: {
285
+ color: night.color.text,
286
+ fontSize: night.font.caption
287
+ },
288
+ pressed: {
289
+ opacity: 0.7
290
+ }
291
+ });
292
+ //# sourceMappingURL=ApprovalCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","Pressable","ScrollView","StyleSheet","Text","TextInput","View","AlertTriangle","ChevronDown","night","jsx","_jsx","jsxs","_jsxs","ApprovalCard","pending","onAnswer","note","setNote","style","styles","card","testID","children","titleRow","size","color","warning","title","restored","label","reason","description","ApprovalDetails","text","value","onChangeText","placeholder","placeholderTextColor","textTertiary","returnKeyType","blurOnSubmit","actions","accessibilityRole","onPress","approved","pressed","button","approve","approveText","trust","trustText","reject","rejectText","open","setOpen","accessibilityState","expanded","prev","disclosure","hitSlop","chevronOpen","chevronClosed","disclosureText","detail","contentContainerStyle","detailContent","nestedScrollEnabled","create","marginHorizontal","gutter","marginBottom","padding","cardPad","borderRadius","radius","borderWidth","hairlineWidth","borderColor","accentBorderStrong","backgroundColor","surface","gap","flexDirection","alignItems","fontSize","font","caption","fontWeight","row","lineHeight","textSecondary","info","infoSoft","micro","paddingHorizontal","paddingVertical","transform","rotate","maxHeight","marginTop","paddingBottom","border","flexWrap","accent","onAccent","opacity"],"sourceRoot":"../../../src","sources":["components/ApprovalCard.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1,193 @@
1
- "use strict";import{useEffect,useState}from"react";import{StyleSheet,TouchableOpacity,View}from"react-native";import{Check,Copy,FileText,ModalHeader,night,Otto,Plus,SettingsSolid}from"@buoy-gg/shared-ui";import{useCopyAction}from"./useCopyAction";import{formatElapsed}from"../store/activityGroups";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const HEADER_TICK_MS=200,NO_TRANSCRIPT=()=>"";export function AskBuoyHeader({configured:t,busy:e,failed:o=!1,activeLabel:s,awaitingApproval:i=!1,startedAt:n=null,stopping:a=!1,readOnly:l=!1,toolCount:c,hasMessages:r,onBack:y,onReset:u,getTranscript:d,onOpenSettings:b,onTicket:h}){const{copied:p,copy:g}=useCopyAction(d??NO_TRANSCRIPT),[x,f]=useState(!1);useEffect(()=>{e?s&&f(!0):f(!1)},[e,s]);const S=e&&!i&&null!==n,[j,_]=useState(()=>Date.now());useEffect(()=>{if(!S)return;_(Date.now());const t=setInterval(()=>_(Date.now()),1e3);return()=>clearInterval(t)},[S]);const k=S&&null!==n?formatElapsed(j-n):null,m=t?o?"error":e?s||x?"robot":"thinking":"idle":"confused",C=a?"Stopping":s??"Thinking",T=t?i?"Waiting for you":e?k?`${C} · ${k}`:`${C}…`:l?"Read only"+(c>0?` · ${c} tool${1===c?"":"s"}`:""):c>0?`Ready · ${c} tool${1===c?"":"s"} available`:"Ready":"Not set up in this app";return _jsxs(ModalHeader,{children:[y?_jsx(ModalHeader.Navigation,{onBack:y}):null,_jsx(View,{style:styles.otto,testID:"buoy-ask-buoy-otto",children:_jsx(Otto,{state:m,pixelSize:2,tickMs:200,water:!1})}),_jsx(ModalHeader.Content,{title:"Ask Buoy",subtitle:T,testID:"buoy-ask-buoy-title"}),_jsxs(ModalHeader.Actions,{children:[h?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-ticket",accessibilityRole:"button",accessibilityLabel:"Summarize for a ticket",disabled:!r||e,onPress:h,style:[styles.actionBtn,(!r||e)&&styles.actionBtnDisabled],children:_jsx(FileText,{size:14,color:r&&!e?night.color.textSecondary:night.color.textTertiary})}):null,d?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-copy-chat",accessibilityRole:"button",accessibilityLabel:p?"Conversation copied":"Copy conversation",disabled:!r,onPress:g,style:[styles.actionBtn,!r&&styles.actionBtnDisabled],children:p?_jsx(Check,{size:14,color:night.color.accent}):_jsx(Copy,{size:14,color:r?night.color.textSecondary:night.color.textTertiary})}):null,b?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-settings",accessibilityRole:"button",accessibilityLabel:"Settings",onPress:b,style:styles.actionBtn,children:_jsx(SettingsSolid,{size:14,color:night.color.textSecondary})}):null,_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-reset",accessibilityRole:"button",accessibilityLabel:"New conversation",disabled:!r,onPress:u,style:[styles.actionBtn,!r&&styles.actionBtnDisabled],children:_jsx(Plus,{size:14,color:r?night.color.textSecondary:night.color.textTertiary})})]})]})}const styles=StyleSheet.create({otto:{marginRight:8,justifyContent:"center"},actionBtn:{width:32,height:32,borderRadius:8,backgroundColor:night.color.buttonSurface,borderWidth:1,borderColor:night.color.border,alignItems:"center",justifyContent:"center"},actionBtnDisabled:{opacity:.55}});
1
+ "use strict";
2
+
3
+ /**
4
+ * The sheet header.
5
+ *
6
+ * Built on the shared `ModalHeader` so it matches Console, Network and Events
7
+ * 1:1 — the stock JsModal header was designed for a single centred title and
8
+ * paints its "Double tap: Toggle • Triple tap: Close" hint through the middle
9
+ * of it, which is how "Ask Buoy" ended up overprinted by grey italics.
10
+ *
11
+ * The subtitle is the one piece of live status the sheet has: what the agent
12
+ * is doing right now, in words a tester can act on. "Thinking…" while a
13
+ * response is streaming with no tool in flight, the current tool's title
14
+ * while one runs, and the reachable tool count at rest so a "why can't it
15
+ * see my network calls" question has an answer in the header.
16
+ *
17
+ * "New conversation" moved up here from a 11pt text link under the composer.
18
+ * A reset that lives under the keyboard is a reset nobody finds. Copy sits
19
+ * beside it for the same reason: the transcript actions under the newest
20
+ * answer are only reachable once you have scrolled back down to it.
21
+ */
22
+ import { useEffect, useState } from "react";
23
+ import { StyleSheet, TouchableOpacity, View } from "react-native";
24
+ import { Check, Copy, FileText, ModalHeader, night, Otto, Plus, SettingsSolid } from "@buoy-gg/shared-ui";
25
+ import { useCopyAction } from "./useCopyAction";
26
+ import { formatElapsed } from "../store/activityGroups";
27
+
28
+ /**
29
+ * Slower than the sprite's default 140ms.
30
+ *
31
+ * This mascot is ambient status a user stares at for the length of a turn,
32
+ * not a moment of delight they glance at once — at the stock tick it read as
33
+ * fidgeting in the corner of the eye while you were trying to read the
34
+ * answer next to it. Every other placement keeps the default.
35
+ */
36
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
37
+ const HEADER_TICK_MS = 200;
38
+
39
+ /** No conversation to copy — the button is left out rather than left dead. */
40
+ const NO_TRANSCRIPT = () => "";
41
+ export function AskBuoyHeader({
42
+ configured,
43
+ busy,
44
+ failed = false,
45
+ activeLabel,
46
+ awaitingApproval = false,
47
+ startedAt = null,
48
+ stopping = false,
49
+ readOnly = false,
50
+ toolCount,
51
+ hasMessages,
52
+ onBack,
53
+ onReset,
54
+ getTranscript,
55
+ onOpenSettings,
56
+ onTicket
57
+ }) {
58
+ const {
59
+ copied,
60
+ copy
61
+ } = useCopyAction(getTranscript ?? NO_TRANSCRIPT);
62
+
63
+ /**
64
+ * ONE mascot state per turn, held to the end of it.
65
+ *
66
+ * `activeLabel` drops to null in the gap between two tool calls, so deriving
67
+ * the state from it directly flipped robot → thinking → robot on every
68
+ * boundary. A turn that runs four tools swapped the sprite eight times in
69
+ * about three seconds — a strobe that reads as a glitch, not as progress.
70
+ * So the robot latches: once this turn has driven a tool it stays `robot`
71
+ * until the turn ends, which is also the honest summary of that turn.
72
+ *
73
+ * The SUBTITLE still tracks each call, because updating a line of text is
74
+ * informative where restarting an animation is just noise.
75
+ */
76
+ const [droveTool, setDroveTool] = useState(false);
77
+ useEffect(() => {
78
+ if (!busy) setDroveTool(false);else if (activeLabel) setDroveTool(true);
79
+ }, [busy, activeLabel]);
80
+
81
+ /**
82
+ * The elapsed clock. Ticks only while a turn is running and not parked on
83
+ * the user (nothing is elapsing while an approval card waits for a tap).
84
+ */
85
+ const ticking = busy && !awaitingApproval && startedAt !== null;
86
+ const [now, setNow] = useState(() => Date.now());
87
+ useEffect(() => {
88
+ if (!ticking) return;
89
+ setNow(Date.now());
90
+ const timer = setInterval(() => setNow(Date.now()), 1000);
91
+ return () => clearInterval(timer);
92
+ }, [ticking]);
93
+ const elapsed = ticking && startedAt !== null ? formatElapsed(now - startedAt) : null;
94
+
95
+ /**
96
+ * Otto mirrors the subtitle, never contradicts it. This is the one place in
97
+ * the product where a mascot earns continuous presence: the user is waiting
98
+ * on a machine and the header is the only thing reporting on it.
99
+ *
100
+ * `robot` while a tool runs is literal — the agent IS driving the tools.
101
+ */
102
+ const otto = !configured ? "confused" : failed ? "error" : busy ? activeLabel || droveTool ? "robot" : "thinking" : "idle";
103
+ const working = stopping ? "Stopping" : activeLabel ?? "Thinking";
104
+ const subtitle = !configured ? "Not set up in this app" : awaitingApproval ? "Waiting for you" : busy ? elapsed ? `${working} · ${elapsed}` : `${working}…` : readOnly ? `Read only${toolCount > 0 ? ` · ${toolCount} tool${toolCount === 1 ? "" : "s"}` : ""}` : toolCount > 0 ? `Ready · ${toolCount} tool${toolCount === 1 ? "" : "s"} available` : "Ready";
105
+ return /*#__PURE__*/_jsxs(ModalHeader, {
106
+ children: [onBack ? /*#__PURE__*/_jsx(ModalHeader.Navigation, {
107
+ onBack: onBack
108
+ }) : null, /*#__PURE__*/_jsx(View, {
109
+ style: styles.otto,
110
+ testID: "buoy-ask-buoy-otto",
111
+ children: /*#__PURE__*/_jsx(Otto, {
112
+ state: otto,
113
+ pixelSize: 2,
114
+ tickMs: HEADER_TICK_MS,
115
+ water: false
116
+ })
117
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
118
+ title: "Ask Buoy",
119
+ subtitle: subtitle,
120
+ testID: "buoy-ask-buoy-title"
121
+ }), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
122
+ children: [onTicket ? /*#__PURE__*/_jsx(TouchableOpacity, {
123
+ testID: "buoy-ask-buoy-ticket",
124
+ accessibilityRole: "button",
125
+ accessibilityLabel: "Summarize for a ticket",
126
+ disabled: !hasMessages || busy,
127
+ onPress: onTicket,
128
+ style: [styles.actionBtn, (!hasMessages || busy) && styles.actionBtnDisabled],
129
+ children: /*#__PURE__*/_jsx(FileText, {
130
+ size: 14,
131
+ color: hasMessages && !busy ? night.color.textSecondary : night.color.textTertiary
132
+ })
133
+ }) : null, getTranscript ? /*#__PURE__*/_jsx(TouchableOpacity, {
134
+ testID: "buoy-ask-buoy-copy-chat",
135
+ accessibilityRole: "button",
136
+ accessibilityLabel: copied ? "Conversation copied" : "Copy conversation",
137
+ disabled: !hasMessages,
138
+ onPress: copy,
139
+ style: [styles.actionBtn, !hasMessages && styles.actionBtnDisabled],
140
+ children: copied ? /*#__PURE__*/_jsx(Check, {
141
+ size: 14,
142
+ color: night.color.accent
143
+ }) : /*#__PURE__*/_jsx(Copy, {
144
+ size: 14,
145
+ color: hasMessages ? night.color.textSecondary : night.color.textTertiary
146
+ })
147
+ }) : null, onOpenSettings ? /*#__PURE__*/_jsx(TouchableOpacity, {
148
+ testID: "buoy-ask-buoy-settings",
149
+ accessibilityRole: "button",
150
+ accessibilityLabel: "Settings",
151
+ onPress: onOpenSettings,
152
+ style: styles.actionBtn,
153
+ children: /*#__PURE__*/_jsx(SettingsSolid, {
154
+ size: 14,
155
+ color: night.color.textSecondary
156
+ })
157
+ }) : null, /*#__PURE__*/_jsx(TouchableOpacity, {
158
+ testID: "buoy-ask-buoy-reset",
159
+ accessibilityRole: "button",
160
+ accessibilityLabel: "New conversation",
161
+ disabled: !hasMessages,
162
+ onPress: onReset,
163
+ style: [styles.actionBtn, !hasMessages && styles.actionBtnDisabled],
164
+ children: /*#__PURE__*/_jsx(Plus, {
165
+ size: 14,
166
+ color: hasMessages ? night.color.textSecondary : night.color.textTertiary
167
+ })
168
+ })]
169
+ })]
170
+ });
171
+ }
172
+ const styles = StyleSheet.create({
173
+ // 32pt of Otto (16 grid × 2pt) reading as the header's status glyph.
174
+ otto: {
175
+ marginRight: 8,
176
+ justifyContent: "center"
177
+ },
178
+ // Same plate as the Console header's action buttons.
179
+ actionBtn: {
180
+ width: 32,
181
+ height: 32,
182
+ borderRadius: 8,
183
+ backgroundColor: night.color.buttonSurface,
184
+ borderWidth: 1,
185
+ borderColor: night.color.border,
186
+ alignItems: "center",
187
+ justifyContent: "center"
188
+ },
189
+ actionBtnDisabled: {
190
+ opacity: 0.55
191
+ }
192
+ });
193
+ //# sourceMappingURL=AskBuoyHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","StyleSheet","TouchableOpacity","View","Check","Copy","FileText","ModalHeader","night","Otto","Plus","SettingsSolid","useCopyAction","formatElapsed","jsx","_jsx","jsxs","_jsxs","HEADER_TICK_MS","NO_TRANSCRIPT","AskBuoyHeader","configured","busy","failed","activeLabel","awaitingApproval","startedAt","stopping","readOnly","toolCount","hasMessages","onBack","onReset","getTranscript","onOpenSettings","onTicket","copied","copy","droveTool","setDroveTool","ticking","now","setNow","Date","timer","setInterval","clearInterval","elapsed","otto","working","subtitle","children","Navigation","style","styles","testID","state","pixelSize","tickMs","water","Content","title","Actions","accessibilityRole","accessibilityLabel","disabled","onPress","actionBtn","actionBtnDisabled","size","color","textSecondary","textTertiary","accent","create","marginRight","justifyContent","width","height","borderRadius","backgroundColor","buttonSurface","borderWidth","borderColor","border","alignItems","opacity"],"sourceRoot":"../../../src","sources":["components/AskBuoyHeader.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1,8 @@
1
- "use strict";export{AskBuoyIcon,ASK_BUOY_ICON_COLOR}from"@buoy-gg/floating-tools-core";
1
+ "use strict";
2
+
3
+ /**
4
+ * Re-exported from floating-tools-core so the tool package has one import
5
+ * surface, matching how every other Buoy tool exposes its icon.
6
+ */
7
+ export { AskBuoyIcon, ASK_BUOY_ICON_COLOR } from "@buoy-gg/floating-tools-core";
8
+ //# sourceMappingURL=AskBuoyIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AskBuoyIcon","ASK_BUOY_ICON_COLOR"],"sourceRoot":"../../../src","sources":["components/AskBuoyIcon.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,mBAAmB,QAAQ,8BAA8B","ignoreList":[]}