@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
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The agent's own working, under an answer, collapsed by default.
5
+ *
6
+ * Collapsed is the whole design constraint. A multi-step turn's reasoning is
7
+ * longer than the answer it produced, and rendered open it pushes the answer —
8
+ * the thing the user came for — off the screen. So the strip is one line until
9
+ * someone wants it, and the summary on that line ("3 steps · 2 thoughts") is
10
+ * enough to tell whether opening it is worth it.
11
+ *
12
+ * Every step is expandable on its own too, because the parameters are the
13
+ * useful part when hunting a bug and the tool name alone is not.
14
+ */
15
+ import { useState } from "react";
16
+ import { Pressable, StyleSheet, Text, View } from "react-native";
17
+ import { Activity, ChevronDown, ChevronRight, night } from "@buoy-gg/shared-ui";
18
+ import { hasTrace, traceEntries } from "../store/traceText";
19
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
20
+ function StepRow({
21
+ n,
22
+ call
23
+ }) {
24
+ const [open, setOpen] = useState(false);
25
+ const failed = call.status === "failed" || call.status === "refused";
26
+ return /*#__PURE__*/_jsxs(Pressable, {
27
+ onPress: () => setOpen(v => !v),
28
+ accessibilityRole: "button",
29
+ accessibilityState: {
30
+ expanded: open
31
+ },
32
+ style: styles.step,
33
+ children: [/*#__PURE__*/_jsxs(View, {
34
+ style: styles.stepLine,
35
+ children: [/*#__PURE__*/_jsx(Text, {
36
+ style: styles.stepN,
37
+ children: n
38
+ }), /*#__PURE__*/_jsxs(Text, {
39
+ style: [styles.stepName, failed && styles.stepFailed],
40
+ numberOfLines: 1,
41
+ children: [call.toolId, ".", call.action]
42
+ }), call.durationMs !== undefined ? /*#__PURE__*/_jsxs(Text, {
43
+ style: styles.stepMs,
44
+ children: [call.durationMs, "ms"]
45
+ }) : null, /*#__PURE__*/_jsx(Text, {
46
+ style: [styles.stepStatus, failed && styles.stepFailed],
47
+ numberOfLines: 1,
48
+ children: call.status === "ok" ? call.summary || "done" : call.status
49
+ })]
50
+ }), open ? /*#__PURE__*/_jsxs(View, {
51
+ style: styles.detail,
52
+ children: [/*#__PURE__*/_jsx(Text, {
53
+ style: styles.detailLabel,
54
+ children: "SENT"
55
+ }), /*#__PURE__*/_jsx(Text, {
56
+ style: styles.code,
57
+ selectable: true,
58
+ children: call.params ?? "no parameters"
59
+ }), call.result ? /*#__PURE__*/_jsxs(_Fragment, {
60
+ children: [/*#__PURE__*/_jsx(Text, {
61
+ style: styles.detailLabel,
62
+ children: "RETURNED"
63
+ }), /*#__PURE__*/_jsx(Text, {
64
+ style: styles.code,
65
+ selectable: true,
66
+ children: call.result
67
+ })]
68
+ }) : null]
69
+ }) : null]
70
+ });
71
+ }
72
+ export function ThinkingStrip({
73
+ message
74
+ }) {
75
+ const [open, setOpen] = useState(false);
76
+ if (!hasTrace(message)) return null;
77
+ const entries = traceEntries(message);
78
+ const steps = entries.filter(e => e.kind === "step").length;
79
+ const thoughts = entries.length - steps;
80
+ const wall = message.startedAt !== undefined && message.endedAt !== undefined ? `${((message.endedAt - message.startedAt) / 1000).toFixed(1)}s` : null;
81
+ const summary = [steps ? `${steps} step${steps === 1 ? "" : "s"}` : null, thoughts ? `${thoughts} thought${thoughts === 1 ? "" : "s"}` : null, wall, message.usage ? `${message.usage.input + message.usage.output} tokens` : null].filter(Boolean).join(" · ");
82
+ return /*#__PURE__*/_jsxs(View, {
83
+ style: styles.wrap,
84
+ testID: "buoy-ask-buoy-thinking",
85
+ children: [/*#__PURE__*/_jsxs(Pressable, {
86
+ testID: "buoy-ask-buoy-thinking-toggle",
87
+ onPress: () => setOpen(v => !v),
88
+ accessibilityRole: "button",
89
+ accessibilityLabel: open ? "Hide agent thinking" : "Show agent thinking",
90
+ accessibilityState: {
91
+ expanded: open
92
+ },
93
+ style: styles.head,
94
+ children: [/*#__PURE__*/_jsx(Activity, {
95
+ size: 12,
96
+ color: night.color.textTertiary
97
+ }), /*#__PURE__*/_jsx(Text, {
98
+ style: styles.headText,
99
+ children: summary
100
+ }), open ? /*#__PURE__*/_jsx(ChevronDown, {
101
+ size: 12,
102
+ color: night.color.textTertiary
103
+ }) : /*#__PURE__*/_jsx(ChevronRight, {
104
+ size: 12,
105
+ color: night.color.textTertiary
106
+ })]
107
+ }), open ? /*#__PURE__*/_jsxs(View, {
108
+ style: styles.body,
109
+ children: [entries.map((entry, i) => entry.kind === "thought" ? /*#__PURE__*/_jsx(Text, {
110
+ style: styles.thought,
111
+ selectable: true,
112
+ children: entry.text.trim()
113
+ }, `t${i}`) : /*#__PURE__*/_jsx(StepRow, {
114
+ n: entry.n,
115
+ call: entry.call
116
+ }, entry.call.id)), thoughts === 0 ?
117
+ /*#__PURE__*/
118
+ // Said plainly, because an empty reasoning section reads as broken.
119
+ // Most models report none: Claude thinks by default, gpt-4.1 never.
120
+ _jsx(Text, {
121
+ style: styles.none,
122
+ children: "This model reports no reasoning \u2014 the steps above are the whole trace."
123
+ }) : null]
124
+ }) : null]
125
+ });
126
+ }
127
+ const styles = StyleSheet.create({
128
+ wrap: {
129
+ marginTop: 8,
130
+ borderRadius: night.radius.badge,
131
+ borderWidth: StyleSheet.hairlineWidth,
132
+ borderColor: night.color.separator,
133
+ backgroundColor: night.color.fill,
134
+ overflow: "hidden"
135
+ },
136
+ head: {
137
+ flexDirection: "row",
138
+ alignItems: "center",
139
+ gap: 6,
140
+ paddingHorizontal: 10,
141
+ paddingVertical: 7
142
+ },
143
+ headText: {
144
+ flex: 1,
145
+ color: night.color.textTertiary,
146
+ fontSize: night.font.micro,
147
+ fontWeight: "600"
148
+ },
149
+ body: {
150
+ borderTopWidth: StyleSheet.hairlineWidth,
151
+ borderTopColor: night.color.separator
152
+ },
153
+ thought: {
154
+ color: night.color.textSecondary,
155
+ fontSize: night.font.micro,
156
+ lineHeight: 17,
157
+ fontStyle: "italic",
158
+ paddingHorizontal: 10,
159
+ paddingVertical: 8
160
+ },
161
+ step: {
162
+ paddingHorizontal: 10,
163
+ paddingVertical: 7
164
+ },
165
+ stepLine: {
166
+ flexDirection: "row",
167
+ alignItems: "center",
168
+ gap: 8
169
+ },
170
+ stepN: {
171
+ color: night.color.textTertiary,
172
+ fontSize: night.font.micro,
173
+ width: 14
174
+ },
175
+ stepName: {
176
+ flex: 1,
177
+ color: night.color.textSecondary,
178
+ fontSize: night.font.micro,
179
+ fontWeight: "600"
180
+ },
181
+ stepMs: {
182
+ color: night.color.textTertiary,
183
+ fontSize: night.font.micro
184
+ },
185
+ stepStatus: {
186
+ color: night.color.textTertiary,
187
+ fontSize: night.font.micro,
188
+ maxWidth: 110
189
+ },
190
+ stepFailed: {
191
+ color: night.color.danger
192
+ },
193
+ detail: {
194
+ marginTop: 6,
195
+ marginLeft: 22,
196
+ gap: 3
197
+ },
198
+ detailLabel: {
199
+ color: night.color.textTertiary,
200
+ fontSize: 9,
201
+ fontWeight: "700",
202
+ letterSpacing: 0.5
203
+ },
204
+ code: {
205
+ color: night.color.textSecondary,
206
+ fontSize: night.font.micro,
207
+ lineHeight: 16,
208
+ marginBottom: 3
209
+ },
210
+ none: {
211
+ color: night.color.textTertiary,
212
+ fontSize: night.font.micro,
213
+ fontStyle: "italic",
214
+ paddingHorizontal: 10,
215
+ paddingVertical: 8
216
+ }
217
+ });
218
+ //# sourceMappingURL=ThinkingStrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","Pressable","StyleSheet","Text","View","Activity","ChevronDown","ChevronRight","night","hasTrace","traceEntries","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","StepRow","n","call","open","setOpen","failed","status","onPress","v","accessibilityRole","accessibilityState","expanded","style","styles","step","children","stepLine","stepN","stepName","stepFailed","numberOfLines","toolId","action","durationMs","undefined","stepMs","stepStatus","summary","detail","detailLabel","code","selectable","params","result","ThinkingStrip","message","entries","steps","filter","e","kind","length","thoughts","wall","startedAt","endedAt","toFixed","usage","input","output","Boolean","join","wrap","testID","accessibilityLabel","head","size","color","textTertiary","headText","body","map","entry","i","thought","text","trim","id","none","create","marginTop","borderRadius","radius","badge","borderWidth","hairlineWidth","borderColor","separator","backgroundColor","fill","overflow","flexDirection","alignItems","gap","paddingHorizontal","paddingVertical","flex","fontSize","font","micro","fontWeight","borderTopWidth","borderTopColor","textSecondary","lineHeight","fontStyle","width","maxWidth","danger","marginLeft","letterSpacing","marginBottom"],"sourceRoot":"../../../src","sources":["components/ThinkingStrip.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Copy that reports what happened.
5
+ *
6
+ * Both clipboard libraries are OPTIONAL peers, so `copyToClipboard` resolves
7
+ * false in an app that installed neither — a copy button that silently does
8
+ * nothing is worse than no copy button, so that case falls through to the OS
9
+ * share sheet (which also offers Copy) instead of failing quietly.
10
+ *
11
+ * `getText` is read on PRESS, not on render: the whole-transcript callers
12
+ * would otherwise rebuild the transcript on every frame of a streaming answer
13
+ * just to have a string ready for a button nobody tapped.
14
+ */
15
+ import { useCallback, useEffect, useRef, useState } from "react";
16
+ import { Share } from "react-native";
17
+ import { copyToClipboard } from "@buoy-gg/shared-ui";
18
+
19
+ /** Long enough to notice out of the corner of an eye, short enough not to linger. */
20
+ const COPIED_MS = 1500;
21
+ export function useCopyAction(getText) {
22
+ const [copied, setCopied] = useState(false);
23
+ const timer = useRef(null);
24
+ useEffect(() => () => {
25
+ if (timer.current) clearTimeout(timer.current);
26
+ }, []);
27
+ const copy = useCallback(() => {
28
+ const text = getText();
29
+ void copyToClipboard(text).then(ok => {
30
+ if (!ok) {
31
+ void Share.share({
32
+ message: text
33
+ }).catch(() => {});
34
+ return;
35
+ }
36
+ setCopied(true);
37
+ if (timer.current) clearTimeout(timer.current);
38
+ timer.current = setTimeout(() => setCopied(false), COPIED_MS);
39
+ }).catch(() => {});
40
+ }, [getText]);
41
+ return {
42
+ copied,
43
+ copy
44
+ };
45
+ }
46
+ //# sourceMappingURL=useCopyAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","Share","copyToClipboard","COPIED_MS","useCopyAction","getText","copied","setCopied","timer","current","clearTimeout","copy","text","then","ok","share","message","catch","setTimeout"],"sourceRoot":"../../../src","sources":["components/useCopyAction.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChE,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,eAAe,QAAQ,oBAAoB;;AAEpD;AACA,MAAMC,SAAS,GAAG,IAAI;AAEtB,OAAO,SAASC,aAAaA,CAACC,OAAqB,EAAyC;EAC1F,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGP,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAMQ,KAAK,GAAGT,MAAM,CAAuC,IAAI,CAAC;EAChED,SAAS,CACP,MAAM,MAAM;IACV,IAAIU,KAAK,CAACC,OAAO,EAAEC,YAAY,CAACF,KAAK,CAACC,OAAO,CAAC;EAChD,CAAC,EACD,EACF,CAAC;EAED,MAAME,IAAI,GAAGd,WAAW,CAAC,MAAM;IAC7B,MAAMe,IAAI,GAAGP,OAAO,CAAC,CAAC;IACtB,KAAKH,eAAe,CAACU,IAAI,CAAC,CACvBC,IAAI,CAAEC,EAAE,IAAK;MACZ,IAAI,CAACA,EAAE,EAAE;QACP,KAAKb,KAAK,CAACc,KAAK,CAAC;UAAEC,OAAO,EAAEJ;QAAK,CAAC,CAAC,CAACK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD;MACF;MACAV,SAAS,CAAC,IAAI,CAAC;MACf,IAAIC,KAAK,CAACC,OAAO,EAAEC,YAAY,CAACF,KAAK,CAACC,OAAO,CAAC;MAC9CD,KAAK,CAACC,OAAO,GAAGS,UAAU,CAAC,MAAMX,SAAS,CAAC,KAAK,CAAC,EAAEJ,SAAS,CAAC;IAC/D,CAAC,CAAC,CACDc,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACZ,OAAO,CAAC,CAAC;EAEb,OAAO;IAAEC,MAAM;IAAEK;EAAK,CAAC;AACzB","ignoreList":[]}
@@ -23,6 +23,11 @@ export { Markdown } from "./components/Markdown";
23
23
  // can stage conversations in the actual sheet chrome.
