@athenaintel/react 0.28.1 → 0.30.0

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 (761) hide show
  1. package/README.md +418 -10
  2. package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
  3. package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
  4. package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
  5. package/dist/agent-runtime/src/auth-denial.js.map +1 -0
  6. package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  7. package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
  8. package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
  9. package/dist/agent-runtime/src/client-tools.js.map +1 -0
  10. package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
  11. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
  12. package/dist/agent-runtime/src/composer-markdown.js +124 -0
  13. package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
  14. package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
  15. package/dist/agent-runtime/src/conversation-index.js.map +1 -0
  16. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
  17. package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
  18. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
  19. package/dist/agent-runtime/src/conversation-list.js.map +1 -0
  20. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
  21. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  22. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
  23. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  24. package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
  25. package/dist/agent-runtime/src/edit-command.js.map +1 -0
  26. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
  27. package/dist/agent-runtime/src/errors.cjs.map +1 -0
  28. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
  29. package/dist/agent-runtime/src/errors.js.map +1 -0
  30. package/dist/agent-runtime/src/execute-output.cjs +41 -0
  31. package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
  32. package/dist/agent-runtime/src/execute-output.js +41 -0
  33. package/dist/agent-runtime/src/execute-output.js.map +1 -0
  34. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +10 -2
  35. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  36. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +10 -2
  37. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  38. package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
  39. package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
  40. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
  41. package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
  42. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
  43. package/dist/agent-runtime/src/interrupts.js.map +1 -0
  44. package/dist/agent-runtime/src/message-author.cjs.map +1 -0
  45. package/dist/agent-runtime/src/message-author.js.map +1 -0
  46. package/dist/agent-runtime/src/message-window.cjs.map +1 -0
  47. package/dist/agent-runtime/src/message-window.js.map +1 -0
  48. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
  49. package/dist/agent-runtime/src/messages.cjs.map +1 -0
  50. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
  51. package/dist/agent-runtime/src/messages.js.map +1 -0
  52. package/dist/agent-runtime/src/model-context.cjs.map +1 -0
  53. package/dist/agent-runtime/src/model-context.js.map +1 -0
  54. package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
  55. package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
  56. package/dist/agent-runtime/src/protocol.cjs.map +1 -0
  57. package/dist/agent-runtime/src/protocol.js.map +1 -0
  58. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
  59. package/dist/agent-runtime/src/queue.cjs.map +1 -0
  60. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
  61. package/dist/agent-runtime/src/queue.js.map +1 -0
  62. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +23 -13
  63. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  64. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +24 -14
  65. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  66. package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
  67. package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
  68. package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
  69. package/dist/agent-runtime/src/screen-point.js.map +1 -0
  70. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
  71. package/dist/agent-runtime/src/send-recovery.js.map +1 -0
  72. package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  73. package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  74. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
  75. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
  76. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
  77. package/dist/agent-runtime/src/statewire-state.js.map +1 -0
  78. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
  79. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  80. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
  81. package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
  82. package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
  83. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
  84. package/dist/agent-runtime/src/statewire-transport.js +43 -0
  85. package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
  86. package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  87. package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
  88. package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
  89. package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
  90. package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
  91. package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
  92. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
  93. package/dist/agent-runtime/src/thread-extras.js.map +1 -0
  94. package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  95. package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  96. package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
  97. package/dist/agent-runtime/src/thread-status.js.map +1 -0
  98. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +279 -3
  99. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
  100. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +279 -3
  101. package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
  102. package/dist/agent-runtime/src/tool-names.cjs +5 -0
  103. package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
  104. package/dist/agent-runtime/src/tool-names.js +5 -0
  105. package/dist/agent-runtime/src/tool-names.js.map +1 -0
  106. package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
  107. package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
  108. package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
  109. package/dist/agent-runtime/src/tool-result.js.map +1 -0
  110. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
  111. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  112. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
  113. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
  114. package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
  115. package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
  116. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
  117. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  118. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
  119. package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  120. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  121. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  122. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
  123. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  124. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
  125. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  126. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  127. package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  128. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
  129. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
  130. package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
  131. package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
  132. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
  133. package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
  134. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
  135. package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
  136. package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
  137. package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
  138. package/dist/assets/AthenaAssetEmbed.cjs +8 -2
  139. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  140. package/dist/assets/AthenaAssetEmbed.d.ts +8 -0
  141. package/dist/assets/AthenaAssetEmbed.js +8 -2
  142. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  143. package/dist/assets/AthenaLayout.cjs +97 -31
  144. package/dist/assets/AthenaLayout.cjs.map +1 -1
  145. package/dist/assets/AthenaLayout.d.ts +13 -0
  146. package/dist/assets/AthenaLayout.js +98 -32
  147. package/dist/assets/AthenaLayout.js.map +1 -1
  148. package/dist/assets/asset-embed-messages.cjs.map +1 -1
  149. package/dist/assets/asset-embed-messages.d.ts +6 -0
  150. package/dist/assets/asset-embed-messages.js.map +1 -1
  151. package/dist/assets/asset-panel-store.cjs +68 -32
  152. package/dist/assets/asset-panel-store.cjs.map +1 -1
  153. package/dist/assets/asset-panel-store.d.ts +47 -1
  154. package/dist/assets/asset-panel-store.js +68 -32
  155. package/dist/assets/asset-panel-store.js.map +1 -1
  156. package/dist/assets/use-asset-embed.cjs +29 -8
  157. package/dist/assets/use-asset-embed.cjs.map +1 -1
  158. package/dist/assets/use-asset-embed.d.ts +7 -0
  159. package/dist/assets/use-asset-embed.js +29 -8
  160. package/dist/assets/use-asset-embed.js.map +1 -1
  161. package/dist/catalog/chat-pickers.cjs +152 -0
  162. package/dist/catalog/chat-pickers.cjs.map +1 -0
  163. package/dist/catalog/chat-pickers.d.ts +22 -0
  164. package/dist/catalog/chat-pickers.js +152 -0
  165. package/dist/catalog/chat-pickers.js.map +1 -0
  166. package/dist/catalog/runtime-catalog.cjs +181 -0
  167. package/dist/catalog/runtime-catalog.cjs.map +1 -0
  168. package/dist/catalog/runtime-catalog.d.ts +100 -0
  169. package/dist/catalog/runtime-catalog.js +181 -0
  170. package/dist/catalog/runtime-catalog.js.map +1 -0
  171. package/dist/chat/AthenaChat.cjs +86 -46
  172. package/dist/chat/AthenaChat.cjs.map +1 -1
  173. package/dist/chat/AthenaChat.d.ts +21 -4
  174. package/dist/chat/AthenaChat.js +88 -48
  175. package/dist/chat/AthenaChat.js.map +1 -1
  176. package/dist/chat/StatewireApprovalCard.cjs +38 -37
  177. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  178. package/dist/chat/StatewireApprovalCard.d.ts +2 -0
  179. package/dist/chat/StatewireApprovalCard.js +39 -38
  180. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  181. package/dist/chat/StatewireClientToolBridge.cjs +2 -2
  182. package/dist/chat/StatewireClientToolBridge.js +2 -2
  183. package/dist/chat/StatewireQueuedMessages.cjs +15 -12
  184. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  185. package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
  186. package/dist/chat/StatewireQueuedMessages.js +15 -12
  187. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  188. package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
  189. package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
  190. package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
  191. package/dist/chat/StatewireRunRefusalNotice.js +48 -0
  192. package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
  193. package/dist/chat/WaitingOnYouBanner.cjs +2 -2
  194. package/dist/chat/WaitingOnYouBanner.js +2 -2
  195. package/dist/chat/athena-citation-links.cjs +19 -15
  196. package/dist/chat/athena-citation-links.cjs.map +1 -1
  197. package/dist/chat/athena-citation-links.js +19 -15
  198. package/dist/chat/athena-citation-links.js.map +1 -1
  199. package/dist/chat/run-activity.cjs +9 -1
  200. package/dist/chat/run-activity.cjs.map +1 -1
  201. package/dist/chat/run-activity.d.ts +6 -0
  202. package/dist/chat/run-activity.js +10 -2
  203. package/dist/chat/run-activity.js.map +1 -1
  204. package/dist/chat/statewire-banners.cjs +30 -1
  205. package/dist/chat/statewire-banners.cjs.map +1 -1
  206. package/dist/chat/statewire-banners.d.ts +20 -1
  207. package/dist/chat/statewire-banners.js +32 -3
  208. package/dist/chat/statewire-banners.js.map +1 -1
  209. package/dist/chat/statewire-client-tools.cjs +1 -1
  210. package/dist/chat/statewire-client-tools.js +1 -1
  211. package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
  212. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
  213. package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
  214. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
  215. package/dist/chat/super-grouping/SuperGroupingCard.cjs +7 -5
  216. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  217. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +8 -2
  218. package/dist/chat/super-grouping/SuperGroupingCard.js +7 -5
  219. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  220. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +350 -0
  221. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
  222. package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
  223. package/dist/chat/super-grouping/SuperGroupingTranscript.js +350 -0
  224. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
  225. package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
  226. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  227. package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
  228. package/dist/chat/super-grouping/ToolTimeline.js +13 -2
  229. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  230. package/dist/chat/super-grouping/activity-timeline.cjs +51 -26
  231. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  232. package/dist/chat/super-grouping/activity-timeline.d.ts +40 -8
  233. package/dist/chat/super-grouping/activity-timeline.js +52 -27
  234. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  235. package/dist/chat/super-grouping/index.cjs +12 -0
  236. package/dist/chat/super-grouping/index.cjs.map +1 -1
  237. package/dist/chat/super-grouping/index.d.ts +7 -2
  238. package/dist/chat/super-grouping/index.js +14 -2
  239. package/dist/chat/super-grouping/index.js.map +1 -1
  240. package/dist/chat/super-grouping/timeline-step.cjs +14 -5
  241. package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
  242. package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
  243. package/dist/chat/super-grouping/timeline-step.js +15 -6
  244. package/dist/chat/super-grouping/timeline-step.js.map +1 -1
  245. package/dist/chat/super-grouping/turn-segments.cjs +82 -0
  246. package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
  247. package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
  248. package/dist/chat/super-grouping/turn-segments.js +82 -0
  249. package/dist/chat/super-grouping/turn-segments.js.map +1 -0
  250. package/dist/chat/super-grouping/turn-timing.cjs +110 -0
  251. package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
  252. package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
  253. package/dist/chat/super-grouping/turn-timing.js +110 -0
  254. package/dist/chat/super-grouping/turn-timing.js.map +1 -0
  255. package/dist/chat/tiptap-text.cjs +1 -1
  256. package/dist/chat/tiptap-text.js +1 -1
  257. package/dist/chat/use-athena-run-live.cjs +1 -1
  258. package/dist/chat/use-athena-run-live.js +1 -1
  259. package/dist/chat/use-statewire-approval-request.cjs +73 -4
  260. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  261. package/dist/chat/use-statewire-approval-request.js +74 -5
  262. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  263. package/dist/chat-ui/composer/composer-message.cjs +284 -0
  264. package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
  265. package/dist/chat-ui/composer/composer-message.d.ts +152 -0
  266. package/dist/chat-ui/composer/composer-message.js +284 -0
  267. package/dist/chat-ui/composer/composer-message.js.map +1 -0
  268. package/dist/chat-ui/composer/tiptap-composer.cjs +57 -11
  269. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  270. package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
  271. package/dist/chat-ui/composer/tiptap-composer.js +57 -11
  272. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  273. package/dist/chat-ui/index.cjs +4 -1
  274. package/dist/chat-ui/index.cjs.map +1 -1
  275. package/dist/chat-ui/index.d.ts +3 -2
  276. package/dist/chat-ui/index.js +5 -2
  277. package/dist/chat-ui/index.js.map +1 -1
  278. package/dist/chat-ui/mentions/mention-chip.cjs +3 -2
  279. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  280. package/dist/chat-ui/mentions/mention-chip.js +4 -3
  281. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  282. package/dist/chat-ui/mentions/mention-extension.cjs +8 -2
  283. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  284. package/dist/chat-ui/mentions/mention-extension.js +8 -2
  285. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  286. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
  287. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
  288. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
  289. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
  290. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
  291. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  292. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
  293. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
  294. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  295. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
  296. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  297. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
  298. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
  299. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  300. package/dist/chat-ui/messages/message-components.cjs +30 -10
  301. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  302. package/dist/chat-ui/messages/message-components.d.ts +21 -1
  303. package/dist/chat-ui/messages/message-components.js +30 -10
  304. package/dist/chat-ui/messages/message-components.js.map +1 -1
  305. package/dist/chat-ui/messages/runtime-message.cjs +1 -1
  306. package/dist/chat-ui/messages/runtime-message.js +1 -1
  307. package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
  308. package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
  309. package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
  310. package/dist/chat-ui/messages/user-edit-composer.js +1 -1
  311. package/dist/chat-ui/messages/wake-marker.cjs +39 -4
  312. package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
  313. package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
  314. package/dist/chat-ui/messages/wake-marker.js +40 -5
  315. package/dist/chat-ui/messages/wake-marker.js.map +1 -1
  316. package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
  317. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
  318. package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
  319. package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
  320. package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
  321. package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
  322. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
  323. package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
  324. package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
  325. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
  326. package/dist/chat-ui/statewire.cjs +1 -1
  327. package/dist/chat-ui/statewire.d.ts +1 -1
  328. package/dist/chat-ui/statewire.js +1 -1
  329. package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
  330. package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
  331. package/dist/collab/client.cjs +218 -13
  332. package/dist/collab/client.cjs.map +1 -1
  333. package/dist/collab/client.d.ts +105 -2
  334. package/dist/collab/client.js +221 -17
  335. package/dist/collab/client.js.map +1 -1
  336. package/dist/collab/index.cjs +2 -0
  337. package/dist/collab/index.cjs.map +1 -1
  338. package/dist/collab/index.d.ts +1 -1
  339. package/dist/collab/index.js +3 -1
  340. package/dist/composer/AttachmentContext.cjs +38 -12
  341. package/dist/composer/AttachmentContext.cjs.map +1 -1
  342. package/dist/composer/AttachmentContext.d.ts +22 -1
  343. package/dist/composer/AttachmentContext.js +40 -14
  344. package/dist/composer/AttachmentContext.js.map +1 -1
  345. package/dist/composer/QuoteContext.cjs +80 -28
  346. package/dist/composer/QuoteContext.cjs.map +1 -1
  347. package/dist/composer/QuoteContext.d.ts +35 -6
  348. package/dist/composer/QuoteContext.js +82 -30
  349. package/dist/composer/QuoteContext.js.map +1 -1
  350. package/dist/composer/build-composed-message.cjs +27 -0
  351. package/dist/composer/build-composed-message.cjs.map +1 -1
  352. package/dist/composer/build-composed-message.d.ts +21 -0
  353. package/dist/composer/build-composed-message.js +28 -1
  354. package/dist/composer/build-composed-message.js.map +1 -1
  355. package/dist/composer/composer-handoff.cjs +13 -1
  356. package/dist/composer/composer-handoff.cjs.map +1 -1
  357. package/dist/composer/composer-handoff.d.ts +12 -0
  358. package/dist/composer/composer-handoff.js +15 -3
  359. package/dist/composer/composer-handoff.js.map +1 -1
  360. package/dist/composer/index.d.ts +6 -3
  361. package/dist/composer/useReadComposerDraft.cjs +16 -0
  362. package/dist/composer/useReadComposerDraft.cjs.map +1 -0
  363. package/dist/composer/useReadComposerDraft.d.ts +6 -0
  364. package/dist/composer/useReadComposerDraft.js +16 -0
  365. package/dist/composer/useReadComposerDraft.js.map +1 -0
  366. package/dist/diagnostics/errors.cjs +6 -0
  367. package/dist/diagnostics/errors.cjs.map +1 -1
  368. package/dist/diagnostics/errors.d.ts +6 -0
  369. package/dist/diagnostics/errors.js +6 -0
  370. package/dist/diagnostics/errors.js.map +1 -1
  371. package/dist/index.cjs +159 -7
  372. package/dist/index.cjs.map +1 -1
  373. package/dist/index.d.ts +53 -12
  374. package/dist/index.js +166 -14
  375. package/dist/index.js.map +1 -1
  376. package/dist/lib/owner-document.cjs +32 -0
  377. package/dist/lib/owner-document.cjs.map +1 -0
  378. package/dist/lib/owner-document.d.ts +17 -0
  379. package/dist/lib/owner-document.js +32 -0
  380. package/dist/lib/owner-document.js.map +1 -0
  381. package/dist/lib/portal-surface.cjs +55 -0
  382. package/dist/lib/portal-surface.cjs.map +1 -0
  383. package/dist/lib/portal-surface.d.ts +37 -0
  384. package/dist/lib/portal-surface.js +55 -0
  385. package/dist/lib/portal-surface.js.map +1 -0
  386. package/dist/lib/use-athena-rest-query.cjs +34 -0
  387. package/dist/lib/use-athena-rest-query.cjs.map +1 -0
  388. package/dist/lib/use-athena-rest-query.d.ts +31 -0
  389. package/dist/lib/use-athena-rest-query.js +34 -0
  390. package/dist/lib/use-athena-rest-query.js.map +1 -0
  391. package/dist/provider/AthenaProvider.cjs +36 -6
  392. package/dist/provider/AthenaProvider.cjs.map +1 -1
  393. package/dist/provider/AthenaProvider.d.ts +20 -1
  394. package/dist/provider/AthenaProvider.js +38 -8
  395. package/dist/provider/AthenaProvider.js.map +1 -1
  396. package/dist/provider/citation-links.d.ts +10 -2
  397. package/dist/{packages/react → react}/package.json.cjs +1 -1
  398. package/dist/{packages/react → react}/package.json.js +1 -1
  399. package/dist/runtime/statewire-lifecycle.cjs +15 -3
  400. package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
  401. package/dist/runtime/statewire-lifecycle.d.ts +6 -0
  402. package/dist/runtime/statewire-lifecycle.js +15 -3
  403. package/dist/runtime/statewire-lifecycle.js.map +1 -1
  404. package/dist/runtime/useAthenaStatewireRuntime.cjs +11 -7
  405. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  406. package/dist/runtime/useAthenaStatewireRuntime.js +11 -7
  407. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  408. package/dist/search/useAthenaRepoSearch.cjs +5 -13
  409. package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
  410. package/dist/search/useAthenaRepoSearch.d.ts +3 -3
  411. package/dist/search/useAthenaRepoSearch.js +6 -14
  412. package/dist/search/useAthenaRepoSearch.js.map +1 -1
  413. package/dist/sheet-range/a1.cjs +162 -0
  414. package/dist/sheet-range/a1.cjs.map +1 -0
  415. package/dist/sheet-range/a1.d.ts +91 -0
  416. package/dist/sheet-range/a1.js +162 -0
  417. package/dist/sheet-range/a1.js.map +1 -0
  418. package/dist/sheet-range/index.cjs +22 -0
  419. package/dist/sheet-range/index.cjs.map +1 -0
  420. package/dist/sheet-range/index.d.ts +12 -0
  421. package/dist/sheet-range/index.js +22 -0
  422. package/dist/sheet-range/index.js.map +1 -0
  423. package/dist/sheet-range/range-preview-table.cjs +75 -0
  424. package/dist/sheet-range/range-preview-table.cjs.map +1 -0
  425. package/dist/sheet-range/range-preview-table.d.ts +20 -0
  426. package/dist/sheet-range/range-preview-table.js +75 -0
  427. package/dist/sheet-range/range-preview-table.js.map +1 -0
  428. package/dist/sheet-range/range-preview.cjs +116 -0
  429. package/dist/sheet-range/range-preview.cjs.map +1 -0
  430. package/dist/sheet-range/range-preview.d.ts +67 -0
  431. package/dist/sheet-range/range-preview.js +116 -0
  432. package/dist/sheet-range/range-preview.js.map +1 -0
  433. package/dist/styles.css +1 -1
  434. package/dist/threads/Inbox.cjs +289 -0
  435. package/dist/threads/Inbox.cjs.map +1 -0
  436. package/dist/threads/Inbox.d.ts +46 -0
  437. package/dist/threads/Inbox.js +289 -0
  438. package/dist/threads/Inbox.js.map +1 -0
  439. package/dist/threads/SessionList.cjs +51 -126
  440. package/dist/threads/SessionList.cjs.map +1 -1
  441. package/dist/threads/SessionList.d.ts +26 -1
  442. package/dist/threads/SessionList.js +45 -120
  443. package/dist/threads/SessionList.js.map +1 -1
  444. package/dist/threads/SessionsPage.cjs +753 -0
  445. package/dist/threads/SessionsPage.cjs.map +1 -0
  446. package/dist/threads/SessionsPage.d.ts +35 -0
  447. package/dist/threads/SessionsPage.js +753 -0
  448. package/dist/threads/SessionsPage.js.map +1 -0
  449. package/dist/threads/api.cjs +21 -1
  450. package/dist/threads/api.cjs.map +1 -1
  451. package/dist/threads/api.d.ts +59 -0
  452. package/dist/threads/api.js +21 -1
  453. package/dist/threads/api.js.map +1 -1
  454. package/dist/threads/conversation-list-fetcher.cjs +9 -2
  455. package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
  456. package/dist/threads/conversation-list-fetcher.d.ts +14 -1
  457. package/dist/threads/conversation-list-fetcher.js +9 -2
  458. package/dist/threads/conversation-list-fetcher.js.map +1 -1
  459. package/dist/threads/index.d.ts +2 -1
  460. package/dist/threads/pull-request-display.cjs +25 -0
  461. package/dist/threads/pull-request-display.cjs.map +1 -0
  462. package/dist/threads/pull-request-display.d.ts +15 -0
  463. package/dist/threads/pull-request-display.js +25 -0
  464. package/dist/threads/pull-request-display.js.map +1 -0
  465. package/dist/threads/session-list-model.cjs +16 -2
  466. package/dist/threads/session-list-model.cjs.map +1 -1
  467. package/dist/threads/session-list-model.d.ts +10 -0
  468. package/dist/threads/session-list-model.js +16 -2
  469. package/dist/threads/session-list-model.js.map +1 -1
  470. package/dist/threads/session-row-parts.cjs +152 -0
  471. package/dist/threads/session-row-parts.cjs.map +1 -0
  472. package/dist/threads/session-row-parts.d.ts +50 -0
  473. package/dist/threads/session-row-parts.js +152 -0
  474. package/dist/threads/session-row-parts.js.map +1 -0
  475. package/dist/threads/sessions-page-model.cjs +305 -0
  476. package/dist/threads/sessions-page-model.cjs.map +1 -0
  477. package/dist/threads/sessions-page-model.d.ts +86 -0
  478. package/dist/threads/sessions-page-model.js +305 -0
  479. package/dist/threads/sessions-page-model.js.map +1 -0
  480. package/dist/threads/sessions-page-storage.cjs +93 -0
  481. package/dist/threads/sessions-page-storage.cjs.map +1 -0
  482. package/dist/threads/sessions-page-storage.d.ts +23 -0
  483. package/dist/threads/sessions-page-storage.js +93 -0
  484. package/dist/threads/sessions-page-storage.js.map +1 -0
  485. package/dist/threads/sessions-query.cjs +235 -0
  486. package/dist/threads/sessions-query.cjs.map +1 -0
  487. package/dist/threads/sessions-query.d.ts +119 -0
  488. package/dist/threads/sessions-query.js +235 -0
  489. package/dist/threads/sessions-query.js.map +1 -0
  490. package/dist/threads/statewire-thread-list.cjs +133 -40
  491. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  492. package/dist/threads/statewire-thread-list.d.ts +83 -2
  493. package/dist/threads/statewire-thread-list.js +134 -41
  494. package/dist/threads/statewire-thread-list.js.map +1 -1
  495. package/dist/threads/use-athena-sessions.cjs +198 -0
  496. package/dist/threads/use-athena-sessions.cjs.map +1 -0
  497. package/dist/threads/use-athena-sessions.d.ts +81 -0
  498. package/dist/threads/use-athena-sessions.js +198 -0
  499. package/dist/threads/use-athena-sessions.js.map +1 -0
  500. package/dist/threads/use-rest-conversation-history.cjs +1 -1
  501. package/dist/threads/use-rest-conversation-history.js +1 -1
  502. package/dist/threads/use-statewire-conversation-history.cjs +1 -1
  503. package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
  504. package/dist/threads/use-statewire-conversation-history.js +1 -1
  505. package/dist/threads/use-thread-read-state.cjs +73 -0
  506. package/dist/threads/use-thread-read-state.cjs.map +1 -0
  507. package/dist/threads/use-thread-read-state.d.ts +51 -0
  508. package/dist/threads/use-thread-read-state.js +73 -0
  509. package/dist/threads/use-thread-read-state.js.map +1 -0
  510. package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
  511. package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
  512. package/dist/tools/auto-open-tools.cjs +2 -0
  513. package/dist/tools/auto-open-tools.cjs.map +1 -1
  514. package/dist/tools/auto-open-tools.js +2 -0
  515. package/dist/tools/auto-open-tools.js.map +1 -1
  516. package/dist/tools/file-tool-uis.cjs +18 -43
  517. package/dist/tools/file-tool-uis.cjs.map +1 -1
  518. package/dist/tools/file-tool-uis.d.ts +1 -2
  519. package/dist/tools/file-tool-uis.js +18 -42
  520. package/dist/tools/file-tool-uis.js.map +1 -1
  521. package/dist/tools/index.cjs +6 -2
  522. package/dist/tools/index.cjs.map +1 -1
  523. package/dist/tools/index.d.ts +1 -0
  524. package/dist/tools/index.js +6 -2
  525. package/dist/tools/index.js.map +1 -1
  526. package/dist/tools/misc-tool-uis.cjs +2 -2
  527. package/dist/tools/misc-tool-uis.js +2 -2
  528. package/dist/tools/primitives.cjs +1 -1
  529. package/dist/tools/primitives.js +1 -1
  530. package/dist/tools/read-asset-tool-ui.cjs +21 -70
  531. package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
  532. package/dist/tools/read-asset-tool-ui.js +21 -70
  533. package/dist/tools/read-asset-tool-ui.js.map +1 -1
  534. package/dist/tools/step-text.cjs +21 -0
  535. package/dist/tools/step-text.cjs.map +1 -0
  536. package/dist/tools/step-text.d.ts +10 -0
  537. package/dist/tools/step-text.js +21 -0
  538. package/dist/tools/step-text.js.map +1 -0
  539. package/dist/tools/tool-fallback.cjs +24 -5
  540. package/dist/tools/tool-fallback.cjs.map +1 -1
  541. package/dist/tools/tool-fallback.d.ts +3 -1
  542. package/dist/tools/tool-fallback.js +24 -5
  543. package/dist/tools/tool-fallback.js.map +1 -1
  544. package/dist/tools/tool-summary.cjs +661 -0
  545. package/dist/tools/tool-summary.cjs.map +1 -0
  546. package/dist/tools/tool-summary.d.ts +99 -0
  547. package/dist/tools/tool-summary.js +661 -0
  548. package/dist/tools/tool-summary.js.map +1 -0
  549. package/dist/tools/tool-uis.cjs +37 -95
  550. package/dist/tools/tool-uis.cjs.map +1 -1
  551. package/dist/tools/tool-uis.js +37 -95
  552. package/dist/tools/tool-uis.js.map +1 -1
  553. package/dist/tools/voice-update-tool-ui.cjs +1 -1
  554. package/dist/tools/voice-update-tool-ui.js +1 -1
  555. package/dist/tools/write-todos-tool-ui.cjs +3 -2
  556. package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
  557. package/dist/tools/write-todos-tool-ui.d.ts +5 -0
  558. package/dist/tools/write-todos-tool-ui.js +5 -4
  559. package/dist/tools/write-todos-tool-ui.js.map +1 -1
  560. package/dist/ui/popover.cjs +6 -6
  561. package/dist/ui/popover.cjs.map +1 -1
  562. package/dist/ui/popover.js +6 -6
  563. package/dist/ui/popover.js.map +1 -1
  564. package/dist/ui/tooltip.cjs +16 -2
  565. package/dist/ui/tooltip.cjs.map +1 -1
  566. package/dist/ui/tooltip.d.ts +1 -1
  567. package/dist/ui/tooltip.js +16 -2
  568. package/dist/ui/tooltip.js.map +1 -1
  569. package/dist/version.cjs +1 -1
  570. package/dist/version.js +1 -1
  571. package/dist/voice/use-athena-voice-session.cjs.map +1 -1
  572. package/dist/voice/use-athena-voice-session.d.ts +3 -3
  573. package/dist/voice/use-athena-voice-session.js.map +1 -1
  574. package/dist/workbench/SessionWorkbench.cjs +378 -0
  575. package/dist/workbench/SessionWorkbench.cjs.map +1 -0
  576. package/dist/workbench/SessionWorkbench.d.ts +30 -0
  577. package/dist/workbench/SessionWorkbench.js +378 -0
  578. package/dist/workbench/SessionWorkbench.js.map +1 -0
  579. package/dist/workbench/session-workbench-context.cjs +26 -0
  580. package/dist/workbench/session-workbench-context.cjs.map +1 -0
  581. package/dist/workbench/session-workbench-context.d.ts +55 -0
  582. package/dist/workbench/session-workbench-context.js +26 -0
  583. package/dist/workbench/session-workbench-context.js.map +1 -0
  584. package/dist/workbench/session-workbench-model.cjs +288 -0
  585. package/dist/workbench/session-workbench-model.cjs.map +1 -0
  586. package/dist/workbench/session-workbench-model.d.ts +168 -0
  587. package/dist/workbench/session-workbench-model.js +288 -0
  588. package/dist/workbench/session-workbench-model.js.map +1 -0
  589. package/dist/workbench/session-workbench-panes.cjs +580 -0
  590. package/dist/workbench/session-workbench-panes.cjs.map +1 -0
  591. package/dist/workbench/session-workbench-panes.d.ts +16 -0
  592. package/dist/workbench/session-workbench-panes.js +580 -0
  593. package/dist/workbench/session-workbench-panes.js.map +1 -0
  594. package/dist/workbench/session-workspace-api.cjs +157 -0
  595. package/dist/workbench/session-workspace-api.cjs.map +1 -0
  596. package/dist/workbench/session-workspace-api.d.ts +70 -0
  597. package/dist/workbench/session-workspace-api.js +157 -0
  598. package/dist/workbench/session-workspace-api.js.map +1 -0
  599. package/dist/workbench/use-session-workspace.cjs +100 -0
  600. package/dist/workbench/use-session-workspace.cjs.map +1 -0
  601. package/dist/workbench/use-session-workspace.d.ts +45 -0
  602. package/dist/workbench/use-session-workspace.js +100 -0
  603. package/dist/workbench/use-session-workspace.js.map +1 -0
  604. package/dist/workbench/workbench-layout-context.cjs +10 -0
  605. package/dist/workbench/workbench-layout-context.cjs.map +1 -0
  606. package/dist/workbench/workbench-layout-context.d.ts +17 -0
  607. package/dist/workbench/workbench-layout-context.js +10 -0
  608. package/dist/workbench/workbench-layout-context.js.map +1 -0
  609. package/package.json +20 -9
  610. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
  611. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
  612. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
  613. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
  614. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
  615. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
  616. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
  617. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
  618. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
  619. package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
  620. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
  621. package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
  622. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
  623. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
  624. package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
  625. package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
  626. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
  627. package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
  628. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
  629. package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
  630. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
  631. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
  632. package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
  633. package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
  634. package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
  635. package/dist/packages/agent-runtime/src/errors.js.map +0 -1
  636. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
  637. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
  638. package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
  639. package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
  640. package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
  641. package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
  642. package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
  643. package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
  644. package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
  645. package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
  646. package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
  647. package/dist/packages/agent-runtime/src/messages.js.map +0 -1
  648. package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
  649. package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
  650. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
  651. package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
  652. package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
  653. package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
  654. package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
  655. package/dist/packages/agent-runtime/src/queue.js.map +0 -1
  656. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
  657. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
  658. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
  659. package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
  660. package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
  661. package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
  662. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
  663. package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
  664. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
  665. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
  666. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
  667. package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
  668. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
  669. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
  670. package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
  671. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
  672. package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
  673. package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
  674. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
  675. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
  676. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
  677. package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
  678. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
  679. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
  680. package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
  681. package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
  682. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
  683. package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
  684. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
  685. package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
  686. package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
  687. package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
  688. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
  689. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
  690. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
  691. package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
  692. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
  693. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
  694. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
  695. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
  696. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
  697. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
  698. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
  699. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
  700. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
  701. package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
  702. package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
  703. package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
  704. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
  705. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
  706. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
  707. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
  708. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
  709. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
  710. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
  711. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
  712. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
  713. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
  714. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
  715. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
  716. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
  717. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
  718. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
  719. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
  720. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
  721. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
  722. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
  723. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
  724. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
  725. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
  726. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
  727. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
  728. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
  729. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
  730. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
  731. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
  732. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
  733. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
  734. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
  735. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
  736. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
  737. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
  738. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
  739. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
  740. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
  741. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
  742. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
  743. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
  744. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
  745. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
  746. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
  747. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
  748. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
  749. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
  750. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.cjs +0 -0
  751. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.js +0 -0
  752. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
  753. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
  754. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
  755. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
  756. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
  757. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
  758. /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
  759. /package/dist/{packages/react → react}/package.json.js.map +0 -0
  760. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
  761. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"auto-open-tools.cjs","sources":["../../src/tools/auto-open-tools.ts"],"sourcesContent":["import type { Toolkit } from '@assistant-ui/react';\nimport { useAssetPanelStore, type AssetType } from '../assets/asset-panel-store';\nimport { tryParseJson } from './asset-utils';\n\ntype AnyRecord = Record<string, unknown>;\n\nconst isRecord = (value: unknown): value is AnyRecord =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeResult = (result: unknown): AnyRecord | null => {\n if (!result) return null;\n if (typeof result === 'string') {\n const parsed = tryParseJson(result);\n if (isRecord(parsed)) return parsed;\n return null;\n }\n if (isRecord(result)) {\n const inner = (result as AnyRecord).result;\n if (typeof inner === 'string') {\n const parsed = tryParseJson(inner);\n if (isRecord(parsed)) return parsed;\n } else if (isRecord(inner)) {\n return inner;\n }\n return result;\n }\n return null;\n};\n\nconst pickAssetId = (...candidates: unknown[]): string | null => {\n for (const candidate of candidates) {\n if (typeof candidate === 'string' && candidate.startsWith('asset_')) {\n return candidate;\n }\n }\n return null;\n};\n\nconst pickNumber = (...candidates: unknown[]): number | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return undefined;\n};\n\nconst autoOpen = (\n assetId: string,\n options: { type?: AssetType; slideNumber?: number; preserveExistingSlide?: boolean } = {},\n) => {\n const store = useAssetPanelStore.getState();\n if (!store.markAutoOpened(assetId)) return;\n const existing = store.tabs.find((tab) => tab.id === assetId);\n const keepCurrentSlide = options.preserveExistingSlide && existing;\n store.openAsset(assetId, {\n type: options.type ?? 'unknown',\n ...(keepCurrentSlide || options.slideNumber === undefined\n ? {}\n : { slideNumber: options.slideNumber }),\n });\n};\n\nconst openOnResult = (\n type: AssetType,\n extra?: {\n slideNumberFrom?: 'args' | 'result' | 'both';\n preserveExistingSlide?: boolean;\n },\n): Toolkit[string] => ({\n streamCall: async (reader) => {\n const { result } = await reader.response.get();\n const data = normalizeResult(result);\n const assetId = pickAssetId(\n data?.asset_id,\n data?.assetId,\n (data as { id?: unknown })?.id,\n );\n if (!assetId) return;\n\n let slideNumber: number | undefined;\n if (extra?.slideNumberFrom !== 'args') {\n slideNumber = pickNumber(\n data?.slide_number,\n data?.slideNumber,\n data?.targetSlideNumber,\n data?.target_slide_number,\n );\n }\n if (slideNumber === undefined && extra?.slideNumberFrom !== 'result') {\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n slideNumber = pickNumber(\n args?.slide_number,\n args?.slideNumber,\n args?.targetSlideNumber,\n args?.target_slide_number,\n );\n }\n\n autoOpen(assetId, {\n type,\n slideNumber,\n preserveExistingSlide: extra?.preserveExistingSlide,\n });\n },\n});\n\nconst openFromArgs = (type: AssetType): Toolkit[string] => ({\n streamCall: async (reader) => {\n await reader.response.get();\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n const assetId = pickAssetId(args?.asset_id, args?.assetId);\n if (!assetId) return;\n autoOpen(assetId, { type });\n },\n});\n\n/**\n * Default frontend tools that auto-open the asset a tool just created or\n * touched. Registered automatically by `AthenaProvider` / `AthenaChat`; pass\n * `disableAutoOpen` to turn off, or override individual entries via\n * `frontendTools`.\n */\nexport const DEFAULT_AUTO_OPEN_TOOLS: Toolkit = {\n // Top-level asset creators\n create_new_document: openOnResult('document'),\n create_document_from_markdown: openOnResult('document'),\n create_new_sheet: openOnResult('spreadsheet'),\n create_powerpoint_deck: openOnResult('presentation'),\n create_presentation_pptx_studio: openOnResult('presentation'),\n create_new_notebook: openOnResult('notebook'),\n\n // Open / read existing assets\n open_asset_in_workspace: openFromArgs('unknown'),\n\n // Code execution that lands on a deck/slide\n execute_presentation_code: openOnResult('presentation'),\n\n // Media capture\n capture_moment: openOnResult('unknown'),\n\n // Studio PTC sub-calls (nested SDK commands)\n CreateWorkbook: openOnResult('spreadsheet'),\n AddSheet: openOnResult('spreadsheet'),\n OpenWorkbook: openOnResult('spreadsheet'),\n CreatePresentation: openOnResult('presentation'),\n OpenPresentation: openOnResult('presentation', { preserveExistingSlide: true }),\n AddSlide: openOnResult('presentation'),\n CreateDocument: openOnResult('document'),\n CreateParagraph: openOnResult('document'),\n OpenDocument: openOnResult('document'),\n};\n"],"names":["tryParseJson","useAssetPanelStore"],"mappings":"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"}
