@athenaintel/react 0.28.1 → 0.32.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 (817) hide show
  1. package/README.md +479 -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/athena-asset-drag.cjs +44 -0
  5. package/dist/agent-runtime/src/athena-asset-drag.cjs.map +1 -0
  6. package/dist/agent-runtime/src/athena-asset-drag.js +44 -0
  7. package/dist/agent-runtime/src/athena-asset-drag.js.map +1 -0
  8. package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
  9. package/dist/agent-runtime/src/auth-denial.js.map +1 -0
  10. package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  11. package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
  12. package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
  13. package/dist/agent-runtime/src/client-tools.js.map +1 -0
  14. package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
  15. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
  16. package/dist/agent-runtime/src/composer-markdown.js +124 -0
  17. package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
  18. package/dist/agent-runtime/src/config-mutations.cjs +59 -0
  19. package/dist/agent-runtime/src/config-mutations.cjs.map +1 -0
  20. package/dist/agent-runtime/src/config-mutations.js +59 -0
  21. package/dist/agent-runtime/src/config-mutations.js.map +1 -0
  22. package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
  23. package/dist/agent-runtime/src/conversation-index.js.map +1 -0
  24. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
  25. package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
  26. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
  27. package/dist/agent-runtime/src/conversation-list.js.map +1 -0
  28. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
  29. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  30. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
  31. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  32. package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
  33. package/dist/agent-runtime/src/edit-command.js.map +1 -0
  34. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
  35. package/dist/agent-runtime/src/errors.cjs.map +1 -0
  36. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
  37. package/dist/agent-runtime/src/errors.js.map +1 -0
  38. package/dist/agent-runtime/src/execute-output.cjs +41 -0
  39. package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
  40. package/dist/agent-runtime/src/execute-output.js +41 -0
  41. package/dist/agent-runtime/src/execute-output.js.map +1 -0
  42. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +16 -2
  43. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  44. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +16 -2
  45. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  46. package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
  47. package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
  48. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
  49. package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
  50. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
  51. package/dist/agent-runtime/src/interrupts.js.map +1 -0
  52. package/dist/agent-runtime/src/message-author.cjs.map +1 -0
  53. package/dist/agent-runtime/src/message-author.js.map +1 -0
  54. package/dist/agent-runtime/src/message-window.cjs.map +1 -0
  55. package/dist/agent-runtime/src/message-window.js.map +1 -0
  56. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
  57. package/dist/agent-runtime/src/messages.cjs.map +1 -0
  58. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
  59. package/dist/agent-runtime/src/messages.js.map +1 -0
  60. package/dist/agent-runtime/src/model-context.cjs.map +1 -0
  61. package/dist/agent-runtime/src/model-context.js.map +1 -0
  62. package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
  63. package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
  64. package/dist/agent-runtime/src/protocol.cjs.map +1 -0
  65. package/dist/agent-runtime/src/protocol.js.map +1 -0
  66. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
  67. package/dist/agent-runtime/src/queue.cjs.map +1 -0
  68. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
  69. package/dist/agent-runtime/src/queue.js.map +1 -0
  70. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +71 -13
  71. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  72. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +73 -15
  73. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  74. package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
  75. package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
  76. package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
  77. package/dist/agent-runtime/src/screen-point.js.map +1 -0
  78. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
  79. package/dist/agent-runtime/src/send-recovery.js.map +1 -0
  80. package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  81. package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  82. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
  83. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
  84. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
  85. package/dist/agent-runtime/src/statewire-state.js.map +1 -0
  86. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
  87. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  88. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
  89. package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
  90. package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
  91. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
  92. package/dist/agent-runtime/src/statewire-transport.js +43 -0
  93. package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
  94. package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  95. package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
  96. package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
  97. package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
  98. package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
  99. package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
  100. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
  101. package/dist/agent-runtime/src/thread-extras.js.map +1 -0
  102. package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  103. package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  104. package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
  105. package/dist/agent-runtime/src/thread-status.js.map +1 -0
  106. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +304 -9
  107. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
  108. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +304 -9
  109. package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
  110. package/dist/agent-runtime/src/tool-names.cjs +5 -0
  111. package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
  112. package/dist/agent-runtime/src/tool-names.js +5 -0
  113. package/dist/agent-runtime/src/tool-names.js.map +1 -0
  114. package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
  115. package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
  116. package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
  117. package/dist/agent-runtime/src/tool-result.js.map +1 -0
  118. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
  119. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  120. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
  121. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
  122. package/dist/agent-runtime/src/use-deep-agent-config.cjs +129 -0
  123. package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
  124. package/dist/agent-runtime/src/use-deep-agent-config.js +129 -0
  125. package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
  126. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
  127. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  128. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
  129. package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  130. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  131. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  132. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
  133. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  134. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
  135. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  136. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  137. package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  138. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
  139. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
  140. package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
  141. package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
  142. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
  143. package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
  144. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
  145. package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
  146. package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
  147. package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
  148. package/dist/assets/AthenaAssetEmbed.cjs +13 -2
  149. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  150. package/dist/assets/AthenaAssetEmbed.d.ts +10 -0
  151. package/dist/assets/AthenaAssetEmbed.js +14 -3
  152. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  153. package/dist/assets/AthenaLayout.cjs +97 -31
  154. package/dist/assets/AthenaLayout.cjs.map +1 -1
  155. package/dist/assets/AthenaLayout.d.ts +13 -0
  156. package/dist/assets/AthenaLayout.js +98 -32
  157. package/dist/assets/AthenaLayout.js.map +1 -1
  158. package/dist/assets/asset-embed-messages.cjs +6 -0
  159. package/dist/assets/asset-embed-messages.cjs.map +1 -1
  160. package/dist/assets/asset-embed-messages.d.ts +13 -0
  161. package/dist/assets/asset-embed-messages.js +6 -0
  162. package/dist/assets/asset-embed-messages.js.map +1 -1
  163. package/dist/assets/asset-panel-store.cjs +68 -32
  164. package/dist/assets/asset-panel-store.cjs.map +1 -1
  165. package/dist/assets/asset-panel-store.d.ts +47 -1
  166. package/dist/assets/asset-panel-store.js +68 -32
  167. package/dist/assets/asset-panel-store.js.map +1 -1
  168. package/dist/assets/use-asset-embed.cjs +29 -8
  169. package/dist/assets/use-asset-embed.cjs.map +1 -1
  170. package/dist/assets/use-asset-embed.d.ts +7 -0
  171. package/dist/assets/use-asset-embed.js +29 -8
  172. package/dist/assets/use-asset-embed.js.map +1 -1
  173. package/dist/catalog/chat-pickers.cjs +152 -0
  174. package/dist/catalog/chat-pickers.cjs.map +1 -0
  175. package/dist/catalog/chat-pickers.d.ts +22 -0
  176. package/dist/catalog/chat-pickers.js +152 -0
  177. package/dist/catalog/chat-pickers.js.map +1 -0
  178. package/dist/catalog/runtime-catalog.cjs +181 -0
  179. package/dist/catalog/runtime-catalog.cjs.map +1 -0
  180. package/dist/catalog/runtime-catalog.d.ts +100 -0
  181. package/dist/catalog/runtime-catalog.js +181 -0
  182. package/dist/catalog/runtime-catalog.js.map +1 -0
  183. package/dist/chat/AthenaChat.cjs +122 -67
  184. package/dist/chat/AthenaChat.cjs.map +1 -1
  185. package/dist/chat/AthenaChat.d.ts +21 -4
  186. package/dist/chat/AthenaChat.js +124 -69
  187. package/dist/chat/AthenaChat.js.map +1 -1
  188. package/dist/chat/StatewireApprovalCard.cjs +38 -37
  189. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  190. package/dist/chat/StatewireApprovalCard.d.ts +2 -0
  191. package/dist/chat/StatewireApprovalCard.js +39 -38
  192. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  193. package/dist/chat/StatewireClientToolBridge.cjs +2 -2
  194. package/dist/chat/StatewireClientToolBridge.js +2 -2
  195. package/dist/chat/StatewireQueuedMessages.cjs +15 -12
  196. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  197. package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
  198. package/dist/chat/StatewireQueuedMessages.js +15 -12
  199. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  200. package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
  201. package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
  202. package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
  203. package/dist/chat/StatewireRunRefusalNotice.js +48 -0
  204. package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
  205. package/dist/chat/WaitingOnYouBanner.cjs +2 -2
  206. package/dist/chat/WaitingOnYouBanner.js +2 -2
  207. package/dist/chat/athena-citation-links.cjs +19 -15
  208. package/dist/chat/athena-citation-links.cjs.map +1 -1
  209. package/dist/chat/athena-citation-links.js +19 -15
  210. package/dist/chat/athena-citation-links.js.map +1 -1
  211. package/dist/chat/run-activity.cjs +9 -1
  212. package/dist/chat/run-activity.cjs.map +1 -1
  213. package/dist/chat/run-activity.d.ts +6 -0
  214. package/dist/chat/run-activity.js +10 -2
  215. package/dist/chat/run-activity.js.map +1 -1
  216. package/dist/chat/statewire-banners.cjs +30 -1
  217. package/dist/chat/statewire-banners.cjs.map +1 -1
  218. package/dist/chat/statewire-banners.d.ts +20 -1
  219. package/dist/chat/statewire-banners.js +32 -3
  220. package/dist/chat/statewire-banners.js.map +1 -1
  221. package/dist/chat/statewire-client-tools.cjs +1 -1
  222. package/dist/chat/statewire-client-tools.js +1 -1
  223. package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
  224. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
  225. package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
  226. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
  227. package/dist/chat/super-grouping/SuperGroupingCard.cjs +38 -16
  228. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  229. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +21 -4
  230. package/dist/chat/super-grouping/SuperGroupingCard.js +39 -17
  231. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  232. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +377 -0
  233. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
  234. package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
  235. package/dist/chat/super-grouping/SuperGroupingTranscript.js +377 -0
  236. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
  237. package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
  238. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  239. package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
  240. package/dist/chat/super-grouping/ToolTimeline.js +13 -2
  241. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  242. package/dist/chat/super-grouping/activity-timeline.cjs +69 -29
  243. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  244. package/dist/chat/super-grouping/activity-timeline.d.ts +60 -9
  245. package/dist/chat/super-grouping/activity-timeline.js +70 -30
  246. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  247. package/dist/chat/super-grouping/index.cjs +14 -0
  248. package/dist/chat/super-grouping/index.cjs.map +1 -1
  249. package/dist/chat/super-grouping/index.d.ts +7 -2
  250. package/dist/chat/super-grouping/index.js +16 -2
  251. package/dist/chat/super-grouping/index.js.map +1 -1
  252. package/dist/chat/super-grouping/timeline-step.cjs +14 -5
  253. package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
  254. package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
  255. package/dist/chat/super-grouping/timeline-step.js +15 -6
  256. package/dist/chat/super-grouping/timeline-step.js.map +1 -1
  257. package/dist/chat/super-grouping/toolkit-map.cjs +1 -0
  258. package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -1
  259. package/dist/chat/super-grouping/toolkit-map.js +1 -0
  260. package/dist/chat/super-grouping/toolkit-map.js.map +1 -1
  261. package/dist/chat/super-grouping/turn-segments.cjs +82 -0
  262. package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
  263. package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
  264. package/dist/chat/super-grouping/turn-segments.js +82 -0
  265. package/dist/chat/super-grouping/turn-segments.js.map +1 -0
  266. package/dist/chat/super-grouping/turn-timing.cjs +110 -0
  267. package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
  268. package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
  269. package/dist/chat/super-grouping/turn-timing.js +110 -0
  270. package/dist/chat/super-grouping/turn-timing.js.map +1 -0
  271. package/dist/chat/tiptap-text.cjs +1 -1
  272. package/dist/chat/tiptap-text.js +1 -1
  273. package/dist/chat/use-athena-run-live.cjs +1 -1
  274. package/dist/chat/use-athena-run-live.js +1 -1
  275. package/dist/chat/use-statewire-approval-request.cjs +73 -4
  276. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  277. package/dist/chat/use-statewire-approval-request.js +74 -5
  278. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  279. package/dist/chat-ui/composer/composer-message.cjs +284 -0
  280. package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
  281. package/dist/chat-ui/composer/composer-message.d.ts +152 -0
  282. package/dist/chat-ui/composer/composer-message.js +284 -0
  283. package/dist/chat-ui/composer/composer-message.js.map +1 -0
  284. package/dist/chat-ui/composer/tiptap-composer.cjs +97 -15
  285. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  286. package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
  287. package/dist/chat-ui/composer/tiptap-composer.js +97 -15
  288. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  289. package/dist/chat-ui/index.cjs +4 -1
  290. package/dist/chat-ui/index.cjs.map +1 -1
  291. package/dist/chat-ui/index.d.ts +3 -2
  292. package/dist/chat-ui/index.js +5 -2
  293. package/dist/chat-ui/index.js.map +1 -1
  294. package/dist/chat-ui/mentions/mention-chip.cjs +31 -3
  295. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  296. package/dist/chat-ui/mentions/mention-chip.d.ts +2 -5
  297. package/dist/chat-ui/mentions/mention-chip.js +33 -5
  298. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  299. package/dist/chat-ui/mentions/mention-extension.cjs +9 -3
  300. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  301. package/dist/chat-ui/mentions/mention-extension.js +9 -3
  302. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  303. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
  304. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
  305. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
  306. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
  307. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
  308. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  309. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
  310. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
  311. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  312. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
  313. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  314. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
  315. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
  316. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  317. package/dist/chat-ui/mentions/use-account-workspace-id.cjs +61 -0
  318. package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -0
  319. package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +3 -0
  320. package/dist/chat-ui/mentions/use-account-workspace-id.js +61 -0
  321. package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -0
  322. package/dist/chat-ui/mentions/use-member-avatar.cjs +75 -0
  323. package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -0
  324. package/dist/chat-ui/mentions/use-member-avatar.d.ts +2 -0
  325. package/dist/chat-ui/mentions/use-member-avatar.js +75 -0
  326. package/dist/chat-ui/mentions/use-member-avatar.js.map +1 -0
  327. package/dist/chat-ui/messages/message-components.cjs +30 -10
  328. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  329. package/dist/chat-ui/messages/message-components.d.ts +21 -1
  330. package/dist/chat-ui/messages/message-components.js +30 -10
  331. package/dist/chat-ui/messages/message-components.js.map +1 -1
  332. package/dist/chat-ui/messages/runtime-message.cjs +1 -1
  333. package/dist/chat-ui/messages/runtime-message.js +1 -1
  334. package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
  335. package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
  336. package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
  337. package/dist/chat-ui/messages/user-edit-composer.js +1 -1
  338. package/dist/chat-ui/messages/wake-marker.cjs +39 -4
  339. package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
  340. package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
  341. package/dist/chat-ui/messages/wake-marker.js +40 -5
  342. package/dist/chat-ui/messages/wake-marker.js.map +1 -1
  343. package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
  344. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
  345. package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
  346. package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
  347. package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
  348. package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
  349. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
  350. package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
  351. package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
  352. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
  353. package/dist/chat-ui/statewire.cjs +1 -1
  354. package/dist/chat-ui/statewire.d.ts +1 -1
  355. package/dist/chat-ui/statewire.js +1 -1
  356. package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
  357. package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
  358. package/dist/collab/client.cjs +282 -16
  359. package/dist/collab/client.cjs.map +1 -1
  360. package/dist/collab/client.d.ts +127 -2
  361. package/dist/collab/client.js +285 -20
  362. package/dist/collab/client.js.map +1 -1
  363. package/dist/collab/index.cjs +2 -0
  364. package/dist/collab/index.cjs.map +1 -1
  365. package/dist/collab/index.d.ts +1 -1
  366. package/dist/collab/index.js +3 -1
  367. package/dist/composer/AttachmentContext.cjs +38 -12
  368. package/dist/composer/AttachmentContext.cjs.map +1 -1
  369. package/dist/composer/AttachmentContext.d.ts +22 -1
  370. package/dist/composer/AttachmentContext.js +40 -14
  371. package/dist/composer/AttachmentContext.js.map +1 -1
  372. package/dist/composer/QuoteContext.cjs +80 -28
  373. package/dist/composer/QuoteContext.cjs.map +1 -1
  374. package/dist/composer/QuoteContext.d.ts +35 -6
  375. package/dist/composer/QuoteContext.js +82 -30
  376. package/dist/composer/QuoteContext.js.map +1 -1
  377. package/dist/composer/build-composed-message.cjs +27 -0
  378. package/dist/composer/build-composed-message.cjs.map +1 -1
  379. package/dist/composer/build-composed-message.d.ts +21 -0
  380. package/dist/composer/build-composed-message.js +28 -1
  381. package/dist/composer/build-composed-message.js.map +1 -1
  382. package/dist/composer/composer-handoff.cjs +13 -1
  383. package/dist/composer/composer-handoff.cjs.map +1 -1
  384. package/dist/composer/composer-handoff.d.ts +12 -0
  385. package/dist/composer/composer-handoff.js +15 -3
  386. package/dist/composer/composer-handoff.js.map +1 -1
  387. package/dist/composer/index.d.ts +6 -3
  388. package/dist/composer/useReadComposerDraft.cjs +16 -0
  389. package/dist/composer/useReadComposerDraft.cjs.map +1 -0
  390. package/dist/composer/useReadComposerDraft.d.ts +6 -0
  391. package/dist/composer/useReadComposerDraft.js +16 -0
  392. package/dist/composer/useReadComposerDraft.js.map +1 -0
  393. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  394. package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
  395. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  396. package/dist/diagnostics/errors.cjs +6 -0
  397. package/dist/diagnostics/errors.cjs.map +1 -1
  398. package/dist/diagnostics/errors.d.ts +6 -0
  399. package/dist/diagnostics/errors.js +6 -0
  400. package/dist/diagnostics/errors.js.map +1 -1
  401. package/dist/index.cjs +163 -7
  402. package/dist/index.cjs.map +1 -1
  403. package/dist/index.d.ts +55 -12
  404. package/dist/index.js +170 -14
  405. package/dist/index.js.map +1 -1
  406. package/dist/lib/owner-document.cjs +32 -0
  407. package/dist/lib/owner-document.cjs.map +1 -0
  408. package/dist/lib/owner-document.d.ts +17 -0
  409. package/dist/lib/owner-document.js +32 -0
  410. package/dist/lib/owner-document.js.map +1 -0
  411. package/dist/lib/portal-surface.cjs +55 -0
  412. package/dist/lib/portal-surface.cjs.map +1 -0
  413. package/dist/lib/portal-surface.d.ts +37 -0
  414. package/dist/lib/portal-surface.js +55 -0
  415. package/dist/lib/portal-surface.js.map +1 -0
  416. package/dist/lib/use-athena-rest-query.cjs +34 -0
  417. package/dist/lib/use-athena-rest-query.cjs.map +1 -0
  418. package/dist/lib/use-athena-rest-query.d.ts +31 -0
  419. package/dist/lib/use-athena-rest-query.js +34 -0
  420. package/dist/lib/use-athena-rest-query.js.map +1 -0
  421. package/dist/provider/AthenaProvider.cjs +70 -10
  422. package/dist/provider/AthenaProvider.cjs.map +1 -1
  423. package/dist/provider/AthenaProvider.d.ts +27 -2
  424. package/dist/provider/AthenaProvider.js +74 -14
  425. package/dist/provider/AthenaProvider.js.map +1 -1
  426. package/dist/provider/citation-links.d.ts +10 -2
  427. package/dist/{packages/react → react}/package.json.cjs +1 -1
  428. package/dist/{packages/react → react}/package.json.js +1 -1
  429. package/dist/runtime/StatewireModelLaneSync.cjs +96 -0
  430. package/dist/runtime/StatewireModelLaneSync.cjs.map +1 -0
  431. package/dist/runtime/StatewireModelLaneSync.d.ts +45 -0
  432. package/dist/runtime/StatewireModelLaneSync.js +96 -0
  433. package/dist/runtime/StatewireModelLaneSync.js.map +1 -0
  434. package/dist/runtime/statewire-lifecycle.cjs +20 -5
  435. package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
  436. package/dist/runtime/statewire-lifecycle.d.ts +11 -0
  437. package/dist/runtime/statewire-lifecycle.js +20 -5
  438. package/dist/runtime/statewire-lifecycle.js.map +1 -1
  439. package/dist/runtime/statewire-model-lane.cjs +28 -0
  440. package/dist/runtime/statewire-model-lane.cjs.map +1 -0
  441. package/dist/runtime/statewire-model-lane.d.ts +64 -0
  442. package/dist/runtime/statewire-model-lane.js +28 -0
  443. package/dist/runtime/statewire-model-lane.js.map +1 -0
  444. package/dist/runtime/statewire-run-config.cjs +16 -2
  445. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  446. package/dist/runtime/statewire-run-config.d.ts +10 -0
  447. package/dist/runtime/statewire-run-config.js +16 -2
  448. package/dist/runtime/statewire-run-config.js.map +1 -1
  449. package/dist/runtime/statewire-server-lane-context.cjs +24 -0
  450. package/dist/runtime/statewire-server-lane-context.cjs.map +1 -0
  451. package/dist/runtime/statewire-server-lane-context.d.ts +30 -0
  452. package/dist/runtime/statewire-server-lane-context.js +24 -0
  453. package/dist/runtime/statewire-server-lane-context.js.map +1 -0
  454. package/dist/runtime/useAthenaStatewireRuntime.cjs +47 -23
  455. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  456. package/dist/runtime/useAthenaStatewireRuntime.d.ts +8 -1
  457. package/dist/runtime/useAthenaStatewireRuntime.js +48 -24
  458. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  459. package/dist/search/useAthenaRepoSearch.cjs +5 -13
  460. package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
  461. package/dist/search/useAthenaRepoSearch.d.ts +3 -3
  462. package/dist/search/useAthenaRepoSearch.js +6 -14
  463. package/dist/search/useAthenaRepoSearch.js.map +1 -1
  464. package/dist/sheet-range/a1.cjs +162 -0
  465. package/dist/sheet-range/a1.cjs.map +1 -0
  466. package/dist/sheet-range/a1.d.ts +91 -0
  467. package/dist/sheet-range/a1.js +162 -0
  468. package/dist/sheet-range/a1.js.map +1 -0
  469. package/dist/sheet-range/index.cjs +22 -0
  470. package/dist/sheet-range/index.cjs.map +1 -0
  471. package/dist/sheet-range/index.d.ts +12 -0
  472. package/dist/sheet-range/index.js +22 -0
  473. package/dist/sheet-range/index.js.map +1 -0
  474. package/dist/sheet-range/range-preview-table.cjs +75 -0
  475. package/dist/sheet-range/range-preview-table.cjs.map +1 -0
  476. package/dist/sheet-range/range-preview-table.d.ts +20 -0
  477. package/dist/sheet-range/range-preview-table.js +75 -0
  478. package/dist/sheet-range/range-preview-table.js.map +1 -0
  479. package/dist/sheet-range/range-preview.cjs +116 -0
  480. package/dist/sheet-range/range-preview.cjs.map +1 -0
  481. package/dist/sheet-range/range-preview.d.ts +67 -0
  482. package/dist/sheet-range/range-preview.js +116 -0
  483. package/dist/sheet-range/range-preview.js.map +1 -0
  484. package/dist/styles.css +1 -1
  485. package/dist/threads/Inbox.cjs +289 -0
  486. package/dist/threads/Inbox.cjs.map +1 -0
  487. package/dist/threads/Inbox.d.ts +46 -0
  488. package/dist/threads/Inbox.js +289 -0
  489. package/dist/threads/Inbox.js.map +1 -0
  490. package/dist/threads/SessionList.cjs +51 -126
  491. package/dist/threads/SessionList.cjs.map +1 -1
  492. package/dist/threads/SessionList.d.ts +26 -1
  493. package/dist/threads/SessionList.js +45 -120
  494. package/dist/threads/SessionList.js.map +1 -1
  495. package/dist/threads/SessionsPage.cjs +753 -0
  496. package/dist/threads/SessionsPage.cjs.map +1 -0
  497. package/dist/threads/SessionsPage.d.ts +35 -0
  498. package/dist/threads/SessionsPage.js +753 -0
  499. package/dist/threads/SessionsPage.js.map +1 -0
  500. package/dist/threads/api.cjs +23 -2
  501. package/dist/threads/api.cjs.map +1 -1
  502. package/dist/threads/api.d.ts +60 -0
  503. package/dist/threads/api.js +23 -2
  504. package/dist/threads/api.js.map +1 -1
  505. package/dist/threads/conversation-list-fetcher.cjs +9 -2
  506. package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
  507. package/dist/threads/conversation-list-fetcher.d.ts +14 -1
  508. package/dist/threads/conversation-list-fetcher.js +9 -2
  509. package/dist/threads/conversation-list-fetcher.js.map +1 -1
  510. package/dist/threads/index.d.ts +2 -1
  511. package/dist/threads/pull-request-display.cjs +25 -0
  512. package/dist/threads/pull-request-display.cjs.map +1 -0
  513. package/dist/threads/pull-request-display.d.ts +15 -0
  514. package/dist/threads/pull-request-display.js +25 -0
  515. package/dist/threads/pull-request-display.js.map +1 -0
  516. package/dist/threads/session-list-model.cjs +16 -2
  517. package/dist/threads/session-list-model.cjs.map +1 -1
  518. package/dist/threads/session-list-model.d.ts +10 -0
  519. package/dist/threads/session-list-model.js +16 -2
  520. package/dist/threads/session-list-model.js.map +1 -1
  521. package/dist/threads/session-row-parts.cjs +152 -0
  522. package/dist/threads/session-row-parts.cjs.map +1 -0
  523. package/dist/threads/session-row-parts.d.ts +50 -0
  524. package/dist/threads/session-row-parts.js +152 -0
  525. package/dist/threads/session-row-parts.js.map +1 -0
  526. package/dist/threads/sessions-page-model.cjs +305 -0
  527. package/dist/threads/sessions-page-model.cjs.map +1 -0
  528. package/dist/threads/sessions-page-model.d.ts +86 -0
  529. package/dist/threads/sessions-page-model.js +305 -0
  530. package/dist/threads/sessions-page-model.js.map +1 -0
  531. package/dist/threads/sessions-page-storage.cjs +93 -0
  532. package/dist/threads/sessions-page-storage.cjs.map +1 -0
  533. package/dist/threads/sessions-page-storage.d.ts +23 -0
  534. package/dist/threads/sessions-page-storage.js +93 -0
  535. package/dist/threads/sessions-page-storage.js.map +1 -0
  536. package/dist/threads/sessions-query.cjs +235 -0
  537. package/dist/threads/sessions-query.cjs.map +1 -0
  538. package/dist/threads/sessions-query.d.ts +119 -0
  539. package/dist/threads/sessions-query.js +235 -0
  540. package/dist/threads/sessions-query.js.map +1 -0
  541. package/dist/threads/statewire-thread-list.cjs +133 -40
  542. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  543. package/dist/threads/statewire-thread-list.d.ts +83 -2
  544. package/dist/threads/statewire-thread-list.js +134 -41
  545. package/dist/threads/statewire-thread-list.js.map +1 -1
  546. package/dist/threads/use-athena-sessions.cjs +198 -0
  547. package/dist/threads/use-athena-sessions.cjs.map +1 -0
  548. package/dist/threads/use-athena-sessions.d.ts +81 -0
  549. package/dist/threads/use-athena-sessions.js +198 -0
  550. package/dist/threads/use-athena-sessions.js.map +1 -0
  551. package/dist/threads/use-athena-thread-model.cjs +14 -0
  552. package/dist/threads/use-athena-thread-model.cjs.map +1 -0
  553. package/dist/threads/use-athena-thread-model.d.ts +22 -0
  554. package/dist/threads/use-athena-thread-model.js +14 -0
  555. package/dist/threads/use-athena-thread-model.js.map +1 -0
  556. package/dist/threads/use-rest-conversation-history.cjs +1 -1
  557. package/dist/threads/use-rest-conversation-history.js +1 -1
  558. package/dist/threads/use-statewire-conversation-history.cjs +1 -1
  559. package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
  560. package/dist/threads/use-statewire-conversation-history.js +1 -1
  561. package/dist/threads/use-thread-read-state.cjs +73 -0
  562. package/dist/threads/use-thread-read-state.cjs.map +1 -0
  563. package/dist/threads/use-thread-read-state.d.ts +51 -0
  564. package/dist/threads/use-thread-read-state.js +73 -0
  565. package/dist/threads/use-thread-read-state.js.map +1 -0
  566. package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
  567. package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
  568. package/dist/tools/auto-open-tools.cjs +2 -0
  569. package/dist/tools/auto-open-tools.cjs.map +1 -1
  570. package/dist/tools/auto-open-tools.js +2 -0
  571. package/dist/tools/auto-open-tools.js.map +1 -1
  572. package/dist/tools/file-tool-uis.cjs +18 -43
  573. package/dist/tools/file-tool-uis.cjs.map +1 -1
  574. package/dist/tools/file-tool-uis.d.ts +1 -2
  575. package/dist/tools/file-tool-uis.js +18 -42
  576. package/dist/tools/file-tool-uis.js.map +1 -1
  577. package/dist/tools/index.cjs +6 -2
  578. package/dist/tools/index.cjs.map +1 -1
  579. package/dist/tools/index.d.ts +1 -0
  580. package/dist/tools/index.js +6 -2
  581. package/dist/tools/index.js.map +1 -1
  582. package/dist/tools/misc-tool-uis.cjs +2 -2
  583. package/dist/tools/misc-tool-uis.js +2 -2
  584. package/dist/tools/primitives.cjs +1 -1
  585. package/dist/tools/primitives.js +1 -1
  586. package/dist/tools/read-asset-tool-ui.cjs +21 -70
  587. package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
  588. package/dist/tools/read-asset-tool-ui.js +21 -70
  589. package/dist/tools/read-asset-tool-ui.js.map +1 -1
  590. package/dist/tools/step-text.cjs +21 -0
  591. package/dist/tools/step-text.cjs.map +1 -0
  592. package/dist/tools/step-text.d.ts +10 -0
  593. package/dist/tools/step-text.js +21 -0
  594. package/dist/tools/step-text.js.map +1 -0
  595. package/dist/tools/tool-fallback.cjs +24 -5
  596. package/dist/tools/tool-fallback.cjs.map +1 -1
  597. package/dist/tools/tool-fallback.d.ts +3 -1
  598. package/dist/tools/tool-fallback.js +24 -5
  599. package/dist/tools/tool-fallback.js.map +1 -1
  600. package/dist/tools/tool-summary.cjs +661 -0
  601. package/dist/tools/tool-summary.cjs.map +1 -0
  602. package/dist/tools/tool-summary.d.ts +99 -0
  603. package/dist/tools/tool-summary.js +661 -0
  604. package/dist/tools/tool-summary.js.map +1 -0
  605. package/dist/tools/tool-uis.cjs +37 -95
  606. package/dist/tools/tool-uis.cjs.map +1 -1
  607. package/dist/tools/tool-uis.js +37 -95
  608. package/dist/tools/tool-uis.js.map +1 -1
  609. package/dist/tools/voice-update-tool-ui.cjs +1 -1
  610. package/dist/tools/voice-update-tool-ui.js +1 -1
  611. package/dist/tools/write-todos-tool-ui.cjs +3 -2
  612. package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
  613. package/dist/tools/write-todos-tool-ui.d.ts +5 -0
  614. package/dist/tools/write-todos-tool-ui.js +5 -4
  615. package/dist/tools/write-todos-tool-ui.js.map +1 -1
  616. package/dist/ui/popover.cjs +6 -6
  617. package/dist/ui/popover.cjs.map +1 -1
  618. package/dist/ui/popover.js +6 -6
  619. package/dist/ui/popover.js.map +1 -1
  620. package/dist/ui/tooltip.cjs +16 -2
  621. package/dist/ui/tooltip.cjs.map +1 -1
  622. package/dist/ui/tooltip.d.ts +1 -1
  623. package/dist/ui/tooltip.js +16 -2
  624. package/dist/ui/tooltip.js.map +1 -1
  625. package/dist/version.cjs +1 -1
  626. package/dist/version.js +1 -1
  627. package/dist/voice/use-athena-voice-session.cjs.map +1 -1
  628. package/dist/voice/use-athena-voice-session.d.ts +3 -3
  629. package/dist/voice/use-athena-voice-session.js.map +1 -1
  630. package/dist/workbench/SessionWorkbench.cjs +378 -0
  631. package/dist/workbench/SessionWorkbench.cjs.map +1 -0
  632. package/dist/workbench/SessionWorkbench.d.ts +30 -0
  633. package/dist/workbench/SessionWorkbench.js +378 -0
  634. package/dist/workbench/SessionWorkbench.js.map +1 -0
  635. package/dist/workbench/session-workbench-context.cjs +26 -0
  636. package/dist/workbench/session-workbench-context.cjs.map +1 -0
  637. package/dist/workbench/session-workbench-context.d.ts +55 -0
  638. package/dist/workbench/session-workbench-context.js +26 -0
  639. package/dist/workbench/session-workbench-context.js.map +1 -0
  640. package/dist/workbench/session-workbench-model.cjs +288 -0
  641. package/dist/workbench/session-workbench-model.cjs.map +1 -0
  642. package/dist/workbench/session-workbench-model.d.ts +168 -0
  643. package/dist/workbench/session-workbench-model.js +288 -0
  644. package/dist/workbench/session-workbench-model.js.map +1 -0
  645. package/dist/workbench/session-workbench-panes.cjs +580 -0
  646. package/dist/workbench/session-workbench-panes.cjs.map +1 -0
  647. package/dist/workbench/session-workbench-panes.d.ts +16 -0
  648. package/dist/workbench/session-workbench-panes.js +580 -0
  649. package/dist/workbench/session-workbench-panes.js.map +1 -0
  650. package/dist/workbench/session-workspace-api.cjs +157 -0
  651. package/dist/workbench/session-workspace-api.cjs.map +1 -0
  652. package/dist/workbench/session-workspace-api.d.ts +70 -0
  653. package/dist/workbench/session-workspace-api.js +157 -0
  654. package/dist/workbench/session-workspace-api.js.map +1 -0
  655. package/dist/workbench/use-session-workspace.cjs +100 -0
  656. package/dist/workbench/use-session-workspace.cjs.map +1 -0
  657. package/dist/workbench/use-session-workspace.d.ts +45 -0
  658. package/dist/workbench/use-session-workspace.js +100 -0
  659. package/dist/workbench/use-session-workspace.js.map +1 -0
  660. package/dist/workbench/workbench-layout-context.cjs +10 -0
  661. package/dist/workbench/workbench-layout-context.cjs.map +1 -0
  662. package/dist/workbench/workbench-layout-context.d.ts +17 -0
  663. package/dist/workbench/workbench-layout-context.js +10 -0
  664. package/dist/workbench/workbench-layout-context.js.map +1 -0
  665. package/package.json +21 -10
  666. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
  667. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
  668. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
  669. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
  670. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
  671. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
  672. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
  673. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
  674. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
  675. package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
  676. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
  677. package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
  678. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
  679. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
  680. package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
  681. package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
  682. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
  683. package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
  684. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
  685. package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
  686. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
  687. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
  688. package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
  689. package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
  690. package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
  691. package/dist/packages/agent-runtime/src/errors.js.map +0 -1
  692. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
  693. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
  694. package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
  695. package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
  696. package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
  697. package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
  698. package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
  699. package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
  700. package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
  701. package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
  702. package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
  703. package/dist/packages/agent-runtime/src/messages.js.map +0 -1
  704. package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
  705. package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
  706. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
  707. package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
  708. package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
  709. package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
  710. package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
  711. package/dist/packages/agent-runtime/src/queue.js.map +0 -1
  712. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
  713. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
  714. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
  715. package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
  716. package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
  717. package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
  718. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
  719. package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
  720. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
  721. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
  722. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
  723. package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
  724. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
  725. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
  726. package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
  727. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
  728. package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
  729. package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
  730. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
  731. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
  732. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
  733. package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
  734. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
  735. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
  736. package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
  737. package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
  738. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
  739. package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
  740. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
  741. package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
  742. package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
  743. package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
  744. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
  745. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
  746. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +0 -13
  747. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
  748. package/dist/packages/agent-runtime/src/use-deep-agent-config.js +0 -13
  749. package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
  750. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
  751. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
  752. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
  753. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
  754. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
  755. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
  756. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
  757. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
  758. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
  759. package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
  760. package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
  761. package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
  762. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
  763. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
  764. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
  765. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
  766. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
  767. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
  768. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
  769. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
  770. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
  771. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
  772. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
  773. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
  774. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
  775. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
  776. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
  777. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
  778. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
  779. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
  780. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
  781. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
  782. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
  783. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
  784. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
  785. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
  786. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
  787. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
  788. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
  789. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
  790. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
  791. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
  792. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
  793. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
  794. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
  795. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
  796. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
  797. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
  798. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
  799. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
  800. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
  801. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
  802. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
  803. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
  804. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
  805. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
  806. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
  807. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
  808. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
  809. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
  810. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
  811. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
  812. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
  813. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
  814. /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
  815. /package/dist/{packages/react → react}/package.json.js.map +0 -0
  816. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
  817. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-summary.js","sources":["../../src/tools/tool-summary.ts"],"sourcesContent":["/**\n * One line per tool call, in the words a person would use: \"Ran git diff\n * --stat\", \"Read live_audio.py\", \"Edited upstream.py\" with \"+4 −1\", \"Found 3\n * assets for \"workstation\"\", \"jevin-box is running\". The single summary the\n * SDK's activity timeline, its grouped transcript and its tool cards read, so\n * a step cannot be the literal command on one surface and \"Ran a command\" on\n * another.\n *\n * Tools without a rule here read the shared display registry\n * (`getToolDisplayMeta`); a tool neither knows falls back to the host's\n * catalog name, else a sentence-cased name — never the Title Cased wire id\n * (\"Computer Asset Ensure Sandbox\").\n *\n * Wording follows the Olympus deep-agent cards where they exist\n * (`olympus/src/components/athena-deep-agent/sandbox-tool-cards.tsx`: \"Read\",\n * \"Wrote\", \"Edited\", the command's first line, \"+N -M\" line counts) and the\n * computer toolkit cards (\"Sandbox is running\"). Pure and React-free.\n */\nimport {\n describeToolArgs,\n getToolDisplayMeta,\n hasToolDisplayMeta,\n type ToolStatusLabelState,\n toolCompletedLabel,\n toolStatusLabel,\n} from \"@athenaintel/agent-runtime\";\n\n/** The states a summarized call can be in; the activity timeline's step states. */\nexport type ToolSummaryState = ToolStatusLabelState;\n\nexport interface ToolCallSummary {\n /** The whole line, complete on its own: \"Ran git diff --stat\", \"Read live_audio.py\". Plain text. */\n label: string;\n /** The longer form for a tooltip: the full path, the whole first command line, the repository. */\n detail?: string;\n /** A short chip after the label: \"+4 −1\", \"on jevin-box\", \"exit 1\". */\n meta?: string;\n /** The part of `label` that is literal code (a command, a file name, a pattern), for monospace. */\n code?: string;\n}\n\nexport interface SummarizeToolCallInput {\n toolName: string;\n /** The call's arguments; partial while they stream, `undefined` before any arrive. */\n args?: Record<string, unknown> | undefined;\n /** The tool's result; `undefined` while it runs (the streaming placeholder counts as none). */\n result?: unknown;\n status: ToolSummaryState;\n /** Titles for asset ids the turn already holds (see {@link collectAssetTitles}). */\n assetTitles?: ReadonlyMap<string, string>;\n /** A host catalog name for a tool neither this module nor the registry knows. */\n displayName?: string;\n}\n\n// ─── Text helpers ───────────────────────────────────────────────────────\n\nconst TARGET_MAX = 72;\nconst DETAIL_MAX = 300;\nconst EMPTY_TITLES: ReadonlyMap<string, string> = new Map();\n\nfunction str(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() !== \"\" ? value.trim() : undefined;\n}\n\nfunction int(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) return Math.trunc(value);\n if (typeof value === \"string\" && /^\\d+$/.test(value.trim())) return Number(value.trim());\n return undefined;\n}\n\n/** One line, capped at `max` characters with an ellipsis. */\nexport function clipLine(text: string, max = TARGET_MAX): string {\n const oneLine = text.replace(/\\s+/g, \" \").trim();\n return oneLine.length > max ? `${oneLine.slice(0, max - 1).trimEnd()}…` : oneLine;\n}\n\nfunction capitalize(text: string): string {\n return text.length > 0 ? `${text[0]!.toUpperCase()}${text.slice(1)}` : text;\n}\n\nfunction lowerFirst(text: string): string {\n return text.length > 0 ? `${text[0]!.toLowerCase()}${text.slice(1)}` : text;\n}\n\nfunction quoted(text: string): string {\n return `\"${clipLine(text, 60)}\"`;\n}\n\nfunction plural(count: number, one: string, many = `${one}s`): string {\n return `${count} ${count === 1 ? one : many}`;\n}\n\n/** Line count of `text`; an empty string is zero lines, a trailing newline adds none. */\nexport function countLines(text: string): number {\n if (!text) return 0;\n let lines = 1;\n for (let index = text.indexOf(\"\\n\"); index !== -1; index = text.indexOf(\"\\n\", index + 1)) {\n if (index < text.length - 1) lines += 1;\n }\n return lines;\n}\n\n/**\n * The tool name in sentence case, for a tool nothing else names:\n * `frobnicate_widgets` → \"Frobnicate widgets\", `mcp__linear__create_issue` →\n * \"Linear create issue\", `CreateWorkbook` → \"Create workbook\".\n */\nexport function humanizeToolName(toolName: string): string {\n const words = toolName\n .replace(/^mcp__/i, \"\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .split(/[\\s_\\-.:/]+/)\n .filter(Boolean)\n .map((word) => (/^[A-Z0-9]{2,}$/.test(word) ? word : word.toLowerCase()));\n return words.length > 0 ? capitalize(words.join(\" \")) : toolName;\n}\n\n// ─── Paths ──────────────────────────────────────────────────────────────\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\n/** A file target: its name in code when it is a real path, plain words for scratch space. */\nfunction fileTarget(path: string | undefined): { text: string; code?: string } | undefined {\n const friendly = friendlyWorkspacePath(path);\n if (!friendly || !path) return undefined;\n const isScratch = friendly !== path.split(\"/\").filter(Boolean).pop();\n const text = clipLine(friendly, 60);\n return isScratch ? { text } : { text, code: text };\n}\n\n/** The last `segments` parts of a directory path (\"…/tests/unit\"), or the path itself. */\nexport function shortPath(path: string, segments = 2): string {\n const parts = path.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean);\n if (parts.length === 0) return \"/\";\n if (parts.length <= segments) return path.startsWith(\"/\") ? `/${parts.join(\"/\")}` : parts.join(\"/\");\n return `…/${parts.slice(-segments).join(\"/\")}`;\n}\n\n// ─── Execute ────────────────────────────────────────────────────────────\n\n/** A shell command's first non-empty line and how many lines follow it. */\nexport function firstCommandLine(command: string): { firstLine: string; extraLines: number } {\n const lines = command.split(\"\\n\");\n const firstIndex = lines.findIndex((line) => line.trim().length > 0);\n if (firstIndex < 0) return { firstLine: \"\", extraLines: 0 };\n return {\n firstLine: lines[firstIndex]!.trim(),\n extraLines: Math.max(0, countLines(command) - firstIndex - 1),\n };\n}\n\nconst EXIT_CODE_NOTE = /^\\[Command (?:succeeded|failed) with exit code (-?\\d+)\\]$/;\n\nfunction textOf(result: unknown): string | undefined {\n if (typeof result === \"string\") return result;\n if (Array.isArray(result)) {\n const texts = result.flatMap((item) => {\n if (typeof item === \"string\") return [item];\n if (item && typeof item === \"object\" && typeof (item as { text?: unknown }).text === \"string\") {\n return [(item as { text: string }).text];\n }\n return [];\n });\n return texts.length > 0 ? texts.join(\"\\n\") : undefined;\n }\n return undefined;\n}\n\n/**\n * The exit code the deepagents sandbox appends to an `execute` result\n * (`[Command failed with exit code 1]`), or `null` when it reported none.\n */\nexport function executeExitCode(result: unknown): number | null {\n const text = textOf(result);\n if (!text) return null;\n const lines = text.trimEnd().split(\"\\n\");\n for (let index = lines.length - 1; index >= 0 && index >= lines.length - 4; index -= 1) {\n const match = EXIT_CODE_NOTE.exec(lines[index]!.trim());\n if (match) return Number.parseInt(match[1]!, 10);\n }\n return null;\n}\n\n// ─── Line counts ────────────────────────────────────────────────────────\n\nconst lineStatsCache = new WeakMap<object, { added: number; removed: number }>();\n\nfunction lineMultiset(text: string): Map<string, number> {\n const counts = new Map<string, number>();\n if (!text) return counts;\n const lines = text.replace(/\\r\\n/g, \"\\n\").split(\"\\n\");\n if (lines.at(-1) === \"\") lines.pop();\n for (const line of lines) counts.set(line, (counts.get(line) ?? 0) + 1);\n return counts;\n}\n\n/**\n * Lines an `edit_file` replacement adds and removes: lines of `new_string`\n * missing from `old_string` and the reverse, counted with multiplicity. Equal\n * to a line diff's counts unless the edit moves lines around. Cached per\n * arguments object, so a settled call is counted once however often the\n * transcript re-renders.\n */\nexport function editLineStats(args: Record<string, unknown>): { added: number; removed: number } {\n const cached = lineStatsCache.get(args);\n if (cached) return cached;\n const before = lineMultiset(typeof args.old_string === \"string\" ? args.old_string : \"\");\n const after = lineMultiset(typeof args.new_string === \"string\" ? args.new_string : \"\");\n let added = 0;\n let removed = 0;\n for (const [line, count] of after) added += Math.max(0, count - (before.get(line) ?? 0));\n for (const [line, count] of before) removed += Math.max(0, count - (after.get(line) ?? 0));\n const stats = { added, removed };\n lineStatsCache.set(args, stats);\n return stats;\n}\n\n// ─── Results ────────────────────────────────────────────────────────────\n\nconst MAX_PARSE_LENGTH = 256 * 1024;\n\n/** A JSON result as an object, or `null` (plain text, too large, or not JSON). */\nfunction parseResult(result: unknown): Record<string, unknown> | unknown[] | null {\n if (result && typeof result === \"object\") return result as Record<string, unknown>;\n if (typeof result !== \"string\" || result.length > MAX_PARSE_LENGTH) return null;\n const trimmed = result.trimStart();\n if (!trimmed.startsWith(\"{\") && !trimmed.startsWith(\"[\")) return null;\n try {\n const parsed: unknown = JSON.parse(trimmed);\n return parsed && typeof parsed === \"object\" ? (parsed as Record<string, unknown>) : null;\n } catch {\n return null;\n }\n}\n\nfunction resultRecord(result: unknown): Record<string, unknown> | null {\n const parsed = parseResult(result);\n return parsed && !Array.isArray(parsed) ? parsed : null;\n}\n\n/** A pull request or issue number off a result (`number`, else the `/pull/N` of its URL). */\nfunction resultNumber(result: unknown): number | undefined {\n const record = resultRecord(result);\n if (!record) return undefined;\n const direct = int(record.number) ?? int(record.pull_number) ?? int(record.issue_number);\n if (direct !== undefined) return direct;\n const url = str(record.html_url) ?? str(record.url);\n const match = url ? /\\/(?:pull|issues)\\/(\\d+)/.exec(url) : null;\n return match ? Number(match[1]) : undefined;\n}\n\n// ─── Asset titles ───────────────────────────────────────────────────────\n\nconst ASSET_ID = /^asset_[A-Za-z0-9-]{6,}$/;\nconst MAX_WALK_NODES = 2000;\ntype TitleEntries = readonly (readonly [string, string])[];\n/** Titles found in an object result, keyed by the result itself. */\nconst titlesByResultObject = new WeakMap<object, TitleEntries>();\n/** Titles found in a string result, keyed by the part that holds it and checked against the string. */\nconst titlesByStringPart = new WeakMap<object, { result: string; entries: TitleEntries }>();\n\nfunction titlesIn(value: unknown): (readonly [string, string])[] {\n const found: (readonly [string, string])[] = [];\n const stack: { node: unknown; depth: number }[] = [{ node: value, depth: 0 }];\n let visited = 0;\n while (stack.length > 0 && visited < MAX_WALK_NODES) {\n const { node, depth } = stack.pop()!;\n visited += 1;\n if (!node || typeof node !== \"object\" || depth > 4) continue;\n if (Array.isArray(node)) {\n for (const child of node) stack.push({ node: child, depth: depth + 1 });\n continue;\n }\n const record = node as Record<string, unknown>;\n const id = str(record.asset_id) ?? str(record.id) ?? str(record.assetId);\n const title = str(record.title) ?? str(record.name);\n if (id && title && ASSET_ID.test(id)) found.push([id, title] as const);\n for (const child of Object.values(record)) {\n if (child && typeof child === \"object\") stack.push({ node: child, depth: depth + 1 });\n }\n }\n return found;\n}\n\n/** The part shape {@link collectAssetTitles} reads; assistant-ui's tool-call parts satisfy it. */\nexport type AssetTitleSourcePart = {\n readonly type: string;\n readonly toolCallId?: string;\n readonly result?: unknown;\n};\n\n/**\n * The titles one result names, parsed once per result: an object result is\n * cached by its own identity, a string result by the part holding it and only\n * while that part still holds the same string, so a replaced result (however\n * long) is always read afresh. Weakly held: nothing outlives the transcript.\n */\nfunction resultTitles(part: AssetTitleSourcePart): TitleEntries {\n const result = part.result;\n if (result !== null && typeof result === \"object\") {\n let entries = titlesByResultObject.get(result);\n if (!entries) {\n entries = titlesIn(result);\n titlesByResultObject.set(result, entries);\n }\n return entries;\n }\n if (typeof result !== \"string\") return [];\n const cached = titlesByStringPart.get(part);\n if (cached && cached.result === result) return cached.entries;\n const entries = titlesIn(parseResult(result));\n titlesByStringPart.set(part, { result, entries });\n return entries;\n}\n\n/**\n * Asset id → title for every asset an earlier result in the turn named\n * (`search_assets` hits, a created asset, a status read), so a later call that\n * targets one by id can say which machine or document it acted on. Only data\n * the turn already holds; nothing is fetched.\n */\nexport function collectAssetTitles(parts: readonly AssetTitleSourcePart[]): Map<string, string> {\n const titles = new Map<string, string>();\n for (const part of parts) {\n if (part.type !== \"tool-call\" || part.result === undefined) continue;\n for (const [id, title] of resultTitles(part)) titles.set(id, title);\n }\n return titles;\n}\n\nfunction assetIdOf(value: unknown): string | undefined {\n const raw = str(value);\n if (!raw) return undefined;\n const bare = raw.split(/[?#]/, 1)[0]!;\n return bare.startsWith(\"asset_\") ? bare : undefined;\n}\n\n// ─── Phrases ────────────────────────────────────────────────────────────\n\n/**\n * How one call reads in every state: the verb in three forms (\"Running\" /\n * \"Ran\" / \"run\") and its object. `active` / `done` replace the composed\n * running / completed sentence when a tool words its outcome differently\n * (\"Found 3 assets for …\", \"jevin-box is running\").\n */\ninterface Phrase {\n verb: readonly [active: string, done: string, base: string];\n /** The object of the verb (\"git status\", \"live_audio.py\", \"a command\"). */\n object: string;\n code?: string;\n detail?: string;\n meta?: readonly (string | false | null | undefined)[];\n active?: string;\n done?: string;\n}\n\nconst RUN = [\"Running\", \"Ran\", \"run\"] as const;\nconst READ = [\"Reading\", \"Read\", \"read\"] as const;\n\nfunction summaryFromPhrase(phrase: Phrase, status: ToolSummaryState): ToolCallSummary {\n const [active, done, base] = phrase.verb;\n const imperative = `${capitalize(base)} ${phrase.object}`;\n let label: string;\n switch (status) {\n case \"running\":\n label = phrase.active ?? `${active} ${phrase.object}`;\n break;\n case \"complete\":\n label = phrase.done ?? `${done} ${phrase.object}`;\n break;\n case \"error\":\n label = `Couldn't ${base} ${phrase.object}`;\n break;\n case \"rejected\":\n label = `${imperative} — rejected`;\n break;\n case \"cancelled\":\n label = `${imperative} — cancelled`;\n break;\n case \"paused\":\n label = `${imperative} — paused`;\n break;\n case \"waiting\":\n label = \"Waiting for your input\";\n break;\n }\n const meta = (phrase.meta ?? []).filter((value): value is string => Boolean(value)).join(\" · \");\n const detail = status === \"waiting\" ? imperative : phrase.detail;\n return {\n label,\n ...(phrase.code && label.includes(phrase.code) ? { code: phrase.code } : {}),\n ...(detail ? { detail: clipLine(detail, DETAIL_MAX) } : {}),\n ...(meta ? { meta } : {}),\n };\n}\n\ntype Rule = (input: Required<Pick<SummarizeToolCallInput, \"status\">> & {\n args: Record<string, unknown>;\n result: unknown;\n titles: ReadonlyMap<string, string>;\n}) => Phrase;\n\nfunction machineName(titles: ReadonlyMap<string, string>, value: unknown): string | undefined {\n const id = assetIdOf(value);\n return id ? titles.get(id) : undefined;\n}\n\n/** \"on <machine>\" when a sandbox tool targeted another asset whose title the turn holds. */\nfunction onMachine(titles: ReadonlyMap<string, string>, args: Record<string, unknown>): string | undefined {\n const machine = machineName(titles, args.sandbox_asset_id);\n return machine ? `on ${machine}` : undefined;\n}\n\nconst COMPUTER_STATES: Record<string, string> = {\n started: \"running\",\n running: \"running\",\n stopped: \"stopped\",\n starting: \"starting\",\n stopping: \"stopping\",\n paused: \"paused\",\n error: \"in an error state\",\n};\n\nfunction computerStateWord(state: string): string {\n return COMPUTER_STATES[state.toLowerCase()] ?? humanizeToolName(state).toLowerCase();\n}\n\nconst executeRule: Rule = ({ args, result, titles }) => {\n const command = typeof args.command === \"string\" ? args.command : \"\";\n const { firstLine, extraLines } = firstCommandLine(command);\n const target = firstLine ? clipLine(firstLine) : undefined;\n const exitCode = executeExitCode(result);\n return {\n verb: RUN,\n object: target ?? \"a command\",\n code: target,\n detail: firstLine\n ? extraLines > 0\n ? `${firstLine} (+${plural(extraLines, \"more line\")})`\n : firstLine\n : undefined,\n meta: [onMachine(titles, args), exitCode !== null && exitCode !== 0 && `exit ${exitCode}`],\n };\n};\n\nfunction filePathOf(args: Record<string, unknown>): string | undefined {\n return str(args.file_path) ?? str(args.path);\n}\n\nconst readFileRule: Rule = ({ args, titles }) => {\n const path = filePathOf(args);\n const target = fileTarget(path);\n const offset = int(args.offset) ?? 0;\n const limit = int(args.limit);\n return {\n verb: READ,\n object: target?.text ?? \"a file\",\n code: target?.code,\n detail: path,\n meta: [\n offset > 0 && (limit ? `lines ${offset + 1}–${offset + limit}` : `from line ${offset + 1}`),\n onMachine(titles, args),\n ],\n };\n};\n\nconst listRule: Rule = ({ args, titles }) => {\n const path = str(args.path) ?? str(args.file_path);\n const target = path ? shortPath(path) : undefined;\n return {\n verb: [\"Listing\", \"Listed\", \"list\"],\n object: target ?? \"the workspace\",\n code: target,\n detail: path,\n meta: [onMachine(titles, args)],\n };\n};\n\nconst globRule: Rule = ({ args, result, titles }) => {\n const pattern = str(args.pattern) ?? str(args.query);\n const path = str(args.path);\n const object = pattern ? `files matching ${clipLine(pattern, 60)}` : \"files\";\n const none = typeof result === \"string\" && /^no files found/i.test(result.trim());\n return {\n verb: [\"Finding\", \"Found\", \"find\"],\n object,\n code: pattern ? clipLine(pattern, 60) : undefined,\n done: none && pattern ? `No files match ${clipLine(pattern, 60)}` : undefined,\n detail: path ? `${pattern ?? \"\"} in ${path}`.trim() : pattern,\n meta: [path && `in ${shortPath(path)}`, onMachine(titles, args)],\n };\n};\n\nconst grepRule: Rule = ({ args, result, titles }) => {\n const pattern = str(args.pattern) ?? str(args.query);\n const path = str(args.path);\n const code = pattern ? clipLine(pattern, 60) : undefined;\n const where = path ? `${shortPath(path)} ` : \"\";\n const object = code ? `${where}for ${code}` : path ? shortPath(path) : \"files\";\n const none =\n typeof result === \"string\" && (result.trim() === \"\" || /^no matches/i.test(result.trim()));\n return {\n verb: [\"Searching\", \"Searched\", \"search\"],\n object,\n code,\n done: none && code ? `No matches for ${code}${path ? ` in ${shortPath(path)}` : \"\"}` : undefined,\n detail: path ? `${pattern ?? \"\"} in ${path}`.trim() : pattern,\n meta: [str(args.glob), onMachine(titles, args)],\n };\n};\n\nconst writeFileRule: Rule = ({ args, titles }) => {\n const path = filePathOf(args);\n const target = fileTarget(path);\n const content = typeof args.content === \"string\" ? args.content : \"\";\n const lines = countLines(content);\n return {\n verb: [\"Writing\", \"Wrote\", \"write\"],\n object: target?.text ?? \"a file\",\n code: target?.code,\n detail: path,\n meta: [lines > 0 && `+${lines}`, onMachine(titles, args)],\n };\n};\n\nconst editFileRule: Rule = ({ args, titles }) => {\n const path = filePathOf(args);\n const target = fileTarget(path);\n const hasReplacement = typeof args.old_string === \"string\" || typeof args.new_string === \"string\";\n const { added, removed } = hasReplacement ? editLineStats(args) : { added: 0, removed: 0 };\n return {\n verb: [\"Editing\", \"Edited\", \"edit\"],\n object: target?.text ?? \"a file\",\n code: target?.code,\n detail: path,\n meta: [\n added + removed > 0 && `+${added} −${removed}`,\n args.replace_all === true && \"all occurrences\",\n onMachine(titles, args),\n ],\n };\n};\n\nconst searchAssetsRule: Rule = ({ args, result }) => {\n const query =\n str(args.title_contains_keyword) ??\n str(args.query) ??\n str(args.search_query) ??\n str(args.keyword);\n const types = Array.isArray(args.types)\n ? args.types.map(str).filter((type): type is string => type !== undefined)\n : [];\n const record = resultRecord(result);\n const assets = Array.isArray(record?.assets) ? record.assets : undefined;\n const count = int(record?.total_count) ?? int(record?.returned_count) ?? assets?.length;\n const forQuery = query ? ` for ${quoted(query)}` : \"\";\n const done =\n count === undefined\n ? undefined\n : count === 0\n ? `No assets found${forQuery}`\n : `Found ${plural(count, \"asset\")}${forQuery}`;\n return {\n verb: [\"Searching\", \"Searched\", \"search\"],\n object: query ? `for ${quoted(query)}` : \"assets\",\n done,\n meta: [types.length > 0 && types.map((type) => humanizeToolName(type).toLowerCase()).join(\", \")],\n };\n};\n\nconst ensureSandboxRule: Rule = ({ args, result, titles }) => {\n const machine = machineName(titles, args.computer_asset_id ?? args.asset_id);\n const record = resultRecord(result);\n const state = str(record?.state);\n return {\n verb: [\"Starting\", \"Started\", \"start\"],\n object: machine ?? \"the computer\",\n done: state ? `${machine ?? \"The computer\"} is ${computerStateWord(state)}` : undefined,\n detail: str(record?.detail),\n };\n};\n\nconst computerStatusRule: Rule = ({ args, result, titles }) => {\n const machine = machineName(titles, args.computer_asset_id ?? args.asset_id);\n const state = str(resultRecord(result)?.state);\n return {\n verb: [\"Checking\", \"Checked\", \"check\"],\n object: machine ?? \"the computer\",\n done: state ? `${machine ?? \"The computer\"} is ${computerStateWord(state)}` : undefined,\n };\n};\n\nconst computerDeployRule: Rule = ({ args, result, titles }) => {\n const machine = machineName(titles, args.computer_asset_id ?? args.asset_id);\n const port = int(args.port);\n const url = str(resultRecord(result)?.url);\n return {\n verb: [\"Deploying\", \"Deployed\", \"deploy\"],\n object: port !== undefined ? `port ${port}` : (machine ?? \"the computer\"),\n detail: url,\n meta: [port !== undefined && machine && `on ${machine}`],\n };\n};\n\nconst computerCreateRule: Rule = ({ args }) => {\n const name = str(args.name) ?? str(args.title);\n return {\n verb: [\"Creating\", \"Created\", \"create\"],\n object: name ? `computer ${quoted(name)}` : \"a computer\",\n };\n};\n\nfunction repoOf(args: Record<string, unknown>): string | undefined {\n const owner = str(args.owner);\n const repo = str(args.repo);\n if (owner && repo) return `${owner}/${repo}`;\n return repo ?? str(args.repository);\n}\n\nconst githubPullRule: Rule = ({ args }) => {\n const number = int(args.pull_number) ?? int(args.number);\n const repo = repoOf(args);\n return {\n verb: [\"Viewing\", \"Viewed\", \"view\"],\n object: number !== undefined ? `pull request #${number}` : \"a pull request\",\n detail: repo && number !== undefined ? `${repo}#${number}` : repo,\n meta: [repo],\n };\n};\n\nconst githubListPullsRule: Rule = ({ args }) => {\n const repo = repoOf(args);\n const state = str(args.state);\n return {\n verb: [\"Listing\", \"Listed\", \"list\"],\n object: state && state !== \"open\" ? `${state} pull requests` : \"pull requests\",\n meta: [repo, str(args.head) && `head ${str(args.head)}`],\n };\n};\n\nconst githubOpenPullRule: Rule = ({ args, result }) => {\n const title = str(args.title);\n const number = resultNumber(result);\n const head = str(args.head);\n const base = str(args.base);\n return {\n verb: [\"Opening\", \"Opened\", \"open\"],\n object: title ? `pull request ${quoted(title)}` : \"a pull request\",\n done: number !== undefined ? `Opened pull request #${number}` : undefined,\n detail: title,\n meta: [head && base && `${head} → ${base}`, args.draft === true && \"draft\", repoOf(args)],\n };\n};\n\nconst githubCommentRule: Rule = ({ args }) => {\n const number = int(args.issue_number) ?? int(args.pull_number);\n return {\n verb: [\"Commenting on\", \"Commented on\", \"comment on\"],\n object: number !== undefined ? `#${number}` : \"an issue\",\n meta: [repoOf(args)],\n };\n};\n\nconst githubIssueRule: Rule = ({ args, result }) => {\n const title = str(args.title);\n const number = resultNumber(result);\n return {\n verb: [\"Creating\", \"Created\", \"create\"],\n object: title ? `issue ${quoted(title)}` : \"an issue\",\n done: number !== undefined ? `Created issue #${number}` : undefined,\n detail: title,\n meta: [repoOf(args)],\n };\n};\n\nconst githubFileRule: Rule = ({ args }) => {\n const path = str(args.path);\n const target = fileTarget(path);\n const repo = repoOf(args);\n return {\n verb: READ,\n object: target?.text ?? \"a file\",\n code: target?.code,\n detail: repo && path ? `${repo}/${path}` : path,\n meta: [repo, str(args.ref)],\n };\n};\n\nconst githubDirectoryRule: Rule = ({ args }) => {\n const path = str(args.path);\n return {\n verb: [\"Listing\", \"Listed\", \"list\"],\n object: path ? shortPath(path) : \"the repository root\",\n code: path ? shortPath(path) : undefined,\n meta: [repoOf(args)],\n };\n};\n\nconst webSearchRule: Rule = ({ args }) => {\n const query = str(args.query) ?? str(args.search_query) ?? str(args.term);\n return {\n verb: [\"Searching\", \"Searched\", \"search\"],\n object: query ? `the web for ${quoted(query)}` : \"the web\",\n };\n};\n\n/** Host and path of a URL, never its credentials, query string or fragment. */\nfunction pageLabel(value: unknown): string | undefined {\n const raw = str(value);\n if (!raw) return undefined;\n try {\n const url = new URL(raw);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return undefined;\n const path = url.pathname === \"/\" ? \"\" : url.pathname;\n return clipLine(`${url.hostname.replace(/^www\\./, \"\")}${path}`, 60);\n } catch {\n return undefined;\n }\n}\n\nconst browseRule: Rule = ({ args }) => {\n const page = pageLabel(args.url) ?? pageLabel(args.link);\n return { verb: READ, object: page ?? \"a web page\" };\n};\n\nconst readAssetRule: Rule = ({ args, titles }) => {\n const rawIds = Array.isArray(args.asset_ids) ? args.asset_ids : [args.asset_id ?? args.asset_ids];\n const ids = rawIds.map(assetIdOf).filter((id): id is string => id !== undefined);\n const named = ids.map((id) => titles.get(id)).filter((title): title is string => Boolean(title));\n const object =\n ids.length > 1\n ? plural(ids.length, \"asset\")\n : named[0]\n ? clipLine(named[0], 60)\n : \"an asset\";\n return {\n verb: READ,\n object,\n detail: ids.length > 1 && named.length > 0 ? named.join(\", \") : undefined,\n };\n};\n\ntype Todo = { status?: unknown; content?: unknown };\n\nconst writeTodosRule: Rule = ({ args }) => {\n const todos = Array.isArray(args.todos) ? (args.todos as Todo[]) : [];\n const done = todos.filter((todo) => todo?.status === \"completed\").length;\n const current = todos.find((todo) => todo?.status === \"in_progress\");\n return {\n verb: [\"Updating\", \"Updated\", \"update\"],\n object: \"plan\",\n done:\n todos.length === 0 ? \"Cleared the plan\" : `Updated plan (${done}/${todos.length} done)`,\n detail: str(current?.content) ? `Now: ${str(current?.content)}` : undefined,\n };\n};\n\nfunction subagentName(value: unknown): string {\n const name = str(value);\n if (!name || name === \"general-purpose\") return \"a subagent\";\n return humanizeToolName(name).toLowerCase();\n}\n\nconst taskRule: Rule = ({ args }) => {\n const description = str(args.description);\n const who = subagentName(args.subagent_type);\n return {\n verb: [\"Delegating to\", \"Delegated to\", \"delegate to\"],\n object: description ? `${who}: ${clipLine(description, 64)}` : who,\n detail: description,\n };\n};\n\nconst startAsyncTaskRule: Rule = ({ args }) => {\n const description = str(args.description);\n return {\n verb: [\"Starting\", \"Started\", \"start\"],\n object: description ? `background task: ${clipLine(description, 56)}` : \"a background task\",\n detail: description,\n };\n};\n\nconst RULES: Record<string, Rule> = {\n execute: executeRule,\n read_file: readFileRule,\n ls: listRule,\n glob: globRule,\n grep: grepRule,\n write_file: writeFileRule,\n edit_file: editFileRule,\n search_assets: searchAssetsRule,\n computer_asset_ensure_sandbox: ensureSandboxRule,\n computer_asset_get_status: computerStatusRule,\n computer_asset_deploy: computerDeployRule,\n computer_asset_create: computerCreateRule,\n github_get_pull_request: githubPullRule,\n github_list_pull_requests: githubListPullsRule,\n github_open_pull_request: githubOpenPullRule,\n github_comment: githubCommentRule,\n github_create_issue: githubIssueRule,\n github_fetch_file: githubFileRule,\n github_list_directory: githubDirectoryRule,\n search: webSearchRule,\n web_search: webSearchRule,\n search_web: webSearchRule,\n exa_search: webSearchRule,\n perplexity_search: webSearchRule,\n firecrawl_search: webSearchRule,\n browse: browseRule,\n web_fetch: browseRule,\n fetch_url: browseRule,\n web_scrape: browseRule,\n scrape_web: browseRule,\n firecrawl_scrape: browseRule,\n read_asset: readAssetRule,\n write_todos: writeTodosRule,\n task: taskRule,\n start_async_task: startAsyncTaskRule,\n};\n\n/** Tool names with a dedicated summary rule (the rest read the shared registry). */\nexport function hasToolSummaryRule(toolName: string): boolean {\n return Object.hasOwn(RULES, toolName);\n}\n\n/**\n * The summary for a tool the shared registry describes: its curated running /\n * completed copy with the call's own one-line description as the chip, and\n * the registry's wording for every other state.\n */\nfunction registrySummary(toolName: string, args: Record<string, unknown> | undefined, status: ToolSummaryState): ToolCallSummary {\n const meta = getToolDisplayMeta(toolName);\n const described = describeToolArgs({ toolName, args });\n const label =\n status === \"running\"\n ? meta.activeLabel\n : status === \"complete\"\n ? (meta.completedLabel ?? toolCompletedLabel(meta.activeLabel))\n : toolStatusLabel(toolName, status);\n return {\n label,\n ...(described && status !== \"waiting\" ? { meta: clipLine(described, 60) } : {}),\n };\n}\n\n/**\n * A tool nothing describes: the host's catalog name (\"Running Frobnicate\",\n * then \"Frobnicate\"), else the sentence-cased tool name (\"Running frobnicate\n * widgets\", then \"Ran frobnicate widgets\").\n */\nfunction unknownToolSummary(toolName: string, status: ToolSummaryState, displayName: string | undefined): ToolCallSummary {\n const name = displayName ?? humanizeToolName(toolName);\n const inSentence = displayName ?? lowerFirst(name);\n switch (status) {\n case \"running\":\n return { label: `Running ${inSentence}` };\n case \"complete\":\n return { label: displayName ?? `Ran ${inSentence}` };\n case \"error\":\n return { label: `${name} failed` };\n case \"rejected\":\n return { label: `${name} — rejected` };\n case \"cancelled\":\n return { label: `${name} — cancelled` };\n case \"paused\":\n return { label: `${name} — paused` };\n case \"waiting\":\n return { label: \"Waiting for your input\", detail: name };\n }\n}\n\n/**\n * The one-line summary of a tool call in its current state. Never throws:\n * missing or partial arguments (a call still streaming) fall back to the\n * verb with a generic object (\"Running a command\").\n */\nexport function summarizeToolCall({\n toolName,\n args,\n result,\n status,\n assetTitles,\n displayName,\n}: SummarizeToolCallInput): ToolCallSummary {\n const rule = RULES[toolName];\n if (rule) {\n return summaryFromPhrase(\n rule({ args: args ?? {}, result, status, titles: assetTitles ?? EMPTY_TITLES }),\n status,\n );\n }\n if (hasToolDisplayMeta(toolName)) return registrySummary(toolName, args, status);\n return unknownToolSummary(toolName, status, displayName);\n}\n"],"names":["entries"],"mappings":"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"}
