@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
@@ -10,7 +10,9 @@ var _reactNative = require("react-native");
10
10
  var _sharedUi = require("@buoy-gg/shared-ui");
11
11
  var _agentCore = require("@buoy-gg/agent-core");
12
12
  var _askBuoyStore = require("./askBuoyStore");
13
+ var _resetConversation = require("./resetConversation");
13
14
  var _transcriptPersistence = require("./transcriptPersistence");
15
+ var _useAskBuoySettings = require("./useAskBuoySettings");
14
16
  /**
15
17
  * Wire the sheet to the agent.
16
18
  *
@@ -28,6 +30,59 @@ var _transcriptPersistence = require("./transcriptPersistence");
28
30
 
29
31
  const isRelease = typeof __DEV__ !== "undefined" && !__DEV__;
30
32
 
33
+ /**
34
+ * What this device can dispatch, right now.
35
+ *
36
+ * `getSnapshot` is folded in because half of Buoy's read surface is not an
37
+ * action at all — console entries, network events, routes and env live only in
38
+ * the adapter's snapshot. Without it the model is offered a console tool whose
39
+ * sole action wipes the logs, and no way to read them.
40
+ *
41
+ * READ FRESH, never cached. Packages register over the first frames, and some
42
+ * only once the thing they wrap exists — route-events publishes its actions
43
+ * when the navigation container is up, long after this hook first runs. A
44
+ * snapshot taken at mount froze that: the agent was handed a route tool that
45
+ * could only `getSnapshot`, so asked to navigate it guessed three tool names
46
+ * that do not exist, spent 41 seconds, and told the user this build cannot
47
+ * move between screens. It can.
48
+ */
49
+ /**
50
+ * The question a block asked, but ONLY when the model can no longer remember
51
+ * asking it — i.e. the bubble came back from disk. In a live conversation the
52
+ * model has the question in its own history and repeating it would put the
53
+ * words in the user's mouth twice.
54
+ *
55
+ * The wording field differs by block kind: `question` on choice and
56
+ * multiSelect, `label` on input / select / slider / dateTime, `title` on
57
+ * confirm and form.
58
+ */
59
+ function questionBehind(blockId) {
60
+ for (const m of _askBuoyStore.askBuoyStore.getState().messages) {
61
+ if (!m.restored) continue;
62
+ for (const placed of m.blocks) {
63
+ const b = placed.block;
64
+ if (b?.id !== blockId) continue;
65
+ const asked = b.question ?? b.label ?? b.title;
66
+ return typeof asked === "string" && asked.trim() ? asked.trim() : undefined;
67
+ }
68
+ }
69
+ return undefined;
70
+ }
71
+ function readAvailableActions() {
72
+ try {
73
+ const actions = (0, _sharedUi.listToolActions)();
74
+ for (const toolId of (0, _sharedUi.listSnapshotToolIds)()) {
75
+ if (!actions[toolId]) actions[toolId] = [];
76
+ if (!actions[toolId].includes(_agentCore.SNAPSHOT_ACTION)) {
77
+ actions[toolId] = [_agentCore.SNAPSHOT_ACTION, ...actions[toolId]];
78
+ }
79
+ }
80
+ return actions;
81
+ } catch {
82
+ return {};
83
+ }
84
+ }
85
+
31
86
  /** Long enough to coalesce a streaming answer's deltas, short enough to beat a crash. */
32
87
  const SAVE_DEBOUNCE_MS = 600;
