@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
@@ -14,14 +14,69 @@
14
14
  * render, never a constant. A session that cached the tool list at open
15
15
  * would offer the model tools that are no longer there.
16
16
  */
17
- import { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
17
+ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
18
18
  import { Platform } from "react-native";
19
19
  import { dispatchToolAction, listSnapshotToolIds, listToolActions, readToolSnapshot, waitForToolRegistry } from "@buoy-gg/shared-ui";
20
- import { answerToText, CATALOG, createAskBuoySession, runGatedAction, SNAPSHOT_ACTION } from "@buoy-gg/agent-core";
21
- import { askBuoyStore } from "./askBuoyStore";
22
- import { buildPayload, clearTranscript, readTranscript, writeTranscript } from "./transcriptPersistence";
20
+ import { answerToText, CATALOG, createAskBuoySession, readTargetDigest, runGatedAction, SNAPSHOT_ACTION } from "@buoy-gg/agent-core";
21
+ import { askBuoyStore, queuePauseReason, turnPhaseOf } from "./askBuoyStore";
22
+ import { clearConversation, resetConversation } from "./resetConversation";
23
+ import { buildPayload, readTranscript, writeTranscript } from "./transcriptPersistence";
24
+ import { useAskBuoySettings } from "./useAskBuoySettings";
23
25
  const isRelease = typeof __DEV__ !== "undefined" && !__DEV__;
24
26
 
27
+ /**
28
+ * What this device can dispatch, right now.
29
+ *
30
+ * `getSnapshot` is folded in because half of Buoy's read surface is not an
31
+ * action at all — console entries, network events, routes and env live only in
32
+ * the adapter's snapshot. Without it the model is offered a console tool whose
33
+ * sole action wipes the logs, and no way to read them.
34
+ *
35
+ * READ FRESH, never cached. Packages register over the first frames, and some
36
+ * only once the thing they wrap exists — route-events publishes its actions
37
+ * when the navigation container is up, long after this hook first runs. A
38
+ * snapshot taken at mount froze that: the agent was handed a route tool that
39
+ * could only `getSnapshot`, so asked to navigate it guessed three tool names
40
+ * that do not exist, spent 41 seconds, and told the user this build cannot
41
+ * move between screens. It can.
42
+ */
43
+ /**
44
+ * The question a block asked, but ONLY when the model can no longer remember
45
+ * asking it — i.e. the bubble came back from disk. In a live conversation the
46
+ * model has the question in its own history and repeating it would put the
47
+ * words in the user's mouth twice.
48
+ *
49
+ * The wording field differs by block kind: `question` on choice and
50
+ * multiSelect, `label` on input / select / slider / dateTime, `title` on
51
+ * confirm and form.
52
+ */
53
+ function questionBehind(blockId) {
54
+ for (const m of askBuoyStore.getState().messages) {
55
+ if (!m.restored) continue;
56
+ for (const placed of m.blocks) {
57
+ const b = placed.block;
58
+ if (b?.id !== blockId) continue;
59
+ const asked = b.question ?? b.label ?? b.title;
60
+ return typeof asked === "string" && asked.trim() ? asked.trim() : undefined;
61
+ }
62
+ }
63
+ return undefined;
64
+ }
65
+ function readAvailableActions() {
66
+ try {
67
+ const actions = listToolActions();
68
+ for (const toolId of listSnapshotToolIds()) {
69
+ if (!actions[toolId]) actions[toolId] = [];
70
+ if (!actions[toolId].includes(SNAPSHOT_ACTION)) {
71
+ actions[toolId] = [SNAPSHOT_ACTION, ...actions[toolId]];
72
+ }
73
+ }
74
+ return actions;
75
+ } catch {
76
+ return {};
77
+ }
78
+ }
79
+
25
80
  /** Long enough to coalesce a streaming answer's deltas, short enough to beat a crash. */
26
81
  const SAVE_DEBOUNCE_MS = 600;
27
82
  export function useAskBuoyState() {
@@ -44,27 +99,53 @@ export function useAskBuoy(config) {
44
99
  * but it puts the chat on disk, so a host handling regulated data can say no.
45
100
  */
46
101
  const persist = config?.persistTranscript !== false;
102
+ /**
103
+ * The device's "don't ask me" toggle, read here rather than only in the
104
+ * settings view so it is loaded off disk before the first turn — a
105
+ * preference that only took effect once you had opened Settings would ask
106
+ * once, every launch, which is the thing it exists to stop.
107
+ */
108
+ const {
109
+ bypassApprovals,
110
+ readOnly
111
+ } = useAskBuoySettings();
112
+ // Through refs where the session is BUILT: the flags are not session
113
+ // identity, and putting them in that effect's deps would rebuild the
114
+ // conversation on a toggle. The effects below push changes instead.
115
+ const bypassRef = useRef(bypassApprovals);
116
+ bypassRef.current = bypassApprovals;
117
+ const readOnlyRef = useRef(readOnly);
118
+ readOnlyRef.current = readOnly;
47
119
 
48
- // Recomputed each render: the set of dispatchable tools is not a constant.
49
- //
50
- // `getSnapshot` is folded in here because half of Buoy's read surface is not
51
- // an action at all — console entries, network events, routes and env live
52
- // only in the adapter's snapshot. Without this the model is offered a
53
- // console tool whose sole action wipes the logs, and no way to read them.
54
- const availableActions = useMemo(() => {
55
- try {
56
- const actions = listToolActions();
57
- for (const toolId of listSnapshotToolIds()) {
58
- if (!actions[toolId]) actions[toolId] = [];
59
- if (!actions[toolId].includes(SNAPSHOT_ACTION)) {
60
- actions[toolId] = [SNAPSHOT_ACTION, ...actions[toolId]];
61
- }
62
- }
63
- return actions;
64
- } catch {
65
- return {};
66
- }
120
+ /**
121
+ * The policy a human-initiated dispatch runs under — block buttons and a
122
+ * restored approval. The session applies the device toggles itself; these
123
+ * two paths take `config.policy` directly, so without this the Read only
124
+ * toggle governed the model's calls and not the buttons the model drew.
125
+ * App OR device: the toggle narrows, never widens.
126
+ */
127
+ const effectivePolicy = useCallback(() => readOnlyRef.current ? {
128
+ ...(config?.policy ?? {}),
129
+ readOnly: true
130
+ } : config?.policy ?? {}, [config]);
131
+
132
+ /**
133
+ * Re-read once the registry says it is up. This is what the surrounding code
134
+ * has always assumed happens — the session effect's note about `toolKey`
135
+ * changing "a frame or two after open" was describing a recomputation that,
136
+ * with an empty dependency list, never actually ran.
137
+ */
138
+ const [registryTick, setRegistryTick] = useState(0);
139
+ useEffect(() => {
140
+ let cancelled = false;
141
+ void waitForToolRegistry().then(() => {
142
+ if (!cancelled) setRegistryTick(n => n + 1);
143
+ });
144
+ return () => {
145
+ cancelled = true;
146
+ };
67
147
  }, []);
148
+ const availableActions = useMemo(() => readAvailableActions(), [registryTick]);
68
149
  const toolKey = Object.keys(availableActions).sort().join(",");
69
150
  useEffect(() => {
70
151
  askBuoyStore.setConfigured(configured);
@@ -115,6 +196,8 @@ export function useAskBuoy(config) {
115
196
  if (held && held.signature === signature) {
116
197
  sessionRef.current = held.session;
117
198
  held.session.setAvailableActions(availableActions);
199
+ held.session.setApprovalBypass(bypassRef.current);
200
+ held.session.setReadOnly(readOnlyRef.current);
118
201
  askBuoyStore.setLedger(held.session.ledger);
119
202
  return;
120
203
  }
@@ -142,6 +225,8 @@ export function useAskBuoy(config) {
142
225
  requestApproval: input => askBuoyStore.askApproval(input)
143
226
  });
144
227
  sessionRef.current = session;
228
+ session.setApprovalBypass(bypassRef.current);
229
+ session.setReadOnly(readOnlyRef.current);
145
230
  askBuoyStore.holdSession(session, signature);
146
231
  askBuoyStore.setLedger(session.ledger);
147
232
 
@@ -186,9 +271,17 @@ export function useAskBuoy(config) {
186
271
  const hydrated = askBuoyStore.hydrate({
187
272
  messages: saved.messages,
188
273
  answers: saved.answers,
189
- usage: saved.usage
274
+ usage: saved.usage,
275
+ queued: saved.queued
190
276
  });
191
- if (hydrated) sessionRef.current?.restore(saved.history);
277
+ if (!hydrated) return;
278
+ sessionRef.current?.restore(saved.history);
279
+ // The undo bar, back with the transcript that promised it.
280
+ if (saved.ledger?.length) sessionRef.current?.ledger.restore(saved.ledger);
281
+ // A question the user never answered comes back with the conversation.
282
+ // Losing it silently reads as consent they never gave: nothing was
283
+ // tapped, so the change is still waiting as far as they know.
284
+ if (saved.pending) askBuoyStore.restorePending(saved.pending);
192
285
  });
193
286
  }
194
287
  return () => {
@@ -196,6 +289,18 @@ export function useAskBuoy(config) {
196
289
  };
197
290
  }, [configured, config, availableActions, toolKey, persist]);
198
291
 
292
+ /**
293
+ * Push a toggle made mid-conversation. Declared after the effect that builds
294
+ * the session, so on mount it lands on a session that already exists, and on
295
+ * a later flip it reaches the held one without disturbing the transcript.
296
+ */
297
+ useEffect(() => {
298
+ sessionRef.current?.setApprovalBypass(bypassApprovals);
299
+ }, [bypassApprovals]);
300
+ useEffect(() => {
301
+ sessionRef.current?.setReadOnly(readOnly);
302
+ }, [readOnly]);
303
+
199
304
  /**
200
305
  * Save on change: coalesced while a turn streams, immediate the moment it ends.
201
306
  *
@@ -215,6 +320,14 @@ export function useAskBuoy(config) {
215
320
  const answers = state.answers;
216
321
  const usage = state.usage;
217
322
  const busy = state.busy;
323
+ /**
324
+ * In the deps because an approval is the one thing that changes nothing
325
+ * else. `approval-required` adds no bubble and no tool row — the engine
326
+ * yields it and then parks — so without this the save that carries the card
327
+ * to disk never fires, and the reload it is meant to survive loses it.
328
+ */
329
+ const pending = state.pending;
330
+ const queued = state.queued;
218
331
  useEffect(() => {
219
332
  if (!persist) return;
220
333
  if (messages.length === 0) return;
@@ -223,7 +336,10 @@ export function useAskBuoy(config) {
223
336
  messages,
224
337
  history: sessionRef.current?.messages ?? [],
225
338
  answers,
226
- usage
339
+ usage,
340
+ pending,
341
+ ledger: askBuoyStore.getLedger()?.list(),
342
+ queued
227
343
  }));
228
344
  };
229
345
  if (!busy) {
@@ -232,7 +348,7 @@ export function useAskBuoy(config) {
232
348
  }
233
349
  const timer = setTimeout(write, SAVE_DEBOUNCE_MS);
234
350
  return () => clearTimeout(timer);
235
- }, [persist, busy, messages, answers, usage]);
351
+ }, [persist, busy, messages, answers, usage, pending, queued]);
236
352
 