@@ -4,6 +4,8 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const athenaDiagnostics = require("../diagnostics/athena-diagnostics.cjs");
5
5
  const react = require("react");
6
6
  const lucideReact = require("lucide-react");
7
+ const rangePreview = require("../sheet-range/range-preview.cjs");
8
+ const rangePreviewTable = require("../sheet-range/range-preview-table.cjs");
7
9
  const primitives = require("./primitives.cjs");
8
10
  const fileToolUis = require("./file-tool-uis.cjs");
9
11
  const writeTodosToolUi = require("./write-todos-tool-ui.cjs");
@@ -2012,47 +2014,27 @@ const RunSqlToolUI = react.memo(
2012
2014
  RunSqlToolUIImpl
2013
2015
  );
2014
2016
  RunSqlToolUI.displayName = "RunSqlToolUI";
2015
- function parseA1Range(range) {
2016
- const stripped = range.replace(/^(?:'[^']+'|[^'!]+)!/, "");
2017
- const match = stripped.match(/^([A-Z]+)(\d+)/i);
2018
- if (!match) return null;
2019
- return { startCol: match[1].toUpperCase(), startRow: parseInt(match[2], 10) };
2020
- }
2021
- function colNumToLetter(n) {
2022
- let result = "";
2023
- let num = n;
2024
- while (num > 0) {
2025
- num--;
2026
- result = String.fromCharCode(65 + num % 26) + result;
2027
- num = Math.floor(num / 26);
2028
- }
2029
- return result;
2030
- }
2031
- function parseCellsToGrid(cells) {
2032
- let parsed = null;
2017
+ function parseSheetCellRows(cells) {
2018
+ let parsed = cells;
2033
2019
  if (typeof cells === "string") {
2034
2020
  try {
2035
2021
  parsed = JSON.parse(cells);
2036
2022
  } catch {
2037
2023
  return null;
2038
2024
  }
2039
- } else if (Array.isArray(cells)) {
2040
- parsed = cells;
2041
- }
2042
- if (!parsed || !Array.isArray(parsed)) return null;
2043
- return parsed.map((row) => {
2044
- if (!Array.isArray(row)) return [];
2045
- return row.map((cell) => {
2046
- if (cell == null) return "";
2047
- if (typeof cell === "object" && cell !== null) {
2048
- const c = cell;
2049
- if (c.formula) return c.formula;
2050
- if (c.value !== void 0 && c.value !== null) return String(c.value);
2051
- return "";
2052
- }
2053
- return String(cell);
2054
- });
2055
- });
2025
+ }
2026
+ if (!Array.isArray(parsed)) return null;
2027
+ return parsed.map((row) => Array.isArray(row) ? row : null);
2028
+ }
2029
+ function sheetCellText(cell) {
2030
+ if (cell == null) return "";
2031
+ if (typeof cell === "object") {
2032
+ const c = cell;
2033
+ if (c.formula) return c.formula;
2034
+ if (c.value !== void 0 && c.value !== null) return String(c.value);
2035
+ return "";
2036
+ }
2037
+ return String(cell);
2056
2038
  }
