@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,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactQuery = require("@tanstack/react-query");
4
+ const useAthenaRestQuery = require("../lib/use-athena-rest-query.cjs");
5
+ const AthenaContext = require("../provider/AthenaContext.cjs");
6
+ const sessionWorkspaceApi = require("./session-workspace-api.cjs");
7
+ const SESSION_WORKSPACE_QUERY_KEY = ["athena-sdk", "session-workspace"];
8
+ const COMPUTER_STATUS_REFRESH_MS = 3e4;
9
+ const NO_RETRY_STATUSES = /* @__PURE__ */ new Set([401, 403, 404, 405, 409]);
10
+ function retryTransient(failureCount, error) {
11
+ const status = error.status;
12
+ if (typeof status === "number" && NO_RETRY_STATUSES.has(status)) return false;
13
+ return failureCount < 2;
14
+ }
15
+ function useAthenaSessionWorkspace({
16
+ threadId,
17
+ enabled = true,
18
+ refetchIntervalMs = false
19
+ }) {
20
+ const config = AthenaContext.useAthenaConfig();
21
+ const { backendUrl, apiKey, getToken } = config;
22
+ const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
23
+ const queryClient = useAthenaRestQuery.useAthenaQueryClient();
24
+ return reactQuery.useQuery(
25
+ {
26
+ queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],
27
+ // `config.token` is read at fetch time: the provider serves the latest
28
+ // token through a getter, so rotations reach the request.
29
+ queryFn: ({ signal }) => sessionWorkspaceApi.fetchSessionWorkspace({
30
+ backendUrl,
31
+ auth: { apiKey, token: config.token, getToken },
32
+ threadId: threadId ?? "",
33
+ signal
34
+ }),
35
+ enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,
36
+ staleTime: 15e3,
37
+ refetchInterval: refetchIntervalMs,
38
+ refetchOnWindowFocus: false,
39
+ retry: retryTransient
40
+ },
41
+ queryClient
42
+ );
43
+ }
44
+ function useAthenaComputerStatus({
45
+ assetId,
46
+ enabled = true
47
+ }) {
48
+ const config = AthenaContext.useAthenaConfig();
49
+ const { backendUrl, apiKey, getToken } = config;
50
+ const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
51
+ const queryClient = useAthenaRestQuery.useAthenaQueryClient();
52
+ return reactQuery.useQuery(
53
+ {
54
+ queryKey: ["athena-sdk", "computer-status", backendUrl, ...identity, assetId],
55
+ queryFn: ({ signal }) => sessionWorkspaceApi.fetchComputerRuntimeStatus({
56
+ backendUrl,
57
+ auth: { apiKey, token: config.token, getToken },
58
+ assetId: assetId ?? "",
59
+ signal
60
+ }),
61
+ enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
62
+ staleTime: COMPUTER_STATUS_REFRESH_MS,
63
+ refetchInterval: COMPUTER_STATUS_REFRESH_MS,
64
+ refetchOnWindowFocus: false,
65
+ retry: retryTransient
66
+ },
67
+ queryClient
68
+ );
69
+ }
70
+ function useAthenaComputerSshAccess({
71
+ assetId,
72
+ enabled = true
73
+ }) {
74
+ const config = AthenaContext.useAthenaConfig();
75
+ const { backendUrl, apiKey, getToken } = config;
76
+ const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
77
+ const queryClient = useAthenaRestQuery.useAthenaQueryClient();
78
+ return reactQuery.useQuery(
79
+ {
80
+ queryKey: ["athena-sdk", "computer-ssh-access", backendUrl, ...identity, assetId],
81
+ queryFn: ({ signal }) => sessionWorkspaceApi.fetchComputerSshAccess({
82
+ backendUrl,
83
+ auth: { apiKey, token: config.token, getToken },
84
+ assetId: assetId ?? "",
85
+ signal
86
+ }),
87
+ enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
88
+ staleTime: 5 * 6e4,
89
+ refetchOnWindowFocus: false,
90
+ retry: retryTransient
91
+ },
92
+ queryClient
93
+ );
94
+ }
95
+ exports.COMPUTER_STATUS_REFRESH_MS = COMPUTER_STATUS_REFRESH_MS;
96
+ exports.SESSION_WORKSPACE_QUERY_KEY = SESSION_WORKSPACE_QUERY_KEY;
97
+ exports.useAthenaComputerSshAccess = useAthenaComputerSshAccess;
98
+ exports.useAthenaComputerStatus = useAthenaComputerStatus;
99
+ exports.useAthenaSessionWorkspace = useAthenaSessionWorkspace;
100
+ //# sourceMappingURL=use-session-workspace.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session-workspace.cjs","sources":["../../src/workbench/use-session-workspace.ts"],"sourcesContent":["/**\n * TanStack Query hooks over the session workbench's Agora reads (see\n * `session-workspace-api.ts`), with the provider's `backendUrl` and\n * credentials. Keyed by the non-secret request, the signed-in principal and\n * a credential generation (`useAthenaQueryIdentity`), never by the\n * credential: one user's cached workspace is never another's.\n */\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport {\n type ComputerRuntimeStatus,\n type ComputerSshAccess,\n fetchComputerRuntimeStatus,\n fetchComputerSshAccess,\n fetchSessionWorkspace,\n type SessionWorkspace,\n} from './session-workspace-api';\n\n/** The key prefix of every session workspace query — what a settle invalidates. */\nexport const SESSION_WORKSPACE_QUERY_KEY = ['athena-sdk', 'session-workspace'] as const;\n\n/** How often a mounted computer badge re-reads the computer's state. */\nexport const COMPUTER_STATUS_REFRESH_MS = 30_000;\n\nconst NO_RETRY_STATUSES: ReadonlySet<number> = new Set([401, 403, 404, 405, 409]);\n\n/** Retry transient failures twice; a refusal or a missing route answers the same way again. */\nfunction retryTransient(failureCount: number, error: Error): boolean {\n const status = (error as { status?: unknown }).status;\n if (typeof status === 'number' && NO_RETRY_STATUSES.has(status)) return false;\n return failureCount < 2;\n}\n\nexport interface UseAthenaSessionWorkspaceOptions {\n /** The thread to read; `null` holds the query idle. */\n threadId: string | null;\n /** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */\n enabled?: boolean;\n /** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */\n refetchIntervalMs?: number | false;\n}\n\n/**\n * The computers and assets a session works with\n * (`GET /api/conversations/threads/{id}/workspace`).\n */\nexport function useAthenaSessionWorkspace({\n threadId,\n enabled = true,\n refetchIntervalMs = false,\n}: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchSessionWorkspace({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n threadId: threadId ?? '',\n signal,\n }),\n enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,\n staleTime: 15_000,\n refetchInterval: refetchIntervalMs,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a\n * badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows\n * and the page is visible (the read never wakes the computer), never retried\n * past a refusal.\n */\nexport function useAthenaComputerStatus({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerRuntimeStatus | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-status', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerRuntimeStatus({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: COMPUTER_STATUS_REFRESH_MS,\n refetchInterval: COMPUTER_STATUS_REFRESH_MS,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs\n * EDIT on the computer: a viewer without it reads an `auth_rejected` error and\n * the caller offers no command.\n */\nexport function useAthenaComputerSshAccess({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerSshAccess | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-ssh-access', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerSshAccess({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: 5 * 60_000,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n"],"names":["useAthenaConfig","useAthenaQueryIdentity","useAthenaQueryClient","useQuery","fetchSessionWorkspace","fetchComputerRuntimeStatus","fetchComputerSshAccess"],"mappings":";;;;;;AAoBO,MAAM,8BAA8B,CAAC,cAAc,mBAAmB;AAGtE,MAAM,6BAA6B;AAE1C,MAAM,wCAA6C,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAGhF,SAAS,eAAe,cAAsB,OAAuB;AACnE,QAAM,SAAU,MAA+B;AAC/C,MAAI,OAAO,WAAW,YAAY,kBAAkB,IAAI,MAAM,EAAG,QAAO;AACxE,SAAO,eAAe;AACxB;AAeO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA,UAAU;AAAA,EACV,oBAAoB;AACtB,GAA8E;AAC5E,QAAM,SAASA,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,GAAG,6BAA6B,YAAY,GAAG,UAAU,QAAQ;AAAA;AAAA;AAAA,MAG5E,SAAS,CAAC,EAAE,OAAA,MACVC,0CAAsB;AAAA,QACpB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,UAAU,YAAY;AAAA,QACtB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,aAAa,QAAQ,SAAS,SAAS,KAAK,WAAW,SAAS;AAAA,MACpF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAQO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,UAAU;AACZ,GAGwD;AACtD,QAAM,SAASJ,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,mBAAmB,YAAY,GAAG,UAAU,OAAO;AAAA,MAC5E,SAAS,CAAC,EAAE,OAAA,MACVE,+CAA2B;AAAA,QACzB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAOO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA,UAAU;AACZ,GAGoD;AAClD,QAAM,SAASL,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,uBAAuB,YAAY,GAAG,UAAU,OAAO;AAAA,MAChF,SAAS,CAAC,EAAE,OAAA,MACVG,2CAAuB;AAAA,QACrB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW,IAAI;AAAA,MACf,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;;;;;;"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * TanStack Query hooks over the session workbench's Agora reads (see
3
+ * `session-workspace-api.ts`), with the provider's `backendUrl` and
4
+ * credentials. Keyed by the non-secret request, the signed-in principal and
5
+ * a credential generation (`useAthenaQueryIdentity`), never by the
6
+ * credential: one user's cached workspace is never another's.
7
+ */
8
+ import { type UseQueryResult } from '@tanstack/react-query';
9
+ import { type ComputerRuntimeStatus, type ComputerSshAccess, type SessionWorkspace } from './session-workspace-api';
10
+ /** The key prefix of every session workspace query — what a settle invalidates. */
11
+ export declare const SESSION_WORKSPACE_QUERY_KEY: readonly ['athena-sdk', 'session-workspace'];
12
+ /** How often a mounted computer badge re-reads the computer's state. */
13
+ export declare const COMPUTER_STATUS_REFRESH_MS = 30000;
14
+ export interface UseAthenaSessionWorkspaceOptions {
15
+ /** The thread to read; `null` holds the query idle. */
16
+ threadId: string | null;
17
+ /** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */
18
+ enabled?: boolean;
19
+ /** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */
20
+ refetchIntervalMs?: number | false;
21
+ }
22
+ /**
23
+ * The computers and assets a session works with
24
+ * (`GET /api/conversations/threads/{id}/workspace`).
25
+ */
26
+ export declare function useAthenaSessionWorkspace({ threadId, enabled, refetchIntervalMs, }: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error>;
27
+ /**
28
+ * A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a
29
+ * badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows
30
+ * and the page is visible (the read never wakes the computer), never retried
31
+ * past a refusal.
32
+ */
33
+ export declare function useAthenaComputerStatus({ assetId, enabled, }: {
34
+ assetId: string | null;
35
+ enabled?: boolean;
36
+ }): UseQueryResult<ComputerRuntimeStatus | null, Error>;
37
+ /**
38
+ * A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs
39
+ * EDIT on the computer: a viewer without it reads an `auth_rejected` error and
40
+ * the caller offers no command.
41
+ */
42
+ export declare function useAthenaComputerSshAccess({ assetId, enabled, }: {
43
+ assetId: string | null;
44
+ enabled?: boolean;
45
+ }): UseQueryResult<ComputerSshAccess | null, Error>;
@@ -0,0 +1,100 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { useAthenaQueryIdentity, useAthenaQueryClient } from "../lib/use-athena-rest-query.js";
3
+ import { useAthenaConfig } from "../provider/AthenaContext.js";
4
+ import { fetchComputerSshAccess, fetchComputerRuntimeStatus, fetchSessionWorkspace } from "./session-workspace-api.js";
5
+ const SESSION_WORKSPACE_QUERY_KEY = ["athena-sdk", "session-workspace"];
6
+ const COMPUTER_STATUS_REFRESH_MS = 3e4;
7
+ const NO_RETRY_STATUSES = /* @__PURE__ */ new Set([401, 403, 404, 405, 409]);
8
+ function retryTransient(failureCount, error) {
9
+ const status = error.status;
10
+ if (typeof status === "number" && NO_RETRY_STATUSES.has(status)) return false;
11
+ return failureCount < 2;
12
+ }
13
+ function useAthenaSessionWorkspace({
14
+ threadId,
15
+ enabled = true,
16
+ refetchIntervalMs = false
17
+ }) {
18
+ const config = useAthenaConfig();
19
+ const { backendUrl, apiKey, getToken } = config;
20
+ const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
21
+ const queryClient = useAthenaQueryClient();
22
+ return useQuery(
23
+ {
24
+ queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],
25
+ // `config.token` is read at fetch time: the provider serves the latest
26
+ // token through a getter, so rotations reach the request.
27
+ queryFn: ({ signal }) => fetchSessionWorkspace({
28
+ backendUrl,
29
+ auth: { apiKey, token: config.token, getToken },
30
+ threadId: threadId ?? "",
31
+ signal
32
+ }),
33
+ enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,
34
+ staleTime: 15e3,
35
+ refetchInterval: refetchIntervalMs,
36
+ refetchOnWindowFocus: false,
37
+ retry: retryTransient
38
+ },
39
+ queryClient
40
+ );
41
+ }
42
+ function useAthenaComputerStatus({
43
+ assetId,
44
+ enabled = true
45
+ }) {
46
+ const config = useAthenaConfig();
47
+ const { backendUrl, apiKey, getToken } = config;
48
+ const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
49
+ const queryClient = useAthenaQueryClient();
50
+ return useQuery(
51
+ {
52
+ queryKey: ["athena-sdk", "computer-status", backendUrl, ...identity, assetId],
53
+ queryFn: ({ signal }) => fetchComputerRuntimeStatus({
54
+ backendUrl,
55
+ auth: { apiKey, token: config.token, getToken },
56
+ assetId: assetId ?? "",
57
+ signal
58
+ }),
59
+ enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
60
+ staleTime: COMPUTER_STATUS_REFRESH_MS,
61
+ refetchInterval: COMPUTER_STATUS_REFRESH_MS,
62
+ refetchOnWindowFocus: false,
63
+ retry: retryTransient
64
+ },
65
+ queryClient
66
+ );
67
+ }
68
+ function useAthenaComputerSshAccess({
69
+ assetId,
70
+ enabled = true
71
+ }) {
72
+ const config = useAthenaConfig();
73
+ const { backendUrl, apiKey, getToken } = config;
74
+ const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
75
+ const queryClient = useAthenaQueryClient();
76
+ return useQuery(
77
+ {
78
+ queryKey: ["athena-sdk", "computer-ssh-access", backendUrl, ...identity, assetId],
79
+ queryFn: ({ signal }) => fetchComputerSshAccess({
80
+ backendUrl,
81
+ auth: { apiKey, token: config.token, getToken },
82
+ assetId: assetId ?? "",
83
+ signal
84
+ }),
85
+ enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
86
+ staleTime: 5 * 6e4,
87
+ refetchOnWindowFocus: false,
88
+ retry: retryTransient
89
+ },
90
+ queryClient
91
+ );
92
+ }
93
+ export {
94
+ COMPUTER_STATUS_REFRESH_MS,
95
+ SESSION_WORKSPACE_QUERY_KEY,
96
+ useAthenaComputerSshAccess,
97
+ useAthenaComputerStatus,
98
+ useAthenaSessionWorkspace
99
+ };
100
+ //# sourceMappingURL=use-session-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session-workspace.js","sources":["../../src/workbench/use-session-workspace.ts"],"sourcesContent":["/**\n * TanStack Query hooks over the session workbench's Agora reads (see\n * `session-workspace-api.ts`), with the provider's `backendUrl` and\n * credentials. Keyed by the non-secret request, the signed-in principal and\n * a credential generation (`useAthenaQueryIdentity`), never by the\n * credential: one user's cached workspace is never another's.\n */\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport {\n type ComputerRuntimeStatus,\n type ComputerSshAccess,\n fetchComputerRuntimeStatus,\n fetchComputerSshAccess,\n fetchSessionWorkspace,\n type SessionWorkspace,\n} from './session-workspace-api';\n\n/** The key prefix of every session workspace query — what a settle invalidates. */\nexport const SESSION_WORKSPACE_QUERY_KEY = ['athena-sdk', 'session-workspace'] as const;\n\n/** How often a mounted computer badge re-reads the computer's state. */\nexport const COMPUTER_STATUS_REFRESH_MS = 30_000;\n\nconst NO_RETRY_STATUSES: ReadonlySet<number> = new Set([401, 403, 404, 405, 409]);\n\n/** Retry transient failures twice; a refusal or a missing route answers the same way again. */\nfunction retryTransient(failureCount: number, error: Error): boolean {\n const status = (error as { status?: unknown }).status;\n if (typeof status === 'number' && NO_RETRY_STATUSES.has(status)) return false;\n return failureCount < 2;\n}\n\nexport interface UseAthenaSessionWorkspaceOptions {\n /** The thread to read; `null` holds the query idle. */\n threadId: string | null;\n /** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */\n enabled?: boolean;\n /** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */\n refetchIntervalMs?: number | false;\n}\n\n/**\n * The computers and assets a session works with\n * (`GET /api/conversations/threads/{id}/workspace`).\n */\nexport function useAthenaSessionWorkspace({\n threadId,\n enabled = true,\n refetchIntervalMs = false,\n}: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchSessionWorkspace({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n threadId: threadId ?? '',\n signal,\n }),\n enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,\n staleTime: 15_000,\n refetchInterval: refetchIntervalMs,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a\n * badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows\n * and the page is visible (the read never wakes the computer), never retried\n * past a refusal.\n */\nexport function useAthenaComputerStatus({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerRuntimeStatus | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-status', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerRuntimeStatus({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: COMPUTER_STATUS_REFRESH_MS,\n refetchInterval: COMPUTER_STATUS_REFRESH_MS,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs\n * EDIT on the computer: a viewer without it reads an `auth_rejected` error and\n * the caller offers no command.\n */\nexport function useAthenaComputerSshAccess({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerSshAccess | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-ssh-access', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerSshAccess({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: 5 * 60_000,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n"],"names":[],"mappings":";;;;AAoBO,MAAM,8BAA8B,CAAC,cAAc,mBAAmB;AAGtE,MAAM,6BAA6B;AAE1C,MAAM,wCAA6C,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAGhF,SAAS,eAAe,cAAsB,OAAuB;AACnE,QAAM,SAAU,MAA+B;AAC/C,MAAI,OAAO,WAAW,YAAY,kBAAkB,IAAI,MAAM,EAAG,QAAO;AACxE,SAAO,eAAe;AACxB;AAeO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA,UAAU;AAAA,EACV,oBAAoB;AACtB,GAA8E;AAC5E,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,GAAG,6BAA6B,YAAY,GAAG,UAAU,QAAQ;AAAA;AAAA;AAAA,MAG5E,SAAS,CAAC,EAAE,OAAA,MACV,sBAAsB;AAAA,QACpB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,UAAU,YAAY;AAAA,QACtB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,aAAa,QAAQ,SAAS,SAAS,KAAK,WAAW,SAAS;AAAA,MACpF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAQO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,UAAU;AACZ,GAGwD;AACtD,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,mBAAmB,YAAY,GAAG,UAAU,OAAO;AAAA,MAC5E,SAAS,CAAC,EAAE,OAAA,MACV,2BAA2B;AAAA,QACzB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAOO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA,UAAU;AACZ,GAGoD;AAClD,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,uBAAuB,YAAY,GAAG,UAAU,OAAO;AAAA,MAChF,SAAS,CAAC,EAAE,OAAA,MACV,uBAAuB;AAAA,QACrB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW,IAAI;AAAA,MACf,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const WorkbenchLayoutContext = react.createContext(null);
5
+ function useWorkbenchLayout() {
6
+ return react.useContext(WorkbenchLayoutContext);
7
+ }
8
+ exports.WorkbenchLayoutContext = WorkbenchLayoutContext;
9
+ exports.useWorkbenchLayout = useWorkbenchLayout;
10
+ //# sourceMappingURL=workbench-layout-context.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-layout-context.cjs","sources":["../../src/workbench/workbench-layout-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand\n * column: whether that column is collapsed to a rail or maximized over the\n * chat (the layout owns its width), and that the open assets render inside\n * the workbench (as its \"Open assets\" tab) instead of in a column of their own.\n */\nexport interface WorkbenchLayoutState {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n /** The column fills the layout and the chat is hidden until it is restored. */\n maximized: boolean;\n setMaximized: (maximized: boolean) => void;\n hostsAssetPanel: boolean;\n}\n\nexport const WorkbenchLayoutContext = createContext<WorkbenchLayoutState | null>(null);\n\n/** The hosting layout's state, or `null` for a workbench the host placed itself. */\nexport function useWorkbenchLayout(): WorkbenchLayoutState | null {\n return useContext(WorkbenchLayoutContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;AAiBO,MAAM,yBAAyBA,MAAAA,cAA2C,IAAI;AAG9E,SAAS,qBAAkD;AAChE,SAAOC,MAAAA,WAAW,sBAAsB;AAC1C;;;"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand
3
+ * column: whether that column is collapsed to a rail or maximized over the
4
+ * chat (the layout owns its width), and that the open assets render inside
5
+ * the workbench (as its "Open assets" tab) instead of in a column of their own.
6
+ */
7
+ export interface WorkbenchLayoutState {
8
+ collapsed: boolean;
9
+ setCollapsed: (collapsed: boolean) => void;
10
+ /** The column fills the layout and the chat is hidden until it is restored. */
11
+ maximized: boolean;
12
+ setMaximized: (maximized: boolean) => void;
13
+ hostsAssetPanel: boolean;
14
+ }
15
+ export declare const WorkbenchLayoutContext: import("react").Context<WorkbenchLayoutState | null>;
16
+ /** The hosting layout's state, or `null` for a workbench the host placed itself. */
17
+ export declare function useWorkbenchLayout(): WorkbenchLayoutState | null;
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from "react";
2
+ const WorkbenchLayoutContext = createContext(null);
3
+ function useWorkbenchLayout() {
4
+ return useContext(WorkbenchLayoutContext);
5
+ }
6
+ export {
7
+ WorkbenchLayoutContext,
8
+ useWorkbenchLayout
9
+ };
10
+ //# sourceMappingURL=workbench-layout-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-layout-context.js","sources":["../../src/workbench/workbench-layout-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand\n * column: whether that column is collapsed to a rail or maximized over the\n * chat (the layout owns its width), and that the open assets render inside\n * the workbench (as its \"Open assets\" tab) instead of in a column of their own.\n */\nexport interface WorkbenchLayoutState {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n /** The column fills the layout and the chat is hidden until it is restored. */\n maximized: boolean;\n setMaximized: (maximized: boolean) => void;\n hostsAssetPanel: boolean;\n}\n\nexport const WorkbenchLayoutContext = createContext<WorkbenchLayoutState | null>(null);\n\n/** The hosting layout's state, or `null` for a workbench the host placed itself. */\nexport function useWorkbenchLayout(): WorkbenchLayoutState | null {\n return useContext(WorkbenchLayoutContext);\n}\n"],"names":[],"mappings":";AAiBO,MAAM,yBAAyB,cAA2C,IAAI;AAG9E,SAAS,qBAAkD;AAChE,SAAO,WAAW,sBAAsB;AAC1C;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@athenaintel/react",
3
- "version": "0.28.1",
3
+ "version": "0.32.0",
4
4
  "description": "Athena React SDK — Build AI-powered chat applications with the Athena platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -48,6 +48,16 @@