24
24
  export { MessageList } from "./components/MessageList";
25
25
  export { AskBuoyHeader } from "./components/AskBuoyHeader";
26
+ export { AskBuoySettings } from "./components/AskBuoySettings";
27
+ export { ThinkingStrip } from "./components/ThinkingStrip";
28
+ export { askBuoySettings } from "./store/askBuoySettings";
29
+ export { useAskBuoySettings } from "./store/useAskBuoySettings";
30
+ export { traceEntries, traceToText, hasTrace } from "./store/traceText";
26
31
  export { Composer } from "./components/Composer";
27
32
  export { ChangesBar } from "./components/ChangesBar";
28
33
  export { ApprovalCard } from "./components/ApprovalCard";
@@ -1 +1 @@
1
- {"version":3,"names":["AskBuoyModal","askBuoyToolPreset","createAskBuoyTool","AskBuoyIcon","ASK_BUOY_ICON_COLOR","askBuoySyncAdapter","ASK_BUOY_ADAPTER_VERSION","askBuoyStore","useAskBuoy","useAskBuoyState","redactForWire","BlockRenderer","BlockHandlersProvider","useBlockHandlers","Card","BlockCard","ActionRow","BlockActionRow","ProvenanceBadge","MessageActions","ReasoningStrip","ElapsedRow","QueuedComposer","ReloadDivider","Timestamp","EditableUserBubble","LivePill","Markdown","MessageList","AskBuoyHeader","Composer","ChangesBar","ApprovalCard"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,QAAgC,2BAA2B;AAChF,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,WAAW,EACXC,mBAAmB,QAEd,UAAU;AACjB,SAASC,kBAAkB,EAAEC,wBAAwB,QAAQ,2BAA2B;AACxF,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,UAAU,EAAEC,eAAe,QAAgC,oBAAoB;AAGxF,SAASC,aAAa,QAAQ,aAAa;AAE3C,SAASC,aAAa,EAAEC,qBAAqB,EAAEC,gBAAgB,QAA4B,UAAU;AACrG,SAASC,IAAI,IAAIC,SAAS,EAAEC,SAAS,IAAIC,cAAc,EAAEC,eAAe,QAAQ,UAAU;AAC1F,SACEC,cAAc,EAAEC,cAAc,EAAEC,UAAU,EAAEC,cAAc,EAAEC,aAAa,EAAEC,SAAS,EAAEC,kBAAkB,EAAEC,QAAQ,QAC7G,UAAU;AACjB,SAASC,QAAQ,QAAQ,uBAAuB;AAChD;AACA;AACA,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,YAAY,QAAQ,2BAA2B","ignoreList":[]}
1
+ {"version":3,"names":["AskBuoyModal","askBuoyToolPreset","createAskBuoyTool","AskBuoyIcon","ASK_BUOY_ICON_COLOR","askBuoySyncAdapter","ASK_BUOY_ADAPTER_VERSION","askBuoyStore","useAskBuoy","useAskBuoyState","redactForWire","BlockRenderer","BlockHandlersProvider","useBlockHandlers","Card","BlockCard","ActionRow","BlockActionRow","ProvenanceBadge","MessageActions","ReasoningStrip","ElapsedRow","QueuedComposer","ReloadDivider","Timestamp","EditableUserBubble","LivePill","Markdown","MessageList","AskBuoyHeader","AskBuoySettings","ThinkingStrip","askBuoySettings","useAskBuoySettings","traceEntries","traceToText","hasTrace","Composer","ChangesBar","ApprovalCard"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,QAAgC,2BAA2B;AAChF,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,WAAW,EACXC,mBAAmB,QAEd,UAAU;AACjB,SAASC,kBAAkB,EAAEC,wBAAwB,QAAQ,2BAA2B;AACxF,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,UAAU,EAAEC,eAAe,QAAgC,oBAAoB;AAGxF,SAASC,aAAa,QAAQ,aAAa;AAE3C,SAASC,aAAa,EAAEC,qBAAqB,EAAEC,gBAAgB,QAA4B,UAAU;AACrG,SAASC,IAAI,IAAIC,SAAS,EAAEC,SAAS,IAAIC,cAAc,EAAEC,eAAe,QAAQ,UAAU;AAC1F,SACEC,cAAc,EAAEC,cAAc,EAAEC,UAAU,EAAEC,cAAc,EAAEC,aAAa,EAAEC,SAAS,EAAEC,kBAAkB,EAAEC,QAAQ,QAC7G,UAAU;AACjB,SAASC,QAAQ,QAAQ,uBAAuB;AAChD;AACA;AACA,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,eAAe,QAAsD,yBAAyB;AACvG,SAASC,kBAAkB,QAAQ,4BAA4B;AAC/D,SAASC,YAAY,EAAEC,WAAW,EAAEC,QAAQ,QAAyB,mBAAmB;AACxF,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,YAAY,QAAQ,2BAA2B","ignoreList":[]}
@@ -48,7 +48,7 @@ export const askBuoyToolPreset = {
48
48
  * @example
49
49
  * createAskBuoyTool({
50
50
  * endpoint: "https://ai.acme.com/v1/messages",
51
- * model: "claude-sonnet-4-5",
51
+ * model: "claude-opus-5",
52
52
  * headers: async () => ({ Authorization: `Bearer ${await auth.getToken()}` }),
53
53
  * context: { notes: ["user.rewards.points = loyalty points"] },
54
54
  * })
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Ask Buoy's own preferences — the things a tester sets on the sheet, not the
5
+ * things a developer sets in `askBuoy={{ … }}`.
6
+ *
7
+ * Module-level and subscribable for the same reason the transcript is: the
8
+ * sheet unmounts whenever the tool is closed or minimised, and a preference
9
+ * that reset on every close would not be a preference.
10
+ */
11
+ import { definePersistedSetting, devToolsStorageKeys } from "@buoy-gg/shared-ui";
12
+ export const DEFAULT_SETTINGS = {
13
+ showThinking: false
14
+ };
15
+ const store = definePersistedSetting(`${devToolsStorageKeys.base}_ask_buoy_settings`, DEFAULT_SETTINGS, {
16
+ sanitize: merged => ({
17
+ showThinking: merged.showThinking === true
18
+ })
19
+ });
20
+ let current = DEFAULT_SETTINGS;
21
+ let loaded = false;
22
+ const listeners = new Set();
23
+ function emit() {
24
+ for (const fn of listeners) {
25
+ try {
26
+ fn();
27
+ } catch {
28
+ // A throwing subscriber must not take the sheet down.
29
+ }
30
+ }
31
+ }
32
+ export const askBuoySettings = {
33
+ get: () => current,
34
+ subscribe(fn) {
35
+ listeners.add(fn);
36
+ // First subscriber pays for the read; everyone after gets the cached value.
37
+ if (!loaded) {
38
+ loaded = true;
39
+ void store.load().then(value => {
40
+ current = value;
41
+ emit();
42
+ });
43
+ }
44
+ return () => listeners.delete(fn);
45
+ },
46
+ set(key, value) {
47
+ if (current[key] === value) return;
48
+ current = {
49
+ ...current,
50
+ [key]: value
51
+ };
52
+ emit();
53
+ void store.save(current);
54
+ },
55
+ /** Tests only — the module cache would otherwise leak between them. */
56
+ reset() {
57
+ current = DEFAULT_SETTINGS;
58
+ loaded = false;
59
+ void store.clear();
60
+ }
61
+ };
62
+ //# sourceMappingURL=askBuoySettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["definePersistedSetting","devToolsStorageKeys","DEFAULT_SETTINGS","showThinking","store","base","sanitize","merged","current","loaded","listeners","Set","emit","fn","askBuoySettings","get","subscribe","add","load","then","value","delete","set","key","save","reset","clear"],"sourceRoot":"../../../src","sources":["store/askBuoySettings.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,sBAAsB,EAAEC,mBAAmB,QAAQ,oBAAoB;AAgBhF,OAAO,MAAMC,gBAAiC,GAAG;EAAEC,YAAY,EAAE;AAAM,CAAC;AAExE,MAAMC,KAAK,GAAGJ,sBAAsB,CAClC,GAAGC,mBAAmB,CAACI,IAAI,oBAAoB,EAC/CH,gBAAgB,EAChB;EACEI,QAAQ,EAAGC,MAAM,KAAM;IAAEJ,YAAY,EAAEI,MAAM,CAACJ,YAAY,KAAK;EAAK,CAAC;AACvE,CACF,CAAC;AAED,IAAIK,OAAwB,GAAGN,gBAAgB;AAC/C,IAAIO,MAAM,GAAG,KAAK;AAClB,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;AAEvC,SAASC,IAAIA,CAAA,EAAS;EACpB,KAAK,MAAMC,EAAE,IAAIH,SAAS,EAAE;IAC1B,IAAI;MACFG,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEA,OAAO,MAAMC,eAAe,GAAG;EAC7BC,GAAG,EAAEA,CAAA,KAAuBP,OAAO;EAEnCQ,SAASA,CAACH,EAAc,EAAc;IACpCH,SAAS,CAACO,GAAG,CAACJ,EAAE,CAAC;IACjB;IACA,IAAI,CAACJ,MAAM,EAAE;MACXA,MAAM,GAAG,IAAI;MACb,KAAKL,KAAK,CAACc,IAAI,CAAC,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAK;QAChCZ,OAAO,GAAGY,KAAK;QACfR,IAAI,CAAC,CAAC;MACR,CAAC,CAAC;IACJ;IACA,OAAO,MAAMF,SAAS,CAACW,MAAM,CAACR,EAAE,CAAC;EACnC,CAAC;EAEDS,GAAGA,CAAkCC,GAAM,EAAEH,KAAyB,EAAQ;IAC5E,IAAIZ,OAAO,CAACe,GAAG,CAAC,KAAKH,KAAK,EAAE;IAC5BZ,OAAO,GAAG;MAAE,GAAGA,OAAO;MAAE,CAACe,GAAG,GAAGH;IAAM,CAAC;IACtCR,IAAI,CAAC,CAAC;IACN,KAAKR,KAAK,CAACoB,IAAI,CAAChB,OAAO,CAAC;EAC1B,CAAC;EAED;EACAiB,KAAKA,CAAA,EAAS;IACZjB,OAAO,GAAGN,gBAAgB;IAC1BO,MAAM,GAAG,KAAK;IACd,KAAKL,KAAK,CAACsB,KAAK,CAAC,CAAC;EACpB;AACF,CAAC","ignoreList":[]}
@@ -8,16 +8,47 @@
8
8
  * that vanished because someone tapped away would be maddening), and the sync
9
9
  * adapter needs to read the same transcript to show it on the desktop.
10
10
  *
11
- * Deliberately NOT persisted. A transcript can contain anything the agent read
12
- * — storage values, response bodies, a customer's record — and writing that to
13
- * disk under a Buoy key would put it in the Storage tool and, from there, on
14
- * the unauthenticated broker wire. It lives for the session and no longer.
11
+ * Persisted across restarts, on purpose, with the payloads left out — see
12
+ * `transcriptPersistence.ts` for what is written and what that costs. The
13
+ * store itself stays a plain in-memory store; saving is a subscriber, and
14
+ * `hydrate` is the one way anything comes back in.
15
15
  */
16
+ import { idFactory } from "@buoy-gg/agent-core";
16
17
 
17
18
  /** A block in a message, and (for receipts) the tool call that produced it. */
18
19
 
19
- let seq = 0;
20
- const nextId = () => `m${++seq}`;
20
+ /**
21
+ * A stretch of the model's own reasoning, and where it fell.
22
+ *
23
+ * `afterCalls` is how many tool calls this message had already made when the
24
+ * thought arrived, so the thinking view can lay reasoning and steps out in the
25
+ * order they actually happened. One assistant bubble spans every turn of a
26
+ * multi-step run, so "think, act, think, act" is the normal shape and showing
27
+ * all the thoughts in a lump at the top would misreport it.
28
+ */
29
+
30
+ /**
31
+ * Message ids carry this run's token — see agent-core's `runId`. A plain `m1`
32
+ * collided head-on with the `m1` in a restored transcript, and the message
33
+ * list keys on it.
34
+ */
35
+ const nextId = idFactory("m");
36
+
37
+ /**
38
+ * Params, as one readable line. Capped because a step can carry a whole
39
+ * response body or a store's full state, and this is chrome inside a chat
40
+ * bubble — the full value is a tool read away.
41
+ */
42
+ const MAX_PARAM_CHARS = 400;
43
+ function encodeParams(params) {
44
+ if (!params || Object.keys(params).length === 0) return undefined;
45
+ try {
46
+ const json = JSON.stringify(params);
47
+ return json.length > MAX_PARAM_CHARS ? `${json.slice(0, MAX_PARAM_CHARS)}…` : json;
48
+ } catch {
49
+ return undefined;
50
+ }
51
+ }
21
52
  let state = {
22
53
  messages: [],
23
54
  busy: false,
@@ -32,7 +63,8 @@ let state = {
32
63
  input: 0,
33
64
  output: 0,
34
65
  requests: 0
35
- }
66
+ },
67
+ meta: {}
36
68
  };
37
69
  const listeners = new Set();
38
70
  let ledgerRef = null;
@@ -90,6 +122,15 @@ export const askBuoyStore = {
90
122
  configured
91
123
  });
92
124
  },
125
+ setMeta(meta) {
126
+ const same = Object.keys(meta).every(k => state.meta[k] === meta[k]);
127
+ if (!same) set({
128
+ meta: {
129
+ ...state.meta,
130
+ ...meta
131
+ }
132
+ });
133
+ },
93
134
  addUser(text) {
94
135
  set({
95
136
  messages: [...state.messages, {
@@ -149,7 +190,8 @@ export const askBuoyStore = {
149
190
  text: "",
150
191
  toolCalls: [],
151
192
  blocks: [],
152
- streaming: true
193
+ streaming: true,
194
+ startedAt: Date.now()
153
195
  }]
154
196
  });
155
197
  return id;
@@ -171,6 +213,15 @@ export const askBuoyStore = {
171
213
  text: m.breakBeforeNextText && m.text ? `${m.text.trimEnd()}\n\n${ev.delta}` : m.text + ev.delta,
172
214
  breakBeforeNextText: false
173
215
  };
216
+ case "reasoning":
217
+ return {
218
+ ...m,
219
+ breakBeforeNextText: true,
220
+ reasoning: [...(m.reasoning ?? []), {
221
+ text: ev.text,
222
+ afterCalls: m.toolCalls.length
223
+ }]
224
+ };
174
225
  case "tool-start":
175
226
  return {
176
227
  ...m,
@@ -180,7 +231,10 @@ export const askBuoyStore = {
180
231
  action: ev.action,
181
232
  label: ev.label,
182
233
  description: ev.description,
183
- status: "running"
234
+ status: "running",
235
+ params: encodeParams(ev.params),
236
+ effect: ev.effect,
237
+ startedAt: Date.now()
184
238
  }]
185
239
  };
186
240
  case "tool-end":
@@ -190,7 +244,9 @@ export const askBuoyStore = {
190
244
  toolCalls: m.toolCalls.map(c => c.id === ev.id ? {
191
245
  ...c,
192
246
  status: !ev.ok && ev.summary === "refused" ? "refused" : ev.ok ? "ok" : "failed",
193
- summary: ev.summary
247
+ summary: ev.summary,
248
+ durationMs: ev.durationMs,
249
+ result: ev.result
194
250
  } : c)
195
251
  };
196
252
  case "block":
@@ -202,6 +258,18 @@ export const askBuoyStore = {
202
258
  forToolCallId: ev.forToolCallId
203
259
  }]
204
260
  };