2057
2039
  const MAX_SHEET_DISPLAY_ROWS = 30;
2058
2040
  const MAX_LISTED_DV_VIOLATIONS = 3;
@@ -2089,23 +2071,19 @@ const UpdateSheetRangeToolUIImpl = ({
2089
2071
  const isFailure = isComplete && (data == null ? void 0 : data.success) === false;
2090
2072
  const errorMsg = isFailure ? buildSheetUpdateFailureMessage(data, range) : (status == null ? void 0 : status.type) === "incomplete" ? status.error : null;
2091
2073
  const grid = react.useMemo(
2092
- () => parseCellsToGrid(typedArgs == null ? void 0 : typedArgs.cells),
2074
+ () => parseSheetCellRows(typedArgs == null ? void 0 : typedArgs.cells),
2093
2075
  [typedArgs == null ? void 0 : typedArgs.cells]
2094
2076
  );
2095
- const rangeInfo = react.useMemo(() => parseA1Range(range), [range]);
2096
- const { headers, displayRows, totalRows } = react.useMemo(() => {
2097
- if (!grid || grid.length === 0) {
2098
- return { headers: [], displayRows: [], totalRows: 0 };
2099
- }
2100
- const maxCols = Math.max(...grid.map((r) => r.length));
2101
- const startColNum = rangeInfo ? rangeInfo.startCol.split("").reduce((acc, c) => acc * 26 + c.charCodeAt(0) - 64, 0) : 1;
2102
- const hdrs = Array.from(
2103
- { length: maxCols },
2104
- (_, i) => colNumToLetter(startColNum + i)
2105
- );
2106
- const capped = grid.slice(0, MAX_SHEET_DISPLAY_ROWS);
2107
- return { headers: hdrs, displayRows: capped, totalRows: grid.length };
2108
- }, [grid, rangeInfo]);
2077
+ const totalRows = (grid == null ? void 0 : grid.length) ?? 0;
2078
+ const preview = react.useMemo(
2079
+ () => grid ? rangePreview.rangePreviewFromRows({
2080
+ anchor: range,
2081
+ rows: grid,
2082
+ formatCell: sheetCellText,
2083
+ maxRows: MAX_SHEET_DISPLAY_ROWS
2084
+ }) : null,
2085
+ [grid, range]
2086
+ );
2109
2087
  const openAsset = assetPanelStore.useAssetPanelStore((s) => s.openAsset);
2110
2088
  const effectiveAssetId = resultAssetId ?? (assetId.startsWith("asset_") ? assetId : null);
2111
2089
  const title = isRunning ? explanation ? `Updating ${range}: ${explanation}` : `Updating sheet range ${range}...` : isFailure ? `Update to ${range || "sheet"} rejected` : explanation ? `Updated ${range}: ${explanation}` : `Updated sheet range ${range}`;
@@ -2122,55 +2100,19 @@ const UpdateSheetRangeToolUIImpl = ({
2122
2100
  badge: isComplete && success && grid ? `${totalRows} ${totalRows === 1 ? "row" : "rows"}` : void 0,
2123
2101
  error: errorMsg,
2124
2102
  children: [
2125
- headers.length > 0 && displayRows.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
2103
+ preview && /* @__PURE__ */ jsxRuntime.jsx(
2126
2104
  primitives.ExpandableSection,
2127
2105
  {
2128
2106
  label: `Show data (${totalRows} ${totalRows === 1 ? "row" : "rows"})`,
2129
2107
  defaultOpen: totalRows <= 10,
2130
- children: [
2131
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-auto max-h-72", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-[11px]", children: [
2132
- /* @__PURE__ */ jsxRuntime.jsx("thead", { className: "sticky top-0 bg-muted/60 backdrop-blur", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
2133
- /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-8 px-1.5 py-1 text-right font-medium text-muted-foreground/60", children: "#" }),
2134
- headers.map((h) => /* @__PURE__ */ jsxRuntime.jsx(
2135
- "th",
2136
- {
2137
- className: "whitespace-nowrap px-2 py-1 text-center font-medium text-muted-foreground",
2138
- children: h
2139
- },
2140
- h
2141
- ))
2142
- ] }) }),
2143
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: displayRows.map((row, i) => {
2144
- const rowNum = ((rangeInfo == null ? void 0 : rangeInfo.startRow) ?? 1) + i;
2145
- return /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-t border-border/30 hover:bg-muted/20", children: [
2146
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "w-8 px-1.5 py-0.5 text-right tabular-nums text-muted-foreground/60", children: rowNum }),
2147
- headers.map((h, j) => {
2148
- const val = row[j] ?? "";
2149
- const isFormula = typeof val === "string" && val.startsWith("=");
2150
- return /* @__PURE__ */ jsxRuntime.jsx(
2151
- "td",
2152
- {
2153
- className: cnfast.cn(
2154
- "max-w-[180px] truncate whitespace-nowrap px-2 py-0.5 text-foreground/80",
2155
- isFormula && "font-mono text-blue-600"
2156
- ),
2157
- title: val,
2158
- children: val || /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/30", children: "—" })
2159
- },
2160
- h
2161
- );
2162
- })
2163
- ] }, i);
2164
- }) })
2165
- ] }) }),
2166
- totalRows > MAX_SHEET_DISPLAY_ROWS && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-2 py-1 text-[10px] text-muted-foreground", children: [
2167
- "Showing first ",
2168
- MAX_SHEET_DISPLAY_ROWS,
2169
- " of ",
2170
- totalRows,
2171
- " rows"
2172
- ] })
2173
- ]
2108
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2109
+ rangePreviewTable.RangePreviewTable,
2110
+ {
2111
+ preview,
2112
+ maxRows: MAX_SHEET_DISPLAY_ROWS,
2113
+ caption: range ? `Values written to ${range}` : "Values written"
2114
+ }
2115
+ )
2174
2116
  }
2175
2117
  ),
2176
2118
  effectiveAssetId && isComplete && !errorMsg && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsxs(