@buoy-gg/ask-buoy 7.0.35 → 7.0.36

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 (217) hide show
  1. package/README.md +35 -8
  2. package/lib/commonjs/blocks/BlockRenderer.js +13 -1
  3. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -1
  4. package/lib/commonjs/blocks/DataBlocks.js +126 -33
  5. package/lib/commonjs/blocks/DataBlocks.js.map +1 -1
  6. package/lib/commonjs/blocks/ExtraBlocks.js +12 -6
  7. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -1
  8. package/lib/commonjs/blocks/MediaBlocks.js +22 -6
  9. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -1
  10. package/lib/commonjs/blocks/blockText.js +60 -0
  11. package/lib/commonjs/blocks/blockText.js.map +1 -0
  12. package/lib/commonjs/blocks/blockText.test.js +53 -0
  13. package/lib/commonjs/blocks/blockText.test.js.map +1 -0
  14. package/lib/commonjs/blocks/primitives.js +58 -2
  15. package/lib/commonjs/blocks/primitives.js.map +1 -1
  16. package/lib/commonjs/components/ApprovalCard.js +111 -7
  17. package/lib/commonjs/components/ApprovalCard.js.map +1 -1
  18. package/lib/commonjs/components/AskBuoyHeader.js +36 -4
  19. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -1
  20. package/lib/commonjs/components/AskBuoyModal.js +160 -34
  21. package/lib/commonjs/components/AskBuoyModal.js.map +1 -1
  22. package/lib/commonjs/components/AskBuoySettings.js +50 -0
  23. package/lib/commonjs/components/AskBuoySettings.js.map +1 -1
  24. package/lib/commonjs/components/Composer.js +94 -14
  25. package/lib/commonjs/components/Composer.js.map +1 -1
  26. package/lib/commonjs/components/EmptyState.js +12 -5
  27. package/lib/commonjs/components/EmptyState.js.map +1 -1
  28. package/lib/commonjs/components/KeyboardPad.js +80 -0
  29. package/lib/commonjs/components/KeyboardPad.js.map +1 -0
  30. package/lib/commonjs/components/Markdown.js +148 -90
  31. package/lib/commonjs/components/Markdown.js.map +1 -1
  32. package/lib/commonjs/components/MessageList.js +339 -92
  33. package/lib/commonjs/components/MessageList.js.map +1 -1
  34. package/lib/commonjs/components/QueuedMessages.js +145 -0
  35. package/lib/commonjs/components/QueuedMessages.js.map +1 -0
  36. package/lib/commonjs/components/markdownParse.js +131 -0
  37. package/lib/commonjs/components/markdownParse.js.map +1 -0
  38. package/lib/commonjs/components/markdownParse.test.js +99 -0
  39. package/lib/commonjs/components/markdownParse.test.js.map +1 -0
  40. package/lib/commonjs/store/activityGroups.js +110 -0
  41. package/lib/commonjs/store/activityGroups.js.map +1 -0
  42. package/lib/commonjs/store/activityGroups.test.js +78 -0
  43. package/lib/commonjs/store/activityGroups.test.js.map +1 -0
  44. package/lib/commonjs/store/askBuoySettings.js +7 -2
  45. package/lib/commonjs/store/askBuoySettings.js.map +1 -1
  46. package/lib/commonjs/store/askBuoyStore.js +192 -10
  47. package/lib/commonjs/store/askBuoyStore.js.map +1 -1
  48. package/lib/commonjs/store/blockPlacement.js +64 -0
  49. package/lib/commonjs/store/blockPlacement.js.map +1 -0
  50. package/lib/commonjs/store/blockPlacement.test.js +123 -0
  51. package/lib/commonjs/store/blockPlacement.test.js.map +1 -0
  52. package/lib/commonjs/store/queue.test.js +150 -0
  53. package/lib/commonjs/store/queue.test.js.map +1 -0
  54. package/lib/commonjs/store/resetConversation.js +77 -0
  55. package/lib/commonjs/store/resetConversation.js.map +1 -0
  56. package/lib/commonjs/store/restorePending.test.js +63 -0
  57. package/lib/commonjs/store/restorePending.test.js.map +1 -0
  58. package/lib/commonjs/store/suggestions.js +54 -0
  59. package/lib/commonjs/store/suggestions.js.map +1 -0
  60. package/lib/commonjs/store/suggestions.test.js +58 -0
  61. package/lib/commonjs/store/suggestions.test.js.map +1 -0
  62. package/lib/commonjs/store/systemLine.test.js +77 -0
  63. package/lib/commonjs/store/systemLine.test.js.map +1 -0
  64. package/lib/commonjs/store/ticketPrompt.js +17 -0
  65. package/lib/commonjs/store/ticketPrompt.js.map +1 -0
  66. package/lib/commonjs/store/transcriptPersistence.js +92 -3
  67. package/lib/commonjs/store/transcriptPersistence.js.map +1 -1
  68. package/lib/commonjs/store/transcriptPersistence.test.js +148 -0
  69. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -1
  70. package/lib/commonjs/store/turnRendering.test.js +151 -0
  71. package/lib/commonjs/store/turnRendering.test.js.map +1 -0
  72. package/lib/commonjs/store/useAskBuoy.js +271 -49
  73. package/lib/commonjs/store/useAskBuoy.js.map +1 -1
  74. package/lib/commonjs/sync/askBuoySyncAdapter.js +25 -4
  75. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -1
  76. package/lib/module/blocks/BlockRenderer.js +13 -1
  77. package/lib/module/blocks/BlockRenderer.js.map +1 -1
  78. package/lib/module/blocks/DataBlocks.js +128 -35
  79. package/lib/module/blocks/DataBlocks.js.map +1 -1
  80. package/lib/module/blocks/ExtraBlocks.js +12 -6
  81. package/lib/module/blocks/ExtraBlocks.js.map +1 -1
  82. package/lib/module/blocks/MediaBlocks.js +22 -6
  83. package/lib/module/blocks/MediaBlocks.js.map +1 -1
  84. package/lib/module/blocks/blockText.js +55 -0
  85. package/lib/module/blocks/blockText.js.map +1 -0
  86. package/lib/module/blocks/blockText.test.js +53 -0
  87. package/lib/module/blocks/blockText.test.js.map +1 -0
  88. package/lib/module/blocks/primitives.js +58 -2
  89. package/lib/module/blocks/primitives.js.map +1 -1
  90. package/lib/module/components/ApprovalCard.js +113 -9
  91. package/lib/module/components/ApprovalCard.js.map +1 -1
  92. package/lib/module/components/AskBuoyHeader.js +37 -5
  93. package/lib/module/components/AskBuoyHeader.js.map +1 -1
  94. package/lib/module/components/AskBuoyModal.js +163 -37
  95. package/lib/module/components/AskBuoyModal.js.map +1 -1
  96. package/lib/module/components/AskBuoySettings.js +52 -2
  97. package/lib/module/components/AskBuoySettings.js.map +1 -1
  98. package/lib/module/components/Composer.js +95 -15
  99. package/lib/module/components/Composer.js.map +1 -1
  100. package/lib/module/components/EmptyState.js +12 -5
  101. package/lib/module/components/EmptyState.js.map +1 -1
  102. package/lib/module/components/KeyboardPad.js +75 -0
  103. package/lib/module/components/KeyboardPad.js.map +1 -0
  104. package/lib/module/components/Markdown.js +149 -90
  105. package/lib/module/components/Markdown.js.map +1 -1
  106. package/lib/module/components/MessageList.js +341 -94
  107. package/lib/module/components/MessageList.js.map +1 -1
  108. package/lib/module/components/QueuedMessages.js +140 -0
  109. package/lib/module/components/QueuedMessages.js.map +1 -0
  110. package/lib/module/components/markdownParse.js +125 -0
  111. package/lib/module/components/markdownParse.js.map +1 -0
  112. package/lib/module/components/markdownParse.test.js +98 -0
  113. package/lib/module/components/markdownParse.test.js.map +1 -0
  114. package/lib/module/store/activityGroups.js +103 -0
  115. package/lib/module/store/activityGroups.js.map +1 -0
  116. package/lib/module/store/activityGroups.test.js +77 -0
  117. package/lib/module/store/activityGroups.test.js.map +1 -0
  118. package/lib/module/store/askBuoySettings.js +7 -2
  119. package/lib/module/store/askBuoySettings.js.map +1 -1
  120. package/lib/module/store/askBuoyStore.js +190 -10
  121. package/lib/module/store/askBuoyStore.js.map +1 -1
  122. package/lib/module/store/blockPlacement.js +59 -0
  123. package/lib/module/store/blockPlacement.js.map +1 -0
  124. package/lib/module/store/blockPlacement.test.js +122 -0
  125. package/lib/module/store/blockPlacement.test.js.map +1 -0
  126. package/lib/module/store/queue.test.js +149 -0
  127. package/lib/module/store/queue.test.js.map +1 -0
  128. package/lib/module/store/resetConversation.js +72 -0
  129. package/lib/module/store/resetConversation.js.map +1 -0
  130. package/lib/module/store/restorePending.test.js +62 -0
  131. package/lib/module/store/restorePending.test.js.map +1 -0
  132. package/lib/module/store/suggestions.js +49 -0
  133. package/lib/module/store/suggestions.js.map +1 -0
  134. package/lib/module/store/suggestions.test.js +57 -0
  135. package/lib/module/store/suggestions.test.js.map +1 -0
  136. package/lib/module/store/systemLine.test.js +76 -0
  137. package/lib/module/store/systemLine.test.js.map +1 -0
  138. package/lib/module/store/ticketPrompt.js +13 -0
  139. package/lib/module/store/ticketPrompt.js.map +1 -0
  140. package/lib/module/store/transcriptPersistence.js +92 -3
  141. package/lib/module/store/transcriptPersistence.js.map +1 -1
  142. package/lib/module/store/transcriptPersistence.test.js +148 -0
  143. package/lib/module/store/transcriptPersistence.test.js.map +1 -1
  144. package/lib/module/store/turnRendering.test.js +150 -0
  145. package/lib/module/store/turnRendering.test.js.map +1 -0
  146. package/lib/module/store/useAskBuoy.js +275 -53
  147. package/lib/module/store/useAskBuoy.js.map +1 -1
  148. package/lib/module/sync/askBuoySyncAdapter.js +25 -4
  149. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -1
  150. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -1
  151. package/lib/typescript/blocks/DataBlocks.d.ts +11 -0
  152. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -1
  153. package/lib/typescript/blocks/ExtraBlocks.d.ts +18 -2
  154. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -1
  155. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -1
  156. package/lib/typescript/blocks/blockText.d.ts +14 -0
  157. package/lib/typescript/blocks/blockText.d.ts.map +1 -0
  158. package/lib/typescript/blocks/blockText.test.d.ts +2 -0
  159. package/lib/typescript/blocks/blockText.test.d.ts.map +1 -0
  160. package/lib/typescript/blocks/primitives.d.ts +16 -1
  161. package/lib/typescript/blocks/primitives.d.ts.map +1 -1
  162. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -1
  163. package/lib/typescript/components/AskBuoyHeader.d.ts +31 -1
  164. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -1
  165. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -1
  166. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -1
  167. package/lib/typescript/components/Composer.d.ts +16 -1
  168. package/lib/typescript/components/Composer.d.ts.map +1 -1
  169. package/lib/typescript/components/EmptyState.d.ts +5 -1
  170. package/lib/typescript/components/EmptyState.d.ts.map +1 -1
  171. package/lib/typescript/components/KeyboardPad.d.ts +33 -0
  172. package/lib/typescript/components/KeyboardPad.d.ts.map +1 -0
  173. package/lib/typescript/components/Markdown.d.ts +0 -10
  174. package/lib/typescript/components/Markdown.d.ts.map +1 -1
  175. package/lib/typescript/components/MessageList.d.ts +7 -2
  176. package/lib/typescript/components/MessageList.d.ts.map +1 -1
  177. package/lib/typescript/components/QueuedMessages.d.ts +10 -0
  178. package/lib/typescript/components/QueuedMessages.d.ts.map +1 -0
  179. package/lib/typescript/components/markdownParse.d.ts +49 -0
  180. package/lib/typescript/components/markdownParse.d.ts.map +1 -0
  181. package/lib/typescript/components/markdownParse.test.d.ts +2 -0
  182. package/lib/typescript/components/markdownParse.test.d.ts.map +1 -0
  183. package/lib/typescript/store/activityGroups.d.ts +29 -0
  184. package/lib/typescript/store/activityGroups.d.ts.map +1 -0
  185. package/lib/typescript/store/activityGroups.test.d.ts +2 -0
  186. package/lib/typescript/store/activityGroups.test.d.ts.map +1 -0
  187. package/lib/typescript/store/askBuoySettings.d.ts +22 -0
  188. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -1
  189. package/lib/typescript/store/askBuoyStore.d.ts +142 -5
  190. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -1
  191. package/lib/typescript/store/blockPlacement.d.ts +30 -0
  192. package/lib/typescript/store/blockPlacement.d.ts.map +1 -0
  193. package/lib/typescript/store/blockPlacement.test.d.ts +2 -0
  194. package/lib/typescript/store/blockPlacement.test.d.ts.map +1 -0
  195. package/lib/typescript/store/queue.test.d.ts +2 -0
  196. package/lib/typescript/store/queue.test.d.ts.map +1 -0
  197. package/lib/typescript/store/resetConversation.d.ts +38 -0
  198. package/lib/typescript/store/resetConversation.d.ts.map +1 -0
  199. package/lib/typescript/store/restorePending.test.d.ts +2 -0
  200. package/lib/typescript/store/restorePending.test.d.ts.map +1 -0
  201. package/lib/typescript/store/suggestions.d.ts +32 -0
  202. package/lib/typescript/store/suggestions.d.ts.map +1 -0
  203. package/lib/typescript/store/suggestions.test.d.ts +2 -0
  204. package/lib/typescript/store/suggestions.test.d.ts.map +1 -0
  205. package/lib/typescript/store/systemLine.test.d.ts +2 -0
  206. package/lib/typescript/store/systemLine.test.d.ts.map +1 -0
  207. package/lib/typescript/store/ticketPrompt.d.ts +11 -0
  208. package/lib/typescript/store/ticketPrompt.d.ts.map +1 -0
  209. package/lib/typescript/store/transcriptPersistence.d.ts +41 -2
  210. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -1
  211. package/lib/typescript/store/turnRendering.test.d.ts +2 -0
  212. package/lib/typescript/store/turnRendering.test.d.ts.map +1 -0
  213. package/lib/typescript/store/useAskBuoy.d.ts +23 -1
  214. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -1
  215. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +26 -6
  216. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -1
  217. package/package.json +9 -9