261
+ case "usage":
262
+ // Also folded into the session total below. Per MESSAGE as well,
263
+ // because "which answer cost 40k tokens" is the question you ask
264
+ // when a bill looks wrong, and a session total cannot answer it.
265
+ return {
266
+ ...m,
267
+ usage: {
268
+ input: (m.usage?.input ?? 0) + ev.input,
269
+ output: (m.usage?.output ?? 0) + ev.output,
270
+ requests: (m.usage?.requests ?? 0) + 1
271
+ }
272
+ };
205
273
  case "error":
206
274
  return {
207
275
  ...m,
@@ -229,7 +297,8 @@ export const askBuoyStore = {
229
297
  set({
230
298
  messages: state.messages.map(m => m.id === messageId ? {
231
299
  ...m,
232
- streaming: false
300
+ streaming: false,
301
+ endedAt: Date.now()
233
302
  } : m),
234
303
  busy: false
235
304
  });
@@ -251,6 +320,21 @@ export const askBuoyStore = {
251
320
  });
252
321
  pending?.resolve(approved);
253
322
  },
323
+ /**
324
+ * Put a saved conversation back, once, at open.
325
+ *
326
+ * Refuses if anything has been said already: a slow disk read landing after
327
+ * the user has started typing must not shove an old chat in front of them.
328
+ */
329
+ hydrate(input) {
330
+ if (state.messages.length > 0 || state.busy) return false;
331
+ set({
332
+ messages: input.messages,
333
+ answers: input.answers,
334
+ usage: input.usage
335
+ });
336
+ return true;
337
+ },
254
338
  reset() {
255
339
  // Reject anything still waiting, or the turn hangs forever on a promise
256
340
  // whose only resolver just left the screen.
@@ -269,6 +353,8 @@ export const askBuoyStore = {
269
353
  output: 0,
270
354
  requests: 0
271
355
  }
356
+ // `meta` survives: it describes the app and the endpoint, not the
357
+ // conversation, and re-deriving it would need another render pass.
272
358
  });