237
353
  /** Stream one turn into a fresh assistant bubble. Callers set up the user side. */
238
354
  const runTurn = useCallback(text => {
@@ -242,6 +358,11 @@ export function useAskBuoy(config) {
242
358
  const messageId = askBuoyStore.startAssistant();
243
359
  const controller = new AbortController();
244
360
  abortRef.current = controller;
361
+
362
+ // The truth about this device, re-read at the top of every turn. A tool
363
+ // that registered since the sheet opened is dispatchable NOW, and the
364
+ // model is only offered what this list says it has.
365
+ session.setAvailableActions(readAvailableActions());
245
366
  const onEvent = configRef.current?.onEvent;
246
367
  void (async () => {
247
368
  try {
@@ -256,11 +377,22 @@ export function useAskBuoy(config) {
256
377
  }
257
378
  }
258
379
  } catch (err) {
259
- askBuoyStore.applyEvent(messageId, {
260
- type: "error",
261
- message: err instanceof Error ? err.message : "Something went wrong talking to your AI endpoint."
262
- });
380
+ // Stop is not a failure. The abort comes back as a cancelled fetch,
381
+ // and reporting that as an error told the user "couldn't reach your AI
382
+ // endpoint, check the connection" about the thing they had just asked
383
+ // for — with `FetchRequestCanceledException` printed underneath.
384
+ if (!controller.signal.aborted) {
385
+ askBuoyStore.applyEvent(messageId, {
386
+ type: "error",
387
+ message: err instanceof Error ? err.message : "Something went wrong talking to your AI endpoint."
388
+ });
389
+ }
263
390
  } finally {
391
+ // Marked HERE, not only in the catch. The engine now reads the abort
392
+ // between calls and returns cleanly, so most stops never throw — and
393
+ // a turn that ended because the user pressed Stop must say so either
394
+ // way, or the bubble just trails off as if the model ran out of words.
395
+ if (controller.signal.aborted) askBuoyStore.markStopped(messageId);
264
396
  askBuoyStore.finishAssistant(messageId);
265
397
  abortRef.current = null;
266
398
  }
@@ -270,10 +402,12 @@ export function useAskBuoy(config) {
270
402
  const trimmed = text.trim();
271
403
  if (!sessionRef.current || !trimmed) return;
272
404
 
273
- // Typed mid-turn: park it. The composer already cleared the field, and
274
- // silently dropping the words was the worst of all outcomes.
405
+ // Typed mid-turn: park it behind whatever is already parked. The
406
+ // composer already cleared the field, and silently dropping the words
407
+ // was the worst of all outcomes — the single slot this replaced did
408
+ // exactly that to every message but the last.
275
409
  if (askBuoyStore.getState().busy) {
276
- askBuoyStore.setQueued(trimmed);
410
+ askBuoyStore.enqueue(trimmed);
277
411
  return;
278
412
  }
279
413
 
@@ -296,43 +430,127 @@ export function useAskBuoy(config) {
296
430
  if (busy || !sessionRef.current) return;
297
431
  const lastUser = [...messages].reverse().find(m => m.role === "user");
298
432
  if (!lastUser) return;
299
- // Replace the failed bubble rather than stacking a second one under it.
300
- const last = messages[messages.length - 1];
301
- if (last && last.role === "assistant" && last.error) askBuoyStore.removeMessage(last.id);
433
+ // The failed bubble is kept — see the note on `retry` in the interface.
302
434
  runTurn(lastUser.text);
303
435
  }, [runTurn]);
304
436
  const stop = useCallback(() => {
437
+ askBuoyStore.requestStop();
305
438
  // A pending approval parks an unresolved promise inside the engine; the
306
- // abort signal is only read between steps, so Stop must also answer the
439
+ // abort signal is only read between calls, so Stop must also answer the
307
440
  // approval (as declined) or the generator hangs forever.
308
441
  if (askBuoyStore.getState().pending) askBuoyStore.answerApproval(false);
442
+ // Parked messages stay parked. The queue holds after a stop (see
443
+ // `queuePauseReason`), so ending the turn no longer flushes them — and
444
+ // they are not dumped into the composer either: three 4,000-character
445
+ // requests concatenated into one input lose their boundaries.
309
446
  abortRef.current?.abort();
310
447
  abortRef.current = null;
311
448
  }, []);
312
449
 
313
- // Flush the parked message the moment the turn ends.
314
- const queued = state.queued;
450
+ /**
451
+ * Deliver the next parked message — only when the chat is genuinely idle.
452
+ *
453
+ * `turnPhaseOf` + `queuePauseReason` decide, not `!busy`: the old check
454
+ * fired after an error (into the same dead connection), after Stop, and into
455
+ * an open Ask block as the answer to a question. See the store for the
456
+ * rules; this effect just obeys them.
457
+ */
315
458
  useEffect(() => {
316
- if (!state.busy && queued) {
317
- askBuoyStore.setQueued(null);
318
- send(queued);
319
- }
320
- }, [state.busy, queued, send]);
459
+ if (state.queued.length === 0) return;
460
+ if (turnPhaseOf(state) !== "idle") return;
461
+ if (queuePauseReason(state) !== null) return;
462
+ const next = askBuoyStore.shiftQueued();
463
+ if (next) send(next.text);
464
+ }, [state, send]);
465
+ const editQueued = useCallback(id => askBuoyStore.takeQueuedToDraft(id), []);
466
+ const removeQueued = useCallback(id => askBuoyStore.removeQueued(id), []);
321
467
  const reset = useCallback(() => {
322
468
  abortRef.current?.abort();
323
- sessionRef.current?.reset();
324
- askBuoyStore.reset();
469
+ abortRef.current = null;
325
470
  // "New conversation" means gone, not hidden. Leaving the last chat on disk
326
471
  // after the user asked for a clean one is the opposite of what they said.
327
- void clearTranscript();
472
+ clearConversation();
328
473
  }, []);
474
+ const undoThenReset = useCallback(() => resetConversation({
475
+ dispatch: dispatchToolAction,
476
+ undoFirst: true
477
+ }), []);
478
+
479
+ /**
480
+ * Run a call whose approval outlived its turn.
481
+ *
482
+ * Through `runGatedAction` — the same gate a block button uses, where the
483
+ * human's tap IS the approval — rather than `dispatchToolAction` raw, so the
484
+ * deny list, read-only mode, the release refusals and the effect ledger all
485
+ * still apply to a change made this way. Undo works on it afterwards for
486
+ * exactly the same reason.
487
+ */
488
+ const applyRestoredApproval = useCallback(async pending => {
489
+ const ledger = askBuoyStore.getLedger();
490
+ if (!ledger) {
491
+ askBuoyStore.setNotice(`${pending.label} couldn't run — no active Ask Buoy session.`);
492
+ return;
493
+ }
494
+ const catalog = config?.tools?.length ? [...CATALOG, ...config.tools] : undefined;
495
+ // Freshness before action. The card was asked in a run of the app that
496
+ // no longer exists; if what it would overwrite has moved since, writing
497
+ // the saved params is a change nobody approved. Re-read, compare, refuse.
498
+ if (pending.targetDigest) {
499
+ const now = await readTargetDigest({
500
+ toolId: pending.toolId,
501
+ action: pending.action,
502
+ params: pending.params ?? {},
503
+ dispatch: dispatchToolAction,
504
+ catalog
505
+ });
506
+ if (now !== undefined && now !== pending.targetDigest) {
507
+ askBuoyStore.addNote(`“${pending.label}” wasn't applied — what it would change has moved on since the app restarted. Nothing was written. Ask again if you still want it.`);
508
+ return;
509
+ }
510
+ }
511
+ const outcome = await runGatedAction({
512
+ toolId: pending.toolId,
513
+ action: pending.action,
514
+ params: pending.params ?? {},
515
+ dispatch: dispatchToolAction,
516
+ ledger,
517
+ policy: effectivePolicy(),
518
+ isRelease,
519
+ catalog
520
+ });
521
+ if (outcome.ok) {
522
+ askBuoyStore.addNote(`Applied “${pending.label}”, which was still waiting when the app restarted. Whatever else that answer was going to do is gone — ask again if there was more to it.`);
523
+ } else {
524
+ askBuoyStore.setNotice(`${pending.label} failed — ${outcome.error}`);
525
+ }
526
+ }, [config, effectivePolicy]);
329
527
  const approve = useCallback(approved => {
528
+ const pending = askBuoyStore.getState().pending;
529
+ // Clear the card first either way: the tap is answered, and the dispatch
530
+ // below is slow enough to leave it sitting there looking unanswered.
330
531
  askBuoyStore.answerApproval(approved);
331
- }, []);
532
+ // A live card resolves the promise the engine is parked on, and the turn
533
+ // carries on from there. A RESTORED one has no turn behind it — that
534
+ // generator died with the process — so Allow has to run the call itself.
535
+ if (!pending?.restored) return;
536
+ if (!approved) {
537
+ askBuoyStore.addNote(`Skipped “${pending.label}”. Nothing was changed.`);
538
+ return;
539
+ }
540
+ void applyRestoredApproval(pending);
541
+ }, [applyRestoredApproval]);
332
542
  const answer = useCallback(a => {
333
543
  askBuoyStore.recordAnswer(a);
334
544
  // Plain words to the model, never JSON: "Business checkout", "Yes, go ahead."
335
- send(answerToText(a));
545
+ //
546
+ // Unless the question came back from disk. A restored history is rewound
547
+ // to the last COMPLETE round, and an Ask block ends its turn with a
548
+ // `buoy_ui` call — so the turn that asked is always rewound out of the
549
+ // model's memory while its buttons stay tappable. A bare "Quantity" then
550
+ // arrives with nothing behind it, and the model answers "that could mean
551
+ // a couple of different things". Carry the question with the answer.
552
+ const asked = questionBehind(a.blockId);
553
+ send(asked ? `${asked} — ${answerToText(a)}` : answerToText(a));
336
554
  }, [send]);