33
88
  function useAskBuoyState() {
@@ -50,27 +105,53 @@ function useAskBuoy(config) {
50
105
  * but it puts the chat on disk, so a host handling regulated data can say no.
51
106
  */
52
107
  const persist = config?.persistTranscript !== false;
108
+ /**
109
+ * The device's "don't ask me" toggle, read here rather than only in the
110
+ * settings view so it is loaded off disk before the first turn — a
111
+ * preference that only took effect once you had opened Settings would ask
112
+ * once, every launch, which is the thing it exists to stop.
113
+ */
114
+ const {
115
+ bypassApprovals,
116
+ readOnly
117
+ } = (0, _useAskBuoySettings.useAskBuoySettings)();
118
+ // Through refs where the session is BUILT: the flags are not session
119
+ // identity, and putting them in that effect's deps would rebuild the
120
+ // conversation on a toggle. The effects below push changes instead.
121
+ const bypassRef = (0, _react.useRef)(bypassApprovals);
122
+ bypassRef.current = bypassApprovals;
123
+ const readOnlyRef = (0, _react.useRef)(readOnly);
124
+ readOnlyRef.current = readOnly;
53
125
 
54
- // Recomputed each render: the set of dispatchable tools is not a constant.
55
- //
56
- // `getSnapshot` is folded in here because half of Buoy's read surface is not
57
- // an action at all — console entries, network events, routes and env live
58
- // only in the adapter's snapshot. Without this the model is offered a
59
- // console tool whose sole action wipes the logs, and no way to read them.
60
- const availableActions = (0, _react.useMemo)(() => {
61
- try {
62
- const actions = (0, _sharedUi.listToolActions)();
63
- for (const toolId of (0, _sharedUi.listSnapshotToolIds)()) {
64
- if (!actions[toolId]) actions[toolId] = [];
65
- if (!actions[toolId].includes(_agentCore.SNAPSHOT_ACTION)) {
66
- actions[toolId] = [_agentCore.SNAPSHOT_ACTION, ...actions[toolId]];
67
- }
68
- }
69
- return actions;
70
- } catch {
71
- return {};
72
- }
126
+ /**
127
+ * The policy a human-initiated dispatch runs under — block buttons and a
128
+ * restored approval. The session applies the device toggles itself; these
129
+ * two paths take `config.policy` directly, so without this the Read only
130
+ * toggle governed the model's calls and not the buttons the model drew.
131
+ * App OR device: the toggle narrows, never widens.
132
+ */
133
+ const effectivePolicy = (0, _react.useCallback)(() => readOnlyRef.current ? {
134
+ ...(config?.policy ?? {}),
135
+ readOnly: true
136
+ } : config?.policy ?? {}, [config]);
137
+
138
+ /**
139
+ * Re-read once the registry says it is up. This is what the surrounding code
140
+ * has always assumed happens — the session effect's note about `toolKey`
141
+ * changing "a frame or two after open" was describing a recomputation that,
142
+ * with an empty dependency list, never actually ran.
143
+ */
144
+ const [registryTick, setRegistryTick] = (0, _react.useState)(0);
145
+ (0, _react.useEffect)(() => {
146
+ let cancelled = false;
147
+ void (0, _sharedUi.waitForToolRegistry)().then(() => {
148
+ if (!cancelled) setRegistryTick(n => n + 1);
149
+ });
150
+ return () => {
151
+ cancelled = true;
152
+ };
73
153
  }, []);
154
+ const availableActions = (0, _react.useMemo)(() => readAvailableActions(), [registryTick]);
74
155
  const toolKey = Object.keys(availableActions).sort().join(",");
75
156
  (0, _react.useEffect)(() => {
76
157
  _askBuoyStore.askBuoyStore.setConfigured(configured);
@@ -121,6 +202,8 @@ function useAskBuoy(config) {
121
202
  if (held && held.signature === signature) {
122
203
  sessionRef.current = held.session;
123
204
  held.session.setAvailableActions(availableActions);
205
+ held.session.setApprovalBypass(bypassRef.current);
206
+ held.session.setReadOnly(readOnlyRef.current);
124
207
  _askBuoyStore.askBuoyStore.setLedger(held.session.ledger);
125
208
  return;
126
209
  }
@@ -148,6 +231,8 @@ function useAskBuoy(config) {
148
231
  requestApproval: input => _askBuoyStore.askBuoyStore.askApproval(input)
149
232
  });
150
233
  sessionRef.current = session;
234
+ session.setApprovalBypass(bypassRef.current);
235
+ session.setReadOnly(readOnlyRef.current);
151
236
  _askBuoyStore.askBuoyStore.holdSession(session, signature);
152
237
  _askBuoyStore.askBuoyStore.setLedger(session.ledger);
153
238
 
@@ -192,9 +277,17 @@ function useAskBuoy(config) {
192
277
  const hydrated = _askBuoyStore.askBuoyStore.hydrate({
193
278
  messages: saved.messages,
194
279
  answers: saved.answers,
195
- usage: saved.usage
280
+ usage: saved.usage,
281
+ queued: saved.queued
196
282
  });
197
- if (hydrated) sessionRef.current?.restore(saved.history);
283
+ if (!hydrated) return;
284
+ sessionRef.current?.restore(saved.history);
285
+ // The undo bar, back with the transcript that promised it.
286
+ if (saved.ledger?.length) sessionRef.current?.ledger.restore(saved.ledger);
287
+ // A question the user never answered comes back with the conversation.
288
+ // Losing it silently reads as consent they never gave: nothing was
289
+ // tapped, so the change is still waiting as far as they know.
290
+ if (saved.pending) _askBuoyStore.askBuoyStore.restorePending(saved.pending);
198
291
  });
199
292
  }
200
293
  return () => {
@@ -202,6 +295,18 @@ function useAskBuoy(config) {
202
295
  };
203
296
  }, [configured, config, availableActions, toolKey, persist]);
204
297
 
298
+ /**
299
+ * Push a toggle made mid-conversation. Declared after the effect that builds
300
+ * the session, so on mount it lands on a session that already exists, and on
301
+ * a later flip it reaches the held one without disturbing the transcript.
302
+ */
303
+ (0, _react.useEffect)(() => {
304
+ sessionRef.current?.setApprovalBypass(bypassApprovals);
305
+ }, [bypassApprovals]);
306
+ (0, _react.useEffect)(() => {
307
+ sessionRef.current?.setReadOnly(readOnly);
308
+ }, [readOnly]);
309
+
205
310
  /**
206
311
  * Save on change: coalesced while a turn streams, immediate the moment it ends.
207
312
  *
@@ -221,6 +326,14 @@ function useAskBuoy(config) {
221
326
  const answers = state.answers;
222
327
  const usage = state.usage;
223
328
  const busy = state.busy;
329
+ /**
330
+ * In the deps because an approval is the one thing that changes nothing
331
+ * else. `approval-required` adds no bubble and no tool row — the engine
332
+ * yields it and then parks — so without this the save that carries the card
333
+ * to disk never fires, and the reload it is meant to survive loses it.
334
+ */
335
+ const pending = state.pending;
336
+ const queued = state.queued;
224
337
  (0, _react.useEffect)(() => {
225
338
  if (!persist) return;
226
339
  if (messages.length === 0) return;
@@ -229,7 +342,10 @@ function useAskBuoy(config) {
229
342
  messages,
230
343
  history: sessionRef.current?.messages ?? [],
231
344
  answers,
232
- usage
345
+ usage,
346
+ pending,
347
+ ledger: _askBuoyStore.askBuoyStore.getLedger()?.list(),
348
+ queued
233
349
  }));
234
350
  };
235
351
  if (!busy) {
@@ -238,7 +354,7 @@ function useAskBuoy(config) {
238
354
  }
239
355
  const timer = setTimeout(write, SAVE_DEBOUNCE_MS);
240
356
  return () => clearTimeout(timer);
241
- }, [persist, busy, messages, answers, usage]);
357
+ }, [persist, busy, messages, answers, usage, pending, queued]);
242
358
 
