@buoy-gg/ask-buoy 7.0.38 → 7.0.40

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