1
+ {"version":3,"file":"auto-open-tools.cjs","sources":["../../src/tools/auto-open-tools.ts"],"sourcesContent":["import type { Toolkit } from '@assistant-ui/react';\nimport { useAssetPanelStore, type AssetType } from '../assets/asset-panel-store';\nimport { tryParseJson } from './asset-utils';\n\ntype AnyRecord = Record<string, unknown>;\n\nconst isRecord = (value: unknown): value is AnyRecord =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeResult = (result: unknown): AnyRecord | null => {\n if (!result) return null;\n if (typeof result === 'string') {\n const parsed = tryParseJson(result);\n if (isRecord(parsed)) return parsed;\n return null;\n }\n if (isRecord(result)) {\n const inner = (result as AnyRecord).result;\n if (typeof inner === 'string') {\n const parsed = tryParseJson(inner);\n if (isRecord(parsed)) return parsed;\n } else if (isRecord(inner)) {\n return inner;\n }\n return result;\n }\n return null;\n};\n\nconst pickAssetId = (...candidates: unknown[]): string | null => {\n for (const candidate of candidates) {\n if (typeof candidate === 'string' && candidate.startsWith('asset_')) {\n return candidate;\n }\n }\n return null;\n};\n\nconst pickNumber = (...candidates: unknown[]): number | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return undefined;\n};\n\nconst autoOpen = (\n assetId: string,\n options: { type?: AssetType; slideNumber?: number; preserveExistingSlide?: boolean } = {},\n) => {\n const store = useAssetPanelStore.getState();\n if (!store.markAutoOpened(assetId)) return;\n const existing = store.tabs.find((tab) => tab.id === assetId);\n const keepCurrentSlide = options.preserveExistingSlide && existing;\n store.openAsset(assetId, {\n type: options.type ?? 'unknown',\n // A host's own opener tells an open nobody clicked from one the person asked for.\n origin: 'auto',\n ...(keepCurrentSlide || options.slideNumber === undefined\n ? {}\n : { slideNumber: options.slideNumber }),\n });\n};\n\nconst openOnResult = (\n type: AssetType,\n extra?: {\n slideNumberFrom?: 'args' | 'result' | 'both';\n preserveExistingSlide?: boolean;\n },\n): Toolkit[string] => ({\n streamCall: async (reader) => {\n const { result } = await reader.response.get();\n const data = normalizeResult(result);\n const assetId = pickAssetId(\n data?.asset_id,\n data?.assetId,\n (data as { id?: unknown })?.id,\n );\n if (!assetId) return;\n\n let slideNumber: number | undefined;\n if (extra?.slideNumberFrom !== 'args') {\n slideNumber = pickNumber(\n data?.slide_number,\n data?.slideNumber,\n data?.targetSlideNumber,\n data?.target_slide_number,\n );\n }\n if (slideNumber === undefined && extra?.slideNumberFrom !== 'result') {\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n slideNumber = pickNumber(\n args?.slide_number,\n args?.slideNumber,\n args?.targetSlideNumber,\n args?.target_slide_number,\n );\n }\n\n autoOpen(assetId, {\n type,\n slideNumber,\n preserveExistingSlide: extra?.preserveExistingSlide,\n });\n },\n});\n\nconst openFromArgs = (type: AssetType): Toolkit[string] => ({\n streamCall: async (reader) => {\n await reader.response.get();\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n const assetId = pickAssetId(args?.asset_id, args?.assetId);\n if (!assetId) return;\n autoOpen(assetId, { type });\n },\n});\n\n/**\n * Default frontend tools that auto-open the asset a tool just created or\n * touched. Registered automatically by `AthenaProvider` / `AthenaChat`; pass\n * `disableAutoOpen` to turn off, or override individual entries via\n * `frontendTools`.\n */\nexport const DEFAULT_AUTO_OPEN_TOOLS: Toolkit = {\n // Top-level asset creators\n create_new_document: openOnResult('document'),\n create_document_from_markdown: openOnResult('document'),\n create_new_sheet: openOnResult('spreadsheet'),\n create_powerpoint_deck: openOnResult('presentation'),\n create_presentation_pptx_studio: openOnResult('presentation'),\n create_new_notebook: openOnResult('notebook'),\n\n // Open / read existing assets\n open_asset_in_workspace: openFromArgs('unknown'),\n\n // Code execution that lands on a deck/slide\n execute_presentation_code: openOnResult('presentation'),\n\n // Media capture\n capture_moment: openOnResult('unknown'),\n\n // Studio PTC sub-calls (nested SDK commands)\n CreateWorkbook: openOnResult('spreadsheet'),\n AddSheet: openOnResult('spreadsheet'),\n OpenWorkbook: openOnResult('spreadsheet'),\n CreatePresentation: openOnResult('presentation'),\n OpenPresentation: openOnResult('presentation', { preserveExistingSlide: true }),\n AddSlide: openOnResult('presentation'),\n CreateDocument: openOnResult('document'),\n CreateParagraph: openOnResult('document'),\n OpenDocument: openOnResult('document'),\n};\n"],"names":["tryParseJson","useAssetPanelStore"],"mappings":"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"}
@@ -43,6 +43,8 @@ const autoOpen = (assetId, options = {}) => {
43
43
  const keepCurrentSlide = options.preserveExistingSlide && existing;
44
44
  store.openAsset(assetId, {
45
45
  type: options.type ?? "unknown",
46
+ // A host's own opener tells an open nobody clicked from one the person asked for.
47
+ origin: "auto",
46
48
  ...keepCurrentSlide || options.slideNumber === void 0 ? {} : { slideNumber: options.slideNumber }
47
49
  });
48
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"auto-open-tools.js","sources":["../../src/tools/auto-open-tools.ts"],"sourcesContent":["import type { Toolkit } from '@assistant-ui/react';\nimport { useAssetPanelStore, type AssetType } from '../assets/asset-panel-store';\nimport { tryParseJson } from './asset-utils';\n\ntype AnyRecord = Record<string, unknown>;\n\nconst isRecord = (value: unknown): value is AnyRecord =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeResult = (result: unknown): AnyRecord | null => {\n if (!result) return null;\n if (typeof result === 'string') {\n const parsed = tryParseJson(result);\n if (isRecord(parsed)) return parsed;\n return null;\n }\n if (isRecord(result)) {\n const inner = (result as AnyRecord).result;\n if (typeof inner === 'string') {\n const parsed = tryParseJson(inner);\n if (isRecord(parsed)) return parsed;\n } else if (isRecord(inner)) {\n return inner;\n }\n return result;\n }\n return null;\n};\n\nconst pickAssetId = (...candidates: unknown[]): string | null => {\n for (const candidate of candidates) {\n if (typeof candidate === 'string' && candidate.startsWith('asset_')) {\n return candidate;\n }\n }\n return null;\n};\n\nconst pickNumber = (...candidates: unknown[]): number | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return undefined;\n};\n\nconst autoOpen = (\n assetId: string,\n options: { type?: AssetType; slideNumber?: number; preserveExistingSlide?: boolean } = {},\n) => {\n const store = useAssetPanelStore.getState();\n if (!store.markAutoOpened(assetId)) return;\n const existing = store.tabs.find((tab) => tab.id === assetId);\n const keepCurrentSlide = options.preserveExistingSlide && existing;\n store.openAsset(assetId, {\n type: options.type ?? 'unknown',\n ...(keepCurrentSlide || options.slideNumber === undefined\n ? {}\n : { slideNumber: options.slideNumber }),\n });\n};\n\nconst openOnResult = (\n type: AssetType,\n extra?: {\n slideNumberFrom?: 'args' | 'result' | 'both';\n preserveExistingSlide?: boolean;\n },\n): Toolkit[string] => ({\n streamCall: async (reader) => {\n const { result } = await reader.response.get();\n const data = normalizeResult(result);\n const assetId = pickAssetId(\n data?.asset_id,\n data?.assetId,\n (data as { id?: unknown })?.id,\n );\n if (!assetId) return;\n\n let slideNumber: number | undefined;\n if (extra?.slideNumberFrom !== 'args') {\n slideNumber = pickNumber(\n data?.slide_number,\n data?.slideNumber,\n data?.targetSlideNumber,\n data?.target_slide_number,\n );\n }\n if (slideNumber === undefined && extra?.slideNumberFrom !== 'result') {\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n slideNumber = pickNumber(\n args?.slide_number,\n args?.slideNumber,\n args?.targetSlideNumber,\n args?.target_slide_number,\n );\n }\n\n autoOpen(assetId, {\n type,\n slideNumber,\n preserveExistingSlide: extra?.preserveExistingSlide,\n });\n },\n});\n\nconst openFromArgs = (type: AssetType): Toolkit[string] => ({\n streamCall: async (reader) => {\n await reader.response.get();\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n const assetId = pickAssetId(args?.asset_id, args?.assetId);\n if (!assetId) return;\n autoOpen(assetId, { type });\n },\n});\n\n/**\n * Default frontend tools that auto-open the asset a tool just created or\n * touched. Registered automatically by `AthenaProvider` / `AthenaChat`; pass\n * `disableAutoOpen` to turn off, or override individual entries via\n * `frontendTools`.\n */\nexport const DEFAULT_AUTO_OPEN_TOOLS: Toolkit = {\n // Top-level asset creators\n create_new_document: openOnResult('document'),\n create_document_from_markdown: openOnResult('document'),\n create_new_sheet: openOnResult('spreadsheet'),\n create_powerpoint_deck: openOnResult('presentation'),\n create_presentation_pptx_studio: openOnResult('presentation'),\n create_new_notebook: openOnResult('notebook'),\n\n // Open / read existing assets\n open_asset_in_workspace: openFromArgs('unknown'),\n\n // Code execution that lands on a deck/slide\n execute_presentation_code: openOnResult('presentation'),\n\n // Media capture\n capture_moment: openOnResult('unknown'),\n\n // Studio PTC sub-calls (nested SDK commands)\n CreateWorkbook: openOnResult('spreadsheet'),\n AddSheet: openOnResult('spreadsheet'),\n OpenWorkbook: openOnResult('spreadsheet'),\n CreatePresentation: openOnResult('presentation'),\n OpenPresentation: openOnResult('presentation', { preserveExistingSlide: true }),\n AddSlide: openOnResult('presentation'),\n CreateDocument: openOnResult('document'),\n CreateParagraph: openOnResult('document'),\n OpenDocument: openOnResult('document'),\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-open-tools.js","sources":["../../src/tools/auto-open-tools.ts"],"sourcesContent":["import type { Toolkit } from '@assistant-ui/react';\nimport { useAssetPanelStore, type AssetType } from '../assets/asset-panel-store';\nimport { tryParseJson } from './asset-utils';\n\ntype AnyRecord = Record<string, unknown>;\n\nconst isRecord = (value: unknown): value is AnyRecord =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeResult = (result: unknown): AnyRecord | null => {\n if (!result) return null;\n if (typeof result === 'string') {\n const parsed = tryParseJson(result);\n if (isRecord(parsed)) return parsed;\n return null;\n }\n if (isRecord(result)) {\n const inner = (result as AnyRecord).result;\n if (typeof inner === 'string') {\n const parsed = tryParseJson(inner);\n if (isRecord(parsed)) return parsed;\n } else if (isRecord(inner)) {\n return inner;\n }\n return result;\n }\n return null;\n};\n\nconst pickAssetId = (...candidates: unknown[]): string | null => {\n for (const candidate of candidates) {\n if (typeof candidate === 'string' && candidate.startsWith('asset_')) {\n return candidate;\n }\n }\n return null;\n};\n\nconst pickNumber = (...candidates: unknown[]): number | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return undefined;\n};\n\nconst autoOpen = (\n assetId: string,\n options: { type?: AssetType; slideNumber?: number; preserveExistingSlide?: boolean } = {},\n) => {\n const store = useAssetPanelStore.getState();\n if (!store.markAutoOpened(assetId)) return;\n const existing = store.tabs.find((tab) => tab.id === assetId);\n const keepCurrentSlide = options.preserveExistingSlide && existing;\n store.openAsset(assetId, {\n type: options.type ?? 'unknown',\n // A host's own opener tells an open nobody clicked from one the person asked for.\n origin: 'auto',\n ...(keepCurrentSlide || options.slideNumber === undefined\n ? {}\n : { slideNumber: options.slideNumber }),\n });\n};\n\nconst openOnResult = (\n type: AssetType,\n extra?: {\n slideNumberFrom?: 'args' | 'result' | 'both';\n preserveExistingSlide?: boolean;\n },\n): Toolkit[string] => ({\n streamCall: async (reader) => {\n const { result } = await reader.response.get();\n const data = normalizeResult(result);\n const assetId = pickAssetId(\n data?.asset_id,\n data?.assetId,\n (data as { id?: unknown })?.id,\n );\n if (!assetId) return;\n\n let slideNumber: number | undefined;\n if (extra?.slideNumberFrom !== 'args') {\n slideNumber = pickNumber(\n data?.slide_number,\n data?.slideNumber,\n data?.targetSlideNumber,\n data?.target_slide_number,\n );\n }\n if (slideNumber === undefined && extra?.slideNumberFrom !== 'result') {\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n slideNumber = pickNumber(\n args?.slide_number,\n args?.slideNumber,\n args?.targetSlideNumber,\n args?.target_slide_number,\n );\n }\n\n autoOpen(assetId, {\n type,\n slideNumber,\n preserveExistingSlide: extra?.preserveExistingSlide,\n });\n },\n});\n\nconst openFromArgs = (type: AssetType): Toolkit[string] => ({\n streamCall: async (reader) => {\n await reader.response.get();\n const args = (await reader.args.get().catch(() => null)) as AnyRecord | null;\n const assetId = pickAssetId(args?.asset_id, args?.assetId);\n if (!assetId) return;\n autoOpen(assetId, { type });\n },\n});\n\n/**\n * Default frontend tools that auto-open the asset a tool just created or\n * touched. Registered automatically by `AthenaProvider` / `AthenaChat`; pass\n * `disableAutoOpen` to turn off, or override individual entries via\n * `frontendTools`.\n */\nexport const DEFAULT_AUTO_OPEN_TOOLS: Toolkit = {\n // Top-level asset creators\n create_new_document: openOnResult('document'),\n create_document_from_markdown: openOnResult('document'),\n create_new_sheet: openOnResult('spreadsheet'),\n create_powerpoint_deck: openOnResult('presentation'),\n create_presentation_pptx_studio: openOnResult('presentation'),\n create_new_notebook: openOnResult('notebook'),\n\n // Open / read existing assets\n open_asset_in_workspace: openFromArgs('unknown'),\n\n // Code execution that lands on a deck/slide\n execute_presentation_code: openOnResult('presentation'),\n\n // Media capture\n capture_moment: openOnResult('unknown'),\n\n // Studio PTC sub-calls (nested SDK commands)\n CreateWorkbook: openOnResult('spreadsheet'),\n AddSheet: openOnResult('spreadsheet'),\n OpenWorkbook: openOnResult('spreadsheet'),\n CreatePresentation: openOnResult('presentation'),\n OpenPresentation: openOnResult('presentation', { preserveExistingSlide: true }),\n AddSlide: openOnResult('presentation'),\n CreateDocument: openOnResult('document'),\n CreateParagraph: openOnResult('document'),\n OpenDocument: openOnResult('document'),\n};\n"],"names":[],"mappings":"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"}
@@ -4,17 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const lucideReact = require("lucide-react");
5
5
  const react = require("react");
6
6
  const primitives = require("./primitives.cjs");
7
- function friendlyWorkspacePath(value) {
8
- if (typeof value !== "string" || value.trim() === "") return void 0;
9
- const path = value.trim();
10
- if (path.includes("large_tool_results")) {
11
- return "detailed results from an earlier step";
12
- }
13
- if (path.includes("/memory/")) return "session memory";
14
- if (path.includes("/skills/")) return "a skill reference";
15
- const base = path.split("/").filter(Boolean).pop();
16
- return base ?? path;
17
- }
7
+ const toolSummary = require("./tool-summary.cjs");
18
8
  function rawDetails(result) {
19
9
  if (result === null || result === void 0) return null;
20
10
  if (typeof result === "string") {
@@ -31,78 +21,63 @@ function rawDetails(result) {
31
21
  const text = JSON.stringify(data, null, 2);
32
22
  return text.trim() !== "" ? text : null;
33
23
  }
24
+ function quietCardState(status) {
25
+ if ((status == null ? void 0 : status.type) === "running") return "running";
26
+ if ((status == null ? void 0 : status.type) === "requires-action") return "waiting";
27
+ if ((status == null ? void 0 : status.type) === "incomplete") return status.reason === "cancelled" ? "cancelled" : "error";
28
+ return "complete";
29
+ }
34
30
  function makeQuietFileToolUI(spec) {
35
- const Impl = ({ args, result, status }) => {
36
- const typedArgs = args;
37
- let subtitle;
38
- for (const key of spec.subtitleArgs) {
39
- subtitle = friendlyWorkspacePath(typedArgs == null ? void 0 : typedArgs[key]);
40
- if (subtitle) break;
41
- }
42
- const isRunning = (status == null ? void 0 : status.type) === "running";
31
+ const Impl = ({ toolName, args, result, status }) => {
43
32
  const isFailed = (status == null ? void 0 : status.type) === "incomplete";
44
33
  const errorMsg = isFailed ? String(status.error ?? "") : null;
45
34
  const details = (status == null ? void 0 : status.type) === "complete" ? rawDetails(result) : null;
35
+ const summary = toolSummary.summarizeToolCall({
36
+ toolName,
37
+ args,
38
+ result: (status == null ? void 0 : status.type) === "complete" ? result : void 0,
39
+ status: quietCardState(status)
40
+ });
46
41
  return /* @__PURE__ */ jsxRuntime.jsx(
47
42
  primitives.ToolCard,
48
43
  {
49
44
  icon: spec.icon,
50
45
  status: (status == null ? void 0 : status.type) ?? "complete",
51
- title: isRunning ? spec.runningTitle : isFailed ? spec.failedTitle : spec.doneTitle,
52
- subtitle: subtitle ? primitives.truncate(subtitle, 70) : void 0,
46
+ title: summary.label,
47
+ subtitle: summary.meta ? primitives.truncate(summary.meta, 70) : void 0,
53
48
  error: errorMsg || void 0,
54
49
  children: details && /* @__PURE__ */ jsxRuntime.jsx(primitives.ExpandableSection, { label: spec.detailsLabel, children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground", children: primitives.truncate(details, 6e3) }) })
55
50
  }
56
51
  );
57
52
  };
58
53
  const Quiet = react.memo(Impl);
59
- Quiet.displayName = `QuietFileToolUI(${spec.doneTitle})`;
54
+ Quiet.displayName = `QuietFileToolUI(${spec.detailsLabel})`;
60
55
  return Quiet;
61
56
  }
62
57
  const ReadFileToolUI = makeQuietFileToolUI({
63
58
  icon: lucideReact.ScanSearchIcon,
64
- runningTitle: "Reviewing working files…",
65
- doneTitle: "Reviewed working files",
66
- failedTitle: "Couldn't review working files",
67
- subtitleArgs: ["file_path", "path"],
68
59
  detailsLabel: "Show details"
69
60
  });
70
61
  const ListFilesToolUI = makeQuietFileToolUI({
71
62
  icon: lucideReact.FolderOpenIcon,
72
- runningTitle: "Checking the workspace…",
73
- doneTitle: "Checked the workspace",
74
- failedTitle: "Couldn't check the workspace",
75
- subtitleArgs: ["path"],
76
63
  detailsLabel: "Show files"
77
64
  });
78
65
  const WriteFileToolUI = makeQuietFileToolUI({
79
66
  icon: lucideReact.FileTextIcon,
80
- runningTitle: "Saving working files…",
81
- doneTitle: "Saved working files",
82
- failedTitle: "Couldn't save working files",
83
- subtitleArgs: ["file_path", "path"],
84
67
  detailsLabel: "Show details"
85
68
  });
86
69
  const EditFileToolUI = makeQuietFileToolUI({
87
70
  icon: lucideReact.PenLineIcon,
88
- runningTitle: "Updating working files…",
89
- doneTitle: "Updated working files",
90
- failedTitle: "Couldn't update working files",
91
- subtitleArgs: ["file_path", "path"],
92
71
  detailsLabel: "Show details"
93
72
  });
94
73
  const SearchFilesToolUI = makeQuietFileToolUI({
95
74
  icon: lucideReact.SearchIcon,
96
- runningTitle: "Searching working files…",
97
- doneTitle: "Searched working files",
98
- failedTitle: "Couldn't search working files",
99
- subtitleArgs: ["pattern", "query", "path"],
100
75
  detailsLabel: "Show matches"
101
76
  });
77
+ exports.friendlyWorkspacePath = toolSummary.friendlyWorkspacePath;
102
78
  exports.EditFileToolUI = EditFileToolUI;
103
79
  exports.ListFilesToolUI = ListFilesToolUI;
104
80
  exports.ReadFileToolUI = ReadFileToolUI;
105
81
  exports.SearchFilesToolUI = SearchFilesToolUI;
106
82
  exports.WriteFileToolUI = WriteFileToolUI;
107
- exports.friendlyWorkspacePath = friendlyWorkspacePath;
108
83
  //# sourceMappingURL=file-tool-uis.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-tool-uis.cjs","sources":["../../src/tools/file-tool-uis.tsx"],"sourcesContent":["/**\n * Quiet tool cards for the deep-agent workspace-file tools.\n *\n * `read_file` / `ls` / `write_file` / `edit_file` / `glob` / `grep` are the\n * agent's own scratch-space plumbing. Without registry entries they fall\n * through to the generic fallback, which renders the raw args/result JSON —\n * scratch paths like `/large_tool_results/toolu_…` and screenfuls of encoded\n * text that read as garble to a non-technical user. Each becomes a one-line,\n * plain-English card; the raw output stays available behind a collapsed\n * \"Show details\" section. Hosts can still override any of them via the\n * `toolUIs` prop, which wins over the registry.\n */\nimport {\n FileTextIcon,\n FolderOpenIcon,\n PenLineIcon,\n ScanSearchIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { memo } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { ExpandableSection, normalizeResult, ToolCard, truncate } from \"./primitives\";\n\n/** Human label for an agent-workspace path (never surface scratch-file garble). */\nexport function friendlyWorkspacePath(value: unknown): string | undefined {\n if (typeof value !== \"string\" || value.trim() === \"\") return undefined;\n const path = value.trim();\n if (path.includes(\"large_tool_results\")) {\n return \"detailed results from an earlier step\";\n }\n if (path.includes(\"/memory/\")) return \"session memory\";\n if (path.includes(\"/skills/\")) return \"a skill reference\";\n const base = path.split(\"/\").filter(Boolean).pop();\n return base ?? path;\n}\n\nfunction rawDetails(result: unknown): string | null {\n if (result === null || result === undefined) return null;\n // File tools usually return plain text (file content, listings) — show it\n // as-is; only genuinely structured results get pretty-printed.\n if (typeof result === \"string\") {\n return result.trim() !== \"\" ? result : null;\n }\n if (typeof result === \"object\") {\n const inner = (result as Record<string, unknown>).result;\n if (typeof inner === \"string\") {\n return inner.trim() !== \"\" ? inner : null;\n }\n }\n const data = normalizeResult(result);\n if (data === null) return null;\n const text = JSON.stringify(data, null, 2);\n return text.trim() !== \"\" ? text : null;\n}\n\ninterface QuietFileToolSpec {\n icon: React.ElementType;\n runningTitle: string;\n doneTitle: string;\n failedTitle: string;\n /** Args keys to try, in order, for the subtitle. */\n subtitleArgs: readonly string[];\n detailsLabel: string;\n}\n\nfunction makeQuietFileToolUI(spec: QuietFileToolSpec): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = ({ args, result, status }) => {\n const typedArgs = args as Record<string, unknown> | undefined;\n let subtitle: string | undefined;\n for (const key of spec.subtitleArgs) {\n subtitle = friendlyWorkspacePath(typedArgs?.[key]);\n if (subtitle) break;\n }\n const isRunning = status?.type === \"running\";\n const isFailed = status?.type === \"incomplete\";\n const errorMsg = isFailed ? String(status.error ?? \"\") : null;\n const details = status?.type === \"complete\" ? rawDetails(result) : null;\n\n return (\n <ToolCard\n icon={spec.icon}\n status={status?.type ?? \"complete\"}\n title={\n isRunning\n ? spec.runningTitle\n : isFailed\n ? spec.failedTitle\n : spec.doneTitle\n }\n subtitle={subtitle ? truncate(subtitle, 70) : undefined}\n error={errorMsg || undefined}\n >\n {details && (\n <ExpandableSection label={spec.detailsLabel}>\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground\">\n {truncate(details, 6000)}\n </pre>\n </ExpandableSection>\n )}\n </ToolCard>\n );\n };\n const Quiet = memo(Impl) as unknown as ToolCallMessagePartComponent;\n Quiet.displayName = `QuietFileToolUI(${spec.doneTitle})`;\n return Quiet;\n}\n\nexport const ReadFileToolUI = makeQuietFileToolUI({\n icon: ScanSearchIcon,\n runningTitle: \"Reviewing working files…\",\n doneTitle: \"Reviewed working files\",\n failedTitle: \"Couldn't review working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const ListFilesToolUI = makeQuietFileToolUI({\n icon: FolderOpenIcon,\n runningTitle: \"Checking the workspace…\",\n doneTitle: \"Checked the workspace\",\n failedTitle: \"Couldn't check the workspace\",\n subtitleArgs: [\"path\"],\n detailsLabel: \"Show files\",\n});\n\nexport const WriteFileToolUI = makeQuietFileToolUI({\n icon: FileTextIcon,\n runningTitle: \"Saving working files…\",\n doneTitle: \"Saved working files\",\n failedTitle: \"Couldn't save working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const EditFileToolUI = makeQuietFileToolUI({\n icon: PenLineIcon,\n runningTitle: \"Updating working files…\",\n doneTitle: \"Updated working files\",\n failedTitle: \"Couldn't update working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const SearchFilesToolUI = makeQuietFileToolUI({\n icon: SearchIcon,\n runningTitle: \"Searching working files…\",\n doneTitle: \"Searched working files\",\n failedTitle: \"Couldn't search working files\",\n subtitleArgs: [\"pattern\", \"query\", \"path\"],\n detailsLabel: \"Show matches\",\n});\n"],"names":["normalizeResult","jsx","ToolCard","truncate","ExpandableSection","memo","ScanSearchIcon","FolderOpenIcon","FileTextIcon","PenLineIcon","SearchIcon"],"mappings":"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"}
1
+ {"version":3,"file":"file-tool-uis.cjs","sources":["../../src/tools/file-tool-uis.tsx"],"sourcesContent":["/**\n * Quiet tool cards for the deep-agent workspace-file tools.\n *\n * `read_file` / `ls` / `write_file` / `edit_file` / `glob` / `grep` are the\n * agent's own scratch-space plumbing. Without registry entries they fall\n * through to the generic fallback, which renders the raw args/result JSON —\n * scratch paths like `/large_tool_results/toolu_…` and screenfuls of encoded\n * text that read as garble to a non-technical user. Each becomes a one-line\n * card titled by the shared summary registry (\"Read config.ts\", \"Edited\n * upstream.py\" with \"+4 −1\", scratch paths in plain English); the raw output\n * stays available behind a collapsed \"Show details\" section. Hosts can still\n * override any of them via the `toolUIs` prop, which wins over the registry.\n */\nimport {\n FileTextIcon,\n FolderOpenIcon,\n PenLineIcon,\n ScanSearchIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { memo } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { ExpandableSection, normalizeResult, ToolCard, truncate } from \"./primitives\";\nimport { summarizeToolCall, type ToolSummaryState } from \"./tool-summary\";\n\nexport { friendlyWorkspacePath } from \"./tool-summary\";\n\nfunction rawDetails(result: unknown): string | null {\n if (result === null || result === undefined) return null;\n // File tools usually return plain text (file content, listings) — show it\n // as-is; only genuinely structured results get pretty-printed.\n if (typeof result === \"string\") {\n return result.trim() !== \"\" ? result : null;\n }\n if (typeof result === \"object\") {\n const inner = (result as Record<string, unknown>).result;\n if (typeof inner === \"string\") {\n return inner.trim() !== \"\" ? inner : null;\n }\n }\n const data = normalizeResult(result);\n if (data === null) return null;\n const text = JSON.stringify(data, null, 2);\n return text.trim() !== \"\" ? text : null;\n}\n\ninterface QuietFileToolSpec {\n icon: React.ElementType;\n detailsLabel: string;\n}\n\nfunction quietCardState(status: { type: string; reason?: string } | undefined): ToolSummaryState {\n if (status?.type === \"running\") return \"running\";\n if (status?.type === \"requires-action\") return \"waiting\";\n if (status?.type === \"incomplete\") return status.reason === \"cancelled\" ? \"cancelled\" : \"error\";\n return \"complete\";\n}\n\nfunction makeQuietFileToolUI(spec: QuietFileToolSpec): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = ({ toolName, args, result, status }) => {\n const isFailed = status?.type === \"incomplete\";\n const errorMsg = isFailed ? String(status.error ?? \"\") : null;\n const details = status?.type === \"complete\" ? rawDetails(result) : null;\n const summary = summarizeToolCall({\n toolName,\n args: args as Record<string, unknown> | undefined,\n result: status?.type === \"complete\" ? result : undefined,\n status: quietCardState(status),\n });\n\n return (\n <ToolCard\n icon={spec.icon}\n status={status?.type ?? \"complete\"}\n title={summary.label}\n subtitle={summary.meta ? truncate(summary.meta, 70) : undefined}\n error={errorMsg || undefined}\n >\n {details && (\n <ExpandableSection label={spec.detailsLabel}>\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground\">\n {truncate(details, 6000)}\n </pre>\n </ExpandableSection>\n )}\n </ToolCard>\n );\n };\n const Quiet = memo(Impl) as unknown as ToolCallMessagePartComponent;\n Quiet.displayName = `QuietFileToolUI(${spec.detailsLabel})`;\n return Quiet;\n}\n\nexport const ReadFileToolUI = makeQuietFileToolUI({\n icon: ScanSearchIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const ListFilesToolUI = makeQuietFileToolUI({\n icon: FolderOpenIcon,\n detailsLabel: \"Show files\",\n});\n\nexport const WriteFileToolUI = makeQuietFileToolUI({\n icon: FileTextIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const EditFileToolUI = makeQuietFileToolUI({\n icon: PenLineIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const SearchFilesToolUI = makeQuietFileToolUI({\n icon: SearchIcon,\n detailsLabel: \"Show matches\",\n});\n"],"names":["normalizeResult","summarizeToolCall","jsx","ToolCard","truncate","ExpandableSection","memo","ScanSearchIcon","FolderOpenIcon","FileTextIcon","PenLineIcon","SearchIcon"],"mappings":";;;;;;;AA2BA,SAAS,WAAW,QAAgC;AAClD,MAAI,WAAW,QAAQ,WAAW,OAAW,QAAO;AAGpD,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO,OAAO,KAAA,MAAW,KAAK,SAAS;AAAA,EACzC;AACA,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,QAAS,OAAmC;AAClD,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,KAAA,MAAW,KAAK,QAAQ;AAAA,IACvC;AAAA,EACF;AACA,QAAM,OAAOA,WAAAA,gBAAgB,MAAM;AACnC,MAAI,SAAS,KAAM,QAAO;AAC1B,QAAM,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;AACzC,SAAO,KAAK,KAAA,MAAW,KAAK,OAAO;AACrC;AAOA,SAAS,eAAe,QAAyE;AAC/F,OAAI,iCAAQ,UAAS,UAAW,QAAO;AACvC,OAAI,iCAAQ,UAAS,kBAAmB,QAAO;AAC/C,OAAI,iCAAQ,UAAS,qBAAqB,OAAO,WAAW,cAAc,cAAc;AACxF,SAAO;AACT;AAEA,SAAS,oBAAoB,MAAuD;AAClF,QAAM,OAAqC,CAAC,EAAE,UAAU,MAAM,QAAQ,aAAa;AACjF,UAAM,YAAW,iCAAQ,UAAS;AAClC,UAAM,WAAW,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI;AACzD,UAAM,WAAU,iCAAQ,UAAS,aAAa,WAAW,MAAM,IAAI;AACnE,UAAM,UAAUC,YAAAA,kBAAkB;AAAA,MAChC;AAAA,MACA;AAAA,MACA,SAAQ,iCAAQ,UAAS,aAAa,SAAS;AAAA,MAC/C,QAAQ,eAAe,MAAM;AAAA,IAAA,CAC9B;AAED,WACEC,2BAAAA;AAAAA,MAACC,WAAAA;AAAAA,MAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,SAAQ,iCAAQ,SAAQ;AAAA,QACxB,OAAO,QAAQ;AAAA,QACf,UAAU,QAAQ,OAAOC,WAAAA,SAAS,QAAQ,MAAM,EAAE,IAAI;AAAA,QACtD,OAAO,YAAY;AAAA,QAElB,UAAA,WACCF,2BAAAA,IAACG,WAAAA,mBAAA,EAAkB,OAAO,KAAK,cAC7B,UAAAH,2BAAAA,IAAC,OAAA,EAAI,WAAU,uGACZ,UAAAE,WAAAA,SAAS,SAAS,GAAI,GACzB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACA,QAAM,QAAQE,MAAAA,KAAK,IAAI;AACvB,QAAM,cAAc,mBAAmB,KAAK,YAAY;AACxD,SAAO;AACT;AAEO,MAAM,iBAAiB,oBAAoB;AAAA,EAChD,MAAMC,YAAAA;AAAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,kBAAkB,oBAAoB;AAAA,EACjD,MAAMC,YAAAA;AAAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,kBAAkB,oBAAoB;AAAA,EACjD,MAAMC,YAAAA;AAAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,iBAAiB,oBAAoB;AAAA,EAChD,MAAMC,YAAAA;AAAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,oBAAoB,oBAAoB;AAAA,EACnD,MAAMC,YAAAA;AAAAA,EACN,cAAc;AAChB,CAAC;;;;;;;"}
@@ -1,6 +1,5 @@
1
1
  import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
2
- /** Human label for an agent-workspace path (never surface scratch-file garble). */
3
- export declare function friendlyWorkspacePath(value: unknown): string | undefined;
2
+ export { friendlyWorkspacePath } from "./tool-summary";
4
3
  export declare const ReadFileToolUI: ToolCallMessagePartComponent;
5
4
  export declare const ListFilesToolUI: ToolCallMessagePartComponent;
6
5
  export declare const WriteFileToolUI: ToolCallMessagePartComponent;
@@ -2,17 +2,8 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { ScanSearchIcon, FolderOpenIcon, FileTextIcon, PenLineIcon, SearchIcon } from "lucide-react";
3
3
  import { memo } from "react";
4
4
  import { ToolCard, ExpandableSection, truncate, normalizeResult } from "./primitives.js";
5
- function friendlyWorkspacePath(value) {
6
- if (typeof value !== "string" || value.trim() === "") return void 0;
7
- const path = value.trim();
8
- if (path.includes("large_tool_results")) {
9
- return "detailed results from an earlier step";
10
- }
11
- if (path.includes("/memory/")) return "session memory";
12
- if (path.includes("/skills/")) return "a skill reference";
13
- const base = path.split("/").filter(Boolean).pop();
14
- return base ?? path;
15
- }
5
+ import { summarizeToolCall } from "./tool-summary.js";
6
+ import { friendlyWorkspacePath } from "./tool-summary.js";
16
7
  function rawDetails(result) {
17
8
  if (result === null || result === void 0) return null;
18
9
  if (typeof result === "string") {
@@ -29,72 +20,57 @@ function rawDetails(result) {
29
20
  const text = JSON.stringify(data, null, 2);
30
21
  return text.trim() !== "" ? text : null;
31
22
  }
23
+ function quietCardState(status) {
24
+ if ((status == null ? void 0 : status.type) === "running") return "running";
25
+ if ((status == null ? void 0 : status.type) === "requires-action") return "waiting";
26
+ if ((status == null ? void 0 : status.type) === "incomplete") return status.reason === "cancelled" ? "cancelled" : "error";
27
+ return "complete";
28
+ }
32
29
  function makeQuietFileToolUI(spec) {
33
- const Impl = ({ args, result, status }) => {
34
- const typedArgs = args;
35
- let subtitle;
36
- for (const key of spec.subtitleArgs) {
37
- subtitle = friendlyWorkspacePath(typedArgs == null ? void 0 : typedArgs[key]);
38
- if (subtitle) break;
39
- }
40
- const isRunning = (status == null ? void 0 : status.type) === "running";
30
+ const Impl = ({ toolName, args, result, status }) => {
41
31
  const isFailed = (status == null ? void 0 : status.type) === "incomplete";
42
32
  const errorMsg = isFailed ? String(status.error ?? "") : null;
43
33
  const details = (status == null ? void 0 : status.type) === "complete" ? rawDetails(result) : null;
34
+ const summary = summarizeToolCall({
35
+ toolName,
36
+ args,
37
+ result: (status == null ? void 0 : status.type) === "complete" ? result : void 0,
38
+ status: quietCardState(status)
39
+ });
44
40
  return /* @__PURE__ */ jsx(
45
41
  ToolCard,
46
42
  {
47
43
  icon: spec.icon,
48
44
  status: (status == null ? void 0 : status.type) ?? "complete",
49
- title: isRunning ? spec.runningTitle : isFailed ? spec.failedTitle : spec.doneTitle,
50
- subtitle: subtitle ? truncate(subtitle, 70) : void 0,
45
+ title: summary.label,
46
+ subtitle: summary.meta ? truncate(summary.meta, 70) : void 0,
51
47
  error: errorMsg || void 0,
52
48
  children: details && /* @__PURE__ */ jsx(ExpandableSection, { label: spec.detailsLabel, children: /* @__PURE__ */ jsx("pre", { className: "max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground", children: truncate(details, 6e3) }) })
53
49
  }
54
50
  );
55
51
  };
56
52
  const Quiet = memo(Impl);
57
- Quiet.displayName = `QuietFileToolUI(${spec.doneTitle})`;
53
+ Quiet.displayName = `QuietFileToolUI(${spec.detailsLabel})`;
58
54
  return Quiet;
59
55
  }
60
56
  const ReadFileToolUI = makeQuietFileToolUI({
61
57
  icon: ScanSearchIcon,
62
- runningTitle: "Reviewing working files…",
63
- doneTitle: "Reviewed working files",
64
- failedTitle: "Couldn't review working files",
65
- subtitleArgs: ["file_path", "path"],
66
58
  detailsLabel: "Show details"
67
59
  });
68
60
  const ListFilesToolUI = makeQuietFileToolUI({
69
61
  icon: FolderOpenIcon,
70
- runningTitle: "Checking the workspace…",
71
- doneTitle: "Checked the workspace",
72
- failedTitle: "Couldn't check the workspace",
73
- subtitleArgs: ["path"],
74
62
  detailsLabel: "Show files"
75
63
  });
76
64
  const WriteFileToolUI = makeQuietFileToolUI({
77
65
  icon: FileTextIcon,
78
- runningTitle: "Saving working files…",
79
- doneTitle: "Saved working files",
80
- failedTitle: "Couldn't save working files",
81
- subtitleArgs: ["file_path", "path"],
82
66
  detailsLabel: "Show details"
83
67
  });
84
68
  const EditFileToolUI = makeQuietFileToolUI({
85
69
  icon: PenLineIcon,
86
- runningTitle: "Updating working files…",
87
- doneTitle: "Updated working files",
88
- failedTitle: "Couldn't update working files",
89
- subtitleArgs: ["file_path", "path"],
90
70
  detailsLabel: "Show details"
91
71
  });
92
72
  const SearchFilesToolUI = makeQuietFileToolUI({
93
73
  icon: SearchIcon,
94
- runningTitle: "Searching working files…",
95
- doneTitle: "Searched working files",
96
- failedTitle: "Couldn't search working files",
97
- subtitleArgs: ["pattern", "query", "path"],
98
74
  detailsLabel: "Show matches"
99
75
  });
100
76
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"file-tool-uis.js","sources":["../../src/tools/file-tool-uis.tsx"],"sourcesContent":["/**\n * Quiet tool cards for the deep-agent workspace-file tools.\n *\n * `read_file` / `ls` / `write_file` / `edit_file` / `glob` / `grep` are the\n * agent's own scratch-space plumbing. Without registry entries they fall\n * through to the generic fallback, which renders the raw args/result JSON —\n * scratch paths like `/large_tool_results/toolu_…` and screenfuls of encoded\n * text that read as garble to a non-technical user. Each becomes a one-line,\n * plain-English card; the raw output stays available behind a collapsed\n * \"Show details\" section. Hosts can still override any of them via the\n * `toolUIs` prop, which wins over the registry.\n */\nimport {\n FileTextIcon,\n FolderOpenIcon,\n PenLineIcon,\n ScanSearchIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { memo } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { ExpandableSection, normalizeResult, ToolCard, truncate } from \"./primitives\";\n\n/** Human label for an agent-workspace path (never surface scratch-file garble). */\nexport function friendlyWorkspacePath(value: unknown): string | undefined {\n if (typeof value !== \"string\" || value.trim() === \"\") return undefined;\n const path = value.trim();\n if (path.includes(\"large_tool_results\")) {\n return \"detailed results from an earlier step\";\n }\n if (path.includes(\"/memory/\")) return \"session memory\";\n if (path.includes(\"/skills/\")) return \"a skill reference\";\n const base = path.split(\"/\").filter(Boolean).pop();\n return base ?? path;\n}\n\nfunction rawDetails(result: unknown): string | null {\n if (result === null || result === undefined) return null;\n // File tools usually return plain text (file content, listings) — show it\n // as-is; only genuinely structured results get pretty-printed.\n if (typeof result === \"string\") {\n return result.trim() !== \"\" ? result : null;\n }\n if (typeof result === \"object\") {\n const inner = (result as Record<string, unknown>).result;\n if (typeof inner === \"string\") {\n return inner.trim() !== \"\" ? inner : null;\n }\n }\n const data = normalizeResult(result);\n if (data === null) return null;\n const text = JSON.stringify(data, null, 2);\n return text.trim() !== \"\" ? text : null;\n}\n\ninterface QuietFileToolSpec {\n icon: React.ElementType;\n runningTitle: string;\n doneTitle: string;\n failedTitle: string;\n /** Args keys to try, in order, for the subtitle. */\n subtitleArgs: readonly string[];\n detailsLabel: string;\n}\n\nfunction makeQuietFileToolUI(spec: QuietFileToolSpec): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = ({ args, result, status }) => {\n const typedArgs = args as Record<string, unknown> | undefined;\n let subtitle: string | undefined;\n for (const key of spec.subtitleArgs) {\n subtitle = friendlyWorkspacePath(typedArgs?.[key]);\n if (subtitle) break;\n }\n const isRunning = status?.type === \"running\";\n const isFailed = status?.type === \"incomplete\";\n const errorMsg = isFailed ? String(status.error ?? \"\") : null;\n const details = status?.type === \"complete\" ? rawDetails(result) : null;\n\n return (\n <ToolCard\n icon={spec.icon}\n status={status?.type ?? \"complete\"}\n title={\n isRunning\n ? spec.runningTitle\n : isFailed\n ? spec.failedTitle\n : spec.doneTitle\n }\n subtitle={subtitle ? truncate(subtitle, 70) : undefined}\n error={errorMsg || undefined}\n >\n {details && (\n <ExpandableSection label={spec.detailsLabel}>\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground\">\n {truncate(details, 6000)}\n </pre>\n </ExpandableSection>\n )}\n </ToolCard>\n );\n };\n const Quiet = memo(Impl) as unknown as ToolCallMessagePartComponent;\n Quiet.displayName = `QuietFileToolUI(${spec.doneTitle})`;\n return Quiet;\n}\n\nexport const ReadFileToolUI = makeQuietFileToolUI({\n icon: ScanSearchIcon,\n runningTitle: \"Reviewing working files…\",\n doneTitle: \"Reviewed working files\",\n failedTitle: \"Couldn't review working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const ListFilesToolUI = makeQuietFileToolUI({\n icon: FolderOpenIcon,\n runningTitle: \"Checking the workspace…\",\n doneTitle: \"Checked the workspace\",\n failedTitle: \"Couldn't check the workspace\",\n subtitleArgs: [\"path\"],\n detailsLabel: \"Show files\",\n});\n\nexport const WriteFileToolUI = makeQuietFileToolUI({\n icon: FileTextIcon,\n runningTitle: \"Saving working files…\",\n doneTitle: \"Saved working files\",\n failedTitle: \"Couldn't save working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const EditFileToolUI = makeQuietFileToolUI({\n icon: PenLineIcon,\n runningTitle: \"Updating working files…\",\n doneTitle: \"Updated working files\",\n failedTitle: \"Couldn't update working files\",\n subtitleArgs: [\"file_path\", \"path\"],\n detailsLabel: \"Show details\",\n});\n\nexport const SearchFilesToolUI = makeQuietFileToolUI({\n icon: SearchIcon,\n runningTitle: \"Searching working files…\",\n doneTitle: \"Searched working files\",\n failedTitle: \"Couldn't search working files\",\n subtitleArgs: [\"pattern\", \"query\", \"path\"],\n detailsLabel: \"Show matches\",\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-tool-uis.js","sources":["../../src/tools/file-tool-uis.tsx"],"sourcesContent":["/**\n * Quiet tool cards for the deep-agent workspace-file tools.\n *\n * `read_file` / `ls` / `write_file` / `edit_file` / `glob` / `grep` are the\n * agent's own scratch-space plumbing. Without registry entries they fall\n * through to the generic fallback, which renders the raw args/result JSON —\n * scratch paths like `/large_tool_results/toolu_…` and screenfuls of encoded\n * text that read as garble to a non-technical user. Each becomes a one-line\n * card titled by the shared summary registry (\"Read config.ts\", \"Edited\n * upstream.py\" with \"+4 −1\", scratch paths in plain English); the raw output\n * stays available behind a collapsed \"Show details\" section. Hosts can still\n * override any of them via the `toolUIs` prop, which wins over the registry.\n */\nimport {\n FileTextIcon,\n FolderOpenIcon,\n PenLineIcon,\n ScanSearchIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { memo } from \"react\";\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport { ExpandableSection, normalizeResult, ToolCard, truncate } from \"./primitives\";\nimport { summarizeToolCall, type ToolSummaryState } from \"./tool-summary\";\n\nexport { friendlyWorkspacePath } from \"./tool-summary\";\n\nfunction rawDetails(result: unknown): string | null {\n if (result === null || result === undefined) return null;\n // File tools usually return plain text (file content, listings) — show it\n // as-is; only genuinely structured results get pretty-printed.\n if (typeof result === \"string\") {\n return result.trim() !== \"\" ? result : null;\n }\n if (typeof result === \"object\") {\n const inner = (result as Record<string, unknown>).result;\n if (typeof inner === \"string\") {\n return inner.trim() !== \"\" ? inner : null;\n }\n }\n const data = normalizeResult(result);\n if (data === null) return null;\n const text = JSON.stringify(data, null, 2);\n return text.trim() !== \"\" ? text : null;\n}\n\ninterface QuietFileToolSpec {\n icon: React.ElementType;\n detailsLabel: string;\n}\n\nfunction quietCardState(status: { type: string; reason?: string } | undefined): ToolSummaryState {\n if (status?.type === \"running\") return \"running\";\n if (status?.type === \"requires-action\") return \"waiting\";\n if (status?.type === \"incomplete\") return status.reason === \"cancelled\" ? \"cancelled\" : \"error\";\n return \"complete\";\n}\n\nfunction makeQuietFileToolUI(spec: QuietFileToolSpec): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = ({ toolName, args, result, status }) => {\n const isFailed = status?.type === \"incomplete\";\n const errorMsg = isFailed ? String(status.error ?? \"\") : null;\n const details = status?.type === \"complete\" ? rawDetails(result) : null;\n const summary = summarizeToolCall({\n toolName,\n args: args as Record<string, unknown> | undefined,\n result: status?.type === \"complete\" ? result : undefined,\n status: quietCardState(status),\n });\n\n return (\n <ToolCard\n icon={spec.icon}\n status={status?.type ?? \"complete\"}\n title={summary.label}\n subtitle={summary.meta ? truncate(summary.meta, 70) : undefined}\n error={errorMsg || undefined}\n >\n {details && (\n <ExpandableSection label={spec.detailsLabel}>\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all text-[11px] leading-snug text-muted-foreground\">\n {truncate(details, 6000)}\n </pre>\n </ExpandableSection>\n )}\n </ToolCard>\n );\n };\n const Quiet = memo(Impl) as unknown as ToolCallMessagePartComponent;\n Quiet.displayName = `QuietFileToolUI(${spec.detailsLabel})`;\n return Quiet;\n}\n\nexport const ReadFileToolUI = makeQuietFileToolUI({\n icon: ScanSearchIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const ListFilesToolUI = makeQuietFileToolUI({\n icon: FolderOpenIcon,\n detailsLabel: \"Show files\",\n});\n\nexport const WriteFileToolUI = makeQuietFileToolUI({\n icon: FileTextIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const EditFileToolUI = makeQuietFileToolUI({\n icon: PenLineIcon,\n detailsLabel: \"Show details\",\n});\n\nexport const SearchFilesToolUI = makeQuietFileToolUI({\n icon: SearchIcon,\n detailsLabel: \"Show matches\",\n});\n"],"names":[],"mappings":";;;;;;AA2BA,SAAS,WAAW,QAAgC;AAClD,MAAI,WAAW,QAAQ,WAAW,OAAW,QAAO;AAGpD,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO,OAAO,KAAA,MAAW,KAAK,SAAS;AAAA,EACzC;AACA,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,QAAS,OAAmC;AAClD,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,KAAA,MAAW,KAAK,QAAQ;AAAA,IACvC;AAAA,EACF;AACA,QAAM,OAAO,gBAAgB,MAAM;AACnC,MAAI,SAAS,KAAM,QAAO;AAC1B,QAAM,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;AACzC,SAAO,KAAK,KAAA,MAAW,KAAK,OAAO;AACrC;AAOA,SAAS,eAAe,QAAyE;AAC/F,OAAI,iCAAQ,UAAS,UAAW,QAAO;AACvC,OAAI,iCAAQ,UAAS,kBAAmB,QAAO;AAC/C,OAAI,iCAAQ,UAAS,qBAAqB,OAAO,WAAW,cAAc,cAAc;AACxF,SAAO;AACT;AAEA,SAAS,oBAAoB,MAAuD;AAClF,QAAM,OAAqC,CAAC,EAAE,UAAU,MAAM,QAAQ,aAAa;AACjF,UAAM,YAAW,iCAAQ,UAAS;AAClC,UAAM,WAAW,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI;AACzD,UAAM,WAAU,iCAAQ,UAAS,aAAa,WAAW,MAAM,IAAI;AACnE,UAAM,UAAU,kBAAkB;AAAA,MAChC;AAAA,MACA;AAAA,MACA,SAAQ,iCAAQ,UAAS,aAAa,SAAS;AAAA,MAC/C,QAAQ,eAAe,MAAM;AAAA,IAAA,CAC9B;AAED,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,SAAQ,iCAAQ,SAAQ;AAAA,QACxB,OAAO,QAAQ;AAAA,QACf,UAAU,QAAQ,OAAO,SAAS,QAAQ,MAAM,EAAE,IAAI;AAAA,QACtD,OAAO,YAAY;AAAA,QAElB,UAAA,WACC,oBAAC,mBAAA,EAAkB,OAAO,KAAK,cAC7B,UAAA,oBAAC,OAAA,EAAI,WAAU,uGACZ,UAAA,SAAS,SAAS,GAAI,GACzB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACA,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,cAAc,mBAAmB,KAAK,YAAY;AACxD,SAAO;AACT;AAEO,MAAM,iBAAiB,oBAAoB;AAAA,EAChD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,kBAAkB,oBAAoB;AAAA,EACjD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,kBAAkB,oBAAoB;AAAA,EACjD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,iBAAiB,oBAAoB;AAAA,EAChD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAEM,MAAM,oBAAoB,oBAAoB;AAAA,EACnD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;"}
@@ -3,11 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const toolFallback = require("./tool-fallback.cjs");
4
4
  const primitives = require("./primitives.cjs");
5
5
  const toolIcons = require("./tool-icons.cjs");
6
+ const toolSummary = require("./tool-summary.cjs");
6
7
  const NestedPtcMessages = require("./NestedPtcMessages.cjs");
7
8
  const miscToolUis = require("./misc-tool-uis.cjs");
8
9
  const voiceUpdateToolUi = require("./voice-update-tool-ui.cjs");
9
- const toolResult = require("../packages/agent-runtime/src/tool-result.cjs");
10
- const toolMetadata = require("../packages/agent-runtime/src/tool-metadata.cjs");
10
+ const toolResult = require("../agent-runtime/src/tool-result.cjs");
11
+ const toolMetadata = require("../agent-runtime/src/tool-metadata.cjs");
11
12
  const toolAppearance = require("./tool-appearance.cjs");
12
13
  exports.ToolFallback = toolFallback.ToolFallback;
13
14
  exports.ToolFallbackAppearanceProvider = toolFallback.ToolFallbackAppearanceProvider;
@@ -27,6 +28,9 @@ exports.truncate = primitives.truncate;
27
28
  exports.tryParseJson = primitives.tryParseJson;
28
29
  exports.TOOL_ICONS = toolIcons.TOOL_ICONS;
29
30
  exports.toolIcon = toolIcons.toolIcon;
31
+ exports.collectAssetTitles = toolSummary.collectAssetTitles;
32
+ exports.humanizeToolName = toolSummary.humanizeToolName;
33
+ exports.summarizeToolCall = toolSummary.summarizeToolCall;
30
34
  exports.NestedPtcComponentsProvider = NestedPtcMessages.NestedPtcComponentsProvider;
31
35
  exports.NestedPtcMessages = NestedPtcMessages.NestedPtcMessages;
32
36
  exports.useNestedPtcComponents = NestedPtcMessages.useNestedPtcComponents;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,6 +9,7 @@
9
9
  export { clearAutoOpenedAssets, type ToolAppearance, ToolFallback, ToolFallbackAppearanceProvider, ToolFallbackArgs, ToolFallbackContent, type ToolFallbackContext, ToolFallbackError, ToolFallbackNotice, type ToolFallbackOptions, type ToolFallbackProps, ToolFallbackResult, ToolFallbackRoot, type ToolFallbackRootProps, ToolFallbackTrigger, type ToolFallbackTriggerProps, useToolAppearance, } from "./tool-fallback";
10
10
  export { CopyToolSpecButton, ExpandableSection, formatToolName, normalizeResult, ToolCard, type ToolStatus, truncate, tryParseJson, } from "./primitives";
11
11
  export { TOOL_ICONS, toolIcon } from "./tool-icons";
12
+ export { collectAssetTitles, humanizeToolName, summarizeToolCall, type SummarizeToolCallInput, type ToolCallSummary, type ToolSummaryState, } from "./tool-summary";
12
13
  export { NestedPtcComponentsProvider, NestedPtcMessages, type NestedPtcMessagesProps, useNestedPtcComponents, } from "./NestedPtcMessages";
13
14
  export { InstallPackageToolUI } from "./misc-tool-uis";
14
15
  export { VoiceUpdateCard, type VoiceUpdateCardProps, VoiceUpdateToolUI, } from "./voice-update-tool-ui";
@@ -1,11 +1,12 @@
1
1
  import { ToolFallback, ToolFallbackAppearanceProvider, ToolFallbackArgs, ToolFallbackContent, ToolFallbackError, ToolFallbackNotice, ToolFallbackResult, ToolFallbackRoot, ToolFallbackTrigger, clearAutoOpenedAssets } from "./tool-fallback.js";
2
2
  import { CopyToolSpecButton, ExpandableSection, ToolCard, normalizeResult, truncate, tryParseJson } from "./primitives.js";
3
3
  import { TOOL_ICONS, toolIcon } from "./tool-icons.js";
4
+ import { collectAssetTitles, humanizeToolName, summarizeToolCall } from "./tool-summary.js";
4
5
  import { NestedPtcComponentsProvider, NestedPtcMessages, useNestedPtcComponents } from "./NestedPtcMessages.js";
5
6
  import { InstallPackageToolUI } from "./misc-tool-uis.js";
6
7
  import { VoiceUpdateCard, VoiceUpdateToolUI } from "./voice-update-tool-ui.js";
7
- import { classifyToolResult, isToolResultSuccess, resultMessage } from "../packages/agent-runtime/src/tool-result.js";
8
- import { describeToolArgs, formatToolName, getToolDisplayMeta, toolActiveLabel, toolCompletedLabel } from "../packages/agent-runtime/src/tool-metadata.js";
8
+ import { classifyToolResult, isToolResultSuccess, resultMessage } from "../agent-runtime/src/tool-result.js";
9
+ import { describeToolArgs, formatToolName, getToolDisplayMeta, toolActiveLabel, toolCompletedLabel } from "../agent-runtime/src/tool-metadata.js";
9
10
  import { useToolAppearance } from "./tool-appearance.js";
10
11
  export {
11
12
  CopyToolSpecButton,
@@ -28,12 +29,15 @@ export {
28
29
  VoiceUpdateToolUI,
29
30
  classifyToolResult,
30
31
  clearAutoOpenedAssets,
32
+ collectAssetTitles,
31
33
  describeToolArgs,
32
34
  formatToolName,
33
35
  getToolDisplayMeta,
36
+ humanizeToolName,
34
37
  isToolResultSuccess,
35
38
  normalizeResult,
36
39
  resultMessage,
40
+ summarizeToolCall,
37
41
  toolActiveLabel,
38
42
  toolCompletedLabel,
39
43
  toolIcon,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -5,8 +5,8 @@ const lucideReact = require("lucide-react");
5
5
  const react = require("react");
6
6
  const primitives = require("./primitives.cjs");
7
7
  const toolFallback = require("./tool-fallback.cjs");
8
- const toolResult = require("../packages/agent-runtime/src/tool-result.cjs");
9
- const toolMetadata = require("../packages/agent-runtime/src/tool-metadata.cjs");
8
+ const toolResult = require("../agent-runtime/src/tool-result.cjs");
9
+ const toolMetadata = require("../agent-runtime/src/tool-metadata.cjs");
10
10
  const InstallPackageToolUIImpl = (props) => {
11
11
  const { toolName, args, result, status } = props;
12
12
  if (toolResult.classifyToolResult({ status, result }).state === "rejected") {
@@ -3,8 +3,8 @@ import { PackageIcon } from "lucide-react";
3
3
  import { memo } from "react";
4
4
  import { normalizeResult, ToolCard, ExpandableSection } from "./primitives.js";
5
5
  import { ToolFallback } from "./tool-fallback.js";
6
- import { classifyToolResult, isToolResultSuccess } from "../packages/agent-runtime/src/tool-result.js";
7
- import { describePackage } from "../packages/agent-runtime/src/tool-metadata.js";
6
+ import { classifyToolResult, isToolResultSuccess } from "../agent-runtime/src/tool-result.js";
7
+ import { describePackage } from "../agent-runtime/src/tool-metadata.js";
8
8
  const InstallPackageToolUIImpl = (props) => {
9
9
  const { toolName, args, result, status } = props;
10
10
  if (classifyToolResult({ status, result }).state === "rejected") {
@@ -4,7 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
5
  const lucideReact = require("lucide-react");
6
6
  const toolAppearance = require("./tool-appearance.cjs");
7
- const toolMetadata = require("../packages/agent-runtime/src/tool-metadata.cjs");
7
+ const toolMetadata = require("../agent-runtime/src/tool-metadata.cjs");
8
8
  const cnfast = require("cnfast");
9
9
  function tryParseJson(text) {
10
10
  try {
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState, useCallback, useContext } from "react";
3
3
  import { ClipboardCopyIcon, ChevronDownIcon, LoaderIcon, AlertCircleIcon, CheckCircle2Icon } from "lucide-react";
4
4
  import { ToolAppearanceContext } from "./tool-appearance.js";
5
- import { formatToolName } from "../packages/agent-runtime/src/tool-metadata.js";
5
+ import { formatToolName } from "../agent-runtime/src/tool-metadata.js";
6
6
  import { cn } from "cnfast";
7
7
  function tryParseJson(text) {
8
8
  try {