@@ -19,18 +19,21 @@
19
19
  * text link under the composer is gone — it is the header's + button now.
20
20
  */
21
21
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
22
- import { Alert, Animated, KeyboardAvoidingView, Platform, StyleSheet, Text, View } from "react-native";
22
+ import { Alert, Animated, StyleSheet, Text, View } from "react-native";
23
23
  import { isReversible } from "@buoy-gg/agent-core";
24
- import { dispatchToolAction, FeatureGate, Info, JsModal, ModalHeader, night, useSafeAreaInsets } from "@buoy-gg/shared-ui";
24
+ import { dispatchToolAction, FeatureGate, Info, JsModal, ModalHeader, night, setToolAttention, useSafeAreaInsets } from "@buoy-gg/shared-ui";
25
25
  import { BlockHandlersProvider } from "../blocks";
26
26
  import { ApprovalCard } from "./ApprovalCard";
27
27
  import { ChangesBar } from "./ChangesBar";
28
28
  import { Composer } from "./Composer";
29
+ import { KeyboardPad } from "./KeyboardPad";
29
30
  import { AskBuoyHeader } from "./AskBuoyHeader";
30
31
  import { AskBuoySettings } from "./AskBuoySettings";
31
32
  import { EmptyState } from "./EmptyState";
32
33
  import { MessageList, transcriptToText } from "./MessageList";
