@buoy-gg/ask-buoy 7.0.33 → 7.0.35

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 (157) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/blocks/DataBlocks.js +217 -74
  3. package/lib/commonjs/blocks/DataBlocks.js.map +1 -1
  4. package/lib/commonjs/blocks/ExtraBlocks.js +53 -20
  5. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -1
  6. package/lib/commonjs/blocks/MediaBlocks.js +2 -2
  7. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -1
  8. package/lib/commonjs/blocks/ReceiptBlocks.js +35 -45
  9. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -1
  10. package/lib/commonjs/blocks/listRow.test.js +55 -0
  11. package/lib/commonjs/blocks/listRow.test.js.map +1 -0
  12. package/lib/commonjs/blocks/pageState.js +34 -0
  13. package/lib/commonjs/blocks/pageState.js.map +1 -0
  14. package/lib/commonjs/blocks/pageState.test.js +57 -0
  15. package/lib/commonjs/blocks/pageState.test.js.map +1 -0
  16. package/lib/commonjs/blocks/primitives.js +113 -24
  17. package/lib/commonjs/blocks/primitives.js.map +1 -1
  18. package/lib/commonjs/blocks/primitivesIndex.js +8 -2
  19. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -1
  20. package/lib/commonjs/components/AskBuoyHeader.js +42 -5
  21. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -1
  22. package/lib/commonjs/components/AskBuoyModal.js +51 -20
  23. package/lib/commonjs/components/AskBuoyModal.js.map +1 -1
  24. package/lib/commonjs/components/AskBuoySettings.js +69 -0
  25. package/lib/commonjs/components/AskBuoySettings.js.map +1 -0
  26. package/lib/commonjs/components/MessageList.js +89 -54
  27. package/lib/commonjs/components/MessageList.js.map +1 -1
  28. package/lib/commonjs/components/ThinkingStrip.js +223 -0
  29. package/lib/commonjs/components/ThinkingStrip.js.map +1 -0
  30. package/lib/commonjs/components/useCopyAction.js +50 -0
  31. package/lib/commonjs/components/useCopyAction.js.map +1 -0
  32. package/lib/commonjs/index.js +47 -0
  33. package/lib/commonjs/index.js.map +1 -1
  34. package/lib/commonjs/preset.js +1 -1
  35. package/lib/commonjs/store/askBuoySettings.js +67 -0
  36. package/lib/commonjs/store/askBuoySettings.js.map +1 -0
  37. package/lib/commonjs/store/askBuoyStore.js +97 -11
  38. package/lib/commonjs/store/askBuoyStore.js.map +1 -1
  39. package/lib/commonjs/store/restoredIds.test.js +47 -0
  40. package/lib/commonjs/store/restoredIds.test.js.map +1 -0
  41. package/lib/commonjs/store/traceText.js +81 -0
  42. package/lib/commonjs/store/traceText.js.map +1 -0
  43. package/lib/commonjs/store/traceText.test.js +112 -0
  44. package/lib/commonjs/store/traceText.test.js.map +1 -0
  45. package/lib/commonjs/store/transcriptPersistence.js +208 -0
  46. package/lib/commonjs/store/transcriptPersistence.js.map +1 -0
  47. package/lib/commonjs/store/transcriptPersistence.test.js +185 -0
  48. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -0
  49. package/lib/commonjs/store/useAskBuoy.js +102 -1
  50. package/lib/commonjs/store/useAskBuoy.js.map +1 -1
  51. package/lib/commonjs/store/useAskBuoySettings.js +14 -0
  52. package/lib/commonjs/store/useAskBuoySettings.js.map +1 -0
  53. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +6 -1
  54. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -1
  55. package/lib/module/blocks/DataBlocks.js +217 -75
  56. package/lib/module/blocks/DataBlocks.js.map +1 -1
  57. package/lib/module/blocks/ExtraBlocks.js +55 -22
  58. package/lib/module/blocks/ExtraBlocks.js.map +1 -1
  59. package/lib/module/blocks/MediaBlocks.js +3 -3
  60. package/lib/module/blocks/MediaBlocks.js.map +1 -1
  61. package/lib/module/blocks/ReceiptBlocks.js +37 -47
  62. package/lib/module/blocks/ReceiptBlocks.js.map +1 -1
  63. package/lib/module/blocks/listRow.test.js +56 -0
  64. package/lib/module/blocks/listRow.test.js.map +1 -0
  65. package/lib/module/blocks/pageState.js +30 -0
  66. package/lib/module/blocks/pageState.js.map +1 -0
  67. package/lib/module/blocks/pageState.test.js +56 -0
  68. package/lib/module/blocks/pageState.test.js.map +1 -0
  69. package/lib/module/blocks/primitives.js +112 -24
  70. package/lib/module/blocks/primitives.js.map +1 -1
  71. package/lib/module/blocks/primitivesIndex.js +1 -1
  72. package/lib/module/blocks/primitivesIndex.js.map +1 -1
  73. package/lib/module/components/AskBuoyHeader.js +43 -6
  74. package/lib/module/components/AskBuoyHeader.js.map +1 -1
  75. package/lib/module/components/AskBuoyModal.js +54 -23
  76. package/lib/module/components/AskBuoyModal.js.map +1 -1
  77. package/lib/module/components/AskBuoySettings.js +64 -0
  78. package/lib/module/components/AskBuoySettings.js.map +1 -0
  79. package/lib/module/components/MessageList.js +91 -56
  80. package/lib/module/components/MessageList.js.map +1 -1
  81. package/lib/module/components/ThinkingStrip.js +218 -0
  82. package/lib/module/components/ThinkingStrip.js.map +1 -0
  83. package/lib/module/components/useCopyAction.js +46 -0
  84. package/lib/module/components/useCopyAction.js.map +1 -0
  85. package/lib/module/index.js +5 -0
  86. package/lib/module/index.js.map +1 -1
  87. package/lib/module/preset.js +1 -1
  88. package/lib/module/store/askBuoySettings.js +62 -0
  89. package/lib/module/store/askBuoySettings.js.map +1 -0
  90. package/lib/module/store/askBuoyStore.js +97 -11
  91. package/lib/module/store/askBuoyStore.js.map +1 -1
  92. package/lib/module/store/restoredIds.test.js +46 -0
  93. package/lib/module/store/restoredIds.test.js.map +1 -0
  94. package/lib/module/store/traceText.js +75 -0
  95. package/lib/module/store/traceText.js.map +1 -0
  96. package/lib/module/store/traceText.test.js +111 -0
  97. package/lib/module/store/traceText.test.js.map +1 -0
  98. package/lib/module/store/transcriptPersistence.js +198 -0
  99. package/lib/module/store/transcriptPersistence.js.map +1 -0
  100. package/lib/module/store/transcriptPersistence.test.js +184 -0
  101. package/lib/module/store/transcriptPersistence.test.js.map +1 -0
  102. package/lib/module/store/useAskBuoy.js +102 -1
  103. package/lib/module/store/useAskBuoy.js.map +1 -1
  104. package/lib/module/store/useAskBuoySettings.js +9 -0
  105. package/lib/module/store/useAskBuoySettings.js.map +1 -0
  106. package/lib/module/sync/askBuoySyncAdapter.test.js +6 -1
  107. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -1
  108. package/lib/typescript/blocks/DataBlocks.d.ts +31 -0
  109. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -1
  110. package/lib/typescript/blocks/ExtraBlocks.d.ts +11 -0
  111. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -1
  112. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -1
  113. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -1
  114. package/lib/typescript/blocks/listRow.test.d.ts +2 -0
  115. package/lib/typescript/blocks/listRow.test.d.ts.map +1 -0
  116. package/lib/typescript/blocks/pageState.d.ts +23 -0
  117. package/lib/typescript/blocks/pageState.d.ts.map +1 -0
  118. package/lib/typescript/blocks/pageState.test.d.ts +2 -0
  119. package/lib/typescript/blocks/pageState.test.d.ts.map +1 -0
  120. package/lib/typescript/blocks/primitives.d.ts +39 -9
  121. package/lib/typescript/blocks/primitives.d.ts.map +1 -1
  122. package/lib/typescript/blocks/primitivesIndex.d.ts +2 -1
  123. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -1
  124. package/lib/typescript/components/AskBuoyHeader.d.ts +11 -1
  125. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -1
  126. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -1
  127. package/lib/typescript/components/AskBuoySettings.d.ts +2 -0
  128. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -0
  129. package/lib/typescript/components/MessageList.d.ts +12 -5
  130. package/lib/typescript/components/MessageList.d.ts.map +1 -1
  131. package/lib/typescript/components/ThinkingStrip.d.ts +5 -0
  132. package/lib/typescript/components/ThinkingStrip.d.ts.map +1 -0
  133. package/lib/typescript/components/useCopyAction.d.ts +5 -0
  134. package/lib/typescript/components/useCopyAction.d.ts.map +1 -0
  135. package/lib/typescript/index.d.ts +5 -0
  136. package/lib/typescript/index.d.ts.map +1 -1
  137. package/lib/typescript/preset.d.ts +1 -1
  138. package/lib/typescript/store/askBuoySettings.d.ts +22 -0
  139. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -0
  140. package/lib/typescript/store/askBuoyStore.d.ts +74 -13
  141. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -1
  142. package/lib/typescript/store/restoredIds.test.d.ts +2 -0
  143. package/lib/typescript/store/restoredIds.test.d.ts.map +1 -0
  144. package/lib/typescript/store/traceText.d.ts +33 -0
  145. package/lib/typescript/store/traceText.d.ts.map +1 -0
  146. package/lib/typescript/store/traceText.test.d.ts +2 -0
  147. package/lib/typescript/store/traceText.test.d.ts.map +1 -0
  148. package/lib/typescript/store/transcriptPersistence.d.ts +40 -0
  149. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -0
  150. package/lib/typescript/store/transcriptPersistence.test.d.ts +2 -0
  151. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +1 -0
  152. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -1
  153. package/lib/typescript/store/useAskBuoySettings.d.ts +3 -0
  154. package/lib/typescript/store/useAskBuoySettings.d.ts.map +1 -0
  155. package/lib/typescript/types.d.ts +24 -1
  156. package/lib/typescript/types.d.ts.map +1 -1
  157. package/package.json +8 -8