337
555
 
338
556
  /**
@@ -365,7 +583,7 @@ export function useAskBuoy(config) {
365
583
  params: action.dispatch.params ?? {},
366
584
  dispatch: dispatchToolAction,
367
585
  ledger,
368
- policy: config?.policy ?? {},
586
+ policy: effectivePolicy(),
369
587
  isRelease,
370
588
  // Same merged catalog the session offers, so a button on a custom
371
589
  // tool's block is not refused as unknown.
@@ -377,18 +595,22 @@ export function useAskBuoy(config) {
377
595
  askBuoyStore.setActionState(key, "failed");
378
596
  askBuoyStore.setNotice(`${action.label} failed — ${outcome.error}`);
379
597
  }
380
- }, [send, config]);
598
+ }, [send, config, effectivePolicy]);
381
599
  return {
382
600
  state,
383
601
  send,
384
602
  stop,
385
603
  reset,
604
+ undoThenReset,
386
605
  approve,
387
606
  retry,
388
607
  answer,
389
608
  runAction,
609
+ editQueued,
610
+ removeQueued,
390
611
  configured,
391
- toolCount: Object.keys(availableActions).length
612
+ toolCount: Object.keys(availableActions).length,
613
+ availableToolIds: Object.keys(availableActions)
392
614
  };
393
615
  }
394
616
  //# sourceMappingURL=useAskBuoy.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useSyncExternalStore","Platform","dispatchToolAction","listSnapshotToolIds","listToolActions","readToolSnapshot","waitForToolRegistry","answerToText","CATALOG","createAskBuoySession","runGatedAction","SNAPSHOT_ACTION","askBuoyStore","buildPayload","clearTranscript","readTranscript","writeTranscript","isRelease","__DEV__","SAVE_DEBOUNCE_MS","useAskBuoyState","subscribe","getState","useAskBuoy","config","state","sessionRef","restoredRef","abortRef","configRef","current","configured","endpoint","model","persist","persistTranscript","availableActions","actions","toolId","includes","toolKey","Object","keys","sort","join","setConfigured","setMeta","protocol","undefined","appName","platform","OS","build","setNotice","apiKey","test","signature","held","getHeldSession","session","setAvailableActions","setLedger","ledger","headers","maxTokens","anthropicVersion","requestOverrides","catalog","tools","length","dispatch","readSnapshot","policy","context","requestApproval","input","askApproval","holdSession","cancelled","then","ready","prime","saved","hydrated","hydrate","messages","answers","usage","restore","history","busy","write","timer","setTimeout","clearTimeout","runTurn","text","beginTurn","messageId","startAssistant","controller","AbortController","onEvent","ev","send","signal","applyEvent","err","type","message","Error","finishAssistant","trimmed","trim","setQueued","awaiting","awaitingBlockId","recordAnswer","blockId","kind","addUser","retry","lastUser","reverse","find","m","role","last","error","removeMessage","id","stop","pending","answerApproval","abort","queued","reset","approve","approved","answer","a","runAction","action","key","label","getLedger","setActionState","outcome","params","ok","toolCount"],"sourceRoot":"../../../src","sources":["store/useAskBuoy.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useSyncExternalStore","Platform","dispatchToolAction","listSnapshotToolIds","listToolActions","readToolSnapshot","waitForToolRegistry","answerToText","CATALOG","createAskBuoySession","readTargetDigest","runGatedAction","SNAPSHOT_ACTION","askBuoyStore","queuePauseReason","turnPhaseOf","clearConversation","resetConversation","buildPayload","readTranscript","writeTranscript","useAskBuoySettings","isRelease","__DEV__","questionBehind","blockId","m","getState","messages","restored","placed","blocks","b","block","id","asked","question","label","title","trim","undefined","readAvailableActions","actions","toolId","includes","SAVE_DEBOUNCE_MS","useAskBuoyState","subscribe","useAskBuoy","config","state","sessionRef","restoredRef","abortRef","configRef","current","configured","endpoint","model","persist","persistTranscript","bypassApprovals","readOnly","bypassRef","readOnlyRef","effectivePolicy","policy","registryTick","setRegistryTick","cancelled","then","n","availableActions","toolKey","Object","keys","sort","join","setConfigured","setMeta","protocol","appName","platform","OS","build","setNotice","apiKey","test","signature","held","getHeldSession","session","setAvailableActions","setApprovalBypass","setReadOnly","setLedger","ledger","headers","maxTokens","anthropicVersion","requestOverrides","catalog","tools","length","dispatch","readSnapshot","context","requestApproval","input","askApproval","holdSession","ready","prime","saved","hydrated","hydrate","answers","usage","queued","restore","history","pending","restorePending","busy","write","getLedger","list","timer","setTimeout","clearTimeout","runTurn","text","beginTurn","messageId","startAssistant","controller","AbortController","onEvent","ev","send","signal","applyEvent","err","aborted","type","message","Error","markStopped","finishAssistant","trimmed","enqueue","awaiting","awaitingBlockId","recordAnswer","kind","addUser","retry","lastUser","reverse","find","role","stop","requestStop","answerApproval","abort","next","shiftQueued","editQueued","takeQueuedToDraft","removeQueued","reset","undoThenReset","undoFirst","applyRestoredApproval","targetDigest","now","action","params","addNote","outcome","ok","error","approve","approved","answer","a","runAction","key","setActionState","toolCount","availableToolIds"],"sourceRoot":"../../../src","sources":["store/useAskBuoy.ts"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,7 @@
18
18
  * broadcasts to every connected dashboard — it already leaks license keys the
19
19
  * same way.
20
20
  */
