@buoy-gg/ask-buoy 7.0.38 → 7.0.40

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 (306) hide show
  1. package/lib/commonjs/blocks/AskBlocks.js +338 -1
  2. package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
  3. package/lib/commonjs/blocks/BlockRenderer.js +262 -1
  4. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
  5. package/lib/commonjs/blocks/ChromePrototypes.js +514 -1
  6. package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
  7. package/lib/commonjs/blocks/DataBlocks.js +781 -1
  8. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  9. package/lib/commonjs/blocks/ExtraBlocks.js +1860 -1
  10. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  11. package/lib/commonjs/blocks/MediaBlocks.js +156 -1
  12. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
  13. package/lib/commonjs/blocks/ReceiptBlocks.js +586 -1
  14. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
  15. package/lib/commonjs/blocks/blockText.js +60 -1
  16. package/lib/commonjs/blocks/blockText.js.map +1 -0
  17. package/lib/commonjs/blocks/blockText.test.js +53 -1
  18. package/lib/commonjs/blocks/blockText.test.js.map +1 -0
  19. package/lib/commonjs/blocks/context.js +42 -1
  20. package/lib/commonjs/blocks/context.js.map +1 -0
  21. package/lib/commonjs/blocks/icons.js +96 -1
  22. package/lib/commonjs/blocks/icons.js.map +1 -0
  23. package/lib/commonjs/blocks/index.js +95 -1
  24. package/lib/commonjs/blocks/index.js.map +1 -0
  25. package/lib/commonjs/blocks/listRow.test.js +55 -1
  26. package/lib/commonjs/blocks/listRow.test.js.map +1 -0
  27. package/lib/commonjs/blocks/pageState.js +34 -1
  28. package/lib/commonjs/blocks/pageState.js.map +1 -0
  29. package/lib/commonjs/blocks/pageState.test.js +57 -1
  30. package/lib/commonjs/blocks/pageState.test.js.map +1 -0
  31. package/lib/commonjs/blocks/primitives.js +457 -1
  32. package/lib/commonjs/blocks/primitives.js.map +1 -0
  33. package/lib/commonjs/blocks/primitivesIndex.js +62 -1
  34. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  35. package/lib/commonjs/components/ApprovalCard.js +297 -1
  36. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  37. package/lib/commonjs/components/AskBuoyHeader.js +196 -1
  38. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  39. package/lib/commonjs/components/AskBuoyIcon.js +19 -1
  40. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  41. package/lib/commonjs/components/AskBuoyModal.js +479 -1
  42. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  43. package/lib/commonjs/components/AskBuoySettings.js +181 -1
  44. package/lib/commonjs/components/AskBuoySettings.js.map +1 -0
  45. package/lib/commonjs/components/ChangesBar.js +211 -1
  46. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  47. package/lib/commonjs/components/Composer.js +255 -1
  48. package/lib/commonjs/components/Composer.js.map +1 -0
  49. package/lib/commonjs/components/EmptyState.js +161 -1
  50. package/lib/commonjs/components/EmptyState.js.map +1 -0
  51. package/lib/commonjs/components/KeyboardPad.js +80 -1
  52. package/lib/commonjs/components/KeyboardPad.js.map +1 -0
  53. package/lib/commonjs/components/Markdown.js +310 -1
  54. package/lib/commonjs/components/Markdown.js.map +1 -0
  55. package/lib/commonjs/components/MessageList.js +970 -1
  56. package/lib/commonjs/components/MessageList.js.map +1 -0
  57. package/lib/commonjs/components/QueuedMessages.js +145 -1
  58. package/lib/commonjs/components/QueuedMessages.js.map +1 -0
  59. package/lib/commonjs/components/ThinkingStrip.js +223 -1
  60. package/lib/commonjs/components/ThinkingStrip.js.map +1 -0
  61. package/lib/commonjs/components/TypingDots.js +63 -1
  62. package/lib/commonjs/components/TypingDots.js.map +1 -0
  63. package/lib/commonjs/components/markdownParse.js +131 -1
  64. package/lib/commonjs/components/markdownParse.js.map +1 -0
  65. package/lib/commonjs/components/markdownParse.test.js +99 -1
  66. package/lib/commonjs/components/markdownParse.test.js.map +1 -0
  67. package/lib/commonjs/components/useCopyAction.js +50 -1
  68. package/lib/commonjs/components/useCopyAction.js.map +1 -0
  69. package/lib/commonjs/index.js +252 -1
  70. package/lib/commonjs/index.js.map +1 -0
  71. package/lib/commonjs/preset.js +91 -1
  72. package/lib/commonjs/preset.js.map +1 -0
  73. package/lib/commonjs/store/activityGroups.js +110 -1
  74. package/lib/commonjs/store/activityGroups.js.map +1 -0
  75. package/lib/commonjs/store/activityGroups.test.js +78 -1
  76. package/lib/commonjs/store/activityGroups.test.js.map +1 -0
  77. package/lib/commonjs/store/askBuoySettings.js +72 -1
  78. package/lib/commonjs/store/askBuoySettings.js.map +1 -0
  79. package/lib/commonjs/store/askBuoyStore.js +589 -1
  80. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  81. package/lib/commonjs/store/blockPlacement.js +64 -1
  82. package/lib/commonjs/store/blockPlacement.js.map +1 -0
  83. package/lib/commonjs/store/blockPlacement.test.js +123 -1
  84. package/lib/commonjs/store/blockPlacement.test.js.map +1 -0
  85. package/lib/commonjs/store/queue.test.js +150 -1
  86. package/lib/commonjs/store/queue.test.js.map +1 -0
  87. package/lib/commonjs/store/resetConversation.js +77 -1
  88. package/lib/commonjs/store/resetConversation.js.map +1 -0
  89. package/lib/commonjs/store/restorePending.test.js +63 -1
  90. package/lib/commonjs/store/restorePending.test.js.map +1 -0
  91. package/lib/commonjs/store/restoredIds.test.js +47 -1
  92. package/lib/commonjs/store/restoredIds.test.js.map +1 -0
  93. package/lib/commonjs/store/suggestions.js +54 -1
  94. package/lib/commonjs/store/suggestions.js.map +1 -0
  95. package/lib/commonjs/store/suggestions.test.js +58 -1
  96. package/lib/commonjs/store/suggestions.test.js.map +1 -0
  97. package/lib/commonjs/store/systemLine.test.js +77 -1
  98. package/lib/commonjs/store/systemLine.test.js.map +1 -0
  99. package/lib/commonjs/store/ticketPrompt.js +17 -1
  100. package/lib/commonjs/store/ticketPrompt.js.map +1 -0
  101. package/lib/commonjs/store/traceText.js +81 -1
  102. package/lib/commonjs/store/traceText.js.map +1 -0
  103. package/lib/commonjs/store/traceText.test.js +112 -1
  104. package/lib/commonjs/store/traceText.test.js.map +1 -0
  105. package/lib/commonjs/store/transcriptPersistence.js +297 -1
  106. package/lib/commonjs/store/transcriptPersistence.js.map +1 -0
  107. package/lib/commonjs/store/transcriptPersistence.test.js +333 -1
  108. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -0
  109. package/lib/commonjs/store/turnRendering.test.js +151 -1
  110. package/lib/commonjs/store/turnRendering.test.js.map +1 -0
  111. package/lib/commonjs/store/useAskBuoy.js +651 -1
  112. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  113. package/lib/commonjs/store/useAskBuoySettings.js +14 -1
  114. package/lib/commonjs/store/useAskBuoySettings.js.map +1 -0
  115. package/lib/commonjs/sync/askBuoySyncAdapter.js +153 -1
  116. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  117. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +141 -1
  118. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  119. package/lib/commonjs/sync/wire.js +58 -1
  120. package/lib/commonjs/sync/wire.js.map +1 -0
  121. package/lib/commonjs/types.js +6 -1
  122. package/lib/commonjs/types.js.map +1 -0
  123. package/lib/module/blocks/AskBlocks.js +331 -1
  124. package/lib/module/blocks/AskBlocks.js.map +1 -0
  125. package/lib/module/blocks/BlockRenderer.js +257 -1
  126. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  127. package/lib/module/blocks/ChromePrototypes.js +503 -1
  128. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  129. package/lib/module/blocks/DataBlocks.js +767 -1
  130. package/lib/module/blocks/DataBlocks.js.map +1 -0
  131. package/lib/module/blocks/ExtraBlocks.js +1833 -1
  132. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  133. package/lib/module/blocks/MediaBlocks.js +151 -1
  134. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  135. package/lib/module/blocks/ReceiptBlocks.js +574 -1
  136. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  137. package/lib/module/blocks/blockText.js +55 -1
  138. package/lib/module/blocks/blockText.js.map +1 -0
  139. package/lib/module/blocks/blockText.test.js +53 -1
  140. package/lib/module/blocks/blockText.test.js.map +1 -0
  141. package/lib/module/blocks/context.js +35 -1
  142. package/lib/module/blocks/context.js.map +1 -0
  143. package/lib/module/blocks/icons.js +91 -1
  144. package/lib/module/blocks/icons.js.map +1 -0
  145. package/lib/module/blocks/index.js +8 -1
  146. package/lib/module/blocks/index.js.map +1 -0
  147. package/lib/module/blocks/listRow.test.js +56 -1
  148. package/lib/module/blocks/listRow.test.js.map +1 -0
  149. package/lib/module/blocks/pageState.js +30 -1
  150. package/lib/module/blocks/pageState.js.map +1 -0
  151. package/lib/module/blocks/pageState.test.js +56 -1
  152. package/lib/module/blocks/pageState.test.js.map +1 -0
  153. package/lib/module/blocks/primitives.js +445 -1
  154. package/lib/module/blocks/primitives.js.map +1 -0
  155. package/lib/module/blocks/primitivesIndex.js +5 -1
  156. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  157. package/lib/module/components/ApprovalCard.js +292 -1
  158. package/lib/module/components/ApprovalCard.js.map +1 -0
  159. package/lib/module/components/AskBuoyHeader.js +193 -1
  160. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  161. package/lib/module/components/AskBuoyIcon.js +8 -1
  162. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  163. package/lib/module/components/AskBuoyModal.js +474 -1
  164. package/lib/module/components/AskBuoyModal.js.map +1 -0
  165. package/lib/module/components/AskBuoySettings.js +176 -1
  166. package/lib/module/components/AskBuoySettings.js.map +1 -0
  167. package/lib/module/components/ChangesBar.js +206 -1
  168. package/lib/module/components/ChangesBar.js.map +1 -0
  169. package/lib/module/components/Composer.js +250 -1
  170. package/lib/module/components/Composer.js.map +1 -0
  171. package/lib/module/components/EmptyState.js +156 -1
  172. package/lib/module/components/EmptyState.js.map +1 -0
  173. package/lib/module/components/KeyboardPad.js +75 -1
  174. package/lib/module/components/KeyboardPad.js.map +1 -0
  175. package/lib/module/components/Markdown.js +305 -1
  176. package/lib/module/components/Markdown.js.map +1 -0
  177. package/lib/module/components/MessageList.js +964 -1
  178. package/lib/module/components/MessageList.js.map +1 -0
  179. package/lib/module/components/QueuedMessages.js +140 -1
  180. package/lib/module/components/QueuedMessages.js.map +1 -0
  181. package/lib/module/components/ThinkingStrip.js +218 -1
  182. package/lib/module/components/ThinkingStrip.js.map +1 -0
  183. package/lib/module/components/TypingDots.js +58 -1
  184. package/lib/module/components/TypingDots.js.map +1 -0
  185. package/lib/module/components/markdownParse.js +125 -1
  186. package/lib/module/components/markdownParse.js.map +1 -0
  187. package/lib/module/components/markdownParse.test.js +98 -1
  188. package/lib/module/components/markdownParse.test.js.map +1 -0
  189. package/lib/module/components/useCopyAction.js +46 -1
  190. package/lib/module/components/useCopyAction.js.map +1 -0
  191. package/lib/module/index.js +34 -1
  192. package/lib/module/index.js.map +1 -0
  193. package/lib/module/preset.js +74 -1
  194. package/lib/module/preset.js.map +1 -0
  195. package/lib/module/store/activityGroups.js +103 -1
  196. package/lib/module/store/activityGroups.js.map +1 -0
  197. package/lib/module/store/activityGroups.test.js +77 -1
  198. package/lib/module/store/activityGroups.test.js.map +1 -0
  199. package/lib/module/store/askBuoySettings.js +67 -1
  200. package/lib/module/store/askBuoySettings.js.map +1 -0
  201. package/lib/module/store/askBuoyStore.js +583 -1
  202. package/lib/module/store/askBuoyStore.js.map +1 -0
  203. package/lib/module/store/blockPlacement.js +59 -1
  204. package/lib/module/store/blockPlacement.js.map +1 -0
  205. package/lib/module/store/blockPlacement.test.js +122 -1
  206. package/lib/module/store/blockPlacement.test.js.map +1 -0
  207. package/lib/module/store/queue.test.js +149 -1
  208. package/lib/module/store/queue.test.js.map +1 -0
  209. package/lib/module/store/resetConversation.js +72 -1
  210. package/lib/module/store/resetConversation.js.map +1 -0
  211. package/lib/module/store/restorePending.test.js +62 -1
  212. package/lib/module/store/restorePending.test.js.map +1 -0
  213. package/lib/module/store/restoredIds.test.js +46 -1
  214. package/lib/module/store/restoredIds.test.js.map +1 -0
  215. package/lib/module/store/suggestions.js +49 -1
  216. package/lib/module/store/suggestions.js.map +1 -0
  217. package/lib/module/store/suggestions.test.js +57 -1
  218. package/lib/module/store/suggestions.test.js.map +1 -0
  219. package/lib/module/store/systemLine.test.js +76 -1
  220. package/lib/module/store/systemLine.test.js.map +1 -0
  221. package/lib/module/store/ticketPrompt.js +13 -1
  222. package/lib/module/store/ticketPrompt.js.map +1 -0
  223. package/lib/module/store/traceText.js +75 -1
  224. package/lib/module/store/traceText.js.map +1 -0
  225. package/lib/module/store/traceText.test.js +111 -1
  226. package/lib/module/store/traceText.test.js.map +1 -0
  227. package/lib/module/store/transcriptPersistence.js +287 -1
  228. package/lib/module/store/transcriptPersistence.js.map +1 -0
  229. package/lib/module/store/transcriptPersistence.test.js +332 -1
  230. package/lib/module/store/transcriptPersistence.test.js.map +1 -0
  231. package/lib/module/store/turnRendering.test.js +150 -1
  232. package/lib/module/store/turnRendering.test.js.map +1 -0
  233. package/lib/module/store/useAskBuoy.js +646 -1
  234. package/lib/module/store/useAskBuoy.js.map +1 -0
  235. package/lib/module/store/useAskBuoySettings.js +9 -1
  236. package/lib/module/store/useAskBuoySettings.js.map +1 -0
  237. package/lib/module/sync/askBuoySyncAdapter.js +148 -1
  238. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  239. package/lib/module/sync/askBuoySyncAdapter.test.js +140 -1
  240. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  241. package/lib/module/sync/wire.js +47 -1
  242. package/lib/module/sync/wire.js.map +1 -0
  243. package/lib/module/types.js +4 -1
  244. package/lib/module/types.js.map +1 -0
  245. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  246. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  247. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  248. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  249. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  250. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  251. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  252. package/lib/typescript/blocks/blockText.d.ts.map +1 -0
  253. package/lib/typescript/blocks/blockText.test.d.ts.map +1 -0
  254. package/lib/typescript/blocks/context.d.ts.map +1 -0
  255. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  256. package/lib/typescript/blocks/index.d.ts.map +1 -0
  257. package/lib/typescript/blocks/listRow.test.d.ts.map +1 -0
  258. package/lib/typescript/blocks/pageState.d.ts.map +1 -0
  259. package/lib/typescript/blocks/pageState.test.d.ts.map +1 -0
  260. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  261. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  262. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  263. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  264. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  265. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  266. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -0
  267. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  268. package/lib/typescript/components/Composer.d.ts.map +1 -0
  269. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  270. package/lib/typescript/components/KeyboardPad.d.ts.map +1 -0
  271. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  272. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  273. package/lib/typescript/components/QueuedMessages.d.ts.map +1 -0
  274. package/lib/typescript/components/ThinkingStrip.d.ts.map +1 -0
  275. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  276. package/lib/typescript/components/markdownParse.d.ts.map +1 -0
  277. package/lib/typescript/components/markdownParse.test.d.ts.map +1 -0
  278. package/lib/typescript/components/useCopyAction.d.ts.map +1 -0
  279. package/lib/typescript/index.d.ts.map +1 -0
  280. package/lib/typescript/preset.d.ts.map +1 -0
  281. package/lib/typescript/store/activityGroups.d.ts.map +1 -0
  282. package/lib/typescript/store/activityGroups.test.d.ts.map +1 -0
  283. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -0
  284. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  285. package/lib/typescript/store/blockPlacement.d.ts.map +1 -0
  286. package/lib/typescript/store/blockPlacement.test.d.ts.map +1 -0
  287. package/lib/typescript/store/queue.test.d.ts.map +1 -0
  288. package/lib/typescript/store/resetConversation.d.ts.map +1 -0
  289. package/lib/typescript/store/restorePending.test.d.ts.map +1 -0
  290. package/lib/typescript/store/restoredIds.test.d.ts.map +1 -0
  291. package/lib/typescript/store/suggestions.d.ts.map +1 -0
  292. package/lib/typescript/store/suggestions.test.d.ts.map +1 -0
  293. package/lib/typescript/store/systemLine.test.d.ts.map +1 -0
  294. package/lib/typescript/store/ticketPrompt.d.ts.map +1 -0
  295. package/lib/typescript/store/traceText.d.ts.map +1 -0
  296. package/lib/typescript/store/traceText.test.d.ts.map +1 -0
  297. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -0
  298. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +1 -0
  299. package/lib/typescript/store/turnRendering.test.d.ts.map +1 -0
  300. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  301. package/lib/typescript/store/useAskBuoySettings.d.ts.map +1 -0
  302. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  303. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  304. package/lib/typescript/sync/wire.d.ts.map +1 -0
  305. package/lib/typescript/types.d.ts.map +1 -0
  306. package/package.json +8 -8