@@ -19,19 +19,31 @@ import { Platform } from "react-native";
19
19
  import { dispatchToolAction, listSnapshotToolIds, listToolActions, readToolSnapshot, waitForToolRegistry } from "@buoy-gg/shared-ui";
20
20
  import { answerToText, CATALOG, createAskBuoySession, runGatedAction, SNAPSHOT_ACTION } from "@buoy-gg/agent-core";
21
21
  import { askBuoyStore } from "./askBuoyStore";
22
+ import { buildPayload, clearTranscript, readTranscript, writeTranscript } from "./transcriptPersistence";
22
23
  const isRelease = typeof __DEV__ !== "undefined" && !__DEV__;
24
+
25
+ /** Long enough to coalesce a streaming answer's deltas, short enough to beat a crash. */
26
+ const SAVE_DEBOUNCE_MS = 600;
23
27
  export function useAskBuoyState() {
24
28
  return useSyncExternalStore(askBuoyStore.subscribe, askBuoyStore.getState, askBuoyStore.getState);
25
29
  }
26
30
  export function useAskBuoy(config) {
27
31
  const state = useAskBuoyState();
28
32
  const sessionRef = useRef(null);
33
+ /** One restore attempt per mount — see the note at the read. */
34
+ const restoredRef = useRef(false);
29
35
  const abortRef = useRef(null);
30
36
  // Read through a ref where a stable callback needs the LATEST config (the
31
37
  // onEvent tap) without re-creating the callback per render.
32
38
  const configRef = useRef(config);
33
39
  configRef.current = config;
34
40
  const configured = !!config?.endpoint && !!config?.model;
41
+ /**
42
+ * On by default. The conversation surviving a reload is what makes the tool
43
+ * usable while iterating, and it is the only thing that survives a crash —
44
+ * but it puts the chat on disk, so a host handling regulated data can say no.
45
+ */
46
+ const persist = config?.persistTranscript !== false;
35
47
 
36
48
  // Recomputed each render: the set of dispatchable tools is not a constant.
37
49
  //
@@ -56,6 +68,14 @@ export function useAskBuoy(config) {
56
68
  const toolKey = Object.keys(availableActions).sort().join(",");
57
69
  useEffect(() => {
58
70
  askBuoyStore.setConfigured(configured);
71
+ // Stamped on the store so an exported run says what it ran against.
72
+ askBuoyStore.setMeta({
73
+ model: config?.model,
74
+ protocol: config?.protocol ?? (config ? "anthropic" : undefined),
75
+ appName: config?.appName,
76
+ platform: Platform.OS,
77
+ build: isRelease ? "release" : "development"
78
+ });
59
79
  if (!configured || !config) {
60
80
  sessionRef.current = null;
61
81
  askBuoyStore.setNotice("Ask Buoy isn't set up in this app yet. A developer needs to point it at your team's AI endpoint.");
@@ -125,16 +145,94 @@ export function useAskBuoy(config) {
125
145
  askBuoyStore.holdSession(session, signature);
126
146
  askBuoyStore.setLedger(session.ledger);
127
147
 
148
+ /**
149
+ * Bring the last conversation back — both halves of it.
150
+ *
151
+ * The transcript and the model's memory are separate things (the store and
152
+ * the session), and restoring only the first is worse than restoring
153
+ * neither: the user reads a conversation the agent has no recollection of,
154
+ * and "undo that" or "now do the same for Pikachu" lands on an empty
155
+ * history. So the session is restored in the same pass, and only into a
156
+ * session this effect just built.
157
+ */
128
158
  // The registry publishes on mount, a frame or two after first paint. Warm
129
159
  // the grounding once it is there so the first question does not pay for it.
130
160
  let cancelled = false;
131
161
  void waitForToolRegistry().then(ready => {
132
162
  if (ready && !cancelled) void session.prime();
133
163
  });
164
+
165
+ /**
166
+ * NOT gated on `cancelled`, and once per mount.
167
+ *
168
+ * The disk read races the tool registry, and it was losing about half the
169
+ * time. `availableActions` legitimately changes a frame or two after open
170
+ * (see the note above) — that re-runs this effect, whose cleanup sets
171
+ * `cancelled`, and the in-flight restore then threw its result away. The
172
+ * second pass takes the held-session branch and returns early, so nothing
173
+ * ever retried: the conversation was on disk, read correctly, and dropped
174
+ * on the floor. Caught by the e2e, where one test restored and the next
175
+ * did not, with no difference between them.
176
+ *
177
+ * Safe to leave running: `hydrate` refuses if anything has been said since,
178
+ * and `restore` refuses a session that already has history. Resolved
179
+ * against `sessionRef.current` rather than the captured `session` so a
180
+ * genuine reconfiguration mid-read restores into the session in use.
181
+ */
182
+ if (persist && !restoredRef.current) {
183
+ restoredRef.current = true;
184
+ void readTranscript().then(saved => {
185
+ if (!saved) return;
186
+ const hydrated = askBuoyStore.hydrate({
187
+ messages: saved.messages,
188
+ answers: saved.answers,
189
+ usage: saved.usage
190
+ });
191
+ if (hydrated) sessionRef.current?.restore(saved.history);
192
+ });
193
+ }
134
194
  return () => {
135
195
  cancelled = true;
136
196
  };
137
- }, [configured, config, availableActions, toolKey]);
197
+ }, [configured, config, availableActions, toolKey, persist]);
198
+
199
+ /**
200
+ * Save on change: coalesced while a turn streams, immediate the moment it ends.
201
+ *
202
+ * The debounce exists because a streaming answer changes the store on every
203
+ * delta, and writing a whole transcript per token would cost more than the
204
+ * turn does. But applying it to the END of a turn as well left a window
205
+ * where the finished answer was on screen and not yet on disk — a crash or a
206
+ * fast reload inside it lost the whole turn, which is precisely the case
207
+ * this feature exists for. An e2e that relaunched as soon as the answer
208
+ * rendered lost it every time, and that is a real user doing a fast reload,
209
+ * not a harness artefact.
210
+ *
211
+ * Saving still happens DURING a turn as well, which is what lets a bubble
212
+ * the app died in come back marked interrupted rather than blank.
213
+ */
214
+ const messages = state.messages;
215
+ const answers = state.answers;
216
+ const usage = state.usage;
217
+ const busy = state.busy;
218
+ useEffect(() => {
219
+ if (!persist) return;
220
+ if (messages.length === 0) return;
221
+ const write = () => {
222
+ void writeTranscript(buildPayload({
223
+ messages,
224
+ history: sessionRef.current?.messages ?? [],
225
+ answers,
226
+ usage
227
+ }));
228
+ };
229
+ if (!busy) {
230
+ write();
231
+ return;
232
+ }
233
+ const timer = setTimeout(write, SAVE_DEBOUNCE_MS);
234
+ return () => clearTimeout(timer);
235
+ }, [persist, busy, messages, answers, usage]);
138
236
 
139
237
  /** Stream one turn into a fresh assistant bubble. Callers set up the user side. */
140
238
  const runTurn = useCallback(text => {
@@ -224,6 +322,9 @@ export function useAskBuoy(config) {
224
322
  abortRef.current?.abort();
225
323
  sessionRef.current?.reset();
226
324
  askBuoyStore.reset();
325
+ // "New conversation" means gone, not hidden. Leaving the last chat on disk
326
+ // after the user asked for a clean one is the opposite of what they said.
327
+ void clearTranscript();
227
328
  }, []);
228
329
  const approve = useCallback(approved => {
229
330
  askBuoyStore.answerApproval(approved);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useSyncExternalStore","Platform","dispatchToolAction","listSnapshotToolIds","listToolActions","readToolSnapshot","waitForToolRegistry","answerToText","CATALOG","createAskBuoySession","runGatedAction","SNAPSHOT_ACTION","askBuoyStore","isRelease","__DEV__","useAskBuoyState","subscribe","getState","useAskBuoy","config","state","sessionRef","abortRef","configRef","current","configured","endpoint","model","availableActions","actions","toolId","includes","toolKey","Object","keys","sort","join","setConfigured","setNotice","protocol","apiKey","test","signature","held","getHeldSession","session","setAvailableActions","setLedger","ledger","headers","maxTokens","anthropicVersion","requestOverrides","catalog","tools","length","undefined","dispatch","readSnapshot","policy","context","appName","platform","OS","requestApproval","input","askApproval","holdSession","cancelled","then","ready","prime","runTurn","text","beginTurn","messageId","startAssistant","controller","AbortController","onEvent","ev","send","signal","applyEvent","err","type","message","Error","finishAssistant","trimmed","trim","busy","setQueued","awaiting","awaitingBlockId","recordAnswer","blockId","kind","addUser","retry","messages","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","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":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ /** Subscribe the sheet to Ask Buoy's own preferences. */
4
+ import { useSyncExternalStore } from "react";
5
+ import { askBuoySettings } from "./askBuoySettings";
6
+ export function useAskBuoySettings() {
7
+ return useSyncExternalStore(askBuoySettings.subscribe, askBuoySettings.get, askBuoySettings.get);
8
+ }
9
+ //# sourceMappingURL=useAskBuoySettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSyncExternalStore","askBuoySettings","useAskBuoySettings","subscribe","get"],"sourceRoot":"../../../src","sources":["store/useAskBuoySettings.ts"],"mappings":";;AAAA;AACA,SAASA,oBAAoB,QAAQ,OAAO;AAE5C,SAASC,eAAe,QAA8B,mBAAmB;AAEzE,OAAO,SAASC,kBAAkBA,CAAA,EAAoB;EACpD,OAAOF,oBAAoB,CAACC,eAAe,CAACE,SAAS,EAAEF,eAAe,CAACG,GAAG,EAAEH,eAAe,CAACG,GAAG,CAAC;AAClG","ignoreList":[]}
@@ -37,12 +37,17 @@ describe("the wire surface", () => {
37
37
  toolId: "storage",
38
38
  action: "async.getItem",
39
39
  label: "Read session",
40
- description: "Read one AsyncStorage key"
40
+ description: "Read one AsyncStorage key",
41
+ params: {
42
+ key: "session"
43
+ },
44
+ effect: "read"
41
45
  });
42
46
  askBuoyStore.applyEvent(id, {
43
47
  type: "tool-end",
44
48
  id: "c1",
45
49
  ok: true,
50
+ durationMs: 12,
46
51
  summary: "eyJhbGciOiJIUzI1NiJ9.super.secret"
47
52
  });
48
53
  const snap = askBuoySyncAdapter.getSnapshot();
@@ -1 +1 @@
1
- {"version":3,"names":["beforeEach","describe","expect","it","EffectLedger","askBuoySyncAdapter","redactForWire","askBuoyStore","reset","setLedger","actions","Object","keys","not","toContain","sort","toEqual","addUser","id","startAssistant","applyEvent","type","toolId","action","label","description","ok","summary","snap","getSnapshot","call","messages","toolCalls","status","JSON","stringify","delta","ledger","record","kind","key","before","changes","reversible","toBe","permanent","transients","cases","input","text","store","Map","revertAll","_t","params","p","set","value","undefined","get"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.test.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["beforeEach","describe","expect","it","EffectLedger","askBuoySyncAdapter","redactForWire","askBuoyStore","reset","setLedger","actions","Object","keys","not","toContain","sort","toEqual","addUser","id","startAssistant","applyEvent","type","toolId","action","label","description","params","key","effect","ok","durationMs","summary","snap","getSnapshot","call","messages","toolCalls","status","JSON","stringify","delta","ledger","record","kind","before","changes","reversible","toBe","permanent","transients","cases","input","text","store","Map","revertAll","_t","p","set","value","undefined","get"],"sourceRoot":"../../../src","sources":["sync/askBuoySyncAdapter.test.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,32 @@ export declare function Table({ block }: {
5
5
  export declare function KeyValue({ block }: {
6
6
  block: KeyValueBlock;
7
7
  }): import("react").JSX.Element;
8
+ /**
9
+ * Keys carry the index as well as the id.
10
+ *
11
+ * The ids in here come from the app's own data, and app data is not required
12
+ * to be unique — a Poké Mart bag in this repo holds two lines sharing one
13
+ * `lineId`, which is a bug in that app but must not be one in a devtool
14
+ * rendering it. Paging made it visible: the duplicate sat past the initial cap,
15
+ * so React only saw the collision on the first "Show more".
16
+ */
17
+ /**
18
+ * What a tapped list row does.
19
+ *
20
+ * A row can carry a picture and an action, and they want the same gesture. The
21
+ * picture wins the row body — looking at a thing must not fire it — and the
22
+ * action keeps its label as its own control. A row with no picture is
23
+ * unchanged: the whole row runs the action, which is what it did before rows
24
+ * could open.
25
+ */
26
+ export declare function listRowBehaviour(item: Pick<ListBlock["items"][number], "image" | "action">): {
27
+ /** Tapping the row body enlarges the picture. */
28
+ canExpand: boolean;
29
+ /** Tapping the row body runs the action (only when there is no picture). */
30
+ rowRunsAction: boolean;
31
+ /** The action label needs to be its own pressable. */
32
+ actionIsOwnControl: boolean;
33
+ };
8
34
  export declare function List({ block }: {
9
35
  block: ListBlock;
10
36
  }): import("react").JSX.Element;
@@ -17,6 +43,11 @@ export declare function Chart({ block }: {
17
43
  export declare function Steps({ block }: {
18
44
  block: StepsBlock;
19
45
  }): import("react").JSX.Element;
46
+ /**
47
+ * Router, per rule4: two specialised components rather than one that changes
48
+ * shape. A `cond ? <A/> : <B/>` inside a single component is the Fabric
49
+ * view-index hazard, and these two subtrees have nothing in common.
50
+ */
20
51
  export declare function Code({ block }: {
21
52
  block: CodeBlock;
22
53
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"DataBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/DataBlocks.tsx"],"names":[],"mappings":"AAOA,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,+BA2BrD;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAoB3D;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BA0BnD;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BA2BnD;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;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAOnD;AAUD,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;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"}
@@ -26,6 +26,17 @@ export declare function Claim({ block }: {
26
26
  export declare function Details({ block }: {
27
27
  block: DetailsBlock;
28
28
  }): import("react").JSX.Element;
29
+ /**
30
+ * The tool-header segmented control, not a strip of this block's own.
31
+ *
32
+ * `NightSegmented` is what the dial settings and the network tool mount, so a
33
+ * tabbed block now reads as part of the same product rather than as a
34
+ * lookalike drawn next to it. `sm` is its compact variant, which is what a
35
+ * control inside a chat bubble wants.
36
+ *
37
+ * Keyed by INDEX, not label: two tabs may legitimately share a label, and a
38
+ * duplicate key would collapse them into one.
39
+ */
29
40
  export declare function Tabs({ block }: {
30
41
  block: TabsBlock;
31
42
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ExtraBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/ExtraBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EAET,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAS7B,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BAiBjE;AAGD,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BAuCjE;AAGD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BA0CvD;AA6CD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BAiBvD;AAGD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BA8B3D;AAwDD,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAgBnD;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAyB3D;AAGD,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BA4BrD;AAGD,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BAWzD;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAYnD;AAGD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAgB3D;AAGD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,+BAmB7D;AAED,wBAAgB,QAAQ,gCAUvB;AAGD,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BAmBzD;AAmBD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAMvD;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,iBAAiB,CAAA;CAAE,+BAWnE;AAGD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,+BAU/D;AAGD,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAgBnD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,+BAS/D;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAanD;AAGD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BASvD;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAUnD;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,+BAavD"}
1
+ {"version":3,"file":"ExtraBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/ExtraBlocks.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/MediaBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIhE,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,+BAuC7D"}
1
+ {"version":3,"file":"MediaBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/MediaBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIhE,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,+BAyC7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReceiptBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/ReceiptBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AA8B7B,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BAyBjE;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BAyBjE;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAgC3D;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,mBAAmB,CAAA;CAAE,+BAqBvE;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,+BA0B/D;AASD,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BAgBzD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAYrD;AAED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAqBnD"}
1
+ {"version":3,"file":"ReceiptBlocks.d.ts","sourceRoot":"","sources":["../../../src/blocks/ReceiptBlocks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AA8B7B,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BA0BjE;AAQD,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,+BA2BjE;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAgC3D;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,mBAAmB,CAAA;CAAE,+BAsBvE;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,+BA0B/D;AASD,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,+BAiBzD;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAYrD;AAED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAqBnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=listRow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listRow.test.d.ts","sourceRoot":"","sources":["../../../src/blocks/listRow.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The arithmetic behind a block's "+N more" footer, separated from the hook so
3
+ * it can be tested without a renderer.
4
+ *
5
+ * The rule that matters: a control is offered ONLY when it changes what is on
6
+ * screen. The previous version derived "+N more" from a `total` the source
7
+ * reported while deriving the tap target from the array actually in hand, so a
8
+ * block holding five items and claiming six rendered a "+1 more" with nothing
9
+ * to reveal — a button that did nothing when tapped. This takes a count and a
10
+ * limit and nothing else, so `canExpand` is the same fact as `hidden > 0`.
11
+ */
12
+ export interface PageState {
13
+ /** Held but not rendered. */
14
+ hidden: number;
15
+ /** What one more tap reveals. */
16
+ next: number;
17
+ /** Something beyond the initial cap is on screen. */
18
+ expanded: boolean;
19
+ canExpand: boolean;
20
+ canCollapse: boolean;
21
+ }
22
+ export declare function pageState(count: number, cap: number, limit: number, step: number): PageState;
23
+ //# sourceMappingURL=pageState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageState.d.ts","sourceRoot":"","sources":["../../../src/blocks/pageState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAc5F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pageState.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageState.test.d.ts","sourceRoot":"","sources":["../../../src/blocks/pageState.test.ts"],"names":[],"mappings":""}
@@ -17,18 +17,48 @@ export declare function Card({ title, source, children, testID, tone, }: {
17
17
  testID?: string;
18
18
  tone?: "warning" | "danger" | "info";
19
19
  }): import("react").JSX.Element;
20
- /** "+N more" — renders the hidden rows when tapped. Never a nested scroller. */
21
- export declare function More({ shown, total, onExpand, expanded, }: {
20
+ export interface Paged<T> {
21
+ visible: T[];
22
+ /** Held by the block but not rendered yet. */
23
+ hidden: number;
24
+ /** What the next tap reveals — `hidden`, capped to one page. */
25
+ next: number;
26
+ expanded: boolean;
27
+ /** Present ONLY when there is something to reveal. */
28
+ showMore?: () => void;
29
+ /** Present ONLY when something has been revealed. */
30
+ showLess?: () => void;
31
+ }
32
+ /**
33
+ * A capped list that grows a page at a time.
34
+ *
35
+ * The callers used to spell the expander's enabled-ness out themselves
36
+ * (`items.length > visible.length || expanded ? toggle : undefined`) at seven
37
+ * call sites, and getting it wrong rendered a "+N more" that did nothing when
38
+ * tapped. Both halves live here now so a call site cannot express that state.
39
+ */
40
+ export declare function usePaged<T>(items: T[], cap: number, step?: number): Paged<T>;
41
+ /**
42
+ * The footer of a paged list: reveal one more page, or fold back to the cap.
43
+ *
44
+ * It knows nothing about any `total` the source reported, and that is the
45
+ * point. The old version drew its count from that number while drawing its tap
46
+ * target from the array actually in hand — so a block holding five items and
47
+ * claiming six rendered "+1 more" with nothing behind it. The engine hands the
48
+ * whole list over now (see agent-core's receipts), so what this can show and
49
+ * what it can reveal are the same thing by construction.
50
+ */
51
+ export declare function More<T>({ paged }: {
52
+ paged: Paged<T>;
53
+ }): import("react").JSX.Element | null;
54
+ /**
55
+ * A list that CANNOT grow: the cap was applied where the block was built, so
56
+ * the rest was never sent. Stated, never offered as a tap.
57
+ */
58
+ export declare function MoreNote({ shown, total }: {
22
59
  shown: number;
23
60
  total?: number;
24
- onExpand?: () => void;
25
- expanded?: boolean;
26
61
  }): import("react").JSX.Element | null;
27
- export declare function useExpand<T>(items: T[], cap: number): {
28
- visible: T[];
29
- expanded: boolean;
30
- toggle: () => void;
31
- };
32
62
  /** Up to two buttons. One primary (accent, dark ink), one plate. */
33
63
  export declare function ActionRow({ actions, blockId, align }: {
34
64
  actions?: BlockAction[];
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/blocks/primitives.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIzE,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAe7C;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,sCASlE;AAED,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,GACL,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC,+BAoBA;AAED,gFAAgF;AAChF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,sCAUA;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAO7G;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,sCA6CrI;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/blocks/primitives.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAKzE,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAe7C;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,sCASlE;AAED,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,GACL,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC,+BAoBA;AAYD,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAgBvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,sCA6BrD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,sCAS3E;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,sCA6CrI;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC"}
@@ -1,3 +1,4 @@
1
- export { ActionRow, blockStyles, Card, More, ProvenanceBadge, toneColor, useExpand } from "./primitives";
1
+ export { ActionRow, blockStyles, Card, More, MoreNote, ProvenanceBadge, toneColor, usePaged } from "./primitives";
2
+ export type { Paged } from "./primitives";
2
3
  export { useBlockHandlers } from "./context";
3
4
  //# sourceMappingURL=primitivesIndex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitivesIndex.d.ts","sourceRoot":"","sources":["../../../src/blocks/primitivesIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"primitivesIndex.d.ts","sourceRoot":"","sources":["../../../src/blocks/primitivesIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClH,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -9,6 +9,16 @@ export interface AskBuoyHeaderProps {
9
9
  hasMessages: boolean;
10
10
  onBack?: () => void;
11
11
  onReset: () => void;
12
+ /**
13
+ * The whole conversation as text, built on press. The header is the one
14
+ * place you can reach it without first scrolling back to the newest answer —
15
+ * which is exactly where you are NOT when a long session is the thing you
16
+ * want to paste into a ticket. Omitted (scripted demos, prototype scenes)
17
+ * the copy button is not rendered at all.
18
+ */
19
+ getTranscript?: () => string;
20
+ /** Open the settings view. Omitted where there is nowhere to go (demos). */
21
+ onOpenSettings?: () => void;
12
22
  }
13
- export declare function AskBuoyHeader({ configured, busy, failed, activeLabel, toolCount, hasMessages, onBack, onReset, }: AskBuoyHeaderProps): import("react").JSX.Element;
23
+ export declare function AskBuoyHeader({ configured, busy, failed, activeLabel, toolCount, hasMessages, onBack, onReset, getTranscript, onOpenSettings, }: AskBuoyHeaderProps): import("react").JSX.Element;
14
24
  //# sourceMappingURL=AskBuoyHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AskBuoyHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AskBuoyHeader.tsx"],"names":[],"mappings":"AA+BA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,IAAI,EACJ,MAAc,EACd,WAAW,EACX,SAAS,EACT,WAAW,EACX,MAAM,EACN,OAAO,GACR,EAAE,kBAAkB,+BAuEpB"}
1
+ {"version":3,"file":"AskBuoyHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AskBuoyHeader.tsx"],"names":[],"mappings":"AA+CA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,IAAI,EACJ,MAAc,EACd,WAAW,EACX,SAAS,EACT,WAAW,EACX,MAAM,EACN,OAAO,EACP,aAAa,EACb,cAAc,GACf,EAAE,kBAAkB,+BAuGpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AskBuoyModal.d.ts","sourceRoot":"","sources":["../../../src/components/AskBuoyModal.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,cAAc,EACd,MAAM,GACP,EAAE,iBAAiB,+BA8PnB"}
1
+ {"version":3,"file":"AskBuoyModal.d.ts","sourceRoot":"","sources":["../../../src/components/AskBuoyModal.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAarD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,cAAc,EACd,MAAM,GACP,EAAE,iBAAiB,+BA6RnB"}
@@ -0,0 +1,2 @@
1
+ export declare function AskBuoySettings(): import("react").JSX.Element;
2
+ //# sourceMappingURL=AskBuoySettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AskBuoySettings.d.ts","sourceRoot":"","sources":["../../../src/components/AskBuoySettings.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,eAAe,gCAsB9B"}
@@ -1,11 +1,18 @@
1
1
  import type { ChatMessage } from "../store/askBuoyStore";
2
2
  /**
3
- * The transcript as a ticket-ready text. Deliberately the ONLY way a session
4
- * leaves the sheet: the transcript is never persisted (it can contain
5
- * anything the agent read), so "attach this to the Jira ticket" has to be an
6
- * explicit human act through the OS share sheet — which also offers Copy.
3
+ * The whole conversation as plain text — the only thing Copy ever produces,
4
+ * and the only way a session leaves the DEVICE (what it saves to disk for a
5
+ * reload goes nowhere — see `transcriptPersistence`).
6
+ *
7
+ * Plain text on purpose. This lands in a Slack message, a ticket comment or a
8
+ * notes file, all of which are read by a person; a JSON document is a worse
9
+ * version of that everywhere except a parser, and nothing here parses it.
10
+ *
11
+ * With `Show agent thinking` on it carries the working too — the reasoning and
12
+ * each step with its parameters — because reading the run somewhere that is
13
+ * not a phone is the entire point of that setting.
7
14
  */
8
- export declare function transcriptToText(messages: ChatMessage[]): string;
15
+ export declare function transcriptToText(messages: ChatMessage[], withTrace?: boolean): string;
9
16
  export interface MessageListProps {
10
17
  messages: ChatMessage[];
11
18
  ListHeaderComponent?: React.ReactElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,uBAAuB,CAAC;AA0MpF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAehE;AA2DD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAChD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,GACR,EAAE,gBAAgB,+BAmFlB"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,uBAAuB,CAAC;AAgNpF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,UAAQ,GAAG,MAAM,CAmBnF;AAgED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAChD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,GACR,EAAE,gBAAgB,+BAkFlB"}
@@ -0,0 +1,5 @@
1
+ import type { ChatMessage } from "../store/askBuoyStore";
2
+ export declare function ThinkingStrip({ message }: {
3
+ message: ChatMessage;
4
+ }): import("react").JSX.Element | null;
5
+ //# sourceMappingURL=ThinkingStrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingStrip.d.ts","sourceRoot":"","sources":["../../../src/components/ThinkingStrip.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AA+CvE,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,sCA6DlE"}
@@ -0,0 +1,5 @@
1
+ export declare function useCopyAction(getText: () => string): {
2
+ copied: boolean;
3
+ copy: () => void;
4
+ };
5
+ //# sourceMappingURL=useCopyAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyAction.d.ts","sourceRoot":"","sources":["../../../src/components/useCopyAction.ts"],"names":[],"mappings":"AAmBA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA0B1F"}
@@ -22,6 +22,11 @@ export { MessageActions, ReasoningStrip, ElapsedRow, QueuedComposer, ReloadDivid
22
22
  export { Markdown } from "./components/Markdown";
23
23
  export { MessageList } from "./components/MessageList";
24
24
  export { AskBuoyHeader } from "./components/AskBuoyHeader";
25
+ export { AskBuoySettings } from "./components/AskBuoySettings";
26
+ export { ThinkingStrip } from "./components/ThinkingStrip";
27
+ export { askBuoySettings, type AskBuoySettings as AskBuoySettingsValue } from "./store/askBuoySettings";
28
+ export { useAskBuoySettings } from "./store/useAskBuoySettings";
29
+ export { traceEntries, traceToText, hasTrace, type TraceEntry } from "./store/traceText";
25
30
  export { Composer } from "./components/Composer";
26
31
  export { ChangesBar } from "./components/ChangesBar";
27
32
  export { ApprovalCard } from "./components/ApprovalCard";