@athenaintel/react 0.19.0 → 0.21.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 (987) hide show
  1. package/README.md +171 -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 +370 -0
  27. package/dist/assets/use-asset-embed.cjs.map +1 -0
  28. package/dist/assets/use-asset-embed.js +370 -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 +189 -0
  56. package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
  57. package/dist/chat/StatewireApprovalCard.d.ts +14 -0
  58. package/dist/chat/StatewireApprovalCard.js +189 -0
  59. package/dist/chat/StatewireApprovalCard.js.map +1 -0
  60. package/dist/chat/StatewireClientToolBridge.cjs +51 -0
  61. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
  62. package/dist/chat/StatewireClientToolBridge.js +51 -0
  63. package/dist/chat/StatewireClientToolBridge.js.map +1 -0
  64. package/dist/chat/StatewireQueuedMessages.cjs +433 -0
  65. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
  66. package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
  67. package/dist/chat/StatewireQueuedMessages.js +433 -0
  68. package/dist/chat/StatewireQueuedMessages.js.map +1 -0
  69. package/dist/chat/athena-citation-links.cjs +342 -0
  70. package/dist/chat/athena-citation-links.cjs.map +1 -0
  71. package/dist/chat/athena-citation-links.js +342 -0
  72. package/dist/chat/athena-citation-links.js.map +1 -0
  73. package/dist/chat/run-activity.cjs +28 -0
  74. package/dist/chat/run-activity.cjs.map +1 -0
  75. package/dist/chat/run-activity.js +28 -0
  76. package/dist/chat/run-activity.js.map +1 -0
  77. package/dist/chat/statewire-banners.cjs +83 -0
  78. package/dist/chat/statewire-banners.cjs.map +1 -0
  79. package/dist/chat/statewire-banners.js +83 -0
  80. package/dist/chat/statewire-banners.js.map +1 -0
  81. package/dist/chat/statewire-client-tools.cjs +74 -0
  82. package/dist/chat/statewire-client-tools.cjs.map +1 -0
  83. package/dist/chat/statewire-client-tools.js +74 -0
  84. package/dist/chat/statewire-client-tools.js.map +1 -0
  85. package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
  86. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
  87. package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
  88. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
  89. package/dist/chat/super-grouping/SuperGroupingCard.cjs +243 -0
  90. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
  91. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +14 -7
  92. package/dist/chat/super-grouping/SuperGroupingCard.js +243 -0
  93. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
  94. package/dist/chat/super-grouping/ToolTimeline.cjs +131 -0
  95. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -0
  96. package/dist/chat/super-grouping/ToolTimeline.d.ts +16 -0
  97. package/dist/chat/super-grouping/ToolTimeline.js +131 -0
  98. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -0
  99. package/dist/chat/super-grouping/activity-timeline.cjs +157 -0
  100. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
  101. package/dist/chat/super-grouping/activity-timeline.d.ts +6 -3
  102. package/dist/chat/super-grouping/activity-timeline.js +157 -0
  103. package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
  104. package/dist/chat/super-grouping/grouping-function.cjs +55 -0
  105. package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
  106. package/dist/chat/super-grouping/grouping-function.js +55 -0
  107. package/dist/chat/super-grouping/grouping-function.js.map +1 -0
  108. package/dist/chat/super-grouping/index.cjs +26 -0
  109. package/dist/chat/super-grouping/index.cjs.map +1 -0
  110. package/dist/chat/super-grouping/index.js +26 -0
  111. package/dist/chat/super-grouping/index.js.map +1 -0
  112. package/dist/chat/super-grouping/timeline-step.cjs +65 -0
  113. package/dist/chat/super-grouping/timeline-step.cjs.map +1 -0
  114. package/dist/chat/super-grouping/timeline-step.d.ts +17 -0
  115. package/dist/chat/super-grouping/timeline-step.js +65 -0
  116. package/dist/chat/super-grouping/timeline-step.js.map +1 -0
  117. package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
  118. package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
  119. package/dist/chat/super-grouping/toolkit-map.js +96 -0
  120. package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
  121. package/dist/chat/tiptap-text.cjs +101 -0
  122. package/dist/chat/tiptap-text.cjs.map +1 -0
  123. package/dist/chat/tiptap-text.js +101 -0
  124. package/dist/chat/tiptap-text.js.map +1 -0
  125. package/dist/chat/tooltip-icon-button.cjs +32 -0
  126. package/dist/chat/tooltip-icon-button.cjs.map +1 -0
  127. package/dist/chat/tooltip-icon-button.js +32 -0
  128. package/dist/chat/tooltip-icon-button.js.map +1 -0
  129. package/dist/chat/use-athena-run-live.cjs +24 -0
  130. package/dist/chat/use-athena-run-live.cjs.map +1 -0
  131. package/dist/chat/use-athena-run-live.d.ts +10 -0
  132. package/dist/chat/use-athena-run-live.js +24 -0
  133. package/dist/chat/use-athena-run-live.js.map +1 -0
  134. package/dist/chat/use-statewire-approval-request.cjs +51 -0
  135. package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
  136. package/dist/chat/use-statewire-approval-request.d.ts +12 -2
  137. package/dist/chat/use-statewire-approval-request.js +51 -0
  138. package/dist/chat/use-statewire-approval-request.js.map +1 -0
  139. package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
  140. package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
  141. package/dist/chat-ui/auth/sign-in-card.js +128 -0
  142. package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
  143. package/dist/chat-ui/composer/composer-action.cjs +11 -0
  144. package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
  145. package/dist/chat-ui/composer/composer-action.d.ts +5 -8
  146. package/dist/chat-ui/composer/composer-action.js +11 -0
  147. package/dist/chat-ui/composer/composer-action.js.map +1 -0
  148. package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
  149. package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
  150. package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
  151. package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
  152. package/dist/chat-ui/composer/tiptap-composer.cjs +549 -0
  153. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
  154. package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
  155. package/dist/chat-ui/composer/tiptap-composer.js +549 -0
  156. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
  157. package/dist/chat-ui/header/chat-header.cjs +33 -0
  158. package/dist/chat-ui/header/chat-header.cjs.map +1 -0
  159. package/dist/chat-ui/header/chat-header.js +33 -0
  160. package/dist/chat-ui/header/chat-header.js.map +1 -0
  161. package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
  162. package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
  163. package/dist/chat-ui/header/conversation-history-panel.js +369 -0
  164. package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
  165. package/dist/chat-ui/index.cjs +140 -0
  166. package/dist/chat-ui/index.cjs.map +1 -0
  167. package/dist/chat-ui/index.d.ts +4 -3
  168. package/dist/chat-ui/index.js +140 -0
  169. package/dist/chat-ui/index.js.map +1 -0
  170. package/dist/chat-ui/lib/asset-urls.cjs +18 -0
  171. package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
  172. package/dist/chat-ui/lib/asset-urls.js +18 -0
  173. package/dist/chat-ui/lib/asset-urls.js.map +1 -0
  174. package/dist/chat-ui/mentions/mention-chip.cjs +253 -0
  175. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
  176. package/dist/chat-ui/mentions/mention-chip.d.ts +11 -0
  177. package/dist/chat-ui/mentions/mention-chip.js +253 -0
  178. package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
  179. package/dist/chat-ui/mentions/mention-extension.cjs +196 -0
  180. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
  181. package/dist/chat-ui/mentions/mention-extension.d.ts +26 -2
  182. package/dist/chat-ui/mentions/mention-extension.js +196 -0
  183. package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
  184. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
  185. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
  186. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
  187. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
  188. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
  189. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
  190. package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
  191. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
  192. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
  193. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
  194. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
  195. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
  196. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
  197. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
  198. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
  199. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
  200. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
  201. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
  202. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
  203. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
  204. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
  205. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +65 -0
  206. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
  207. package/dist/chat-ui/mentions/suggestions/components/menu-item.d.ts +2 -2
  208. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +65 -0
  209. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
  210. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
  211. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
  212. package/dist/chat-ui/mentions/suggestions/components/menu-list.d.ts +2 -2
  213. package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
  214. package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
  215. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
  216. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
  217. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
  218. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
  219. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
  220. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
  221. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
  222. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
  223. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
  224. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
  225. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
  226. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
  227. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
  228. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
  229. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
  230. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
  231. package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
  232. package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
  233. package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
  234. package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
  235. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +124 -0
  236. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
  237. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +13 -2
  238. package/dist/chat-ui/mentions/suggestions/data/api-client.js +124 -0
  239. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
  240. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
  241. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
  242. package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
  243. package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
  244. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
  245. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
  246. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
  247. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
  248. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
  249. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
  250. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
  251. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
  252. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
  253. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
  254. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
  255. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
  256. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
  257. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
  258. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
  259. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
  260. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
  261. package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
  262. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
  263. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
  264. package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
  265. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
  266. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
  267. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
  268. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
  269. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
  270. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
  271. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
  272. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
  273. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
  274. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
  275. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
  276. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
  277. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
  278. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
  279. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
  280. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
  281. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
  282. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
  283. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
  284. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
  285. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
  286. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
  287. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
  288. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
  289. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
  290. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
  291. package/dist/chat-ui/messages/continue-pill.cjs +54 -0
  292. package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
  293. package/dist/chat-ui/messages/continue-pill.js +54 -0
  294. package/dist/chat-ui/messages/continue-pill.js.map +1 -0
  295. package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
  296. package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
  297. package/dist/chat-ui/messages/message-actions-config.js +12 -0
  298. package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
  299. package/dist/chat-ui/messages/message-components.cjs +320 -0
  300. package/dist/chat-ui/messages/message-components.cjs.map +1 -0
  301. package/dist/chat-ui/messages/message-components.d.ts +1 -1
  302. package/dist/chat-ui/messages/message-components.js +320 -0
  303. package/dist/chat-ui/messages/message-components.js.map +1 -0
  304. package/dist/chat-ui/messages/running-indicator.cjs +49 -0
  305. package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
  306. package/dist/chat-ui/messages/running-indicator.js +49 -0
  307. package/dist/chat-ui/messages/running-indicator.js.map +1 -0
  308. package/dist/chat-ui/messages/runtime-message.cjs +66 -0
  309. package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
  310. package/dist/chat-ui/messages/runtime-message.js +66 -0
  311. package/dist/chat-ui/messages/runtime-message.js.map +1 -0
  312. package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +61 -23
  313. package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
  314. package/dist/chat-ui/messages/statewire-continue-run.d.ts +19 -5
  315. package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +51 -14
  316. package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
  317. package/dist/chat-ui/messages/user-edit-composer.cjs +62 -0
  318. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
  319. package/dist/chat-ui/messages/user-edit-composer.js +62 -0
  320. package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
  321. package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
  322. package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
  323. package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
  324. package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
  325. package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
  326. package/dist/chat-ui/rich-text/chat-message-body.cjs +76 -0
  327. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -0
  328. package/dist/chat-ui/rich-text/chat-message-body.d.ts +5 -0
  329. package/dist/chat-ui/rich-text/chat-message-body.js +76 -0
  330. package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -0
  331. package/dist/chat-ui/rich-text/chat-node-views.cjs +51 -0
  332. package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -0
  333. package/dist/chat-ui/rich-text/chat-node-views.d.ts +13 -0
  334. package/dist/chat-ui/rich-text/chat-node-views.js +51 -0
  335. package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -0
  336. package/dist/chat-ui/rich-text/chat-text-schema.cjs +70 -0
  337. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -0
  338. package/dist/chat-ui/rich-text/chat-text-schema.d.ts +7 -0
  339. package/dist/chat-ui/rich-text/chat-text-schema.js +70 -0
  340. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -0
  341. package/dist/chat-ui/rich-text/dom-output-spec.cjs +83 -0
  342. package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -0
  343. package/dist/chat-ui/rich-text/dom-output-spec.d.ts +11 -0
  344. package/dist/chat-ui/rich-text/dom-output-spec.js +83 -0
  345. package/dist/chat-ui/rich-text/dom-output-spec.js.map +1 -0
  346. package/dist/chat-ui/statewire.cjs +40 -0
  347. package/dist/chat-ui/statewire.cjs.map +1 -0
  348. package/dist/chat-ui/statewire.js +40 -0
  349. package/dist/chat-ui/statewire.js.map +1 -0
  350. package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
  351. package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
  352. package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
  353. package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
  354. package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
  355. package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
  356. package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
  357. package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
  358. package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
  359. package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
  360. package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
  361. package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
  362. package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
  363. package/dist/chat-ui/thread/statewire-history-edge.cjs +135 -0
  364. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
  365. package/dist/chat-ui/thread/statewire-history-edge.js +135 -0
  366. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
  367. package/dist/{collab.cjs → collab/client.cjs} +6 -166
  368. package/dist/collab/client.cjs.map +1 -0
  369. package/dist/{collab.js → collab/client.js} +5 -164
  370. package/dist/collab/client.js.map +1 -0
  371. package/dist/collab/close-policy.cjs +14 -0
  372. package/dist/collab/close-policy.cjs.map +1 -0
  373. package/dist/collab/close-policy.js +14 -0
  374. package/dist/collab/close-policy.js.map +1 -0
  375. package/dist/collab/index.cjs +17 -0
  376. package/dist/collab/index.cjs.map +1 -0
  377. package/dist/collab/index.js +17 -0
  378. package/dist/collab/index.js.map +1 -0
  379. package/dist/collab/mint.cjs +59 -0
  380. package/dist/collab/mint.cjs.map +1 -0
  381. package/dist/collab/mint.js +59 -0
  382. package/dist/collab/mint.js.map +1 -0
  383. package/dist/collab/react.cjs +58 -0
  384. package/dist/collab/react.cjs.map +1 -0
  385. package/dist/collab/react.js +58 -0
  386. package/dist/collab/react.js.map +1 -0
  387. package/dist/collab/shape.cjs +45 -0
  388. package/dist/collab/shape.cjs.map +1 -0
  389. package/dist/collab/shape.js +45 -0
  390. package/dist/collab/shape.js.map +1 -0
  391. package/dist/composer/AttachmentContext.cjs +40 -0
  392. package/dist/composer/AttachmentContext.cjs.map +1 -0
  393. package/dist/composer/AttachmentContext.js +40 -0
  394. package/dist/composer/AttachmentContext.js.map +1 -0
  395. package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
  396. package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
  397. package/dist/composer/ComposerAttachmentPreview.js +39 -0
  398. package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
  399. package/dist/composer/ComposerDropZone.cjs +61 -0
  400. package/dist/composer/ComposerDropZone.cjs.map +1 -0
  401. package/dist/composer/ComposerDropZone.d.ts +1 -1
  402. package/dist/composer/ComposerDropZone.js +61 -0
  403. package/dist/composer/ComposerDropZone.js.map +1 -0
  404. package/dist/composer/ComposerQuotePreview.cjs +42 -0
  405. package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
  406. package/dist/composer/ComposerQuotePreview.js +42 -0
  407. package/dist/composer/ComposerQuotePreview.js.map +1 -0
  408. package/dist/composer/FileUploadButton.cjs +65 -0
  409. package/dist/composer/FileUploadButton.cjs.map +1 -0
  410. package/dist/composer/FileUploadButton.d.ts +1 -1
  411. package/dist/composer/FileUploadButton.js +65 -0
  412. package/dist/composer/FileUploadButton.js.map +1 -0
  413. package/dist/composer/QuoteContext.cjs +68 -0
  414. package/dist/composer/QuoteContext.cjs.map +1 -0
  415. package/dist/composer/QuoteContext.js +68 -0
  416. package/dist/composer/QuoteContext.js.map +1 -0
  417. package/dist/composer/build-composed-message.cjs +25 -0
  418. package/dist/composer/build-composed-message.cjs.map +1 -0
  419. package/dist/composer/build-composed-message.js +25 -0
  420. package/dist/composer/build-composed-message.js.map +1 -0
  421. package/dist/composer/clipboard.cjs +62 -0
  422. package/dist/composer/clipboard.cjs.map +1 -0
  423. package/dist/composer/clipboard.d.ts +27 -3
  424. package/dist/composer/clipboard.js +62 -0
  425. package/dist/composer/clipboard.js.map +1 -0
  426. package/dist/composer/useAppendToComposer.cjs +21 -0
  427. package/dist/composer/useAppendToComposer.cjs.map +1 -0
  428. package/dist/composer/useAppendToComposer.js +21 -0
  429. package/dist/composer/useAppendToComposer.js.map +1 -0
  430. package/dist/composer/useAttachFiles.cjs +40 -0
  431. package/dist/composer/useAttachFiles.cjs.map +1 -0
  432. package/dist/composer/useAttachFiles.d.ts +24 -0
  433. package/dist/composer/useAttachFiles.js +40 -0
  434. package/dist/composer/useAttachFiles.js.map +1 -0
  435. package/dist/composer/useComposerAttachment.cjs +25 -0
  436. package/dist/composer/useComposerAttachment.cjs.map +1 -0
  437. package/dist/composer/useComposerAttachment.js +25 -0
  438. package/dist/composer/useComposerAttachment.js.map +1 -0
  439. package/dist/composer/useFileUpload.cjs +123 -0
  440. package/dist/composer/useFileUpload.cjs.map +1 -0
  441. package/dist/composer/useFileUpload.js +123 -0
  442. package/dist/composer/useFileUpload.js.map +1 -0
  443. package/dist/composer/useSendMessage.cjs +22 -0
  444. package/dist/composer/useSendMessage.cjs.map +1 -0
  445. package/dist/composer/useSendMessage.js +22 -0
  446. package/dist/composer/useSendMessage.js.map +1 -0
  447. package/dist/diagnostics/athena-diagnostics.cjs +329 -0
  448. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
  449. package/dist/diagnostics/athena-diagnostics.js +329 -0
  450. package/dist/diagnostics/athena-diagnostics.js.map +1 -0
  451. package/dist/diagnostics/errors.cjs +89 -0
  452. package/dist/diagnostics/errors.cjs.map +1 -0
  453. package/dist/diagnostics/errors.js +89 -0
  454. package/dist/diagnostics/errors.js.map +1 -0
  455. package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
  456. package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
  457. package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
  458. package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
  459. package/dist/index.cjs +275 -27882
  460. package/dist/index.cjs.map +1 -1
  461. package/dist/index.d.ts +6 -4
  462. package/dist/index.js +162 -27759
  463. package/dist/index.js.map +1 -1
  464. package/dist/lib/athena-urls.cjs +194 -0
  465. package/dist/lib/athena-urls.cjs.map +1 -0
  466. package/dist/lib/athena-urls.d.ts +20 -5
  467. package/dist/lib/athena-urls.js +194 -0
  468. package/dist/lib/athena-urls.js.map +1 -0
  469. package/dist/lib/posthog/before-send.cjs +58 -0
  470. package/dist/lib/posthog/before-send.cjs.map +1 -0
  471. package/dist/lib/posthog/before-send.js +58 -0
  472. package/dist/lib/posthog/before-send.js.map +1 -0
  473. package/dist/lib/posthog/capture-gate.cjs +322 -0
  474. package/dist/lib/posthog/capture-gate.cjs.map +1 -0
  475. package/dist/lib/posthog/capture-gate.js +322 -0
  476. package/dist/lib/posthog/capture-gate.js.map +1 -0
  477. package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
  478. package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
  479. package/dist/lib/posthog/wrap-posthog-client.js +163 -0
  480. package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
  481. package/dist/lib/utils.cjs +12 -0
  482. package/dist/lib/utils.cjs.map +1 -0
  483. package/dist/lib/utils.js +9 -0
  484. package/dist/lib/utils.js.map +1 -0
  485. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
  486. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
  487. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
  488. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
  489. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
  490. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
  491. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
  492. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
  493. package/dist/node_modules/qrcode-generator/dist/qrcode.cjs +32 -0
  494. package/dist/node_modules/qrcode-generator/dist/qrcode.cjs.map +1 -0
  495. package/dist/node_modules/qrcode-generator/dist/qrcode.js +31 -0
  496. package/dist/node_modules/qrcode-generator/dist/qrcode.js.map +1 -0
  497. package/dist/node_modules/zod/v4/classic/errors.cjs +44 -0
  498. package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
  499. package/dist/node_modules/zod/v4/classic/errors.js +44 -0
  500. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  501. package/dist/node_modules/zod/v4/classic/iso.cjs +43 -0
  502. package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
  503. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  504. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  505. package/dist/node_modules/zod/v4/classic/parse.cjs +29 -0
  506. package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
  507. package/dist/node_modules/zod/v4/classic/parse.js +29 -0
  508. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  509. package/dist/node_modules/zod/v4/classic/schemas.cjs +871 -0
  510. package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
  511. package/dist/node_modules/zod/v4/classic/schemas.js +871 -0
  512. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  513. package/dist/node_modules/zod/v4/core/api.cjs +570 -0
  514. package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
  515. package/dist/node_modules/zod/v4/core/api.js +570 -0
  516. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  517. package/dist/node_modules/zod/v4/core/checks.cjs +411 -0
  518. package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
  519. package/dist/node_modules/zod/v4/core/checks.js +411 -0
  520. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  521. package/dist/node_modules/zod/v4/core/core.cjs +77 -0
  522. package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
  523. package/dist/node_modules/zod/v4/core/core.js +77 -0
  524. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  525. package/dist/node_modules/zod/v4/core/doc.cjs +38 -0
  526. package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
  527. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  528. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  529. package/dist/node_modules/zod/v4/core/errors.cjs +76 -0
  530. package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
  531. package/dist/node_modules/zod/v4/core/errors.js +76 -0
  532. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  533. package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +312 -0
  534. package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
  535. package/dist/node_modules/zod/v4/core/json-schema-processors.js +312 -0
  536. package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
  537. package/dist/node_modules/zod/v4/core/parse.cjs +96 -0
  538. package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
  539. package/dist/node_modules/zod/v4/core/parse.js +96 -0
  540. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  541. package/dist/node_modules/zod/v4/core/regexes.cjs +86 -0
  542. package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
  543. package/dist/node_modules/zod/v4/core/regexes.js +86 -0
  544. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  545. package/dist/node_modules/zod/v4/core/registries.cjs +52 -0
  546. package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
  547. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  548. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  549. package/dist/node_modules/zod/v4/core/schemas.cjs +1412 -0
  550. package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
  551. package/dist/node_modules/zod/v4/core/schemas.js +1413 -0
  552. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  553. package/dist/node_modules/zod/v4/core/to-json-schema.cjs +370 -0
  554. package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
  555. package/dist/node_modules/zod/v4/core/to-json-schema.js +370 -0
  556. package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
  557. package/dist/node_modules/zod/v4/core/util.cjs +444 -0
  558. package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
  559. package/dist/node_modules/zod/v4/core/util.js +444 -0
  560. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  561. package/dist/node_modules/zod/v4/core/versions.cjs +9 -0
  562. package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
  563. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  564. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  565. package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
  566. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
  567. package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
  568. package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
  569. package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
  570. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
  571. package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
  572. package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
  573. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +276 -0
  574. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  575. package/dist/packages/agent-runtime/src/client-tool-bridge.js +276 -0
  576. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
  577. package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
  578. package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
  579. package/dist/packages/agent-runtime/src/client-tools.js +137 -0
  580. package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
  581. package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
  582. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
  583. package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
  584. package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
  585. package/dist/packages/agent-runtime/src/conversation-list.cjs +90 -0
  586. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
  587. package/dist/packages/agent-runtime/src/conversation-list.js +90 -0
  588. package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
  589. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
  590. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  591. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
  592. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  593. package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
  594. package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
  595. package/dist/packages/agent-runtime/src/edit-command.js +89 -0
  596. package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
  597. package/dist/packages/agent-runtime/src/errors.cjs +95 -0
  598. package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
  599. package/dist/packages/agent-runtime/src/errors.js +95 -0
  600. package/dist/packages/agent-runtime/src/errors.js.map +1 -0
  601. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +238 -0
  602. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  603. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +238 -0
  604. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  605. package/dist/packages/agent-runtime/src/interrupts.cjs +141 -0
  606. package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
  607. package/dist/packages/agent-runtime/src/interrupts.js +141 -0
  608. package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
  609. package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
  610. package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
  611. package/dist/packages/agent-runtime/src/message-author.js +31 -0
  612. package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
  613. package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
  614. package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
  615. package/dist/packages/agent-runtime/src/message-window.js +85 -0
  616. package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
  617. package/dist/packages/agent-runtime/src/messages.cjs +463 -0
  618. package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
  619. package/dist/packages/agent-runtime/src/messages.js +463 -0
  620. package/dist/packages/agent-runtime/src/messages.js.map +1 -0
  621. package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
  622. package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
  623. package/dist/packages/agent-runtime/src/model-context.js +13 -0
  624. package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
  625. package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
  626. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
  627. package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
  628. package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
  629. package/dist/packages/agent-runtime/src/protocol.cjs +31 -0
  630. package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
  631. package/dist/packages/agent-runtime/src/protocol.js +31 -0
  632. package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
  633. package/dist/packages/agent-runtime/src/queue.cjs +67 -0
  634. package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
  635. package/dist/packages/agent-runtime/src/queue.js +67 -0
  636. package/dist/packages/agent-runtime/src/queue.js.map +1 -0
  637. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +329 -0
  638. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  639. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +329 -0
  640. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  641. package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
  642. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
  643. package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
  644. package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
  645. package/dist/packages/agent-runtime/src/screen-point.cjs +68 -0
  646. package/dist/packages/agent-runtime/src/screen-point.cjs.map +1 -0
  647. package/dist/packages/agent-runtime/src/screen-point.js +68 -0
  648. package/dist/packages/agent-runtime/src/screen-point.js.map +1 -0
  649. package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
  650. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
  651. package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
  652. package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
  653. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
  654. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  655. package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
  656. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  657. package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
  658. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
  659. package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
  660. package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
  661. package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
  662. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  663. package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
  664. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
  665. package/dist/packages/agent-runtime/src/statewire-transport.cjs +11 -0
  666. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
  667. package/dist/packages/agent-runtime/src/statewire-transport.js +11 -0
  668. package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
  669. package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
  670. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  671. package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
  672. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
  673. package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
  674. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
  675. package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
  676. package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
  677. package/dist/packages/agent-runtime/src/thread-handoff.cjs +85 -0
  678. package/dist/packages/agent-runtime/src/thread-handoff.cjs.map +1 -0
  679. package/dist/packages/agent-runtime/src/thread-handoff.js +85 -0
  680. package/dist/packages/agent-runtime/src/thread-handoff.js.map +1 -0
  681. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
  682. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  683. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
  684. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  685. package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
  686. package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
  687. package/dist/packages/agent-runtime/src/thread-status.js +49 -0
  688. package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
  689. package/dist/packages/agent-runtime/src/tool-metadata.cjs +1794 -0
  690. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
  691. package/dist/packages/agent-runtime/src/tool-metadata.js +1794 -0
  692. package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
  693. package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
  694. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
  695. package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
  696. package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
  697. package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
  698. package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
  699. package/dist/packages/agent-runtime/src/tool-result.js +151 -0
  700. package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
  701. package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
  702. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  703. package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
  704. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
  705. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +14 -0
  706. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
  707. package/dist/packages/agent-runtime/src/use-deep-agent-config.js +14 -0
  708. package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +1 -0
  709. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +44 -0
  710. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  711. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +44 -0
  712. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  713. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +148 -0
  714. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  715. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +148 -0
  716. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  717. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +407 -0
  718. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  719. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +407 -0
  720. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  721. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
  722. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  723. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
  724. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  725. package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
  726. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
  727. package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
  728. package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
  729. package/dist/packages/react/package.json.cjs +9 -0
  730. package/dist/packages/react/package.json.cjs.map +1 -0
  731. package/dist/packages/react/package.json.js +9 -0
  732. package/dist/packages/react/package.json.js.map +1 -0
  733. package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
  734. package/dist/provider/AthenaContext.cjs.map +1 -0
  735. package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
  736. package/dist/provider/AthenaContext.js.map +1 -0
  737. package/dist/provider/AthenaProvider.cjs +404 -0
  738. package/dist/provider/AthenaProvider.cjs.map +1 -0
  739. package/dist/provider/AthenaProvider.js +404 -0
  740. package/dist/provider/AthenaProvider.js.map +1 -0
  741. package/dist/provider/PostHogProvider.cjs +81 -0
  742. package/dist/provider/PostHogProvider.cjs.map +1 -0
  743. package/dist/provider/PostHogProvider.js +59 -0
  744. package/dist/provider/PostHogProvider.js.map +1 -0
  745. package/dist/provider/config.d.ts +8 -7
  746. package/dist/provider/statewire-lifecycle-context.cjs +10 -0
  747. package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
  748. package/dist/provider/statewire-lifecycle-context.js +10 -0
  749. package/dist/provider/statewire-lifecycle-context.js.map +1 -0
  750. package/dist/provider/statewire-window-context.cjs +10 -0
  751. package/dist/provider/statewire-window-context.cjs.map +1 -0
  752. package/dist/provider/statewire-window-context.js +10 -0
  753. package/dist/provider/statewire-window-context.js.map +1 -0
  754. package/dist/runtime/auth.cjs +309 -0
  755. package/dist/runtime/auth.cjs.map +1 -0
  756. package/dist/runtime/auth.d.ts +19 -18
  757. package/dist/runtime/auth.js +309 -0
  758. package/dist/runtime/auth.js.map +1 -0
  759. package/dist/runtime/statewire-auth-headers.cjs +18 -0
  760. package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
  761. package/dist/runtime/statewire-auth-headers.js +18 -0
  762. package/dist/runtime/statewire-auth-headers.js.map +1 -0
  763. package/dist/runtime/statewire-lifecycle.cjs +68 -0
  764. package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
  765. package/dist/runtime/statewire-lifecycle.js +68 -0
  766. package/dist/runtime/statewire-lifecycle.js.map +1 -0
  767. package/dist/runtime/statewire-run-config.cjs +68 -0
  768. package/dist/runtime/statewire-run-config.cjs.map +1 -0
  769. package/dist/runtime/statewire-run-config.js +68 -0
  770. package/dist/runtime/statewire-run-config.js.map +1 -0
  771. package/dist/runtime/statewire-session-key.cjs +11 -0
  772. package/dist/runtime/statewire-session-key.cjs.map +1 -0
  773. package/dist/runtime/statewire-session-key.js +11 -0
  774. package/dist/runtime/statewire-session-key.js.map +1 -0
  775. package/dist/runtime/useAthenaStatewireRuntime.cjs +180 -0
  776. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
  777. package/dist/runtime/useAthenaStatewireRuntime.js +181 -0
  778. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
  779. package/dist/styles.css +1 -1
  780. package/dist/theme/index.cjs +182 -0
  781. package/dist/theme/index.cjs.map +1 -0
  782. package/dist/theme/index.js +182 -0
  783. package/dist/theme/index.js.map +1 -0
  784. package/dist/threads/ThreadList.cjs +55 -0
  785. package/dist/threads/ThreadList.cjs.map +1 -0
  786. package/dist/threads/ThreadList.js +55 -0
  787. package/dist/threads/ThreadList.js.map +1 -0
  788. package/dist/threads/api.cjs +208 -0
  789. package/dist/threads/api.cjs.map +1 -0
  790. package/dist/threads/api.js +208 -0
  791. package/dist/threads/api.js.map +1 -0
  792. package/dist/threads/conversation-list-fetcher.cjs +74 -0
  793. package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
  794. package/dist/threads/conversation-list-fetcher.js +74 -0
  795. package/dist/threads/conversation-list-fetcher.js.map +1 -0
  796. package/dist/threads/mint-thread-id.cjs +7 -0
  797. package/dist/threads/mint-thread-id.cjs.map +1 -0
  798. package/dist/threads/mint-thread-id.js +7 -0
  799. package/dist/threads/mint-thread-id.js.map +1 -0
  800. package/dist/threads/statewire-thread-list.cjs +232 -0
  801. package/dist/threads/statewire-thread-list.cjs.map +1 -0
  802. package/dist/threads/statewire-thread-list.js +232 -0
  803. package/dist/threads/statewire-thread-list.js.map +1 -0
  804. package/dist/threads/thread-id-context.cjs +22 -0
  805. package/dist/threads/thread-id-context.cjs.map +1 -0
  806. package/dist/threads/thread-id-context.d.ts +9 -0
  807. package/dist/threads/thread-id-context.js +22 -0
  808. package/dist/threads/thread-id-context.js.map +1 -0
  809. package/dist/threads/title.cjs +95 -0
  810. package/dist/threads/title.cjs.map +1 -0
  811. package/dist/threads/title.js +95 -0
  812. package/dist/threads/title.js.map +1 -0
  813. package/dist/threads/use-rest-conversation-history.cjs +80 -0
  814. package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
  815. package/dist/threads/use-rest-conversation-history.js +80 -0
  816. package/dist/threads/use-rest-conversation-history.js.map +1 -0
  817. package/dist/threads/use-statewire-conversation-history.cjs +244 -0
  818. package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
  819. package/dist/threads/use-statewire-conversation-history.d.ts +1 -0
  820. package/dist/threads/use-statewire-conversation-history.js +244 -0
  821. package/dist/threads/use-statewire-conversation-history.js.map +1 -0
  822. package/dist/threads/useAthenaThreadManager.cjs +24 -0
  823. package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
  824. package/dist/threads/useAthenaThreadManager.js +24 -0
  825. package/dist/threads/useAthenaThreadManager.js.map +1 -0
  826. package/dist/toolkits/index.cjs +279 -0
  827. package/dist/toolkits/index.cjs.map +1 -0
  828. package/dist/toolkits/index.js +279 -0
  829. package/dist/toolkits/index.js.map +1 -0
  830. package/dist/tools/NestedPtcMessages.cjs +46 -0
  831. package/dist/tools/NestedPtcMessages.cjs.map +1 -0
  832. package/dist/tools/NestedPtcMessages.js +46 -0
  833. package/dist/tools/NestedPtcMessages.js.map +1 -0
  834. package/dist/tools/append-document-tool-ui.cjs +145 -0
  835. package/dist/tools/append-document-tool-ui.cjs.map +1 -0
  836. package/dist/tools/append-document-tool-ui.js +145 -0
  837. package/dist/tools/append-document-tool-ui.js.map +1 -0
  838. package/dist/tools/asset-utils.cjs +16 -0
  839. package/dist/tools/asset-utils.cjs.map +1 -0
  840. package/dist/tools/asset-utils.js +16 -0
  841. package/dist/tools/asset-utils.js.map +1 -0
  842. package/dist/tools/auto-open-tools.cjs +121 -0
  843. package/dist/tools/auto-open-tools.cjs.map +1 -0
  844. package/dist/tools/auto-open-tools.js +121 -0
  845. package/dist/tools/auto-open-tools.js.map +1 -0
  846. package/dist/tools/file-tool-uis.cjs +108 -0
  847. package/dist/tools/file-tool-uis.cjs.map +1 -0
  848. package/dist/tools/file-tool-uis.js +108 -0
  849. package/dist/tools/file-tool-uis.js.map +1 -0
  850. package/dist/tools/index.cjs +57 -0
  851. package/dist/tools/index.cjs.map +1 -0
  852. package/dist/tools/index.d.ts +1 -0
  853. package/dist/tools/index.js +57 -0
  854. package/dist/tools/index.js.map +1 -0
  855. package/dist/tools/misc-tool-uis.cjs +55 -0
  856. package/dist/tools/misc-tool-uis.cjs.map +1 -0
  857. package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +18 -7
  858. package/dist/tools/misc-tool-uis.js.map +1 -0
  859. package/dist/tools/primitives.cjs +167 -0
  860. package/dist/tools/primitives.cjs.map +1 -0
  861. package/dist/tools/primitives.js +167 -0
  862. package/dist/tools/primitives.js.map +1 -0
  863. package/dist/tools/read-asset-tool-ui.cjs +284 -0
  864. package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
  865. package/dist/tools/read-asset-tool-ui.js +284 -0
  866. package/dist/tools/read-asset-tool-ui.js.map +1 -0
  867. package/dist/tools/todo-plan-store.cjs +88 -0
  868. package/dist/tools/todo-plan-store.cjs.map +1 -0
  869. package/dist/tools/todo-plan-store.js +88 -0
  870. package/dist/tools/todo-plan-store.js.map +1 -0
  871. package/dist/tools/tool-fallback.cjs +668 -0
  872. package/dist/tools/tool-fallback.cjs.map +1 -0
  873. package/dist/tools/tool-fallback.js +668 -0
  874. package/dist/tools/tool-fallback.js.map +1 -0
  875. package/dist/tools/tool-icons.cjs +61 -0
  876. package/dist/tools/tool-icons.cjs.map +1 -0
  877. package/dist/tools/tool-icons.js +61 -0
  878. package/dist/tools/tool-icons.js.map +1 -0
  879. package/dist/tools/tool-uis.cjs +3049 -0
  880. package/dist/tools/tool-uis.cjs.map +1 -0
  881. package/dist/tools/tool-uis.js +3049 -0
  882. package/dist/tools/tool-uis.js.map +1 -0
  883. package/dist/tools/voice-update-tool-ui.cjs +90 -0
  884. package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
  885. package/dist/tools/voice-update-tool-ui.d.ts +27 -0
  886. package/dist/tools/voice-update-tool-ui.js +90 -0
  887. package/dist/tools/voice-update-tool-ui.js.map +1 -0
  888. package/dist/tools/write-todos-tool-ui.cjs +270 -0
  889. package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
  890. package/dist/tools/write-todos-tool-ui.js +270 -0
  891. package/dist/tools/write-todos-tool-ui.js.map +1 -0
  892. package/dist/ui/button.cjs +57 -0
  893. package/dist/ui/button.cjs.map +1 -0
  894. package/dist/ui/button.js +57 -0
  895. package/dist/ui/button.js.map +1 -0
  896. package/dist/ui/collapsible.cjs +17 -0
  897. package/dist/ui/collapsible.cjs.map +1 -0
  898. package/dist/ui/collapsible.js +17 -0
  899. package/dist/ui/collapsible.js.map +1 -0
  900. package/dist/ui/tooltip.cjs +48 -0
  901. package/dist/ui/tooltip.cjs.map +1 -0
  902. package/dist/ui/tooltip.js +48 -0
  903. package/dist/ui/tooltip.js.map +1 -0
  904. package/dist/version.cjs +6 -0
  905. package/dist/version.cjs.map +1 -0
  906. package/dist/version.js +6 -0
  907. package/dist/version.js.map +1 -0
  908. package/dist/voice/index.cjs +6 -0
  909. package/dist/voice/index.cjs.map +1 -0
  910. package/dist/voice/index.d.ts +2 -0
  911. package/dist/voice/index.js +6 -0
  912. package/dist/voice/index.js.map +1 -0
  913. package/dist/voice/use-athena-voice-session.cjs +315 -0
  914. package/dist/voice/use-athena-voice-session.cjs.map +1 -0
  915. package/dist/voice/use-athena-voice-session.d.ts +145 -0
  916. package/dist/voice/use-athena-voice-session.js +315 -0
  917. package/dist/voice/use-athena-voice-session.js.map +1 -0
  918. package/package.json +32 -20
  919. package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
  920. package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
  921. package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
  922. package/dist/AthenaContext-MOslgOmE.js.map +0 -1
  923. package/dist/SuperGroupingCard-BsWbHyV_.js +0 -795
  924. package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
  925. package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
  926. package/dist/SuperGroupingCard-CRRFUgjN.cjs.map +0 -1
  927. package/dist/auth.cjs.map +0 -1
  928. package/dist/auth.js.map +0 -1
  929. package/dist/chat/ComposerEditorContext.d.ts +0 -36
  930. package/dist/chat/tiptap-composer.d.ts +0 -7
  931. package/dist/chat-ui-statewire.cjs +0 -25
  932. package/dist/chat-ui-statewire.cjs.map +0 -1
  933. package/dist/chat-ui-statewire.js +0 -25
  934. package/dist/chat-ui-statewire.js.map +0 -1
  935. package/dist/chat-ui.cjs +0 -2484
  936. package/dist/chat-ui.cjs.map +0 -1
  937. package/dist/chat-ui.js +0 -2486
  938. package/dist/chat-ui.js.map +0 -1
  939. package/dist/collab.cjs.map +0 -1
  940. package/dist/collab.js.map +0 -1
  941. package/dist/mentions/composer-keybinds.d.ts +0 -5
  942. package/dist/mentions/mention-extension.d.ts +0 -6
  943. package/dist/mentions/mention-icons.d.ts +0 -4
  944. package/dist/mentions/mention-node-view.d.ts +0 -2
  945. package/dist/mentions/mention-suggestion-list.d.ts +0 -14
  946. package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
  947. package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
  948. package/dist/mentions/mention-types.d.ts +0 -21
  949. package/dist/mentions/mention-utils.d.ts +0 -23
  950. package/dist/mentions/use-mention-suggestions.d.ts +0 -29
  951. package/dist/misc-tool-uis-B2e0Okkn.cjs +0 -43
  952. package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
  953. package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
  954. package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
  955. package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
  956. package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
  957. package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
  958. package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
  959. package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
  960. package/dist/super-grouping.cjs +0 -22
  961. package/dist/super-grouping.cjs.map +0 -1
  962. package/dist/super-grouping.js +0 -22
  963. package/dist/super-grouping.js.map +0 -1
  964. package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
  965. package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
  966. package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
  967. package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
  968. package/dist/tools.cjs +0 -41
  969. package/dist/tools.cjs.map +0 -1
  970. package/dist/tools.js +0 -41
  971. package/dist/tools.js.map +0 -1
  972. package/dist/trash-2-B5OaNAL7.cjs +0 -5096
  973. package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
  974. package/dist/trash-2-CCwSURL-.js +0 -5081
  975. package/dist/trash-2-CCwSURL-.js.map +0 -1
  976. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
  977. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
  978. package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
  979. package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
  980. package/dist/wrench-BEf72cyP.cjs +0 -417
  981. package/dist/wrench-BEf72cyP.cjs.map +0 -1
  982. package/dist/wrench-CbrOlVYm.js +0 -418
  983. package/dist/wrench-CbrOlVYm.js.map +0 -1
  984. package/dist/x-Dfd2NzK0.cjs +0 -42
  985. package/dist/x-Dfd2NzK0.cjs.map +0 -1
  986. package/dist/x-_DntAa_a.js +0 -43
  987. package/dist/x-_DntAa_a.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-list-fetcher.js","sources":["../../src/threads/conversation-list-fetcher.ts"],"sourcesContent":["/**\n * REST adapter for the shared conversation-list contract\n * (`@athenaintel/agent-runtime` — thread-list-contract-convergence).\n *\n * Translates the canonical {@link ConversationListFetchParams} onto Agora's\n * `POST /api/conversations/threads/list` and maps its `ThreadSummary` rows\n * into the canonical {@link ConversationSummary} shape. Filter fields this\n * transport cannot express throw instead of being ignored — a dropped filter\n * would return wrong rows under a cache key that claims otherwise.\n */\n\nimport type {\n ConversationListFetcher,\n ConversationListFetchParams,\n ConversationListFilter,\n ConversationListPage,\n ConversationSummary,\n} from '@athenaintel/agent-runtime';\nimport { listThreads, type ThreadSummary } from './api';\n\nexport interface ThreadListRequestBody {\n limit: number;\n offset: number;\n exclude_triggered?: boolean;\n app_id?: string;\n start_channel?: string;\n search?: string;\n}\n\n/**\n * Map the canonical filter onto the REST thread-list request body.\n * Exported for tests; throws on filter fields the endpoint cannot express.\n */\nexport function threadListRequestBody(\n params: Pick<ConversationListFetchParams, 'limit' | 'offset' | 'filter'>,\n): ThreadListRequestBody {\n const { filter } = params;\n const unsupported: string[] = [];\n if (filter.assetTypes && filter.assetTypes.length > 0) unsupported.push('assetTypes');\n if (filter.states && filter.states.length > 0) unsupported.push('states');\n if (filter.sourceChannels && filter.sourceChannels.length > 1) {\n unsupported.push('sourceChannels (more than one)');\n }\n if (filter.excludeSourceChannels && filter.excludeSourceChannels.length > 0) {\n unsupported.push('excludeSourceChannels');\n }\n if (filter.computerAssetId) unsupported.push('computerAssetId');\n if (unsupported.length > 0) {\n throw new Error(\n `[AthenaSDK] The REST thread list cannot express filter field(s): ${unsupported.join(', ')}`,\n );\n }\n return {\n limit: params.limit,\n offset: params.offset,\n ...(filter.excludeTriggered !== undefined\n ? { exclude_triggered: filter.excludeTriggered }\n : {}),\n ...(filter.appId ? { app_id: filter.appId } : {}),\n ...(filter.sourceChannels?.[0] ? { start_channel: filter.sourceChannels[0] } : {}),\n ...(filter.search ? { search: filter.search } : {}),\n };\n}\n\n/** Map a REST `ThreadSummary` row into the canonical contract shape. */\nexport function conversationSummaryFromThreadSummary(\n thread: ThreadSummary,\n filter: ConversationListFilter,\n): ConversationSummary {\n return {\n threadId: thread.thread_id,\n title: thread.title,\n updatedAt: thread.updated_at,\n createdAt: thread.created_at ?? null,\n state: thread.state,\n // Not reported by this endpoint.\n runtime: null,\n sourceChannel: thread.start_channel ?? null,\n assetType: null,\n assetId: null,\n appId: thread.app_id ?? filter.appId ?? null,\n triggerType: thread.trigger_type ?? null,\n preview: thread.last_message ?? null,\n messageCount: thread.message_count ?? null,\n isUnread: thread.is_unread ?? false,\n // Not reported by this endpoint; `isConversationRunning` falls back to `state`.\n sessionStatus: null,\n runStatus: null,\n };\n}\n\nexport interface RestConversationListFetcherOptions {\n backendUrl: string;\n /** Resolved per request so rotating tokens never go stale in the fetcher. */\n getAuth: () =>\n | { apiKey?: string; token?: string | null }\n | Promise<{ apiKey?: string; token?: string | null }>;\n}\n\n/**\n * Build a {@link ConversationListFetcher} over the REST thread list. The\n * endpoint reports no `hasMore`/total, so `hasMore` is the standard offset\n * heuristic (a full page implies more may exist) and `totalCount` is null.\n */\nexport function createRestConversationListFetcher(\n options: RestConversationListFetcherOptions,\n): ConversationListFetcher {\n return async (params): Promise<ConversationListPage> => {\n const body = threadListRequestBody(params);\n const { threads, has_more: hasMore } = await listThreads(\n options.backendUrl,\n await options.getAuth(),\n {\n ...body,\n signal: params.signal,\n },\n );\n return {\n items: threads.map((thread) => conversationSummaryFromThreadSummary(thread, params.filter)),\n hasMore: hasMore ?? threads.length >= params.limit,\n totalCount: null,\n };\n };\n}\n"],"names":[],"mappings":";AAiCO,SAAS,sBACd,QACuB;;AACvB,QAAM,EAAE,WAAW;AACnB,QAAM,cAAwB,CAAA;AAC9B,MAAI,OAAO,cAAc,OAAO,WAAW,SAAS,EAAG,aAAY,KAAK,YAAY;AACpF,MAAI,OAAO,UAAU,OAAO,OAAO,SAAS,EAAG,aAAY,KAAK,QAAQ;AACxE,MAAI,OAAO,kBAAkB,OAAO,eAAe,SAAS,GAAG;AAC7D,gBAAY,KAAK,gCAAgC;AAAA,EACnD;AACA,MAAI,OAAO,yBAAyB,OAAO,sBAAsB,SAAS,GAAG;AAC3E,gBAAY,KAAK,uBAAuB;AAAA,EAC1C;AACA,MAAI,OAAO,gBAAiB,aAAY,KAAK,iBAAiB;AAC9D,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR,oEAAoE,YAAY,KAAK,IAAI,CAAC;AAAA,IAAA;AAAA,EAE9F;AACA,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,GAAI,OAAO,qBAAqB,SAC5B,EAAE,mBAAmB,OAAO,iBAAA,IAC5B,CAAA;AAAA,IACJ,GAAI,OAAO,QAAQ,EAAE,QAAQ,OAAO,MAAA,IAAU,CAAA;AAAA,IAC9C,KAAI,YAAO,mBAAP,mBAAwB,MAAK,EAAE,eAAe,OAAO,eAAe,CAAC,EAAA,IAAM,CAAA;AAAA,IAC/E,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAA,IAAW,CAAA;AAAA,EAAC;AAErD;AAGO,SAAS,qCACd,QACA,QACqB;AACrB,SAAO;AAAA,IACL,UAAU,OAAO;AAAA,IACjB,OAAO,OAAO;AAAA,IACd,WAAW,OAAO;AAAA,IAClB,WAAW,OAAO,cAAc;AAAA,IAChC,OAAO,OAAO;AAAA;AAAA,IAEd,SAAS;AAAA,IACT,eAAe,OAAO,iBAAiB;AAAA,IACvC,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO,OAAO,UAAU,OAAO,SAAS;AAAA,IACxC,aAAa,OAAO,gBAAgB;AAAA,IACpC,SAAS,OAAO,gBAAgB;AAAA,IAChC,cAAc,OAAO,iBAAiB;AAAA,IACtC,UAAU,OAAO,aAAa;AAAA;AAAA,IAE9B,eAAe;AAAA,IACf,WAAW;AAAA,EAAA;AAEf;AAeO,SAAS,kCACd,SACyB;AACzB,SAAO,OAAO,WAA0C;AACtD,UAAM,OAAO,sBAAsB,MAAM;AACzC,UAAM,EAAE,SAAS,UAAU,QAAA,IAAY,MAAM;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM,QAAQ,QAAA;AAAA,MACd;AAAA,QACE,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,MAAA;AAAA,IACjB;AAEF,WAAO;AAAA,MACL,OAAO,QAAQ,IAAI,CAAC,WAAW,qCAAqC,QAAQ,OAAO,MAAM,CAAC;AAAA,MAC1F,SAAS,WAAW,QAAQ,UAAU,OAAO;AAAA,MAC7C,YAAY;AAAA,IAAA;AAAA,EAEhB;AACF;"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function mintThreadId() {
4
+ return typeof crypto !== "undefined" && "randomUUID" in crypto ? crypto.randomUUID() : `thread_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
5
+ }
6
+ exports.mintThreadId = mintThreadId;
7
+ //# sourceMappingURL=mint-thread-id.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-thread-id.cjs","sources":["../../src/threads/mint-thread-id.ts"],"sourcesContent":["/**\n * Mint a client-side thread id. The sync host creates a thread on its first\n * message, so the client picks the id: a UUID where the platform has one, else\n * a timestamped random slug. One helper for every minting site — the\n * provider's standalone thread, the statewire thread list's new chats, and the\n * legacy thread-list adapter — so the id shape cannot drift between them.\n */\nexport function mintThreadId(): string {\n return typeof crypto !== 'undefined' && 'randomUUID' in crypto\n ? crypto.randomUUID()\n : `thread_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\n}\n"],"names":[],"mappings":";;AAOO,SAAS,eAAuB;AACrC,SAAO,OAAO,WAAW,eAAe,gBAAgB,SACpD,OAAO,WAAA,IACP,UAAU,KAAK,IAAA,CAAK,IAAI,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;AACrE;;"}
@@ -0,0 +1,7 @@
1
+ function mintThreadId() {
2
+ return typeof crypto !== "undefined" && "randomUUID" in crypto ? crypto.randomUUID() : `thread_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
3
+ }
4
+ export {
5
+ mintThreadId
6
+ };
7
+ //# sourceMappingURL=mint-thread-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-thread-id.js","sources":["../../src/threads/mint-thread-id.ts"],"sourcesContent":["/**\n * Mint a client-side thread id. The sync host creates a thread on its first\n * message, so the client picks the id: a UUID where the platform has one, else\n * a timestamped random slug. One helper for every minting site — the\n * provider's standalone thread, the statewire thread list's new chats, and the\n * legacy thread-list adapter — so the id shape cannot drift between them.\n */\nexport function mintThreadId(): string {\n return typeof crypto !== 'undefined' && 'randomUUID' in crypto\n ? crypto.randomUUID()\n : `thread_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\n}\n"],"names":[],"mappings":"AAOO,SAAS,eAAuB;AACrC,SAAO,OAAO,WAAW,eAAe,gBAAgB,SACpD,OAAO,WAAA,IACP,UAAU,KAAK,IAAA,CAAK,IAAI,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;AACrE;"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ require("../packages/agent-runtime/src/generated/runconfig-contract.cjs");
5
+ const react = require("react");
6
+ const conversationIndex = require("../packages/agent-runtime/src/conversation-index.cjs");
7
+ const useConversationList = require("../packages/agent-runtime/src/use-conversation-list.cjs");
8
+ require("../packages/agent-runtime/src/statewire-state.cjs");
9
+ require("../packages/agent-runtime/src/messages.cjs");
10
+ require("@assistant-ui/react-statewire");
11
+ require("@assistant-ui/store");
12
+ require("../packages/agent-runtime/src/quota-safe-local-storage-session.cjs");
13
+ require("../packages/agent-runtime/src/statewire-suspended.cjs");
14
+ require("@assistant-ui/tap");
15
+ require("../packages/agent-runtime/src/statewire-attach-observer.cjs");
16
+ require("statewire");
17
+ require("../packages/agent-runtime/src/thread-status.cjs");
18
+ require("@assistant-ui/core");
19
+ require("../packages/agent-runtime/src/thread-handoff.cjs");
20
+ const reactQuery = require("@tanstack/react-query");
21
+ const react$1 = require("@assistant-ui/react");
22
+ const AthenaAuthContext = require("../auth/AthenaAuthContext.cjs");
23
+ const statewireAuthHeaders = require("../runtime/statewire-auth-headers.cjs");
24
+ const conversationListFetcher = require("./conversation-list-fetcher.cjs");
25
+ const mintThreadId = require("./mint-thread-id.cjs");
26
+ const title = require("./title.cjs");
27
+ const AthenaStatewireThreadListContext = react.createContext(null);
28
+ function useAthenaStatewireThreadList() {
29
+ return react.useContext(AthenaStatewireThreadListContext);
30
+ }
31
+ function useRefreshThreadList() {
32
+ var _a;
33
+ return ((_a = useAthenaStatewireThreadList()) == null ? void 0 : _a.refresh) ?? null;
34
+ }
35
+ const THREAD_LIST_PAGE_SIZE = 50;
36
+ function StatewireThreadListState({
37
+ backendUrl,
38
+ syncUrl,
39
+ apiKey,
40
+ token,
41
+ getToken,
42
+ appId,
43
+ initialThreadId,
44
+ children
45
+ }) {
46
+ var _a;
47
+ const [active, setActive] = react.useState(
48
+ () => initialThreadId ? { id: initialThreadId, isNew: false } : { id: mintThreadId.mintThreadId(), isNew: true }
49
+ );
50
+ const tokenRef = react.useRef(token);
51
+ tokenRef.current = token;
52
+ const apiKeyRef = react.useRef(apiKey);
53
+ apiKeyRef.current = apiKey;
54
+ const getTokenRef = react.useRef(getToken);
55
+ getTokenRef.current = getToken;
56
+ const authContext = react.useContext(AthenaAuthContext.AthenaAuthContext);
57
+ const principal = ((_a = authContext == null ? void 0 : authContext.user) == null ? void 0 : _a.userId) ?? "";
58
+ const hasAuth = !!(apiKey || token || getToken);
59
+ const fetchPage = react.useMemo(
60
+ () => conversationListFetcher.createRestConversationListFetcher({
61
+ backendUrl,
62
+ // Resolved per request with the attach's token semantics (getter first,
63
+ // host-held token as the fallback) so a rotated token is never stale.
64
+ getAuth: async () => ({
65
+ apiKey: apiKeyRef.current,
66
+ token: await statewireAuthHeaders.resolveStatewireAuthToken(
67
+ { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },
68
+ { staleAuth: false }
69
+ )
70
+ })
71
+ }),
72
+ [backendUrl]
73
+ );
74
+ const filter = react.useMemo(
75
+ () => appId ? { appId } : {},
76
+ [appId]
77
+ );
78
+ const list = useConversationList.useConversationList({
79
+ fetchPage,
80
+ filter,
81
+ pageSize: THREAD_LIST_PAGE_SIZE,
82
+ scopeKey: `${backendUrl}::${principal}::${hasAuth ? "auth" : "anon"}`,
83
+ enabled: hasAuth
84
+ });
85
+ const indexHeaders = react.useCallback(
86
+ (ctx) => statewireAuthHeaders.resolveStatewireAuthHeaders(
87
+ { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },
88
+ ctx
89
+ ),
90
+ []
91
+ );
92
+ const indexEnabled = syncUrl !== void 0 && principal.length > 0 && hasAuth;
93
+ const index = conversationIndex.useConversationIndex({
94
+ baseUrl: syncUrl === void 0 ? "" : conversationIndex.conversationIndexUrlFromStatewireUrl(syncUrl),
95
+ userId: principal || "pending-user",
96
+ headers: indexHeaders,
97
+ enabled: indexEnabled
98
+ });
99
+ const indexTitles = react.useMemo(() => {
100
+ const titles = /* @__PURE__ */ new Map();
101
+ for (const entry of index.entries ?? []) {
102
+ titles.set(entry.thread_id, title.normalizeThreadTitle(entry.title) ?? null);
103
+ }
104
+ return titles;
105
+ }, [index.entries]);
106
+ const data = react.useMemo(
107
+ () => list.conversations.map((conversation) => ({
108
+ id: conversation.threadId,
109
+ title: indexTitles.get(conversation.threadId) ?? title.normalizeThreadTitle(conversation.title) ?? null
110
+ })),
111
+ [list.conversations, indexTitles]
112
+ );
113
+ const isLoading = list.isLoading;
114
+ const listRefresh = list.refresh;
115
+ const refresh = react.useCallback(() => {
116
+ void listRefresh();
117
+ }, [listRefresh]);
118
+ const refreshedForRef = react.useRef(/* @__PURE__ */ new Set());
119
+ react.useEffect(() => {
120
+ if (index.entries === null) return;
121
+ const listed = new Set(list.conversations.map((conversation) => conversation.threadId));
122
+ let pending = false;
123
+ for (const entry of index.entries) {
124
+ if (appId && entry.app_id !== appId) continue;
125
+ if (listed.has(entry.thread_id) || refreshedForRef.current.has(entry.thread_id)) continue;
126
+ refreshedForRef.current.add(entry.thread_id);
127
+ pending = true;
128
+ }
129
+ if (pending) void listRefresh();
130
+ }, [index.entries, list.conversations, appId, listRefresh]);
131
+ const selectThread = react.useCallback((threadId) => {
132
+ if (!threadId) return;
133
+ setActive(
134
+ (current) => current.id === threadId ? current : { id: threadId, isNew: false }
135
+ );
136
+ }, []);
137
+ const newThread = react.useCallback(() => {
138
+ setActive({ id: mintThreadId.mintThreadId(), isNew: true });
139
+ }, []);
140
+ const isPersisted = data.some((thread) => thread.id === active.id);
141
+ react.useEffect(() => {
142
+ if (isPersisted) {
143
+ setActive((current) => current.isNew ? { ...current, isNew: false } : current);
144
+ }
145
+ }, [isPersisted]);
146
+ const titleSource = index.entries !== null ? "index" : "poll";
147
+ const value = react.useMemo(
148
+ () => ({
149
+ threads: data,
150
+ isLoading,
151
+ activeThreadId: active.id,
152
+ isNewChat: active.isNew,
153
+ selectThread,
154
+ newThread,
155
+ refresh,
156
+ titleSource
157
+ }),
158
+ [data, isLoading, active.id, active.isNew, selectThread, newThread, refresh, titleSource]
159
+ );
160
+ return /* @__PURE__ */ jsxRuntime.jsx(AthenaStatewireThreadListContext.Provider, { value, children });
161
+ }
162
+ function AthenaStatewireThreadListProvider({
163
+ backendUrl,
164
+ syncUrl,
165
+ apiKey,
166
+ token,
167
+ getToken,
168
+ appId,
169
+ initialThreadId,
170
+ children
171
+ }) {
172
+ const [queryClient] = react.useState(() => new reactQuery.QueryClient());
173
+ return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(
174
+ StatewireThreadListState,
175
+ {
176
+ backendUrl,
177
+ syncUrl,
178
+ apiKey,
179
+ token,
180
+ getToken,
181
+ appId,
182
+ initialThreadId,
183
+ children
184
+ }
185
+ ) });
186
+ }
187
+ const TITLE_POLL_DELAY_MS = 5e3;
188
+ const TITLE_POLL_INTERVAL_MS = 2e3;
189
+ const TITLE_POLL_MAX_DURATION_MS = 6e4;
190
+ function StatewireThreadTitlePoller() {
191
+ var _a;
192
+ const list = useAthenaStatewireThreadList();
193
+ const hasMessages = react$1.useAuiState((s) => {
194
+ var _a2;
195
+ return (((_a2 = s.optional.thread) == null ? void 0 : _a2.messages.length) ?? 0) > 0;
196
+ });
197
+ const activeThreadId = (list == null ? void 0 : list.activeThreadId) ?? null;
198
+ const titleSource = (list == null ? void 0 : list.titleSource) ?? "poll";
199
+ const entry = list == null ? void 0 : list.threads.find((thread) => thread.id === activeThreadId);
200
+ const title$1 = ((_a = entry == null ? void 0 : entry.title) == null ? void 0 : _a.trim()) ?? "";
201
+ const hasTitle = title$1.length > 0 && !title.isSerializedContentPartsTitle(title$1);
202
+ const polledThreadsRef = react.useRef(/* @__PURE__ */ new Set());
203
+ const refreshRef = react.useRef(list == null ? void 0 : list.refresh);
204
+ refreshRef.current = list == null ? void 0 : list.refresh;
205
+ react.useEffect(() => {
206
+ if (!activeThreadId || !hasMessages || hasTitle || titleSource === "index") return;
207
+ if (polledThreadsRef.current.has(activeThreadId)) return;
208
+ polledThreadsRef.current.add(activeThreadId);
209
+ let intervalId = null;
210
+ const startId = setTimeout(() => {
211
+ intervalId = setInterval(() => {
212
+ var _a2;
213
+ return (_a2 = refreshRef.current) == null ? void 0 : _a2.call(refreshRef);
214
+ }, TITLE_POLL_INTERVAL_MS);
215
+ }, TITLE_POLL_DELAY_MS);
216
+ const stopId = setTimeout(() => {
217
+ if (intervalId !== null) clearInterval(intervalId);
218
+ }, TITLE_POLL_MAX_DURATION_MS);
219
+ return () => {
220
+ clearTimeout(startId);
221
+ clearTimeout(stopId);
222
+ if (intervalId !== null) clearInterval(intervalId);
223
+ };
224
+ }, [activeThreadId, hasMessages, hasTitle, titleSource]);
225
+ return null;
226
+ }
227
+ exports.AthenaStatewireThreadListContext = AthenaStatewireThreadListContext;
228
+ exports.AthenaStatewireThreadListProvider = AthenaStatewireThreadListProvider;
229
+ exports.StatewireThreadTitlePoller = StatewireThreadTitlePoller;
230
+ exports.useAthenaStatewireThreadList = useAthenaStatewireThreadList;
231
+ exports.useRefreshThreadList = useRefreshThreadList;
232
+ //# sourceMappingURL=statewire-thread-list.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statewire-thread-list.cjs","sources":["../../src/threads/statewire-thread-list.tsx"],"sourcesContent":["import {\n type ConversationListFilter,\n conversationIndexUrlFromStatewireUrl,\n type DeepAgentHeadersResolver,\n useConversationIndex,\n useConversationList,\n} from '@athenaintel/agent-runtime';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { useAuiState } from '@assistant-ui/react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { AthenaAuthContext } from '../auth/AthenaAuthContext';\nimport {\n type AthenaStatewireTokenGetter,\n resolveStatewireAuthHeaders,\n resolveStatewireAuthToken,\n} from '../runtime/statewire-auth-headers';\nimport { createRestConversationListFetcher } from './conversation-list-fetcher';\nimport { mintThreadId } from './mint-thread-id';\nimport { isSerializedContentPartsTitle, normalizeThreadTitle } from './title';\n\nexport interface AthenaStatewireThreadSummary {\n id: string;\n title: string | null;\n}\n\n/**\n * Thread-list state. The list is the persisted Agora session list; the ACTIVE\n * thread is a plain id the statewire runtime attaches to — switching threads\n * remounts the statewire session against the new `…/v2/threads/{id}` URL\n * (the same model the mobile app uses).\n */\nexport interface AthenaStatewireThreadListState {\n threads: AthenaStatewireThreadSummary[];\n isLoading: boolean;\n activeThreadId: string;\n /** True while the active thread is a locally-minted chat with no server history. */\n isNewChat: boolean;\n selectThread: (threadId: string) => void;\n newThread: () => void;\n refresh: () => void;\n /**\n * Where titles come from. `'index'` once the signed-in user's live\n * conversation index has replicated — titles and newly created threads then\n * arrive as pushed updates; `'poll'` while it has not (no signed-in\n * principal, e.g. API-key mode, or before its snapshot), when a\n * freshly-started thread's title is picked up by the bounded REST poll.\n */\n titleSource: 'index' | 'poll';\n}\n\nexport const AthenaStatewireThreadListContext =\n createContext<AthenaStatewireThreadListState | null>(null);\n\n/** Read the statewire thread-list state, or null outside that mode. */\nexport function useAthenaStatewireThreadList(): AthenaStatewireThreadListState | null {\n return useContext(AthenaStatewireThreadListContext);\n}\n\n/** Trigger a re-fetch of the thread list. `null` outside `enableThreadList` mode. */\nexport function useRefreshThreadList(): (() => void) | null {\n return useAthenaStatewireThreadList()?.refresh ?? null;\n}\n\n/**\n * The statewire thread list reads one live page through the shared\n * conversation-list contract; the REST default page size predates the shared\n * pager and is preserved here.\n */\nconst THREAD_LIST_PAGE_SIZE = 50;\n\nfunction StatewireThreadListState({\n backendUrl,\n syncUrl,\n apiKey,\n token,\n getToken,\n appId,\n initialThreadId,\n children,\n}: {\n backendUrl: string;\n syncUrl?: string;\n apiKey?: string;\n token?: string | null;\n getToken?: AthenaStatewireTokenGetter;\n appId?: string;\n initialThreadId?: string;\n children: ReactNode;\n}) {\n const [active, setActive] = useState<{ id: string; isNew: boolean }>(() =>\n initialThreadId\n ? { id: initialThreadId, isNew: false }\n : { id: mintThreadId(), isNew: true },\n );\n\n const tokenRef = useRef(token);\n tokenRef.current = token;\n const apiKeyRef = useRef(apiKey);\n apiKeyRef.current = apiKey;\n const getTokenRef = useRef(getToken);\n getTokenRef.current = getToken;\n\n // The cache must be keyed by WHO is asking. Keying on `backendUrl`/`appId`\n // alone let a token swap to a different user read the previous user's thread\n // titles out of the cache. The principal is a non-secret user id, so no\n // credential enters the key (or React Query's devtools). The shared pager\n // never serves placeholder rows across keys, so another principal's list is\n // never shown while the new one loads.\n const authContext = useContext(AthenaAuthContext);\n const principal = authContext?.user?.userId ?? '';\n // A live token getter is a credential too: a `getToken`-only host\n // authenticates its chat, so its list must not stay empty.\n const hasAuth = !!(apiKey || token || getToken);\n\n const fetchPage = useMemo(\n () =>\n createRestConversationListFetcher({\n backendUrl,\n // Resolved per request with the attach's token semantics (getter first,\n // host-held token as the fallback) so a rotated token is never stale.\n getAuth: async () => ({\n apiKey: apiKeyRef.current,\n token: await resolveStatewireAuthToken(\n { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },\n { staleAuth: false },\n ),\n }),\n }),\n [backendUrl],\n );\n const filter = useMemo<ConversationListFilter>(\n () => (appId ? { appId } : {}),\n [appId],\n );\n const list = useConversationList({\n fetchPage,\n filter,\n pageSize: THREAD_LIST_PAGE_SIZE,\n scopeKey: `${backendUrl}::${principal}::${hasAuth ? 'auth' : 'anon'}`,\n enabled: hasAuth,\n });\n\n // Live titles ride the signed-in user's conversation index — the same push\n // channel the conversation-history panel renders from: the host replicates\n // title, lifecycle, and creation changes as ops, so a freshly-started\n // thread's server-generated title lands without polling. The index is keyed\n // by the principal, so it only attaches once one is known; API-key-only\n // hosts keep the bounded REST poll (`titleSource: 'poll'`).\n const indexHeaders = useCallback<DeepAgentHeadersResolver>(\n (ctx) =>\n resolveStatewireAuthHeaders(\n { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },\n ctx,\n ),\n [],\n );\n const indexEnabled = syncUrl !== undefined && principal.length > 0 && hasAuth;\n const index = useConversationIndex({\n baseUrl: syncUrl === undefined ? '' : conversationIndexUrlFromStatewireUrl(syncUrl),\n userId: principal || 'pending-user',\n headers: indexHeaders,\n enabled: indexEnabled,\n });\n const indexTitles = useMemo(() => {\n const titles = new Map<string, string | null>();\n for (const entry of index.entries ?? []) {\n titles.set(entry.thread_id, normalizeThreadTitle(entry.title) ?? null);\n }\n return titles;\n }, [index.entries]);\n\n const data = useMemo(\n () =>\n list.conversations.map((conversation) => ({\n id: conversation.threadId,\n title:\n indexTitles.get(conversation.threadId) ??\n normalizeThreadTitle(conversation.title) ??\n null,\n })),\n [list.conversations, indexTitles],\n );\n const isLoading = list.isLoading;\n\n const listRefresh = list.refresh;\n const refresh = useCallback(() => {\n void listRefresh();\n }, [listRefresh]);\n\n // A thread the index knows — created here on first send, or elsewhere —\n // that the REST page does not list yet: refresh once per such id so the row\n // appears without the user pressing refresh. Rows for other app ids belong\n // to other lists and never trigger one.\n const refreshedForRef = useRef<Set<string>>(new Set());\n useEffect(() => {\n if (index.entries === null) return;\n const listed = new Set(list.conversations.map((conversation) => conversation.threadId));\n let pending = false;\n for (const entry of index.entries) {\n if (appId && entry.app_id !== appId) continue;\n if (listed.has(entry.thread_id) || refreshedForRef.current.has(entry.thread_id)) continue;\n refreshedForRef.current.add(entry.thread_id);\n pending = true;\n }\n if (pending) void listRefresh();\n }, [index.entries, list.conversations, appId, listRefresh]);\n\n const selectThread = useCallback((threadId: string) => {\n if (!threadId) return;\n setActive((current) =>\n current.id === threadId ? current : { id: threadId, isNew: false },\n );\n }, []);\n\n const newThread = useCallback(() => {\n setActive({ id: mintThreadId(), isNew: true });\n }, []);\n\n // A minted thread stops being \"new\" once the backend lists it: until then\n // `useAthenaThreadManager` reports a null id, so URL sync cannot name it.\n const isPersisted = data.some((thread) => thread.id === active.id);\n useEffect(() => {\n if (isPersisted) {\n setActive((current) => (current.isNew ? { ...current, isNew: false } : current));\n }\n }, [isPersisted]);\n\n const titleSource: AthenaStatewireThreadListState['titleSource'] =\n index.entries !== null ? 'index' : 'poll';\n\n const value = useMemo<AthenaStatewireThreadListState>(\n () => ({\n threads: data,\n isLoading,\n activeThreadId: active.id,\n isNewChat: active.isNew,\n selectThread,\n newThread,\n refresh,\n titleSource,\n }),\n [data, isLoading, active.id, active.isNew, selectThread, newThread, refresh, titleSource],\n );\n\n return (\n <AthenaStatewireThreadListContext.Provider value={value}>\n {children}\n </AthenaStatewireThreadListContext.Provider>\n );\n}\n\n/**\n * Provides the statewire thread-list state, with an SDK-scoped QueryClient so\n * consumers do not need their own QueryClientProvider. `syncUrl` (the\n * `…/v2/threads` mount) locates the conversation index beside it; without it\n * titles fall back to the REST poll.\n */\nexport function AthenaStatewireThreadListProvider({\n backendUrl,\n syncUrl,\n apiKey,\n token,\n getToken,\n appId,\n initialThreadId,\n children,\n}: {\n backendUrl: string;\n syncUrl?: string;\n apiKey?: string;\n token?: string | null;\n getToken?: AthenaStatewireTokenGetter;\n appId?: string;\n initialThreadId?: string;\n children: ReactNode;\n}) {\n const [queryClient] = useState(() => new QueryClient());\n return (\n <QueryClientProvider client={queryClient}>\n <StatewireThreadListState\n backendUrl={backendUrl}\n syncUrl={syncUrl}\n apiKey={apiKey}\n token={token}\n getToken={getToken}\n appId={appId}\n initialThreadId={initialThreadId}\n >\n {children}\n </StatewireThreadListState>\n </QueryClientProvider>\n );\n}\n\nconst TITLE_POLL_DELAY_MS = 5000;\nconst TITLE_POLL_INTERVAL_MS = 2000;\nconst TITLE_POLL_MAX_DURATION_MS = 60_000;\n\n/**\n * Fallback for hosts without a live conversation index (`titleSource: 'poll'`,\n * i.e. no signed-in principal): refreshes the thread list until a\n * freshly-started thread's server-generated title appears. Idle while the\n * index carries titles. Mount inside the statewire runtime scope (needs aui\n * state).\n */\nexport function StatewireThreadTitlePoller(): null {\n const list = useAthenaStatewireThreadList();\n const hasMessages = useAuiState((s) => (s.optional.thread?.messages.length ?? 0) > 0);\n\n const activeThreadId = list?.activeThreadId ?? null;\n const titleSource = list?.titleSource ?? 'poll';\n const entry = list?.threads.find((thread) => thread.id === activeThreadId);\n const title = entry?.title?.trim() ?? '';\n const hasTitle = title.length > 0 && !isSerializedContentPartsTitle(title);\n\n const polledThreadsRef = useRef<Set<string>>(new Set());\n const refreshRef = useRef(list?.refresh);\n refreshRef.current = list?.refresh;\n\n useEffect(() => {\n if (!activeThreadId || !hasMessages || hasTitle || titleSource === 'index') return;\n if (polledThreadsRef.current.has(activeThreadId)) return;\n polledThreadsRef.current.add(activeThreadId);\n\n let intervalId: ReturnType<typeof setInterval> | null = null;\n const startId = setTimeout(() => {\n intervalId = setInterval(() => refreshRef.current?.(), TITLE_POLL_INTERVAL_MS);\n }, TITLE_POLL_DELAY_MS);\n const stopId = setTimeout(() => {\n if (intervalId !== null) clearInterval(intervalId);\n }, TITLE_POLL_MAX_DURATION_MS);\n\n return () => {\n clearTimeout(startId);\n clearTimeout(stopId);\n if (intervalId !== null) clearInterval(intervalId);\n };\n }, [activeThreadId, hasMessages, hasTitle, titleSource]);\n\n return null;\n}\n"],"names":["createContext","useContext","useState","mintThreadId","useRef","AthenaAuthContext","useMemo","createRestConversationListFetcher","resolveStatewireAuthToken","useConversationList","useCallback","resolveStatewireAuthHeaders","useConversationIndex","conversationIndexUrlFromStatewireUrl","normalizeThreadTitle","useEffect","jsx","QueryClient","QueryClientProvider","useAuiState","_a","title","isSerializedContentPartsTitle"],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import "../packages/agent-runtime/src/generated/runconfig-contract.js";
3
+ import { useContext, createContext, useState, useRef, useMemo, useCallback, useEffect } from "react";
4
+ import { useConversationIndex, conversationIndexUrlFromStatewireUrl } from "../packages/agent-runtime/src/conversation-index.js";
5
+ import { useConversationList } from "../packages/agent-runtime/src/use-conversation-list.js";
6
+ import "../packages/agent-runtime/src/statewire-state.js";
7
+ import "../packages/agent-runtime/src/messages.js";
8
+ import "@assistant-ui/react-statewire";
9
+ import "@assistant-ui/store";
10
+ import "../packages/agent-runtime/src/quota-safe-local-storage-session.js";
11
+ import "../packages/agent-runtime/src/statewire-suspended.js";
12
+ import "@assistant-ui/tap";
13
+ import "../packages/agent-runtime/src/statewire-attach-observer.js";
14
+ import "statewire";
15
+ import "../packages/agent-runtime/src/thread-status.js";
16
+ import "@assistant-ui/core";
17
+ import "../packages/agent-runtime/src/thread-handoff.js";
18
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
19
+ import { useAuiState } from "@assistant-ui/react";
20
+ import { AthenaAuthContext } from "../auth/AthenaAuthContext.js";
21
+ import { resolveStatewireAuthToken, resolveStatewireAuthHeaders } from "../runtime/statewire-auth-headers.js";
22
+ import { createRestConversationListFetcher } from "./conversation-list-fetcher.js";
23
+ import { mintThreadId } from "./mint-thread-id.js";
24
+ import { normalizeThreadTitle, isSerializedContentPartsTitle } from "./title.js";
25
+ const AthenaStatewireThreadListContext = createContext(null);
26
+ function useAthenaStatewireThreadList() {
27
+ return useContext(AthenaStatewireThreadListContext);
28
+ }
29
+ function useRefreshThreadList() {
30
+ var _a;
31
+ return ((_a = useAthenaStatewireThreadList()) == null ? void 0 : _a.refresh) ?? null;
32
+ }
33
+ const THREAD_LIST_PAGE_SIZE = 50;
34
+ function StatewireThreadListState({
35
+ backendUrl,
36
+ syncUrl,
37
+ apiKey,
38
+ token,
39
+ getToken,
40
+ appId,
41
+ initialThreadId,
42
+ children
43
+ }) {
44
+ var _a;
45
+ const [active, setActive] = useState(
46
+ () => initialThreadId ? { id: initialThreadId, isNew: false } : { id: mintThreadId(), isNew: true }
47
+ );
48
+ const tokenRef = useRef(token);
49
+ tokenRef.current = token;
50
+ const apiKeyRef = useRef(apiKey);
51
+ apiKeyRef.current = apiKey;
52
+ const getTokenRef = useRef(getToken);
53
+ getTokenRef.current = getToken;
54
+ const authContext = useContext(AthenaAuthContext);
55
+ const principal = ((_a = authContext == null ? void 0 : authContext.user) == null ? void 0 : _a.userId) ?? "";
56
+ const hasAuth = !!(apiKey || token || getToken);
57
+ const fetchPage = useMemo(
58
+ () => createRestConversationListFetcher({
59
+ backendUrl,
60
+ // Resolved per request with the attach's token semantics (getter first,
61
+ // host-held token as the fallback) so a rotated token is never stale.
62
+ getAuth: async () => ({
63
+ apiKey: apiKeyRef.current,
64
+ token: await resolveStatewireAuthToken(
65
+ { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },
66
+ { staleAuth: false }
67
+ )
68
+ })
69
+ }),
70
+ [backendUrl]
71
+ );
72
+ const filter = useMemo(
73
+ () => appId ? { appId } : {},
74
+ [appId]
75
+ );
76
+ const list = useConversationList({
77
+ fetchPage,
78
+ filter,
79
+ pageSize: THREAD_LIST_PAGE_SIZE,
80
+ scopeKey: `${backendUrl}::${principal}::${hasAuth ? "auth" : "anon"}`,
81
+ enabled: hasAuth
82
+ });
83
+ const indexHeaders = useCallback(
84
+ (ctx) => resolveStatewireAuthHeaders(
85
+ { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },
86
+ ctx
87
+ ),
88
+ []
89
+ );
90
+ const indexEnabled = syncUrl !== void 0 && principal.length > 0 && hasAuth;
91
+ const index = useConversationIndex({
92
+ baseUrl: syncUrl === void 0 ? "" : conversationIndexUrlFromStatewireUrl(syncUrl),
93
+ userId: principal || "pending-user",
94
+ headers: indexHeaders,
95
+ enabled: indexEnabled
96
+ });
97
+ const indexTitles = useMemo(() => {
98
+ const titles = /* @__PURE__ */ new Map();
99
+ for (const entry of index.entries ?? []) {
100
+ titles.set(entry.thread_id, normalizeThreadTitle(entry.title) ?? null);
101
+ }
102
+ return titles;
103
+ }, [index.entries]);
104
+ const data = useMemo(
105
+ () => list.conversations.map((conversation) => ({
106
+ id: conversation.threadId,
107
+ title: indexTitles.get(conversation.threadId) ?? normalizeThreadTitle(conversation.title) ?? null
108
+ })),
109
+ [list.conversations, indexTitles]
110
+ );
111
+ const isLoading = list.isLoading;
112
+ const listRefresh = list.refresh;
113
+ const refresh = useCallback(() => {
114
+ void listRefresh();
115
+ }, [listRefresh]);
116
+ const refreshedForRef = useRef(/* @__PURE__ */ new Set());
117
+ useEffect(() => {
118
+ if (index.entries === null) return;
119
+ const listed = new Set(list.conversations.map((conversation) => conversation.threadId));
120
+ let pending = false;
121
+ for (const entry of index.entries) {
122
+ if (appId && entry.app_id !== appId) continue;
123
+ if (listed.has(entry.thread_id) || refreshedForRef.current.has(entry.thread_id)) continue;
124
+ refreshedForRef.current.add(entry.thread_id);
125
+ pending = true;
126
+ }
127
+ if (pending) void listRefresh();
128
+ }, [index.entries, list.conversations, appId, listRefresh]);
129
+ const selectThread = useCallback((threadId) => {
130
+ if (!threadId) return;
131
+ setActive(
132
+ (current) => current.id === threadId ? current : { id: threadId, isNew: false }
133
+ );
134
+ }, []);
135
+ const newThread = useCallback(() => {
136
+ setActive({ id: mintThreadId(), isNew: true });
137
+ }, []);
138
+ const isPersisted = data.some((thread) => thread.id === active.id);
139
+ useEffect(() => {
140
+ if (isPersisted) {
141
+ setActive((current) => current.isNew ? { ...current, isNew: false } : current);
142
+ }
143
+ }, [isPersisted]);
144
+ const titleSource = index.entries !== null ? "index" : "poll";
145
+ const value = useMemo(
146
+ () => ({
147
+ threads: data,
148
+ isLoading,
149
+ activeThreadId: active.id,
150
+ isNewChat: active.isNew,
151
+ selectThread,
152
+ newThread,
153
+ refresh,
154
+ titleSource
155
+ }),
156
+ [data, isLoading, active.id, active.isNew, selectThread, newThread, refresh, titleSource]
157
+ );
158
+ return /* @__PURE__ */ jsx(AthenaStatewireThreadListContext.Provider, { value, children });
159
+ }
160
+ function AthenaStatewireThreadListProvider({
161
+ backendUrl,
162
+ syncUrl,
163
+ apiKey,
164
+ token,
165
+ getToken,
166
+ appId,
167
+ initialThreadId,
168
+ children
169
+ }) {
170
+ const [queryClient] = useState(() => new QueryClient());
171
+ return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(
172
+ StatewireThreadListState,
173
+ {
174
+ backendUrl,
175
+ syncUrl,
176
+ apiKey,
177
+ token,
178
+ getToken,
179
+ appId,
180
+ initialThreadId,
181
+ children
182
+ }
183
+ ) });
184
+ }
185
+ const TITLE_POLL_DELAY_MS = 5e3;
186
+ const TITLE_POLL_INTERVAL_MS = 2e3;
187
+ const TITLE_POLL_MAX_DURATION_MS = 6e4;
188
+ function StatewireThreadTitlePoller() {
189
+ var _a;
190
+ const list = useAthenaStatewireThreadList();
191
+ const hasMessages = useAuiState((s) => {
192
+ var _a2;
193
+ return (((_a2 = s.optional.thread) == null ? void 0 : _a2.messages.length) ?? 0) > 0;
194
+ });
195
+ const activeThreadId = (list == null ? void 0 : list.activeThreadId) ?? null;
196
+ const titleSource = (list == null ? void 0 : list.titleSource) ?? "poll";
197
+ const entry = list == null ? void 0 : list.threads.find((thread) => thread.id === activeThreadId);
198
+ const title = ((_a = entry == null ? void 0 : entry.title) == null ? void 0 : _a.trim()) ?? "";
199
+ const hasTitle = title.length > 0 && !isSerializedContentPartsTitle(title);
200
+ const polledThreadsRef = useRef(/* @__PURE__ */ new Set());
201
+ const refreshRef = useRef(list == null ? void 0 : list.refresh);
202
+ refreshRef.current = list == null ? void 0 : list.refresh;
203
+ useEffect(() => {
204
+ if (!activeThreadId || !hasMessages || hasTitle || titleSource === "index") return;
205
+ if (polledThreadsRef.current.has(activeThreadId)) return;
206
+ polledThreadsRef.current.add(activeThreadId);
207
+ let intervalId = null;
208
+ const startId = setTimeout(() => {
209
+ intervalId = setInterval(() => {
210
+ var _a2;
211
+ return (_a2 = refreshRef.current) == null ? void 0 : _a2.call(refreshRef);
212
+ }, TITLE_POLL_INTERVAL_MS);
213
+ }, TITLE_POLL_DELAY_MS);
214
+ const stopId = setTimeout(() => {
215
+ if (intervalId !== null) clearInterval(intervalId);
216
+ }, TITLE_POLL_MAX_DURATION_MS);
217
+ return () => {
218
+ clearTimeout(startId);
219
+ clearTimeout(stopId);
220
+ if (intervalId !== null) clearInterval(intervalId);
221
+ };
222
+ }, [activeThreadId, hasMessages, hasTitle, titleSource]);
223
+ return null;
224
+ }
225
+ export {
226
+ AthenaStatewireThreadListContext,
227
+ AthenaStatewireThreadListProvider,
228
+ StatewireThreadTitlePoller,
229
+ useAthenaStatewireThreadList,
230
+ useRefreshThreadList
231
+ };
232
+ //# sourceMappingURL=statewire-thread-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statewire-thread-list.js","sources":["../../src/threads/statewire-thread-list.tsx"],"sourcesContent":["import {\n type ConversationListFilter,\n conversationIndexUrlFromStatewireUrl,\n type DeepAgentHeadersResolver,\n useConversationIndex,\n useConversationList,\n} from '@athenaintel/agent-runtime';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { useAuiState } from '@assistant-ui/react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { AthenaAuthContext } from '../auth/AthenaAuthContext';\nimport {\n type AthenaStatewireTokenGetter,\n resolveStatewireAuthHeaders,\n resolveStatewireAuthToken,\n} from '../runtime/statewire-auth-headers';\nimport { createRestConversationListFetcher } from './conversation-list-fetcher';\nimport { mintThreadId } from './mint-thread-id';\nimport { isSerializedContentPartsTitle, normalizeThreadTitle } from './title';\n\nexport interface AthenaStatewireThreadSummary {\n id: string;\n title: string | null;\n}\n\n/**\n * Thread-list state. The list is the persisted Agora session list; the ACTIVE\n * thread is a plain id the statewire runtime attaches to — switching threads\n * remounts the statewire session against the new `…/v2/threads/{id}` URL\n * (the same model the mobile app uses).\n */\nexport interface AthenaStatewireThreadListState {\n threads: AthenaStatewireThreadSummary[];\n isLoading: boolean;\n activeThreadId: string;\n /** True while the active thread is a locally-minted chat with no server history. */\n isNewChat: boolean;\n selectThread: (threadId: string) => void;\n newThread: () => void;\n refresh: () => void;\n /**\n * Where titles come from. `'index'` once the signed-in user's live\n * conversation index has replicated — titles and newly created threads then\n * arrive as pushed updates; `'poll'` while it has not (no signed-in\n * principal, e.g. API-key mode, or before its snapshot), when a\n * freshly-started thread's title is picked up by the bounded REST poll.\n */\n titleSource: 'index' | 'poll';\n}\n\nexport const AthenaStatewireThreadListContext =\n createContext<AthenaStatewireThreadListState | null>(null);\n\n/** Read the statewire thread-list state, or null outside that mode. */\nexport function useAthenaStatewireThreadList(): AthenaStatewireThreadListState | null {\n return useContext(AthenaStatewireThreadListContext);\n}\n\n/** Trigger a re-fetch of the thread list. `null` outside `enableThreadList` mode. */\nexport function useRefreshThreadList(): (() => void) | null {\n return useAthenaStatewireThreadList()?.refresh ?? null;\n}\n\n/**\n * The statewire thread list reads one live page through the shared\n * conversation-list contract; the REST default page size predates the shared\n * pager and is preserved here.\n */\nconst THREAD_LIST_PAGE_SIZE = 50;\n\nfunction StatewireThreadListState({\n backendUrl,\n syncUrl,\n apiKey,\n token,\n getToken,\n appId,\n initialThreadId,\n children,\n}: {\n backendUrl: string;\n syncUrl?: string;\n apiKey?: string;\n token?: string | null;\n getToken?: AthenaStatewireTokenGetter;\n appId?: string;\n initialThreadId?: string;\n children: ReactNode;\n}) {\n const [active, setActive] = useState<{ id: string; isNew: boolean }>(() =>\n initialThreadId\n ? { id: initialThreadId, isNew: false }\n : { id: mintThreadId(), isNew: true },\n );\n\n const tokenRef = useRef(token);\n tokenRef.current = token;\n const apiKeyRef = useRef(apiKey);\n apiKeyRef.current = apiKey;\n const getTokenRef = useRef(getToken);\n getTokenRef.current = getToken;\n\n // The cache must be keyed by WHO is asking. Keying on `backendUrl`/`appId`\n // alone let a token swap to a different user read the previous user's thread\n // titles out of the cache. The principal is a non-secret user id, so no\n // credential enters the key (or React Query's devtools). The shared pager\n // never serves placeholder rows across keys, so another principal's list is\n // never shown while the new one loads.\n const authContext = useContext(AthenaAuthContext);\n const principal = authContext?.user?.userId ?? '';\n // A live token getter is a credential too: a `getToken`-only host\n // authenticates its chat, so its list must not stay empty.\n const hasAuth = !!(apiKey || token || getToken);\n\n const fetchPage = useMemo(\n () =>\n createRestConversationListFetcher({\n backendUrl,\n // Resolved per request with the attach's token semantics (getter first,\n // host-held token as the fallback) so a rotated token is never stale.\n getAuth: async () => ({\n apiKey: apiKeyRef.current,\n token: await resolveStatewireAuthToken(\n { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },\n { staleAuth: false },\n ),\n }),\n }),\n [backendUrl],\n );\n const filter = useMemo<ConversationListFilter>(\n () => (appId ? { appId } : {}),\n [appId],\n );\n const list = useConversationList({\n fetchPage,\n filter,\n pageSize: THREAD_LIST_PAGE_SIZE,\n scopeKey: `${backendUrl}::${principal}::${hasAuth ? 'auth' : 'anon'}`,\n enabled: hasAuth,\n });\n\n // Live titles ride the signed-in user's conversation index — the same push\n // channel the conversation-history panel renders from: the host replicates\n // title, lifecycle, and creation changes as ops, so a freshly-started\n // thread's server-generated title lands without polling. The index is keyed\n // by the principal, so it only attaches once one is known; API-key-only\n // hosts keep the bounded REST poll (`titleSource: 'poll'`).\n const indexHeaders = useCallback<DeepAgentHeadersResolver>(\n (ctx) =>\n resolveStatewireAuthHeaders(\n { apiKey: apiKeyRef.current, token: tokenRef.current, getToken: getTokenRef.current },\n ctx,\n ),\n [],\n );\n const indexEnabled = syncUrl !== undefined && principal.length > 0 && hasAuth;\n const index = useConversationIndex({\n baseUrl: syncUrl === undefined ? '' : conversationIndexUrlFromStatewireUrl(syncUrl),\n userId: principal || 'pending-user',\n headers: indexHeaders,\n enabled: indexEnabled,\n });\n const indexTitles = useMemo(() => {\n const titles = new Map<string, string | null>();\n for (const entry of index.entries ?? []) {\n titles.set(entry.thread_id, normalizeThreadTitle(entry.title) ?? null);\n }\n return titles;\n }, [index.entries]);\n\n const data = useMemo(\n () =>\n list.conversations.map((conversation) => ({\n id: conversation.threadId,\n title:\n indexTitles.get(conversation.threadId) ??\n normalizeThreadTitle(conversation.title) ??\n null,\n })),\n [list.conversations, indexTitles],\n );\n const isLoading = list.isLoading;\n\n const listRefresh = list.refresh;\n const refresh = useCallback(() => {\n void listRefresh();\n }, [listRefresh]);\n\n // A thread the index knows — created here on first send, or elsewhere —\n // that the REST page does not list yet: refresh once per such id so the row\n // appears without the user pressing refresh. Rows for other app ids belong\n // to other lists and never trigger one.\n const refreshedForRef = useRef<Set<string>>(new Set());\n useEffect(() => {\n if (index.entries === null) return;\n const listed = new Set(list.conversations.map((conversation) => conversation.threadId));\n let pending = false;\n for (const entry of index.entries) {\n if (appId && entry.app_id !== appId) continue;\n if (listed.has(entry.thread_id) || refreshedForRef.current.has(entry.thread_id)) continue;\n refreshedForRef.current.add(entry.thread_id);\n pending = true;\n }\n if (pending) void listRefresh();\n }, [index.entries, list.conversations, appId, listRefresh]);\n\n const selectThread = useCallback((threadId: string) => {\n if (!threadId) return;\n setActive((current) =>\n current.id === threadId ? current : { id: threadId, isNew: false },\n );\n }, []);\n\n const newThread = useCallback(() => {\n setActive({ id: mintThreadId(), isNew: true });\n }, []);\n\n // A minted thread stops being \"new\" once the backend lists it: until then\n // `useAthenaThreadManager` reports a null id, so URL sync cannot name it.\n const isPersisted = data.some((thread) => thread.id === active.id);\n useEffect(() => {\n if (isPersisted) {\n setActive((current) => (current.isNew ? { ...current, isNew: false } : current));\n }\n }, [isPersisted]);\n\n const titleSource: AthenaStatewireThreadListState['titleSource'] =\n index.entries !== null ? 'index' : 'poll';\n\n const value = useMemo<AthenaStatewireThreadListState>(\n () => ({\n threads: data,\n isLoading,\n activeThreadId: active.id,\n isNewChat: active.isNew,\n selectThread,\n newThread,\n refresh,\n titleSource,\n }),\n [data, isLoading, active.id, active.isNew, selectThread, newThread, refresh, titleSource],\n );\n\n return (\n <AthenaStatewireThreadListContext.Provider value={value}>\n {children}\n </AthenaStatewireThreadListContext.Provider>\n );\n}\n\n/**\n * Provides the statewire thread-list state, with an SDK-scoped QueryClient so\n * consumers do not need their own QueryClientProvider. `syncUrl` (the\n * `…/v2/threads` mount) locates the conversation index beside it; without it\n * titles fall back to the REST poll.\n */\nexport function AthenaStatewireThreadListProvider({\n backendUrl,\n syncUrl,\n apiKey,\n token,\n getToken,\n appId,\n initialThreadId,\n children,\n}: {\n backendUrl: string;\n syncUrl?: string;\n apiKey?: string;\n token?: string | null;\n getToken?: AthenaStatewireTokenGetter;\n appId?: string;\n initialThreadId?: string;\n children: ReactNode;\n}) {\n const [queryClient] = useState(() => new QueryClient());\n return (\n <QueryClientProvider client={queryClient}>\n <StatewireThreadListState\n backendUrl={backendUrl}\n syncUrl={syncUrl}\n apiKey={apiKey}\n token={token}\n getToken={getToken}\n appId={appId}\n initialThreadId={initialThreadId}\n >\n {children}\n </StatewireThreadListState>\n </QueryClientProvider>\n );\n}\n\nconst TITLE_POLL_DELAY_MS = 5000;\nconst TITLE_POLL_INTERVAL_MS = 2000;\nconst TITLE_POLL_MAX_DURATION_MS = 60_000;\n\n/**\n * Fallback for hosts without a live conversation index (`titleSource: 'poll'`,\n * i.e. no signed-in principal): refreshes the thread list until a\n * freshly-started thread's server-generated title appears. Idle while the\n * index carries titles. Mount inside the statewire runtime scope (needs aui\n * state).\n */\nexport function StatewireThreadTitlePoller(): null {\n const list = useAthenaStatewireThreadList();\n const hasMessages = useAuiState((s) => (s.optional.thread?.messages.length ?? 0) > 0);\n\n const activeThreadId = list?.activeThreadId ?? null;\n const titleSource = list?.titleSource ?? 'poll';\n const entry = list?.threads.find((thread) => thread.id === activeThreadId);\n const title = entry?.title?.trim() ?? '';\n const hasTitle = title.length > 0 && !isSerializedContentPartsTitle(title);\n\n const polledThreadsRef = useRef<Set<string>>(new Set());\n const refreshRef = useRef(list?.refresh);\n refreshRef.current = list?.refresh;\n\n useEffect(() => {\n if (!activeThreadId || !hasMessages || hasTitle || titleSource === 'index') return;\n if (polledThreadsRef.current.has(activeThreadId)) return;\n polledThreadsRef.current.add(activeThreadId);\n\n let intervalId: ReturnType<typeof setInterval> | null = null;\n const startId = setTimeout(() => {\n intervalId = setInterval(() => refreshRef.current?.(), TITLE_POLL_INTERVAL_MS);\n }, TITLE_POLL_DELAY_MS);\n const stopId = setTimeout(() => {\n if (intervalId !== null) clearInterval(intervalId);\n }, TITLE_POLL_MAX_DURATION_MS);\n\n return () => {\n clearTimeout(startId);\n clearTimeout(stopId);\n if (intervalId !== null) clearInterval(intervalId);\n };\n }, [activeThreadId, hasMessages, hasTitle, titleSource]);\n\n return null;\n}\n"],"names":["_a"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const AthenaThreadIdContext = react.createContext(void 0);
5
+ function useAthenaThreadId() {
6
+ return react.useContext(AthenaThreadIdContext);
7
+ }
8
+ const AthenaStatewireThreadIdContext = react.createContext(null);
9
+ function useAthenaStatewireThreadId() {
10
+ const threadId = react.useContext(AthenaStatewireThreadIdContext);
11
+ if (threadId === null) {
12
+ throw new Error(
13
+ "[AthenaSDK] useAthenaStatewireThreadId must be used within <AthenaProvider>"
14
+ );
15
+ }
16
+ return threadId;
17
+ }
18
+ exports.AthenaStatewireThreadIdContext = AthenaStatewireThreadIdContext;
19
+ exports.AthenaThreadIdContext = AthenaThreadIdContext;
20
+ exports.useAthenaStatewireThreadId = useAthenaStatewireThreadId;
21
+ exports.useAthenaThreadId = useAthenaThreadId;
22
+ //# sourceMappingURL=thread-id-context.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-id-context.cjs","sources":["../../src/threads/thread-id-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * The active thread's backend id, provided by `AthenaProvider` in thread-list\n * mode. `undefined` for a never-started chat (a locally minted id with no\n * server history) so history-gated UI does not treat an intentionally empty\n * new chat as pending history; also `undefined` outside thread-list mode.\n */\nexport const AthenaThreadIdContext = createContext<string | undefined>(undefined);\n\n/** Read the active thread's backend id (see {@link AthenaThreadIdContext}). */\nexport function useAthenaThreadId(): string | undefined {\n return useContext(AthenaThreadIdContext);\n}\n\n/**\n * The thread id the statewire session is attached to — the\n * `…/v2/threads/{id}` mount the provider opened — defined for never-started\n * chats too (unlike {@link AthenaThreadIdContext}, which withholds the id\n * until the thread has server history). Keys per-thread composer\n * registrations such as the asset-mention handler.\n */\nexport const AthenaStatewireThreadIdContext = createContext<string | null>(null);\n\nexport function useAthenaStatewireThreadId(): string {\n const threadId = useContext(AthenaStatewireThreadIdContext);\n if (threadId === null) {\n throw new Error(\n '[AthenaSDK] useAthenaStatewireThreadId must be used within <AthenaProvider>',\n );\n }\n return threadId;\n}\n"],"names":["createContext","useContext"],"mappings":";;;AAQO,MAAM,wBAAwBA,MAAAA,cAAkC,MAAS;AAGzE,SAAS,oBAAwC;AACtD,SAAOC,MAAAA,WAAW,qBAAqB;AACzC;AASO,MAAM,iCAAiCD,MAAAA,cAA6B,IAAI;AAExE,SAAS,6BAAqC;AACnD,QAAM,WAAWC,MAAAA,WAAW,8BAA8B;AAC1D,MAAI,aAAa,MAAM;AACrB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO;AACT;;;;;"}
@@ -7,3 +7,12 @@
7
7
  export declare const AthenaThreadIdContext: import("react").Context<string | undefined>;