243
359
  /** Stream one turn into a fresh assistant bubble. Callers set up the user side. */
244
360
  const runTurn = (0, _react.useCallback)(text => {
@@ -248,6 +364,11 @@ function useAskBuoy(config) {
248
364
  const messageId = _askBuoyStore.askBuoyStore.startAssistant();
249
365
  const controller = new AbortController();
250
366
  abortRef.current = controller;
367
+
368
+ // The truth about this device, re-read at the top of every turn. A tool
369
+ // that registered since the sheet opened is dispatchable NOW, and the
370
+ // model is only offered what this list says it has.
371
+ session.setAvailableActions(readAvailableActions());
251
372
  const onEvent = configRef.current?.onEvent;
252
373
  void (async () => {
253
374
  try {
@@ -262,11 +383,22 @@ function useAskBuoy(config) {
262
383
  }
263
384
  }
264
385
  } catch (err) {
265
- _askBuoyStore.askBuoyStore.applyEvent(messageId, {
266
- type: "error",
267
- message: err instanceof Error ? err.message : "Something went wrong talking to your AI endpoint."
268
- });
386
+ // Stop is not a failure. The abort comes back as a cancelled fetch,
387
+ // and reporting that as an error told the user "couldn't reach your AI
388
+ // endpoint, check the connection" about the thing they had just asked
389
+ // for — with `FetchRequestCanceledException` printed underneath.
390
+ if (!controller.signal.aborted) {
391
+ _askBuoyStore.askBuoyStore.applyEvent(messageId, {
392
+ type: "error",
393
+ message: err instanceof Error ? err.message : "Something went wrong talking to your AI endpoint."
394
+ });
395
+ }
269
396
  } finally {
397
+ // Marked HERE, not only in the catch. The engine now reads the abort
398
+ // between calls and returns cleanly, so most stops never throw — and
399
+ // a turn that ended because the user pressed Stop must say so either
400
+ // way, or the bubble just trails off as if the model ran out of words.
401
+ if (controller.signal.aborted) _askBuoyStore.askBuoyStore.markStopped(messageId);
270
402
  _askBuoyStore.askBuoyStore.finishAssistant(messageId);
271
403
  abortRef.current = null;
272
404
  }
@@ -276,10 +408,12 @@ function useAskBuoy(config) {
276
408
  const trimmed = text.trim();
277
409
  if (!sessionRef.current || !trimmed) return;
278
410
 
279
- // Typed mid-turn: park it. The composer already cleared the field, and
280
- // silently dropping the words was the worst of all outcomes.
411
+ // Typed mid-turn: park it behind whatever is already parked. The
412
+ // composer already cleared the field, and silently dropping the words
413
+ // was the worst of all outcomes — the single slot this replaced did
414
+ // exactly that to every message but the last.
281
415
  if (_askBuoyStore.askBuoyStore.getState().busy) {
282
- _askBuoyStore.askBuoyStore.setQueued(trimmed);
416
+ _askBuoyStore.askBuoyStore.enqueue(trimmed);
283
417
  return;
284
418
  }
285
419
 
@@ -302,43 +436,127 @@ function useAskBuoy(config) {
302
436
  if (busy || !sessionRef.current) return;
303
437
  const lastUser = [...messages].reverse().find(m => m.role === "user");
304
438
  if (!lastUser) return;
305
- // Replace the failed bubble rather than stacking a second one under it.
306
- const last = messages[messages.length - 1];
307
- if (last && last.role === "assistant" && last.error) _askBuoyStore.askBuoyStore.removeMessage(last.id);
439
+ // The failed bubble is kept — see the note on `retry` in the interface.
308
440
  runTurn(lastUser.text);
309
441
  }, [runTurn]);
310
442
  const stop = (0, _react.useCallback)(() => {
443
+ _askBuoyStore.askBuoyStore.requestStop();
311
444
  // A pending approval parks an unresolved promise inside the engine; the
312
- // abort signal is only read between steps, so Stop must also answer the
445
+ // abort signal is only read between calls, so Stop must also answer the
313
446
  // approval (as declined) or the generator hangs forever.
314
447
  if (_askBuoyStore.askBuoyStore.getState().pending) _askBuoyStore.askBuoyStore.answerApproval(false);
448
+ // Parked messages stay parked. The queue holds after a stop (see
449
+ // `queuePauseReason`), so ending the turn no longer flushes them — and
450
+ // they are not dumped into the composer either: three 4,000-character
451
+ // requests concatenated into one input lose their boundaries.
315
452
  abortRef.current?.abort();
316
453
  abortRef.current = null;
317
454
  }, []);
318
455
 
319
- // Flush the parked message the moment the turn ends.
320
- const queued = state.queued;
456
+ /**
457
+ * Deliver the next parked message — only when the chat is genuinely idle.
458
+ *
459
+ * `turnPhaseOf` + `queuePauseReason` decide, not `!busy`: the old check
460
+ * fired after an error (into the same dead connection), after Stop, and into
461
+ * an open Ask block as the answer to a question. See the store for the
462
+ * rules; this effect just obeys them.
463
+ */
321
464
  (0, _react.useEffect)(() => {
322
- if (!state.busy && queued) {
323
- _askBuoyStore.askBuoyStore.setQueued(null);
324
- send(queued);
325
- }
326
- }, [state.busy, queued, send]);
465
+ if (state.queued.length === 0) return;
466
+ if ((0, _askBuoyStore.turnPhaseOf)(state) !== "idle") return;
467
+ if ((0, _askBuoyStore.queuePauseReason)(state) !== null) return;
468
+ const next = _askBuoyStore.askBuoyStore.shiftQueued();
469
+ if (next) send(next.text);
470
+ }, [state, send]);
471
+ const editQueued = (0, _react.useCallback)(id => _askBuoyStore.askBuoyStore.takeQueuedToDraft(id), []);
472
+ const removeQueued = (0, _react.useCallback)(id => _askBuoyStore.askBuoyStore.removeQueued(id), []);
327
473
  const reset = (0, _react.useCallback)(() => {
328
474
  abortRef.current?.abort();
329
- sessionRef.current?.reset();
330
- _askBuoyStore.askBuoyStore.reset();
475
+ abortRef.current = null;
331
476
  // "New conversation" means gone, not hidden. Leaving the last chat on disk
332
477
  // after the user asked for a clean one is the opposite of what they said.
333
- void (0, _transcriptPersistence.clearTranscript)();
478
+ (0, _resetConversation.clearConversation)();
334
479
  }, []);
480
+ const undoThenReset = (0, _react.useCallback)(() => (0, _resetConversation.resetConversation)({
481
+ dispatch: _sharedUi.dispatchToolAction,
482
+ undoFirst: true
483
+ }), []);
484
+
485
+ /**
486
+ * Run a call whose approval outlived its turn.
487
+ *
488
+ * Through `runGatedAction` — the same gate a block button uses, where the
489
+ * human's tap IS the approval — rather than `dispatchToolAction` raw, so the
490
+ * deny list, read-only mode, the release refusals and the effect ledger all
491
+ * still apply to a change made this way. Undo works on it afterwards for
492
+ * exactly the same reason.
493
+ */
494
+ const applyRestoredApproval = (0, _react.useCallback)(async pending => {
495
+ const ledger = _askBuoyStore.askBuoyStore.getLedger();
496
+ if (!ledger) {
497
+ _askBuoyStore.askBuoyStore.setNotice(`${pending.label} couldn't run — no active Ask Buoy session.`);
498
+ return;
499
+ }
500
+ const catalog = config?.tools?.length ? [..._agentCore.CATALOG, ...config.tools] : undefined;
501
+ // Freshness before action. The card was asked in a run of the app that
502
+ // no longer exists; if what it would overwrite has moved since, writing
503
+ // the saved params is a change nobody approved. Re-read, compare, refuse.
504
+ if (pending.targetDigest) {
505
+ const now = await (0, _agentCore.readTargetDigest)({
506
+ toolId: pending.toolId,
507
+ action: pending.action,
508
+ params: pending.params ?? {},
509
+ dispatch: _sharedUi.dispatchToolAction,
510
+ catalog
511
+ });
512
+ if (now !== undefined && now !== pending.targetDigest) {
513
+ _askBuoyStore.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.`);
514
+ return;
515
+ }
516
+ }
517
+ const outcome = await (0, _agentCore.runGatedAction)({
518
+ toolId: pending.toolId,
519
+ action: pending.action,
520
+ params: pending.params ?? {},
521
+ dispatch: _sharedUi.dispatchToolAction,
522
+ ledger,
523
+ policy: effectivePolicy(),
524
+ isRelease,
525
+ catalog
526
+ });
527
+ if (outcome.ok) {
528
+ _askBuoyStore.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.`);
529
+ } else {
530
+ _askBuoyStore.askBuoyStore.setNotice(`${pending.label} failed — ${outcome.error}`);
531
+ }
532
+ }, [config, effectivePolicy]);
335
533
  const approve = (0, _react.useCallback)(approved => {
534
+ const pending = _askBuoyStore.askBuoyStore.getState().pending;
535
+ // Clear the card first either way: the tap is answered, and the dispatch
536
+ // below is slow enough to leave it sitting there looking unanswered.
336
537
  _askBuoyStore.askBuoyStore.answerApproval(approved);
337
- }, []);
538
+ // A live card resolves the promise the engine is parked on, and the turn
539
+ // carries on from there. A RESTORED one has no turn behind it — that
540
+ // generator died with the process — so Allow has to run the call itself.
541
+ if (!pending?.restored) return;
542
+ if (!approved) {
543
+ _askBuoyStore.askBuoyStore.addNote(`Skipped “${pending.label}”. Nothing was changed.`);
544
+ return;
545
+ }
546
+ void applyRestoredApproval(pending);
547
+ }, [applyRestoredApproval]);
338
548
  const answer = (0, _react.useCallback)(a => {
339
549
  _askBuoyStore.askBuoyStore.recordAnswer(a);
340
550
  // Plain words to the model, never JSON: "Business checkout", "Yes, go ahead."
341
- send((0, _agentCore.answerToText)(a));
551
+ //
552
+ // Unless the question came back from disk. A restored history is rewound
553
+ // to the last COMPLETE round, and an Ask block ends its turn with a
554
+ // `buoy_ui` call — so the turn that asked is always rewound out of the
555
+ // model's memory while its buttons stay tappable. A bare "Quantity" then
556
+ // arrives with nothing behind it, and the model answers "that could mean
557
+ // a couple of different things". Carry the question with the answer.
558
+ const asked = questionBehind(a.blockId);
559
+ send(asked ? `${asked} — ${(0, _agentCore.answerToText)(a)}` : (0, _agentCore.answerToText)(a));
342
560
  }, [send]);
