@buoy-gg/ask-buoy 7.0.33

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 (184) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +50 -0
  3. package/lib/commonjs/blocks/AskBlocks.js +338 -0
  4. package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
  5. package/lib/commonjs/blocks/BlockRenderer.js +250 -0
  6. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
  7. package/lib/commonjs/blocks/ChromePrototypes.js +514 -0
  8. package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
  9. package/lib/commonjs/blocks/DataBlocks.js +545 -0
  10. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  11. package/lib/commonjs/blocks/ExtraBlocks.js +1821 -0
  12. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  13. package/lib/commonjs/blocks/MediaBlocks.js +140 -0
  14. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
  15. package/lib/commonjs/blocks/ReceiptBlocks.js +596 -0
  16. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
  17. package/lib/commonjs/blocks/context.js +42 -0
  18. package/lib/commonjs/blocks/context.js.map +1 -0
  19. package/lib/commonjs/blocks/icons.js +96 -0
  20. package/lib/commonjs/blocks/icons.js.map +1 -0
  21. package/lib/commonjs/blocks/index.js +95 -0
  22. package/lib/commonjs/blocks/index.js.map +1 -0
  23. package/lib/commonjs/blocks/primitives.js +312 -0
  24. package/lib/commonjs/blocks/primitives.js.map +1 -0
  25. package/lib/commonjs/blocks/primitivesIndex.js +56 -0
  26. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  27. package/lib/commonjs/components/ApprovalCard.js +140 -0
  28. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  29. package/lib/commonjs/components/AskBuoyHeader.js +127 -0
  30. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  31. package/lib/commonjs/components/AskBuoyIcon.js +19 -0
  32. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  33. package/lib/commonjs/components/AskBuoyModal.js +322 -0
  34. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  35. package/lib/commonjs/components/ChangesBar.js +211 -0
  36. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  37. package/lib/commonjs/components/Composer.js +175 -0
  38. package/lib/commonjs/components/Composer.js.map +1 -0
  39. package/lib/commonjs/components/EmptyState.js +154 -0
  40. package/lib/commonjs/components/EmptyState.js.map +1 -0
  41. package/lib/commonjs/components/Markdown.js +252 -0
  42. package/lib/commonjs/components/Markdown.js.map +1 -0
  43. package/lib/commonjs/components/MessageList.js +648 -0
  44. package/lib/commonjs/components/MessageList.js.map +1 -0
  45. package/lib/commonjs/components/TypingDots.js +63 -0
  46. package/lib/commonjs/components/TypingDots.js.map +1 -0
  47. package/lib/commonjs/index.js +205 -0
  48. package/lib/commonjs/index.js.map +1 -0
  49. package/lib/commonjs/package.json +1 -0
  50. package/lib/commonjs/preset.js +90 -0
  51. package/lib/commonjs/preset.js.map +1 -0
  52. package/lib/commonjs/store/askBuoyStore.js +279 -0
  53. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  54. package/lib/commonjs/store/useAskBuoy.js +299 -0
  55. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  56. package/lib/commonjs/sync/askBuoySyncAdapter.js +119 -0
  57. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  58. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +136 -0
  59. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  60. package/lib/commonjs/sync/wire.js +58 -0
  61. package/lib/commonjs/sync/wire.js.map +1 -0
  62. package/lib/commonjs/types.js +6 -0
  63. package/lib/commonjs/types.js.map +1 -0
  64. package/lib/module/blocks/AskBlocks.js +331 -0
  65. package/lib/module/blocks/AskBlocks.js.map +1 -0
  66. package/lib/module/blocks/BlockRenderer.js +245 -0
  67. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  68. package/lib/module/blocks/ChromePrototypes.js +503 -0
  69. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  70. package/lib/module/blocks/DataBlocks.js +532 -0
  71. package/lib/module/blocks/DataBlocks.js.map +1 -0
  72. package/lib/module/blocks/ExtraBlocks.js +1794 -0
  73. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  74. package/lib/module/blocks/MediaBlocks.js +135 -0
  75. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  76. package/lib/module/blocks/ReceiptBlocks.js +584 -0
  77. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  78. package/lib/module/blocks/context.js +35 -0
  79. package/lib/module/blocks/context.js.map +1 -0
  80. package/lib/module/blocks/icons.js +91 -0
  81. package/lib/module/blocks/icons.js.map +1 -0
  82. package/lib/module/blocks/index.js +8 -0
  83. package/lib/module/blocks/index.js.map +1 -0
  84. package/lib/module/blocks/primitives.js +301 -0
  85. package/lib/module/blocks/primitives.js.map +1 -0
  86. package/lib/module/blocks/primitivesIndex.js +5 -0
  87. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  88. package/lib/module/components/ApprovalCard.js +135 -0
  89. package/lib/module/components/ApprovalCard.js.map +1 -0
  90. package/lib/module/components/AskBuoyHeader.js +124 -0
  91. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  92. package/lib/module/components/AskBuoyIcon.js +8 -0
  93. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  94. package/lib/module/components/AskBuoyModal.js +317 -0
  95. package/lib/module/components/AskBuoyModal.js.map +1 -0
  96. package/lib/module/components/ChangesBar.js +206 -0
  97. package/lib/module/components/ChangesBar.js.map +1 -0
  98. package/lib/module/components/Composer.js +170 -0
  99. package/lib/module/components/Composer.js.map +1 -0
  100. package/lib/module/components/EmptyState.js +149 -0
  101. package/lib/module/components/EmptyState.js.map +1 -0
  102. package/lib/module/components/Markdown.js +246 -0
  103. package/lib/module/components/Markdown.js.map +1 -0
  104. package/lib/module/components/MessageList.js +642 -0
  105. package/lib/module/components/MessageList.js.map +1 -0
  106. package/lib/module/components/TypingDots.js +58 -0
  107. package/lib/module/components/TypingDots.js.map +1 -0
  108. package/lib/module/index.js +29 -0
  109. package/lib/module/index.js.map +1 -0
  110. package/lib/module/preset.js +73 -0
  111. package/lib/module/preset.js.map +1 -0
  112. package/lib/module/store/askBuoyStore.js +275 -0
  113. package/lib/module/store/askBuoyStore.js.map +1 -0
  114. package/lib/module/store/useAskBuoy.js +293 -0
  115. package/lib/module/store/useAskBuoy.js.map +1 -0
  116. package/lib/module/sync/askBuoySyncAdapter.js +114 -0
  117. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  118. package/lib/module/sync/askBuoySyncAdapter.test.js +135 -0
  119. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  120. package/lib/module/sync/wire.js +47 -0
  121. package/lib/module/sync/wire.js.map +1 -0
  122. package/lib/module/types.js +4 -0
  123. package/lib/module/types.js.map +1 -0
  124. package/lib/typescript/blocks/AskBlocks.d.ts +11 -0
  125. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  126. package/lib/typescript/blocks/BlockRenderer.d.ts +5 -0
  127. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  128. package/lib/typescript/blocks/ChromePrototypes.d.ts +27 -0
  129. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  130. package/lib/typescript/blocks/DataBlocks.d.ts +29 -0
  131. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  132. package/lib/typescript/blocks/ExtraBlocks.d.ts +69 -0
  133. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  134. package/lib/typescript/blocks/MediaBlocks.d.ts +5 -0
  135. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  136. package/lib/typescript/blocks/ReceiptBlocks.d.ts +27 -0
  137. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  138. package/lib/typescript/blocks/context.d.ts +35 -0
  139. package/lib/typescript/blocks/context.d.ts.map +1 -0
  140. package/lib/typescript/blocks/icons.d.ts +6 -0
  141. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  142. package/lib/typescript/blocks/index.d.ts +6 -0
  143. package/lib/typescript/blocks/index.d.ts.map +1 -0
  144. package/lib/typescript/blocks/primitives.d.ts +85 -0
  145. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  146. package/lib/typescript/blocks/primitivesIndex.d.ts +3 -0
  147. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  148. package/lib/typescript/components/ApprovalCard.d.ts +7 -0
  149. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  150. package/lib/typescript/components/AskBuoyHeader.d.ts +14 -0
  151. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  152. package/lib/typescript/components/AskBuoyIcon.d.ts +6 -0
  153. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  154. package/lib/typescript/components/AskBuoyModal.d.ts +13 -0
  155. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  156. package/lib/typescript/components/ChangesBar.d.ts +9 -0
  157. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  158. package/lib/typescript/components/Composer.d.ts +9 -0
  159. package/lib/typescript/components/Composer.d.ts.map +1 -0
  160. package/lib/typescript/components/EmptyState.d.ts +6 -0
  161. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  162. package/lib/typescript/components/Markdown.d.ts +23 -0
  163. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  164. package/lib/typescript/components/MessageList.d.ts +18 -0
  165. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  166. package/lib/typescript/components/TypingDots.d.ts +2 -0
  167. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  168. package/lib/typescript/index.d.ts +28 -0
  169. package/lib/typescript/index.d.ts.map +1 -0
  170. package/lib/typescript/preset.d.ts +61 -0
  171. package/lib/typescript/preset.d.ts.map +1 -0
  172. package/lib/typescript/store/askBuoyStore.d.ts +124 -0
  173. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  174. package/lib/typescript/store/useAskBuoy.d.ts +22 -0
  175. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  176. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +73 -0
  177. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  178. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts +2 -0
  179. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  180. package/lib/typescript/sync/wire.d.ts +17 -0
  181. package/lib/typescript/sync/wire.d.ts.map +1 -0
  182. package/lib/typescript/types.d.ts +119 -0
  183. package/lib/typescript/types.d.ts.map +1 -0
  184. package/package.json +83 -0
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Three pulsing dots — the "it heard you" signal between sending a message
5
+ * and the first streamed token. A static "…" glyph read as a finished (and
6
+ * confusing) answer.
7
+ *
8
+ * Native-driver opacity only, so it costs the JS thread nothing while the
9
+ * stream that replaces it is being parsed.
10
+ */
11
+ import { useEffect, useRef } from "react";
12
+ import { Animated, Easing, StyleSheet, View } from "react-native";
13
+ import { night } from "@buoy-gg/shared-ui";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ export function TypingDots() {
16
+ const dots = useRef([0, 1, 2].map(() => new Animated.Value(0.25))).current;
17
+ useEffect(() => {
18
+ const loops = dots.map((v, i) => Animated.loop(Animated.sequence([Animated.delay(i * 140), Animated.timing(v, {
19
+ toValue: 1,
20
+ duration: 320,
21
+ easing: Easing.inOut(Easing.ease),
22
+ useNativeDriver: true
23
+ }), Animated.timing(v, {
24
+ toValue: 0.25,
25
+ duration: 320,
26
+ easing: Easing.inOut(Easing.ease),
27
+ useNativeDriver: true
28
+ }), Animated.delay((2 - i) * 140)])));
29
+ loops.forEach(l => l.start());
30
+ return () => loops.forEach(l => l.stop());
31
+ }, [dots]);
32
+ return /*#__PURE__*/_jsx(View, {
33
+ style: styles.wrap,
34
+ testID: "buoy-ask-buoy-typing",
35
+ accessibilityLabel: "Thinking",
36
+ children: dots.map((v, i) => /*#__PURE__*/_jsx(Animated.View, {
37
+ style: [styles.dot, {
38
+ opacity: v
39
+ }]
40
+ }, i))
41
+ });
42
+ }
43
+ const styles = StyleSheet.create({
44
+ wrap: {
45
+ flexDirection: "row",
46
+ alignItems: "center",
47
+ gap: 5,
48
+ paddingVertical: 8,
49
+ paddingHorizontal: 2
50
+ },
51
+ dot: {
52
+ width: 7,
53
+ height: 7,
54
+ borderRadius: 4,
55
+ backgroundColor: night.color.textSecondary
56
+ }
57
+ });
58
+ //# sourceMappingURL=TypingDots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","Animated","Easing","StyleSheet","View","night","jsx","_jsx","TypingDots","dots","map","Value","current","loops","v","i","loop","sequence","delay","timing","toValue","duration","easing","inOut","ease","useNativeDriver","forEach","l","start","stop","style","styles","wrap","testID","accessibilityLabel","children","dot","opacity","create","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","width","height","borderRadius","backgroundColor","color","textSecondary"],"sourceRoot":"../../../src","sources":["components/TypingDots.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,QAAQ,EAAEC,MAAM,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACjE,SAASC,KAAK,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMC,IAAI,GAAGT,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAACU,GAAG,CAAC,MAAM,IAAIT,QAAQ,CAACU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAACC,OAAO;EAE1Eb,SAAS,CAAC,MAAM;IACd,MAAMc,KAAK,GAAGJ,IAAI,CAACC,GAAG,CAAC,CAACI,CAAC,EAAEC,CAAC,KAC1Bd,QAAQ,CAACe,IAAI,CACXf,QAAQ,CAACgB,QAAQ,CAAC,CAChBhB,QAAQ,CAACiB,KAAK,CAACH,CAAC,GAAG,GAAG,CAAC,EACvBd,QAAQ,CAACkB,MAAM,CAACL,CAAC,EAAE;MACjBM,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,GAAG;MACbC,MAAM,EAAEpB,MAAM,CAACqB,KAAK,CAACrB,MAAM,CAACsB,IAAI,CAAC;MACjCC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFxB,QAAQ,CAACkB,MAAM,CAACL,CAAC,EAAE;MACjBM,OAAO,EAAE,IAAI;MACbC,QAAQ,EAAE,GAAG;MACbC,MAAM,EAAEpB,MAAM,CAACqB,KAAK,CAACrB,MAAM,CAACsB,IAAI,CAAC;MACjCC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFxB,QAAQ,CAACiB,KAAK,CAAC,CAAC,CAAC,GAAGH,CAAC,IAAI,GAAG,CAAC,CAC9B,CACH,CACF,CAAC;IACDF,KAAK,CAACa,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;IAC/B,OAAO,MAAMf,KAAK,CAACa,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACE,IAAI,CAAC,CAAC,CAAC;EAC7C,CAAC,EAAE,CAACpB,IAAI,CAAC,CAAC;EAEV,oBACEF,IAAA,CAACH,IAAI;IAAC0B,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,MAAM,EAAC,sBAAsB;IAACC,kBAAkB,EAAC,UAAU;IAAAC,QAAA,EAClF1B,IAAI,CAACC,GAAG,CAAC,CAACI,CAAC,EAAEC,CAAC,kBACbR,IAAA,CAACN,QAAQ,CAACG,IAAI;MAAS0B,KAAK,EAAE,CAACC,MAAM,CAACK,GAAG,EAAE;QAAEC,OAAO,EAAEvB;MAAE,CAAC;IAAE,GAAvCC,CAAyC,CAC9D;EAAC,CACE,CAAC;AAEX;AAEA,MAAMgB,MAAM,GAAG5B,UAAU,CAACmC,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJO,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,CAAC;IACNC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE;EACrB,CAAC;EACDP,GAAG,EAAE;IACHQ,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE1C,KAAK,CAAC2C,KAAK,CAACC;EAC/B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @buoy-gg/ask-buoy — "Ask Buoy".
5
+ *
6
+ * A chat sheet that drives every other Buoy tool on behalf of someone who does
7
+ * not read code. The model runs on the company's own endpoint (see
8
+ * `AskBuoyConfig`), the tool calls go through the same `dispatchToolAction`
9
+ * seam a Scenario step uses, and anything it changes is listed in a bar with an
10
+ * Undo.
11
+ */
12
+ export { AskBuoyModal } from "./components/AskBuoyModal";
13
+ export { askBuoyToolPreset, createAskBuoyTool, AskBuoyIcon, ASK_BUOY_ICON_COLOR } from "./preset";
14
+ export { askBuoySyncAdapter, ASK_BUOY_ADAPTER_VERSION } from "./sync/askBuoySyncAdapter";
15
+ export { askBuoyStore } from "./store/askBuoyStore";
16
+ export { useAskBuoy, useAskBuoyState } from "./store/useAskBuoy";
17
+ export { redactForWire } from "./sync/wire";
18
+ export { BlockRenderer, BlockHandlersProvider, useBlockHandlers } from "./blocks";
19
+ export { Card as BlockCard, ActionRow as BlockActionRow, ProvenanceBadge } from "./blocks";
20
+ export { MessageActions, ReasoningStrip, ElapsedRow, QueuedComposer, ReloadDivider, Timestamp, EditableUserBubble, LivePill } from "./blocks";
21
+ export { Markdown } from "./components/Markdown";
22
+ // The real transcript pieces, exported so the example app's "chat scenes" page
23
+ // can stage conversations in the actual sheet chrome.
24
+ export { MessageList } from "./components/MessageList";
25
+ export { AskBuoyHeader } from "./components/AskBuoyHeader";
26
+ export { Composer } from "./components/Composer";
27
+ export { ChangesBar } from "./components/ChangesBar";
28
+ export { ApprovalCard } from "./components/ApprovalCard";
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The Ask Buoy tool preset.
5
+ *
6
+ * Manual chrome (`component` renders its own JsModal) rather than the
7
+ * declarative `modal` config, because ToolModalShell forwards neither a footer
8
+ * slot nor `initialHeight` — and a chat needs a sticky composer and more than
9
+ * the default 400pt of sheet.
10
+ *
11
+ * The config is closed over at creation time rather than read from a store, so
12
+ * the endpoint and headers come from the app's own code on every render and
13
+ * there is never a copy of them sitting anywhere Buoy persists.
14
+ */
15
+ import { AskBuoyIcon, ASK_BUOY_ICON_COLOR } from "./components/AskBuoyIcon";
16
+ import { AskBuoyModal } from "./components/AskBuoyModal";
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ export { AskBuoyIcon, ASK_BUOY_ICON_COLOR };
19
+ export const askBuoyToolPreset = {
20
+ id: "ask-buoy",
21
+ name: "ASK BUOY",
22
+ description: "Ask about this app in plain English",
23
+ slot: "both",
24
+ // Set here rather than in floating-tools-core's `toolColors` map: that map
25
+ // is already missing half the shipped tools, so the web twin falls back to a
26
+ // generic accent for them. A color on the preset is the one place both
27
+ // native and web read.
28
+ color: ASK_BUOY_ICON_COLOR,
29
+ icon: ({
30
+ size,
31
+ color
32
+ }) => /*#__PURE__*/_jsx(AskBuoyIcon, {
33
+ size: size,
34
+ color: color || ASK_BUOY_ICON_COLOR
35
+ }),
36
+ component: AskBuoyModal
37
+ };
38
+
39
+ /**
40
+ * `endpoint` and `model` are REQUIRED at the type level. This used to extend
41
+ * Partial<AskBuoyConfig> with a cast, so a missing endpoint type-checked and
42
+ * only surfaced as a runtime "not set up yet" — the wrong moment to learn it.
43
+ */
44
+
45
+ /**
46
+ * Wire Ask Buoy to your team's AI endpoint.
47
+ *
48
+ * @example
49
+ * createAskBuoyTool({
50
+ * endpoint: "https://ai.acme.com/v1/messages",
51
+ * model: "claude-sonnet-4-5",
52
+ * headers: async () => ({ Authorization: `Bearer ${await auth.getToken()}` }),
53
+ * context: { notes: ["user.rewards.points = loyalty points"] },
54
+ * })
55
+ */
56
+ export function createAskBuoyTool(config) {
57
+ const {
58
+ name,
59
+ description,
60
+ ...rest
61
+ } = config;
62
+ const resolved = rest;
63
+ return {
64
+ ...askBuoyToolPreset,
65
+ name: name ?? askBuoyToolPreset.name,
66
+ description: description ?? askBuoyToolPreset.description,
67
+ component: props => /*#__PURE__*/_jsx(AskBuoyModal, {
68
+ ...props,
69
+ config: resolved
70
+ })
71
+ };
72
+ }
73
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AskBuoyIcon","ASK_BUOY_ICON_COLOR","AskBuoyModal","jsx","_jsx","askBuoyToolPreset","id","name","description","slot","color","icon","size","component","createAskBuoyTool","config","rest","resolved","props"],"sourceRoot":"../../src","sources":["preset.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,mBAAmB,QAAQ,0BAA0B;AAC3E,SAASC,YAAY,QAAgC,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGjF,SAASJ,WAAW,EAAEC,mBAAmB;AAEzC,OAAO,MAAMI,iBAAiB,GAAG;EAC/BC,EAAE,EAAE,UAAU;EACdC,IAAI,EAAE,UAAU;EAChBC,WAAW,EAAE,qCAAqC;EAClDC,IAAI,EAAE,MAAe;EACrB;EACA;EACA;EACA;EACAC,KAAK,EAAET,mBAAmB;EAC1BU,IAAI,EAAEA,CAAC;IAAEC,IAAI;IAAEF;EAAwC,CAAC,kBACtDN,IAAA,CAACJ,WAAW;IAACY,IAAI,EAAEA,IAAK;IAACF,KAAK,EAAEA,KAAK,IAAIT;EAAoB,CAAE,CAChE;EACDY,SAAS,EAAEX;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASY,iBAAiBA,CAACC,MAAyB,EAAE;EAC3D,MAAM;IAAER,IAAI;IAAEC,WAAW;IAAE,GAAGQ;EAAK,CAAC,GAAGD,MAAM;EAC7C,MAAME,QAAuB,GAAGD,IAAI;EACpC,OAAO;IACL,GAAGX,iBAAiB;IACpBE,IAAI,EAAEA,IAAI,IAAIF,iBAAiB,CAACE,IAAI;IACpCC,WAAW,EAAEA,WAAW,IAAIH,iBAAiB,CAACG,WAAW;IACzDK,SAAS,EAAGK,KAAwB,iBAClCd,IAAA,CAACF,YAAY;MAAA,GAAKgB,KAAK;MAAEH,MAAM,EAAEE;IAAS,CAAE;EAEhD,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Conversation state for the sheet.
5
+ *
6
+ * A module-level store rather than component state for two reasons: the sheet
7
+ * is unmounted whenever the tool is closed or minimised (and a conversation
8
+ * that vanished because someone tapped away would be maddening), and the sync
9
+ * adapter needs to read the same transcript to show it on the desktop.
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.
15
+ */
16
+
17
+ /** A block in a message, and (for receipts) the tool call that produced it. */
18
+
19
+ let seq = 0;
20
+ const nextId = () => `m${++seq}`;
21
+ let state = {
22
+ messages: [],
23
+ busy: false,
24
+ pending: null,
25
+ notice: null,
26
+ configured: false,
27
+ answers: {},
28
+ awaitingBlockId: null,
29
+ actionState: {},
30
+ queued: null,
31
+ usage: {
32
+ input: 0,
33
+ output: 0,
34
+ requests: 0
35
+ }
36
+ };
37
+ const listeners = new Set();
38
+ let ledgerRef = null;
39
+
40
+ /**
41
+ * The session outlives the sheet the same way the transcript does. Session and
42
+ * ledger used to be per-mount: closing and reopening the tool kept the visible
43
+ * conversation but silently swapped in an empty ledger and a blank model
44
+ * memory — the undo bar vanished while the agent's changes stayed live in the
45
+ * app. Held here, keyed by a config signature so a real reconfiguration
46
+ * (different endpoint/model/tool set) still rebuilds.
47
+ */
48
+ let heldSession = null;
49
+ function set(next) {
50
+ state = {
51
+ ...state,
52
+ ...next
53
+ };
54
+ for (const fn of listeners) {
55
+ try {
56
+ fn();
57
+ } catch {
58
+ // A throwing subscriber must not take the transcript down mid-answer.
59
+ }
60
+ }
61
+ }
62
+ export const askBuoyStore = {
63
+ getState: () => state,
64
+ subscribe(fn) {
65
+ listeners.add(fn);
66
+ return () => listeners.delete(fn);
67
+ },
68
+ setLedger(ledger) {
69
+ ledgerRef = ledger;
70
+ },
71
+ getLedger() {
72
+ return ledgerRef;
73
+ },
74
+ holdSession(session, signature) {
75
+ heldSession = {
76
+ session,
77
+ signature
78
+ };
79
+ },
80
+ getHeldSession() {
81
+ return heldSession;
82
+ },
83
+ setNotice(notice) {
84
+ set({
85
+ notice
86
+ });
87
+ },
88
+ setConfigured(configured) {
89
+ if (configured !== state.configured) set({
90
+ configured
91
+ });
92
+ },
93
+ addUser(text) {
94
+ set({
95
+ messages: [...state.messages, {
96
+ id: nextId(),
97
+ role: "user",
98
+ text,
99
+ toolCalls: [],
100
+ blocks: []
101
+ }],
102
+ busy: true
103
+ });
104
+ },
105
+ /** Mark a turn as running without adding a bubble — the retry path. */
106
+ beginTurn() {
107
+ set({
108
+ busy: true
109
+ });
110
+ },
111
+ /** Park a message typed mid-turn instead of silently dropping it. */
112
+ setQueued(text) {
113
+ set({
114
+ queued: text
115
+ });
116
+ },
117
+ /** Drop one message — the failed assistant bubble a retry replaces. */
118
+ removeMessage(id) {
119
+ set({
120
+ messages: state.messages.filter(m => m.id !== id)
121
+ });
122
+ },
123
+ /** The user answered (or skipped) an Ask block. */
124
+ recordAnswer(answer) {
125
+ set({
126
+ answers: {
127
+ ...state.answers,
128
+ [answer.blockId]: answer
129
+ },
130
+ awaitingBlockId: state.awaitingBlockId === answer.blockId ? null : state.awaitingBlockId
131
+ });
132
+ },
133
+ setActionState(key, value) {
134
+ const next = {
135
+ ...state.actionState
136
+ };
137
+ if (value === null) delete next[key];else next[key] = value;
138
+ set({
139
+ actionState: next
140
+ });
141
+ },
142
+ /** Open a new assistant bubble for the turn that is about to stream. */
143
+ startAssistant() {
144
+ const id = nextId();
145
+ set({
146
+ messages: [...state.messages, {
147
+ id,
148
+ role: "assistant",
149
+ text: "",
150
+ toolCalls: [],
151
+ blocks: [],
152
+ streaming: true
153
+ }]
154
+ });
155
+ return id;
156
+ },
157
+ /**
158
+ * Fold one engine event into the open assistant message.
159
+ *
160
+ * Tool calls render as rows inside the bubble rather than as raw payloads:
161
+ * the label is already domain-flavoured ("Set points to 1500"), which is the
162
+ * only form a non-developer can actually check.
163
+ */
164
+ applyEvent(messageId, ev) {
165
+ const messages = state.messages.map(m => {
166
+ if (m.id !== messageId) return m;
167
+ switch (ev.type) {
168
+ case "text":
169
+ return {
170
+ ...m,
171
+ text: m.breakBeforeNextText && m.text ? `${m.text.trimEnd()}\n\n${ev.delta}` : m.text + ev.delta,
172
+ breakBeforeNextText: false
173
+ };
174
+ case "tool-start":
175
+ return {
176
+ ...m,
177
+ toolCalls: [...m.toolCalls, {
178
+ id: ev.id,
179
+ toolId: ev.toolId,
180
+ action: ev.action,
181
+ label: ev.label,
182
+ description: ev.description,
183
+ status: "running"
184
+ }]
185
+ };
186
+ case "tool-end":
187
+ return {
188
+ ...m,
189
+ breakBeforeNextText: true,
190
+ toolCalls: m.toolCalls.map(c => c.id === ev.id ? {
191
+ ...c,
192
+ status: !ev.ok && ev.summary === "refused" ? "refused" : ev.ok ? "ok" : "failed",
193
+ summary: ev.summary
194
+ } : c)
195
+ };
196
+ case "block":
197
+ return {
198
+ ...m,
199
+ breakBeforeNextText: true,
200
+ blocks: [...m.blocks, {
201
+ block: ev.block,
202
+ forToolCallId: ev.forToolCallId
203
+ }]
204
+ };
205
+ case "error":
206
+ return {
207
+ ...m,
208
+ error: ev.message
209
+ };
210
+ default:
211
+ return m;
212
+ }
213
+ });
214
+ set({
215
+ messages,
216
+ ...(ev.type === "awaiting-user" ? {
217
+ awaitingBlockId: ev.blockId
218
+ } : {}),
219
+ ...(ev.type === "usage" ? {
220
+ usage: {
221
+ input: state.usage.input + ev.input,
222
+ output: state.usage.output + ev.output,
223
+ requests: state.usage.requests + 1
224
+ }
225
+ } : {})
226
+ });
227
+ },
228
+ finishAssistant(messageId) {
229
+ set({
230
+ messages: state.messages.map(m => m.id === messageId ? {
231
+ ...m,
232
+ streaming: false
233
+ } : m),
234
+ busy: false
235
+ });
236
+ },
237
+ askApproval(input) {
238
+ return new Promise(resolve => {
239
+ set({
240
+ pending: {
241
+ ...input,
242
+ resolve
243
+ }
244
+ });
245
+ });
246
+ },
247
+ answerApproval(approved) {
248
+ const pending = state.pending;
249
+ set({
250
+ pending: null
251
+ });
252
+ pending?.resolve(approved);
253
+ },
254
+ reset() {
255
+ // Reject anything still waiting, or the turn hangs forever on a promise
256
+ // whose only resolver just left the screen.
257
+ state.pending?.resolve(false);
258
+ set({
259
+ messages: [],
260
+ busy: false,
261
+ pending: null,
262
+ notice: null,
263
+ answers: {},
264
+ awaitingBlockId: null,
265
+ actionState: {},
266
+ queued: null,
267
+ usage: {
268
+ input: 0,
269
+ output: 0,
270
+ requests: 0
271
+ }
272
+ });
273
+ }
274
+ };
275
+ //# sourceMappingURL=askBuoyStore.js.map
@@ -0,0 +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":[]}