@athenaintel/react 0.19.0 → 0.20.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 (857) hide show
  1. package/README.md +97 -11
  2. package/dist/assets/AssetPanel.cjs +277 -0
  3. package/dist/assets/AssetPanel.cjs.map +1 -0
  4. package/dist/assets/AssetPanel.js +277 -0
  5. package/dist/assets/AssetPanel.js.map +1 -0
  6. package/dist/assets/AthenaAssetEmbed.cjs +151 -0
  7. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -0
  8. package/dist/assets/AthenaAssetEmbed.js +151 -0
  9. package/dist/assets/AthenaAssetEmbed.js.map +1 -0
  10. package/dist/assets/AthenaLayout.cjs +69 -0
  11. package/dist/assets/AthenaLayout.cjs.map +1 -0
  12. package/dist/assets/AthenaLayout.js +69 -0
  13. package/dist/assets/AthenaLayout.js.map +1 -0
  14. package/dist/assets/asset-embed-messages.cjs +39 -0
  15. package/dist/assets/asset-embed-messages.cjs.map +1 -0
  16. package/dist/assets/asset-embed-messages.js +39 -0
  17. package/dist/assets/asset-embed-messages.js.map +1 -0
  18. package/dist/assets/asset-panel-store.cjs +124 -0
  19. package/dist/assets/asset-panel-store.cjs.map +1 -0
  20. package/dist/assets/asset-panel-store.js +124 -0
  21. package/dist/assets/asset-panel-store.js.map +1 -0
  22. package/dist/assets/asset-panel-url.cjs +40 -0
  23. package/dist/assets/asset-panel-url.cjs.map +1 -0
  24. package/dist/assets/asset-panel-url.js +40 -0
  25. package/dist/assets/asset-panel-url.js.map +1 -0
  26. package/dist/assets/use-asset-embed.cjs +362 -0
  27. package/dist/assets/use-asset-embed.cjs.map +1 -0
  28. package/dist/assets/use-asset-embed.js +362 -0
  29. package/dist/assets/use-asset-embed.js.map +1 -0
  30. package/dist/{AthenaAuthContext-B3AwLA5Z.cjs → auth/AthenaAuthContext.cjs} +5 -4
  31. package/dist/auth/AthenaAuthContext.cjs.map +1 -0
  32. package/dist/{AthenaAuthContext-DQsdayH2.js → auth/AthenaAuthContext.js} +3 -3
  33. package/dist/auth/AthenaAuthContext.js.map +1 -0
  34. package/dist/auth/AthenaAuthProvider.cjs +141 -0
  35. package/dist/auth/AthenaAuthProvider.cjs.map +1 -0
  36. package/dist/auth/AthenaAuthProvider.js +141 -0
  37. package/dist/auth/AthenaAuthProvider.js.map +1 -0
  38. package/dist/{auth.cjs → auth/AthenaSSOProvider.cjs} +14 -151
  39. package/dist/auth/AthenaSSOProvider.cjs.map +1 -0
  40. package/dist/{auth.js → auth/AthenaSSOProvider.js} +4 -142
  41. package/dist/auth/AthenaSSOProvider.js.map +1 -0
  42. package/dist/auth/index.cjs +10 -0
  43. package/dist/auth/index.cjs.map +1 -0
  44. package/dist/auth/index.js +10 -0
  45. package/dist/auth/index.js.map +1 -0
  46. package/dist/chat/AthenaChat.cjs +753 -0
  47. package/dist/chat/AthenaChat.cjs.map +1 -0
  48. package/dist/chat/AthenaChat.d.ts +3 -2
  49. package/dist/chat/AthenaChat.js +753 -0
  50. package/dist/chat/AthenaChat.js.map +1 -0
  51. package/dist/chat/AthenaChatErrorBoundary.cjs +53 -0
  52. package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -0
  53. package/dist/chat/AthenaChatErrorBoundary.js +53 -0
  54. package/dist/chat/AthenaChatErrorBoundary.js.map +1 -0
  55. package/dist/chat/StatewireApprovalCard.cjs +171 -0
  56. package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
  57. package/dist/chat/StatewireApprovalCard.js +171 -0
  58. package/dist/chat/StatewireApprovalCard.js.map +1 -0
  59. package/dist/chat/StatewireClientToolBridge.cjs +50 -0
  60. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
  61. package/dist/chat/StatewireClientToolBridge.js +50 -0
  62. package/dist/chat/StatewireClientToolBridge.js.map +1 -0
  63. package/dist/chat/StatewireQueuedMessages.cjs +432 -0
  64. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
  65. package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
  66. package/dist/chat/StatewireQueuedMessages.js +432 -0
  67. package/dist/chat/StatewireQueuedMessages.js.map +1 -0
  68. package/dist/chat/athena-citation-links.cjs +326 -0
  69. package/dist/chat/athena-citation-links.cjs.map +1 -0
  70. package/dist/chat/athena-citation-links.js +326 -0
  71. package/dist/chat/athena-citation-links.js.map +1 -0
  72. package/dist/chat/run-activity.cjs +28 -0
  73. package/dist/chat/run-activity.cjs.map +1 -0
  74. package/dist/chat/run-activity.js +28 -0
  75. package/dist/chat/run-activity.js.map +1 -0
  76. package/dist/chat/statewire-banners.cjs +83 -0
  77. package/dist/chat/statewire-banners.cjs.map +1 -0
  78. package/dist/chat/statewire-banners.js +83 -0
  79. package/dist/chat/statewire-banners.js.map +1 -0
  80. package/dist/chat/statewire-client-tools.cjs +73 -0
  81. package/dist/chat/statewire-client-tools.cjs.map +1 -0
  82. package/dist/chat/statewire-client-tools.js +73 -0
  83. package/dist/chat/statewire-client-tools.js.map +1 -0
  84. package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
  85. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
  86. package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
  87. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
  88. package/dist/chat/super-grouping/SuperGroupingCard.cjs +361 -0
  89. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
  90. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +4 -1
  91. package/dist/chat/super-grouping/SuperGroupingCard.js +361 -0
  92. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
  93. package/dist/chat/super-grouping/activity-timeline.cjs +151 -0
  94. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
  95. package/dist/chat/super-grouping/activity-timeline.d.ts +3 -3
  96. package/dist/chat/super-grouping/activity-timeline.js +151 -0
  97. package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
  98. package/dist/chat/super-grouping/grouping-function.cjs +55 -0
  99. package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
  100. package/dist/chat/super-grouping/grouping-function.js +55 -0
  101. package/dist/chat/super-grouping/grouping-function.js.map +1 -0
  102. package/dist/chat/super-grouping/index.cjs +26 -0
  103. package/dist/chat/super-grouping/index.cjs.map +1 -0
  104. package/dist/chat/super-grouping/index.js +26 -0
  105. package/dist/chat/super-grouping/index.js.map +1 -0
  106. package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
  107. package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
  108. package/dist/chat/super-grouping/toolkit-map.js +96 -0
  109. package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
  110. package/dist/chat/tiptap-text.cjs +101 -0
  111. package/dist/chat/tiptap-text.cjs.map +1 -0
  112. package/dist/chat/tiptap-text.js +101 -0
  113. package/dist/chat/tiptap-text.js.map +1 -0
  114. package/dist/chat/tooltip-icon-button.cjs +32 -0
  115. package/dist/chat/tooltip-icon-button.cjs.map +1 -0
  116. package/dist/chat/tooltip-icon-button.js +32 -0
  117. package/dist/chat/tooltip-icon-button.js.map +1 -0
  118. package/dist/chat/use-athena-run-live.cjs +23 -0
  119. package/dist/chat/use-athena-run-live.cjs.map +1 -0
  120. package/dist/chat/use-athena-run-live.d.ts +10 -0
  121. package/dist/chat/use-athena-run-live.js +23 -0
  122. package/dist/chat/use-athena-run-live.js.map +1 -0
  123. package/dist/chat/use-statewire-approval-request.cjs +46 -0
  124. package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
  125. package/dist/chat/use-statewire-approval-request.js +46 -0
  126. package/dist/chat/use-statewire-approval-request.js.map +1 -0
  127. package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
  128. package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
  129. package/dist/chat-ui/auth/sign-in-card.js +128 -0
  130. package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
  131. package/dist/chat-ui/composer/composer-action.cjs +11 -0
  132. package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
  133. package/dist/chat-ui/composer/composer-action.d.ts +5 -8
  134. package/dist/chat-ui/composer/composer-action.js +11 -0
  135. package/dist/chat-ui/composer/composer-action.js.map +1 -0
  136. package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
  137. package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
  138. package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
  139. package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
  140. package/dist/chat-ui/composer/tiptap-composer.cjs +590 -0
  141. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
  142. package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
  143. package/dist/chat-ui/composer/tiptap-composer.js +590 -0
  144. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
  145. package/dist/chat-ui/header/chat-header.cjs +33 -0
  146. package/dist/chat-ui/header/chat-header.cjs.map +1 -0
  147. package/dist/chat-ui/header/chat-header.js +33 -0
  148. package/dist/chat-ui/header/chat-header.js.map +1 -0
  149. package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
  150. package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
  151. package/dist/chat-ui/header/conversation-history-panel.js +369 -0
  152. package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
  153. package/dist/chat-ui/index.cjs +139 -0
  154. package/dist/chat-ui/index.cjs.map +1 -0
  155. package/dist/chat-ui/index.d.ts +4 -3
  156. package/dist/chat-ui/index.js +139 -0
  157. package/dist/chat-ui/index.js.map +1 -0
  158. package/dist/chat-ui/lib/asset-urls.cjs +18 -0
  159. package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
  160. package/dist/chat-ui/lib/asset-urls.js +18 -0
  161. package/dist/chat-ui/lib/asset-urls.js.map +1 -0
  162. package/dist/chat-ui/mentions/mention-chip.cjs +208 -0
  163. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
  164. package/dist/chat-ui/mentions/mention-chip.js +208 -0
  165. package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
  166. package/dist/chat-ui/mentions/mention-extension.cjs +184 -0
  167. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
  168. package/dist/chat-ui/mentions/mention-extension.d.ts +24 -2
  169. package/dist/chat-ui/mentions/mention-extension.js +184 -0
  170. package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
  171. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
  172. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
  173. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
  174. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
  175. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
  176. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
  177. package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
  178. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
  179. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
  180. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
  181. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
  182. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
  183. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
  184. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
  185. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
  186. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
  187. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
  188. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
  189. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
  190. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
  191. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
  192. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +62 -0
  193. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
  194. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +62 -0
  195. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
  196. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
  197. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
  198. package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
  199. package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
  200. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
  201. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
  202. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
  203. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
  204. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
  205. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
  206. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
  207. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
  208. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
  209. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
  210. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
  211. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
  212. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
  213. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
  214. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
  215. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
  216. package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
  217. package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
  218. package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
  219. package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
  220. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +123 -0
  221. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
  222. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +10 -0
  223. package/dist/chat-ui/mentions/suggestions/data/api-client.js +123 -0
  224. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
  225. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
  226. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
  227. package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
  228. package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
  229. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
  230. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
  231. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
  232. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
  233. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
  234. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
  235. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
  236. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
  237. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
  238. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
  239. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
  240. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
  241. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
  242. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
  243. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
  244. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
  245. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
  246. package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
  247. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
  248. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
  249. package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
  250. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
  251. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
  252. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
  253. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
  254. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
  255. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
  256. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
  257. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
  258. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
  259. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
  260. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
  261. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
  262. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
  263. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
  264. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
  265. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
  266. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
  267. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
  268. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
  269. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
  270. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
  271. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
  272. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
  273. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
  274. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
  275. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
  276. package/dist/chat-ui/messages/continue-pill.cjs +54 -0
  277. package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
  278. package/dist/chat-ui/messages/continue-pill.js +54 -0
  279. package/dist/chat-ui/messages/continue-pill.js.map +1 -0
  280. package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
  281. package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
  282. package/dist/chat-ui/messages/message-actions-config.js +12 -0
  283. package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
  284. package/dist/chat-ui/messages/message-components.cjs +343 -0
  285. package/dist/chat-ui/messages/message-components.cjs.map +1 -0
  286. package/dist/chat-ui/messages/message-components.d.ts +13 -1
  287. package/dist/chat-ui/messages/message-components.js +343 -0
  288. package/dist/chat-ui/messages/message-components.js.map +1 -0
  289. package/dist/chat-ui/messages/running-indicator.cjs +49 -0
  290. package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
  291. package/dist/chat-ui/messages/running-indicator.js +49 -0
  292. package/dist/chat-ui/messages/running-indicator.js.map +1 -0
  293. package/dist/chat-ui/messages/runtime-message.cjs +65 -0
  294. package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
  295. package/dist/chat-ui/messages/runtime-message.js +65 -0
  296. package/dist/chat-ui/messages/runtime-message.js.map +1 -0
  297. package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +39 -16
  298. package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
  299. package/dist/chat-ui/messages/statewire-continue-run.d.ts +5 -1
  300. package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +29 -7
  301. package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
  302. package/dist/chat-ui/messages/user-edit-composer.cjs +61 -0
  303. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
  304. package/dist/chat-ui/messages/user-edit-composer.js +61 -0
  305. package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
  306. package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
  307. package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
  308. package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
  309. package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
  310. package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
  311. package/dist/chat-ui/statewire.cjs +39 -0
  312. package/dist/chat-ui/statewire.cjs.map +1 -0
  313. package/dist/chat-ui/statewire.js +39 -0
  314. package/dist/chat-ui/statewire.js.map +1 -0
  315. package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
  316. package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
  317. package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
  318. package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
  319. package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
  320. package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
  321. package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
  322. package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
  323. package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
  324. package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
  325. package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
  326. package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
  327. package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
  328. package/dist/chat-ui/thread/statewire-history-edge.cjs +134 -0
  329. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
  330. package/dist/chat-ui/thread/statewire-history-edge.js +134 -0
  331. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
  332. package/dist/{collab.cjs → collab/client.cjs} +6 -166
  333. package/dist/collab/client.cjs.map +1 -0
  334. package/dist/{collab.js → collab/client.js} +5 -164
  335. package/dist/collab/client.js.map +1 -0
  336. package/dist/collab/close-policy.cjs +14 -0
  337. package/dist/collab/close-policy.cjs.map +1 -0
  338. package/dist/collab/close-policy.js +14 -0
  339. package/dist/collab/close-policy.js.map +1 -0
  340. package/dist/collab/index.cjs +17 -0
  341. package/dist/collab/index.cjs.map +1 -0
  342. package/dist/collab/index.js +17 -0
  343. package/dist/collab/index.js.map +1 -0
  344. package/dist/collab/mint.cjs +59 -0
  345. package/dist/collab/mint.cjs.map +1 -0
  346. package/dist/collab/mint.js +59 -0
  347. package/dist/collab/mint.js.map +1 -0
  348. package/dist/collab/react.cjs +58 -0
  349. package/dist/collab/react.cjs.map +1 -0
  350. package/dist/collab/react.js +58 -0
  351. package/dist/collab/react.js.map +1 -0
  352. package/dist/collab/shape.cjs +45 -0
  353. package/dist/collab/shape.cjs.map +1 -0
  354. package/dist/collab/shape.js +45 -0
  355. package/dist/collab/shape.js.map +1 -0
  356. package/dist/composer/AttachmentContext.cjs +40 -0
  357. package/dist/composer/AttachmentContext.cjs.map +1 -0
  358. package/dist/composer/AttachmentContext.js +40 -0
  359. package/dist/composer/AttachmentContext.js.map +1 -0
  360. package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
  361. package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
  362. package/dist/composer/ComposerAttachmentPreview.js +39 -0
  363. package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
  364. package/dist/composer/ComposerDropZone.cjs +61 -0
  365. package/dist/composer/ComposerDropZone.cjs.map +1 -0
  366. package/dist/composer/ComposerDropZone.d.ts +1 -1
  367. package/dist/composer/ComposerDropZone.js +61 -0
  368. package/dist/composer/ComposerDropZone.js.map +1 -0
  369. package/dist/composer/ComposerQuotePreview.cjs +42 -0
  370. package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
  371. package/dist/composer/ComposerQuotePreview.js +42 -0
  372. package/dist/composer/ComposerQuotePreview.js.map +1 -0
  373. package/dist/composer/FileUploadButton.cjs +65 -0
  374. package/dist/composer/FileUploadButton.cjs.map +1 -0
  375. package/dist/composer/FileUploadButton.d.ts +1 -1
  376. package/dist/composer/FileUploadButton.js +65 -0
  377. package/dist/composer/FileUploadButton.js.map +1 -0
  378. package/dist/composer/QuoteContext.cjs +68 -0
  379. package/dist/composer/QuoteContext.cjs.map +1 -0
  380. package/dist/composer/QuoteContext.js +68 -0
  381. package/dist/composer/QuoteContext.js.map +1 -0
  382. package/dist/composer/build-composed-message.cjs +25 -0
  383. package/dist/composer/build-composed-message.cjs.map +1 -0
  384. package/dist/composer/build-composed-message.js +25 -0
  385. package/dist/composer/build-composed-message.js.map +1 -0
  386. package/dist/composer/clipboard.cjs +62 -0
  387. package/dist/composer/clipboard.cjs.map +1 -0
  388. package/dist/composer/clipboard.d.ts +27 -3
  389. package/dist/composer/clipboard.js +62 -0
  390. package/dist/composer/clipboard.js.map +1 -0
  391. package/dist/composer/useAppendToComposer.cjs +21 -0
  392. package/dist/composer/useAppendToComposer.cjs.map +1 -0
  393. package/dist/composer/useAppendToComposer.js +21 -0
  394. package/dist/composer/useAppendToComposer.js.map +1 -0
  395. package/dist/composer/useAttachFiles.cjs +40 -0
  396. package/dist/composer/useAttachFiles.cjs.map +1 -0
  397. package/dist/composer/useAttachFiles.d.ts +24 -0
  398. package/dist/composer/useAttachFiles.js +40 -0
  399. package/dist/composer/useAttachFiles.js.map +1 -0
  400. package/dist/composer/useComposerAttachment.cjs +25 -0
  401. package/dist/composer/useComposerAttachment.cjs.map +1 -0
  402. package/dist/composer/useComposerAttachment.js +25 -0
  403. package/dist/composer/useComposerAttachment.js.map +1 -0
  404. package/dist/composer/useFileUpload.cjs +123 -0
  405. package/dist/composer/useFileUpload.cjs.map +1 -0
  406. package/dist/composer/useFileUpload.js +123 -0
  407. package/dist/composer/useFileUpload.js.map +1 -0
  408. package/dist/composer/useSendMessage.cjs +22 -0
  409. package/dist/composer/useSendMessage.cjs.map +1 -0
  410. package/dist/composer/useSendMessage.js +22 -0
  411. package/dist/composer/useSendMessage.js.map +1 -0
  412. package/dist/diagnostics/athena-diagnostics.cjs +329 -0
  413. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
  414. package/dist/diagnostics/athena-diagnostics.js +329 -0
  415. package/dist/diagnostics/athena-diagnostics.js.map +1 -0
  416. package/dist/diagnostics/errors.cjs +89 -0
  417. package/dist/diagnostics/errors.cjs.map +1 -0
  418. package/dist/diagnostics/errors.js +89 -0
  419. package/dist/diagnostics/errors.js.map +1 -0
  420. package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
  421. package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
  422. package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
  423. package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
  424. package/dist/index.cjs +274 -27882
  425. package/dist/index.cjs.map +1 -1
  426. package/dist/index.d.ts +6 -4
  427. package/dist/index.js +161 -27759
  428. package/dist/index.js.map +1 -1
  429. package/dist/lib/athena-urls.cjs +194 -0
  430. package/dist/lib/athena-urls.cjs.map +1 -0
  431. package/dist/lib/athena-urls.d.ts +20 -5
  432. package/dist/lib/athena-urls.js +194 -0
  433. package/dist/lib/athena-urls.js.map +1 -0
  434. package/dist/lib/posthog/before-send.cjs +58 -0
  435. package/dist/lib/posthog/before-send.cjs.map +1 -0
  436. package/dist/lib/posthog/before-send.js +58 -0
  437. package/dist/lib/posthog/before-send.js.map +1 -0
  438. package/dist/lib/posthog/capture-gate.cjs +322 -0
  439. package/dist/lib/posthog/capture-gate.cjs.map +1 -0
  440. package/dist/lib/posthog/capture-gate.js +322 -0
  441. package/dist/lib/posthog/capture-gate.js.map +1 -0
  442. package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
  443. package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
  444. package/dist/lib/posthog/wrap-posthog-client.js +163 -0
  445. package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
  446. package/dist/lib/utils.cjs +12 -0
  447. package/dist/lib/utils.cjs.map +1 -0
  448. package/dist/lib/utils.js +9 -0
  449. package/dist/lib/utils.js.map +1 -0
  450. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
  451. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
  452. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
  453. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
  454. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
  455. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
  456. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
  457. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
  458. package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
  459. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
  460. package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
  461. package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
  462. package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
  463. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
  464. package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
  465. package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
  466. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +270 -0
  467. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  468. package/dist/packages/agent-runtime/src/client-tool-bridge.js +270 -0
  469. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
  470. package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
  471. package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
  472. package/dist/packages/agent-runtime/src/client-tools.js +137 -0
  473. package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
  474. package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
  475. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
  476. package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
  477. package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
  478. package/dist/packages/agent-runtime/src/conversation-list.cjs +86 -0
  479. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
  480. package/dist/packages/agent-runtime/src/conversation-list.js +86 -0
  481. package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
  482. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
  483. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  484. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
  485. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  486. package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
  487. package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
  488. package/dist/packages/agent-runtime/src/edit-command.js +89 -0
  489. package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
  490. package/dist/packages/agent-runtime/src/errors.cjs +95 -0
  491. package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
  492. package/dist/packages/agent-runtime/src/errors.js +95 -0
  493. package/dist/packages/agent-runtime/src/errors.js.map +1 -0
  494. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +236 -0
  495. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  496. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +236 -0
  497. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  498. package/dist/packages/agent-runtime/src/interrupts.cjs +117 -0
  499. package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
  500. package/dist/packages/agent-runtime/src/interrupts.js +117 -0
  501. package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
  502. package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
  503. package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
  504. package/dist/packages/agent-runtime/src/message-author.js +31 -0
  505. package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
  506. package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
  507. package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
  508. package/dist/packages/agent-runtime/src/message-window.js +85 -0
  509. package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
  510. package/dist/packages/agent-runtime/src/messages.cjs +433 -0
  511. package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
  512. package/dist/packages/agent-runtime/src/messages.js +433 -0
  513. package/dist/packages/agent-runtime/src/messages.js.map +1 -0
  514. package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
  515. package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
  516. package/dist/packages/agent-runtime/src/model-context.js +13 -0
  517. package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
  518. package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
  519. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
  520. package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
  521. package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
  522. package/dist/packages/agent-runtime/src/protocol.cjs +33 -0
  523. package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
  524. package/dist/packages/agent-runtime/src/protocol.js +33 -0
  525. package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
  526. package/dist/packages/agent-runtime/src/queue.cjs +67 -0
  527. package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
  528. package/dist/packages/agent-runtime/src/queue.js +67 -0
  529. package/dist/packages/agent-runtime/src/queue.js.map +1 -0
  530. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +47 -0
  531. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  532. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +47 -0
  533. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  534. package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
  535. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
  536. package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
  537. package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
  538. package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
  539. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
  540. package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
  541. package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
  542. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
  543. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  544. package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
  545. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  546. package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
  547. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
  548. package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
  549. package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
  550. package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
  551. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  552. package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
  553. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
  554. package/dist/packages/agent-runtime/src/statewire-transport.cjs +6 -0
  555. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
  556. package/dist/packages/agent-runtime/src/statewire-transport.js +6 -0
  557. package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
  558. package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
  559. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  560. package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
  561. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
  562. package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
  563. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
  564. package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
  565. package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
  566. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
  567. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  568. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
  569. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  570. package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
  571. package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
  572. package/dist/packages/agent-runtime/src/thread-status.js +49 -0
  573. package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
  574. package/dist/packages/agent-runtime/src/tool-metadata.cjs +1802 -0
  575. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
  576. package/dist/packages/agent-runtime/src/tool-metadata.js +1802 -0
  577. package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
  578. package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
  579. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
  580. package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
  581. package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
  582. package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
  583. package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
  584. package/dist/packages/agent-runtime/src/tool-result.js +151 -0
  585. package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
  586. package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
  587. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  588. package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
  589. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
  590. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +28 -0
  591. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  592. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +28 -0
  593. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  594. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +138 -0
  595. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  596. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +138 -0
  597. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  598. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +387 -0
  599. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  600. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +387 -0
  601. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  602. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
  603. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  604. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
  605. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  606. package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
  607. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
  608. package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
  609. package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
  610. package/dist/packages/react/package.json.cjs +9 -0
  611. package/dist/packages/react/package.json.cjs.map +1 -0
  612. package/dist/packages/react/package.json.js +9 -0
  613. package/dist/packages/react/package.json.js.map +1 -0
  614. package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
  615. package/dist/provider/AthenaContext.cjs.map +1 -0
  616. package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
  617. package/dist/provider/AthenaContext.js.map +1 -0
  618. package/dist/provider/AthenaProvider.cjs +403 -0
  619. package/dist/provider/AthenaProvider.cjs.map +1 -0
  620. package/dist/provider/AthenaProvider.js +403 -0
  621. package/dist/provider/AthenaProvider.js.map +1 -0
  622. package/dist/provider/PostHogProvider.cjs +81 -0
  623. package/dist/provider/PostHogProvider.cjs.map +1 -0
  624. package/dist/provider/PostHogProvider.js +59 -0
  625. package/dist/provider/PostHogProvider.js.map +1 -0
  626. package/dist/provider/config.d.ts +8 -7
  627. package/dist/provider/statewire-lifecycle-context.cjs +10 -0
  628. package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
  629. package/dist/provider/statewire-lifecycle-context.js +10 -0
  630. package/dist/provider/statewire-lifecycle-context.js.map +1 -0
  631. package/dist/provider/statewire-window-context.cjs +10 -0
  632. package/dist/provider/statewire-window-context.cjs.map +1 -0
  633. package/dist/provider/statewire-window-context.js +10 -0
  634. package/dist/provider/statewire-window-context.js.map +1 -0
  635. package/dist/runtime/auth.cjs +309 -0
  636. package/dist/runtime/auth.cjs.map +1 -0
  637. package/dist/runtime/auth.d.ts +19 -18
  638. package/dist/runtime/auth.js +309 -0
  639. package/dist/runtime/auth.js.map +1 -0
  640. package/dist/runtime/statewire-auth-headers.cjs +18 -0
  641. package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
  642. package/dist/runtime/statewire-auth-headers.js +18 -0
  643. package/dist/runtime/statewire-auth-headers.js.map +1 -0
  644. package/dist/runtime/statewire-lifecycle.cjs +67 -0
  645. package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
  646. package/dist/runtime/statewire-lifecycle.js +67 -0
  647. package/dist/runtime/statewire-lifecycle.js.map +1 -0
  648. package/dist/runtime/statewire-run-config.cjs +68 -0
  649. package/dist/runtime/statewire-run-config.cjs.map +1 -0
  650. package/dist/runtime/statewire-run-config.js +68 -0
  651. package/dist/runtime/statewire-run-config.js.map +1 -0
  652. package/dist/runtime/statewire-session-key.cjs +11 -0
  653. package/dist/runtime/statewire-session-key.cjs.map +1 -0
  654. package/dist/runtime/statewire-session-key.js +11 -0
  655. package/dist/runtime/statewire-session-key.js.map +1 -0
  656. package/dist/runtime/useAthenaStatewireRuntime.cjs +179 -0
  657. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
  658. package/dist/runtime/useAthenaStatewireRuntime.js +180 -0
  659. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
  660. package/dist/styles.css +1 -1
  661. package/dist/theme/index.cjs +182 -0
  662. package/dist/theme/index.cjs.map +1 -0
  663. package/dist/theme/index.js +182 -0
  664. package/dist/theme/index.js.map +1 -0
  665. package/dist/threads/ThreadList.cjs +55 -0
  666. package/dist/threads/ThreadList.cjs.map +1 -0
  667. package/dist/threads/ThreadList.js +55 -0
  668. package/dist/threads/ThreadList.js.map +1 -0
  669. package/dist/threads/api.cjs +208 -0
  670. package/dist/threads/api.cjs.map +1 -0
  671. package/dist/threads/api.js +208 -0
  672. package/dist/threads/api.js.map +1 -0
  673. package/dist/threads/conversation-list-fetcher.cjs +70 -0
  674. package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
  675. package/dist/threads/conversation-list-fetcher.js +70 -0
  676. package/dist/threads/conversation-list-fetcher.js.map +1 -0
  677. package/dist/threads/mint-thread-id.cjs +7 -0
  678. package/dist/threads/mint-thread-id.cjs.map +1 -0
  679. package/dist/threads/mint-thread-id.js +7 -0
  680. package/dist/threads/mint-thread-id.js.map +1 -0
  681. package/dist/threads/statewire-thread-list.cjs +231 -0
  682. package/dist/threads/statewire-thread-list.cjs.map +1 -0
  683. package/dist/threads/statewire-thread-list.js +231 -0
  684. package/dist/threads/statewire-thread-list.js.map +1 -0
  685. package/dist/threads/thread-id-context.cjs +22 -0
  686. package/dist/threads/thread-id-context.cjs.map +1 -0
  687. package/dist/threads/thread-id-context.d.ts +9 -0
  688. package/dist/threads/thread-id-context.js +22 -0
  689. package/dist/threads/thread-id-context.js.map +1 -0
  690. package/dist/threads/title.cjs +95 -0
  691. package/dist/threads/title.cjs.map +1 -0
  692. package/dist/threads/title.js +95 -0
  693. package/dist/threads/title.js.map +1 -0
  694. package/dist/threads/use-rest-conversation-history.cjs +79 -0
  695. package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
  696. package/dist/threads/use-rest-conversation-history.js +79 -0
  697. package/dist/threads/use-rest-conversation-history.js.map +1 -0
  698. package/dist/threads/use-statewire-conversation-history.cjs +243 -0
  699. package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
  700. package/dist/threads/use-statewire-conversation-history.js +243 -0
  701. package/dist/threads/use-statewire-conversation-history.js.map +1 -0
  702. package/dist/threads/useAthenaThreadManager.cjs +24 -0
  703. package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
  704. package/dist/threads/useAthenaThreadManager.js +24 -0
  705. package/dist/threads/useAthenaThreadManager.js.map +1 -0
  706. package/dist/toolkits/index.cjs +279 -0
  707. package/dist/toolkits/index.cjs.map +1 -0
  708. package/dist/toolkits/index.js +279 -0
  709. package/dist/toolkits/index.js.map +1 -0
  710. package/dist/tools/NestedPtcMessages.cjs +46 -0
  711. package/dist/tools/NestedPtcMessages.cjs.map +1 -0
  712. package/dist/tools/NestedPtcMessages.js +46 -0
  713. package/dist/tools/NestedPtcMessages.js.map +1 -0
  714. package/dist/tools/append-document-tool-ui.cjs +145 -0
  715. package/dist/tools/append-document-tool-ui.cjs.map +1 -0
  716. package/dist/tools/append-document-tool-ui.js +145 -0
  717. package/dist/tools/append-document-tool-ui.js.map +1 -0
  718. package/dist/tools/asset-utils.cjs +16 -0
  719. package/dist/tools/asset-utils.cjs.map +1 -0
  720. package/dist/tools/asset-utils.js +16 -0
  721. package/dist/tools/asset-utils.js.map +1 -0
  722. package/dist/tools/auto-open-tools.cjs +121 -0
  723. package/dist/tools/auto-open-tools.cjs.map +1 -0
  724. package/dist/tools/auto-open-tools.js +121 -0
  725. package/dist/tools/auto-open-tools.js.map +1 -0
  726. package/dist/tools/file-tool-uis.cjs +108 -0
  727. package/dist/tools/file-tool-uis.cjs.map +1 -0
  728. package/dist/tools/file-tool-uis.js +108 -0
  729. package/dist/tools/file-tool-uis.js.map +1 -0
  730. package/dist/tools/index.cjs +56 -0
  731. package/dist/tools/index.cjs.map +1 -0
  732. package/dist/tools/index.d.ts +1 -0
  733. package/dist/tools/index.js +56 -0
  734. package/dist/tools/index.js.map +1 -0
  735. package/dist/tools/misc-tool-uis.cjs +54 -0
  736. package/dist/tools/misc-tool-uis.cjs.map +1 -0
  737. package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +17 -7
  738. package/dist/tools/misc-tool-uis.js.map +1 -0
  739. package/dist/tools/primitives.cjs +166 -0
  740. package/dist/tools/primitives.cjs.map +1 -0
  741. package/dist/tools/primitives.js +166 -0
  742. package/dist/tools/primitives.js.map +1 -0
  743. package/dist/tools/read-asset-tool-ui.cjs +284 -0
  744. package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
  745. package/dist/tools/read-asset-tool-ui.js +284 -0
  746. package/dist/tools/read-asset-tool-ui.js.map +1 -0
  747. package/dist/tools/todo-plan-store.cjs +88 -0
  748. package/dist/tools/todo-plan-store.cjs.map +1 -0
  749. package/dist/tools/todo-plan-store.js +88 -0
  750. package/dist/tools/todo-plan-store.js.map +1 -0
  751. package/dist/tools/tool-fallback.cjs +667 -0
  752. package/dist/tools/tool-fallback.cjs.map +1 -0
  753. package/dist/tools/tool-fallback.js +667 -0
  754. package/dist/tools/tool-fallback.js.map +1 -0
  755. package/dist/tools/tool-icons.cjs +61 -0
  756. package/dist/tools/tool-icons.cjs.map +1 -0
  757. package/dist/tools/tool-icons.js +61 -0
  758. package/dist/tools/tool-icons.js.map +1 -0
  759. package/dist/tools/tool-uis.cjs +3049 -0
  760. package/dist/tools/tool-uis.cjs.map +1 -0
  761. package/dist/tools/tool-uis.js +3049 -0
  762. package/dist/tools/tool-uis.js.map +1 -0
  763. package/dist/tools/voice-update-tool-ui.cjs +89 -0
  764. package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
  765. package/dist/tools/voice-update-tool-ui.d.ts +27 -0
  766. package/dist/tools/voice-update-tool-ui.js +89 -0
  767. package/dist/tools/voice-update-tool-ui.js.map +1 -0
  768. package/dist/tools/write-todos-tool-ui.cjs +270 -0
  769. package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
  770. package/dist/tools/write-todos-tool-ui.js +270 -0
  771. package/dist/tools/write-todos-tool-ui.js.map +1 -0
  772. package/dist/ui/button.cjs +57 -0
  773. package/dist/ui/button.cjs.map +1 -0
  774. package/dist/ui/button.js +57 -0
  775. package/dist/ui/button.js.map +1 -0
  776. package/dist/ui/collapsible.cjs +17 -0
  777. package/dist/ui/collapsible.cjs.map +1 -0
  778. package/dist/ui/collapsible.js +17 -0
  779. package/dist/ui/collapsible.js.map +1 -0
  780. package/dist/ui/tooltip.cjs +48 -0
  781. package/dist/ui/tooltip.cjs.map +1 -0
  782. package/dist/ui/tooltip.js +48 -0
  783. package/dist/ui/tooltip.js.map +1 -0
  784. package/dist/version.cjs +6 -0
  785. package/dist/version.cjs.map +1 -0
  786. package/dist/version.js +6 -0
  787. package/dist/version.js.map +1 -0
  788. package/package.json +18 -20
  789. package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
  790. package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
  791. package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
  792. package/dist/AthenaContext-MOslgOmE.js.map +0 -1
  793. package/dist/SuperGroupingCard-BsWbHyV_.js +0 -795
  794. package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
  795. package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
  796. package/dist/SuperGroupingCard-CRRFUgjN.cjs.map +0 -1
  797. package/dist/auth.cjs.map +0 -1
  798. package/dist/auth.js.map +0 -1
  799. package/dist/chat/ComposerEditorContext.d.ts +0 -36
  800. package/dist/chat/tiptap-composer.d.ts +0 -7
  801. package/dist/chat-ui-statewire.cjs +0 -25
  802. package/dist/chat-ui-statewire.cjs.map +0 -1
  803. package/dist/chat-ui-statewire.js +0 -25
  804. package/dist/chat-ui-statewire.js.map +0 -1
  805. package/dist/chat-ui.cjs +0 -2484
  806. package/dist/chat-ui.cjs.map +0 -1
  807. package/dist/chat-ui.js +0 -2486
  808. package/dist/chat-ui.js.map +0 -1
  809. package/dist/collab.cjs.map +0 -1
  810. package/dist/collab.js.map +0 -1
  811. package/dist/mentions/composer-keybinds.d.ts +0 -5
  812. package/dist/mentions/mention-extension.d.ts +0 -6
  813. package/dist/mentions/mention-icons.d.ts +0 -4
  814. package/dist/mentions/mention-node-view.d.ts +0 -2
  815. package/dist/mentions/mention-suggestion-list.d.ts +0 -14
  816. package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
  817. package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
  818. package/dist/mentions/mention-types.d.ts +0 -21
  819. package/dist/mentions/mention-utils.d.ts +0 -23
  820. package/dist/mentions/use-mention-suggestions.d.ts +0 -29
  821. package/dist/misc-tool-uis-B2e0Okkn.cjs +0 -43
  822. package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
  823. package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
  824. package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
  825. package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
  826. package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
  827. package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
  828. package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
  829. package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
  830. package/dist/super-grouping.cjs +0 -22
  831. package/dist/super-grouping.cjs.map +0 -1
  832. package/dist/super-grouping.js +0 -22
  833. package/dist/super-grouping.js.map +0 -1
  834. package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
  835. package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
  836. package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
  837. package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
  838. package/dist/tools.cjs +0 -41
  839. package/dist/tools.cjs.map +0 -1
  840. package/dist/tools.js +0 -41
  841. package/dist/tools.js.map +0 -1
  842. package/dist/trash-2-B5OaNAL7.cjs +0 -5096
  843. package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
  844. package/dist/trash-2-CCwSURL-.js +0 -5081
  845. package/dist/trash-2-CCwSURL-.js.map +0 -1
  846. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
  847. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
  848. package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
  849. package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
  850. package/dist/wrench-BEf72cyP.cjs +0 -417
  851. package/dist/wrench-BEf72cyP.cjs.map +0 -1
  852. package/dist/wrench-CbrOlVYm.js +0 -418
  853. package/dist/wrench-CbrOlVYm.js.map +0 -1
  854. package/dist/x-Dfd2NzK0.cjs +0 -42
  855. package/dist/x-Dfd2NzK0.cjs.map +0 -1
  856. package/dist/x-_DntAa_a.js +0 -43
  857. package/dist/x-_DntAa_a.js.map +0 -1