343
561
 
344
562
  /**
@@ -371,7 +589,7 @@ function useAskBuoy(config) {
371
589
  params: action.dispatch.params ?? {},
372
590
  dispatch: _sharedUi.dispatchToolAction,
373
591
  ledger,
374
- policy: config?.policy ?? {},
592
+ policy: effectivePolicy(),
375
593
  isRelease,
376
594
  // Same merged catalog the session offers, so a button on a custom
377
595
  // tool's block is not refused as unknown.
@@ -383,18 +601,22 @@ function useAskBuoy(config) {
383
601
  _askBuoyStore.askBuoyStore.setActionState(key, "failed");
384
602
  _askBuoyStore.askBuoyStore.setNotice(`${action.label} failed — ${outcome.error}`);
385
603
  }
386
- }, [send, config]);
604
+ }, [send, config, effectivePolicy]);
387
605
  return {
388
606
  state,
389
607
  send,
390
608
  stop,
391
609
  reset,
610
+ undoThenReset,
392
611
  approve,
393
612
  retry,
394
613
  answer,
395
614
  runAction,
615
+ editQueued,
616
+ removeQueued,
396
617
  configured,
397
- toolCount: Object.keys(availableActions).length
618
+ toolCount: Object.keys(availableActions).length,
619
+ availableToolIds: Object.keys(availableActions)
398
620
  };
399
621
  }
400
622
  //# sourceMappingURL=useAskBuoy.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_sharedUi","_agentCore","_askBuoyStore","_transcriptPersistence","isRelease","__DEV__","SAVE_DEBOUNCE_MS","useAskBuoyState","useSyncExternalStore","askBuoyStore","subscribe","getState","useAskBuoy","config","state","sessionRef","useRef","restoredRef","abortRef","configRef","current","configured","endpoint","model","persist","persistTranscript","availableActions","useMemo","actions","listToolActions","toolId","listSnapshotToolIds","includes","SNAPSHOT_ACTION","toolKey","Object","keys","sort","join","useEffect","setConfigured","setMeta","protocol","undefined","appName","platform","Platform","OS","build","setNotice","apiKey","test","signature","held","getHeldSession","session","setAvailableActions","setLedger","ledger","createAskBuoySession","headers","maxTokens","anthropicVersion","requestOverrides","catalog","tools","length","CATALOG","dispatch","dispatchToolAction","readSnapshot","readToolSnapshot","policy","context","requestApproval","input","askApproval","holdSession","cancelled","waitForToolRegistry","then","ready","prime","readTranscript","saved","hydrated","hydrate","messages","answers","usage","restore","history","busy","write","writeTranscript","buildPayload","timer","setTimeout","clearTimeout","runTurn","useCallback","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","clearTranscript","approve","approved","answer","a","answerToText","runAction","action","key","label","getLedger","setActionState","outcome","runGatedAction","params","ok","toolCount"],"sourceRoot":"../../../src","sources":["store/useAskBuoy.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_sharedUi","_agentCore","_askBuoyStore","_resetConversation","_transcriptPersistence","_useAskBuoySettings","isRelease","__DEV__","questionBehind","blockId","m","askBuoyStore","getState","messages","restored","placed","blocks","b","block","id","asked","question","label","title","trim","undefined","readAvailableActions","actions","listToolActions","toolId","listSnapshotToolIds","includes","SNAPSHOT_ACTION","SAVE_DEBOUNCE_MS","useAskBuoyState","useSyncExternalStore","subscribe","useAskBuoy","config","state","sessionRef","useRef","restoredRef","abortRef","configRef","current","configured","endpoint","model","persist","persistTranscript","bypassApprovals","readOnly","useAskBuoySettings","bypassRef","readOnlyRef","effectivePolicy","useCallback","policy","registryTick","setRegistryTick","useState","useEffect","cancelled","waitForToolRegistry","then","n","availableActions","useMemo","toolKey","Object","keys","sort","join","setConfigured","setMeta","protocol","appName","platform","Platform","OS","build","setNotice","apiKey","test","signature","held","getHeldSession","session","setAvailableActions","setApprovalBypass","setReadOnly","setLedger","ledger","createAskBuoySession","headers","maxTokens","anthropicVersion","requestOverrides","catalog","tools","length","CATALOG","dispatch","dispatchToolAction","readSnapshot","readToolSnapshot","context","requestApproval","input","askApproval","holdSession","ready","prime","readTranscript","saved","hydrated","hydrate","answers","usage","queued","restore","history","pending","restorePending","busy","write","writeTranscript","buildPayload","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","turnPhaseOf","queuePauseReason","next","shiftQueued","editQueued","takeQueuedToDraft","removeQueued","reset","clearConversation","undoThenReset","resetConversation","undoFirst","applyRestoredApproval","targetDigest","now","readTargetDigest","action","params","addNote","outcome","runGatedAction","ok","error","approve","approved","answer","a","answerToText","runAction","key","setActionState","toolCount","availableToolIds"],"sourceRoot":"../../../src","sources":["store/useAskBuoy.ts"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.askBuoySyncAdapter = exports.ASK_BUOY_ADAPTER_VERSION = void 0;
7
+ var _resetConversation = require("../store/resetConversation");
7
8
  var _wire = require("./wire");
8
9
  var _agentCore = require("@buoy-gg/agent-core");
9
10
  var _askBuoyStore = require("../store/askBuoyStore");
@@ -107,11 +108,31 @@ const askBuoySyncAdapter = exports.askBuoySyncAdapter = {
107
108
  ...outcome
108
109
  };
109
110
  },
110
- /** Clear the transcript and the ledger. Does not undo anything. */
111
- reset: () => {
112
- _askBuoyStore.askBuoyStore.reset();
111
+ /**
112
+ * Undo what can be undone, then clear the transcript and the ledger.
113
+ *
114
+ * The same path as the sheet's "New conversation" (resetConversation.ts).
115
+ * This action used to clear unconditionally — no question, no undo — so a
116
+ * desktop click could drop the only undo record for changes still live on
117
+ * the tester's phone. Now it refuses to clear when a revert fails and says
118
+ * what is still applied; the dashboard decides whether to clear anyway
119
+ * by calling `undoAll` first or accepting the kept conversation.
120
+ */
121
+ reset: async () => {
122
+ const outcome = await (0, _resetConversation.resetConversation)({
123
+ dispatch: _wire.dispatchToolAction,
124
+ undoFirst: true
125
+ });
126
+ if (!outcome.cleared) {
127
+ return {
128
+ ok: false,
129
+ error: `Couldn't undo ${outcome.failed.length} change${outcome.failed.length === 1 ? "" : "s"} — conversation kept.`,
130
+ failed: outcome.failed
131
+ };
132
+ }
113
133
  return {
114
- ok: true
134
+ ok: true,
135
+ reverted: outcome.reverted
115
136
  };
116
137
  }
117
138
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_wire","require","_agentCore","_askBuoyStore","ASK_BUOY_ADAPTER_VERSION","exports","askBuoySyncAdapter","version","getSnapshot","state","askBuoyStore","getState","ledger","getLedger","entries","list","outstanding","filter","e","undoneAt","busy","configured","notice","messageCount","messages","length","map","m","id","role","text","redactForWire","streaming","toolCalls","c","toolId","action","status","usage","pendingApproval","pending","label","changes","reversible","isReversible","effect","permanent","kind","transients","items","subscribe","onChange","offStore","offLedger","actions","listChanges","at","undoAll","ok","error","outcome","revertAll","dispatchToolAction","reset"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_resetConversation","require","_wire","_agentCore","_askBuoyStore","ASK_BUOY_ADAPTER_VERSION","exports","askBuoySyncAdapter","version","getSnapshot","state","askBuoyStore","getState","ledger","getLedger","entries","list","outstanding","filter","e","undoneAt","busy","configured","notice","messageCount","messages","length","map","m","id","role","text","redactForWire","streaming","toolCalls","c","toolId","action","status","usage","pendingApproval","pending","label","changes","reversible","isReversible","effect","permanent","kind","transients","items","subscribe","onChange","offStore","offLedger","actions","listChanges","at","undoAll","ok","error","outcome","revertAll","dispatchToolAction","reset","resetConversation","dispatch","undoFirst","cleared","failed","reverted"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.ts"],"mappings":";;;;;;AAkBA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMO,MAAMI,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG,CAAC;AAElC,MAAME,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,GAAG;EAChCC,OAAO,EAAEH,wBAAwB;EAEjCI,WAAWA,CAAA,EAAG;IACZ,MAAMC,KAAK,GAAGC,0BAAY,CAACC,QAAQ,CAAC,CAAC;IACrC,MAAMC,MAAM,GAAGF,0BAAY,CAACG,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;MACLZ,OAAO,EAAEH,wBAAwB;MACjCgB,IAAI,EAAEX,KAAK,CAACW,IAAI;MAChBC,UAAU,EAAEZ,KAAK,CAACY,UAAU;MAC5BC,MAAM,EAAEb,KAAK,CAACa,MAAM;MACpBC,YAAY,EAAEd,KAAK,CAACe,QAAQ,CAACC,MAAM;MACnC;MACAD,QAAQ,EAAEf,KAAK,CAACe,QAAQ,CAACE,GAAG,CAAEC,CAAC,KAAM;QACnCC,EAAE,EAAED,CAAC,CAACC,EAAE;QACRC,IAAI,EAAEF,CAAC,CAACE,IAAI;QACZC,IAAI,EAAE,IAAAC,mBAAa,EAACJ,CAAC,CAACG,IAAI,CAAC;QAC3BE,SAAS,EAAE,CAAC,CAACL,CAAC,CAACK,SAAS;QACxBC,SAAS,EAAEN,CAAC,CAACM,SAAS,CAACP,GAAG,CAAEQ,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,EAAE7B,KAAK,CAAC6B,KAAK;MAClBC,eAAe,EAAE9B,KAAK,CAAC+B,OAAO,GAC1B;QACEL,MAAM,EAAE1B,KAAK,CAAC+B,OAAO,CAACL,MAAM;QAC5BC,MAAM,EAAE3B,KAAK,CAAC+B,OAAO,CAACJ,MAAM;QAC5BK,KAAK,EAAEhC,KAAK,CAAC+B,OAAO,CAACC;MACvB,CAAC,GACD,IAAI;MACRC,OAAO,EAAE;QACP;QACA;QACAC,UAAU,EAAE3B,WAAW,CAACC,MAAM,CAAEC,CAAC,IAAK,IAAA0B,uBAAY,EAAC1B,CAAC,CAAC2B,MAAM,CAAC,CAAC,CAACpB,MAAM;QACpEqB,SAAS,EAAE9B,WAAW,CAACC,MAAM,CAC1BC,CAAC,IAAKA,CAAC,CAAC2B,MAAM,CAACE,IAAI,KAAK,WAAW,IAAI,CAAC,IAAAH,uBAAY,EAAC1B,CAAC,CAAC2B,MAAM,CAChE,CAAC,CAACpB,MAAM;QACRuB,UAAU,EAAEhC,WAAW,CAACC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC2B,MAAM,CAACE,IAAI,KAAK,WAAW,CAAC,CAACtB,MAAM;QAC3EwB,KAAK,EAAEjC,WAAW,CAACU,GAAG,CAAER,CAAC,KAAM;UAAE6B,IAAI,EAAE7B,CAAC,CAAC2B,MAAM,CAACE,IAAI;UAAEN,KAAK,EAAEvB,CAAC,CAAC2B,MAAM,CAACJ;QAAM,CAAC,CAAC;MAChF;IACF,CAAC;EACH,CAAC;EAEDS,SAASA,CAACC,QAAoB,EAAE;IAC9B,MAAMC,QAAQ,GAAG1C,0BAAY,CAACwC,SAAS,CAACC,QAAQ,CAAC;IACjD,MAAME,SAAS,GAAG3C,0BAAY,CAACG,SAAS,CAAC,CAAC,EAAEqC,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,MAAMzC,OAAO,GAAGJ,0BAAY,CAACG,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;QACR4B,EAAE,EAAEtC,CAAC,CAACsC,EAAE;QACRrB,MAAM,EAAEjB,CAAC,CAACiB,MAAM;QAChBC,MAAM,EAAElB,CAAC,CAACkB,MAAM;QAChBW,IAAI,EAAE7B,CAAC,CAAC2B,MAAM,CAACE,IAAI;QACnBN,KAAK,EAAEvB,CAAC,CAAC2B,MAAM,CAACJ,KAAK;QACrBE,UAAU,EAAE,IAAAC,uBAAY,EAAC1B,CAAC,CAAC2B,MAAM;MACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;IACAY,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAM7C,MAAM,GAAGF,0BAAY,CAACG,SAAS,CAAC,CAAC;MACvC,IAAI,CAACD,MAAM,EAAE,OAAO;QAAE8C,EAAE,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAsC,CAAC;MAC/E,MAAMC,OAAO,GAAG,MAAMhD,MAAM,CAACiD,SAAS,CAACC,wBAAkB,CAAC;MAC1D,OAAO;QAAEJ,EAAE,EAAE,IAAI;QAAE,GAAGE;MAAQ,CAAC;IACjC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIG,KAAK,EAAE,MAAAA,CAAA,KAAY;MACjB,MAAMH,OAAO,GAAG,MAAM,IAAAI,oCAAiB,EAAC;QAAEC,QAAQ,EAAEH,wBAAkB;QAAEI,SAAS,EAAE;MAAK,CAAC,CAAC;MAC1F,IAAI,CAACN,OAAO,CAACO,OAAO,EAAE;QACpB,OAAO;UACLT,EAAE,EAAE,KAAK;UACTC,KAAK,EAAE,iBAAiBC,OAAO,CAACQ,MAAM,CAAC3C,MAAM,UAAUmC,OAAO,CAACQ,MAAM,CAAC3C,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB;UACpH2C,MAAM,EAAER,OAAO,CAACQ;QAClB,CAAC;MACH;MACA,OAAO;QAAEV,EAAE,EAAE,IAAI;QAAEW,QAAQ,EAAET,OAAO,CAACS;MAAS,CAAC;IACjD;EACF;AACF,CAAC","ignoreList":[]}
@@ -48,6 +48,17 @@ const boundaryStyles = StyleSheet.create({
48
48
  paddingVertical: 6
49
49
  }
50
50
  });
51
+
52
+ /**
53
+ * The recursion seam for blocks that contain blocks (Tabs).
54
+ *
55
+ * Module scope, so it is one stable function rather than a new closure per
56
+ * render, and defined HERE so ExtraBlocks never has to import this file back —
57
+ * see the note on `Tabs`.
58
+ */
59
+ const renderNested = block => /*#__PURE__*/_jsx(BlockRenderer, {
60
+ block: block
61
+ });
51
62
  export function BlockRenderer({
52
63
  block
53
64
  }) {
@@ -188,7 +199,8 @@ function BlockRendererInner({
188
199
  });
189
200
  case "tabs":
190
201
  return /*#__PURE__*/_jsx(Tabs, {
191
- block: block
202
+ block: block,
203
+ renderNested: renderNested
192
204
  });
193
205
  case "timeline":
194
206
  return /*#__PURE__*/_jsx(Timeline, {