21
+ import { resetConversation } from "../store/resetConversation";
21
22
  import { dispatchToolAction, redactForWire } from "./wire";
22
23
  import { isReversible } from "@buoy-gg/agent-core";
23
24
  import { askBuoyStore } from "../store/askBuoyStore";
@@ -102,11 +103,31 @@ export const askBuoySyncAdapter = {
102
103
  ...outcome
103
104
  };
104
105
  },
105
- /** Clear the transcript and the ledger. Does not undo anything. */
106
- reset: () => {
107
- askBuoyStore.reset();
106
+ /**
107
+ * Undo what can be undone, then clear the transcript and the ledger.
108
+ *
109
+ * The same path as the sheet's "New conversation" (resetConversation.ts).
110
+ * This action used to clear unconditionally — no question, no undo — so a
111
+ * desktop click could drop the only undo record for changes still live on
112
+ * the tester's phone. Now it refuses to clear when a revert fails and says
113
+ * what is still applied; the dashboard decides whether to clear anyway
114
+ * by calling `undoAll` first or accepting the kept conversation.
115
+ */
116
+ reset: async () => {
117
+ const outcome = await resetConversation({
118
+ dispatch: dispatchToolAction,
119
+ undoFirst: true
120
+ });
121
+ if (!outcome.cleared) {
122
+ return {
123
+ ok: false,
124
+ error: `Couldn't undo ${outcome.failed.length} change${outcome.failed.length === 1 ? "" : "s"} — conversation kept.`,
125
+ failed: outcome.failed
126
+ };
127
+ }
108
128
  return {
109
- ok: true
129
+ ok: true,
130
+ reverted: outcome.reverted
110
131
  };
111
132
  }
112
133
  }
