@athenaintel/react 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (857) hide show
  1. package/README.md +97 -11
  2. package/dist/assets/AssetPanel.cjs +277 -0
  3. package/dist/assets/AssetPanel.cjs.map +1 -0
  4. package/dist/assets/AssetPanel.js +277 -0
  5. package/dist/assets/AssetPanel.js.map +1 -0
  6. package/dist/assets/AthenaAssetEmbed.cjs +151 -0
  7. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -0
  8. package/dist/assets/AthenaAssetEmbed.js +151 -0
  9. package/dist/assets/AthenaAssetEmbed.js.map +1 -0
  10. package/dist/assets/AthenaLayout.cjs +69 -0
  11. package/dist/assets/AthenaLayout.cjs.map +1 -0
  12. package/dist/assets/AthenaLayout.js +69 -0
  13. package/dist/assets/AthenaLayout.js.map +1 -0
  14. package/dist/assets/asset-embed-messages.cjs +39 -0
  15. package/dist/assets/asset-embed-messages.cjs.map +1 -0
  16. package/dist/assets/asset-embed-messages.js +39 -0
  17. package/dist/assets/asset-embed-messages.js.map +1 -0
  18. package/dist/assets/asset-panel-store.cjs +124 -0
  19. package/dist/assets/asset-panel-store.cjs.map +1 -0
  20. package/dist/assets/asset-panel-store.js +124 -0
  21. package/dist/assets/asset-panel-store.js.map +1 -0
  22. package/dist/assets/asset-panel-url.cjs +40 -0
  23. package/dist/assets/asset-panel-url.cjs.map +1 -0
  24. package/dist/assets/asset-panel-url.js +40 -0
  25. package/dist/assets/asset-panel-url.js.map +1 -0
  26. package/dist/assets/use-asset-embed.cjs +362 -0
  27. package/dist/assets/use-asset-embed.cjs.map +1 -0
  28. package/dist/assets/use-asset-embed.js +362 -0
  29. package/dist/assets/use-asset-embed.js.map +1 -0
  30. package/dist/{AthenaAuthContext-B3AwLA5Z.cjs → auth/AthenaAuthContext.cjs} +5 -4
  31. package/dist/auth/AthenaAuthContext.cjs.map +1 -0
  32. package/dist/{AthenaAuthContext-DQsdayH2.js → auth/AthenaAuthContext.js} +3 -3
  33. package/dist/auth/AthenaAuthContext.js.map +1 -0
  34. package/dist/auth/AthenaAuthProvider.cjs +141 -0
  35. package/dist/auth/AthenaAuthProvider.cjs.map +1 -0
  36. package/dist/auth/AthenaAuthProvider.js +141 -0
  37. package/dist/auth/AthenaAuthProvider.js.map +1 -0
  38. package/dist/{auth.cjs → auth/AthenaSSOProvider.cjs} +14 -151
  39. package/dist/auth/AthenaSSOProvider.cjs.map +1 -0
  40. package/dist/{auth.js → auth/AthenaSSOProvider.js} +4 -142
  41. package/dist/auth/AthenaSSOProvider.js.map +1 -0
  42. package/dist/auth/index.cjs +10 -0
  43. package/dist/auth/index.cjs.map +1 -0
  44. package/dist/auth/index.js +10 -0
  45. package/dist/auth/index.js.map +1 -0
  46. package/dist/chat/AthenaChat.cjs +753 -0
  47. package/dist/chat/AthenaChat.cjs.map +1 -0
  48. package/dist/chat/AthenaChat.d.ts +3 -2
  49. package/dist/chat/AthenaChat.js +753 -0
  50. package/dist/chat/AthenaChat.js.map +1 -0
  51. package/dist/chat/AthenaChatErrorBoundary.cjs +53 -0
  52. package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -0
  53. package/dist/chat/AthenaChatErrorBoundary.js +53 -0
  54. package/dist/chat/AthenaChatErrorBoundary.js.map +1 -0
  55. package/dist/chat/StatewireApprovalCard.cjs +171 -0
  56. package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
  57. package/dist/chat/StatewireApprovalCard.js +171 -0
  58. package/dist/chat/StatewireApprovalCard.js.map +1 -0
  59. package/dist/chat/StatewireClientToolBridge.cjs +50 -0
  60. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
  61. package/dist/chat/StatewireClientToolBridge.js +50 -0
  62. package/dist/chat/StatewireClientToolBridge.js.map +1 -0
  63. package/dist/chat/StatewireQueuedMessages.cjs +432 -0
  64. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
  65. package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
  66. package/dist/chat/StatewireQueuedMessages.js +432 -0
  67. package/dist/chat/StatewireQueuedMessages.js.map +1 -0
  68. package/dist/chat/athena-citation-links.cjs +326 -0
  69. package/dist/chat/athena-citation-links.cjs.map +1 -0
  70. package/dist/chat/athena-citation-links.js +326 -0
  71. package/dist/chat/athena-citation-links.js.map +1 -0
  72. package/dist/chat/run-activity.cjs +28 -0
  73. package/dist/chat/run-activity.cjs.map +1 -0
  74. package/dist/chat/run-activity.js +28 -0
  75. package/dist/chat/run-activity.js.map +1 -0
  76. package/dist/chat/statewire-banners.cjs +83 -0
  77. package/dist/chat/statewire-banners.cjs.map +1 -0
  78. package/dist/chat/statewire-banners.js +83 -0
  79. package/dist/chat/statewire-banners.js.map +1 -0
  80. package/dist/chat/statewire-client-tools.cjs +73 -0
  81. package/dist/chat/statewire-client-tools.cjs.map +1 -0
  82. package/dist/chat/statewire-client-tools.js +73 -0
  83. package/dist/chat/statewire-client-tools.js.map +1 -0
  84. package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
  85. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
  86. package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
  87. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
  88. package/dist/chat/super-grouping/SuperGroupingCard.cjs +361 -0
  89. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
  90. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +4 -1
  91. package/dist/chat/super-grouping/SuperGroupingCard.js +361 -0
  92. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
  93. package/dist/chat/super-grouping/activity-timeline.cjs +151 -0
  94. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
  95. package/dist/chat/super-grouping/activity-timeline.d.ts +3 -3
  96. package/dist/chat/super-grouping/activity-timeline.js +151 -0
  97. package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
  98. package/dist/chat/super-grouping/grouping-function.cjs +55 -0
  99. package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
  100. package/dist/chat/super-grouping/grouping-function.js +55 -0
  101. package/dist/chat/super-grouping/grouping-function.js.map +1 -0
  102. package/dist/chat/super-grouping/index.cjs +26 -0
  103. package/dist/chat/super-grouping/index.cjs.map +1 -0
  104. package/dist/chat/super-grouping/index.js +26 -0
  105. package/dist/chat/super-grouping/index.js.map +1 -0
  106. package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
  107. package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
  108. package/dist/chat/super-grouping/toolkit-map.js +96 -0
  109. package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
  110. package/dist/chat/tiptap-text.cjs +101 -0
  111. package/dist/chat/tiptap-text.cjs.map +1 -0
  112. package/dist/chat/tiptap-text.js +101 -0
  113. package/dist/chat/tiptap-text.js.map +1 -0
  114. package/dist/chat/tooltip-icon-button.cjs +32 -0
  115. package/dist/chat/tooltip-icon-button.cjs.map +1 -0
  116. package/dist/chat/tooltip-icon-button.js +32 -0
  117. package/dist/chat/tooltip-icon-button.js.map +1 -0
  118. package/dist/chat/use-athena-run-live.cjs +23 -0
  119. package/dist/chat/use-athena-run-live.cjs.map +1 -0
  120. package/dist/chat/use-athena-run-live.d.ts +10 -0
  121. package/dist/chat/use-athena-run-live.js +23 -0
  122. package/dist/chat/use-athena-run-live.js.map +1 -0
  123. package/dist/chat/use-statewire-approval-request.cjs +46 -0
  124. package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
  125. package/dist/chat/use-statewire-approval-request.js +46 -0
  126. package/dist/chat/use-statewire-approval-request.js.map +1 -0
  127. package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
  128. package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
  129. package/dist/chat-ui/auth/sign-in-card.js +128 -0
  130. package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
  131. package/dist/chat-ui/composer/composer-action.cjs +11 -0
  132. package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
  133. package/dist/chat-ui/composer/composer-action.d.ts +5 -8
  134. package/dist/chat-ui/composer/composer-action.js +11 -0
  135. package/dist/chat-ui/composer/composer-action.js.map +1 -0
  136. package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
  137. package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
  138. package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
  139. package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
  140. package/dist/chat-ui/composer/tiptap-composer.cjs +590 -0
  141. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
  142. package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
  143. package/dist/chat-ui/composer/tiptap-composer.js +590 -0
  144. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
  145. package/dist/chat-ui/header/chat-header.cjs +33 -0
  146. package/dist/chat-ui/header/chat-header.cjs.map +1 -0
  147. package/dist/chat-ui/header/chat-header.js +33 -0
  148. package/dist/chat-ui/header/chat-header.js.map +1 -0
  149. package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
  150. package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
  151. package/dist/chat-ui/header/conversation-history-panel.js +369 -0
  152. package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
  153. package/dist/chat-ui/index.cjs +139 -0
  154. package/dist/chat-ui/index.cjs.map +1 -0
  155. package/dist/chat-ui/index.d.ts +4 -3
  156. package/dist/chat-ui/index.js +139 -0
  157. package/dist/chat-ui/index.js.map +1 -0
  158. package/dist/chat-ui/lib/asset-urls.cjs +18 -0
  159. package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
  160. package/dist/chat-ui/lib/asset-urls.js +18 -0
  161. package/dist/chat-ui/lib/asset-urls.js.map +1 -0
  162. package/dist/chat-ui/mentions/mention-chip.cjs +208 -0
  163. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
  164. package/dist/chat-ui/mentions/mention-chip.js +208 -0
  165. package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
  166. package/dist/chat-ui/mentions/mention-extension.cjs +184 -0
  167. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
  168. package/dist/chat-ui/mentions/mention-extension.d.ts +24 -2
  169. package/dist/chat-ui/mentions/mention-extension.js +184 -0
  170. package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
  171. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
  172. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
  173. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
  174. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
  175. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
  176. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
  177. package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
  178. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
  179. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
  180. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
  181. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
  182. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
  183. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
  184. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
  185. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
  186. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
  187. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
  188. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
  189. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
  190. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
  191. package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
  192. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +62 -0
  193. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
  194. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +62 -0
  195. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
  196. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
  197. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
  198. package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
  199. package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
  200. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
  201. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
  202. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
  203. package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
  204. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
  205. package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
  206. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
  207. package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
  208. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
  209. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
  210. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
  211. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
  212. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
  213. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
  214. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
  215. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
  216. package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
  217. package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
  218. package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
  219. package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
  220. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +123 -0
  221. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
  222. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +10 -0
  223. package/dist/chat-ui/mentions/suggestions/data/api-client.js +123 -0
  224. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
  225. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
  226. package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
  227. package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
  228. package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
  229. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
  230. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
  231. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
  232. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
  233. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
  234. package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
  235. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
  236. package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
  237. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
  238. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
  239. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
  240. package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
  241. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
  242. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
  243. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
  244. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
  245. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
  246. package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
  247. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
  248. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
  249. package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
  250. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
  251. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
  252. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
  253. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
  254. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
  255. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
  256. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
  257. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
  258. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
  259. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
  260. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
  261. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
  262. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
  263. package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
  264. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
  265. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
  266. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
  267. package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
  268. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
  269. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
  270. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
  271. package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
  272. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
  273. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
  274. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
  275. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
  276. package/dist/chat-ui/messages/continue-pill.cjs +54 -0
  277. package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
  278. package/dist/chat-ui/messages/continue-pill.js +54 -0
  279. package/dist/chat-ui/messages/continue-pill.js.map +1 -0
  280. package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
  281. package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
  282. package/dist/chat-ui/messages/message-actions-config.js +12 -0
  283. package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
  284. package/dist/chat-ui/messages/message-components.cjs +343 -0
  285. package/dist/chat-ui/messages/message-components.cjs.map +1 -0
  286. package/dist/chat-ui/messages/message-components.d.ts +13 -1
  287. package/dist/chat-ui/messages/message-components.js +343 -0
  288. package/dist/chat-ui/messages/message-components.js.map +1 -0
  289. package/dist/chat-ui/messages/running-indicator.cjs +49 -0
  290. package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
  291. package/dist/chat-ui/messages/running-indicator.js +49 -0
  292. package/dist/chat-ui/messages/running-indicator.js.map +1 -0
  293. package/dist/chat-ui/messages/runtime-message.cjs +65 -0
  294. package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
  295. package/dist/chat-ui/messages/runtime-message.js +65 -0
  296. package/dist/chat-ui/messages/runtime-message.js.map +1 -0
  297. package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +39 -16
  298. package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
  299. package/dist/chat-ui/messages/statewire-continue-run.d.ts +5 -1
  300. package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +29 -7
  301. package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
  302. package/dist/chat-ui/messages/user-edit-composer.cjs +61 -0
  303. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
  304. package/dist/chat-ui/messages/user-edit-composer.js +61 -0
  305. package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
  306. package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
  307. package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
  308. package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
  309. package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
  310. package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
  311. package/dist/chat-ui/statewire.cjs +39 -0
  312. package/dist/chat-ui/statewire.cjs.map +1 -0
  313. package/dist/chat-ui/statewire.js +39 -0
  314. package/dist/chat-ui/statewire.js.map +1 -0
  315. package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
  316. package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
  317. package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
  318. package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
  319. package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
  320. package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
  321. package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
  322. package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
  323. package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
  324. package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
  325. package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
  326. package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
  327. package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
  328. package/dist/chat-ui/thread/statewire-history-edge.cjs +134 -0
  329. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
  330. package/dist/chat-ui/thread/statewire-history-edge.js +134 -0
  331. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
  332. package/dist/{collab.cjs → collab/client.cjs} +6 -166
  333. package/dist/collab/client.cjs.map +1 -0
  334. package/dist/{collab.js → collab/client.js} +5 -164
  335. package/dist/collab/client.js.map +1 -0
  336. package/dist/collab/close-policy.cjs +14 -0
  337. package/dist/collab/close-policy.cjs.map +1 -0
  338. package/dist/collab/close-policy.js +14 -0
  339. package/dist/collab/close-policy.js.map +1 -0
  340. package/dist/collab/index.cjs +17 -0
  341. package/dist/collab/index.cjs.map +1 -0
  342. package/dist/collab/index.js +17 -0
  343. package/dist/collab/index.js.map +1 -0
  344. package/dist/collab/mint.cjs +59 -0
  345. package/dist/collab/mint.cjs.map +1 -0
  346. package/dist/collab/mint.js +59 -0
  347. package/dist/collab/mint.js.map +1 -0
  348. package/dist/collab/react.cjs +58 -0
  349. package/dist/collab/react.cjs.map +1 -0
  350. package/dist/collab/react.js +58 -0
  351. package/dist/collab/react.js.map +1 -0
  352. package/dist/collab/shape.cjs +45 -0
  353. package/dist/collab/shape.cjs.map +1 -0
  354. package/dist/collab/shape.js +45 -0
  355. package/dist/collab/shape.js.map +1 -0
  356. package/dist/composer/AttachmentContext.cjs +40 -0
  357. package/dist/composer/AttachmentContext.cjs.map +1 -0
  358. package/dist/composer/AttachmentContext.js +40 -0
  359. package/dist/composer/AttachmentContext.js.map +1 -0
  360. package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
  361. package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
  362. package/dist/composer/ComposerAttachmentPreview.js +39 -0
  363. package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
  364. package/dist/composer/ComposerDropZone.cjs +61 -0
  365. package/dist/composer/ComposerDropZone.cjs.map +1 -0
  366. package/dist/composer/ComposerDropZone.d.ts +1 -1
  367. package/dist/composer/ComposerDropZone.js +61 -0
  368. package/dist/composer/ComposerDropZone.js.map +1 -0
  369. package/dist/composer/ComposerQuotePreview.cjs +42 -0
  370. package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
  371. package/dist/composer/ComposerQuotePreview.js +42 -0
  372. package/dist/composer/ComposerQuotePreview.js.map +1 -0
  373. package/dist/composer/FileUploadButton.cjs +65 -0
  374. package/dist/composer/FileUploadButton.cjs.map +1 -0
  375. package/dist/composer/FileUploadButton.d.ts +1 -1
  376. package/dist/composer/FileUploadButton.js +65 -0
  377. package/dist/composer/FileUploadButton.js.map +1 -0
  378. package/dist/composer/QuoteContext.cjs +68 -0
  379. package/dist/composer/QuoteContext.cjs.map +1 -0
  380. package/dist/composer/QuoteContext.js +68 -0
  381. package/dist/composer/QuoteContext.js.map +1 -0
  382. package/dist/composer/build-composed-message.cjs +25 -0
  383. package/dist/composer/build-composed-message.cjs.map +1 -0
  384. package/dist/composer/build-composed-message.js +25 -0
  385. package/dist/composer/build-composed-message.js.map +1 -0
  386. package/dist/composer/clipboard.cjs +62 -0
  387. package/dist/composer/clipboard.cjs.map +1 -0
  388. package/dist/composer/clipboard.d.ts +27 -3
  389. package/dist/composer/clipboard.js +62 -0
  390. package/dist/composer/clipboard.js.map +1 -0
  391. package/dist/composer/useAppendToComposer.cjs +21 -0
  392. package/dist/composer/useAppendToComposer.cjs.map +1 -0
  393. package/dist/composer/useAppendToComposer.js +21 -0
  394. package/dist/composer/useAppendToComposer.js.map +1 -0
  395. package/dist/composer/useAttachFiles.cjs +40 -0
  396. package/dist/composer/useAttachFiles.cjs.map +1 -0
  397. package/dist/composer/useAttachFiles.d.ts +24 -0
  398. package/dist/composer/useAttachFiles.js +40 -0
  399. package/dist/composer/useAttachFiles.js.map +1 -0
  400. package/dist/composer/useComposerAttachment.cjs +25 -0
  401. package/dist/composer/useComposerAttachment.cjs.map +1 -0
  402. package/dist/composer/useComposerAttachment.js +25 -0
  403. package/dist/composer/useComposerAttachment.js.map +1 -0
  404. package/dist/composer/useFileUpload.cjs +123 -0
  405. package/dist/composer/useFileUpload.cjs.map +1 -0
  406. package/dist/composer/useFileUpload.js +123 -0
  407. package/dist/composer/useFileUpload.js.map +1 -0
  408. package/dist/composer/useSendMessage.cjs +22 -0
  409. package/dist/composer/useSendMessage.cjs.map +1 -0
  410. package/dist/composer/useSendMessage.js +22 -0
  411. package/dist/composer/useSendMessage.js.map +1 -0
  412. package/dist/diagnostics/athena-diagnostics.cjs +329 -0
  413. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
  414. package/dist/diagnostics/athena-diagnostics.js +329 -0
  415. package/dist/diagnostics/athena-diagnostics.js.map +1 -0
  416. package/dist/diagnostics/errors.cjs +89 -0
  417. package/dist/diagnostics/errors.cjs.map +1 -0
  418. package/dist/diagnostics/errors.js +89 -0
  419. package/dist/diagnostics/errors.js.map +1 -0
  420. package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
  421. package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
  422. package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
  423. package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
  424. package/dist/index.cjs +274 -27882
  425. package/dist/index.cjs.map +1 -1
  426. package/dist/index.d.ts +6 -4
  427. package/dist/index.js +161 -27759
  428. package/dist/index.js.map +1 -1
  429. package/dist/lib/athena-urls.cjs +194 -0
  430. package/dist/lib/athena-urls.cjs.map +1 -0
  431. package/dist/lib/athena-urls.d.ts +20 -5
  432. package/dist/lib/athena-urls.js +194 -0
  433. package/dist/lib/athena-urls.js.map +1 -0
  434. package/dist/lib/posthog/before-send.cjs +58 -0
  435. package/dist/lib/posthog/before-send.cjs.map +1 -0
  436. package/dist/lib/posthog/before-send.js +58 -0
  437. package/dist/lib/posthog/before-send.js.map +1 -0
  438. package/dist/lib/posthog/capture-gate.cjs +322 -0
  439. package/dist/lib/posthog/capture-gate.cjs.map +1 -0
  440. package/dist/lib/posthog/capture-gate.js +322 -0
  441. package/dist/lib/posthog/capture-gate.js.map +1 -0
  442. package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
  443. package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
  444. package/dist/lib/posthog/wrap-posthog-client.js +163 -0
  445. package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
  446. package/dist/lib/utils.cjs +12 -0
  447. package/dist/lib/utils.cjs.map +1 -0
  448. package/dist/lib/utils.js +9 -0
  449. package/dist/lib/utils.js.map +1 -0
  450. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
  451. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
  452. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
  453. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
  454. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
  455. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
  456. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
  457. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
  458. package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
  459. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
  460. package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
  461. package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
  462. package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
  463. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
  464. package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
  465. package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
  466. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +270 -0
  467. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  468. package/dist/packages/agent-runtime/src/client-tool-bridge.js +270 -0
  469. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
  470. package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
  471. package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
  472. package/dist/packages/agent-runtime/src/client-tools.js +137 -0
  473. package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
  474. package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
  475. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
  476. package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
  477. package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
  478. package/dist/packages/agent-runtime/src/conversation-list.cjs +86 -0
  479. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
  480. package/dist/packages/agent-runtime/src/conversation-list.js +86 -0
  481. package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
  482. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
  483. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  484. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
  485. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  486. package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
  487. package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
  488. package/dist/packages/agent-runtime/src/edit-command.js +89 -0
  489. package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
  490. package/dist/packages/agent-runtime/src/errors.cjs +95 -0
  491. package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
  492. package/dist/packages/agent-runtime/src/errors.js +95 -0
  493. package/dist/packages/agent-runtime/src/errors.js.map +1 -0
  494. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +236 -0
  495. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  496. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +236 -0
  497. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  498. package/dist/packages/agent-runtime/src/interrupts.cjs +117 -0
  499. package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
  500. package/dist/packages/agent-runtime/src/interrupts.js +117 -0
  501. package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
  502. package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
  503. package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
  504. package/dist/packages/agent-runtime/src/message-author.js +31 -0
  505. package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
  506. package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
  507. package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
  508. package/dist/packages/agent-runtime/src/message-window.js +85 -0
  509. package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
  510. package/dist/packages/agent-runtime/src/messages.cjs +433 -0
  511. package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
  512. package/dist/packages/agent-runtime/src/messages.js +433 -0
  513. package/dist/packages/agent-runtime/src/messages.js.map +1 -0
  514. package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
  515. package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
  516. package/dist/packages/agent-runtime/src/model-context.js +13 -0
  517. package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
  518. package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
  519. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
  520. package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
  521. package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
  522. package/dist/packages/agent-runtime/src/protocol.cjs +33 -0
  523. package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
  524. package/dist/packages/agent-runtime/src/protocol.js +33 -0
  525. package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
  526. package/dist/packages/agent-runtime/src/queue.cjs +67 -0
  527. package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
  528. package/dist/packages/agent-runtime/src/queue.js +67 -0
  529. package/dist/packages/agent-runtime/src/queue.js.map +1 -0
  530. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +47 -0
  531. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  532. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +47 -0
  533. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  534. package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
  535. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
  536. package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
  537. package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
  538. package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
  539. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
  540. package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
  541. package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
  542. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
  543. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  544. package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
  545. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  546. package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
  547. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
  548. package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
  549. package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
  550. package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
  551. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  552. package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
  553. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
  554. package/dist/packages/agent-runtime/src/statewire-transport.cjs +6 -0
  555. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
  556. package/dist/packages/agent-runtime/src/statewire-transport.js +6 -0
  557. package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
  558. package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
  559. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  560. package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
  561. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
  562. package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
  563. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
  564. package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
  565. package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
  566. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
  567. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  568. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
  569. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  570. package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
  571. package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
  572. package/dist/packages/agent-runtime/src/thread-status.js +49 -0
  573. package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
  574. package/dist/packages/agent-runtime/src/tool-metadata.cjs +1802 -0
  575. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
  576. package/dist/packages/agent-runtime/src/tool-metadata.js +1802 -0
  577. package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
  578. package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
  579. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
  580. package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
  581. package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
  582. package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
  583. package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
  584. package/dist/packages/agent-runtime/src/tool-result.js +151 -0
  585. package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
  586. package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
  587. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  588. package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
  589. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
  590. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +28 -0
  591. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  592. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +28 -0
  593. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  594. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +138 -0
  595. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  596. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +138 -0
  597. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  598. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +387 -0
  599. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  600. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +387 -0
  601. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  602. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
  603. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  604. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
  605. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  606. package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
  607. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
  608. package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
  609. package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
  610. package/dist/packages/react/package.json.cjs +9 -0
  611. package/dist/packages/react/package.json.cjs.map +1 -0
  612. package/dist/packages/react/package.json.js +9 -0
  613. package/dist/packages/react/package.json.js.map +1 -0
  614. package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
  615. package/dist/provider/AthenaContext.cjs.map +1 -0
  616. package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
  617. package/dist/provider/AthenaContext.js.map +1 -0
  618. package/dist/provider/AthenaProvider.cjs +403 -0
  619. package/dist/provider/AthenaProvider.cjs.map +1 -0
  620. package/dist/provider/AthenaProvider.js +403 -0
  621. package/dist/provider/AthenaProvider.js.map +1 -0
  622. package/dist/provider/PostHogProvider.cjs +81 -0
  623. package/dist/provider/PostHogProvider.cjs.map +1 -0
  624. package/dist/provider/PostHogProvider.js +59 -0
  625. package/dist/provider/PostHogProvider.js.map +1 -0
  626. package/dist/provider/config.d.ts +8 -7
  627. package/dist/provider/statewire-lifecycle-context.cjs +10 -0
  628. package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
  629. package/dist/provider/statewire-lifecycle-context.js +10 -0
  630. package/dist/provider/statewire-lifecycle-context.js.map +1 -0
  631. package/dist/provider/statewire-window-context.cjs +10 -0
  632. package/dist/provider/statewire-window-context.cjs.map +1 -0
  633. package/dist/provider/statewire-window-context.js +10 -0
  634. package/dist/provider/statewire-window-context.js.map +1 -0
  635. package/dist/runtime/auth.cjs +309 -0
  636. package/dist/runtime/auth.cjs.map +1 -0
  637. package/dist/runtime/auth.d.ts +19 -18
  638. package/dist/runtime/auth.js +309 -0
  639. package/dist/runtime/auth.js.map +1 -0
  640. package/dist/runtime/statewire-auth-headers.cjs +18 -0
  641. package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
  642. package/dist/runtime/statewire-auth-headers.js +18 -0
  643. package/dist/runtime/statewire-auth-headers.js.map +1 -0
  644. package/dist/runtime/statewire-lifecycle.cjs +67 -0
  645. package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
  646. package/dist/runtime/statewire-lifecycle.js +67 -0
  647. package/dist/runtime/statewire-lifecycle.js.map +1 -0
  648. package/dist/runtime/statewire-run-config.cjs +68 -0
  649. package/dist/runtime/statewire-run-config.cjs.map +1 -0
  650. package/dist/runtime/statewire-run-config.js +68 -0
  651. package/dist/runtime/statewire-run-config.js.map +1 -0
  652. package/dist/runtime/statewire-session-key.cjs +11 -0
  653. package/dist/runtime/statewire-session-key.cjs.map +1 -0
  654. package/dist/runtime/statewire-session-key.js +11 -0
  655. package/dist/runtime/statewire-session-key.js.map +1 -0
  656. package/dist/runtime/useAthenaStatewireRuntime.cjs +179 -0
  657. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
  658. package/dist/runtime/useAthenaStatewireRuntime.js +180 -0
  659. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
  660. package/dist/styles.css +1 -1
  661. package/dist/theme/index.cjs +182 -0
  662. package/dist/theme/index.cjs.map +1 -0
  663. package/dist/theme/index.js +182 -0
  664. package/dist/theme/index.js.map +1 -0
  665. package/dist/threads/ThreadList.cjs +55 -0
  666. package/dist/threads/ThreadList.cjs.map +1 -0
  667. package/dist/threads/ThreadList.js +55 -0
  668. package/dist/threads/ThreadList.js.map +1 -0
  669. package/dist/threads/api.cjs +208 -0
  670. package/dist/threads/api.cjs.map +1 -0
  671. package/dist/threads/api.js +208 -0
  672. package/dist/threads/api.js.map +1 -0
  673. package/dist/threads/conversation-list-fetcher.cjs +70 -0
  674. package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
  675. package/dist/threads/conversation-list-fetcher.js +70 -0
  676. package/dist/threads/conversation-list-fetcher.js.map +1 -0
  677. package/dist/threads/mint-thread-id.cjs +7 -0
  678. package/dist/threads/mint-thread-id.cjs.map +1 -0
  679. package/dist/threads/mint-thread-id.js +7 -0
  680. package/dist/threads/mint-thread-id.js.map +1 -0
  681. package/dist/threads/statewire-thread-list.cjs +231 -0
  682. package/dist/threads/statewire-thread-list.cjs.map +1 -0
  683. package/dist/threads/statewire-thread-list.js +231 -0
  684. package/dist/threads/statewire-thread-list.js.map +1 -0
  685. package/dist/threads/thread-id-context.cjs +22 -0
  686. package/dist/threads/thread-id-context.cjs.map +1 -0
  687. package/dist/threads/thread-id-context.d.ts +9 -0
  688. package/dist/threads/thread-id-context.js +22 -0
  689. package/dist/threads/thread-id-context.js.map +1 -0
  690. package/dist/threads/title.cjs +95 -0
  691. package/dist/threads/title.cjs.map +1 -0
  692. package/dist/threads/title.js +95 -0
  693. package/dist/threads/title.js.map +1 -0
  694. package/dist/threads/use-rest-conversation-history.cjs +79 -0
  695. package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
  696. package/dist/threads/use-rest-conversation-history.js +79 -0
  697. package/dist/threads/use-rest-conversation-history.js.map +1 -0
  698. package/dist/threads/use-statewire-conversation-history.cjs +243 -0
  699. package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
  700. package/dist/threads/use-statewire-conversation-history.js +243 -0
  701. package/dist/threads/use-statewire-conversation-history.js.map +1 -0
  702. package/dist/threads/useAthenaThreadManager.cjs +24 -0
  703. package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
  704. package/dist/threads/useAthenaThreadManager.js +24 -0
  705. package/dist/threads/useAthenaThreadManager.js.map +1 -0
  706. package/dist/toolkits/index.cjs +279 -0
  707. package/dist/toolkits/index.cjs.map +1 -0
  708. package/dist/toolkits/index.js +279 -0
  709. package/dist/toolkits/index.js.map +1 -0
  710. package/dist/tools/NestedPtcMessages.cjs +46 -0
  711. package/dist/tools/NestedPtcMessages.cjs.map +1 -0
  712. package/dist/tools/NestedPtcMessages.js +46 -0
  713. package/dist/tools/NestedPtcMessages.js.map +1 -0
  714. package/dist/tools/append-document-tool-ui.cjs +145 -0
  715. package/dist/tools/append-document-tool-ui.cjs.map +1 -0
  716. package/dist/tools/append-document-tool-ui.js +145 -0
  717. package/dist/tools/append-document-tool-ui.js.map +1 -0
  718. package/dist/tools/asset-utils.cjs +16 -0
  719. package/dist/tools/asset-utils.cjs.map +1 -0
  720. package/dist/tools/asset-utils.js +16 -0
  721. package/dist/tools/asset-utils.js.map +1 -0
  722. package/dist/tools/auto-open-tools.cjs +121 -0
  723. package/dist/tools/auto-open-tools.cjs.map +1 -0
  724. package/dist/tools/auto-open-tools.js +121 -0
  725. package/dist/tools/auto-open-tools.js.map +1 -0
  726. package/dist/tools/file-tool-uis.cjs +108 -0
  727. package/dist/tools/file-tool-uis.cjs.map +1 -0
  728. package/dist/tools/file-tool-uis.js +108 -0
  729. package/dist/tools/file-tool-uis.js.map +1 -0
  730. package/dist/tools/index.cjs +56 -0
  731. package/dist/tools/index.cjs.map +1 -0
  732. package/dist/tools/index.d.ts +1 -0
  733. package/dist/tools/index.js +56 -0
  734. package/dist/tools/index.js.map +1 -0
  735. package/dist/tools/misc-tool-uis.cjs +54 -0
  736. package/dist/tools/misc-tool-uis.cjs.map +1 -0
  737. package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +17 -7
  738. package/dist/tools/misc-tool-uis.js.map +1 -0
  739. package/dist/tools/primitives.cjs +166 -0
  740. package/dist/tools/primitives.cjs.map +1 -0
  741. package/dist/tools/primitives.js +166 -0
  742. package/dist/tools/primitives.js.map +1 -0
  743. package/dist/tools/read-asset-tool-ui.cjs +284 -0
  744. package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
  745. package/dist/tools/read-asset-tool-ui.js +284 -0
  746. package/dist/tools/read-asset-tool-ui.js.map +1 -0
  747. package/dist/tools/todo-plan-store.cjs +88 -0
  748. package/dist/tools/todo-plan-store.cjs.map +1 -0
  749. package/dist/tools/todo-plan-store.js +88 -0
  750. package/dist/tools/todo-plan-store.js.map +1 -0
  751. package/dist/tools/tool-fallback.cjs +667 -0
  752. package/dist/tools/tool-fallback.cjs.map +1 -0
  753. package/dist/tools/tool-fallback.js +667 -0
  754. package/dist/tools/tool-fallback.js.map +1 -0
  755. package/dist/tools/tool-icons.cjs +61 -0
  756. package/dist/tools/tool-icons.cjs.map +1 -0
  757. package/dist/tools/tool-icons.js +61 -0
  758. package/dist/tools/tool-icons.js.map +1 -0
  759. package/dist/tools/tool-uis.cjs +3049 -0
  760. package/dist/tools/tool-uis.cjs.map +1 -0
  761. package/dist/tools/tool-uis.js +3049 -0
  762. package/dist/tools/tool-uis.js.map +1 -0
  763. package/dist/tools/voice-update-tool-ui.cjs +89 -0
  764. package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
  765. package/dist/tools/voice-update-tool-ui.d.ts +27 -0
  766. package/dist/tools/voice-update-tool-ui.js +89 -0
  767. package/dist/tools/voice-update-tool-ui.js.map +1 -0
  768. package/dist/tools/write-todos-tool-ui.cjs +270 -0
  769. package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
  770. package/dist/tools/write-todos-tool-ui.js +270 -0
  771. package/dist/tools/write-todos-tool-ui.js.map +1 -0
  772. package/dist/ui/button.cjs +57 -0
  773. package/dist/ui/button.cjs.map +1 -0
  774. package/dist/ui/button.js +57 -0
  775. package/dist/ui/button.js.map +1 -0
  776. package/dist/ui/collapsible.cjs +17 -0
  777. package/dist/ui/collapsible.cjs.map +1 -0
  778. package/dist/ui/collapsible.js +17 -0
  779. package/dist/ui/collapsible.js.map +1 -0
  780. package/dist/ui/tooltip.cjs +48 -0
  781. package/dist/ui/tooltip.cjs.map +1 -0
  782. package/dist/ui/tooltip.js +48 -0
  783. package/dist/ui/tooltip.js.map +1 -0
  784. package/dist/version.cjs +6 -0
  785. package/dist/version.cjs.map +1 -0
  786. package/dist/version.js +6 -0
  787. package/dist/version.js.map +1 -0
  788. package/package.json +18 -20
  789. package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
  790. package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
  791. package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
  792. package/dist/AthenaContext-MOslgOmE.js.map +0 -1
  793. package/dist/SuperGroupingCard-BsWbHyV_.js +0 -795
  794. package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
  795. package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
  796. package/dist/SuperGroupingCard-CRRFUgjN.cjs.map +0 -1
  797. package/dist/auth.cjs.map +0 -1
  798. package/dist/auth.js.map +0 -1
  799. package/dist/chat/ComposerEditorContext.d.ts +0 -36
  800. package/dist/chat/tiptap-composer.d.ts +0 -7
  801. package/dist/chat-ui-statewire.cjs +0 -25
  802. package/dist/chat-ui-statewire.cjs.map +0 -1
  803. package/dist/chat-ui-statewire.js +0 -25
  804. package/dist/chat-ui-statewire.js.map +0 -1
  805. package/dist/chat-ui.cjs +0 -2484
  806. package/dist/chat-ui.cjs.map +0 -1
  807. package/dist/chat-ui.js +0 -2486
  808. package/dist/chat-ui.js.map +0 -1
  809. package/dist/collab.cjs.map +0 -1
  810. package/dist/collab.js.map +0 -1
  811. package/dist/mentions/composer-keybinds.d.ts +0 -5
  812. package/dist/mentions/mention-extension.d.ts +0 -6
  813. package/dist/mentions/mention-icons.d.ts +0 -4
  814. package/dist/mentions/mention-node-view.d.ts +0 -2
  815. package/dist/mentions/mention-suggestion-list.d.ts +0 -14
  816. package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
  817. package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
  818. package/dist/mentions/mention-types.d.ts +0 -21
  819. package/dist/mentions/mention-utils.d.ts +0 -23
  820. package/dist/mentions/use-mention-suggestions.d.ts +0 -29
  821. package/dist/misc-tool-uis-B2e0Okkn.cjs +0 -43
  822. package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
  823. package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
  824. package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
  825. package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
  826. package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
  827. package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
  828. package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
  829. package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
  830. package/dist/super-grouping.cjs +0 -22
  831. package/dist/super-grouping.cjs.map +0 -1
  832. package/dist/super-grouping.js +0 -22
  833. package/dist/super-grouping.js.map +0 -1
  834. package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
  835. package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
  836. package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
  837. package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
  838. package/dist/tools.cjs +0 -41
  839. package/dist/tools.cjs.map +0 -1
  840. package/dist/tools.js +0 -41
  841. package/dist/tools.js.map +0 -1
  842. package/dist/trash-2-B5OaNAL7.cjs +0 -5096
  843. package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
  844. package/dist/trash-2-CCwSURL-.js +0 -5081
  845. package/dist/trash-2-CCwSURL-.js.map +0 -1
  846. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
  847. package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
  848. package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
  849. package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
  850. package/dist/wrench-BEf72cyP.cjs +0 -417
  851. package/dist/wrench-BEf72cyP.cjs.map +0 -1
  852. package/dist/wrench-CbrOlVYm.js +0 -418
  853. package/dist/wrench-CbrOlVYm.js.map +0 -1
  854. package/dist/x-Dfd2NzK0.cjs +0 -42
  855. package/dist/x-Dfd2NzK0.cjs.map +0 -1
  856. package/dist/x-_DntAa_a.js +0 -43
  857. package/dist/x-_DntAa_a.js.map +0 -1
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const athenaDiagnostics = require("../../../../diagnostics/athena-diagnostics.cjs");
4
+ const itemCache = require("./item-cache.cjs");
5
+ const scopeRegistry = require("./scope-registry.cjs");
6
+ const MAX_ERROR_RETRIES = 3;
7
+ function selectItems(store, scope, query, _targetCount, parentScope) {
8
+ const state = store.state;
9
+ const scopeId = typeof scope === "string" ? scope : scope.id;
10
+ const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
11
+ const items = itemCache.getFilteredItems(state.cache, scopeId, query);
12
+ let isFetching = false;
13
+ let hasMore = true;
14
+ try {
15
+ const fetchState = scopeRegistry.getFetchState(state.registry, scopeId, query, parentScopeId);
16
+ isFetching = fetchState.isFetching;
17
+ hasMore = fetchState.hasNextPage;
18
+ } catch {
19
+ hasMore = false;
20
+ }
21
+ return { items, isFetching, hasMore };
22
+ }
23
+ function triggerFetchIfNeeded(store, scope, query, _targetCount, parentScope) {
24
+ const scopeId = typeof scope === "string" ? scope : scope.id;
25
+ const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
26
+ const state = store.state;
27
+ let entry;
28
+ try {
29
+ entry = scopeRegistry.getEntry(state.registry, scopeId, parentScopeId);
30
+ } catch {
31
+ return;
32
+ }
33
+ const fetchState = scopeRegistry.getFetchState(state.registry, scopeId, query, parentScopeId);
34
+ if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {
35
+ return;
36
+ }
37
+ const meta = fetchState.meta || {};
38
+ if ((meta.fetchAttempts || 0) >= 10) return;
39
+ scopeRegistry.updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);
40
+ store.setState((prev) => ({ ...prev }));
41
+ const sourceFn = entry.sourceFn;
42
+ const sourceConfig = entry.sourceConfig;
43
+ sourceFn({
44
+ scope: scopeId,
45
+ query,
46
+ fetchState,
47
+ sourceConfig
48
+ }).then((result) => {
49
+ var _a, _b;
50
+ const currentState = store.state;
51
+ itemCache.addItems(currentState.cache, result.items, scopeId);
52
+ if (result.sources) {
53
+ for (const src of result.sources) {
54
+ try {
55
+ scopeRegistry.getEntry(currentState.registry, src.scope);
56
+ } catch {
57
+ scopeRegistry.registerSource(
58
+ currentState.registry,
59
+ src.scope,
60
+ src.sourceFn,
61
+ src.sourceConfig,
62
+ src.isFlat
63
+ );
64
+ }
65
+ }
66
+ }
67
+ if (result.bindings) {
68
+ for (const binding of result.bindings) {
69
+ scopeRegistry.bindScopes(currentState.registry, binding.browseScope, binding.searchScope);
70
+ }
71
+ }
72
+ const currentMeta = fetchState.meta || {};
73
+ const consumed = ((_a = result.pagination) == null ? void 0 : _a.consumedCount) ?? result.items.length;
74
+ const newValidated = (currentMeta.validatedCount || 0) + consumed;
75
+ scopeRegistry.updateFetchState(
76
+ currentState.registry,
77
+ scopeId,
78
+ query,
79
+ {
80
+ isFetching: false,
81
+ hasNextPage: ((_b = result.pagination) == null ? void 0 : _b.hasMore) ?? false,
82
+ error: null,
83
+ meta: {
84
+ ...currentMeta,
85
+ ...result.meta,
86
+ validatedCount: newValidated,
87
+ fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,
88
+ errorAttempts: 0
89
+ }
90
+ },
91
+ parentScopeId
92
+ );
93
+ store.setState((prev) => ({ ...prev }));
94
+ }).catch((error) => {
95
+ const currentState = store.state;
96
+ const currentMeta = fetchState.meta || {};
97
+ const errorAttempts = (currentMeta.errorAttempts || 0) + 1;
98
+ const retriable = errorAttempts < MAX_ERROR_RETRIES;
99
+ if (retriable) {
100
+ athenaDiagnostics.athenaDiagnostics.emit("mentions.fetch.error", {
101
+ level: "warn",
102
+ data: {
103
+ scopeId,
104
+ attempt: errorAttempts,
105
+ retriable,
106
+ error: error instanceof Error ? error.message : String(error)
107
+ }
108
+ });
109
+ } else {
110
+ athenaDiagnostics.athenaDiagnostics.error(
111
+ "mentions.fetch.error",
112
+ error,
113
+ { code: "mentions_fetch_failed", message: `Mention suggestions failed for ${scopeId}` },
114
+ { scopeId, attempt: errorAttempts, retriable }
115
+ );
116
+ }
117
+ scopeRegistry.updateFetchState(
118
+ currentState.registry,
119
+ scopeId,
120
+ query,
121
+ {
122
+ isFetching: false,
123
+ hasNextPage: retriable,
124
+ error: retriable ? null : error instanceof Error ? error : new Error(String(error)),
125
+ meta: { ...currentMeta, errorAttempts }
126
+ },
127
+ parentScopeId
128
+ );
129
+ store.setState((prev) => ({ ...prev }));
130
+ });
131
+ }
132
+ exports.selectItems = selectItems;
133
+ exports.triggerFetchIfNeeded = triggerFetchIfNeeded;
134
+ //# sourceMappingURL=orchestrator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/orchestrator.ts"],"sourcesContent":["/**\n * Mention Orchestrator — Async data fetching with registry + cache.\n *\n * selectItems (pure read) + triggerFetchIfNeeded (async fetch).\n */\n\nimport { athenaDiagnostics } from \"../../../../diagnostics/athena-diagnostics\";\nimport type { MenuItem, MenuScope, FetchMetadata, SourceToRegister } from \"./types\";\nimport type { MentionSuggestionsStore, MentionSuggestionsStoreState } from \"./use-mention-suggestions\";\nimport { getFilteredItems, addItems } from \"./item-cache\";\nimport {\n getEntry,\n getFetchState,\n updateFetchState,\n registerSource,\n bindScopes,\n} from \"./scope-registry\";\nimport { filterItems } from \"./utils/filter-items\";\n\n/** Consecutive fetch failures tolerated before a scope+query stops retrying. */\nconst MAX_ERROR_RETRIES = 3;\n\n/**\n * Select items for a given scope + query from the cache.\n * Pure, synchronous read — no side effects.\n */\nexport function selectItems(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): { items: MenuItem[]; isFetching: boolean; hasMore: boolean } {\n const state = store.state;\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n // Read from cache\n const items = getFilteredItems(state.cache, scopeId, query);\n\n // Read fetch state from registry\n let isFetching = false;\n let hasMore = true;\n\n try {\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n isFetching = fetchState.isFetching;\n hasMore = fetchState.hasNextPage;\n } catch {\n // Scope not registered — no more to fetch\n hasMore = false;\n }\n\n return { items, isFetching, hasMore };\n}\n\n/**\n * Trigger an async fetch if needed.\n * Called by useMenuItems when cache < target AND hasMore AND !fetching.\n */\nexport function triggerFetchIfNeeded(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): void {\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n const state = store.state;\n\n // Check if scope is registered\n let entry;\n try {\n entry = getEntry(state.registry, scopeId, parentScopeId);\n } catch {\n return; // Not registered, nothing to fetch\n }\n\n // Check fetch state\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {\n return;\n }\n\n // Safety limit\n const meta = (fetchState.meta as FetchMetadata) || {};\n if ((meta.fetchAttempts || 0) >= 10) return;\n\n // Mark as fetching\n updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);\n store.setState((prev) => ({ ...prev }));\n\n // Async fetch\n const sourceFn = entry.sourceFn;\n const sourceConfig = entry.sourceConfig;\n\n sourceFn({\n scope: scopeId,\n query,\n fetchState,\n sourceConfig,\n })\n .then((result) => {\n const currentState = store.state;\n\n // Add items to cache with scope tagging\n addItems(currentState.cache, result.items, scopeId);\n\n // Register dynamically discovered sources\n if (result.sources) {\n for (const src of result.sources) {\n try {\n getEntry(currentState.registry, src.scope);\n } catch {\n // Not registered yet — register it\n registerSource(\n currentState.registry,\n src.scope,\n src.sourceFn,\n src.sourceConfig,\n src.isFlat,\n );\n }\n }\n }\n\n // Register dynamically discovered bindings\n if (result.bindings) {\n for (const binding of result.bindings) {\n bindScopes(currentState.registry, binding.browseScope, binding.searchScope);\n }\n }\n\n // Update fetch state\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n // Advance the server-side offset by the rows the source consumed, which\n // exceeds `items.length` whenever a source drops rows after fetching.\n const consumed = result.pagination?.consumedCount ?? result.items.length;\n const newValidated = (currentMeta.validatedCount || 0) + consumed;\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: result.pagination?.hasMore ?? false,\n error: null,\n meta: {\n ...currentMeta,\n ...result.meta,\n validatedCount: newValidated,\n fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,\n errorAttempts: 0,\n },\n },\n parentScopeId,\n );\n\n // Trigger re-render\n store.setState((prev) => ({ ...prev }));\n })\n .catch((error) => {\n const currentState = store.state;\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n const errorAttempts = ((currentMeta.errorAttempts as number) || 0) + 1;\n const retriable = errorAttempts < MAX_ERROR_RETRIES;\n\n // Retriable failures are a warning on the bus; the final one is an\n // error and also lands in the scope's fetch state below.\n if (retriable) {\n athenaDiagnostics.emit(\"mentions.fetch.error\", {\n level: \"warn\",\n data: {\n scopeId,\n attempt: errorAttempts,\n retriable,\n error: error instanceof Error ? error.message : String(error),\n },\n });\n } else {\n athenaDiagnostics.error(\n \"mentions.fetch.error\",\n error,\n { code: \"mentions_fetch_failed\", message: `Mention suggestions failed for ${scopeId}` },\n { scopeId, attempt: errorAttempts, retriable },\n );\n }\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: retriable,\n error: retriable\n ? null\n : error instanceof Error\n ? error\n : new Error(String(error)),\n meta: { ...currentMeta, errorAttempts },\n },\n parentScopeId,\n );\n\n store.setState((prev) => ({ ...prev }));\n });\n}\n"],"names":["getFilteredItems","getFetchState","getEntry","updateFetchState","addItems","registerSource","bindScopes","athenaDiagnostics"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { athenaDiagnostics } from "../../../../diagnostics/athena-diagnostics.js";
2
+ import { getFilteredItems, addItems } from "./item-cache.js";
3
+ import { getFetchState, getEntry, updateFetchState, registerSource, bindScopes } from "./scope-registry.js";
4
+ const MAX_ERROR_RETRIES = 3;
5
+ function selectItems(store, scope, query, _targetCount, parentScope) {
6
+ const state = store.state;
7
+ const scopeId = typeof scope === "string" ? scope : scope.id;
8
+ const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
9
+ const items = getFilteredItems(state.cache, scopeId, query);
10
+ let isFetching = false;
11
+ let hasMore = true;
12
+ try {
13
+ const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);
14
+ isFetching = fetchState.isFetching;
15
+ hasMore = fetchState.hasNextPage;
16
+ } catch {
17
+ hasMore = false;
18
+ }
19
+ return { items, isFetching, hasMore };
20
+ }
21
+ function triggerFetchIfNeeded(store, scope, query, _targetCount, parentScope) {
22
+ const scopeId = typeof scope === "string" ? scope : scope.id;
23
+ const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
24
+ const state = store.state;
25
+ let entry;
26
+ try {
27
+ entry = getEntry(state.registry, scopeId, parentScopeId);
28
+ } catch {
29
+ return;
30
+ }
31
+ const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);
32
+ if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {
33
+ return;
34
+ }
35
+ const meta = fetchState.meta || {};
36
+ if ((meta.fetchAttempts || 0) >= 10) return;
37
+ updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);
38
+ store.setState((prev) => ({ ...prev }));
39
+ const sourceFn = entry.sourceFn;
40
+ const sourceConfig = entry.sourceConfig;
41
+ sourceFn({
42
+ scope: scopeId,
43
+ query,
44
+ fetchState,
45
+ sourceConfig
46
+ }).then((result) => {
47
+ var _a, _b;
48
+ const currentState = store.state;
49
+ addItems(currentState.cache, result.items, scopeId);
50
+ if (result.sources) {
51
+ for (const src of result.sources) {
52
+ try {
53
+ getEntry(currentState.registry, src.scope);
54
+ } catch {
55
+ registerSource(
56
+ currentState.registry,
57
+ src.scope,
58
+ src.sourceFn,
59
+ src.sourceConfig,
60
+ src.isFlat
61
+ );
62
+ }
63
+ }
64
+ }
65
+ if (result.bindings) {
66
+ for (const binding of result.bindings) {
67
+ bindScopes(currentState.registry, binding.browseScope, binding.searchScope);
68
+ }
69
+ }
70
+ const currentMeta = fetchState.meta || {};
71
+ const consumed = ((_a = result.pagination) == null ? void 0 : _a.consumedCount) ?? result.items.length;
72
+ const newValidated = (currentMeta.validatedCount || 0) + consumed;
73
+ updateFetchState(
74
+ currentState.registry,
75
+ scopeId,
76
+ query,
77
+ {
78
+ isFetching: false,
79
+ hasNextPage: ((_b = result.pagination) == null ? void 0 : _b.hasMore) ?? false,
80
+ error: null,
81
+ meta: {
82
+ ...currentMeta,
83
+ ...result.meta,
84
+ validatedCount: newValidated,
85
+ fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,
86
+ errorAttempts: 0
87
+ }
88
+ },
89
+ parentScopeId
90
+ );
91
+ store.setState((prev) => ({ ...prev }));
92
+ }).catch((error) => {
93
+ const currentState = store.state;
94
+ const currentMeta = fetchState.meta || {};
95
+ const errorAttempts = (currentMeta.errorAttempts || 0) + 1;
96
+ const retriable = errorAttempts < MAX_ERROR_RETRIES;
97
+ if (retriable) {
98
+ athenaDiagnostics.emit("mentions.fetch.error", {
99
+ level: "warn",
100
+ data: {
101
+ scopeId,
102
+ attempt: errorAttempts,
103
+ retriable,
104
+ error: error instanceof Error ? error.message : String(error)
105
+ }
106
+ });
107
+ } else {
108
+ athenaDiagnostics.error(
109
+ "mentions.fetch.error",
110
+ error,
111
+ { code: "mentions_fetch_failed", message: `Mention suggestions failed for ${scopeId}` },
112
+ { scopeId, attempt: errorAttempts, retriable }
113
+ );
114
+ }
115
+ updateFetchState(
116
+ currentState.registry,
117
+ scopeId,
118
+ query,
119
+ {
120
+ isFetching: false,
121
+ hasNextPage: retriable,
122
+ error: retriable ? null : error instanceof Error ? error : new Error(String(error)),
123
+ meta: { ...currentMeta, errorAttempts }
124
+ },
125
+ parentScopeId
126
+ );
127
+ store.setState((prev) => ({ ...prev }));
128
+ });
129
+ }
130
+ export {
131
+ selectItems,
132
+ triggerFetchIfNeeded
133
+ };
134
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/orchestrator.ts"],"sourcesContent":["/**\n * Mention Orchestrator — Async data fetching with registry + cache.\n *\n * selectItems (pure read) + triggerFetchIfNeeded (async fetch).\n */\n\nimport { athenaDiagnostics } from \"../../../../diagnostics/athena-diagnostics\";\nimport type { MenuItem, MenuScope, FetchMetadata, SourceToRegister } from \"./types\";\nimport type { MentionSuggestionsStore, MentionSuggestionsStoreState } from \"./use-mention-suggestions\";\nimport { getFilteredItems, addItems } from \"./item-cache\";\nimport {\n getEntry,\n getFetchState,\n updateFetchState,\n registerSource,\n bindScopes,\n} from \"./scope-registry\";\nimport { filterItems } from \"./utils/filter-items\";\n\n/** Consecutive fetch failures tolerated before a scope+query stops retrying. */\nconst MAX_ERROR_RETRIES = 3;\n\n/**\n * Select items for a given scope + query from the cache.\n * Pure, synchronous read — no side effects.\n */\nexport function selectItems(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): { items: MenuItem[]; isFetching: boolean; hasMore: boolean } {\n const state = store.state;\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n // Read from cache\n const items = getFilteredItems(state.cache, scopeId, query);\n\n // Read fetch state from registry\n let isFetching = false;\n let hasMore = true;\n\n try {\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n isFetching = fetchState.isFetching;\n hasMore = fetchState.hasNextPage;\n } catch {\n // Scope not registered — no more to fetch\n hasMore = false;\n }\n\n return { items, isFetching, hasMore };\n}\n\n/**\n * Trigger an async fetch if needed.\n * Called by useMenuItems when cache < target AND hasMore AND !fetching.\n */\nexport function triggerFetchIfNeeded(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): void {\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n const state = store.state;\n\n // Check if scope is registered\n let entry;\n try {\n entry = getEntry(state.registry, scopeId, parentScopeId);\n } catch {\n return; // Not registered, nothing to fetch\n }\n\n // Check fetch state\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {\n return;\n }\n\n // Safety limit\n const meta = (fetchState.meta as FetchMetadata) || {};\n if ((meta.fetchAttempts || 0) >= 10) return;\n\n // Mark as fetching\n updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);\n store.setState((prev) => ({ ...prev }));\n\n // Async fetch\n const sourceFn = entry.sourceFn;\n const sourceConfig = entry.sourceConfig;\n\n sourceFn({\n scope: scopeId,\n query,\n fetchState,\n sourceConfig,\n })\n .then((result) => {\n const currentState = store.state;\n\n // Add items to cache with scope tagging\n addItems(currentState.cache, result.items, scopeId);\n\n // Register dynamically discovered sources\n if (result.sources) {\n for (const src of result.sources) {\n try {\n getEntry(currentState.registry, src.scope);\n } catch {\n // Not registered yet — register it\n registerSource(\n currentState.registry,\n src.scope,\n src.sourceFn,\n src.sourceConfig,\n src.isFlat,\n );\n }\n }\n }\n\n // Register dynamically discovered bindings\n if (result.bindings) {\n for (const binding of result.bindings) {\n bindScopes(currentState.registry, binding.browseScope, binding.searchScope);\n }\n }\n\n // Update fetch state\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n // Advance the server-side offset by the rows the source consumed, which\n // exceeds `items.length` whenever a source drops rows after fetching.\n const consumed = result.pagination?.consumedCount ?? result.items.length;\n const newValidated = (currentMeta.validatedCount || 0) + consumed;\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: result.pagination?.hasMore ?? false,\n error: null,\n meta: {\n ...currentMeta,\n ...result.meta,\n validatedCount: newValidated,\n fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,\n errorAttempts: 0,\n },\n },\n parentScopeId,\n );\n\n // Trigger re-render\n store.setState((prev) => ({ ...prev }));\n })\n .catch((error) => {\n const currentState = store.state;\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n const errorAttempts = ((currentMeta.errorAttempts as number) || 0) + 1;\n const retriable = errorAttempts < MAX_ERROR_RETRIES;\n\n // Retriable failures are a warning on the bus; the final one is an\n // error and also lands in the scope's fetch state below.\n if (retriable) {\n athenaDiagnostics.emit(\"mentions.fetch.error\", {\n level: \"warn\",\n data: {\n scopeId,\n attempt: errorAttempts,\n retriable,\n error: error instanceof Error ? error.message : String(error),\n },\n });\n } else {\n athenaDiagnostics.error(\n \"mentions.fetch.error\",\n error,\n { code: \"mentions_fetch_failed\", message: `Mention suggestions failed for ${scopeId}` },\n { scopeId, attempt: errorAttempts, retriable },\n );\n }\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: retriable,\n error: retriable\n ? null\n : error instanceof Error\n ? error\n : new Error(String(error)),\n meta: { ...currentMeta, errorAttempts },\n },\n parentScopeId,\n );\n\n store.setState((prev) => ({ ...prev }));\n });\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function createScopeRegistry() {
4
+ return {
5
+ entries: {},
6
+ scopeBindings: /* @__PURE__ */ new Map()
7
+ };
8
+ }
9
+ function registerSource(registry, scope, sourceFn, sourceConfig = {}, isFlat2 = false) {
10
+ registry.entries[scope] = {
11
+ scope,
12
+ sourceFn,
13
+ sourceConfig,
14
+ fetchStates: {},
15
+ // Empty until first query
16
+ isFlat: isFlat2
17
+ };
18
+ }
19
+ function getEntry(registry, scope, parentScope) {
20
+ if (registry.entries[scope]) {
21
+ return registry.entries[scope];
22
+ }
23
+ if (parentScope) {
24
+ const parentEntry = getEntry(registry, parentScope);
25
+ const childEntry = {
26
+ scope,
27
+ sourceFn: parentEntry.sourceFn,
28
+ sourceConfig: parentEntry.sourceConfig,
29
+ // Same config as parent
30
+ fetchStates: {},
31
+ // Fresh fetch states for this scope
32
+ isFlat: parentEntry.isFlat
33
+ // Inherit flat mode
34
+ };
35
+ return childEntry;
36
+ }
37
+ throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);
38
+ }
39
+ function getFetchState(registry, scope, query, parentScope) {
40
+ const entry = getEntry(registry, scope, parentScope);
41
+ const queryKey = query || "*";
42
+ return entry.fetchStates[queryKey] ?? {
43
+ isFetching: false,
44
+ hasNextPage: true,
45
+ // Assume yes until proven otherwise
46
+ fetchNext: null,
47
+ error: null,
48
+ // No error initially
49
+ meta: null
50
+ // Source will initialize this
51
+ };
52
+ }
53
+ function updateFetchState(registry, scope, query, updates, parentScope) {
54
+ const virtualEntry = getEntry(registry, scope, parentScope);
55
+ if (!registry.entries[scope]) {
56
+ registry.entries[scope] = {
57
+ scope,
58
+ sourceFn: virtualEntry.sourceFn,
59
+ sourceConfig: virtualEntry.sourceConfig,
60
+ fetchStates: {},
61
+ isFlat: virtualEntry.isFlat
62
+ // Inherit flat mode from parent
63
+ };
64
+ }
65
+ const entry = registry.entries[scope];
66
+ const queryKey = query || "*";
67
+ if (!entry.fetchStates[queryKey]) {
68
+ entry.fetchStates[queryKey] = {
69
+ isFetching: false,
70
+ hasNextPage: true,
71
+ fetchNext: null,
72
+ error: null,
73
+ meta: null
74
+ };
75
+ }
76
+ Object.assign(entry.fetchStates[queryKey], updates);
77
+ }
78
+ function bindScopes(registry, browseScope, searchScope) {
79
+ registry.scopeBindings.set(browseScope, searchScope);
80
+ }
81
+ function getSearchScope(registry, browseScope) {
82
+ return registry.scopeBindings.get(browseScope) || null;
83
+ }
84
+ exports.bindScopes = bindScopes;
85
+ exports.createScopeRegistry = createScopeRegistry;
86
+ exports.getEntry = getEntry;
87
+ exports.getFetchState = getFetchState;
88
+ exports.getSearchScope = getSearchScope;
89
+ exports.registerSource = registerSource;
90
+ exports.updateFetchState = updateFetchState;
91
+ //# sourceMappingURL=scope-registry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-registry.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/scope-registry.ts"],"sourcesContent":["import { clearByScope, type ItemCache } from './item-cache';\nimport type { FetchState, MenuScope, SourceFn } from './types';\n\n/**\n * Scope Registry\n *\n * Plain object + pure functions for managing source functions.\n * Each scope has a source function, config, and fetch state per query.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Scope registry entry - per menu scope\n * Stores source function, config, and fetch state per query\n */\nexport interface ScopeRegistryEntry {\n scope: MenuScope;\n sourceFn: SourceFn;\n sourceConfig: any; // Source-specific configuration (can include getters!)\n\n // Fetch state per query text\n // Key: \"*\" = browsing (no query), \"searchText\" = specific search query\n fetchStates: Record<string, FetchState>;\n\n // Flat list mode: if true, items don't get navigatesToScope\n // Use for scopes that should show all items at once (e.g., Folders)\n isFlat?: boolean;\n}\n\n/**\n * Scope registry - plain object\n * Maps MenuScope → ScopeRegistryEntry\n */\nexport interface ScopeRegistry {\n entries: Record<MenuScope, ScopeRegistryEntry>;\n // Scope bindings: browse scope → search scope\n // When a scope has a query, UI switches to the search scope\n // Example: 'root' + query → 'global_search'\n scopeBindings: Map<MenuScope, MenuScope>;\n}\n\n// ============================================================================\n// Utils\n// ============================================================================\n\n/**\n * Create empty registry\n */\nexport function createScopeRegistry(): ScopeRegistry {\n return {\n entries: {},\n scopeBindings: new Map(),\n };\n}\n\n/**\n * Register a source function for a specific scope\n * Creates full entry immediately with empty fetchStates\n *\n * @param registry - Registry to mutate\n * @param scope - Scope identifier\n * @param sourceFn - Pure function to fetch/transform items\n * @param sourceConfig - Any configuration the source function needs (can include getters!)\n * @param isFlat - If true, items won't get navigatesToScope (flat list, no hierarchy)\n */\nexport function registerSource(\n registry: ScopeRegistry,\n scope: MenuScope,\n sourceFn: SourceFn,\n sourceConfig: any = {},\n isFlat: boolean = false\n): void {\n registry.entries[scope] = {\n scope,\n sourceFn,\n sourceConfig,\n fetchStates: {}, // Empty until first query\n isFlat,\n };\n}\n\n/**\n * Unregister a source (cleanup)\n */\nexport function unregisterSource(registry: ScopeRegistry, scope: MenuScope): void {\n delete registry.entries[scope];\n}\n\n/**\n * Get or create entry for scope\n * Auto-inherits source function from parent if not explicitly registered\n *\n * @param registry - Registry to read/mutate\n * @param scope - Scope to get entry for\n * @param parentScope - Optional parent scope (for inheritance)\n * @returns Entry (may be newly created)\n */\nexport function getEntry(\n registry: ScopeRegistry,\n scope: MenuScope,\n parentScope?: MenuScope\n): ScopeRegistryEntry {\n // Check if already exists\n if (registry.entries[scope]) {\n return registry.entries[scope];\n }\n\n // Not registered - try to inherit from parent\n if (parentScope) {\n const parentEntry = getEntry(registry, parentScope);\n\n // Create child entry with inherited sourceFn + sourceConfig + isFlat\n const childEntry: ScopeRegistryEntry = {\n scope,\n sourceFn: parentEntry.sourceFn,\n sourceConfig: parentEntry.sourceConfig, // Same config as parent\n fetchStates: {}, // Fresh fetch states for this scope\n isFlat: parentEntry.isFlat, // Inherit flat mode\n };\n\n // DON'T store it - return virtual entry (store is frozen during reads!)\n return childEntry;\n }\n\n throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);\n}\n\n/**\n * Get fetch state for a specific scope + query combination\n * Returns a default FetchState if not found\n */\nexport function getFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n parentScope?: MenuScope\n): FetchState {\n const entry = getEntry(registry, scope, parentScope);\n const queryKey = query || '*'; // '*' = browsing (no query)\n\n // Return existing fetch state, or a default one\n return (\n entry.fetchStates[queryKey] ?? {\n isFetching: false,\n hasNextPage: true, // Assume yes until proven otherwise\n fetchNext: null,\n error: null, // No error initially\n meta: null, // Source will initialize this\n }\n );\n}\n\n/**\n * Update fetch state (mutates registry - use inside updateWithImmer!)\n * Ensures the entry exists in the registry before updating\n */\nexport function updateFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n updates: Partial<FetchState>,\n parentScope?: MenuScope\n): void {\n // Get entry (may be virtual if inherited)\n const virtualEntry = getEntry(registry, scope, parentScope);\n\n // Ensure the entry is actually stored in the registry\n if (!registry.entries[scope]) {\n registry.entries[scope] = {\n scope,\n sourceFn: virtualEntry.sourceFn,\n sourceConfig: virtualEntry.sourceConfig,\n fetchStates: {},\n isFlat: virtualEntry.isFlat, // Inherit flat mode from parent\n };\n }\n\n const entry = registry.entries[scope];\n const queryKey = query || '*';\n\n // Ensure fetch state entry exists\n if (!entry.fetchStates[queryKey]) {\n entry.fetchStates[queryKey] = {\n isFetching: false,\n hasNextPage: true,\n fetchNext: null,\n error: null,\n meta: null,\n };\n }\n\n // Apply updates\n Object.assign(entry.fetchStates[queryKey], updates);\n}\n\n/**\n * Invalidate a scope - removes scope from items and resets fetch states\n * Use when dynamic data changes (e.g., workspace members updated, tabs closed)\n *\n * Items lose this scope but stay in cache if they have other scopes.\n * Only removes items completely if they have no scopes left.\n *\n * @param registry - Registry to mutate\n * @param cache - Cache to mutate (imported type from item-cache)\n * @param scope - Scope to invalidate\n */\nexport function invalidateScope(registry: ScopeRegistry, cache: ItemCache, scope: MenuScope): void {\n if (cache.items) {\n clearByScope(cache, scope);\n }\n\n // Reset fetch states for this scope (force refetch)\n if (registry.entries[scope]) {\n registry.entries[scope].fetchStates = {}; // Clear all fetch state\n }\n}\n\n/**\n * Bind two scopes: browse scope → search scope\n * When user types a query in the browse scope, UI switches to search scope\n *\n * Example:\n * bindScopes(registry, 'root', 'global_search')\n * → Typing in root scope switches to global_search\n *\n * @param registry - Registry to mutate\n * @param browseScope - The scope shown when browsing (no query)\n * @param searchScope - The scope shown when searching (has query)\n */\nexport function bindScopes(\n registry: ScopeRegistry,\n browseScope: MenuScope,\n searchScope: MenuScope\n): void {\n registry.scopeBindings.set(browseScope, searchScope);\n}\n\n/**\n * Get the search scope for a browse scope (if bound)\n * Returns null if no binding exists\n *\n * @param registry - Registry to read\n * @param browseScope - The scope to check\n * @returns Search scope or null\n */\nexport function getSearchScope(registry: ScopeRegistry, browseScope: MenuScope): MenuScope | null {\n return registry.scopeBindings.get(browseScope) || null;\n}\n\n/**\n * Check if a scope is configured as flat (no hierarchy)\n * Returns false if scope not found (safe default = hierarchical)\n */\nexport function isFlat(registry: ScopeRegistry, scope: MenuScope): boolean {\n const entry = registry.entries[scope];\n return entry?.isFlat || false;\n}\n"],"names":["isFlat"],"mappings":";;AAmDO,SAAS,sBAAqC;AACnD,SAAO;AAAA,IACL,SAAS,CAAA;AAAA,IACT,mCAAmB,IAAA;AAAA,EAAI;AAE3B;AAYO,SAAS,eACd,UACA,OACA,UACA,eAAoB,CAAA,GACpBA,UAAkB,OACZ;AACN,WAAS,QAAQ,KAAK,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAA;AAAA;AAAA,IACb,QAAAA;AAAAA,EAAA;AAEJ;AAkBO,SAAS,SACd,UACA,OACA,aACoB;AAEpB,MAAI,SAAS,QAAQ,KAAK,GAAG;AAC3B,WAAO,SAAS,QAAQ,KAAK;AAAA,EAC/B;AAGA,MAAI,aAAa;AACf,UAAM,cAAc,SAAS,UAAU,WAAW;AAGlD,UAAM,aAAiC;AAAA,MACrC;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,cAAc,YAAY;AAAA;AAAA,MAC1B,aAAa,CAAA;AAAA;AAAA,MACb,QAAQ,YAAY;AAAA;AAAA,IAAA;AAItB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,mCAAmC,KAAK,kCAAkC;AAC5F;AAMO,SAAS,cACd,UACA,OACA,OACA,aACY;AACZ,QAAM,QAAQ,SAAS,UAAU,OAAO,WAAW;AACnD,QAAM,WAAW,SAAS;AAG1B,SACE,MAAM,YAAY,QAAQ,KAAK;AAAA,IAC7B,YAAY;AAAA,IACZ,aAAa;AAAA;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA;AAAA,IACP,MAAM;AAAA;AAAA,EAAA;AAGZ;AAMO,SAAS,iBACd,UACA,OACA,OACA,SACA,aACM;AAEN,QAAM,eAAe,SAAS,UAAU,OAAO,WAAW;AAG1D,MAAI,CAAC,SAAS,QAAQ,KAAK,GAAG;AAC5B,aAAS,QAAQ,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,UAAU,aAAa;AAAA,MACvB,cAAc,aAAa;AAAA,MAC3B,aAAa,CAAA;AAAA,MACb,QAAQ,aAAa;AAAA;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,QAAQ,SAAS,QAAQ,KAAK;AACpC,QAAM,WAAW,SAAS;AAG1B,MAAI,CAAC,MAAM,YAAY,QAAQ,GAAG;AAChC,UAAM,YAAY,QAAQ,IAAI;AAAA,MAC5B,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,EAEV;AAGA,SAAO,OAAO,MAAM,YAAY,QAAQ,GAAG,OAAO;AACpD;AAoCO,SAAS,WACd,UACA,aACA,aACM;AACN,WAAS,cAAc,IAAI,aAAa,WAAW;AACrD;AAUO,SAAS,eAAe,UAAyB,aAA0C;AAChG,SAAO,SAAS,cAAc,IAAI,WAAW,KAAK;AACpD;;;;;;;;"}
@@ -0,0 +1,91 @@
1
+ function createScopeRegistry() {
2
+ return {
3
+ entries: {},
4
+ scopeBindings: /* @__PURE__ */ new Map()
5
+ };
6
+ }
7
+ function registerSource(registry, scope, sourceFn, sourceConfig = {}, isFlat2 = false) {
8
+ registry.entries[scope] = {
9
+ scope,
10
+ sourceFn,
11
+ sourceConfig,
12
+ fetchStates: {},
13
+ // Empty until first query
14
+ isFlat: isFlat2
15
+ };
16
+ }
17
+ function getEntry(registry, scope, parentScope) {
18
+ if (registry.entries[scope]) {
19
+ return registry.entries[scope];
20
+ }
21
+ if (parentScope) {
22
+ const parentEntry = getEntry(registry, parentScope);
23
+ const childEntry = {
24
+ scope,
25
+ sourceFn: parentEntry.sourceFn,
26
+ sourceConfig: parentEntry.sourceConfig,
27
+ // Same config as parent
28
+ fetchStates: {},
29
+ // Fresh fetch states for this scope
30
+ isFlat: parentEntry.isFlat
31
+ // Inherit flat mode
32
+ };
33
+ return childEntry;
34
+ }
35
+ throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);
36
+ }
37
+ function getFetchState(registry, scope, query, parentScope) {
38
+ const entry = getEntry(registry, scope, parentScope);
39
+ const queryKey = query || "*";
40
+ return entry.fetchStates[queryKey] ?? {
41
+ isFetching: false,
42
+ hasNextPage: true,
43
+ // Assume yes until proven otherwise
44
+ fetchNext: null,
45
+ error: null,
46
+ // No error initially
47
+ meta: null
48
+ // Source will initialize this
49
+ };
50
+ }
51
+ function updateFetchState(registry, scope, query, updates, parentScope) {
52
+ const virtualEntry = getEntry(registry, scope, parentScope);
53
+ if (!registry.entries[scope]) {
54
+ registry.entries[scope] = {
55
+ scope,
56
+ sourceFn: virtualEntry.sourceFn,
57
+ sourceConfig: virtualEntry.sourceConfig,
58
+ fetchStates: {},
59
+ isFlat: virtualEntry.isFlat
60
+ // Inherit flat mode from parent
61
+ };
62
+ }
63
+ const entry = registry.entries[scope];
64
+ const queryKey = query || "*";
65
+ if (!entry.fetchStates[queryKey]) {
66
+ entry.fetchStates[queryKey] = {
67
+ isFetching: false,
68
+ hasNextPage: true,
69
+ fetchNext: null,
70
+ error: null,
71
+ meta: null
72
+ };
73
+ }
74
+ Object.assign(entry.fetchStates[queryKey], updates);
75
+ }
76
+ function bindScopes(registry, browseScope, searchScope) {
77
+ registry.scopeBindings.set(browseScope, searchScope);
78
+ }
79
+ function getSearchScope(registry, browseScope) {
80
+ return registry.scopeBindings.get(browseScope) || null;
81
+ }
82
+ export {
83
+ bindScopes,
84
+ createScopeRegistry,
85
+ getEntry,
86
+ getFetchState,
87
+ getSearchScope,
88
+ registerSource,
89
+ updateFetchState
90
+ };
91
+ //# sourceMappingURL=scope-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-registry.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/scope-registry.ts"],"sourcesContent":["import { clearByScope, type ItemCache } from './item-cache';\nimport type { FetchState, MenuScope, SourceFn } from './types';\n\n/**\n * Scope Registry\n *\n * Plain object + pure functions for managing source functions.\n * Each scope has a source function, config, and fetch state per query.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Scope registry entry - per menu scope\n * Stores source function, config, and fetch state per query\n */\nexport interface ScopeRegistryEntry {\n scope: MenuScope;\n sourceFn: SourceFn;\n sourceConfig: any; // Source-specific configuration (can include getters!)\n\n // Fetch state per query text\n // Key: \"*\" = browsing (no query), \"searchText\" = specific search query\n fetchStates: Record<string, FetchState>;\n\n // Flat list mode: if true, items don't get navigatesToScope\n // Use for scopes that should show all items at once (e.g., Folders)\n isFlat?: boolean;\n}\n\n/**\n * Scope registry - plain object\n * Maps MenuScope → ScopeRegistryEntry\n */\nexport interface ScopeRegistry {\n entries: Record<MenuScope, ScopeRegistryEntry>;\n // Scope bindings: browse scope → search scope\n // When a scope has a query, UI switches to the search scope\n // Example: 'root' + query → 'global_search'\n scopeBindings: Map<MenuScope, MenuScope>;\n}\n\n// ============================================================================\n// Utils\n// ============================================================================\n\n/**\n * Create empty registry\n */\nexport function createScopeRegistry(): ScopeRegistry {\n return {\n entries: {},\n scopeBindings: new Map(),\n };\n}\n\n/**\n * Register a source function for a specific scope\n * Creates full entry immediately with empty fetchStates\n *\n * @param registry - Registry to mutate\n * @param scope - Scope identifier\n * @param sourceFn - Pure function to fetch/transform items\n * @param sourceConfig - Any configuration the source function needs (can include getters!)\n * @param isFlat - If true, items won't get navigatesToScope (flat list, no hierarchy)\n */\nexport function registerSource(\n registry: ScopeRegistry,\n scope: MenuScope,\n sourceFn: SourceFn,\n sourceConfig: any = {},\n isFlat: boolean = false\n): void {\n registry.entries[scope] = {\n scope,\n sourceFn,\n sourceConfig,\n fetchStates: {}, // Empty until first query\n isFlat,\n };\n}\n\n/**\n * Unregister a source (cleanup)\n */\nexport function unregisterSource(registry: ScopeRegistry, scope: MenuScope): void {\n delete registry.entries[scope];\n}\n\n/**\n * Get or create entry for scope\n * Auto-inherits source function from parent if not explicitly registered\n *\n * @param registry - Registry to read/mutate\n * @param scope - Scope to get entry for\n * @param parentScope - Optional parent scope (for inheritance)\n * @returns Entry (may be newly created)\n */\nexport function getEntry(\n registry: ScopeRegistry,\n scope: MenuScope,\n parentScope?: MenuScope\n): ScopeRegistryEntry {\n // Check if already exists\n if (registry.entries[scope]) {\n return registry.entries[scope];\n }\n\n // Not registered - try to inherit from parent\n if (parentScope) {\n const parentEntry = getEntry(registry, parentScope);\n\n // Create child entry with inherited sourceFn + sourceConfig + isFlat\n const childEntry: ScopeRegistryEntry = {\n scope,\n sourceFn: parentEntry.sourceFn,\n sourceConfig: parentEntry.sourceConfig, // Same config as parent\n fetchStates: {}, // Fresh fetch states for this scope\n isFlat: parentEntry.isFlat, // Inherit flat mode\n };\n\n // DON'T store it - return virtual entry (store is frozen during reads!)\n return childEntry;\n }\n\n throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);\n}\n\n/**\n * Get fetch state for a specific scope + query combination\n * Returns a default FetchState if not found\n */\nexport function getFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n parentScope?: MenuScope\n): FetchState {\n const entry = getEntry(registry, scope, parentScope);\n const queryKey = query || '*'; // '*' = browsing (no query)\n\n // Return existing fetch state, or a default one\n return (\n entry.fetchStates[queryKey] ?? {\n isFetching: false,\n hasNextPage: true, // Assume yes until proven otherwise\n fetchNext: null,\n error: null, // No error initially\n meta: null, // Source will initialize this\n }\n );\n}\n\n/**\n * Update fetch state (mutates registry - use inside updateWithImmer!)\n * Ensures the entry exists in the registry before updating\n */\nexport function updateFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n updates: Partial<FetchState>,\n parentScope?: MenuScope\n): void {\n // Get entry (may be virtual if inherited)\n const virtualEntry = getEntry(registry, scope, parentScope);\n\n // Ensure the entry is actually stored in the registry\n if (!registry.entries[scope]) {\n registry.entries[scope] = {\n scope,\n sourceFn: virtualEntry.sourceFn,\n sourceConfig: virtualEntry.sourceConfig,\n fetchStates: {},\n isFlat: virtualEntry.isFlat, // Inherit flat mode from parent\n };\n }\n\n const entry = registry.entries[scope];\n const queryKey = query || '*';\n\n // Ensure fetch state entry exists\n if (!entry.fetchStates[queryKey]) {\n entry.fetchStates[queryKey] = {\n isFetching: false,\n hasNextPage: true,\n fetchNext: null,\n error: null,\n meta: null,\n };\n }\n\n // Apply updates\n Object.assign(entry.fetchStates[queryKey], updates);\n}\n\n/**\n * Invalidate a scope - removes scope from items and resets fetch states\n * Use when dynamic data changes (e.g., workspace members updated, tabs closed)\n *\n * Items lose this scope but stay in cache if they have other scopes.\n * Only removes items completely if they have no scopes left.\n *\n * @param registry - Registry to mutate\n * @param cache - Cache to mutate (imported type from item-cache)\n * @param scope - Scope to invalidate\n */\nexport function invalidateScope(registry: ScopeRegistry, cache: ItemCache, scope: MenuScope): void {\n if (cache.items) {\n clearByScope(cache, scope);\n }\n\n // Reset fetch states for this scope (force refetch)\n if (registry.entries[scope]) {\n registry.entries[scope].fetchStates = {}; // Clear all fetch state\n }\n}\n\n/**\n * Bind two scopes: browse scope → search scope\n * When user types a query in the browse scope, UI switches to search scope\n *\n * Example:\n * bindScopes(registry, 'root', 'global_search')\n * → Typing in root scope switches to global_search\n *\n * @param registry - Registry to mutate\n * @param browseScope - The scope shown when browsing (no query)\n * @param searchScope - The scope shown when searching (has query)\n */\nexport function bindScopes(\n registry: ScopeRegistry,\n browseScope: MenuScope,\n searchScope: MenuScope\n): void {\n registry.scopeBindings.set(browseScope, searchScope);\n}\n\n/**\n * Get the search scope for a browse scope (if bound)\n * Returns null if no binding exists\n *\n * @param registry - Registry to read\n * @param browseScope - The scope to check\n * @returns Search scope or null\n */\nexport function getSearchScope(registry: ScopeRegistry, browseScope: MenuScope): MenuScope | null {\n return registry.scopeBindings.get(browseScope) || null;\n}\n\n/**\n * Check if a scope is configured as flat (no hierarchy)\n * Returns false if scope not found (safe default = hierarchical)\n */\nexport function isFlat(registry: ScopeRegistry, scope: MenuScope): boolean {\n const entry = registry.entries[scope];\n return entry?.isFlat || false;\n}\n"],"names":["isFlat"],"mappings":"AAmDO,SAAS,sBAAqC;AACnD,SAAO;AAAA,IACL,SAAS,CAAA;AAAA,IACT,mCAAmB,IAAA;AAAA,EAAI;AAE3B;AAYO,SAAS,eACd,UACA,OACA,UACA,eAAoB,CAAA,GACpBA,UAAkB,OACZ;AACN,WAAS,QAAQ,KAAK,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAA;AAAA;AAAA,IACb,QAAAA;AAAAA,EAAA;AAEJ;AAkBO,SAAS,SACd,UACA,OACA,aACoB;AAEpB,MAAI,SAAS,QAAQ,KAAK,GAAG;AAC3B,WAAO,SAAS,QAAQ,KAAK;AAAA,EAC/B;AAGA,MAAI,aAAa;AACf,UAAM,cAAc,SAAS,UAAU,WAAW;AAGlD,UAAM,aAAiC;AAAA,MACrC;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,cAAc,YAAY;AAAA;AAAA,MAC1B,aAAa,CAAA;AAAA;AAAA,MACb,QAAQ,YAAY;AAAA;AAAA,IAAA;AAItB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,mCAAmC,KAAK,kCAAkC;AAC5F;AAMO,SAAS,cACd,UACA,OACA,OACA,aACY;AACZ,QAAM,QAAQ,SAAS,UAAU,OAAO,WAAW;AACnD,QAAM,WAAW,SAAS;AAG1B,SACE,MAAM,YAAY,QAAQ,KAAK;AAAA,IAC7B,YAAY;AAAA,IACZ,aAAa;AAAA;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA;AAAA,IACP,MAAM;AAAA;AAAA,EAAA;AAGZ;AAMO,SAAS,iBACd,UACA,OACA,OACA,SACA,aACM;AAEN,QAAM,eAAe,SAAS,UAAU,OAAO,WAAW;AAG1D,MAAI,CAAC,SAAS,QAAQ,KAAK,GAAG;AAC5B,aAAS,QAAQ,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,UAAU,aAAa;AAAA,MACvB,cAAc,aAAa;AAAA,MAC3B,aAAa,CAAA;AAAA,MACb,QAAQ,aAAa;AAAA;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,QAAQ,SAAS,QAAQ,KAAK;AACpC,QAAM,WAAW,SAAS;AAG1B,MAAI,CAAC,MAAM,YAAY,QAAQ,GAAG;AAChC,UAAM,YAAY,QAAQ,IAAI;AAAA,MAC5B,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,EAEV;AAGA,SAAO,OAAO,MAAM,YAAY,QAAQ,GAAG,OAAO;AACpD;AAoCO,SAAS,WACd,UACA,aACA,aACM;AACN,WAAS,cAAc,IAAI,aAAa,WAAW;AACrD;AAUO,SAAS,eAAe,UAAyB,aAA0C;AAChG,SAAO,SAAS,cAAc,IAAI,WAAW,KAAK;AACpD;"}