33
- import { askBuoyStore } from "../store/askBuoyStore";
34
+ import { QueuedMessages } from "./QueuedMessages";
35
+ import { askBuoyStore, queuePauseReason } from "../store/askBuoyStore";
36
+ import { TICKET_PROMPT } from "../store/ticketPrompt";
34
37
  import { useAskBuoy } from "../store/useAskBuoy";
35
38
  import { useAskBuoySettings } from "../store/useAskBuoySettings";
36
39
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -47,20 +50,122 @@ export function AskBuoyModal({
47
50
  send,
48
51
  stop,
49
52
  reset,
53
+ undoThenReset,
50
54
  approve,
51
55
  retry,
52
56
  answer,
53
57
  runAction,
58
+ editQueued,
59
+ removeQueued,
54
60
  configured,
55
- toolCount
61
+ toolCount,
62
+ availableToolIds
56
63
  } = useAskBuoy(config);
57
64
  const [changesOpen, setChangesOpen] = useState(false);
65
+
66
+ /**
67
+ * Closing the sheet stops the turn.
68
+ *
69
+ * It did not, and the turn had no Stop left once the window was gone: closed
70
+ * mid-answer, the agent ran on invisibly — finishing tool calls and writing
71
+ * a full reply into a transcript nobody was watching. Dismissing the chat is
72
+ * the most natural "make it stop" gesture there is, and tool calls CHANGE
73
+ * THE APP, so a turn nobody can see or halt is the wrong thing to leave
74
+ * running. Minimise is the affordance for "keep going while I look" — that
75
+ * one deliberately does not stop anything.
76
+ */
77
+ const closeAndStop = useCallback(() => {
78
+ stop();
79
+ onClose();
80
+ }, [stop, onClose]);
81
+ const takeDraft = useCallback(() => askBuoyStore.clearDraft(), []);
82
+
83
+ /**
84
+ * Settings replaces the transcript in place rather than opening over it. The
85
+ * sheet's own back arrow is the way out, and the conversation is untouched
86
+ * underneath — a toggle you flip here should be visible the moment you go
87
+ * back, not after dismissing something.
88
+ */
89
+ const [showSettings, setShowSettings] = useState(false);
90
+ const closeSettings = useCallback(() => setShowSettings(false), []);
91
+ const openSettings = useCallback(() => setShowSettings(true), []);
92
+
93
+ /**
94
+ * An approval that arrives while the sheet is hidden HOLDS, and the rail says
95
+ * so.
96
+ *
97
+ * It used to auto-decline: minimised, the card was simply not on screen —
98
+ * the host keeps this component mounted with `visible={false}` — so the turn
99
+ * parked on a promise nobody could answer, and failing safe meant declining
100
+ * the change and ending the turn. Which made minimise mean "stop", the
101
+ * opposite of what it is for ("keep going while I look at the app").
102
+ *
103
+ * Now the chip in the minimised rail gets a badge — "!" for needs-input, a
104
+ * dot for finished or failed — through the `setToolAttention` seam, and
105
+ * tapping the chip is the existing restore path, so the card is one tap
106
+ * away rather than gone. The approval wait is already excluded from the
107
+ * turn's deadline, so holding costs nothing. Closing the sheet still stops.
108
+ *
109
+ * The settings view hides the card while `visible` stays true, so a question
110
+ * arriving there flips back to the chat: a card you cannot see is the
111
+ * original bug in a different coat.
112
+ */
113
+ const hidden = !visible;
114
+ const awaitingUser = !!state.pending || !!state.awaitingBlockId;
115
+ const lastMessage = state.messages[state.messages.length - 1];
116
+ const finishedWhileHidden = useRef(false);
117
+ const wasBusy = useRef(state.busy);
118
+ useEffect(() => {
119
+ if (hidden && wasBusy.current && !state.busy) finishedWhileHidden.current = true;
120
+ if (!hidden) finishedWhileHidden.current = false;
121
+ wasBusy.current = state.busy;
122
+ }, [hidden, state.busy]);
123
+ useEffect(() => {
124
+ if (!hidden) {
125
+ setToolAttention("ask-buoy", null);
126
+ return;
127
+ }
128
+ if (awaitingUser) {
129
+ setToolAttention("ask-buoy", {
130
+ kind: "needsInput",
131
+ label: state.pending ? "Needs your approval" : "Has a question for you"
132
+ });
133
+ } else if (finishedWhileHidden.current && lastMessage?.role === "assistant" && lastMessage.error) {
134
+ setToolAttention("ask-buoy", {
135
+ kind: "failed",
136
+ label: "The last turn failed"
137
+ });
138
+ } else if (finishedWhileHidden.current && !state.busy) {
139
+ setToolAttention("ask-buoy", {
140
+ kind: "done",
141
+ label: "Finished"
142
+ });
143
+ } else {
144
+ setToolAttention("ask-buoy", null);
145
+ }
146
+ }, [hidden, awaitingUser, state.busy, state.pending, lastMessage]);
147
+ useEffect(() => () => setToolAttention("ask-buoy", null), []);
148
+ useEffect(() => {
149
+ if (state.pending && showSettings) setShowSettings(false);
150
+ }, [state.pending, showSettings]);
58
151
  // A hardcoded device map, not the native library — an unmapped phone
59
152
  // silently returns bottom: 0, which is how footers ended up sitting on the
60
153
  // home indicator.
61
154
  const insets = useSafeAreaInsets({
62
155
  minBottom: 16
63
156
  });
157
+ /**
158
+ * The safe-area inset is for the HOME INDICATOR, and only a bottom sheet
159
+ * touches it. A floating window is positioned away from the screen edge and
160
+ * clips its own rounded corner, so the same padding is just a band of dead
161
+ * space under the composer in the smallest layout the tool has.
162
+ *
163
+ * JsModal owns the mode (it restores a persisted one on mount and reports it
164
+ * here), so this mirrors rather than decides. Default matches JsModal's own:
165
+ * a sheet until told otherwise.
166
+ */
167
+ const [mode, setMode] = useState("bottomSheet");
168
+ const bottomInset = mode === "floating" ? 0 : insets.bottom;
64
169
 
65
170
  /**
66
171
  * `dispatchToolAction` is imported STATICALLY at the top of this file, not
@@ -139,6 +244,12 @@ export function AskBuoyModal({
139
244
  * New conversation, guarded. Clearing the session clears the ledger — the
140
245
  * ONLY undo surface — while the agent's changes stay live in the app, so
141
246
  * with reversible changes outstanding the user chooses their fate first.
247
+ *
248
+ * "Undo, then clear" reads the outcome. It did not: two of five reverts
249
+ * would fail (a key changed since) and the conversation cleared anyway,
250
+ * leaving two changes live with no record. Now a failed undo keeps the
251
+ * conversation and names what is still applied; clearing is a second,
252
+ * explicit tap. See resetConversation.ts.
142
253
  */
143
254
  const confirmReset = useCallback(() => {
144
255
  const ledger = askBuoyStore.getLedger();
@@ -151,9 +262,18 @@ export function AskBuoyModal({
151
262
  text: "Undo, then clear",
152
263
  onPress: () => {
153
264
  void (async () => {
154
- const l = askBuoyStore.getLedger();
155
- if (l) await l.revertAll(dispatchToolAction);
156
- reset();
265
+ const outcome = await undoThenReset();
266
+ if (outcome.cleared) return;
267
+ const total = outcome.reverted + outcome.failed.length;
268
+ const stillApplied = outcome.failed.map(f => `${f.label} (${f.error})`).join("\n");
269
+ Alert.alert(`Couldn't undo ${outcome.failed.length} of ${total} change${total === 1 ? "" : "s"}`, `${stillApplied}\n\nStill applied in the app. Clear the conversation anyway?`, [{
270
+ text: "Keep conversation",
271
+ style: "cancel"
272
+ }, {
273
+ text: "Clear anyway",
274
+ style: "destructive",
275
+ onPress: reset
276
+ }]);
157
277
  })();
158
278
  }
159
279
  }, {
@@ -164,7 +284,7 @@ export function AskBuoyModal({
164
284
  text: "Cancel",
165
285
  style: "cancel"
166
286
  }]);
167
- }, [reset]);
287
+ }, [reset, undoThenReset]);
168
288
 