@@ -1 +1 @@
1
- {"version":3,"names":["dispatchToolAction","redactForWire","isReversible","askBuoyStore","ASK_BUOY_ADAPTER_VERSION","askBuoySyncAdapter","version","getSnapshot","state","getState","ledger","getLedger","entries","list","outstanding","filter","e","undoneAt","busy","configured","notice","messageCount","messages","length","map","m","id","role","text","streaming","toolCalls","c","toolId","action","status","usage","pendingApproval","pending","label","changes","reversible","effect","permanent","kind","transients","items","subscribe","onChange","offStore","offLedger","actions","listChanges","at","undoAll","ok","error","outcome","revertAll","reset"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,QAAQ;AAC1D,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,OAAO,MAAMC,wBAAwB,GAAG,CAAC;AAEzC,OAAO,MAAMC,kBAAkB,GAAG;EAChCC,OAAO,EAAEF,wBAAwB;EAEjCG,WAAWA,CAAA,EAAG;IACZ,MAAMC,KAAK,GAAGL,YAAY,CAACM,QAAQ,CAAC,CAAC;IACrC,MAAMC,MAAM,GAAGP,YAAY,CAACQ,SAAS,CAAC,CAAC;IACvC,MAAMC,OAAO,GAAGF,MAAM,EAAEG,IAAI,CAAC,CAAC,IAAI,EAAE;IACpC,MAAMC,WAAW,GAAGF,OAAO,CAACG,MAAM,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,QAAQ,CAAC;IAEtD,OAAO;MACLX,OAAO,EAAEF,wBAAwB;MACjCc,IAAI,EAAEV,KAAK,CAACU,IAAI;MAChBC,UAAU,EAAEX,KAAK,CAACW,UAAU;MAC5BC,MAAM,EAAEZ,KAAK,CAACY,MAAM;MACpBC,YAAY,EAAEb,KAAK,CAACc,QAAQ,CAACC,MAAM;MACnC;MACAD,QAAQ,EAAEd,KAAK,CAACc,QAAQ,CAACE,GAAG,CAAEC,CAAC,KAAM;QACnCC,EAAE,EAAED,CAAC,CAACC,EAAE;QACRC,IAAI,EAAEF,CAAC,CAACE,IAAI;QACZC,IAAI,EAAE3B,aAAa,CAACwB,CAAC,CAACG,IAAI,CAAC;QAC3BC,SAAS,EAAE,CAAC,CAACJ,CAAC,CAACI,SAAS;QACxBC,SAAS,EAAEL,CAAC,CAACK,SAAS,CAACN,GAAG,CAAEO,CAAC,KAAM;UACjCC,MAAM,EAAED,CAAC,CAACC,MAAM;UAChBC,MAAM,EAAEF,CAAC,CAACE,MAAM;UAChBC,MAAM,EAAEH,CAAC,CAACG;QACZ,CAAC,CAAC;MACJ,CAAC,CAAC,CAAC;MACH;MACAC,KAAK,EAAE3B,KAAK,CAAC2B,KAAK;MAClBC,eAAe,EAAE5B,KAAK,CAAC6B,OAAO,GAC1B;QACEL,MAAM,EAAExB,KAAK,CAAC6B,OAAO,CAACL,MAAM;QAC5BC,MAAM,EAAEzB,KAAK,CAAC6B,OAAO,CAACJ,MAAM;QAC5BK,KAAK,EAAE9B,KAAK,CAAC6B,OAAO,CAACC;MACvB,CAAC,GACD,IAAI;MACRC,OAAO,EAAE;QACP;QACA;QACAC,UAAU,EAAE1B,WAAW,CAACC,MAAM,CAAEC,CAAC,IAAKd,YAAY,CAACc,CAAC,CAACyB,MAAM,CAAC,CAAC,CAAClB,MAAM;QACpEmB,SAAS,EAAE5B,WAAW,CAACC,MAAM,CAC1BC,CAAC,IAAKA,CAAC,CAACyB,MAAM,CAACE,IAAI,KAAK,WAAW,IAAI,CAACzC,YAAY,CAACc,CAAC,CAACyB,MAAM,CAChE,CAAC,CAAClB,MAAM;QACRqB,UAAU,EAAE9B,WAAW,CAACC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACyB,MAAM,CAACE,IAAI,KAAK,WAAW,CAAC,CAACpB,MAAM;QAC3EsB,KAAK,EAAE/B,WAAW,CAACU,GAAG,CAAER,CAAC,KAAM;UAAE2B,IAAI,EAAE3B,CAAC,CAACyB,MAAM,CAACE,IAAI;UAAEL,KAAK,EAAEtB,CAAC,CAACyB,MAAM,CAACH;QAAM,CAAC,CAAC;MAChF;IACF,CAAC;EACH,CAAC;EAEDQ,SAASA,CAACC,QAAoB,EAAE;IAC9B,MAAMC,QAAQ,GAAG7C,YAAY,CAAC2C,SAAS,CAACC,QAAQ,CAAC;IACjD,MAAME,SAAS,GAAG9C,YAAY,CAACQ,SAAS,CAAC,CAAC,EAAEmC,SAAS,CAACC,QAAQ,CAAC;IAC/D,OAAO,MAAM;MACXC,QAAQ,CAAC,CAAC;MACVC,SAAS,GAAG,CAAC;IACf,CAAC;EACH,CAAC;EAEDC,OAAO,EAAE;IACP;IACAC,WAAW,EAAEA,CAAA,KAAM;MACjB,MAAMvC,OAAO,GAAGT,YAAY,CAACQ,SAAS,CAAC,CAAC,EAAEE,IAAI,CAAC,CAAC,IAAI,EAAE;MACtD,OAAOD,OAAO,CACXG,MAAM,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,QAAQ,CAAC,CAC1BO,GAAG,CAAER,CAAC,KAAM;QACXU,EAAE,EAAEV,CAAC,CAACU,EAAE;QACR0B,EAAE,EAAEpC,CAAC,CAACoC,EAAE;QACRpB,MAAM,EAAEhB,CAAC,CAACgB,MAAM;QAChBC,MAAM,EAAEjB,CAAC,CAACiB,MAAM;QAChBU,IAAI,EAAE3B,CAAC,CAACyB,MAAM,CAACE,IAAI;QACnBL,KAAK,EAAEtB,CAAC,CAACyB,MAAM,CAACH,KAAK;QACrBE,UAAU,EAAEtC,YAAY,CAACc,CAAC,CAACyB,MAAM;MACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;IACAY,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAM3C,MAAM,GAAGP,YAAY,CAACQ,SAAS,CAAC,CAAC;MACvC,IAAI,CAACD,MAAM,EAAE,OAAO;QAAE4C,EAAE,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAsC,CAAC;MAC/E,MAAMC,OAAO,GAAG,MAAM9C,MAAM,CAAC+C,SAAS,CAACzD,kBAAkB,CAAC;MAC1D,OAAO;QAAEsD,EAAE,EAAE,IAAI;QAAE,GAAGE;MAAQ,CAAC;IACjC,CAAC;IAED;IACAE,KAAK,EAAEA,CAAA,KAAM;MACXvD,YAAY,CAACuD,KAAK,CAAC,CAAC;MACpB,OAAO;QAAEJ,EAAE,EAAE;MAAK,CAAC;IACrB;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["resetConversation","dispatchToolAction","redactForWire","isReversible","askBuoyStore","ASK_BUOY_ADAPTER_VERSION","askBuoySyncAdapter","version","getSnapshot","state","getState","ledger","getLedger","entries","list","outstanding","filter","e","undoneAt","busy","configured","notice","messageCount","messages","length","map","m","id","role","text","streaming","toolCalls","c","toolId","action","status","usage","pendingApproval","pending","label","changes","reversible","effect","permanent","kind","transients","items","subscribe","onChange","offStore","offLedger","actions","listChanges","at","undoAll","ok","error","outcome","revertAll","reset","dispatch","undoFirst","cleared","failed","reverted"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/blocks/BlockRenderer.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAsCjD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,+BAMxD"}
1
+ {"version":3,"file":"BlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/blocks/BlockRenderer.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AA+CjD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,+BAMxD"}
@@ -34,6 +34,17 @@ export declare function listRowBehaviour(item: Pick<ListBlock["items"][number],
34
34
  export declare function List({ block }: {
35
35
  block: ListBlock;
36
36
  }): import("react").JSX.Element;
37
+ /**
38
+ * What a write changed. Folded by default (see `Card`), and drilled into
39
+ * rather than dumped.
40
+ *
41
+ * A changed field is rendered by the same tree diff viewer the Zustand and
42
+ * Storage tools use, with unchanged branches hidden — so editing one line of a
43
+ * bag shows `qty 4 => 14` and not both copies of a fifty-key array serialised
44
+ * to JSON, which is what the reader was given before and could not read. Only
45
+ * a scalar keeps the plain −/+ pair: a tree of one root node says less than
46
+ * the two values side by side.
47
+ */
37
48
  export declare function Diff({ block }: {
38
49
  block: DiffBlock;
39
50
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"DataBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/DataBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAmB7B,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BA4BrD;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAqB3D;AAED;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG;IAC5F,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAOA;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAoFnD;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BA4BnD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAoBrD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAarD;AAsDD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAInD;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BAYvD;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BAYzD"}
1
+ {"version":3,"file":"DataBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/DataBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAqB7B,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BA4BrD;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAqB3D;AAED;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG;IAC5F,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAOA;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAoFnD;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BA+CnD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAoBrD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAarD;AAsDD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAInD;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BAYvD;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BA6BzD"}