48
48
  "import": "./dist/chat/super-grouping/index.js",
49
49
  "require": "./dist/chat/super-grouping/index.cjs"
50
50
  },
51
+ "./owner-document": {
52
+ "types": "./dist/lib/owner-document.d.ts",
53
+ "import": "./dist/lib/owner-document.js",
54
+ "require": "./dist/lib/owner-document.cjs"
55
+ },
56
+ "./sheet-range": {
57
+ "types": "./dist/sheet-range/index.d.ts",
58
+ "import": "./dist/sheet-range/index.js",
59
+ "require": "./dist/sheet-range/index.cjs"
60
+ },
51
61
  "./src/chat-ui/styles/theme.css": "./src/chat-ui/styles/theme.css",
52
62
  "./chat-ui/tailwind-preset": "./src/chat-ui/tailwind-preset.js"
53
63
  },
@@ -85,12 +95,13 @@
85
95
  }
86
96
  },
87
97
  "dependencies": {
88
- "@assistant-ui/core": "0.3.19",
89
- "@assistant-ui/react": "0.15.20",
90
- "@assistant-ui/react-markdown": "0.14.15",
91
- "@assistant-ui/react-statewire": "0.29.1",
92
- "@assistant-ui/store": "0.3.13",
93
- "@assistant-ui/tap": "0.9.17",
98
+ "@assistant-ui/core": "0.3.27",
99
+ "@assistant-ui/react": "0.15.28",
100
+ "@assistant-ui/react-langgraph": "0.14.34",
101
+ "@assistant-ui/react-markdown": "0.14.21",
102
+ "@assistant-ui/react-statewire": "0.30.0",
103
+ "@assistant-ui/store": "0.3.21",
104
+ "@assistant-ui/tap": "0.9.23",
94
105
  "@floating-ui/react": "^0.27.7",
95
106
  "@tailwindcss/typography": "^0.5.19",
96
107
  "@tanstack/react-query": "5.99.2",
@@ -109,14 +120,14 @@
109
120
  "@tiptap/starter-kit": "^3.31.3",
110
121
  "@tiptap/suggestion": "^3.31.3",
111
122
  "@y/websocket": "4.0.0-rc.2",
112
- "@y/y": "14.0.0-rc.28",
113
- "assistant-stream": "0.3.43",
123
+ "@y/y": "14.0.0-rc.29",
124
+ "assistant-stream": "0.3.50",
114
125
  "class-variance-authority": "^0.7.1",
115
126
  "cnfast": "0.0.8",
116
127
  "lucide-react": "^0.575.0",
117
128
  "radix-ui": "^1.4.3",
118
129
  "remark-gfm": "^4.0.0",
119
- "statewire": "0.19.1",
130
+ "statewire": "0.20.0",
120
131
  "tiptap-markdown": "^0.9.0",
121
132
  "zustand": "^5.0.11"
122
133
  },
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("@assistant-ui/core/internal");
4
- const convertLangChainContentBlock = (part) => {
5
- var _a, _b;
6
- switch (part.type) {
7
- case "text":
8
- case "text_delta":
9
- return {
10
- type: "text",
11
- text: part.text
12
- };
13
- case "image_url": {
14
- const image = typeof part.image_url === "string" ? part.image_url : (_a = part.image_url) == null ? void 0 : _a.url;
15
- if (!image) return null;
16
- return {
17
- type: "image",
18
- image
19
- };
20
- }
21
- case "file":
22
- return {
23
- type: "file",
24
- filename: ((_b = part.metadata) == null ? void 0 : _b.filename) ?? "file",
25
- data: part.source_type === "url" ? part.url : part.source_type === "id" ? part.id : part.data,
26
- mimeType: part.mime_type ?? "application/octet-stream",
27
- ...(part.source_type === "url" || part.source_type === "id") && { sourceType: part.source_type }
28
- };
29
- case "audio": {
30
- const mimeType = part.mime_type ?? "application/octet-stream";
31
- const subtype = mimeType.startsWith("audio/") ? mimeType.slice(6) : void 0;
32
- return {
33
- type: "file",
34
- filename: subtype ? `audio.${subtype}` : "audio",
35
- data: part.data,
36
- mimeType
37
- };
38
- }
39
- case "thinking":
40
- return {
41
- type: "reasoning",
42
- text: part.thinking
43
- };
44
- case "reasoning":
45
- return {
46
- type: "reasoning",
47
- text: part.summary && part.summary.length > 0 ? part.summary.map((s) => (s == null ? void 0 : s.text) ?? "").join("\n\n\n") : part.reasoning ?? ""
48
- };
49
- case "tool_use":
50
- case "input_json_delta":
51
- return null;
52
- default:
53
- return;
54
- }
55
- };
56
- const hasVisibleText = (text) => typeof text === "string" && text.trim() !== "";
57
- const withAudioTranscript = (parts, additionalKwargs) => {
58
- var _a;
59
- const transcript = (_a = additionalKwargs == null ? void 0 : additionalKwargs.audio) == null ? void 0 : _a.transcript;
60
- if (typeof transcript !== "string" || !hasVisibleText(transcript)) return parts;
61
- if (parts.some((part) => part.type === "text" && hasVisibleText(part.text))) return parts;
62
- return [...parts.filter((part) => part.type !== "text"), {
63
- type: "text",
64
- text: transcript
65
- }];
66
- };
67
- const getCustomMetadata = (additionalKwargs) => (additionalKwargs == null ? void 0 : additionalKwargs.metadata) ?? {};
68
- const uiMessageToDataPart = (ui) => ({
69
- type: "data",
70
- name: ui.name,
71
- data: ui.props
72
- });
73
- exports.convertLangChainContentBlock = convertLangChainContentBlock;
74
- exports.getCustomMetadata = getCustomMetadata;
75
- exports.uiMessageToDataPart = uiMessageToDataPart;
76
- exports.withAudioTranscript = withAudioTranscript;
77
- //# sourceMappingURL=converter.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter.cjs","sources":["../../../../../../../node_modules/@assistant-ui/react-langchain/dist/converter.js"],"sourcesContent":["import { parseDataUrl, resolveFilePartSource } from \"@assistant-ui/core/internal\";\n//#region src/converter.ts\nconst convertLangChainContentBlock = (part) => {\n\tswitch (part.type) {\n\t\tcase \"text\":\n\t\tcase \"text_delta\": return {\n\t\t\ttype: \"text\",\n\t\t\ttext: part.text\n\t\t};\n\t\tcase \"image_url\": {\n\t\t\tconst image = typeof part.image_url === \"string\" ? part.image_url : part.image_url?.url;\n\t\t\tif (!image) return null;\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\timage\n\t\t\t};\n\t\t}\n\t\tcase \"file\": return {\n\t\t\ttype: \"file\",\n\t\t\tfilename: part.metadata?.filename ?? \"file\",\n\t\t\tdata: part.source_type === \"url\" ? part.url : part.source_type === \"id\" ? part.id : part.data,\n\t\t\tmimeType: part.mime_type ?? \"application/octet-stream\",\n\t\t\t...(part.source_type === \"url\" || part.source_type === \"id\") && { sourceType: part.source_type }\n\t\t};\n\t\tcase \"audio\": {\n\t\t\tconst mimeType = part.mime_type ?? \"application/octet-stream\";\n\t\t\tconst subtype = mimeType.startsWith(\"audio/\") ? mimeType.slice(6) : void 0;\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tfilename: subtype ? `audio.${subtype}` : \"audio\",\n\t\t\t\tdata: part.data,\n\t\t\t\tmimeType\n\t\t\t};\n\t\t}\n\t\tcase \"thinking\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.thinking\n\t\t};\n\t\tcase \"reasoning\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.summary && part.summary.length > 0 ? part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\") : part.reasoning ?? \"\"\n\t\t};\n\t\tcase \"tool_use\":\n\t\tcase \"input_json_delta\": return null;\n\t\tdefault: return;\n\t}\n};\nconst hasVisibleText = (text) => typeof text === \"string\" && text.trim() !== \"\";\n/**\n* Audio output arrives outside the content array: providers leave `content`\n* empty and put the spoken text in `additional_kwargs.audio.transcript`. The\n* audio bytes stay behind because no provider reports their media type, and a\n* streamed response carries raw PCM rather than a playable file.\n*/\nconst withAudioTranscript = (parts, additionalKwargs) => {\n\tconst transcript = (additionalKwargs?.audio)?.transcript;\n\tif (typeof transcript !== \"string\" || !hasVisibleText(transcript)) return parts;\n\tif (parts.some((part) => part.type === \"text\" && hasVisibleText(part.text))) return parts;\n\treturn [...parts.filter((part) => part.type !== \"text\"), {\n\t\ttype: \"text\",\n\t\ttext: transcript\n\t}];\n};\nconst getCustomMetadata = (additionalKwargs) => additionalKwargs?.metadata ?? {};\nconst uiMessageToDataPart = (ui) => ({\n\ttype: \"data\",\n\tname: ui.name,\n\tdata: ui.props\n});\n/**\n* Audio media types that reach a provider's audio input through the LangChain\n* `audio` block. langchain-core derives OpenAI's `input_audio.format` by\n* splitting `mime_type` on `/`, and that format is a wav-or-mp3 enum, so\n* `audio/mpeg` passes the converter and is rejected at the provider.\n*/\nconst audioBlockMimeTypes = /* @__PURE__ */ new Map([\n\t[\"audio/mp3\", \"audio/mp3\"],\n\t[\"audio/mpeg\", \"audio/mp3\"],\n\t[\"audio/wav\", \"audio/wav\"],\n\t[\"audio/wave\", \"audio/wav\"],\n\t[\"audio/x-wav\", \"audio/wav\"]\n]);\nconst getMessageContent = (msg) => {\n\tconst allContent = [...msg.content, ...msg.attachments?.flatMap((a) => a.content) ?? []];\n\tconst hasNonText = allContent.some((part) => part.type === \"file\" || part.type === \"image\" || part.type === \"audio\");\n\tconst hasText = allContent.some((part) => part.type === \"text\");\n\tif (hasNonText && !hasText) allContent.unshift({\n\t\ttype: \"text\",\n\t\ttext: \" \"\n\t});\n\tconst content = allContent.flatMap((part) => {\n\t\tconst type = part.type;\n\t\tswitch (type) {\n\t\t\tcase \"text\": return {\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: part.text\n\t\t\t};\n\t\t\tcase \"image\": return {\n\t\t\t\ttype: \"image_url\",\n\t\t\t\timage_url: { url: part.image }\n\t\t\t};\n\t\t\tcase \"file\": {\n\t\t\t\tconst metadata = { filename: part.filename ?? \"file\" };\n\t\t\t\tif (part.sourceType === \"id\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid: part.data,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"id\"\n\t\t\t\t};\n\t\t\t\tconst source = resolveFilePartSource(part);\n\t\t\t\tif (source.kind === \"url\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\turl: source.url,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"url\"\n\t\t\t\t};\n\t\t\t\tconst audioMimeType = audioBlockMimeTypes.get(source.mimeType.toLowerCase());\n\t\t\t\tif (audioMimeType) return {\n\t\t\t\t\ttype: \"audio\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: audioMimeType,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: source.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"audio\": return {\n\t\t\t\ttype: \"audio\",\n\t\t\t\tdata: parseDataUrl(part.audio.data)?.data ?? part.audio.data,\n\t\t\t\tmime_type: `audio/${part.audio.format}`,\n\t\t\t\tsource_type: \"base64\"\n\t\t\t};\n\t\t\tcase \"data\": return [];\n\t\t\tcase \"tool-call\": throw new Error(\"Tool call appends are not supported.\");\n\t\t\tdefault: throw new Error(`Unsupported append message part type: ${type}`);\n\t\t}\n\t});\n\tif (content.length === 1 && content[0]?.type === \"text\") return content[0].text ?? \"\";\n\treturn content;\n};\nconst reasoningTextLength = (part) => {\n\tif (part.summary && part.summary.length > 0) return part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\").length;\n\treturn part.reasoning?.length ?? 0;\n};\nconst createLangChainStreamingTimingAccessors = (getType) => {\n\tconst findAiMessage = (messages, messageId) => messages.find((message) => getType(message) === \"ai\" && message.id === messageId);\n\tconst getTextLength = (messages, messageId) => {\n\t\tconst message = findAiMessage(messages, messageId);\n\t\tif (!message) return 0;\n\t\tconst content = message.content;\n\t\tif (typeof content === \"string\") return content.length;\n\t\tif (!Array.isArray(content)) return 0;\n\t\tlet len = 0;\n\t\tfor (const part of content) switch (part.type) {\n\t\t\tcase \"text\":\n\t\t\tcase \"text_delta\":\n\t\t\t\tif (typeof part.text === \"string\") len += part.text.length;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\":\n\t\t\t\tif (typeof part.thinking === \"string\") len += part.thinking.length;\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning\": len += reasoningTextLength(part);\n\t\t}\n\t\treturn len;\n\t};\n\tconst getToolCallCount = (messages, messageId) => findAiMessage(messages, messageId)?.tool_calls?.length ?? 0;\n\tconst getAssistantMessageId = (messages) => {\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst message = messages[i];\n\t\t\tif (message && getType(message) === \"ai\" && message.id) return message.id;\n\t\t}\n\t};\n\treturn {\n\t\tgetAssistantMessageId,\n\t\tgetTextLength,\n\t\tgetToolCallCount\n\t};\n};\n/**\n* Resolve the assistant message a `UIMessage` belongs to: the parent id comes\n* from `metadata.message_id` (Python SDK) or `metadata.id` (JS SDK).\n*/\nconst getUIMessageParentId = (ui) => ui.metadata?.message_id ?? ui.metadata?.id;\n/**\n* Group the graph's accumulated `UIMessage`s by the assistant message they\n* belong to. Non-array state and entries without a parent link are dropped.\n*/\nconst groupUIMessagesByParent = (value) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tif (!Array.isArray(value)) return map;\n\tfor (const ui of value) {\n\t\tconst parentId = getUIMessageParentId(ui);\n\t\tif (!parentId) continue;\n\t\tconst existing = map.get(parentId);\n\t\tif (existing) existing.push(ui);\n\t\telse map.set(parentId, [ui]);\n\t}\n\treturn map;\n};\n//#endregion\nexport { convertLangChainContentBlock, createLangChainStreamingTimingAccessors, getCustomMetadata, getMessageContent, getUIMessageParentId, groupUIMessagesByParent, uiMessageToDataPart, withAudioTranscript };\n\n//# sourceMappingURL=converter.js.map"],"names":[],"mappings":";;;AAEK,MAAC,+BAA+B,CAAC,SAAS;;AAC9C,UAAQ,KAAK,MAAI;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAc,aAAO;AAAA,QACzB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK,aAAa;AACjB,YAAM,QAAQ,OAAO,KAAK,cAAc,WAAW,KAAK,aAAY,UAAK,cAAL,mBAAgB;AACpF,UAAI,CAAC,MAAO,QAAO;AACnB,aAAO;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAQ,aAAO;AAAA,QACnB,MAAM;AAAA,QACN,YAAU,UAAK,aAAL,mBAAe,aAAY;AAAA,QACrC,MAAM,KAAK,gBAAgB,QAAQ,KAAK,MAAM,KAAK,gBAAgB,OAAO,KAAK,KAAK,KAAK;AAAA,QACzF,UAAU,KAAK,aAAa;AAAA,QAC5B,IAAI,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,SAAS,EAAE,YAAY,KAAK,YAAW;AAAA,MACjG;AAAA,IACE,KAAK,SAAS;AACb,YAAM,WAAW,KAAK,aAAa;AACnC,YAAM,UAAU,SAAS,WAAW,QAAQ,IAAI,SAAS,MAAM,CAAC,IAAI;AACpE,aAAO;AAAA,QACN,MAAM;AAAA,QACN,UAAU,UAAU,SAAS,OAAO,KAAK;AAAA,QACzC,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAY,aAAO;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK;AAAa,aAAO;AAAA,QACxB,MAAM;AAAA,QACN,MAAM,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAM,uBAAG,SAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,KAAK,aAAa;AAAA,MAC7H;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAoB,aAAO;AAAA,IAChC;AAAS;AAAA,EACX;AACA;AACA,MAAM,iBAAiB,CAAC,SAAS,OAAO,SAAS,YAAY,KAAK,KAAI,MAAO;AAOxE,MAAC,sBAAsB,CAAC,OAAO,qBAAqB;;AACxD,QAAM,cAAc,0DAAkB,UAAlB,mBAA0B;AAC9C,MAAI,OAAO,eAAe,YAAY,CAAC,eAAe,UAAU,EAAG,QAAO;AAC1E,MAAI,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,UAAU,eAAe,KAAK,IAAI,CAAC,EAAG,QAAO;AACpF,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,GAAG;AAAA,IACxD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAE;AACF;AACK,MAAC,oBAAoB,CAAC,sBAAqB,qDAAkB,aAAY,CAAA;AACzE,MAAC,sBAAsB,CAAC,QAAQ;AAAA,EACpC,MAAM;AAAA,EACN,MAAM,GAAG;AAAA,EACT,MAAM,GAAG;AACV;;;;;","x_google_ignoreList":[0]}
@@ -1,77 +0,0 @@
1
- import "@assistant-ui/core/internal";
2
- const convertLangChainContentBlock = (part) => {
3
- var _a, _b;
4
- switch (part.type) {
5
- case "text":
6
- case "text_delta":
7
- return {
8
- type: "text",
9
- text: part.text
10
- };
11
- case "image_url": {
12
- const image = typeof part.image_url === "string" ? part.image_url : (_a = part.image_url) == null ? void 0 : _a.url;
13
- if (!image) return null;
14
- return {
15
- type: "image",
16
- image
17
- };
18
- }
19
- case "file":
20
- return {
21
- type: "file",
22
- filename: ((_b = part.metadata) == null ? void 0 : _b.filename) ?? "file",
23
- data: part.source_type === "url" ? part.url : part.source_type === "id" ? part.id : part.data,
24
- mimeType: part.mime_type ?? "application/octet-stream",
25
- ...(part.source_type === "url" || part.source_type === "id") && { sourceType: part.source_type }
26
- };
27
- case "audio": {
28
- const mimeType = part.mime_type ?? "application/octet-stream";
29
- const subtype = mimeType.startsWith("audio/") ? mimeType.slice(6) : void 0;
30
- return {
31
- type: "file",
32
- filename: subtype ? `audio.${subtype}` : "audio",
33
- data: part.data,
34
- mimeType
35
- };
36
- }
37
- case "thinking":
38
- return {
39
- type: "reasoning",
40
- text: part.thinking
41
- };
42
- case "reasoning":
43
- return {
44
- type: "reasoning",
45
- text: part.summary && part.summary.length > 0 ? part.summary.map((s) => (s == null ? void 0 : s.text) ?? "").join("\n\n\n") : part.reasoning ?? ""
46
- };
47
- case "tool_use":
48
- case "input_json_delta":
49
- return null;
50
- default:
51
- return;
52
- }
53
- };
54
- const hasVisibleText = (text) => typeof text === "string" && text.trim() !== "";
55
- const withAudioTranscript = (parts, additionalKwargs) => {
56
- var _a;
57
- const transcript = (_a = additionalKwargs == null ? void 0 : additionalKwargs.audio) == null ? void 0 : _a.transcript;
58
- if (typeof transcript !== "string" || !hasVisibleText(transcript)) return parts;
59
- if (parts.some((part) => part.type === "text" && hasVisibleText(part.text))) return parts;
60
- return [...parts.filter((part) => part.type !== "text"), {
61
- type: "text",
62
- text: transcript
63
- }];
64
- };
65
- const getCustomMetadata = (additionalKwargs) => (additionalKwargs == null ? void 0 : additionalKwargs.metadata) ?? {};
66
- const uiMessageToDataPart = (ui) => ({
67
- type: "data",
68
- name: ui.name,
69
- data: ui.props
70
- });
71
- export {
72
- convertLangChainContentBlock,
73
- getCustomMetadata,
74
- uiMessageToDataPart,
75
- withAudioTranscript
76
- };
77
- //# sourceMappingURL=converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter.js","sources":["../../../../../../../node_modules/@assistant-ui/react-langchain/dist/converter.js"],"sourcesContent":["import { parseDataUrl, resolveFilePartSource } from \"@assistant-ui/core/internal\";\n//#region src/converter.ts\nconst convertLangChainContentBlock = (part) => {\n\tswitch (part.type) {\n\t\tcase \"text\":\n\t\tcase \"text_delta\": return {\n\t\t\ttype: \"text\",\n\t\t\ttext: part.text\n\t\t};\n\t\tcase \"image_url\": {\n\t\t\tconst image = typeof part.image_url === \"string\" ? part.image_url : part.image_url?.url;\n\t\t\tif (!image) return null;\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\timage\n\t\t\t};\n\t\t}\n\t\tcase \"file\": return {\n\t\t\ttype: \"file\",\n\t\t\tfilename: part.metadata?.filename ?? \"file\",\n\t\t\tdata: part.source_type === \"url\" ? part.url : part.source_type === \"id\" ? part.id : part.data,\n\t\t\tmimeType: part.mime_type ?? \"application/octet-stream\",\n\t\t\t...(part.source_type === \"url\" || part.source_type === \"id\") && { sourceType: part.source_type }\n\t\t};\n\t\tcase \"audio\": {\n\t\t\tconst mimeType = part.mime_type ?? \"application/octet-stream\";\n\t\t\tconst subtype = mimeType.startsWith(\"audio/\") ? mimeType.slice(6) : void 0;\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tfilename: subtype ? `audio.${subtype}` : \"audio\",\n\t\t\t\tdata: part.data,\n\t\t\t\tmimeType\n\t\t\t};\n\t\t}\n\t\tcase \"thinking\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.thinking\n\t\t};\n\t\tcase \"reasoning\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.summary && part.summary.length > 0 ? part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\") : part.reasoning ?? \"\"\n\t\t};\n\t\tcase \"tool_use\":\n\t\tcase \"input_json_delta\": return null;\n\t\tdefault: return;\n\t}\n};\nconst hasVisibleText = (text) => typeof text === \"string\" && text.trim() !== \"\";\n/**\n* Audio output arrives outside the content array: providers leave `content`\n* empty and put the spoken text in `additional_kwargs.audio.transcript`. The\n* audio bytes stay behind because no provider reports their media type, and a\n* streamed response carries raw PCM rather than a playable file.\n*/\nconst withAudioTranscript = (parts, additionalKwargs) => {\n\tconst transcript = (additionalKwargs?.audio)?.transcript;\n\tif (typeof transcript !== \"string\" || !hasVisibleText(transcript)) return parts;\n\tif (parts.some((part) => part.type === \"text\" && hasVisibleText(part.text))) return parts;\n\treturn [...parts.filter((part) => part.type !== \"text\"), {\n\t\ttype: \"text\",\n\t\ttext: transcript\n\t}];\n};\nconst getCustomMetadata = (additionalKwargs) => additionalKwargs?.metadata ?? {};\nconst uiMessageToDataPart = (ui) => ({\n\ttype: \"data\",\n\tname: ui.name,\n\tdata: ui.props\n});\n/**\n* Audio media types that reach a provider's audio input through the LangChain\n* `audio` block. langchain-core derives OpenAI's `input_audio.format` by\n* splitting `mime_type` on `/`, and that format is a wav-or-mp3 enum, so\n* `audio/mpeg` passes the converter and is rejected at the provider.\n*/\nconst audioBlockMimeTypes = /* @__PURE__ */ new Map([\n\t[\"audio/mp3\", \"audio/mp3\"],\n\t[\"audio/mpeg\", \"audio/mp3\"],\n\t[\"audio/wav\", \"audio/wav\"],\n\t[\"audio/wave\", \"audio/wav\"],\n\t[\"audio/x-wav\", \"audio/wav\"]\n]);\nconst getMessageContent = (msg) => {\n\tconst allContent = [...msg.content, ...msg.attachments?.flatMap((a) => a.content) ?? []];\n\tconst hasNonText = allContent.some((part) => part.type === \"file\" || part.type === \"image\" || part.type === \"audio\");\n\tconst hasText = allContent.some((part) => part.type === \"text\");\n\tif (hasNonText && !hasText) allContent.unshift({\n\t\ttype: \"text\",\n\t\ttext: \" \"\n\t});\n\tconst content = allContent.flatMap((part) => {\n\t\tconst type = part.type;\n\t\tswitch (type) {\n\t\t\tcase \"text\": return {\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: part.text\n\t\t\t};\n\t\t\tcase \"image\": return {\n\t\t\t\ttype: \"image_url\",\n\t\t\t\timage_url: { url: part.image }\n\t\t\t};\n\t\t\tcase \"file\": {\n\t\t\t\tconst metadata = { filename: part.filename ?? \"file\" };\n\t\t\t\tif (part.sourceType === \"id\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid: part.data,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"id\"\n\t\t\t\t};\n\t\t\t\tconst source = resolveFilePartSource(part);\n\t\t\t\tif (source.kind === \"url\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\turl: source.url,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"url\"\n\t\t\t\t};\n\t\t\t\tconst audioMimeType = audioBlockMimeTypes.get(source.mimeType.toLowerCase());\n\t\t\t\tif (audioMimeType) return {\n\t\t\t\t\ttype: \"audio\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: audioMimeType,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: source.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"audio\": return {\n\t\t\t\ttype: \"audio\",\n\t\t\t\tdata: parseDataUrl(part.audio.data)?.data ?? part.audio.data,\n\t\t\t\tmime_type: `audio/${part.audio.format}`,\n\t\t\t\tsource_type: \"base64\"\n\t\t\t};\n\t\t\tcase \"data\": return [];\n\t\t\tcase \"tool-call\": throw new Error(\"Tool call appends are not supported.\");\n\t\t\tdefault: throw new Error(`Unsupported append message part type: ${type}`);\n\t\t}\n\t});\n\tif (content.length === 1 && content[0]?.type === \"text\") return content[0].text ?? \"\";\n\treturn content;\n};\nconst reasoningTextLength = (part) => {\n\tif (part.summary && part.summary.length > 0) return part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\").length;\n\treturn part.reasoning?.length ?? 0;\n};\nconst createLangChainStreamingTimingAccessors = (getType) => {\n\tconst findAiMessage = (messages, messageId) => messages.find((message) => getType(message) === \"ai\" && message.id === messageId);\n\tconst getTextLength = (messages, messageId) => {\n\t\tconst message = findAiMessage(messages, messageId);\n\t\tif (!message) return 0;\n\t\tconst content = message.content;\n\t\tif (typeof content === \"string\") return content.length;\n\t\tif (!Array.isArray(content)) return 0;\n\t\tlet len = 0;\n\t\tfor (const part of content) switch (part.type) {\n\t\t\tcase \"text\":\n\t\t\tcase \"text_delta\":\n\t\t\t\tif (typeof part.text === \"string\") len += part.text.length;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\":\n\t\t\t\tif (typeof part.thinking === \"string\") len += part.thinking.length;\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning\": len += reasoningTextLength(part);\n\t\t}\n\t\treturn len;\n\t};\n\tconst getToolCallCount = (messages, messageId) => findAiMessage(messages, messageId)?.tool_calls?.length ?? 0;\n\tconst getAssistantMessageId = (messages) => {\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst message = messages[i];\n\t\t\tif (message && getType(message) === \"ai\" && message.id) return message.id;\n\t\t}\n\t};\n\treturn {\n\t\tgetAssistantMessageId,\n\t\tgetTextLength,\n\t\tgetToolCallCount\n\t};\n};\n/**\n* Resolve the assistant message a `UIMessage` belongs to: the parent id comes\n* from `metadata.message_id` (Python SDK) or `metadata.id` (JS SDK).\n*/\nconst getUIMessageParentId = (ui) => ui.metadata?.message_id ?? ui.metadata?.id;\n/**\n* Group the graph's accumulated `UIMessage`s by the assistant message they\n* belong to. Non-array state and entries without a parent link are dropped.\n*/\nconst groupUIMessagesByParent = (value) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tif (!Array.isArray(value)) return map;\n\tfor (const ui of value) {\n\t\tconst parentId = getUIMessageParentId(ui);\n\t\tif (!parentId) continue;\n\t\tconst existing = map.get(parentId);\n\t\tif (existing) existing.push(ui);\n\t\telse map.set(parentId, [ui]);\n\t}\n\treturn map;\n};\n//#endregion\nexport { convertLangChainContentBlock, createLangChainStreamingTimingAccessors, getCustomMetadata, getMessageContent, getUIMessageParentId, groupUIMessagesByParent, uiMessageToDataPart, withAudioTranscript };\n\n//# sourceMappingURL=converter.js.map"],"names":[],"mappings":";AAEK,MAAC,+BAA+B,CAAC,SAAS;;AAC9C,UAAQ,KAAK,MAAI;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAc,aAAO;AAAA,QACzB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK,aAAa;AACjB,YAAM,QAAQ,OAAO,KAAK,cAAc,WAAW,KAAK,aAAY,UAAK,cAAL,mBAAgB;AACpF,UAAI,CAAC,MAAO,QAAO;AACnB,aAAO;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAQ,aAAO;AAAA,QACnB,MAAM;AAAA,QACN,YAAU,UAAK,aAAL,mBAAe,aAAY;AAAA,QACrC,MAAM,KAAK,gBAAgB,QAAQ,KAAK,MAAM,KAAK,gBAAgB,OAAO,KAAK,KAAK,KAAK;AAAA,QACzF,UAAU,KAAK,aAAa;AAAA,QAC5B,IAAI,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,SAAS,EAAE,YAAY,KAAK,YAAW;AAAA,MACjG;AAAA,IACE,KAAK,SAAS;AACb,YAAM,WAAW,KAAK,aAAa;AACnC,YAAM,UAAU,SAAS,WAAW,QAAQ,IAAI,SAAS,MAAM,CAAC,IAAI;AACpE,aAAO;AAAA,QACN,MAAM;AAAA,QACN,UAAU,UAAU,SAAS,OAAO,KAAK;AAAA,QACzC,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAY,aAAO;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK;AAAa,aAAO;AAAA,QACxB,MAAM;AAAA,QACN,MAAM,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAM,uBAAG,SAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,KAAK,aAAa;AAAA,MAC7H;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAoB,aAAO;AAAA,IAChC;AAAS;AAAA,EACX;AACA;AACA,MAAM,iBAAiB,CAAC,SAAS,OAAO,SAAS,YAAY,KAAK,KAAI,MAAO;AAOxE,MAAC,sBAAsB,CAAC,OAAO,qBAAqB;;AACxD,QAAM,cAAc,0DAAkB,UAAlB,mBAA0B;AAC9C,MAAI,OAAO,eAAe,YAAY,CAAC,eAAe,UAAU,EAAG,QAAO;AAC1E,MAAI,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,UAAU,eAAe,KAAK,IAAI,CAAC,EAAG,QAAO;AACpF,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,GAAG;AAAA,IACxD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAE;AACF;AACK,MAAC,oBAAoB,CAAC,sBAAqB,qDAAkB,aAAY,CAAA;AACzE,MAAC,sBAAsB,CAAC,QAAQ;AAAA,EACpC,MAAM;AAAA,EACN,MAAM,GAAG;AAAA,EACT,MAAM,GAAG;AACV;","x_google_ignoreList":[0]}