169
289
  // The header's live status: the title of whichever tool call is in flight.
170
290
  const activeLabel = useMemo(() => {
@@ -201,25 +321,24 @@ export function AskBuoyModal({
201
321
 
202
322
  // The last assistant turn carrying an error is the only "it went wrong"
203
323
  // signal the header can read; it clears as soon as the next send starts.
204
- const lastMessage = state.messages[state.messages.length - 1];
205
324
  const failed = !state.busy && lastMessage?.role === "assistant" && !!lastMessage.error;
325
+ /**
326
+ * Stop invites a redirect. The turn just ended because the user said so;
327
+ * the likeliest next move is "do this instead", not "do that again" — so
328
+ * the composer takes focus with that prompt. Keyed by the stopped message so
329
+ * it happens once per stop, and only while the sheet is on screen.
330
+ */
331
+ const redirectKey = !state.busy && lastMessage?.role === "assistant" && lastMessage.stopped && !lastMessage.error ? lastMessage.id : null;
332
+ const queuePaused = queuePauseReason(state);
206
333
 
207
334
  // Built on press, not on render — a streaming answer would otherwise rebuild
208
335
  // the whole transcript on every frame for a button nobody tapped.
209
336
  const {
210
- showThinking
337
+ showThinking,
338
+ readOnly
211
339
  } = useAskBuoySettings();
212
340
  const getTranscript = useCallback(() => transcriptToText(state.messages, showThinking), [state.messages, showThinking]);
213
-
214
- /**
215
- * Settings replaces the transcript in place rather than opening over it. The
216
- * sheet's own back arrow is the way out, and the conversation is untouched
217
- * underneath — a toggle you flip here should be visible the moment you go
218
- * back, not after dismissing something.
219
- */
220
- const [showSettings, setShowSettings] = useState(false);
221
- const closeSettings = useCallback(() => setShowSettings(false), []);
222
- const openSettings = useCallback(() => setShowSettings(true), []);
341
+ const requestTicket = useCallback(() => send(TICKET_PROMPT), [send]);
223
342
  const header = showSettings ? /*#__PURE__*/_jsxs(ModalHeader, {
224
343
  children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
225
344
  onBack: closeSettings
@@ -233,16 +352,21 @@ export function AskBuoyModal({
233
352
  busy: state.busy,
234
353
  failed: failed,
235
354
  activeLabel: activeLabel,
355
+ awaitingApproval: !!state.pending,
356
+ startedAt: lastMessage?.role === "assistant" && lastMessage.streaming ? lastMessage.startedAt ?? null : null,
357
+ stopping: state.stopping,
358
+ readOnly: readOnly,
236
359
  toolCount: toolCount,
237
360
  hasMessages: state.messages.length > 0,
238
361
  onBack: onBack,
239
362
  onReset: confirmReset,
240
363
  getTranscript: getTranscript,
241
- onOpenSettings: openSettings
364
+ onOpenSettings: openSettings,
365
+ onTicket: requestTicket
242
366
  });
243
367
  return /*#__PURE__*/_jsx(JsModal, {
244
368
  visible: visible,
245
- onClose: onClose
369
+ onClose: closeAndStop
246
370
  // The message list is the only scroller. JsModal's default wrapper is
247
371
  // flexGrow:1, which makes a nested flex:1 scroller resolve against the
248
372
  // content and never scroll at all.
@@ -261,13 +385,14 @@ export function AskBuoyModal({
261
385
  },
262
386
  onBack: onBack,
263
387
  onMinimize: onMinimize,
388
+ onModeChange: setMode,
264
389
  persistenceKey: persistenceKey ?? "buoy-ask-buoy",
265
390
  enablePersistence: true,
266
391
  children: /*#__PURE__*/_jsx(BlockHandlersProvider, {
267
392
  value: blockHandlers,
268
393
  children: /*#__PURE__*/_jsxs(View, {
269
394
  style: [styles.root, {
270
- paddingBottom: insets.bottom
395
+ paddingBottom: bottomInset
271
396
  }],
272
397
  children: [/*#__PURE__*/_jsx(ChangesBar, {
273
398
  ledger: askBuoyStore.getLedger(),
@@ -284,25 +409,25 @@ export function AskBuoyModal({
284
409
  style: styles.noticeText,
285
410
  children: state.notice
286
411
  })]
287
- }), /*#__PURE__*/_jsx(KeyboardAvoidingView, {
288
- style: styles.flex
289
- // iOS only: Android's default softwareKeyboardLayoutMode is "resize",
290
- // so the window shrinks and a bottom-anchored view rides up already.
291
- // Padding on both would lift the composer twice.
292
- ,
293
- behavior: Platform.OS === "ios" ? "padding" : undefined,
294
- enabled: Platform.OS === "ios",
295
- keyboardVerticalOffset: insets.bottom,
412
+ }), /*#__PURE__*/_jsx(KeyboardPad, {
296
413
  children: /*#__PURE__*/_jsx(FeatureGate, {
297
414
  featureName: "Ask Buoy",
298
415
  children: showSettings ? /*#__PURE__*/_jsx(AskBuoySettings, {}) : /*#__PURE__*/_jsxs(_Fragment, {
299
416
  children: [/*#__PURE__*/_jsx(MessageList, {
300
417
  messages: state.messages,
301
418
  onRetry: retry,
419
+ waitingOnUser: !!state.pending || !!state.awaitingBlockId,
302
420
  ListEmptyComponent: /*#__PURE__*/_jsx(EmptyState, {
303
421
  configured: configured,
304
- onPick: send
422
+ onPick: send,
423
+ availableToolIds: availableToolIds,
424
+ readOnly: readOnly || !!config?.policy?.readOnly
305
425
  })
426
+ }), /*#__PURE__*/_jsx(QueuedMessages, {
427
+ items: state.queued,
428
+ paused: queuePaused,
429
+ onEdit: editQueued,
430
+ onRemove: removeQueued
306
431
  }), state.pending && /*#__PURE__*/_jsx(ApprovalCard, {
307
432
  pending: state.pending,
308
433
  onAnswer: approve
@@ -310,8 +435,12 @@ export function AskBuoyModal({
310
435
  onSend: send,
311
436
  onStop: stop,
312
437
  busy: state.busy,
438
+ draft: state.draft,
439
+ onDraftTaken: takeDraft,
313
440
  disabled: !configured,
314
- placeholder: state.queued ? "Queued — sends when this turn finishes" : state.awaitingBlockId ? "Pick an option above, or type…" : undefined
441
+ focusKey: redirectKey,
442
+ canFocus: visible,
443
+ placeholder: redirectKey ? "Tell it what to do differently…" : state.awaitingBlockId ? "Pick an option above, or type…" : undefined
315
444
  })]
316
445
  })
317
446
  })
@@ -327,9 +456,6 @@ const styles = StyleSheet.create({
327
456
  flex: 1,
328
457
  backgroundColor: "transparent"
329
458
  },
330
- flex: {
331
- flex: 1
332
- },
333
459
  notice: {
334
460
  flexDirection: "row",
335
461
  alignItems: "flex-start",
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Alert","Animated","KeyboardAvoidingView","Platform","StyleSheet","Text","View","isReversible","dispatchToolAction","FeatureGate","Info","JsModal","ModalHeader","night","useSafeAreaInsets","BlockHandlersProvider","ApprovalCard","ChangesBar","Composer","AskBuoyHeader","AskBuoySettings","EmptyState","MessageList","transcriptToText","askBuoyStore","useAskBuoy","useAskBuoySettings","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AskBuoyModal","visible","onClose","onBack","onMinimize","persistenceKey","config","state","send","stop","reset","approve","retry","answer","runAction","configured","toolCount","changesOpen","setChangesOpen","insets","minBottom","undoAll","ledger","getLedger","outcome","revertAll","failed","length","setNotice","detail","map","f","label","error","join","toggleChanges","v","sheetHeight","Value","current","peeking","runPeek","stopAnimation","from","restoreTo","timing","toValue","duration","useNativeDriver","start","setTimeout","spring","friction","peekKey","last","messages","role","peeks","blocks","filter","p","block","kind","id","prevPeekKey","peek","confirmReset","reversible","list","e","undoneAt","effect","alert","text","onPress","l","style","activeLabel","streaming","toolCalls","find","c","status","blockHandlers","action","blockId","minimize","mode","answered","answers","actionState","busy","supports","openTool","dispatch","lastMessage","showThinking","getTranscript","showSettings","setShowSettings","closeSettings","openSettings","header","children","Navigation","Content","title","subtitle","testID","hasMessages","onReset","onOpenSettings","disableScrollWrapper","background","initialHeight","animatedHeight","customContent","showToggleButton","enablePersistence","value","styles","root","paddingBottom","bottom","onUndoAll","expanded","onToggle","notice","size","color","info","noticeText","flex","behavior","OS","undefined","enabled","keyboardVerticalOffset","featureName","onRetry","ListEmptyComponent","onPick","pending","onAnswer","onSend","onStop","disabled","placeholder","queued","awaitingBlockId","create","backgroundColor","flexDirection","alignItems","gap","paddingHorizontal","gutter","paddingVertical","infoSoft","fontSize","font","caption","lineHeight"],"sourceRoot":"../../../src","sources":["components/AskBuoyModal.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Alert","Animated","StyleSheet","Text","View","isReversible","dispatchToolAction","FeatureGate","Info","JsModal","ModalHeader","night","setToolAttention","useSafeAreaInsets","BlockHandlersProvider","ApprovalCard","ChangesBar","Composer","KeyboardPad","AskBuoyHeader","AskBuoySettings","EmptyState","MessageList","transcriptToText","QueuedMessages","askBuoyStore","queuePauseReason","TICKET_PROMPT","useAskBuoy","useAskBuoySettings","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AskBuoyModal","visible","onClose","onBack","onMinimize","persistenceKey","config","state","send","stop","reset","undoThenReset","approve","retry","answer","runAction","editQueued","removeQueued","configured","toolCount","availableToolIds","changesOpen","setChangesOpen","closeAndStop","takeDraft","clearDraft","showSettings","setShowSettings","closeSettings","openSettings","hidden","awaitingUser","pending","awaitingBlockId","lastMessage","messages","length","finishedWhileHidden","wasBusy","busy","current","kind","label","role","error","insets","minBottom","mode","setMode","bottomInset","bottom","undoAll","ledger","getLedger","outcome","revertAll","failed","setNotice","detail","map","f","join","toggleChanges","v","sheetHeight","Value","peeking","runPeek","stopAnimation","from","restoreTo","timing","toValue","duration","useNativeDriver","start","setTimeout","spring","friction","peekKey","last","peeks","blocks","filter","p","block","id","prevPeekKey","peek","confirmReset","reversible","list","e","undoneAt","effect","alert","text","onPress","cleared","total","reverted","stillApplied","style","activeLabel","streaming","toolCalls","find","c","status","blockHandlers","action","blockId","minimize","answered","answers","actionState","supports","openTool","dispatch","redirectKey","stopped","queuePaused","showThinking","readOnly","getTranscript","requestTicket","header","children","Navigation","Content","title","subtitle","testID","awaitingApproval","startedAt","stopping","hasMessages","onReset","onOpenSettings","onTicket","disableScrollWrapper","background","initialHeight","animatedHeight","customContent","showToggleButton","onModeChange","enablePersistence","value","styles","root","paddingBottom","onUndoAll","expanded","onToggle","notice","size","color","info","noticeText","featureName","onRetry","waitingOnUser","ListEmptyComponent","onPick","policy","items","queued","paused","onEdit","onRemove","onAnswer","onSend","onStop","draft","onDraftTaken","disabled","focusKey","canFocus","placeholder","undefined","create","flex","backgroundColor","flexDirection","alignItems","gap","paddingHorizontal","gutter","paddingVertical","infoSoft","fontSize","font","caption","lineHeight"],"sourceRoot":"../../../src","sources":["components/AskBuoyModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,8 +11,8 @@
11
11
  * Sections are by subject, not by implementation. "Chat" is what a tester
12
12
  * calls the thing they are looking at.
13
13
  */
14
- import { ScrollView, StyleSheet, Text } from "react-native";
15
- import { night, ToggleRow } from "@buoy-gg/shared-ui";
14
+ import { ScrollView, StyleSheet, Text, View } from "react-native";
15
+ import { AlertTriangle, night, ToggleRow } from "@buoy-gg/shared-ui";
16
16
  import { useAskBuoySettings } from "../store/useAskBuoySettings";
17
17
  import { askBuoySettings } from "../store/askBuoySettings";
18
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -34,6 +34,41 @@ export function AskBuoySettings() {
34
34
  }), /*#__PURE__*/_jsx(Text, {
35
35
  style: styles.note,
36
36
  children: "Not every model reports reasoning. Claude thinks by default; most OpenAI models return none, and the strip then shows the steps alone."
37
+ }), /*#__PURE__*/_jsx(Text, {
38
+ style: styles.section,
39
+ children: "PERMISSIONS"
40
+ }), /*#__PURE__*/_jsx(ToggleRow, {
41
+ testID: "buoy-ask-buoy-setting-readonly",
42
+ label: "Read only",
43
+ description: "Inspect the app, change nothing. Every write and simulation is refused until this is off. Undo still works \u2014 putting things back is the safe direction.",
44
+ value: settings.readOnly,
45
+ onValueChange: next => askBuoySettings.set("readOnly", next)
46
+ }), settings.readOnly ? /*#__PURE__*/_jsx(Text, {
47
+ style: styles.note,
48
+ testID: "buoy-ask-buoy-readonly-note",
49
+ children: "On across reloads until you turn it off here. The header says \u201CRead only\u201D while it is on. It adds to whatever this app already restricts \u2014 it never loosens anything."
50
+ }) : null, /*#__PURE__*/_jsx(ToggleRow, {
51
+ testID: "buoy-ask-buoy-setting-bypass",
52
+ tone: "warning",
53
+ emphasizeLabel: settings.bypassApprovals,
54
+ disabled: settings.readOnly,
55
+ label: "Skip approval prompts",
56
+ description: settings.readOnly ? "Unavailable while Read only is on — nothing can be approved." : "Runs every action the moment the agent calls it, with no Allow card — including the destructive ones that wipe or reset data.",
57
+ value: settings.bypassApprovals,
58
+ onValueChange: next => askBuoySettings.set("bypassApprovals", next)
59
+ }), settings.bypassApprovals && !settings.readOnly ? /*#__PURE__*/_jsxs(View, {
60
+ style: styles.warning,
61
+ testID: "buoy-ask-buoy-bypass-warning",
62
+ children: [/*#__PURE__*/_jsx(AlertTriangle, {
63
+ size: 14,
64
+ color: night.color.warning
65
+ }), /*#__PURE__*/_jsx(Text, {
66
+ style: styles.warningText,
67
+ children: "Nothing will ask before a change lands. A wipe or a reset runs on the model's word alone, and Undo only reverses the changes that can be reversed \u2014 the bar tells you which. This stays on across reloads and app restarts until you turn it off here, so leave it off on any device holding data you care about. It does not widen what the agent may reach: read-only mode, this app's deny list and the release-build refusals still apply."
68
+ })]
69
+ }) : /*#__PURE__*/_jsx(Text, {
70
+ style: styles.note,
71
+ children: "On by default for destructive actions only \u2014 reads and ordinary writes already run without asking, and the changes bar records them."
37
72
  })]
38
73
  });
39
74
  }
@@ -54,6 +89,21 @@ const styles = StyleSheet.create({
54
89
  paddingHorizontal: 4,
55
90
  paddingTop: 4
56
91
  },
92
+ warning: {
93
+ flexDirection: "row",
94
+ gap: 8,
95
+ padding: night.cardPad,
96
+ borderRadius: night.radius.card,
97
+ borderWidth: StyleSheet.hairlineWidth,
98
+ borderColor: night.color.warning,
99
+ backgroundColor: night.color.surface
100
+ },
101
+ warningText: {
102
+ flex: 1,
103
+ color: night.color.warning,
104
+ fontSize: night.font.micro,
105
+ lineHeight: 16
106
+ },
57
107
  note: {
58
108
  color: night.color.textTertiary,
59
109
  fontSize: night.font.micro,
@@ -1 +1 @@
1
- {"version":3,"names":["ScrollView","StyleSheet","Text","night","ToggleRow","useAskBuoySettings","askBuoySettings","jsx","_jsx","jsxs","_jsxs","AskBuoySettings","settings","style","styles","scroll","contentContainerStyle","content","testID","children","section","label","description","value","showThinking","onValueChange","next","set","note","create","flex","padding","gutter","gap","paddingBottom","color","textTertiary","fontSize","fontWeight","letterSpacing","paddingHorizontal","paddingTop","font","micro","lineHeight"],"sourceRoot":"../../../src","sources":["components/AskBuoySettings.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,UAAU,EAAEC,IAAI,QAAc,cAAc;AACjE,SAASC,KAAK,EAAEC,SAAS,QAAQ,oBAAoB;AAErD,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,eAAe,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE3D,OAAO,SAASC,eAAeA,CAAA,EAAG;EAChC,MAAMC,QAAQ,GAAGP,kBAAkB,CAAC,CAAC;EACrC,oBACEK,KAAA,CAACV,UAAU;IACTa,KAAK,EAAEC,MAAM,CAACC,MAAO;IACrBC,qBAAqB,EAAEF,MAAM,CAACG,OAAQ;IACtCC,MAAM,EAAC,wBAAwB;IAAAC,QAAA,gBAE/BX,IAAA,CAACN,IAAI;MAACW,KAAK,EAAEC,MAAM,CAACM,OAAQ;MAAAD,QAAA,EAAC;IAAI,CAAM,CAAC,eACxCX,IAAA,CAACJ,SAAS;MACRc,MAAM,EAAC,gCAAgC;MACvCG,KAAK,EAAC,qBAAqB;MAC3BC,WAAW,EAAC,+OAA+O;MAC3PC,KAAK,EAAEX,QAAQ,CAACY,YAAa;MAC7BC,aAAa,EAAGC,IAAI,IAAKpB,eAAe,CAACqB,GAAG,CAAC,cAAc,EAAED,IAAI;IAAE,CACpE,CAAC,eACFlB,IAAA,CAACN,IAAI;MAACW,KAAK,EAAEC,MAAM,CAACc,IAAK;MAAAT,QAAA,EAAC;IAG1B,CAAM,CAAC;EAAA,CACG,CAAC;AAEjB;AAEA,MAAML,MAAM,GAAGb,UAAU,CAAC4B,MAAM,CAAC;EAC/Bd,MAAM,EAAE;IAAEe,IAAI,EAAE;EAAE,CAAC;EACnBb,OAAO,EAAE;IAAEc,OAAO,EAAE5B,KAAK,CAAC6B,MAAM;IAAEC,GAAG,EAAE,EAAE;IAAEC,aAAa,EAAE;EAAG,CAAC;EAC9Dd,OAAO,EAAE;IACPe,KAAK,EAAEhC,KAAK,CAACgC,KAAK,CAACC,YAAY;IAC/BC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE,GAAG;IAClBC,iBAAiB,EAAE,CAAC;IACpBC,UAAU,EAAE;EACd,CAAC;EACDb,IAAI,EAAE;IACJO,KAAK,EAAEhC,KAAK,CAACgC,KAAK,CAACC,YAAY;IAC/BC,QAAQ,EAAElC,KAAK,CAACuC,IAAI,CAACC,KAAK;IAC1BC,UAAU,EAAE,EAAE;IACdJ,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ScrollView","StyleSheet","Text","View","AlertTriangle","night","ToggleRow","useAskBuoySettings","askBuoySettings","jsx","_jsx","jsxs","_jsxs","AskBuoySettings","settings","style","styles","scroll","contentContainerStyle","content","testID","children","section","label","description","value","showThinking","onValueChange","next","set","note","readOnly","tone","emphasizeLabel","bypassApprovals","disabled","warning","size","color","warningText","create","flex","padding","gutter","gap","paddingBottom","textTertiary","fontSize","fontWeight","letterSpacing","paddingHorizontal","paddingTop","flexDirection","cardPad","borderRadius","radius","card","borderWidth","hairlineWidth","borderColor","backgroundColor","surface","font","micro","lineHeight"],"sourceRoot":"../../../src","sources":["components/AskBuoySettings.tsx"],"mappings":"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","ignoreList":[]}