8
8
  /** Read the active thread's backend id (see {@link AthenaThreadIdContext}). */
9
9
  export declare function useAthenaThreadId(): string | undefined;
10
+ /**
11
+ * The thread id the statewire session is attached to — the
12
+ * `…/v2/threads/{id}` mount the provider opened — defined for never-started
13
+ * chats too (unlike {@link AthenaThreadIdContext}, which withholds the id
14
+ * until the thread has server history). Keys per-thread composer
15
+ * registrations such as the asset-mention handler.
16
+ */
17
+ export declare const AthenaStatewireThreadIdContext: import("react").Context<string | null>;
18
+ export declare function useAthenaStatewireThreadId(): string;
@@ -0,0 +1,22 @@
1
+ import { createContext, useContext } from "react";
2
+ const AthenaThreadIdContext = createContext(void 0);
3
+ function useAthenaThreadId() {
4
+ return useContext(AthenaThreadIdContext);
5
+ }
6
+ const AthenaStatewireThreadIdContext = createContext(null);
7
+ function useAthenaStatewireThreadId() {
8
+ const threadId = useContext(AthenaStatewireThreadIdContext);
9
+ if (threadId === null) {
10
+ throw new Error(
11
+ "[AthenaSDK] useAthenaStatewireThreadId must be used within <AthenaProvider>"
12
+ );
13
+ }
14
+ return threadId;
15
+ }
16
+ export {
17
+ AthenaStatewireThreadIdContext,
18
+ AthenaThreadIdContext,
19
+ useAthenaStatewireThreadId,
20
+ useAthenaThreadId
21
+ };
22
+ //# sourceMappingURL=thread-id-context.js.map