@@ -1 +1,54 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SUGGESTIONS=exports.MAX_SUGGESTIONS=void 0,exports.pickSuggestions=pickSuggestions;const SUGGESTIONS=exports.SUGGESTIONS=[{text:"Why is this screen empty?"},{text:"What did the last few network calls return?",needs:"network"},{text:"Show me what's saved for this user",needs:"storage"},{text:"Make the next request to this screen fail with a 500",needs:"network",write:!0,devOnly:!0},{text:"Who am I signed in as right now?"},{text:"Did anything crash or log an error recently?",needs:"console"}],MAX_SUGGESTIONS=exports.MAX_SUGGESTIONS=4;function pickSuggestions(e){const t=e.availableToolIds.length>0;return SUGGESTIONS.filter(s=>(!s.write||!e.readOnly)&&(!s.devOnly||!e.isRelease)&&(!s.needs||t&&e.availableToolIds.includes(s.needs))).slice(0,MAX_SUGGESTIONS).map(e=>e.text)}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SUGGESTIONS = exports.MAX_SUGGESTIONS = void 0;
7
+ exports.pickSuggestions = pickSuggestions;
8
+ /**
9
+ * The empty state's "try asking" chips, filtered to what will actually work.
10
+ *
11
+ * The list was static, so a release build offered "Make the next request fail
12
+ * with a 500" directly above a line saying simulations need a dev build — and
13
+ * the agent then refused the very thing the screen had just suggested. First
14
+ * impression: broken. Each chip now says what it needs; the empty state keeps
15
+ * the ones this device, build and policy can honour.
16
+ *
17
+ * Deterministic on purpose: no model call, no navigation, no guessed route
18
+ * names or account ids. When the tool registry has not reported yet (it fills
19
+ * in a frame or two after open) only the chips that need nothing are shown —
20
+ * a short list that grows beats a long one that shrinks.
21
+ */
22
+
23
+ const SUGGESTIONS = exports.SUGGESTIONS = [{
24
+ text: "Why is this screen empty?"
25
+ }, {
26
+ text: "What did the last few network calls return?",
27
+ needs: "network"
28
+ }, {
29
+ text: "Show me what's saved for this user",
30
+ needs: "storage"
31
+ }, {
32
+ text: "Make the next request to this screen fail with a 500",
33
+ needs: "network",
34
+ write: true,
35
+ devOnly: true
36
+ }, {
37
+ text: "Who am I signed in as right now?"
38
+ }, {
39
+ text: "Did anything crash or log an error recently?",
40
+ needs: "console"
41
+ }];
42
+
43
+ /** At most this many chips — the rest of the screen is the point. */
44
+ const MAX_SUGGESTIONS = exports.MAX_SUGGESTIONS = 4;
45
+ function pickSuggestions(input) {
46
+ const known = input.availableToolIds.length > 0;
47
+ return SUGGESTIONS.filter(s => {
48
+ if (s.write && input.readOnly) return false;
49
+ if (s.devOnly && input.isRelease) return false;
50
+ if (s.needs) return known && input.availableToolIds.includes(s.needs);
51
+ return true;
52
+ }).slice(0, MAX_SUGGESTIONS).map(s => s.text);
53
+ }
54
+ //# sourceMappingURL=suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SUGGESTIONS","exports","text","needs","write","devOnly","MAX_SUGGESTIONS","pickSuggestions","input","known","availableToolIds","length","filter","s","readOnly","isRelease","includes","slice","map"],"sourceRoot":"../../../src","sources":["store/suggestions.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWO,MAAMA,WAAyB,GAAAC,OAAA,CAAAD,WAAA,GAAG,CACvC;EAAEE,IAAI,EAAE;AAA4B,CAAC,EACrC;EAAEA,IAAI,EAAE,6CAA6C;EAAEC,KAAK,EAAE;AAAU,CAAC,EACzE;EAAED,IAAI,EAAE,oCAAoC;EAAEC,KAAK,EAAE;AAAU,CAAC,EAChE;EAAED,IAAI,EAAE,sDAAsD;EAAEC,KAAK,EAAE,SAAS;EAAEC,KAAK,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAK,CAAC,EAC9G;EAAEH,IAAI,EAAE;AAAmC,CAAC,EAC5C;EAAEA,IAAI,EAAE,8CAA8C;EAAEC,KAAK,EAAE;AAAU,CAAC,CAC3E;;AAED;AACO,MAAMG,eAAe,GAAAL,OAAA,CAAAK,eAAA,GAAG,CAAC;AAEzB,SAASC,eAAeA,CAACC,KAI/B,EAAY;EACX,MAAMC,KAAK,GAAGD,KAAK,CAACE,gBAAgB,CAACC,MAAM,GAAG,CAAC;EAC/C,OAAOX,WAAW,CAACY,MAAM,CAAEC,CAAC,IAAK;IAC/B,IAAIA,CAAC,CAACT,KAAK,IAAII,KAAK,CAACM,QAAQ,EAAE,OAAO,KAAK;IAC3C,IAAID,CAAC,CAACR,OAAO,IAAIG,KAAK,CAACO,SAAS,EAAE,OAAO,KAAK;IAC9C,IAAIF,CAAC,CAACV,KAAK,EAAE,OAAOM,KAAK,IAAID,KAAK,CAACE,gBAAgB,CAACM,QAAQ,CAACH,CAAC,CAACV,KAAK,CAAC;IACrE,OAAO,IAAI;EACb,CAAC,CAAC,CACCc,KAAK,CAAC,CAAC,EAAEX,eAAe,CAAC,CACzBY,GAAG,CAAEL,CAAC,IAAKA,CAAC,CAACX,IAAI,CAAC;AACvB","ignoreList":[]}
@@ -1 +1,58 @@
1
- "use strict";var _vitest=require("vitest"),_suggestions=require("./suggestions");const all=["network","storage","console","query"];(0,_vitest.describe)("pickSuggestions",()=>{(0,_vitest.it)("offers the simulation only on a dev build that may write",()=>{const e=(0,_suggestions.pickSuggestions)({availableToolIds:all,readOnly:!1,isRelease:!1});(0,_vitest.expect)(e).toContain("Make the next request to this screen fail with a 500");const t=(0,_suggestions.pickSuggestions)({availableToolIds:all,readOnly:!1,isRelease:!0});(0,_vitest.expect)(t).not.toContain("Make the next request to this screen fail with a 500");const s=(0,_suggestions.pickSuggestions)({availableToolIds:all,readOnly:!0,isRelease:!1});(0,_vitest.expect)(s).not.toContain("Make the next request to this screen fail with a 500")}),(0,_vitest.it)("drops chips whose tool is not on this device",()=>{const e=(0,_suggestions.pickSuggestions)({availableToolIds:["storage"],readOnly:!1,isRelease:!1});(0,_vitest.expect)(e).not.toContain("What did the last few network calls return?"),(0,_vitest.expect)(e).toContain("Show me what's saved for this user")}),(0,_vitest.it)("shows only tool-free chips until the registry has reported",()=>{const e=(0,_suggestions.pickSuggestions)({availableToolIds:[],readOnly:!1,isRelease:!1});(0,_vitest.expect)(e).toEqual(["Why is this screen empty?","Who am I signed in as right now?"])}),(0,_vitest.it)("never exceeds the cap and keeps the order",()=>{const e=(0,_suggestions.pickSuggestions)({availableToolIds:all,readOnly:!1,isRelease:!1});(0,_vitest.expect)(e.length).toBeLessThanOrEqual(_suggestions.MAX_SUGGESTIONS),(0,_vitest.expect)(e[0]).toBe("Why is this screen empty?")})});
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _suggestions = require("./suggestions");
5
+ /**
6
+ * Chips promise things; only promise what this device can keep.
7
+ */
8
+
9
+ const all = ["network", "storage", "console", "query"];
10
+ (0, _vitest.describe)("pickSuggestions", () => {
11
+ (0, _vitest.it)("offers the simulation only on a dev build that may write", () => {
12
+ const dev = (0, _suggestions.pickSuggestions)({
13
+ availableToolIds: all,
14
+ readOnly: false,
15
+ isRelease: false
16
+ });
17
+ (0, _vitest.expect)(dev).toContain("Make the next request to this screen fail with a 500");
18
+ const release = (0, _suggestions.pickSuggestions)({
19
+ availableToolIds: all,
20
+ readOnly: false,
21
+ isRelease: true
22
+ });
23
+ (0, _vitest.expect)(release).not.toContain("Make the next request to this screen fail with a 500");
24
+ const readOnly = (0, _suggestions.pickSuggestions)({
25
+ availableToolIds: all,
26
+ readOnly: true,
27
+ isRelease: false
28
+ });
29
+ (0, _vitest.expect)(readOnly).not.toContain("Make the next request to this screen fail with a 500");
30
+ });
31
+ (0, _vitest.it)("drops chips whose tool is not on this device", () => {
32
+ const noNetwork = (0, _suggestions.pickSuggestions)({
33
+ availableToolIds: ["storage"],
34
+ readOnly: false,
35
+ isRelease: false
36
+ });
37
+ (0, _vitest.expect)(noNetwork).not.toContain("What did the last few network calls return?");
38
+ (0, _vitest.expect)(noNetwork).toContain("Show me what's saved for this user");
39
+ });
40
+ (0, _vitest.it)("shows only tool-free chips until the registry has reported", () => {
41
+ const early = (0, _suggestions.pickSuggestions)({
42
+ availableToolIds: [],
43
+ readOnly: false,
44
+ isRelease: false
45
+ });
46
+ (0, _vitest.expect)(early).toEqual(["Why is this screen empty?", "Who am I signed in as right now?"]);
47
+ });
48
+ (0, _vitest.it)("never exceeds the cap and keeps the order", () => {
49
+ const out = (0, _suggestions.pickSuggestions)({
50
+ availableToolIds: all,
51
+ readOnly: false,
52
+ isRelease: false
53
+ });
54
+ (0, _vitest.expect)(out.length).toBeLessThanOrEqual(_suggestions.MAX_SUGGESTIONS);
55
+ (0, _vitest.expect)(out[0]).toBe("Why is this screen empty?");
56
+ });
57
+ });
58
+ //# sourceMappingURL=suggestions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_suggestions","all","describe","it","dev","pickSuggestions","availableToolIds","readOnly","isRelease","expect","toContain","release","not","noNetwork","early","toEqual","out","length","toBeLessThanOrEqual","MAX_SUGGESTIONS","toBe"],"sourceRoot":"../../../src","sources":["store/suggestions.test.ts"],"mappings":";;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AALA;AACA;AACA;;AAKA,MAAME,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;AAEtD,IAAAC,gBAAQ,EAAC,iBAAiB,EAAE,MAAM;EAChC,IAAAC,UAAE,EAAC,0DAA0D,EAAE,MAAM;IACnE,MAAMC,GAAG,GAAG,IAAAC,4BAAe,EAAC;MAAEC,gBAAgB,EAAEL,GAAG;MAAEM,QAAQ,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IACzF,IAAAC,cAAM,EAACL,GAAG,CAAC,CAACM,SAAS,CAAC,sDAAsD,CAAC;IAC7E,MAAMC,OAAO,GAAG,IAAAN,4BAAe,EAAC;MAAEC,gBAAgB,EAAEL,GAAG;MAAEM,QAAQ,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAK,CAAC,CAAC;IAC5F,IAAAC,cAAM,EAACE,OAAO,CAAC,CAACC,GAAG,CAACF,SAAS,CAAC,sDAAsD,CAAC;IACrF,MAAMH,QAAQ,GAAG,IAAAF,4BAAe,EAAC;MAAEC,gBAAgB,EAAEL,GAAG;MAAEM,QAAQ,EAAE,IAAI;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IAC7F,IAAAC,cAAM,EAACF,QAAQ,CAAC,CAACK,GAAG,CAACF,SAAS,CAAC,sDAAsD,CAAC;EACxF,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,8CAA8C,EAAE,MAAM;IACvD,MAAMU,SAAS,GAAG,IAAAR,4BAAe,EAAC;MAAEC,gBAAgB,EAAE,CAAC,SAAS,CAAC;MAAEC,QAAQ,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IACvG,IAAAC,cAAM,EAACI,SAAS,CAAC,CAACD,GAAG,CAACF,SAAS,CAAC,6CAA6C,CAAC;IAC9E,IAAAD,cAAM,EAACI,SAAS,CAAC,CAACH,SAAS,CAAC,oCAAoC,CAAC;EACnE,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,4DAA4D,EAAE,MAAM;IACrE,MAAMW,KAAK,GAAG,IAAAT,4BAAe,EAAC;MAAEC,gBAAgB,EAAE,EAAE;MAAEC,QAAQ,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IAC1F,IAAAC,cAAM,EAACK,KAAK,CAAC,CAACC,OAAO,CAAC,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;EAC1F,CAAC,CAAC;EAEF,IAAAZ,UAAE,EAAC,2CAA2C,EAAE,MAAM;IACpD,MAAMa,GAAG,GAAG,IAAAX,4BAAe,EAAC;MAAEC,gBAAgB,EAAEL,GAAG;MAAEM,QAAQ,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IACzF,IAAAC,cAAM,EAACO,GAAG,CAACC,MAAM,CAAC,CAACC,mBAAmB,CAACC,4BAAe,CAAC;IACvD,IAAAV,cAAM,EAACO,GAAG,CAAC,CAAC,CAAC,CAAC,CAACI,IAAI,CAAC,2BAA2B,CAAC;EAClD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,77 @@
1
- "use strict";var _vitest=require("vitest"),_askBuoyStore=require("./askBuoyStore"),_transcriptPersistence=require("./transcriptPersistence");(0,_vitest.beforeEach)(()=>_askBuoyStore.askBuoyStore.reset()),(0,_vitest.describe)("history-trimmed",()=>{(0,_vitest.it)("inserts a system line before the answer it affects",()=>{_askBuoyStore.askBuoyStore.addUser("turn off that override");const t=_askBuoyStore.askBuoyStore.startAssistant();_askBuoyStore.askBuoyStore.applyEvent(t,{type:"history-trimmed",droppedRounds:3}),_askBuoyStore.askBuoyStore.applyEvent(t,{type:"text",delta:"Turning it off."});const e=_askBuoyStore.askBuoyStore.getState().messages.map(t=>t.system?"system":t.role);(0,_vitest.expect)(e).toEqual(["user","system","assistant"]);const s=_askBuoyStore.askBuoyStore.getState().messages[1];(0,_vitest.expect)(s.text).toMatch(/3 exchanges/),(0,_vitest.expect)(s.text).toMatch(/changes bar still lists/)}),(0,_vitest.it)("singular for one round",()=>{const t=_askBuoyStore.askBuoyStore.startAssistant();_askBuoyStore.askBuoyStore.applyEvent(t,{type:"history-trimmed",droppedRounds:1}),(0,_vitest.expect)(_askBuoyStore.askBuoyStore.getState().messages[0].text).toMatch(/1 exchange\)/)})}),(0,_vitest.describe)("restored approval freshness",()=>{(0,_vitest.it)("carries the target digest to disk and back, never the target",()=>{const t=(0,_transcriptPersistence.buildPayload)({messages:[{id:"m1",role:"user",text:"set it",toolCalls:[],blocks:[]}],history:[],answers:{},usage:{input:0,output:0,requests:0},pending:{id:"c1",toolId:"zustand",action:"setState",label:"Update the bag store",reason:"Replaces part of the store",params:{storeName:"bag",state:{qty:14}},targetDigest:"1a2b3c:512",resolve:()=>{}}}),e=JSON.stringify(t);(0,_vitest.expect)(e).toContain("1a2b3c:512");const s=(0,_transcriptPersistence.parsePayload)(e);(0,_vitest.expect)(s?.pending?.targetDigest).toBe("1a2b3c:512")})});
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _askBuoyStore = require("./askBuoyStore");
5
+ var _transcriptPersistence = require("./transcriptPersistence");
6
+ /**
7
+ * Buoy's own lines in the transcript — today, the memory-trim notice.
8
+ */
9
+
10
+ (0, _vitest.beforeEach)(() => _askBuoyStore.askBuoyStore.reset());
11
+ (0, _vitest.describe)("history-trimmed", () => {
12
+ (0, _vitest.it)("inserts a system line before the answer it affects", () => {
13
+ _askBuoyStore.askBuoyStore.addUser("turn off that override");
14
+ const id = _askBuoyStore.askBuoyStore.startAssistant();
15
+ _askBuoyStore.askBuoyStore.applyEvent(id, {
16
+ type: "history-trimmed",
17
+ droppedRounds: 3
18
+ });
19
+ _askBuoyStore.askBuoyStore.applyEvent(id, {
20
+ type: "text",
21
+ delta: "Turning it off."
22
+ });
23
+ const roles = _askBuoyStore.askBuoyStore.getState().messages.map(m => m.system ? "system" : m.role);
24
+ (0, _vitest.expect)(roles).toEqual(["user", "system", "assistant"]);
25
+ const line = _askBuoyStore.askBuoyStore.getState().messages[1];
26
+ (0, _vitest.expect)(line.text).toMatch(/3 exchanges/);
27
+ (0, _vitest.expect)(line.text).toMatch(/changes bar still lists/);
28
+ });
29
+ (0, _vitest.it)("singular for one round", () => {
30
+ const id = _askBuoyStore.askBuoyStore.startAssistant();
31
+ _askBuoyStore.askBuoyStore.applyEvent(id, {
32
+ type: "history-trimmed",
33
+ droppedRounds: 1
34
+ });
35
+ (0, _vitest.expect)(_askBuoyStore.askBuoyStore.getState().messages[0].text).toMatch(/1 exchange\)/);
36
+ });
37
+ });
38
+ (0, _vitest.describe)("restored approval freshness", () => {
39
+ (0, _vitest.it)("carries the target digest to disk and back, never the target", () => {
40
+ const payload = (0, _transcriptPersistence.buildPayload)({
41
+ messages: [{
42
+ id: "m1",
43
+ role: "user",
44
+ text: "set it",
45
+ toolCalls: [],
46
+ blocks: []
47
+ }],
48
+ history: [],
49
+ answers: {},
50
+ usage: {
51
+ input: 0,
52
+ output: 0,
53
+ requests: 0
54
+ },
55
+ pending: {
56
+ id: "c1",
57
+ toolId: "zustand",
58
+ action: "setState",
59
+ label: "Update the bag store",
60
+ reason: "Replaces part of the store",
61
+ params: {
62
+ storeName: "bag",
63
+ state: {
64
+ qty: 14
65
+ }
66
+ },
67
+ targetDigest: "1a2b3c:512",
68
+ resolve: () => {}
69
+ }
70
+ });
71
+ const json = JSON.stringify(payload);
72
+ (0, _vitest.expect)(json).toContain("1a2b3c:512");
73
+ const back = (0, _transcriptPersistence.parsePayload)(json);
74
+ (0, _vitest.expect)(back?.pending?.targetDigest).toBe("1a2b3c:512");
75
+ });
76
+ });
77
+ //# sourceMappingURL=systemLine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_askBuoyStore","_transcriptPersistence","beforeEach","askBuoyStore","reset","describe","it","addUser","id","startAssistant","applyEvent","type","droppedRounds","delta","roles","getState","messages","map","m","system","role","expect","toEqual","line","text","toMatch","payload","buildPayload","toolCalls","blocks","history","answers","usage","input","output","requests","pending","toolId","action","label","reason","params","storeName","state","qty","targetDigest","resolve","json","JSON","stringify","toContain","back","parsePayload","toBe"],"sourceRoot":"../../../src","sources":["store/systemLine.test.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1,17 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TICKET_PROMPT=void 0;const TICKET_PROMPT=exports.TICKET_PROMPT="Summarize this conversation as a bug ticket, using one buoy_ui finding block and nothing else. Title it with the problem in one line. Evidence rows, in this order: Steps (what we did), Expected, Observed, Build (dev or release, platform), Evidence (the exact requests, statuses, logs or values you actually saw this conversation), Still applied (overrides or changes from your changes list that are still live, or 'none'). Only facts you observed in this conversation; write 'unknown' where you don't know rather than guessing, and put anything you inferred rather than saw in a final row labelled Inference. Do not run any tool or change anything to produce this.";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TICKET_PROMPT = void 0;
7
+ /**
8
+ * The "Summarize for a ticket" request, sent as an ordinary user message.
9
+ *
10
+ * One button, one canned sentence, because the machinery already exists: the
11
+ * prompt teaches the `finding` block and the renderer draws it. What was
12
+ * missing was a way to ASK for one without knowing the word, and a Copy that
13
+ * includes it (see blockText.ts). Facts and inference are separated in the
14
+ * ask, nothing is re-run to produce it, and nothing is submitted anywhere.
15
+ */
16
+ const TICKET_PROMPT = exports.TICKET_PROMPT = "Summarize this conversation as a bug ticket, using one buoy_ui finding block and nothing else. " + "Title it with the problem in one line. Evidence rows, in this order: Steps (what we did), Expected, Observed, " + "Build (dev or release, platform), Evidence (the exact requests, statuses, logs or values you actually saw this conversation), " + "Still applied (overrides or changes from your changes list that are still live, or 'none'). " + "Only facts you observed in this conversation; write 'unknown' where you don't know rather than guessing, and put anything " + "you inferred rather than saw in a final row labelled Inference. Do not run any tool or change anything to produce this.";
17
+ //# sourceMappingURL=ticketPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TICKET_PROMPT","exports"],"sourceRoot":"../../../src","sources":["store/ticketPrompt.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GACxB,iGAAiG,GACjG,gHAAgH,GAChH,gIAAgI,GAChI,8FAA8F,GAC9F,4HAA4H,GAC5H,yHAAyH","ignoreList":[]}
@@ -1 +1,81 @@
1
- "use strict";function traceEntries(t){const s=[...t.reasoning??[]].sort((t,s)=>t.afterCalls-s.afterCalls),e=[];let r=0;const n=t=>{for(;r<s.length&&s[r].afterCalls<=t;)e.push({kind:"thought",text:s[r].text}),r+=1};return t.toolCalls.forEach((t,s)=>{n(s),e.push({kind:"step",n:s+1,call:t})}),n(t.toolCalls.length),e}function hasTrace(t){return(t.reasoning?.length??0)>0||t.toolCalls.length>0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.hasTrace=hasTrace,exports.traceEntries=traceEntries,exports.traceToText=traceToText;const statusWord=t=>"ok"===t.status?t.summary||"done":"running"===t.status?"running":`${t.status}${t.summary?` — ${t.summary}`:""}`;function traceToText(t,s=" "){const e=[];for(const r of traceEntries(t))if("thought"===r.kind){e.push(`${s}[thinking]`);for(const t of r.text.trim().split("\n"))e.push(`${s} ${t}`)}else{const{n:t,call:n}=r;e.push(`${s}[${t}] ${n.toolId}.${n.action} — ${statusWord(n)}`),n.params&&e.push(`${s} ${n.params}`)}return e}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hasTrace = hasTrace;
7
+ exports.traceEntries = traceEntries;
8
+ exports.traceToText = traceToText;
9
+ /**
10
+ * The agent's work for one answer, laid out in the order it happened.
11
+ *
12
+ * `traceEntries` is the ordering, shared by the collapsible strip in the chat
13
+ * and by the JSON export — the two must agree, because the point of the export
14
+ * is reading elsewhere the run you were just looking at. `traceToText` is the
15
+ * plain-text rendering, kept for a quick paste into Slack; the debugging
16
+ * artefact is `sessionExport.ts`.
17
+ *
18
+ * Reasoning and steps INTERLEAVE. One assistant bubble spans every turn of a
19
+ * multi-step run, so the real shape is "think, act, think, act"; lumping the
20
+ * thoughts at the top would misreport when the model knew what.
21
+ */
22
+
23
+ function traceEntries(message) {
24
+ const thoughts = [...(message.reasoning ?? [])].sort((a, b) => a.afterCalls - b.afterCalls);
25
+ const out = [];
26
+ let t = 0;
27
+ const drainTo = calls => {
28
+ while (t < thoughts.length && thoughts[t].afterCalls <= calls) {
29
+ out.push({
30
+ kind: "thought",
31
+ text: thoughts[t].text
32
+ });
33
+ t += 1;
34
+ }
35
+ };
36
+ message.toolCalls.forEach((call, i) => {
37
+ drainTo(i);
38
+ out.push({
39
+ kind: "step",
40
+ n: i + 1,
41
+ call
42
+ });
43
+ });
44
+ // Anything the model thought after its last tool call — usually the reasoning
45
+ // behind the answer itself, which is the most useful line in the trace.
46
+ drainTo(message.toolCalls.length);
47
+ return out;
48
+ }
49
+
50
+ /** Has this message anything to show? Drives whether the strip renders at all. */
51
+ function hasTrace(message) {
52
+ return (message.reasoning?.length ?? 0) > 0 || message.toolCalls.length > 0;
53
+ }
54
+ const statusWord = call => call.status === "ok" ? call.summary || "done" : call.status === "running" ? "running" : `${call.status}${call.summary ? ` — ${call.summary}` : ""}`;
55
+
56
+ /**
57
+ * The trace as plain text, for the clipboard.
58
+ *
59
+ * Indented under the answer it belongs to so a pasted session still reads as a
60
+ * conversation rather than a log dump.
61
+ */
62
+ function traceToText(message, indent = " ") {
63
+ const lines = [];
64
+ for (const entry of traceEntries(message)) {
65
+ if (entry.kind === "thought") {
66
+ lines.push(`${indent}[thinking]`);
67
+ for (const line of entry.text.trim().split("\n")) {
68
+ lines.push(`${indent} ${line}`);
69
+ }
70
+ } else {
71
+ const {
72
+ n,
73
+ call
74
+ } = entry;
75
+ lines.push(`${indent}[${n}] ${call.toolId}.${call.action} — ${statusWord(call)}`);
76
+ if (call.params) lines.push(`${indent} ${call.params}`);
77
+ }
78
+ }
79
+ return lines;
80
+ }
81
+ //# sourceMappingURL=traceText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["traceEntries","message","thoughts","reasoning","sort","a","b","afterCalls","out","t","drainTo","calls","length","push","kind","text","toolCalls","forEach","call","i","n","hasTrace","statusWord","status","summary","traceToText","indent","lines","entry","line","trim","split","toolId","action","params"],"sourceRoot":"../../../src","sources":["store/traceText.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1,112 @@
1
- "use strict";var _vitest=require("vitest"),_traceText=require("./traceText");const call=(t={})=>({id:"c1",toolId:"zustand",action:"getStoreState",label:"Read the bag",status:"ok",summary:"Done",...t}),msg=(t={})=>({id:"m1",role:"assistant",text:"Five items.",toolCalls:[],blocks:[],...t});(0,_vitest.describe)("the order of a trace",()=>{(0,_vitest.it)("interleaves thinking with the steps it led to",()=>{const t=msg({toolCalls:[call({id:"c1"}),call({id:"c2",action:"setState"})],reasoning:[{text:"I should read the bag first.",afterCalls:0},{text:"Now I can write the new quantity.",afterCalls:1}]});(0,_vitest.expect)((0,_traceText.traceEntries)(t).map(t=>"thought"===t.kind?"T":`S${t.n}`)).toEqual(["T","S1","T","S2"])}),(0,_vitest.it)("keeps a closing thought after the last step",()=>{const t=msg({toolCalls:[call()],reasoning:[{text:"That is everything the user asked for.",afterCalls:1}]}),e=(0,_traceText.traceEntries)(t);(0,_vitest.expect)(e[e.length-1]).toEqual({kind:"thought",text:"That is everything the user asked for."})}),(0,_vitest.it)("handles a turn with steps and no reasoning at all",()=>{const t=msg({toolCalls:[call()]});(0,_vitest.expect)((0,_traceText.traceEntries)(t)).toHaveLength(1),(0,_vitest.expect)((0,_traceText.hasTrace)(t)).toBe(!0)}),(0,_vitest.it)("has nothing to show for a plain answer",()=>{(0,_vitest.expect)((0,_traceText.hasTrace)(msg())).toBe(!1)})}),(0,_vitest.describe)("the text it produces",()=>{(0,_vitest.it)("names the tool, the action, the outcome and the parameters",()=>{const t=msg({toolCalls:[call({params:'{"storeName":"Poké Mart bag"}'})]});(0,_vitest.expect)((0,_traceText.traceToText)(t)).toEqual([" [1] zustand.getStoreState — Done",' {"storeName":"Poké Mart bag"}'])}),(0,_vitest.it)("makes a failure and its parameters findable",()=>{const t=msg({toolCalls:[call({toolId:"storage",action:"async.setItem",status:"failed",summary:"key not found",params:'{"key":"@pokemart/bag"}'})]});(0,_vitest.expect)((0,_traceText.traceToText)(t).join("\n")).toContain("failed — key not found"),(0,_vitest.expect)((0,_traceText.traceToText)(t).join("\n")).toContain("@pokemart/bag")}),(0,_vitest.it)("indents a multi-line thought so a pasted session still reads as one",()=>{const t=msg({reasoning:[{text:"First line.\nSecond line.",afterCalls:0}]});(0,_vitest.expect)((0,_traceText.traceToText)(t)).toEqual([" [thinking]"," First line."," Second line."])})});
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _traceText = require("./traceText");
5
+ /**
6
+ * The agent's working, as text.
7
+ *
8
+ * This exists so a tester can paste a run somewhere and find the step that
9
+ * broke, which puts two properties on it: reasoning and steps come out in the
10
+ * order they HAPPENED (a multi-step turn is think, act, think, act — not all
11
+ * the thoughts and then all the steps), and a failed step says so with its
12
+ * parameters attached, since "storage.set failed" without the value it wrote
13
+ * is not a bug report.
14
+ */
15
+
16
+ const call = (over = {}) => ({
17
+ id: "c1",
18
+ toolId: "zustand",
19
+ action: "getStoreState",
20
+ label: "Read the bag",
21
+ status: "ok",
22
+ summary: "Done",
23
+ ...over
24
+ });
25
+ const msg = (over = {}) => ({
26
+ id: "m1",
27
+ role: "assistant",
28
+ text: "Five items.",
29
+ toolCalls: [],
30
+ blocks: [],
31
+ ...over
32
+ });
33
+ (0, _vitest.describe)("the order of a trace", () => {
34
+ (0, _vitest.it)("interleaves thinking with the steps it led to", () => {
35
+ const m = msg({
36
+ toolCalls: [call({
37
+ id: "c1"
38
+ }), call({
39
+ id: "c2",
40
+ action: "setState"
41
+ })],
42
+ reasoning: [{
43
+ text: "I should read the bag first.",
44
+ afterCalls: 0
45
+ }, {
46
+ text: "Now I can write the new quantity.",
47
+ afterCalls: 1
48
+ }]
49
+ });
50
+ (0, _vitest.expect)((0, _traceText.traceEntries)(m).map(e => e.kind === "thought" ? "T" : `S${e.n}`)).toEqual(["T", "S1", "T", "S2"]);
51
+ });
52
+ (0, _vitest.it)("keeps a closing thought after the last step", () => {
53
+ // Usually the reasoning behind the ANSWER, which is the most useful line
54
+ // in the whole trace.
55
+ const m = msg({
56
+ toolCalls: [call()],
57
+ reasoning: [{
58
+ text: "That is everything the user asked for.",
59
+ afterCalls: 1
60
+ }]
61
+ });
62
+ const entries = (0, _traceText.traceEntries)(m);
63
+ (0, _vitest.expect)(entries[entries.length - 1]).toEqual({
64
+ kind: "thought",
65
+ text: "That is everything the user asked for."
66
+ });
67
+ });
68
+ (0, _vitest.it)("handles a turn with steps and no reasoning at all", () => {
69
+ // The common case: gpt-4.1 and friends report none.
70
+ const m = msg({
71
+ toolCalls: [call()]
72
+ });
73
+ (0, _vitest.expect)((0, _traceText.traceEntries)(m)).toHaveLength(1);
74
+ (0, _vitest.expect)((0, _traceText.hasTrace)(m)).toBe(true);
75
+ });
76
+ (0, _vitest.it)("has nothing to show for a plain answer", () => {
77
+ (0, _vitest.expect)((0, _traceText.hasTrace)(msg())).toBe(false);
78
+ });
79
+ });
80
+ (0, _vitest.describe)("the text it produces", () => {
81
+ (0, _vitest.it)("names the tool, the action, the outcome and the parameters", () => {
82
+ const m = msg({
83
+ toolCalls: [call({
84
+ params: '{"storeName":"Poké Mart bag"}'
85
+ })]
86
+ });
87
+ (0, _vitest.expect)((0, _traceText.traceToText)(m)).toEqual([" [1] zustand.getStoreState — Done", ' {"storeName":"Poké Mart bag"}']);
88
+ });
89
+ (0, _vitest.it)("makes a failure and its parameters findable", () => {
90
+ const m = msg({
91
+ toolCalls: [call({
92
+ toolId: "storage",
93
+ action: "async.setItem",
94
+ status: "failed",
95
+ summary: "key not found",
96
+ params: '{"key":"@pokemart/bag"}'
97
+ })]
98
+ });
99
+ (0, _vitest.expect)((0, _traceText.traceToText)(m).join("\n")).toContain("failed — key not found");
100
+ (0, _vitest.expect)((0, _traceText.traceToText)(m).join("\n")).toContain("@pokemart/bag");
101
+ });
102
+ (0, _vitest.it)("indents a multi-line thought so a pasted session still reads as one", () => {
103
+ const m = msg({
104
+ reasoning: [{
105
+ text: "First line.\nSecond line.",
106
+ afterCalls: 0
107
+ }]
108
+ });
109
+ (0, _vitest.expect)((0, _traceText.traceToText)(m)).toEqual([" [thinking]", " First line.", " Second line."]);
110
+ });
111
+ });
112
+ //# sourceMappingURL=traceText.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_traceText","call","over","id","toolId","action","label","status","summary","msg","role","text","toolCalls","blocks","describe","it","m","reasoning","afterCalls","expect","traceEntries","map","e","kind","n","toEqual","entries","length","toHaveLength","hasTrace","toBe","params","traceToText","join","toContain"],"sourceRoot":"../../../src","sources":["store/traceText.test.ts"],"mappings":"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","ignoreList":[]}