@@ -0,0 +1 @@
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]}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const utils = require("assistant-stream/utils");
4
+ const internal = require("@assistant-ui/core/internal");
5
+ const converter = require("../../react-langchain/dist/converter.cjs");
6
+ const getToolArgsCacheKey = (messageId, kind, toolCallId) => `${messageId ?? "unknown"}:${kind}:${toolCallId}`;
7
+ const resolveToolCallArgs = ({ chunk, matchingToolCallChunk, messageId, toolArgsKeyOrderCache, toolCallId }) => {
8
+ const cacheKey = getToolArgsCacheKey(messageId, "tool", toolCallId);
9
+ const streamedArgsText = (matchingToolCallChunk == null ? void 0 : matchingToolCallChunk.args) ?? (matchingToolCallChunk == null ? void 0 : matchingToolCallChunk.args_json);
10
+ const isStreamingArglessChunk = matchingToolCallChunk !== void 0 && streamedArgsText === void 0 && Object.keys(chunk.args).length === 0;
11
+ const providedArgsText = chunk.partial_json ?? streamedArgsText ?? (isStreamingArglessChunk ? "" : void 0);
12
+ const argsText = providedArgsText ?? internal.stableStringifyToolArgs(toolArgsKeyOrderCache, cacheKey, chunk.args);
13
+ const parsedPartialArgs = argsText ? utils.parsePartialJsonObject(argsText) : null;
14
+ const args = argsText ? parsedPartialArgs ?? {} : chunk.args;
15
+ internal.trackToolArgsKeyOrder(toolArgsKeyOrderCache, cacheKey, parsedPartialArgs ?? chunk.args);
16
+ if (providedArgsText == null) toolArgsKeyOrderCache == null ? void 0 : toolArgsKeyOrderCache.delete(cacheKey);
17
+ return {
18
+ args,
19
+ argsText
20
+ };
21
+ };
22
+ const warnedMessagePartTypes = /* @__PURE__ */ new Set();
23
+ const warnForUnknownMessagePartType = (type) => {
24
+ var _a;
25
+ if (typeof process === "undefined" || ((_a = process == null ? void 0 : process.env) == null ? void 0 : _a.NODE_ENV) !== "development") return;
26
+ if (warnedMessagePartTypes.has(type)) return;
27
+ warnedMessagePartTypes.add(type);
28
+ console.warn(`Unknown message part type: ${type}`);
29
+ };
30
+ const warnedMessageTypes = /* @__PURE__ */ new Set();
31
+ const warnForUnknownMessageType = (type) => {
32
+ var _a;
33
+ if (typeof process === "undefined" || ((_a = process == null ? void 0 : process.env) == null ? void 0 : _a.NODE_ENV) !== "development") return;
34
+ if (warnedMessageTypes.has(type)) return;
35
+ warnedMessageTypes.add(type);
36
+ console.warn(`Unknown message type: ${type}`);
37
+ };
38
+ const contentToParts = (content, metadata, messageId) => {
39
+ if (content == null) return [];
40
+ if (typeof content === "string") return [{
41
+ type: "text",
42
+ text: content
43
+ }];
44
+ return content.map((part) => {
45
+ if (part.type === "computer_call") {
46
+ const args = part.action;
47
+ return {
48
+ type: "tool-call",
49
+ toolCallId: part.call_id,
50
+ toolName: "computer_call",
51
+ args,
52
+ argsText: internal.stableStringifyToolArgs(metadata.toolArgsKeyOrderCache, getToolArgsCacheKey(messageId, "computer", part.call_id), args)
53
+ };
54
+ }
55
+ const converted = converter.convertLangChainContentBlock(part);
56
+ if (converted === void 0) {
57
+ warnForUnknownMessagePartType(part.type);
58
+ return null;
59
+ }
60
+ return converted;
61
+ }).filter((a) => a !== null);
62
+ };
63
+ const normalizePayload = (value) => {
64
+ var _a;
65
+ return ((_a = internal.parseDataUrl(value)) == null ? void 0 : _a.data) ?? value;
66
+ };
67
+ const attachmentPartKey = (part) => {
68
+ if (part.type === "image" && typeof part.image === "string") return `image:${normalizePayload(part.image)}`;
69
+ if (part.type === "file" && typeof part.data === "string") return `file:${normalizePayload(part.data)}`;
70
+ if (part.type === "audio" && part.audio) return `file:${normalizePayload(part.audio.data)}`;
71
+ return null;
72
+ };
73
+ const dropAttachmentDuplicates = (parts, attachments) => {
74
+ const counts = /* @__PURE__ */ new Map();
75
+ for (const part of attachments.flatMap((a) => a.content)) {
76
+ const key = attachmentPartKey(part);
77
+ if (key) counts.set(key, (counts.get(key) ?? 0) + 1);
78
+ }
79
+ if (counts.size === 0) return parts;
80
+ const dropped = /* @__PURE__ */ new Set();
81
+ for (let i = parts.length - 1; i >= 0; i--) {
82
+ const key = attachmentPartKey(parts[i]);
83
+ if (!key) continue;
84
+ const remaining = counts.get(key);
85
+ if (!remaining) continue;
86
+ counts.set(key, remaining - 1);
87
+ dropped.add(i);
88
+ }
89
+ if (dropped.size === 0) return parts;
90
+ return parts.filter((_, i) => !dropped.has(i));
91
+ };
92
+ const convertLangChainMessages = (message, metadata = {}) => {
93
+ var _a, _b, _c, _d, _e, _f, _g;
94
+ const type = message.type;
95
+ switch (type) {
96
+ case "system":
97
+ return {
98
+ role: "system",
99
+ id: message.id,
100
+ content: [{
101
+ type: "text",
102
+ text: message.content
103
+ }],
104
+ metadata: { custom: converter.getCustomMetadata(message.additional_kwargs) }
105
+ };
106
+ case "human": {
107
+ const attachments = message.id ? (_a = metadata.attachmentsByMessageId) == null ? void 0 : _a.get(message.id) : void 0;
108
+ const parts = contentToParts(message.content, metadata, message.id);
109
+ return {
110
+ role: "user",
111
+ id: message.id,
112
+ content: (attachments == null ? void 0 : attachments.length) ? dropAttachmentDuplicates(parts, attachments) : parts,
113
+ metadata: { custom: converter.getCustomMetadata(message.additional_kwargs) },
114
+ ...(attachments == null ? void 0 : attachments.length) ? { attachments } : {}
115
+ };
116
+ }
117
+ case "ai": {
118
+ const toolCallParts = ((_b = message.tool_calls) == null ? void 0 : _b.map((chunk, idx) => {
119
+ var _a2;
120
+ const fallbackIndex = chunk.index ?? idx;
121
+ const toolCallId = chunk.id ? chunk.id : `lc-toolcall-${message.id ?? "unknown"}-${fallbackIndex}`;
122
+ const matchingToolCallChunk = (_a2 = message.tool_call_chunks) == null ? void 0 : _a2.find((c) => chunk.id ? c.id === chunk.id : c.index === fallbackIndex);
123
+ const { args, argsText } = resolveToolCallArgs({
124
+ chunk,
125
+ matchingToolCallChunk,
126
+ messageId: message.id,
127
+ toolArgsKeyOrderCache: metadata.toolArgsKeyOrderCache,
128
+ toolCallId
129
+ });
130
+ return {
131
+ type: "tool-call",
132
+ toolCallId,
133
+ toolName: chunk.name,
134
+ args,
135
+ argsText
136
+ };
137
+ })) ?? [];
138
+ const normalizedContent = typeof message.content === "string" ? [{
139
+ type: "text",
140
+ text: message.content
141
+ }] : message.content ?? [];
142
+ const allContent = [
143
+ (_c = message.additional_kwargs) == null ? void 0 : _c.reasoning,
144
+ ...normalizedContent,
145
+ ...((_d = message.additional_kwargs) == null ? void 0 : _d.tool_outputs) ?? []
146
+ ].filter((c) => c !== void 0);
147
+ const uiDataParts = (message.id ? (_f = (_e = metadata.uiMessagesByParent) == null ? void 0 : _e.get(message.id)) == null ? void 0 : _f.map(converter.uiMessageToDataPart) : void 0) ?? [];
148
+ const timing = message.id ? (_g = metadata.messageTiming) == null ? void 0 : _g[message.id] : void 0;
149
+ return {
150
+ role: "assistant",
151
+ id: message.id,
152
+ content: [
153
+ ...converter.withAudioTranscript(contentToParts(allContent, metadata, message.id), message.additional_kwargs),
154
+ ...toolCallParts,
155
+ ...uiDataParts
156
+ ],
157
+ metadata: {
158
+ custom: converter.getCustomMetadata(message.additional_kwargs),
159
+ ...timing && { timing }
160
+ },
161
+ ...message.status && { status: message.status }
162
+ };
163
+ }
164
+ case "remove":
165
+ return [];
166
+ case "tool":
167
+ return {
168
+ role: "tool",
169
+ toolName: message.name,
170
+ toolCallId: message.tool_call_id,
171
+ result: message.content,
172
+ artifact: message.artifact,
173
+ isError: message.status === "error"
174
+ };
175
+ default:
176
+ warnForUnknownMessageType(type);
177
+ return [];
178
+ }
179
+ };
180
+ exports.convertLangChainMessages = convertLangChainMessages;
181
+ //# sourceMappingURL=convertLangChainMessages.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertLangChainMessages.cjs","sources":["../../../../../../../node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js"],"sourcesContent":["\"use client\";\nimport { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { parseDataUrl, stableStringifyToolArgs, trackToolArgsKeyOrder } from \"@assistant-ui/core/internal\";\nimport { convertLangChainContentBlock, getCustomMetadata, getMessageContent, uiMessageToDataPart, withAudioTranscript } from \"@assistant-ui/react-langchain/converter\";\n//#region src/convertLangChainMessages.ts\nconst getToolArgsCacheKey = (messageId, kind, toolCallId) => `${messageId ?? \"unknown\"}:${kind}:${toolCallId}`;\nconst resolveToolCallArgs = ({ chunk, matchingToolCallChunk, messageId, toolArgsKeyOrderCache, toolCallId }) => {\n\tconst cacheKey = getToolArgsCacheKey(messageId, \"tool\", toolCallId);\n\tconst streamedArgsText = matchingToolCallChunk?.args ?? matchingToolCallChunk?.args_json;\n\tconst isStreamingArglessChunk = matchingToolCallChunk !== void 0 && streamedArgsText === void 0 && Object.keys(chunk.args).length === 0;\n\tconst providedArgsText = chunk.partial_json ?? streamedArgsText ?? (isStreamingArglessChunk ? \"\" : void 0);\n\tconst argsText = providedArgsText ?? stableStringifyToolArgs(toolArgsKeyOrderCache, cacheKey, chunk.args);\n\tconst parsedPartialArgs = argsText ? parsePartialJsonObject(argsText) : null;\n\tconst args = argsText ? parsedPartialArgs ?? {} : chunk.args;\n\ttrackToolArgsKeyOrder(toolArgsKeyOrderCache, cacheKey, parsedPartialArgs ?? chunk.args);\n\tif (providedArgsText == null) toolArgsKeyOrderCache?.delete(cacheKey);\n\treturn {\n\t\targs,\n\t\targsText\n\t};\n};\nconst warnedMessagePartTypes = /* @__PURE__ */ new Set();\nconst warnForUnknownMessagePartType = (type) => {\n\tif (typeof process === \"undefined\" || process?.env?.NODE_ENV !== \"development\") return;\n\tif (warnedMessagePartTypes.has(type)) return;\n\twarnedMessagePartTypes.add(type);\n\tconsole.warn(`Unknown message part type: ${type}`);\n};\nconst warnedMessageTypes = /* @__PURE__ */ new Set();\nconst warnForUnknownMessageType = (type) => {\n\tif (typeof process === \"undefined\" || process?.env?.NODE_ENV !== \"development\") return;\n\tif (warnedMessageTypes.has(type)) return;\n\twarnedMessageTypes.add(type);\n\tconsole.warn(`Unknown message type: ${type}`);\n};\nconst contentToParts = (content, metadata, messageId) => {\n\tif (content == null) return [];\n\tif (typeof content === \"string\") return [{\n\t\ttype: \"text\",\n\t\ttext: content\n\t}];\n\treturn content.map((part) => {\n\t\tif (part.type === \"computer_call\") {\n\t\t\tconst args = part.action;\n\t\t\treturn {\n\t\t\t\ttype: \"tool-call\",\n\t\t\t\ttoolCallId: part.call_id,\n\t\t\t\ttoolName: \"computer_call\",\n\t\t\t\targs,\n\t\t\t\targsText: stableStringifyToolArgs(metadata.toolArgsKeyOrderCache, getToolArgsCacheKey(messageId, \"computer\", part.call_id), args)\n\t\t\t};\n\t\t}\n\t\tconst converted = convertLangChainContentBlock(part);\n\t\tif (converted === void 0) {\n\t\t\twarnForUnknownMessagePartType(part.type);\n\t\t\treturn null;\n\t\t}\n\t\treturn converted;\n\t}).filter((a) => a !== null);\n};\nconst normalizePayload = (value) => parseDataUrl(value)?.data ?? value;\nconst attachmentPartKey = (part) => {\n\tif (part.type === \"image\" && typeof part.image === \"string\") return `image:${normalizePayload(part.image)}`;\n\tif (part.type === \"file\" && typeof part.data === \"string\") return `file:${normalizePayload(part.data)}`;\n\tif (part.type === \"audio\" && part.audio) return `file:${normalizePayload(part.audio.data)}`;\n\treturn null;\n};\n/**\n* getMessageContent flattens attachment content into the wire message while\n* the runtime reattaches the original attachments for chip rendering, so in\n* the sender's session each attachment payload arrives back twice. Drops the\n* flattened copies, at most one content part per attachment part, consuming\n* from the trailing end because getMessageContent appends the flattened\n* copies after the user's direct content; on reload the staging map is empty\n* and content parts pass through untouched.\n*/\nconst dropAttachmentDuplicates = (parts, attachments) => {\n\tconst counts = /* @__PURE__ */ new Map();\n\tfor (const part of attachments.flatMap((a) => a.content)) {\n\t\tconst key = attachmentPartKey(part);\n\t\tif (key) counts.set(key, (counts.get(key) ?? 0) + 1);\n\t}\n\tif (counts.size === 0) return parts;\n\tconst dropped = /* @__PURE__ */ new Set();\n\tfor (let i = parts.length - 1; i >= 0; i--) {\n\t\tconst key = attachmentPartKey(parts[i]);\n\t\tif (!key) continue;\n\t\tconst remaining = counts.get(key);\n\t\tif (!remaining) continue;\n\t\tcounts.set(key, remaining - 1);\n\t\tdropped.add(i);\n\t}\n\tif (dropped.size === 0) return parts;\n\treturn parts.filter((_, i) => !dropped.has(i));\n};\nconst convertLangChainMessages = (message, metadata = {}) => {\n\tconst type = message.type;\n\tswitch (type) {\n\t\tcase \"system\": return {\n\t\t\trole: \"system\",\n\t\t\tid: message.id,\n\t\t\tcontent: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: message.content\n\t\t\t}],\n\t\t\tmetadata: { custom: getCustomMetadata(message.additional_kwargs) }\n\t\t};\n\t\tcase \"human\": {\n\t\t\tconst attachments = message.id ? metadata.attachmentsByMessageId?.get(message.id) : void 0;\n\t\t\tconst parts = contentToParts(message.content, metadata, message.id);\n\t\t\treturn {\n\t\t\t\trole: \"user\",\n\t\t\t\tid: message.id,\n\t\t\t\tcontent: attachments?.length ? dropAttachmentDuplicates(parts, attachments) : parts,\n\t\t\t\tmetadata: { custom: getCustomMetadata(message.additional_kwargs) },\n\t\t\t\t...attachments?.length ? { attachments } : {}\n\t\t\t};\n\t\t}\n\t\tcase \"ai\": {\n\t\t\tconst toolCallParts = message.tool_calls?.map((chunk, idx) => {\n\t\t\t\tconst fallbackIndex = chunk.index ?? idx;\n\t\t\t\tconst toolCallId = chunk.id ? chunk.id : `lc-toolcall-${message.id ?? \"unknown\"}-${fallbackIndex}`;\n\t\t\t\tconst matchingToolCallChunk = message.tool_call_chunks?.find((c) => chunk.id ? c.id === chunk.id : c.index === fallbackIndex);\n\t\t\t\tconst { args, argsText } = resolveToolCallArgs({\n\t\t\t\t\tchunk,\n\t\t\t\t\tmatchingToolCallChunk,\n\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\ttoolArgsKeyOrderCache: metadata.toolArgsKeyOrderCache,\n\t\t\t\t\ttoolCallId\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\ttoolCallId,\n\t\t\t\t\ttoolName: chunk.name,\n\t\t\t\t\targs,\n\t\t\t\t\targsText\n\t\t\t\t};\n\t\t\t}) ?? [];\n\t\t\tconst normalizedContent = typeof message.content === \"string\" ? [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: message.content\n\t\t\t}] : message.content ?? [];\n\t\t\tconst allContent = [\n\t\t\t\tmessage.additional_kwargs?.reasoning,\n\t\t\t\t...normalizedContent,\n\t\t\t\t...message.additional_kwargs?.tool_outputs ?? []\n\t\t\t].filter((c) => c !== void 0);\n\t\t\tconst uiDataParts = (message.id ? metadata.uiMessagesByParent?.get(message.id)?.map(uiMessageToDataPart) : void 0) ?? [];\n\t\t\tconst timing = message.id ? metadata.messageTiming?.[message.id] : void 0;\n\t\t\treturn {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tid: message.id,\n\t\t\t\tcontent: [\n\t\t\t\t\t...withAudioTranscript(contentToParts(allContent, metadata, message.id), message.additional_kwargs),\n\t\t\t\t\t...toolCallParts,\n\t\t\t\t\t...uiDataParts\n\t\t\t\t],\n\t\t\t\tmetadata: {\n\t\t\t\t\tcustom: getCustomMetadata(message.additional_kwargs),\n\t\t\t\t\t...timing && { timing }\n\t\t\t\t},\n\t\t\t\t...message.status && { status: message.status }\n\t\t\t};\n\t\t}\n\t\tcase \"remove\": return [];\n\t\tcase \"tool\": return {\n\t\t\trole: \"tool\",\n\t\t\ttoolName: message.name,\n\t\t\ttoolCallId: message.tool_call_id,\n\t\t\tresult: message.content,\n\t\t\tartifact: message.artifact,\n\t\t\tisError: message.status === \"error\"\n\t\t};\n\t\tdefault:\n\t\t\twarnForUnknownMessageType(type);\n\t\t\treturn [];\n\t}\n};\n//#endregion\nexport { convertLangChainMessages, getMessageContent };\n\n//# sourceMappingURL=convertLangChainMessages.js.map"],"names":["stableStringifyToolArgs","parsePartialJsonObject","trackToolArgsKeyOrder","convertLangChainContentBlock","parseDataUrl","getCustomMetadata","_a","uiMessageToDataPart","withAudioTranscript"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,181 @@
1
+ import { parsePartialJsonObject } from "assistant-stream/utils";
2
+ import { stableStringifyToolArgs, trackToolArgsKeyOrder, parseDataUrl } from "@assistant-ui/core/internal";
3
+ import { uiMessageToDataPart, getCustomMetadata, withAudioTranscript, convertLangChainContentBlock } from "../../react-langchain/dist/converter.js";
4
+ const getToolArgsCacheKey = (messageId, kind, toolCallId) => `${messageId ?? "unknown"}:${kind}:${toolCallId}`;
5
+ const resolveToolCallArgs = ({ chunk, matchingToolCallChunk, messageId, toolArgsKeyOrderCache, toolCallId }) => {
6
+ const cacheKey = getToolArgsCacheKey(messageId, "tool", toolCallId);
7
+ const streamedArgsText = (matchingToolCallChunk == null ? void 0 : matchingToolCallChunk.args) ?? (matchingToolCallChunk == null ? void 0 : matchingToolCallChunk.args_json);
8
+ const isStreamingArglessChunk = matchingToolCallChunk !== void 0 && streamedArgsText === void 0 && Object.keys(chunk.args).length === 0;
9
+ const providedArgsText = chunk.partial_json ?? streamedArgsText ?? (isStreamingArglessChunk ? "" : void 0);
10
+ const argsText = providedArgsText ?? stableStringifyToolArgs(toolArgsKeyOrderCache, cacheKey, chunk.args);
11
+ const parsedPartialArgs = argsText ? parsePartialJsonObject(argsText) : null;
12
+ const args = argsText ? parsedPartialArgs ?? {} : chunk.args;
13
+ trackToolArgsKeyOrder(toolArgsKeyOrderCache, cacheKey, parsedPartialArgs ?? chunk.args);
14
+ if (providedArgsText == null) toolArgsKeyOrderCache == null ? void 0 : toolArgsKeyOrderCache.delete(cacheKey);
15
+ return {
16
+ args,
17
+ argsText
18
+ };
19
+ };
20
+ const warnedMessagePartTypes = /* @__PURE__ */ new Set();
21
+ const warnForUnknownMessagePartType = (type) => {
22
+ var _a;
23
+ if (typeof process === "undefined" || ((_a = process == null ? void 0 : process.env) == null ? void 0 : _a.NODE_ENV) !== "development") return;
24
+ if (warnedMessagePartTypes.has(type)) return;
25
+ warnedMessagePartTypes.add(type);
26
+ console.warn(`Unknown message part type: ${type}`);
27
+ };
28
+ const warnedMessageTypes = /* @__PURE__ */ new Set();
29
+ const warnForUnknownMessageType = (type) => {
30
+ var _a;
31
+ if (typeof process === "undefined" || ((_a = process == null ? void 0 : process.env) == null ? void 0 : _a.NODE_ENV) !== "development") return;
32
+ if (warnedMessageTypes.has(type)) return;
33
+ warnedMessageTypes.add(type);
34
+ console.warn(`Unknown message type: ${type}`);
35
+ };
36
+ const contentToParts = (content, metadata, messageId) => {
37
+ if (content == null) return [];
38
+ if (typeof content === "string") return [{
39
+ type: "text",
40
+ text: content
41
+ }];
42
+ return content.map((part) => {
43
+ if (part.type === "computer_call") {
44
+ const args = part.action;
45
+ return {
46
+ type: "tool-call",
47
+ toolCallId: part.call_id,
48
+ toolName: "computer_call",
49
+ args,
50
+ argsText: stableStringifyToolArgs(metadata.toolArgsKeyOrderCache, getToolArgsCacheKey(messageId, "computer", part.call_id), args)
51
+ };
52
+ }
53
+ const converted = convertLangChainContentBlock(part);
54
+ if (converted === void 0) {
55
+ warnForUnknownMessagePartType(part.type);
56
+ return null;
57
+ }
58
+ return converted;
59
+ }).filter((a) => a !== null);
60
+ };
61
+ const normalizePayload = (value) => {
62
+ var _a;
63
+ return ((_a = parseDataUrl(value)) == null ? void 0 : _a.data) ?? value;
64
+ };
65
+ const attachmentPartKey = (part) => {
66
+ if (part.type === "image" && typeof part.image === "string") return `image:${normalizePayload(part.image)}`;
67
+ if (part.type === "file" && typeof part.data === "string") return `file:${normalizePayload(part.data)}`;
68
+ if (part.type === "audio" && part.audio) return `file:${normalizePayload(part.audio.data)}`;
69
+ return null;
70
+ };
71
+ const dropAttachmentDuplicates = (parts, attachments) => {
72
+ const counts = /* @__PURE__ */ new Map();
73
+ for (const part of attachments.flatMap((a) => a.content)) {
74
+ const key = attachmentPartKey(part);
75
+ if (key) counts.set(key, (counts.get(key) ?? 0) + 1);
76
+ }
77
+ if (counts.size === 0) return parts;
78
+ const dropped = /* @__PURE__ */ new Set();
79
+ for (let i = parts.length - 1; i >= 0; i--) {
80
+ const key = attachmentPartKey(parts[i]);
81
+ if (!key) continue;
82
+ const remaining = counts.get(key);
83
+ if (!remaining) continue;
84
+ counts.set(key, remaining - 1);
85
+ dropped.add(i);
86
+ }
87
+ if (dropped.size === 0) return parts;
88
+ return parts.filter((_, i) => !dropped.has(i));
89
+ };
90
+ const convertLangChainMessages = (message, metadata = {}) => {
91
+ var _a, _b, _c, _d, _e, _f, _g;
92
+ const type = message.type;
93
+ switch (type) {
94
+ case "system":
95
+ return {
96
+ role: "system",
97
+ id: message.id,
98
+ content: [{
99
+ type: "text",
100
+ text: message.content
101
+ }],
102
+ metadata: { custom: getCustomMetadata(message.additional_kwargs) }
103
+ };
104
+ case "human": {
105
+ const attachments = message.id ? (_a = metadata.attachmentsByMessageId) == null ? void 0 : _a.get(message.id) : void 0;
106
+ const parts = contentToParts(message.content, metadata, message.id);
107
+ return {
108
+ role: "user",
109
+ id: message.id,
110
+ content: (attachments == null ? void 0 : attachments.length) ? dropAttachmentDuplicates(parts, attachments) : parts,
111
+ metadata: { custom: getCustomMetadata(message.additional_kwargs) },
112
+ ...(attachments == null ? void 0 : attachments.length) ? { attachments } : {}
113
+ };
114
+ }
115
+ case "ai": {
116
+ const toolCallParts = ((_b = message.tool_calls) == null ? void 0 : _b.map((chunk, idx) => {
117
+ var _a2;
118
+ const fallbackIndex = chunk.index ?? idx;
119
+ const toolCallId = chunk.id ? chunk.id : `lc-toolcall-${message.id ?? "unknown"}-${fallbackIndex}`;
120
+ const matchingToolCallChunk = (_a2 = message.tool_call_chunks) == null ? void 0 : _a2.find((c) => chunk.id ? c.id === chunk.id : c.index === fallbackIndex);
121
+ const { args, argsText } = resolveToolCallArgs({
122
+ chunk,
123
+ matchingToolCallChunk,
124
+ messageId: message.id,
125
+ toolArgsKeyOrderCache: metadata.toolArgsKeyOrderCache,
126
+ toolCallId
127
+ });
128
+ return {
129
+ type: "tool-call",
130
+ toolCallId,
131
+ toolName: chunk.name,
132
+ args,
133
+ argsText
134
+ };
135
+ })) ?? [];
136
+ const normalizedContent = typeof message.content === "string" ? [{
137
+ type: "text",
138
+ text: message.content
139
+ }] : message.content ?? [];
140
+ const allContent = [
141
+ (_c = message.additional_kwargs) == null ? void 0 : _c.reasoning,
142
+ ...normalizedContent,
143
+ ...((_d = message.additional_kwargs) == null ? void 0 : _d.tool_outputs) ?? []
144
+ ].filter((c) => c !== void 0);
145
+ const uiDataParts = (message.id ? (_f = (_e = metadata.uiMessagesByParent) == null ? void 0 : _e.get(message.id)) == null ? void 0 : _f.map(uiMessageToDataPart) : void 0) ?? [];
146
+ const timing = message.id ? (_g = metadata.messageTiming) == null ? void 0 : _g[message.id] : void 0;
147
+ return {
148
+ role: "assistant",
149
+ id: message.id,
150
+ content: [
151
+ ...withAudioTranscript(contentToParts(allContent, metadata, message.id), message.additional_kwargs),
152
+ ...toolCallParts,
153
+ ...uiDataParts
154
+ ],
155
+ metadata: {
156
+ custom: getCustomMetadata(message.additional_kwargs),
157
+ ...timing && { timing }
158
+ },
159
+ ...message.status && { status: message.status }
160
+ };
161
+ }
162
+ case "remove":
163
+ return [];
164
+ case "tool":
165
+ return {
166
+ role: "tool",
167
+ toolName: message.name,
168
+ toolCallId: message.tool_call_id,
169
+ result: message.content,
170
+ artifact: message.artifact,
171
+ isError: message.status === "error"
172
+ };
173
+ default:
174
+ warnForUnknownMessageType(type);
175
+ return [];
176
+ }
177
+ };
178
+ export {
179
+ convertLangChainMessages
180
+ };
181
+ //# sourceMappingURL=convertLangChainMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertLangChainMessages.js","sources":["../../../../../../../node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js"],"sourcesContent":["\"use client\";\nimport { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { parseDataUrl, stableStringifyToolArgs, trackToolArgsKeyOrder } from \"@assistant-ui/core/internal\";\nimport { convertLangChainContentBlock, getCustomMetadata, getMessageContent, uiMessageToDataPart, withAudioTranscript } from \"@assistant-ui/react-langchain/converter\";\n//#region src/convertLangChainMessages.ts\nconst getToolArgsCacheKey = (messageId, kind, toolCallId) => `${messageId ?? \"unknown\"}:${kind}:${toolCallId}`;\nconst resolveToolCallArgs = ({ chunk, matchingToolCallChunk, messageId, toolArgsKeyOrderCache, toolCallId }) => {\n\tconst cacheKey = getToolArgsCacheKey(messageId, \"tool\", toolCallId);\n\tconst streamedArgsText = matchingToolCallChunk?.args ?? matchingToolCallChunk?.args_json;\n\tconst isStreamingArglessChunk = matchingToolCallChunk !== void 0 && streamedArgsText === void 0 && Object.keys(chunk.args).length === 0;\n\tconst providedArgsText = chunk.partial_json ?? streamedArgsText ?? (isStreamingArglessChunk ? \"\" : void 0);\n\tconst argsText = providedArgsText ?? stableStringifyToolArgs(toolArgsKeyOrderCache, cacheKey, chunk.args);\n\tconst parsedPartialArgs = argsText ? parsePartialJsonObject(argsText) : null;\n\tconst args = argsText ? parsedPartialArgs ?? {} : chunk.args;\n\ttrackToolArgsKeyOrder(toolArgsKeyOrderCache, cacheKey, parsedPartialArgs ?? chunk.args);\n\tif (providedArgsText == null) toolArgsKeyOrderCache?.delete(cacheKey);\n\treturn {\n\t\targs,\n\t\targsText\n\t};\n};\nconst warnedMessagePartTypes = /* @__PURE__ */ new Set();\nconst warnForUnknownMessagePartType = (type) => {\n\tif (typeof process === \"undefined\" || process?.env?.NODE_ENV !== \"development\") return;\n\tif (warnedMessagePartTypes.has(type)) return;\n\twarnedMessagePartTypes.add(type);\n\tconsole.warn(`Unknown message part type: ${type}`);\n};\nconst warnedMessageTypes = /* @__PURE__ */ new Set();\nconst warnForUnknownMessageType = (type) => {\n\tif (typeof process === \"undefined\" || process?.env?.NODE_ENV !== \"development\") return;\n\tif (warnedMessageTypes.has(type)) return;\n\twarnedMessageTypes.add(type);\n\tconsole.warn(`Unknown message type: ${type}`);\n};\nconst contentToParts = (content, metadata, messageId) => {\n\tif (content == null) return [];\n\tif (typeof content === \"string\") return [{\n\t\ttype: \"text\",\n\t\ttext: content\n\t}];\n\treturn content.map((part) => {\n\t\tif (part.type === \"computer_call\") {\n\t\t\tconst args = part.action;\n\t\t\treturn {\n\t\t\t\ttype: \"tool-call\",\n\t\t\t\ttoolCallId: part.call_id,\n\t\t\t\ttoolName: \"computer_call\",\n\t\t\t\targs,\n\t\t\t\targsText: stableStringifyToolArgs(metadata.toolArgsKeyOrderCache, getToolArgsCacheKey(messageId, \"computer\", part.call_id), args)\n\t\t\t};\n\t\t}\n\t\tconst converted = convertLangChainContentBlock(part);\n\t\tif (converted === void 0) {\n\t\t\twarnForUnknownMessagePartType(part.type);\n\t\t\treturn null;\n\t\t}\n\t\treturn converted;\n\t}).filter((a) => a !== null);\n};\nconst normalizePayload = (value) => parseDataUrl(value)?.data ?? value;\nconst attachmentPartKey = (part) => {\n\tif (part.type === \"image\" && typeof part.image === \"string\") return `image:${normalizePayload(part.image)}`;\n\tif (part.type === \"file\" && typeof part.data === \"string\") return `file:${normalizePayload(part.data)}`;\n\tif (part.type === \"audio\" && part.audio) return `file:${normalizePayload(part.audio.data)}`;\n\treturn null;\n};\n/**\n* getMessageContent flattens attachment content into the wire message while\n* the runtime reattaches the original attachments for chip rendering, so in\n* the sender's session each attachment payload arrives back twice. Drops the\n* flattened copies, at most one content part per attachment part, consuming\n* from the trailing end because getMessageContent appends the flattened\n* copies after the user's direct content; on reload the staging map is empty\n* and content parts pass through untouched.\n*/\nconst dropAttachmentDuplicates = (parts, attachments) => {\n\tconst counts = /* @__PURE__ */ new Map();\n\tfor (const part of attachments.flatMap((a) => a.content)) {\n\t\tconst key = attachmentPartKey(part);\n\t\tif (key) counts.set(key, (counts.get(key) ?? 0) + 1);\n\t}\n\tif (counts.size === 0) return parts;\n\tconst dropped = /* @__PURE__ */ new Set();\n\tfor (let i = parts.length - 1; i >= 0; i--) {\n\t\tconst key = attachmentPartKey(parts[i]);\n\t\tif (!key) continue;\n\t\tconst remaining = counts.get(key);\n\t\tif (!remaining) continue;\n\t\tcounts.set(key, remaining - 1);\n\t\tdropped.add(i);\n\t}\n\tif (dropped.size === 0) return parts;\n\treturn parts.filter((_, i) => !dropped.has(i));\n};\nconst convertLangChainMessages = (message, metadata = {}) => {\n\tconst type = message.type;\n\tswitch (type) {\n\t\tcase \"system\": return {\n\t\t\trole: \"system\",\n\t\t\tid: message.id,\n\t\t\tcontent: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: message.content\n\t\t\t}],\n\t\t\tmetadata: { custom: getCustomMetadata(message.additional_kwargs) }\n\t\t};\n\t\tcase \"human\": {\n\t\t\tconst attachments = message.id ? metadata.attachmentsByMessageId?.get(message.id) : void 0;\n\t\t\tconst parts = contentToParts(message.content, metadata, message.id);\n\t\t\treturn {\n\t\t\t\trole: \"user\",\n\t\t\t\tid: message.id,\n\t\t\t\tcontent: attachments?.length ? dropAttachmentDuplicates(parts, attachments) : parts,\n\t\t\t\tmetadata: { custom: getCustomMetadata(message.additional_kwargs) },\n\t\t\t\t...attachments?.length ? { attachments } : {}\n\t\t\t};\n\t\t}\n\t\tcase \"ai\": {\n\t\t\tconst toolCallParts = message.tool_calls?.map((chunk, idx) => {\n\t\t\t\tconst fallbackIndex = chunk.index ?? idx;\n\t\t\t\tconst toolCallId = chunk.id ? chunk.id : `lc-toolcall-${message.id ?? \"unknown\"}-${fallbackIndex}`;\n\t\t\t\tconst matchingToolCallChunk = message.tool_call_chunks?.find((c) => chunk.id ? c.id === chunk.id : c.index === fallbackIndex);\n\t\t\t\tconst { args, argsText } = resolveToolCallArgs({\n\t\t\t\t\tchunk,\n\t\t\t\t\tmatchingToolCallChunk,\n\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\ttoolArgsKeyOrderCache: metadata.toolArgsKeyOrderCache,\n\t\t\t\t\ttoolCallId\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\ttoolCallId,\n\t\t\t\t\ttoolName: chunk.name,\n\t\t\t\t\targs,\n\t\t\t\t\targsText\n\t\t\t\t};\n\t\t\t}) ?? [];\n\t\t\tconst normalizedContent = typeof message.content === \"string\" ? [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: message.content\n\t\t\t}] : message.content ?? [];\n\t\t\tconst allContent = [\n\t\t\t\tmessage.additional_kwargs?.reasoning,\n\t\t\t\t...normalizedContent,\n\t\t\t\t...message.additional_kwargs?.tool_outputs ?? []\n\t\t\t].filter((c) => c !== void 0);\n\t\t\tconst uiDataParts = (message.id ? metadata.uiMessagesByParent?.get(message.id)?.map(uiMessageToDataPart) : void 0) ?? [];\n\t\t\tconst timing = message.id ? metadata.messageTiming?.[message.id] : void 0;\n\t\t\treturn {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tid: message.id,\n\t\t\t\tcontent: [\n\t\t\t\t\t...withAudioTranscript(contentToParts(allContent, metadata, message.id), message.additional_kwargs),\n\t\t\t\t\t...toolCallParts,\n\t\t\t\t\t...uiDataParts\n\t\t\t\t],\n\t\t\t\tmetadata: {\n\t\t\t\t\tcustom: getCustomMetadata(message.additional_kwargs),\n\t\t\t\t\t...timing && { timing }\n\t\t\t\t},\n\t\t\t\t...message.status && { status: message.status }\n\t\t\t};\n\t\t}\n\t\tcase \"remove\": return [];\n\t\tcase \"tool\": return {\n\t\t\trole: \"tool\",\n\t\t\ttoolName: message.name,\n\t\t\ttoolCallId: message.tool_call_id,\n\t\t\tresult: message.content,\n\t\t\tartifact: message.artifact,\n\t\t\tisError: message.status === \"error\"\n\t\t};\n\t\tdefault:\n\t\t\twarnForUnknownMessageType(type);\n\t\t\treturn [];\n\t}\n};\n//#endregion\nexport { convertLangChainMessages, getMessageContent };\n\n//# sourceMappingURL=convertLangChainMessages.js.map"],"names":["_a"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const MENTION_HANDLER_REGISTRY = Symbol.for(
4
+ "@athenaintel/agent-runtime/chat-asset-mention-handlers"
5
+ );
6
+ function mentionHandlersByThread() {
7
+ const host = globalThis;
8
+ return host[MENTION_HANDLER_REGISTRY] ?? (host[MENTION_HANDLER_REGISTRY] = /* @__PURE__ */ new Map());
9
+ }
10
+ function registerChatAssetMentionHandler(threadId, handler) {
11
+ mentionHandlersByThread().set(threadId, handler);
12
+ return () => {
13
+ if (mentionHandlersByThread().get(threadId) === handler) {
14
+ mentionHandlersByThread().delete(threadId);
15
+ }
16
+ };
17
+ }
18
+ exports.registerChatAssetMentionHandler = registerChatAssetMentionHandler;
19
+ //# sourceMappingURL=asset-attachment.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-attachment.cjs","sources":["../../../../../agent-runtime/src/asset-attachment.ts"],"sourcesContent":["import type {\n Attachment,\n AttachmentAdapter,\n CompleteAttachment,\n PendingAttachment,\n} from '@assistant-ui/core';\n\n/**\n * Shared Athena asset-attachment choreography (issue #29088): upload the file\n * as a normal Athena asset, insert its final mention into the host composer,\n * and yield no assistant-ui attachment tile — the deep-agent backend resolves\n * the mention (documents via read_asset, images inlined server-side), so no\n * duplicate base64 part ever enters statewire. No preparation state rides the\n * wire: readiness is local to the composer doing the attaching.\n */\n\nexport interface UploadedChatAsset {\n id: string;\n title: string;\n assetType: string;\n}\n\n/** Composer mention-insertion hook. The source file stays local to the client\n * and lets rich composers show a preview without putting image bytes on the\n * statewire. The return value is awaited when it is a promise and otherwise\n * ignored, so ordinary event-handler arrows fit. */\nexport type ChatAssetMentionHandler = (\n asset: UploadedChatAsset,\n sourceFile?: File,\n) => unknown;\n\n/**\n * The registry lives on `globalThis`, not in module scope, because two copies\n * of this module can run in one page: the SDK bundles agent-runtime into its\n * dist (the package is private, so the published SDK must inline it) while a\n * host such as the Chrome extension imports agent-runtime directly. The SDK\n * composer registers through the SDK's copy and the host's attachment adapter\n * looks the handler up through its own, so a module-local map would never see\n * the registration.\n */\nconst MENTION_HANDLER_REGISTRY = Symbol.for(\n '@athenaintel/agent-runtime/chat-asset-mention-handlers'\n);\n\ntype MentionHandlerRegistryHost = typeof globalThis & {\n [MENTION_HANDLER_REGISTRY]?: Map<string, ChatAssetMentionHandler>;\n};\n\nfunction mentionHandlersByThread(): Map<string, ChatAssetMentionHandler> {\n const host = globalThis as MentionHandlerRegistryHost;\n return (host[MENTION_HANDLER_REGISTRY] ??= new Map());\n}\n\n/**\n * Register the composer's mention-insertion hook for one thread. The hook is\n * the per-client seam — TipTap on web, the native editor bridge on mobile —\n * and the identity-checked unregister keeps a stale composer from clobbering\n * a newer registration.\n */\nexport function registerChatAssetMentionHandler(\n threadId: string,\n handler: ChatAssetMentionHandler\n): () => void {\n mentionHandlersByThread().set(threadId, handler);\n return () => {\n if (mentionHandlersByThread().get(threadId) === handler) {\n mentionHandlersByThread().delete(threadId);\n }\n };\n}\n\nexport function getChatAssetMentionHandler(\n threadId: string\n): ChatAssetMentionHandler | undefined {\n return mentionHandlersByThread().get(threadId);\n}\n\nexport interface ChatAssetUploadResponse {\n success?: Array<{\n id?: unknown;\n title?: unknown;\n file_name?: unknown;\n athena_original_type?: unknown;\n }>;\n}\n\n/**\n * Map agora's `/api/upload/` response to the mention payload. Title falls\n * back `title → file_name → local file name`; the asset type falls back to\n * the caller's sniffed default when the row carries none.\n */\nexport function uploadedChatAsset(args: {\n body: ChatAssetUploadResponse;\n fallbackTitle: string;\n fallbackAssetType: string;\n}): UploadedChatAsset {\n const row = args.body.success?.[0];\n if (!row || typeof row.id !== 'string') {\n throw new Error('The upload finished without creating an asset.');\n }\n const title =\n typeof row.title === 'string' && row.title.trim()\n ? row.title\n : typeof row.file_name === 'string' && row.file_name.trim()\n ? row.file_name\n : args.fallbackTitle;\n return {\n id: row.id,\n title,\n assetType:\n typeof row.athena_original_type === 'string' && row.athena_original_type.length > 0\n ? row.athena_original_type\n : args.fallbackAssetType,\n };\n}\n\n/** The local default when the upload response carries no asset type. */\nexport function sniffAssetTypeForFile(file: { type: string }): string {\n if (file.type.startsWith('image/')) return 'image';\n if (file.type === 'application/pdf') return 'pdf';\n return 'file';\n}\n\nexport interface UploadChatAssetOptions {\n /** Agora base URL (trailing slashes tolerated). */\n baseUrl: string;\n file: File;\n /** Auth headers for the upload request. */\n headers: () => Promise<Record<string, string>> | Record<string, string>;\n /**\n * Fresh headers for exactly one retry after a 401 (e.g. a force-renewed\n * token). Omitted, a 401 fails like any other error status.\n */\n retryHeadersOn401?: () => Promise<Record<string, string>> | Record<string, string>;\n /** Upload timeout; the request aborts (and the add() rejects) past it. */\n timeoutMs?: number;\n}\n\nconst DEFAULT_UPLOAD_TIMEOUT_MS = 60_000;\n\nasync function uploadOnce(\n options: UploadChatAssetOptions,\n headers: Record<string, string>\n): Promise<Response> {\n const form = new FormData();\n form.append('files', options.file, options.file.name);\n return fetch(`${options.baseUrl.replace(/\\/+$/, '')}/api/upload/`, {\n method: 'POST',\n headers,\n body: form,\n signal: AbortSignal.timeout(options.timeoutMs ?? DEFAULT_UPLOAD_TIMEOUT_MS),\n });\n}\n\n/**\n * Upload one file as an Athena asset through agora's `/api/upload/`.\n * Cancellation and the timeout live inside the adapter path by construction:\n * the abort signal rejects the `add()` generator, so the composer's send\n * (which awaits adapter completion) can never race a hung upload.\n */\nexport async function uploadChatAsset(\n options: UploadChatAssetOptions\n): Promise<UploadedChatAsset> {\n let response = await uploadOnce(options, await options.headers());\n if (response.status === 401 && options.retryHeadersOn401) {\n response = await uploadOnce(options, await options.retryHeadersOn401());\n }\n if (!response.ok) {\n const detail = await response.text().catch(() => '');\n throw new Error(\n `Attachment upload failed (${response.status})${\n detail ? `: ${detail.slice(0, 200)}` : ''\n }`\n );\n }\n return uploadedChatAsset({\n body: (await response.json()) as ChatAssetUploadResponse,\n fallbackTitle: options.file.name,\n fallbackAssetType: sniffAssetTypeForFile(options.file),\n });\n}\n\nexport interface AthenaAssetAttachmentAdapterOptions {\n threadId: string;\n /** File-picker filter; defaults to images (the deep-agent mention path). */\n accept?: string;\n /** Platform upload transport; most hosts wrap {@link uploadChatAsset}. */\n upload: (file: File) => Promise<UploadedChatAsset>;\n}\n\n/**\n * The shared mention-backed attachment adapter: `add()` requires the thread's\n * registered composer hook up front (no upload cost when the composer is\n * gone), uploads, then inserts the mention into the thread's CURRENT hook —\n * a same-thread composer remount mid-upload still receives the mention, and\n * the thread-keyed registry makes cross-thread insertion impossible by\n * construction. A thread whose hook is gone after the upload rejects with a\n * visible error (the conversation closed; the user must re-attach).\n * `send()` throws by contract: mention-backed attachments are never message\n * parts.\n */\nexport class AthenaAssetAttachmentAdapter implements AttachmentAdapter {\n readonly accept: string;\n\n constructor(private readonly options: AthenaAssetAttachmentAdapterOptions) {\n this.accept = options.accept ?? 'image/*';\n }\n\n // eslint-disable-next-line require-yield -- mention-backed uploads deliberately create no attachment tile\n async *add(args: { file: File }): AsyncGenerator<PendingAttachment, void> {\n const handler = getChatAssetMentionHandler(this.options.threadId);\n if (handler === undefined) {\n throw new Error('The original conversation is no longer open.');\n }\n const uploaded = await this.options.upload(args.file);\n const current = getChatAssetMentionHandler(this.options.threadId);\n if (current === undefined) {\n throw new Error('The original conversation is no longer open.');\n }\n await current(uploaded, args.file);\n }\n\n async remove(_attachment: Attachment): Promise<void> {}\n\n async send(_attachment: PendingAttachment): Promise<CompleteAttachment> {\n throw new Error('Mention-backed attachments are not sent as message parts.');\n }\n}\n"],"names":[],"mappings":";;AAwCA,MAAM,2BAA2B,OAAO;AAAA,EACtC;AACF;AAMA,SAAS,0BAAgE;AACvE,QAAM,OAAO;AACb,SAAQ,oEAAmC,oBAAI,IAAA;AACjD;AAQO,SAAS,gCACd,UACA,SACY;AACZ,4BAA0B,IAAI,UAAU,OAAO;AAC/C,SAAO,MAAM;AACX,QAAI,wBAAA,EAA0B,IAAI,QAAQ,MAAM,SAAS;AACvD,8BAAA,EAA0B,OAAO,QAAQ;AAAA,IAC3C;AAAA,EACF;AACF;;"}
@@ -0,0 +1,19 @@
1
+ const MENTION_HANDLER_REGISTRY = Symbol.for(
2
+ "@athenaintel/agent-runtime/chat-asset-mention-handlers"
3
+ );
4
+ function mentionHandlersByThread() {
5
+ const host = globalThis;
6
+ return host[MENTION_HANDLER_REGISTRY] ?? (host[MENTION_HANDLER_REGISTRY] = /* @__PURE__ */ new Map());
7
+ }
8
+ function registerChatAssetMentionHandler(threadId, handler) {
9
+ mentionHandlersByThread().set(threadId, handler);
10
+ return () => {
11
+ if (mentionHandlersByThread().get(threadId) === handler) {
12
+ mentionHandlersByThread().delete(threadId);
13
+ }
14
+ };
15
+ }
16
+ export {
17
+ registerChatAssetMentionHandler
18
+ };
19
+ //# sourceMappingURL=asset-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-attachment.js","sources":["../../../../../agent-runtime/src/asset-attachment.ts"],"sourcesContent":["import type {\n Attachment,\n AttachmentAdapter,\n CompleteAttachment,\n PendingAttachment,\n} from '@assistant-ui/core';\n\n/**\n * Shared Athena asset-attachment choreography (issue #29088): upload the file\n * as a normal Athena asset, insert its final mention into the host composer,\n * and yield no assistant-ui attachment tile — the deep-agent backend resolves\n * the mention (documents via read_asset, images inlined server-side), so no\n * duplicate base64 part ever enters statewire. No preparation state rides the\n * wire: readiness is local to the composer doing the attaching.\n */\n\nexport interface UploadedChatAsset {\n id: string;\n title: string;\n assetType: string;\n}\n\n/** Composer mention-insertion hook. The source file stays local to the client\n * and lets rich composers show a preview without putting image bytes on the\n * statewire. The return value is awaited when it is a promise and otherwise\n * ignored, so ordinary event-handler arrows fit. */\nexport type ChatAssetMentionHandler = (\n asset: UploadedChatAsset,\n sourceFile?: File,\n) => unknown;\n\n/**\n * The registry lives on `globalThis`, not in module scope, because two copies\n * of this module can run in one page: the SDK bundles agent-runtime into its\n * dist (the package is private, so the published SDK must inline it) while a\n * host such as the Chrome extension imports agent-runtime directly. The SDK\n * composer registers through the SDK's copy and the host's attachment adapter\n * looks the handler up through its own, so a module-local map would never see\n * the registration.\n */\nconst MENTION_HANDLER_REGISTRY = Symbol.for(\n '@athenaintel/agent-runtime/chat-asset-mention-handlers'\n);\n\ntype MentionHandlerRegistryHost = typeof globalThis & {\n [MENTION_HANDLER_REGISTRY]?: Map<string, ChatAssetMentionHandler>;\n};\n\nfunction mentionHandlersByThread(): Map<string, ChatAssetMentionHandler> {\n const host = globalThis as MentionHandlerRegistryHost;\n return (host[MENTION_HANDLER_REGISTRY] ??= new Map());\n}\n\n/**\n * Register the composer's mention-insertion hook for one thread. The hook is\n * the per-client seam — TipTap on web, the native editor bridge on mobile —\n * and the identity-checked unregister keeps a stale composer from clobbering\n * a newer registration.\n */\nexport function registerChatAssetMentionHandler(\n threadId: string,\n handler: ChatAssetMentionHandler\n): () => void {\n mentionHandlersByThread().set(threadId, handler);\n return () => {\n if (mentionHandlersByThread().get(threadId) === handler) {\n mentionHandlersByThread().delete(threadId);\n }\n };\n}\n\nexport function getChatAssetMentionHandler(\n threadId: string\n): ChatAssetMentionHandler | undefined {\n return mentionHandlersByThread().get(threadId);\n}\n\nexport interface ChatAssetUploadResponse {\n success?: Array<{\n id?: unknown;\n title?: unknown;\n file_name?: unknown;\n athena_original_type?: unknown;\n }>;\n}\n\n/**\n * Map agora's `/api/upload/` response to the mention payload. Title falls\n * back `title → file_name → local file name`; the asset type falls back to\n * the caller's sniffed default when the row carries none.\n */\nexport function uploadedChatAsset(args: {\n body: ChatAssetUploadResponse;\n fallbackTitle: string;\n fallbackAssetType: string;\n}): UploadedChatAsset {\n const row = args.body.success?.[0];\n if (!row || typeof row.id !== 'string') {\n throw new Error('The upload finished without creating an asset.');\n }\n const title =\n typeof row.title === 'string' && row.title.trim()\n ? row.title\n : typeof row.file_name === 'string' && row.file_name.trim()\n ? row.file_name\n : args.fallbackTitle;\n return {\n id: row.id,\n title,\n assetType:\n typeof row.athena_original_type === 'string' && row.athena_original_type.length > 0\n ? row.athena_original_type\n : args.fallbackAssetType,\n };\n}\n\n/** The local default when the upload response carries no asset type. */\nexport function sniffAssetTypeForFile(file: { type: string }): string {\n if (file.type.startsWith('image/')) return 'image';\n if (file.type === 'application/pdf') return 'pdf';\n return 'file';\n}\n\nexport interface UploadChatAssetOptions {\n /** Agora base URL (trailing slashes tolerated). */\n baseUrl: string;\n file: File;\n /** Auth headers for the upload request. */\n headers: () => Promise<Record<string, string>> | Record<string, string>;\n /**\n * Fresh headers for exactly one retry after a 401 (e.g. a force-renewed\n * token). Omitted, a 401 fails like any other error status.\n */\n retryHeadersOn401?: () => Promise<Record<string, string>> | Record<string, string>;\n /** Upload timeout; the request aborts (and the add() rejects) past it. */\n timeoutMs?: number;\n}\n\nconst DEFAULT_UPLOAD_TIMEOUT_MS = 60_000;\n\nasync function uploadOnce(\n options: UploadChatAssetOptions,\n headers: Record<string, string>\n): Promise<Response> {\n const form = new FormData();\n form.append('files', options.file, options.file.name);\n return fetch(`${options.baseUrl.replace(/\\/+$/, '')}/api/upload/`, {\n method: 'POST',\n headers,\n body: form,\n signal: AbortSignal.timeout(options.timeoutMs ?? DEFAULT_UPLOAD_TIMEOUT_MS),\n });\n}\n\n/**\n * Upload one file as an Athena asset through agora's `/api/upload/`.\n * Cancellation and the timeout live inside the adapter path by construction:\n * the abort signal rejects the `add()` generator, so the composer's send\n * (which awaits adapter completion) can never race a hung upload.\n */\nexport async function uploadChatAsset(\n options: UploadChatAssetOptions\n): Promise<UploadedChatAsset> {\n let response = await uploadOnce(options, await options.headers());\n if (response.status === 401 && options.retryHeadersOn401) {\n response = await uploadOnce(options, await options.retryHeadersOn401());\n }\n if (!response.ok) {\n const detail = await response.text().catch(() => '');\n throw new Error(\n `Attachment upload failed (${response.status})${\n detail ? `: ${detail.slice(0, 200)}` : ''\n }`\n );\n }\n return uploadedChatAsset({\n body: (await response.json()) as ChatAssetUploadResponse,\n fallbackTitle: options.file.name,\n fallbackAssetType: sniffAssetTypeForFile(options.file),\n });\n}\n\nexport interface AthenaAssetAttachmentAdapterOptions {\n threadId: string;\n /** File-picker filter; defaults to images (the deep-agent mention path). */\n accept?: string;\n /** Platform upload transport; most hosts wrap {@link uploadChatAsset}. */\n upload: (file: File) => Promise<UploadedChatAsset>;\n}\n\n/**\n * The shared mention-backed attachment adapter: `add()` requires the thread's\n * registered composer hook up front (no upload cost when the composer is\n * gone), uploads, then inserts the mention into the thread's CURRENT hook —\n * a same-thread composer remount mid-upload still receives the mention, and\n * the thread-keyed registry makes cross-thread insertion impossible by\n * construction. A thread whose hook is gone after the upload rejects with a\n * visible error (the conversation closed; the user must re-attach).\n * `send()` throws by contract: mention-backed attachments are never message\n * parts.\n */\nexport class AthenaAssetAttachmentAdapter implements AttachmentAdapter {\n readonly accept: string;\n\n constructor(private readonly options: AthenaAssetAttachmentAdapterOptions) {\n this.accept = options.accept ?? 'image/*';\n }\n\n // eslint-disable-next-line require-yield -- mention-backed uploads deliberately create no attachment tile\n async *add(args: { file: File }): AsyncGenerator<PendingAttachment, void> {\n const handler = getChatAssetMentionHandler(this.options.threadId);\n if (handler === undefined) {\n throw new Error('The original conversation is no longer open.');\n }\n const uploaded = await this.options.upload(args.file);\n const current = getChatAssetMentionHandler(this.options.threadId);\n if (current === undefined) {\n throw new Error('The original conversation is no longer open.');\n }\n await current(uploaded, args.file);\n }\n\n async remove(_attachment: Attachment): Promise<void> {}\n\n async send(_attachment: PendingAttachment): Promise<CompleteAttachment> {\n throw new Error('Mention-backed attachments are not sent as message parts.');\n }\n}\n"],"names":[],"mappings":"AAwCA,MAAM,2BAA2B,OAAO;AAAA,EACtC;AACF;AAMA,SAAS,0BAAgE;AACvE,QAAM,OAAO;AACb,SAAQ,oEAAmC,oBAAI,IAAA;AACjD;AAQO,SAAS,gCACd,UACA,SACY;AACZ,4BAA0B,IAAI,UAAU,OAAO;AAC/C,SAAO,MAAM;AACX,QAAI,wBAAA,EAA0B,IAAI,QAAQ,MAAM,SAAS;AACvD,8BAAA,EAA0B,OAAO,QAAQ;AAAA,IAC3C;AAAA,EACF;AACF;"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const AUTH_DENIAL_PARK_THRESHOLD = 8;
4
+ const initialAuthDenialTrackerState = () => ({
5
+ lastAttempt: null,
6
+ consecutive: 0,
7
+ message: void 0
8
+ });
9
+ function observeAuthDenial(state, connection, { threshold = AUTH_DENIAL_PARK_THRESHOLD } = {}) {
10
+ if (connection.status !== "retrying" || connection.cause !== "unauthorized") {
11
+ if (connection.status === "connecting" || connection.status === "retrying" && connection.cause === void 0) {
12
+ return { state, park: false };
13
+ }
14
+ return { state: initialAuthDenialTrackerState(), park: false };
15
+ }
16
+ const attempt = connection.attempt;
17
+ if (attempt === state.lastAttempt) return { state, park: false };
18
+ const next = {
19
+ lastAttempt: attempt,
20
+ consecutive: state.consecutive + 1,
21
+ message: connection.message ?? state.message
22
+ };
23
+ return { state: next, park: next.consecutive >= threshold };
24
+ }
25
+ exports.AUTH_DENIAL_PARK_THRESHOLD = AUTH_DENIAL_PARK_THRESHOLD;
26
+ exports.initialAuthDenialTrackerState = initialAuthDenialTrackerState;
27
+ exports.observeAuthDenial = observeAuthDenial;
28
+ //# sourceMappingURL=auth-denial.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-denial.cjs","sources":["../../../../../agent-runtime/src/auth-denial.ts"],"sourcesContent":["import type { DeepAgentConnectionState } from './types';\n\n/**\n * How many consecutive `unauthorized` attach denials park the transport.\n *\n * The client's reconnect backoff reaches its 30s ceiling around the eighth\n * attempt, so eight denials ≈ one minute of the server actively refusing the\n * credential. Transient auth blips (a tab waking with a stale token that\n * refreshes on the next attempt) recover in one or two attempts and never\n * park; a credential the server keeps refusing (revoked access, no workspace)\n * would otherwise retry every 30s indefinitely — the prod \"attach denied\"\n * loops ran for hours per tab.\n */\nexport const AUTH_DENIAL_PARK_THRESHOLD = 8;\n\nexport interface AuthDenialTrackerState {\n /** Reconnect attempt number of the last counted denial (dedupes converter re-runs). */\n lastAttempt: number | null;\n /** Consecutive `unauthorized` denials observed on this attach. */\n consecutive: number;\n /** The denial's host-supplied message, kept for the parked connection state. */\n message: string | undefined;\n}\n\nexport const initialAuthDenialTrackerState = (): AuthDenialTrackerState => ({\n lastAttempt: null,\n consecutive: 0,\n message: undefined,\n});\n\n/** Count distinct unauthorized retries, preserving the streak during each dial. */\nexport function observeAuthDenial(\n state: AuthDenialTrackerState,\n connection: DeepAgentConnectionState,\n { threshold = AUTH_DENIAL_PARK_THRESHOLD }: { threshold?: number } = {}\n): { state: AuthDenialTrackerState; park: boolean } {\n if (connection.status !== 'retrying' || connection.cause !== 'unauthorized') {\n if (\n connection.status === 'connecting' ||\n (connection.status === 'retrying' && connection.cause === undefined)\n ) {\n return { state, park: false };\n }\n return { state: initialAuthDenialTrackerState(), park: false };\n }\n const attempt = connection.attempt;\n if (attempt === state.lastAttempt) return { state, park: false };\n const next: AuthDenialTrackerState = {\n lastAttempt: attempt,\n consecutive: state.consecutive + 1,\n message: connection.message ?? state.message,\n };\n return { state: next, park: next.consecutive >= threshold };\n}\n"],"names":[],"mappings":";;AAaO,MAAM,6BAA6B;AAWnC,MAAM,gCAAgC,OAA+B;AAAA,EAC1E,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AACX;AAGO,SAAS,kBACd,OACA,YACA,EAAE,YAAY,2BAAA,IAAuD,IACnB;AAClD,MAAI,WAAW,WAAW,cAAc,WAAW,UAAU,gBAAgB;AAC3E,QACE,WAAW,WAAW,gBACrB,WAAW,WAAW,cAAc,WAAW,UAAU,QAC1D;AACA,aAAO,EAAE,OAAO,MAAM,MAAA;AAAA,IACxB;AACA,WAAO,EAAE,OAAO,iCAAiC,MAAM,MAAA;AAAA,EACzD;AACA,QAAM,UAAU,WAAW;AAC3B,MAAI,YAAY,MAAM,oBAAoB,EAAE,OAAO,MAAM,MAAA;AACzD,QAAM,OAA+B;AAAA,IACnC,aAAa;AAAA,IACb,aAAa,MAAM,cAAc;AAAA,IACjC,SAAS,WAAW,WAAW,MAAM;AAAA,EAAA;AAEvC,SAAO,EAAE,OAAO,MAAM,MAAM,KAAK,eAAe,UAAA;AAClD;;;;"}
@@ -0,0 +1,28 @@
1
+ const AUTH_DENIAL_PARK_THRESHOLD = 8;
2
+ const initialAuthDenialTrackerState = () => ({
3
+ lastAttempt: null,
4
+ consecutive: 0,
5
+ message: void 0
6
+ });
7
+ function observeAuthDenial(state, connection, { threshold = AUTH_DENIAL_PARK_THRESHOLD } = {}) {
8
+ if (connection.status !== "retrying" || connection.cause !== "unauthorized") {
9
+ if (connection.status === "connecting" || connection.status === "retrying" && connection.cause === void 0) {
10
+ return { state, park: false };
11
+ }
12
+ return { state: initialAuthDenialTrackerState(), park: false };
13
+ }
14
+ const attempt = connection.attempt;
15
+ if (attempt === state.lastAttempt) return { state, park: false };
16
+ const next = {
17
+ lastAttempt: attempt,
18
+ consecutive: state.consecutive + 1,
19
+ message: connection.message ?? state.message
20
+ };
21
+ return { state: next, park: next.consecutive >= threshold };
22
+ }
23
+ export {
24
+ AUTH_DENIAL_PARK_THRESHOLD,
25
+ initialAuthDenialTrackerState,
26
+ observeAuthDenial
27
+ };
28
+ //# sourceMappingURL=auth-denial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-denial.js","sources":["../../../../../agent-runtime/src/auth-denial.ts"],"sourcesContent":["import type { DeepAgentConnectionState } from './types';\n\n/**\n * How many consecutive `unauthorized` attach denials park the transport.\n *\n * The client's reconnect backoff reaches its 30s ceiling around the eighth\n * attempt, so eight denials ≈ one minute of the server actively refusing the\n * credential. Transient auth blips (a tab waking with a stale token that\n * refreshes on the next attempt) recover in one or two attempts and never\n * park; a credential the server keeps refusing (revoked access, no workspace)\n * would otherwise retry every 30s indefinitely — the prod \"attach denied\"\n * loops ran for hours per tab.\n */\nexport const AUTH_DENIAL_PARK_THRESHOLD = 8;\n\nexport interface AuthDenialTrackerState {\n /** Reconnect attempt number of the last counted denial (dedupes converter re-runs). */\n lastAttempt: number | null;\n /** Consecutive `unauthorized` denials observed on this attach. */\n consecutive: number;\n /** The denial's host-supplied message, kept for the parked connection state. */\n message: string | undefined;\n}\n\nexport const initialAuthDenialTrackerState = (): AuthDenialTrackerState => ({\n lastAttempt: null,\n consecutive: 0,\n message: undefined,\n});\n\n/** Count distinct unauthorized retries, preserving the streak during each dial. */\nexport function observeAuthDenial(\n state: AuthDenialTrackerState,\n connection: DeepAgentConnectionState,\n { threshold = AUTH_DENIAL_PARK_THRESHOLD }: { threshold?: number } = {}\n): { state: AuthDenialTrackerState; park: boolean } {\n if (connection.status !== 'retrying' || connection.cause !== 'unauthorized') {\n if (\n connection.status === 'connecting' ||\n (connection.status === 'retrying' && connection.cause === undefined)\n ) {\n return { state, park: false };\n }\n return { state: initialAuthDenialTrackerState(), park: false };\n }\n const attempt = connection.attempt;\n if (attempt === state.lastAttempt) return { state, park: false };\n const next: AuthDenialTrackerState = {\n lastAttempt: attempt,\n consecutive: state.consecutive + 1,\n message: connection.message ?? state.message,\n };\n return { state: next, park: next.consecutive >= threshold };\n}\n"],"names":[],"mappings":"AAaO,MAAM,6BAA6B;AAWnC,MAAM,gCAAgC,OAA+B;AAAA,EAC1E,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AACX;AAGO,SAAS,kBACd,OACA,YACA,EAAE,YAAY,2BAAA,IAAuD,IACnB;AAClD,MAAI,WAAW,WAAW,cAAc,WAAW,UAAU,gBAAgB;AAC3E,QACE,WAAW,WAAW,gBACrB,WAAW,WAAW,cAAc,WAAW,UAAU,QAC1D;AACA,aAAO,EAAE,OAAO,MAAM,MAAA;AAAA,IACxB;AACA,WAAO,EAAE,OAAO,iCAAiC,MAAM,MAAA;AAAA,EACzD;AACA,QAAM,UAAU,WAAW;AAC3B,MAAI,YAAY,MAAM,oBAAoB,EAAE,OAAO,MAAM,MAAA;AACzD,QAAM,OAA+B;AAAA,IACnC,aAAa;AAAA,IACb,aAAa,MAAM,cAAc;AAAA,IACjC,SAAS,WAAW,WAAW,MAAM;AAAA,EAAA;AAEvC,SAAO,EAAE,OAAO,MAAM,MAAM,KAAK,eAAe,UAAA;AAClD;"}