273
359
  }
274
360
  };
@@ -1 +1 @@
1
- {"version":3,"names":["seq","nextId","state","messages","busy","pending","notice","configured","answers","awaitingBlockId","actionState","queued","usage","input","output","requests","listeners","Set","ledgerRef","heldSession","set","next","fn","askBuoyStore","getState","subscribe","add","delete","setLedger","ledger","getLedger","holdSession","session","signature","getHeldSession","setNotice","setConfigured","addUser","text","id","role","toolCalls","blocks","beginTurn","setQueued","removeMessage","filter","m","recordAnswer","answer","blockId","setActionState","key","value","startAssistant","streaming","applyEvent","messageId","ev","map","type","breakBeforeNextText","trimEnd","delta","toolId","action","label","description","status","c","ok","summary","block","forToolCallId","error","message","finishAssistant","askApproval","Promise","resolve","answerApproval","approved","reset"],"sourceRoot":"../../../src","sources":["store/askBuoyStore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["idFactory","nextId","MAX_PARAM_CHARS","encodeParams","params","Object","keys","length","undefined","json","JSON","stringify","slice","state","messages","busy","pending","notice","configured","answers","awaitingBlockId","actionState","queued","usage","input","output","requests","meta","listeners","Set","ledgerRef","heldSession","set","next","fn","askBuoyStore","getState","subscribe","add","delete","setLedger","ledger","getLedger","holdSession","session","signature","getHeldSession","setNotice","setConfigured","setMeta","same","every","k","addUser","text","id","role","toolCalls","blocks","beginTurn","setQueued","removeMessage","filter","m","recordAnswer","answer","blockId","setActionState","key","value","startAssistant","streaming","startedAt","Date","now","applyEvent","messageId","ev","map","type","breakBeforeNextText","trimEnd","delta","reasoning","afterCalls","toolId","action","label","description","status","effect","c","ok","summary","durationMs","result","block","forToolCallId","error","message","finishAssistant","endedAt","askApproval","Promise","resolve","answerApproval","approved","hydrate","reset"],"sourceRoot":"../../../src","sources":["store/askBuoyStore.ts"],"mappings":"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","ignoreList":[]}