@athenaintel/react 0.57.1 → 0.59.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 (811) hide show
  1. package/README.md +778 -9
  2. package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
  3. package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
  4. package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
  5. package/dist/agent-runtime/src/addressed-agents.js +16 -0
  6. package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
  7. package/dist/agent-runtime/src/answer-label.cjs +4 -3
  8. package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
  9. package/dist/agent-runtime/src/answer-label.d.ts +13 -6
  10. package/dist/agent-runtime/src/answer-label.js +4 -3
  11. package/dist/agent-runtime/src/answer-label.js.map +1 -1
  12. package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
  13. package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
  14. package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
  15. package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
  16. package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
  17. package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
  18. package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
  19. package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
  20. package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
  21. package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
  22. package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
  23. package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
  24. package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
  25. package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
  26. package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
  27. package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
  28. package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
  29. package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
  30. package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
  31. package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
  32. package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
  33. package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
  34. package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
  35. package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
  36. package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
  37. package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
  38. package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
  39. package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
  40. package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
  41. package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
  42. package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
  43. package/dist/agent-runtime/src/chat-outbox.js +492 -547
  44. package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
  45. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
  46. package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
  47. package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
  48. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
  49. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
  50. package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
  51. package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
  52. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
  53. package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
  54. package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
  55. package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
  56. package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
  57. package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
  58. package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
  59. package/dist/agent-runtime/src/edit-command.d.ts +1 -1
  60. package/dist/agent-runtime/src/edit-command.js.map +1 -1
  61. package/dist/agent-runtime/src/errors.cjs +1 -0
  62. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  63. package/dist/agent-runtime/src/errors.js +1 -0
  64. package/dist/agent-runtime/src/errors.js.map +1 -1
  65. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
  66. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  67. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
  68. package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
  69. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  70. package/dist/agent-runtime/src/index.d.ts +14 -8
  71. package/dist/agent-runtime/src/lane-follow.cjs +289 -0
  72. package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
  73. package/dist/agent-runtime/src/lane-follow.js +289 -0
  74. package/dist/agent-runtime/src/lane-follow.js.map +1 -0
  75. package/dist/agent-runtime/src/lane-images.cjs +387 -0
  76. package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
  77. package/dist/agent-runtime/src/lane-images.js +387 -0
  78. package/dist/agent-runtime/src/lane-images.js.map +1 -0
  79. package/dist/agent-runtime/src/message-window.js +1 -1
  80. package/dist/agent-runtime/src/messages.cjs +19 -1
  81. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  82. package/dist/agent-runtime/src/messages.d.ts +8 -0
  83. package/dist/agent-runtime/src/messages.js +21 -3
  84. package/dist/agent-runtime/src/messages.js.map +1 -1
  85. package/dist/agent-runtime/src/named-agents.cjs +301 -0
  86. package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
  87. package/dist/agent-runtime/src/named-agents.d.ts +246 -0
  88. package/dist/agent-runtime/src/named-agents.js +301 -0
  89. package/dist/agent-runtime/src/named-agents.js.map +1 -0
  90. package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
  91. package/dist/agent-runtime/src/offline-status.d.ts +66 -2
  92. package/dist/agent-runtime/src/offline-status.js.map +1 -1
  93. package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
  94. package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
  95. package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
  96. package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
  97. package/dist/agent-runtime/src/queue.cjs +2 -2
  98. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  99. package/dist/agent-runtime/src/queue.d.ts +20 -25
  100. package/dist/agent-runtime/src/queue.js +2 -2
  101. package/dist/agent-runtime/src/queue.js.map +1 -1
  102. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
  103. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  104. package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
  105. package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
  106. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
  107. package/dist/agent-runtime/src/run-send.cjs +54 -0
  108. package/dist/agent-runtime/src/run-send.cjs.map +1 -0
  109. package/dist/agent-runtime/src/run-send.d.ts +51 -0
  110. package/dist/agent-runtime/src/run-send.js +54 -0
  111. package/dist/agent-runtime/src/run-send.js.map +1 -0
  112. package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
  113. package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
  114. package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
  115. package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
  116. package/dist/agent-runtime/src/runtime.d.ts +9 -5
  117. package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
  118. package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
  119. package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
  120. package/dist/agent-runtime/src/sealed-idb.js +64 -0
  121. package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
  122. package/dist/agent-runtime/src/send-recovery.cjs +90 -118
  123. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
  124. package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
  125. package/dist/agent-runtime/src/send-recovery.js +90 -118
  126. package/dist/agent-runtime/src/send-recovery.js.map +1 -1
  127. package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
  128. package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
  129. package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
  130. package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
  131. package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
  132. package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
  133. package/dist/agent-runtime/src/statewire-state.cjs +4 -0
  134. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
  135. package/dist/agent-runtime/src/statewire-state.js +4 -0
  136. package/dist/agent-runtime/src/statewire-state.js.map +1 -1
  137. package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
  138. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
  139. package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
  140. package/dist/agent-runtime/src/statewire-transport.js +8 -2
  141. package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
  142. package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
  143. package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
  144. package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
  145. package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
  146. package/dist/agent-runtime/src/subagents.cjs +22 -29
  147. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  148. package/dist/agent-runtime/src/subagents.js +23 -30
  149. package/dist/agent-runtime/src/subagents.js.map +1 -1
  150. package/dist/agent-runtime/src/thread-extras.cjs +27 -19
  151. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
  152. package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
  153. package/dist/agent-runtime/src/thread-extras.js +27 -19
  154. package/dist/agent-runtime/src/thread-extras.js.map +1 -1
  155. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
  156. package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
  157. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  158. package/dist/agent-runtime/src/tool-metadata.js +12 -0
  159. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  160. package/dist/agent-runtime/src/tool-names.cjs +21 -0
  161. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  162. package/dist/agent-runtime/src/tool-names.d.ts +8 -0
  163. package/dist/agent-runtime/src/tool-names.js +21 -0
  164. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  165. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
  166. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
  167. package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
  168. package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
  169. package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
  170. package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
  171. package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
  172. package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
  173. package/dist/agent-runtime/src/typed-interrupts.js +48 -0
  174. package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
  175. package/dist/agent-runtime/src/types.d.ts +1 -1
  176. package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
  177. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  178. package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
  179. package/dist/agent-runtime/src/use-conversation-list.js +1 -0
  180. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
  181. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
  182. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  183. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
  184. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
  185. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  186. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
  187. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  188. package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
  189. package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
  190. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
  191. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
  192. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  193. package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
  194. package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
  195. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
  196. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
  197. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  198. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
  199. package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
  200. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  201. package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
  202. package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
  203. package/dist/agent-runtime/src/work-in.d.ts +127 -0
  204. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  205. package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
  206. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  207. package/dist/assets/asset-panel-store.cjs +13 -5
  208. package/dist/assets/asset-panel-store.cjs.map +1 -1
  209. package/dist/assets/asset-panel-store.d.ts +33 -2
  210. package/dist/assets/asset-panel-store.js +13 -5
  211. package/dist/assets/asset-panel-store.js.map +1 -1
  212. package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
  213. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  214. package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
  215. package/dist/auth/AthenaCredentialSourceContext.js +11 -0
  216. package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
  217. package/dist/auth/account-identity.cjs +13 -2
  218. package/dist/auth/account-identity.cjs.map +1 -1
  219. package/dist/auth/account-identity.d.ts +9 -0
  220. package/dist/auth/account-identity.js +13 -2
  221. package/dist/auth/account-identity.js.map +1 -1
  222. package/dist/auth/credential-source.cjs +20 -4
  223. package/dist/auth/credential-source.cjs.map +1 -1
  224. package/dist/auth/credential-source.d.ts +9 -0
  225. package/dist/auth/credential-source.js +20 -4
  226. package/dist/auth/credential-source.js.map +1 -1
  227. package/dist/catalog/chat-pickers.cjs +31 -0
  228. package/dist/catalog/chat-pickers.cjs.map +1 -1
  229. package/dist/catalog/chat-pickers.d.ts +17 -0
  230. package/dist/catalog/chat-pickers.js +33 -2
  231. package/dist/catalog/chat-pickers.js.map +1 -1
  232. package/dist/catalog/runtime-catalog.cjs +63 -3
  233. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  234. package/dist/catalog/runtime-catalog.d.ts +63 -3
  235. package/dist/catalog/runtime-catalog.js +64 -4
  236. package/dist/catalog/runtime-catalog.js.map +1 -1
  237. package/dist/chat/AthenaChat.cjs +337 -99
  238. package/dist/chat/AthenaChat.cjs.map +1 -1
  239. package/dist/chat/AthenaChat.d.ts +80 -4
  240. package/dist/chat/AthenaChat.js +337 -99
  241. package/dist/chat/AthenaChat.js.map +1 -1
  242. package/dist/chat/StatewireApprovalCard.cjs +35 -5
  243. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  244. package/dist/chat/StatewireApprovalCard.d.ts +55 -2
  245. package/dist/chat/StatewireApprovalCard.js +37 -7
  246. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  247. package/dist/chat/StatewireQueuedMessages.cjs +17 -2
  248. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  249. package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
  250. package/dist/chat/StatewireQueuedMessages.js +18 -3
  251. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  252. package/dist/chat/chat-agent-mentions.cjs +70 -0
  253. package/dist/chat/chat-agent-mentions.cjs.map +1 -0
  254. package/dist/chat/chat-agent-mentions.d.ts +13 -0
  255. package/dist/chat/chat-agent-mentions.js +70 -0
  256. package/dist/chat/chat-agent-mentions.js.map +1 -0
  257. package/dist/chat/composer-actions.cjs +12 -0
  258. package/dist/chat/composer-actions.cjs.map +1 -0
  259. package/dist/chat/composer-actions.d.ts +22 -0
  260. package/dist/chat/composer-actions.js +12 -0
  261. package/dist/chat/composer-actions.js.map +1 -0
  262. package/dist/chat/follow-up-suggestions.cjs +185 -0
  263. package/dist/chat/follow-up-suggestions.cjs.map +1 -0
  264. package/dist/chat/follow-up-suggestions.d.ts +64 -0
  265. package/dist/chat/follow-up-suggestions.js +185 -0
  266. package/dist/chat/follow-up-suggestions.js.map +1 -0
  267. package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
  268. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  269. package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
  270. package/dist/chat/super-grouping/ToolTimeline.js +4 -3
  271. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  272. package/dist/chat/turn-changes.cjs +284 -0
  273. package/dist/chat/turn-changes.cjs.map +1 -0
  274. package/dist/chat/turn-changes.d.ts +130 -0
  275. package/dist/chat/turn-changes.js +284 -0
  276. package/dist/chat/turn-changes.js.map +1 -0
  277. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
  278. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
  279. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
  280. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
  281. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
  282. package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
  283. package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
  284. package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
  285. package/dist/chat/typed-interrupts/approval-cards.js +250 -0
  286. package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
  287. package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
  288. package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
  289. package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
  290. package/dist/chat/typed-interrupts/form-cards.js +289 -0
  291. package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
  292. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
  293. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
  294. package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
  295. package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
  296. package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
  297. package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
  298. package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
  299. package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
  300. package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
  301. package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
  302. package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
  303. package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
  304. package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
  305. package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
  306. package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
  307. package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
  308. package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
  309. package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
  310. package/dist/chat/typed-interrupts/request-file-card.js +159 -0
  311. package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
  312. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
  313. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
  314. package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
  315. package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
  316. package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
  317. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
  318. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
  319. package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
  320. package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
  321. package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
  322. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
  323. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
  324. package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
  325. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
  326. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
  327. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
  328. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
  329. package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
  330. package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
  331. package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
  332. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
  333. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
  334. package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
  335. package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
  336. package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
  337. package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
  338. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
  339. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
  340. package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
  341. package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
  342. package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
  343. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
  344. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
  345. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
  346. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
  347. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
  348. package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
  349. package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
  350. package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
  351. package/dist/chat-ui/composer/composer-named-agents.js +13 -0
  352. package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
  353. package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
  354. package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
  355. package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
  356. package/dist/chat-ui/composer/slash-command-menu.js +143 -0
  357. package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
  358. package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
  359. package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
  360. package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
  361. package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
  362. package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
  363. package/dist/chat-ui/composer/slash-commands.cjs +74 -0
  364. package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
  365. package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
  366. package/dist/chat-ui/composer/slash-commands.js +74 -0
  367. package/dist/chat-ui/composer/slash-commands.js.map +1 -0
  368. package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
  369. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  370. package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
  371. package/dist/chat-ui/composer/tiptap-composer.js +135 -9
  372. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  373. package/dist/chat-ui/index.cjs +3 -0
  374. package/dist/chat-ui/index.cjs.map +1 -1
  375. package/dist/chat-ui/index.d.ts +3 -2
  376. package/dist/chat-ui/index.js +3 -0
  377. package/dist/chat-ui/index.js.map +1 -1
  378. package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
  379. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  380. package/dist/chat-ui/mentions/mention-chip.js +2 -2
  381. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  382. package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
  383. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  384. package/dist/chat-ui/mentions/mention-extension.js +8 -1
  385. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  386. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
  387. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
  388. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
  389. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
  390. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
  391. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
  392. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
  393. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
  394. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
  395. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
  396. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
  397. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
  398. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
  399. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  400. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
  401. package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
  402. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
  403. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
  404. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  405. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
  406. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
  407. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  408. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
  409. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
  410. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
  411. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
  412. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  413. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
  414. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
  415. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  416. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
  417. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
  418. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
  419. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
  420. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
  421. package/dist/chat-ui/statewire.d.ts +1 -1
  422. package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
  423. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  424. package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
  425. package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
  426. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  427. package/dist/collab/client.cjs +17 -5
  428. package/dist/collab/client.cjs.map +1 -1
  429. package/dist/collab/client.d.ts +22 -7
  430. package/dist/collab/client.js +17 -5
  431. package/dist/collab/client.js.map +1 -1
  432. package/dist/composer/ComposerAttachedReferences.cjs +119 -0
  433. package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
  434. package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
  435. package/dist/composer/ComposerAttachedReferences.js +119 -0
  436. package/dist/composer/ComposerAttachedReferences.js.map +1 -0
  437. package/dist/composer/ComposerNamedAgents.cjs +63 -0
  438. package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
  439. package/dist/composer/ComposerNamedAgents.d.ts +16 -0
  440. package/dist/composer/ComposerNamedAgents.js +63 -0
  441. package/dist/composer/ComposerNamedAgents.js.map +1 -0
  442. package/dist/composer/attached-references.cjs +159 -0
  443. package/dist/composer/attached-references.cjs.map +1 -0
  444. package/dist/composer/attached-references.d.ts +86 -0
  445. package/dist/composer/attached-references.js +159 -0
  446. package/dist/composer/attached-references.js.map +1 -0
  447. package/dist/composer/build-composed-message.cjs +14 -7
  448. package/dist/composer/build-composed-message.cjs.map +1 -1
  449. package/dist/composer/build-composed-message.d.ts +6 -1
  450. package/dist/composer/build-composed-message.js +14 -7
  451. package/dist/composer/build-composed-message.js.map +1 -1
  452. package/dist/composer/composer-handoff.cjs +6 -2
  453. package/dist/composer/composer-handoff.cjs.map +1 -1
  454. package/dist/composer/composer-handoff.d.ts +7 -1
  455. package/dist/composer/composer-handoff.js +6 -2
  456. package/dist/composer/composer-handoff.js.map +1 -1
  457. package/dist/composer/folder-upload.cjs +149 -0
  458. package/dist/composer/folder-upload.cjs.map +1 -0
  459. package/dist/composer/folder-upload.d.ts +79 -0
  460. package/dist/composer/folder-upload.js +149 -0
  461. package/dist/composer/folder-upload.js.map +1 -0
  462. package/dist/composer/index.d.ts +1 -1
  463. package/dist/composer/useAttachToChat.cjs +35 -0
  464. package/dist/composer/useAttachToChat.cjs.map +1 -0
  465. package/dist/composer/useAttachToChat.d.ts +54 -0
  466. package/dist/composer/useAttachToChat.js +35 -0
  467. package/dist/composer/useAttachToChat.js.map +1 -0
  468. package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
  469. package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
  470. package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
  471. package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
  472. package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
  473. package/dist/composer/useFileUpload.cjs +95 -7
  474. package/dist/composer/useFileUpload.cjs.map +1 -1
  475. package/dist/composer/useFileUpload.d.ts +21 -2
  476. package/dist/composer/useFileUpload.js +95 -7
  477. package/dist/composer/useFileUpload.js.map +1 -1
  478. package/dist/data/athena-api-error.cjs +125 -0
  479. package/dist/data/athena-api-error.cjs.map +1 -0
  480. package/dist/data/athena-api-error.d.ts +96 -0
  481. package/dist/data/athena-api-error.js +125 -0
  482. package/dist/data/athena-api-error.js.map +1 -0
  483. package/dist/data/athena-data-client.cjs +106 -0
  484. package/dist/data/athena-data-client.cjs.map +1 -0
  485. package/dist/data/athena-data-client.d.ts +74 -0
  486. package/dist/data/athena-data-client.js +106 -0
  487. package/dist/data/athena-data-client.js.map +1 -0
  488. package/dist/data/athena-member.cjs +93 -0
  489. package/dist/data/athena-member.cjs.map +1 -0
  490. package/dist/data/athena-member.d.ts +125 -0
  491. package/dist/data/athena-member.js +93 -0
  492. package/dist/data/athena-member.js.map +1 -0
  493. package/dist/data/athena-request.cjs +458 -0
  494. package/dist/data/athena-request.cjs.map +1 -0
  495. package/dist/data/athena-request.d.ts +120 -0
  496. package/dist/data/athena-request.js +458 -0
  497. package/dist/data/athena-request.js.map +1 -0
  498. package/dist/data/use-athena-fetch.cjs +14 -0
  499. package/dist/data/use-athena-fetch.cjs.map +1 -0
  500. package/dist/data/use-athena-fetch.d.ts +19 -0
  501. package/dist/data/use-athena-fetch.js +14 -0
  502. package/dist/data/use-athena-fetch.js.map +1 -0
  503. package/dist/data/use-athena-graphql.cjs +66 -0
  504. package/dist/data/use-athena-graphql.cjs.map +1 -0
  505. package/dist/data/use-athena-graphql.d.ts +56 -0
  506. package/dist/data/use-athena-graphql.js +66 -0
  507. package/dist/data/use-athena-graphql.js.map +1 -0
  508. package/dist/data/use-athena-rest.cjs +33 -0
  509. package/dist/data/use-athena-rest.cjs.map +1 -0
  510. package/dist/data/use-athena-rest.d.ts +21 -0
  511. package/dist/data/use-athena-rest.js +33 -0
  512. package/dist/data/use-athena-rest.js.map +1 -0
  513. package/dist/data/use-semantic-query.cjs +44 -0
  514. package/dist/data/use-semantic-query.cjs.map +1 -0
  515. package/dist/data/use-semantic-query.d.ts +92 -0
  516. package/dist/data/use-semantic-query.js +44 -0
  517. package/dist/data/use-semantic-query.js.map +1 -0
  518. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  519. package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
  520. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  521. package/dist/diagnostics/errors.cjs +7 -0
  522. package/dist/diagnostics/errors.cjs.map +1 -1
  523. package/dist/diagnostics/errors.d.ts +7 -0
  524. package/dist/diagnostics/errors.js +7 -0
  525. package/dist/diagnostics/errors.js.map +1 -1
  526. package/dist/index.cjs +155 -11
  527. package/dist/index.cjs.map +1 -1
  528. package/dist/index.d.ts +72 -13
  529. package/dist/index.js +148 -4
  530. package/dist/index.js.map +1 -1
  531. package/dist/keryx-http/src/initial-sync.cjs +64 -16
  532. package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
  533. package/dist/keryx-http/src/initial-sync.d.ts +31 -1
  534. package/dist/keryx-http/src/initial-sync.js +64 -16
  535. package/dist/keryx-http/src/initial-sync.js.map +1 -1
  536. package/dist/keryx-http/src/own-awareness.cjs +20 -0
  537. package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
  538. package/dist/keryx-http/src/own-awareness.d.ts +50 -0
  539. package/dist/keryx-http/src/own-awareness.js +20 -0
  540. package/dist/keryx-http/src/own-awareness.js.map +1 -0
  541. package/dist/keryx-http/src/update-attributions.cjs +26 -1
  542. package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
  543. package/dist/keryx-http/src/update-attributions.d.ts +10 -1
  544. package/dist/keryx-http/src/update-attributions.js +26 -1
  545. package/dist/keryx-http/src/update-attributions.js.map +1 -1
  546. package/dist/offline/chat-outbox.cjs +262 -26
  547. package/dist/offline/chat-outbox.cjs.map +1 -1
  548. package/dist/offline/chat-outbox.d.ts +90 -12
  549. package/dist/offline/chat-outbox.js +263 -27
  550. package/dist/offline/chat-outbox.js.map +1 -1
  551. package/dist/provider/AthenaProvider.cjs +63 -19
  552. package/dist/provider/AthenaProvider.cjs.map +1 -1
  553. package/dist/provider/AthenaProvider.d.ts +24 -8
  554. package/dist/provider/AthenaProvider.js +66 -22
  555. package/dist/provider/AthenaProvider.js.map +1 -1
  556. package/dist/react/package.json.cjs +1 -1
  557. package/dist/react/package.json.js +1 -1
  558. package/dist/references/src/anchors/types.cjs +5 -0
  559. package/dist/references/src/anchors/types.cjs.map +1 -1
  560. package/dist/references/src/anchors/types.js +5 -0
  561. package/dist/references/src/anchors/types.js.map +1 -1
  562. package/dist/references/src/attachable.cjs +149 -0
  563. package/dist/references/src/attachable.cjs.map +1 -0
  564. package/dist/references/src/attachable.d.ts +87 -0
  565. package/dist/references/src/attachable.js +149 -0
  566. package/dist/references/src/attachable.js.map +1 -0
  567. package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
  568. package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
  569. package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
  570. package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
  571. package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
  572. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
  573. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  574. package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
  575. package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
  576. package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
  577. package/dist/runtime/statewire-plan-mode.cjs +71 -0
  578. package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
  579. package/dist/runtime/statewire-plan-mode.d.ts +88 -0
  580. package/dist/runtime/statewire-plan-mode.js +71 -0
  581. package/dist/runtime/statewire-plan-mode.js.map +1 -0
  582. package/dist/runtime/statewire-run-config.cjs +18 -1
  583. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  584. package/dist/runtime/statewire-run-config.d.ts +20 -0
  585. package/dist/runtime/statewire-run-config.js +18 -1
  586. package/dist/runtime/statewire-run-config.js.map +1 -1
  587. package/dist/runtime/statewire-session-key.cjs +11 -5
  588. package/dist/runtime/statewire-session-key.cjs.map +1 -1
  589. package/dist/runtime/statewire-session-key.d.ts +22 -10
  590. package/dist/runtime/statewire-session-key.js +11 -5
  591. package/dist/runtime/statewire-session-key.js.map +1 -1
  592. package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
  593. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  594. package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
  595. package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
  596. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  597. package/dist/search/useAthenaAssets.cjs +394 -0
  598. package/dist/search/useAthenaAssets.cjs.map +1 -0
  599. package/dist/search/useAthenaAssets.d.ts +186 -0
  600. package/dist/search/useAthenaAssets.js +394 -0
  601. package/dist/search/useAthenaAssets.js.map +1 -0
  602. package/dist/sheet-range/index.cjs +4 -0
  603. package/dist/sheet-range/index.cjs.map +1 -1
  604. package/dist/sheet-range/index.d.ts +4 -2
  605. package/dist/sheet-range/index.js +4 -0
  606. package/dist/sheet-range/index.js.map +1 -1
  607. package/dist/sheet-range/query-range.cjs +102 -0
  608. package/dist/sheet-range/query-range.cjs.map +1 -0
  609. package/dist/sheet-range/query-range.d.ts +46 -0
  610. package/dist/sheet-range/query-range.js +102 -0
  611. package/dist/sheet-range/query-range.js.map +1 -0
  612. package/dist/styles.css +1 -1
  613. package/dist/subagents/index.cjs +49 -0
  614. package/dist/subagents/index.cjs.map +1 -0
  615. package/dist/subagents/index.d.ts +16 -0
  616. package/dist/subagents/index.js +49 -0
  617. package/dist/subagents/index.js.map +1 -0
  618. package/dist/subagents/lane-follow.cjs +19 -0
  619. package/dist/subagents/lane-follow.cjs.map +1 -0
  620. package/dist/subagents/lane-follow.d.ts +9 -0
  621. package/dist/subagents/lane-follow.js +19 -0
  622. package/dist/subagents/lane-follow.js.map +1 -0
  623. package/dist/subagents/lane-model.cjs +178 -0
  624. package/dist/subagents/lane-model.cjs.map +1 -0
  625. package/dist/subagents/lane-model.d.ts +140 -0
  626. package/dist/subagents/lane-model.js +178 -0
  627. package/dist/subagents/lane-model.js.map +1 -0
  628. package/dist/subagents/lane-parts.cjs +517 -0
  629. package/dist/subagents/lane-parts.cjs.map +1 -0
  630. package/dist/subagents/lane-parts.d.ts +130 -0
  631. package/dist/subagents/lane-parts.js +517 -0
  632. package/dist/subagents/lane-parts.js.map +1 -0
  633. package/dist/subagents/subagent-lane-group.cjs +215 -0
  634. package/dist/subagents/subagent-lane-group.cjs.map +1 -0
  635. package/dist/subagents/subagent-lane-group.d.ts +67 -0
  636. package/dist/subagents/subagent-lane-group.js +215 -0
  637. package/dist/subagents/subagent-lane-group.js.map +1 -0
  638. package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
  639. package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
  640. package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
  641. package/dist/subagents/subagent-transcript-drawer.js +431 -0
  642. package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
  643. package/dist/subagents/task-subagent-group.cjs +115 -0
  644. package/dist/subagents/task-subagent-group.cjs.map +1 -0
  645. package/dist/subagents/task-subagent-group.d.ts +36 -0
  646. package/dist/subagents/task-subagent-group.js +115 -0
  647. package/dist/subagents/task-subagent-group.js.map +1 -0
  648. package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
  649. package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
  650. package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
  651. package/dist/subagents/use-omitted-images-in-view.js +68 -0
  652. package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
  653. package/dist/threads/Inbox.cjs +2 -2
  654. package/dist/threads/Inbox.cjs.map +1 -1
  655. package/dist/threads/SessionList.cjs +27 -24
  656. package/dist/threads/SessionList.cjs.map +1 -1
  657. package/dist/threads/SessionList.js +22 -19
  658. package/dist/threads/SessionList.js.map +1 -1
  659. package/dist/threads/SessionsPage.cjs +13 -7
  660. package/dist/threads/SessionsPage.cjs.map +1 -1
  661. package/dist/threads/SessionsPage.d.ts +10 -1
  662. package/dist/threads/SessionsPage.js +9 -3
  663. package/dist/threads/SessionsPage.js.map +1 -1
  664. package/dist/threads/live-session-rows.cjs +207 -0
  665. package/dist/threads/live-session-rows.cjs.map +1 -0
  666. package/dist/threads/live-session-rows.d.ts +175 -0
  667. package/dist/threads/live-session-rows.js +207 -0
  668. package/dist/threads/live-session-rows.js.map +1 -0
  669. package/dist/threads/session-list-model.cjs.map +1 -1
  670. package/dist/threads/session-list-model.d.ts +2 -1
  671. package/dist/threads/session-list-model.js.map +1 -1
  672. package/dist/threads/session-row-parts.cjs +3 -3
  673. package/dist/threads/session-row-parts.cjs.map +1 -1
  674. package/dist/threads/sessions-page-model.cjs +13 -5
  675. package/dist/threads/sessions-page-model.cjs.map +1 -1
  676. package/dist/threads/sessions-page-model.d.ts +7 -0
  677. package/dist/threads/sessions-page-model.js +11 -3
  678. package/dist/threads/sessions-page-model.js.map +1 -1
  679. package/dist/threads/sessions-page-storage.cjs +8 -8
  680. package/dist/threads/sessions-page-storage.cjs.map +1 -1
  681. package/dist/threads/sessions-page-storage.d.ts +5 -1
  682. package/dist/threads/sessions-page-storage.js +8 -8
  683. package/dist/threads/sessions-page-storage.js.map +1 -1
  684. package/dist/threads/statewire-thread-list.cjs +173 -20
  685. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  686. package/dist/threads/statewire-thread-list.d.ts +44 -1
  687. package/dist/threads/statewire-thread-list.js +174 -21
  688. package/dist/threads/statewire-thread-list.js.map +1 -1
  689. package/dist/threads/use-athena-sessions.cjs +1 -0
  690. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  691. package/dist/threads/use-athena-sessions.d.ts +7 -0
  692. package/dist/threads/use-athena-sessions.js +1 -0
  693. package/dist/threads/use-athena-sessions.js.map +1 -1
  694. package/dist/threads/use-athena-thread-agent.cjs +31 -0
  695. package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
  696. package/dist/threads/use-athena-thread-agent.d.ts +38 -0
  697. package/dist/threads/use-athena-thread-agent.js +31 -0
  698. package/dist/threads/use-athena-thread-agent.js.map +1 -0
  699. package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
  700. package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
  701. package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
  702. package/dist/threads/use-athena-thread-plan-mode.js +18 -0
  703. package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
  704. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  705. package/dist/tools/agent-creations.cjs +97 -0
  706. package/dist/tools/agent-creations.cjs.map +1 -0
  707. package/dist/tools/agent-creations.d.ts +38 -0
  708. package/dist/tools/agent-creations.js +97 -0
  709. package/dist/tools/agent-creations.js.map +1 -0
  710. package/dist/tools/agent-highlights.cjs +100 -0
  711. package/dist/tools/agent-highlights.cjs.map +1 -0
  712. package/dist/tools/agent-highlights.d.ts +57 -0
  713. package/dist/tools/agent-highlights.js +100 -0
  714. package/dist/tools/agent-highlights.js.map +1 -0
  715. package/dist/tools/append-document-tool-ui.cjs +1 -0
  716. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  717. package/dist/tools/append-document-tool-ui.d.ts +7 -0
  718. package/dist/tools/append-document-tool-ui.js +2 -1
  719. package/dist/tools/append-document-tool-ui.js.map +1 -1
  720. package/dist/tools/auto-open-tools.cjs +144 -71
  721. package/dist/tools/auto-open-tools.cjs.map +1 -1
  722. package/dist/tools/auto-open-tools.d.ts +131 -1
  723. package/dist/tools/auto-open-tools.js +145 -72
  724. package/dist/tools/auto-open-tools.js.map +1 -1
  725. package/dist/tools/browser-tool-uis.cjs +594 -0
  726. package/dist/tools/browser-tool-uis.cjs.map +1 -0
  727. package/dist/tools/browser-tool-uis.d.ts +8 -0
  728. package/dist/tools/browser-tool-uis.js +594 -0
  729. package/dist/tools/browser-tool-uis.js.map +1 -0
  730. package/dist/tools/computer-asset-tool-uis.cjs +313 -0
  731. package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
  732. package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
  733. package/dist/tools/computer-asset-tool-uis.js +313 -0
  734. package/dist/tools/computer-asset-tool-uis.js.map +1 -0
  735. package/dist/tools/document-edit-tool-uis.cjs +218 -0
  736. package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
  737. package/dist/tools/document-edit-tool-uis.d.ts +40 -0
  738. package/dist/tools/document-edit-tool-uis.js +218 -0
  739. package/dist/tools/document-edit-tool-uis.js.map +1 -0
  740. package/dist/tools/drive-tool-uis.cjs +425 -0
  741. package/dist/tools/drive-tool-uis.cjs.map +1 -0
  742. package/dist/tools/drive-tool-uis.d.ts +120 -0
  743. package/dist/tools/drive-tool-uis.js +425 -0
  744. package/dist/tools/drive-tool-uis.js.map +1 -0
  745. package/dist/tools/email-calendar-tool-uis.cjs +789 -0
  746. package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
  747. package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
  748. package/dist/tools/email-calendar-tool-uis.js +789 -0
  749. package/dist/tools/email-calendar-tool-uis.js.map +1 -0
  750. package/dist/tools/ontology-tool-uis.cjs +83 -0
  751. package/dist/tools/ontology-tool-uis.cjs.map +1 -0
  752. package/dist/tools/ontology-tool-uis.d.ts +9 -0
  753. package/dist/tools/ontology-tool-uis.js +83 -0
  754. package/dist/tools/ontology-tool-uis.js.map +1 -0
  755. package/dist/tools/orchestration-tool-uis.cjs +586 -0
  756. package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
  757. package/dist/tools/orchestration-tool-uis.d.ts +141 -0
  758. package/dist/tools/orchestration-tool-uis.js +586 -0
  759. package/dist/tools/orchestration-tool-uis.js.map +1 -0
  760. package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
  761. package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
  762. package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
  763. package/dist/tools/presentation-edit-tool-uis.js +516 -0
  764. package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
  765. package/dist/tools/project-tool-uis.cjs +213 -0
  766. package/dist/tools/project-tool-uis.cjs.map +1 -0
  767. package/dist/tools/project-tool-uis.d.ts +14 -0
  768. package/dist/tools/project-tool-uis.js +213 -0
  769. package/dist/tools/project-tool-uis.js.map +1 -0
  770. package/dist/tools/sandbox-tool-uis.cjs +491 -0
  771. package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
  772. package/dist/tools/sandbox-tool-uis.d.ts +116 -0
  773. package/dist/tools/sandbox-tool-uis.js +491 -0
  774. package/dist/tools/sandbox-tool-uis.js.map +1 -0
  775. package/dist/tools/sheet-query-tool-ui.cjs +138 -0
  776. package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
  777. package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
  778. package/dist/tools/sheet-query-tool-ui.js +138 -0
  779. package/dist/tools/sheet-query-tool-ui.js.map +1 -0
  780. package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
  781. package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
  782. package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
  783. package/dist/tools/studio-screenshot-tool-uis.js +262 -0
  784. package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
  785. package/dist/tools/subagent-task-tool-ui.cjs +24 -475
  786. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  787. package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
  788. package/dist/tools/subagent-task-tool-ui.js +28 -479
  789. package/dist/tools/subagent-task-tool-ui.js.map +1 -1
  790. package/dist/tools/tool-summary.cjs +36 -0
  791. package/dist/tools/tool-summary.cjs.map +1 -1
  792. package/dist/tools/tool-summary.js +36 -0
  793. package/dist/tools/tool-summary.js.map +1 -1
  794. package/dist/tools/tool-uis.cjs +181 -53
  795. package/dist/tools/tool-uis.cjs.map +1 -1
  796. package/dist/tools/tool-uis.d.ts +40 -0
  797. package/dist/tools/tool-uis.js +183 -55
  798. package/dist/tools/tool-uis.js.map +1 -1
  799. package/dist/typed-interrupts/index.cjs +15 -0
  800. package/dist/typed-interrupts/index.cjs.map +1 -0
  801. package/dist/typed-interrupts/index.d.ts +20 -0
  802. package/dist/typed-interrupts/index.js +15 -0
  803. package/dist/typed-interrupts/index.js.map +1 -0
  804. package/dist/workbench/session-workbench-panes.cjs +6 -6
  805. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  806. package/package.json +28 -6
  807. package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
  808. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
  809. package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
  810. package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
  811. package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
@@ -0,0 +1,394 @@
1
+ import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
2
+ import { useContext, useMemo } from "react";
3
+ import { AthenaAuthContext } from "../auth/AthenaAuthContext.js";
4
+ import { fetchGraphQL, PAGINATED_ASSETS_QUERY, SIMPLE_SEARCH_QUERY, MENTION_ASSET_FIELDS } from "../chat-ui/mentions/suggestions/data/api-client.js";
5
+ import { useAccountIdentity } from "../chat-ui/mentions/use-account-workspace-id.js";
6
+ import { useAthenaQueryIdentity, useAthenaQueryClient } from "../lib/use-athena-rest-query.js";
7
+ import { useAthenaConfig } from "../provider/AthenaContext.js";
8
+ const AthenaAssetOrder = {
9
+ /**
10
+ * The best title match first (agora's `RELEVANCE`: the title is the words, starts with them,
11
+ * holds them…), then the newest change. An agora from before that order answers by the newest
12
+ * change instead.
13
+ */
14
+ BestMatch: "best-match",
15
+ /** The newest change first. */
16
+ NewestChange: "newest-change"
17
+ };
18
+ const ATHENA_RECENT_ASSETS_NOT_TYPES = [
19
+ "folder",
20
+ "email_message",
21
+ "session",
22
+ "catalog"
23
+ ];
24
+ const ATHENA_SUB_ASSET_MEDIA_TYPES = [
25
+ "athena/meeting_transcript",
26
+ "athena/meeting_transcript_formatted",
27
+ "athena/meeting_recording",
28
+ "athena/meeting_chat_transcript",
29
+ "athena/browse_session_recording"
30
+ ];
31
+ function athenaAssetSearchInput({
32
+ query,
33
+ sortField
34
+ }) {
35
+ var _a, _b;
36
+ const filterColumns = { isArchived: false, isHidden: false };
37
+ if (query.favorites) filterColumns.isFavorited = true;
38
+ if ((_a = query.createdBy) == null ? void 0 : _a.length) filterColumns.createdBy = [...query.createdBy];
39
+ if ((_b = query.notMediaTypes) == null ? void 0 : _b.length) filterColumns.notMediaType = [...query.notMediaTypes];
40
+ return {
41
+ searchRequest: {
42
+ query: query.words.trim(),
43
+ type: [...query.types ?? []],
44
+ notType: [...query.notTypes ?? []],
45
+ limit: query.limit,
46
+ offset: query.offset ?? 0
47
+ },
48
+ returnFullAsset: true,
49
+ shouldCalculateTotal: false,
50
+ sort: { field: sortField, direction: "DESC" },
51
+ filterColumns
52
+ };
53
+ }
54
+ const BAD_USER_INPUT = "BAD_USER_INPUT";
55
+ function refusedInput(error) {
56
+ return Reflect.get(Object(error), "code") === BAD_USER_INPUT;
57
+ }
58
+ async function searchAthenaAssets({
59
+ auth,
60
+ query,
61
+ signal
62
+ }) {
63
+ const ask = async (sortField) => {
64
+ var _a;
65
+ const data = await fetchGraphQL(
66
+ auth,
67
+ SIMPLE_SEARCH_QUERY,
68
+ { input: athenaAssetSearchInput({ query, sortField }) },
69
+ { signal }
70
+ );
71
+ return ((_a = data.simpleSearch) == null ? void 0 : _a.assets) ?? [];
72
+ };
73
+ if (query.order === AthenaAssetOrder.NewestChange) return ask("UPDATED_AT");
74
+ try {
75
+ return await ask("RELEVANCE");
76
+ } catch (error) {
77
+ if (!refusedInput(error)) throw error;
78
+ return ask("UPDATED_AT");
79
+ }
80
+ }
81
+ const REFUSED_STATUSES = /* @__PURE__ */ new Set([400, 401, 403, 404]);
82
+ const REFUSED_CODES = /* @__PURE__ */ new Set([BAD_USER_INPUT, "UNAUTHORIZED", "FORBIDDEN"]);
83
+ function retryTransient(failureCount, error) {
84
+ const status = Reflect.get(error, "status");
85
+ const code = Reflect.get(error, "code");
86
+ if (typeof status === "number" && REFUSED_STATUSES.has(status)) return false;
87
+ if (typeof code === "string" && REFUSED_CODES.has(code)) return false;
88
+ return failureCount < 1;
89
+ }
90
+ function useAssetReadAuth() {
91
+ var _a, _b;
92
+ const config = useAthenaConfig();
93
+ const userId = (_b = (_a = useContext(AthenaAuthContext)) == null ? void 0 : _a.user) == null ? void 0 : _b.userId;
94
+ return useMemo(
95
+ () => ({
96
+ backendUrl: config.backendUrl,
97
+ appUrl: config.appUrl,
98
+ apiKey: config.apiKey,
99
+ credentials: "include",
100
+ userId,
101
+ get accessToken() {
102
+ return config.token ?? void 0;
103
+ },
104
+ getAccessToken: async () => {
105
+ var _a2;
106
+ return await ((_a2 = config.getToken) == null ? void 0 : _a2.call(config)) ?? void 0;
107
+ },
108
+ renewAccessToken: async () => {
109
+ var _a2;
110
+ return await ((_a2 = config.getToken) == null ? void 0 : _a2.call(config, { force: true })) ?? void 0;
111
+ }
112
+ }),
113
+ [config, userId]
114
+ );
115
+ }
116
+ const ASSET_READ_FRESH_MS = 3e4;
117
+ function useAssetRead({
118
+ name,
119
+ query,
120
+ enabled
121
+ }) {
122
+ const config = useAthenaConfig();
123
+ const auth = useAssetReadAuth();
124
+ const identity = useAthenaQueryIdentity({
125
+ apiKey: config.apiKey,
126
+ token: config.token,
127
+ getToken: config.getToken
128
+ });
129
+ return useQuery(
130
+ {
131
+ queryKey: ["athena-sdk", "assets", name, config.backendUrl, ...identity, query],
132
+ queryFn: ({ signal }) => searchAthenaAssets({ auth, query, signal }),
133
+ enabled: enabled && config.backendUrl.length > 0,
134
+ staleTime: ASSET_READ_FRESH_MS,
135
+ retry: retryTransient,
136
+ refetchOnWindowFocus: false
137
+ },
138
+ useAthenaQueryClient()
139
+ );
140
+ }
141
+ function useAthenaAssetSearch({
142
+ words,
143
+ limit = 8,
144
+ notTypes = [],
145
+ enabled = true
146
+ }) {
147
+ const trimmed = words.trim();
148
+ return useAssetRead({
149
+ name: "search",
150
+ query: { words: trimmed, limit, notTypes, order: AthenaAssetOrder.BestMatch },
151
+ enabled: enabled && trimmed.length > 0
152
+ });
153
+ }
154
+ function useAthenaRecentAssets({
155
+ limit = 8,
156
+ enabled = true
157
+ } = {}) {
158
+ const config = useAthenaConfig();
159
+ const { userId } = useAccountIdentity(useAssetReadAuth(), { tokenGetter: config.getToken });
160
+ return useAssetRead({
161
+ name: "recent",
162
+ query: {
163
+ words: "",
164
+ limit,
165
+ notTypes: ATHENA_RECENT_ASSETS_NOT_TYPES,
166
+ notMediaTypes: ATHENA_SUB_ASSET_MEDIA_TYPES,
167
+ createdBy: userId ? [userId] : [],
168
+ order: AthenaAssetOrder.NewestChange
169
+ },
170
+ enabled: enabled && userId !== void 0
171
+ });
172
+ }
173
+ function useAthenaFavoriteAssets({
174
+ limit = 8,
175
+ notTypes = [],
176
+ enabled = true
177
+ } = {}) {
178
+ return useAssetRead({
179
+ name: "favorites",
180
+ query: { words: "", limit, favorites: true, notTypes, order: AthenaAssetOrder.NewestChange },
181
+ enabled
182
+ });
183
+ }
184
+ function useAthenaProjects({
185
+ limit = 20,
186
+ enabled = true
187
+ } = {}) {
188
+ return useAssetRead({
189
+ name: "projects",
190
+ query: { words: "", limit, types: ["project"], order: AthenaAssetOrder.NewestChange },
191
+ enabled
192
+ });
193
+ }
194
+ const FOLDER_LEFT_OUT = /* @__PURE__ */ new Set(["session", "catalog"]);
195
+ function shownInFolder(asset) {
196
+ return !FOLDER_LEFT_OUT.has(asset.athenaOriginalType ?? "");
197
+ }
198
+ function filedIn(asset, folderId) {
199
+ return (asset.parentFolderId ?? null) === folderId && asset.isHidden !== true;
200
+ }
201
+ function athenaFolderPageOf({
202
+ rows,
203
+ folderId,
204
+ limit,
205
+ offset
206
+ }) {
207
+ const own = rows.slice(0, limit).filter((asset) => filedIn(asset, folderId));
208
+ const seen = /* @__PURE__ */ new Set();
209
+ const assets = own.filter((asset) => {
210
+ if (seen.has(asset.id) || !shownInFolder(asset)) return false;
211
+ seen.add(asset.id);
212
+ return true;
213
+ });
214
+ return { assets, next: own.length >= limit ? offset + limit : null };
215
+ }
216
+ async function listAthenaFolder({
217
+ auth,
218
+ folderId,
219
+ limit,
220
+ offset,
221
+ signal
222
+ }) {
223
+ const data = await fetchGraphQL(
224
+ auth,
225
+ PAGINATED_ASSETS_QUERY,
226
+ {
227
+ limit,
228
+ offset,
229
+ parentFolderId: folderId,
230
+ filterTypes: null,
231
+ filterColumns: { isArchived: false, isHidden: false }
232
+ },
233
+ { signal }
234
+ );
235
+ return athenaFolderPageOf({
236
+ rows: data.getPaginatedAssetsForWorkspace ?? [],
237
+ folderId,
238
+ limit,
239
+ offset
240
+ });
241
+ }
242
+ function oncePerAsset(data) {
243
+ const seen = /* @__PURE__ */ new Set();
244
+ return {
245
+ ...data,
246
+ pages: data.pages.map((page) => ({
247
+ ...page,
248
+ assets: page.assets.filter((asset) => {
249
+ if (seen.has(asset.id)) return false;
250
+ seen.add(asset.id);
251
+ return true;
252
+ })
253
+ }))
254
+ };
255
+ }
256
+ function useAthenaFolderAssets({
257
+ folderId,
258
+ pageSize = 50,
259
+ enabled = true
260
+ }) {
261
+ const config = useAthenaConfig();
262
+ const auth = useAssetReadAuth();
263
+ const identity = useAthenaQueryIdentity({
264
+ apiKey: config.apiKey,
265
+ token: config.token,
266
+ getToken: config.getToken
267
+ });
268
+ return useInfiniteQuery(
269
+ {
270
+ queryKey: [
271
+ "athena-sdk",
272
+ "assets",
273
+ "folder",
274
+ config.backendUrl,
275
+ ...identity,
276
+ folderId,
277
+ pageSize
278
+ ],
279
+ queryFn: ({ pageParam, signal }) => listAthenaFolder({
280
+ auth,
281
+ folderId,
282
+ limit: pageSize,
283
+ offset: typeof pageParam === "number" ? pageParam : 0,
284
+ signal
285
+ }),
286
+ initialPageParam: 0,
287
+ getNextPageParam: (last) => last.next ?? void 0,
288
+ select: oncePerAsset,
289
+ enabled: enabled && config.backendUrl.length > 0,
290
+ staleTime: ASSET_READ_FRESH_MS,
291
+ retry: retryTransient,
292
+ refetchOnWindowFocus: false
293
+ },
294
+ useAthenaQueryClient()
295
+ );
296
+ }
297
+ function useAthenaAssetsRefresh() {
298
+ const config = useAthenaConfig();
299
+ const identity = useAthenaQueryIdentity({
300
+ apiKey: config.apiKey,
301
+ token: config.token,
302
+ getToken: config.getToken
303
+ });
304
+ const queryClient = useAthenaQueryClient();
305
+ return () => queryClient.invalidateQueries({
306
+ predicate: ({ queryKey }) => queryKey[0] === "athena-sdk" && queryKey[1] === "assets" && queryKey[3] === config.backendUrl && identity.every((part, at) => Object.is(queryKey[4 + at], part))
307
+ });
308
+ }
309
+ const PROJECT_ASSETS_QUERY = `
310
+ query AthenaProjectAssets($projectId: String!, $first: Int!, $after: String) {
311
+ getProjectLinkedAssetsPaginated(projectId: $projectId, first: $first, after: $after) {
312
+ hasNextPage
313
+ nextCursor
314
+ items {
315
+ asset {
316
+ ${MENTION_ASSET_FIELDS}
317
+ }
318
+ }
319
+ }
320
+ }
321
+ `;
322
+ async function listAthenaProjectAssets({
323
+ auth,
324
+ projectId,
325
+ first,
326
+ after,
327
+ signal
328
+ }) {
329
+ const data = await fetchGraphQL(auth, PROJECT_ASSETS_QUERY, { projectId, first, after }, { signal });
330
+ const page = data.getProjectLinkedAssetsPaginated;
331
+ return {
332
+ assets: ((page == null ? void 0 : page.items) ?? []).map((item) => item.asset).filter(shownInFolder),
333
+ next: (page == null ? void 0 : page.hasNextPage) && page.nextCursor ? page.nextCursor : null
334
+ };
335
+ }
336
+ function useAthenaProjectAssets({
337
+ projectId,
338
+ pageSize = 20,
339
+ enabled = true
340
+ }) {
341
+ const config = useAthenaConfig();
342
+ const auth = useAssetReadAuth();
343
+ const identity = useAthenaQueryIdentity({
344
+ apiKey: config.apiKey,
345
+ token: config.token,
346
+ getToken: config.getToken
347
+ });
348
+ return useInfiniteQuery(
349
+ {
350
+ queryKey: [
351
+ "athena-sdk",
352
+ "assets",
353
+ "project",
354
+ config.backendUrl,
355
+ ...identity,
356
+ projectId,
357
+ pageSize
358
+ ],
359
+ queryFn: ({ pageParam, signal }) => listAthenaProjectAssets({
360
+ auth,
361
+ projectId,
362
+ first: pageSize,
363
+ after: typeof pageParam === "string" ? pageParam : null,
364
+ signal
365
+ }),
366
+ initialPageParam: null,
367
+ getNextPageParam: (last) => last.next ?? void 0,
368
+ enabled: enabled && config.backendUrl.length > 0,
369
+ staleTime: ASSET_READ_FRESH_MS,
370
+ retry: retryTransient,
371
+ refetchOnWindowFocus: false
372
+ },
373
+ useAthenaQueryClient()
374
+ );
375
+ }
376
+ export {
377
+ ATHENA_RECENT_ASSETS_NOT_TYPES,
378
+ ATHENA_SUB_ASSET_MEDIA_TYPES,
379
+ AthenaAssetOrder,
380
+ PROJECT_ASSETS_QUERY,
381
+ athenaAssetSearchInput,
382
+ athenaFolderPageOf,
383
+ listAthenaFolder,
384
+ listAthenaProjectAssets,
385
+ searchAthenaAssets,
386
+ useAthenaAssetSearch,
387
+ useAthenaAssetsRefresh,
388
+ useAthenaFavoriteAssets,
389
+ useAthenaFolderAssets,
390
+ useAthenaProjectAssets,
391
+ useAthenaProjects,
392
+ useAthenaRecentAssets
393
+ };
394
+ //# sourceMappingURL=useAthenaAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAthenaAssets.js","sources":["../../src/search/useAthenaAssets.ts"],"sourcesContent":["/**\n * Finding the assets the signed-in person may open, the way Athena on the web's ⌘K box and its\n * sidebar find them: a title search, the person's recent work (what they created, newest change\n * first: the sidebar's \"Your Recents\") and their favourites. Every read is agora's `simpleSearch`\n * (`SIMPLE_SEARCH_QUERY`, the query the composer's @-mentions send), which agora answers under the\n * workspace's read gate (`search_visibility`, built on `asset_access_query`): only assets the\n * caller may open come back, never a hidden one, and never an archived one here. The hooks read\n * through TanStack Query on the host's client (the session list's when the provider has one), so\n * they wait while Athena can't be reached, as the SDK's other reads do.\n */\nimport {\n type InfiniteData,\n useInfiniteQuery,\n type UseInfiniteQueryResult,\n useQuery,\n type UseQueryResult,\n} from '@tanstack/react-query';\nimport { useContext, useMemo } from 'react';\nimport { AthenaAuthContext } from '../auth/AthenaAuthContext';\nimport {\n type AssetResult,\n fetchGraphQL,\n MENTION_ASSET_FIELDS,\n type MentionAuthContext,\n PAGINATED_ASSETS_QUERY,\n SIMPLE_SEARCH_QUERY,\n} from '../chat-ui/mentions/suggestions/data/api-client';\nimport { useAccountIdentity } from '../chat-ui/mentions/use-account-workspace-id';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\n\n/** An asset as these reads answer it: what a row needs to draw it and open it. */\nexport type AthenaAssetSummary = AssetResult;\n\n/** The order a read asks agora for. */\nexport const AthenaAssetOrder = {\n /**\n * The best title match first (agora's `RELEVANCE`: the title is the words, starts with them,\n * holds them…), then the newest change. An agora from before that order answers by the newest\n * change instead.\n */\n BestMatch: 'best-match',\n /** The newest change first. */\n NewestChange: 'newest-change',\n} as const;\nexport type AthenaAssetOrder = (typeof AthenaAssetOrder)[keyof typeof AthenaAssetOrder];\n\n/** One read of the assets the person may open. */\nexport interface AthenaAssetQuery {\n /** Words the title holds; empty lists without words. */\n words: string;\n limit: number;\n offset?: number;\n /** Only assets of these types (agora's asset type values: `spreadsheet`, `folder`…). */\n types?: readonly string[];\n /** Leave out assets of these types. */\n notTypes?: readonly string[];\n /** Leave out the sub-assets of these media types (a meeting's transcript files). */\n notMediaTypes?: readonly string[];\n /** Only the person's favourites. */\n favorites?: boolean;\n /** Only the assets these agora users created (`user_…`). */\n createdBy?: readonly string[];\n order: AthenaAssetOrder;\n}\n\n/** The sort field agora's `SortField` names for an order. */\ntype AssetSortField = 'RELEVANCE' | 'UPDATED_AT';\n\n/**\n * What \"Your Recents\" leaves out, as Athena on the web's sidebar does (`useYourRecents`): folders,\n * emails, conversations and catalogs.\n */\nexport const ATHENA_RECENT_ASSETS_NOT_TYPES: readonly string[] = [\n 'folder',\n 'email_message',\n 'session',\n 'catalog',\n];\n\n/**\n * The files a meeting or a browse session keeps beside itself (its transcripts, its recording),\n * which Athena on the web never lists among the person's own (`HIDDEN_SUB_ASSET_MEDIA_TYPES`).\n */\nexport const ATHENA_SUB_ASSET_MEDIA_TYPES: readonly string[] = [\n 'athena/meeting_transcript',\n 'athena/meeting_transcript_formatted',\n 'athena/meeting_recording',\n 'athena/meeting_chat_transcript',\n 'athena/browse_session_recording',\n];\n\n/** `simpleSearch`'s `input` for a read, sorted by `sortField`. */\nexport function athenaAssetSearchInput({\n query,\n sortField,\n}: {\n query: AthenaAssetQuery;\n sortField: AssetSortField;\n}): Record<string, unknown> {\n const filterColumns: Record<string, unknown> = { isArchived: false, isHidden: false };\n if (query.favorites) filterColumns.isFavorited = true;\n if (query.createdBy?.length) filterColumns.createdBy = [...query.createdBy];\n if (query.notMediaTypes?.length) filterColumns.notMediaType = [...query.notMediaTypes];\n return {\n searchRequest: {\n query: query.words.trim(),\n type: [...(query.types ?? [])],\n notType: [...(query.notTypes ?? [])],\n limit: query.limit,\n offset: query.offset ?? 0,\n },\n returnFullAsset: true,\n shouldCalculateTotal: false,\n sort: { field: sortField, direction: 'DESC' },\n filterColumns,\n };\n}\n\n/** The `extensions.code` agora answers a GraphQL input it cannot read with. */\nconst BAD_USER_INPUT = 'BAD_USER_INPUT';\n\n/** Whether agora refused the request's inputs (an older agora reading a newer value). */\nfunction refusedInput(error: unknown): boolean {\n return Reflect.get(Object(error), 'code') === BAD_USER_INPUT;\n}\n\n/**\n * One read (`simpleSearch`). `BestMatch` asks agora for `RELEVANCE`; an agora that predates it\n * refuses the value as bad input, and is asked once more by the newest change. Any other failure\n * stands.\n */\nexport async function searchAthenaAssets({\n auth,\n query,\n signal,\n}: {\n auth: MentionAuthContext;\n query: AthenaAssetQuery;\n signal?: AbortSignal;\n}): Promise<AthenaAssetSummary[]> {\n const ask = async (sortField: AssetSortField) => {\n const data = await fetchGraphQL<{\n simpleSearch: { assets: AssetResult[] | null } | null;\n }>(\n auth,\n SIMPLE_SEARCH_QUERY,\n { input: athenaAssetSearchInput({ query, sortField }) },\n { signal },\n );\n return data.simpleSearch?.assets ?? [];\n };\n if (query.order === AthenaAssetOrder.NewestChange) return ask('UPDATED_AT');\n try {\n return await ask('RELEVANCE');\n } catch (error) {\n if (!refusedInput(error)) throw error;\n return ask('UPDATED_AT');\n }\n}\n\n/** Statuses and codes that answer the same way again: never retried. */\nconst REFUSED_STATUSES: ReadonlySet<number> = new Set([400, 401, 403, 404]);\nconst REFUSED_CODES: ReadonlySet<string> = new Set([BAD_USER_INPUT, 'UNAUTHORIZED', 'FORBIDDEN']);\n\n/** A transient failure is read once more; a refusal is not. */\nfunction retryTransient(failureCount: number, error: Error): boolean {\n const status: unknown = Reflect.get(error, 'status');\n const code: unknown = Reflect.get(error, 'code');\n if (typeof status === 'number' && REFUSED_STATUSES.has(status)) return false;\n if (typeof code === 'string' && REFUSED_CODES.has(code)) return false;\n return failureCount < 1;\n}\n\n/**\n * The provider's credential as agora's GraphQL reads take it: the same shape the chat's\n * @-mentions read with (`AthenaChat`), so a host adds no other path for its key or token.\n */\nfunction useAssetReadAuth(): MentionAuthContext {\n const config = useAthenaConfig();\n const userId = useContext(AthenaAuthContext)?.user?.userId;\n return useMemo<MentionAuthContext>(\n () => ({\n backendUrl: config.backendUrl,\n appUrl: config.appUrl,\n apiKey: config.apiKey,\n credentials: 'include',\n userId,\n get accessToken() {\n return config.token ?? undefined;\n },\n getAccessToken: async () => (await config.getToken?.()) ?? undefined,\n renewAccessToken: async () => (await config.getToken?.({ force: true })) ?? undefined,\n }),\n [config, userId],\n );\n}\n\n/** How long an answer serves another read of the same assets before agora is asked again. */\nconst ASSET_READ_FRESH_MS = 30_000;\n\n/**\n * A read through TanStack Query, keyed by the request, the backend, the signed-in principal and\n * a fingerprint of the credential (`useAthenaQueryIdentity`), never the credential itself.\n */\nfunction useAssetRead({\n name,\n query,\n enabled,\n}: {\n name: string;\n query: AthenaAssetQuery;\n enabled: boolean;\n}): UseQueryResult<AthenaAssetSummary[], Error> {\n const config = useAthenaConfig();\n const auth = useAssetReadAuth();\n const identity = useAthenaQueryIdentity({\n apiKey: config.apiKey,\n token: config.token,\n getToken: config.getToken,\n });\n return useQuery(\n {\n queryKey: ['athena-sdk', 'assets', name, config.backendUrl, ...identity, query],\n queryFn: ({ signal }) => searchAthenaAssets({ auth, query, signal }),\n enabled: enabled && config.backendUrl.length > 0,\n staleTime: ASSET_READ_FRESH_MS,\n retry: retryTransient,\n refetchOnWindowFocus: false,\n },\n useAthenaQueryClient(),\n );\n}\n\nexport interface UseAthenaAssetSearchOptions {\n /** The words; blank holds the read idle. */\n words: string;\n /** At most this many, the best match first. Default 8. */\n limit?: number;\n /** Leave out assets of these types (`session`, `catalog`…). */\n notTypes?: readonly string[];\n /** `false` holds the read idle. Default `true`. */\n enabled?: boolean;\n}\n\n/**\n * The assets whose title holds the words, the best match first, as Athena on the web's ⌘K box\n * ranks them.\n */\nexport function useAthenaAssetSearch({\n words,\n limit = 8,\n notTypes = [],\n enabled = true,\n}: UseAthenaAssetSearchOptions): UseQueryResult<AthenaAssetSummary[], Error> {\n const trimmed = words.trim();\n return useAssetRead({\n name: 'search',\n query: { words: trimmed, limit, notTypes, order: AthenaAssetOrder.BestMatch },\n enabled: enabled && trimmed.length > 0,\n });\n}\n\nexport interface UseAthenaAssetListOptions {\n /** At most this many, the newest change first. Default 8. */\n limit?: number;\n /** `false` holds the read idle. Default `true`. */\n enabled?: boolean;\n}\n\n/**\n * The person's recent work, as Athena on the web's sidebar lists it (\"Your Recents\"): what they\n * created, the newest change first, without folders, emails, conversations, catalogs or a\n * meeting's own files. It waits for agora to say who the credential is (`/api/v0/me`, the read the\n * chat shares).\n */\nexport function useAthenaRecentAssets({\n limit = 8,\n enabled = true,\n}: UseAthenaAssetListOptions = {}): UseQueryResult<AthenaAssetSummary[], Error> {\n const config = useAthenaConfig();\n const { userId } = useAccountIdentity(useAssetReadAuth(), { tokenGetter: config.getToken });\n return useAssetRead({\n name: 'recent',\n query: {\n words: '',\n limit,\n notTypes: ATHENA_RECENT_ASSETS_NOT_TYPES,\n notMediaTypes: ATHENA_SUB_ASSET_MEDIA_TYPES,\n createdBy: userId ? [userId] : [],\n order: AthenaAssetOrder.NewestChange,\n },\n enabled: enabled && userId !== undefined,\n });\n}\n\nexport interface UseAthenaFavoriteAssetsOptions extends UseAthenaAssetListOptions {\n /** Leave out favourites of these types (`session`…). */\n notTypes?: readonly string[];\n}\n\n/** The person's favourites, from every folder, the newest change first. */\nexport function useAthenaFavoriteAssets({\n limit = 8,\n notTypes = [],\n enabled = true,\n}: UseAthenaFavoriteAssetsOptions = {}): UseQueryResult<AthenaAssetSummary[], Error> {\n return useAssetRead({\n name: 'favorites',\n query: { words: '', limit, favorites: true, notTypes, order: AthenaAssetOrder.NewestChange },\n enabled,\n });\n}\n\nexport type UseAthenaProjectsOptions = UseAthenaAssetListOptions;\n\n/**\n * The projects the person can open, the newest change first, as Athena on the web's Projects index\n * lists them.\n */\nexport function useAthenaProjects({\n limit = 20,\n enabled = true,\n}: UseAthenaProjectsOptions = {}): UseQueryResult<AthenaAssetSummary[], Error> {\n return useAssetRead({\n name: 'projects',\n query: { words: '', limit, types: ['project'], order: AthenaAssetOrder.NewestChange },\n enabled,\n });\n}\n\n/**\n * What a folder holds that these lists leave out: conversations and catalogs (agora's listing\n * already leaves conversations out; a catalog is a connection, not a file).\n */\nconst FOLDER_LEFT_OUT: ReadonlySet<string> = new Set(['session', 'catalog']);\n\nfunction shownInFolder(asset: AthenaAssetSummary): boolean {\n return !FOLDER_LEFT_OUT.has(asset.athenaOriginalType ?? '');\n}\n\n/** One page of a listing: the assets shown, and whether agora has more. */\nexport interface AthenaAssetPage {\n assets: AthenaAssetSummary[];\n /** Where the next page starts (agora's offset or cursor); `null` at the end. */\n next: number | string | null;\n}\n\n/**\n * Whether a row of agora's folder listing is one of the folder's own: agora reads a page of the\n * folder's own rows (filed in it, not hidden) and then appends each listed meeting's transcript and\n * video and each listed catalog's children, wherever those are filed.\n */\nfunction filedIn(asset: AthenaAssetSummary, folderId: string | null): boolean {\n return (asset.parentFolderId ?? null) === folderId && asset.isHidden !== true;\n}\n\n/**\n * The page a folder listing's rows make: the folder's own rows, without conversations or catalogs.\n * agora's own rows come first, `limit` of them at most, and the rows it appends follow, so only the\n * first `limit` rows can be the folder's own; a full page of them means another may follow, at\n * `offset + limit` (never at the rows' count, which the appended rows would push past rows not yet\n * read).\n */\nexport function athenaFolderPageOf({\n rows,\n folderId,\n limit,\n offset,\n}: {\n rows: readonly AthenaAssetSummary[];\n folderId: string | null;\n limit: number;\n offset: number;\n}): AthenaAssetPage {\n const own = rows.slice(0, limit).filter((asset) => filedIn(asset, folderId));\n const seen = new Set<string>();\n const assets = own.filter((asset) => {\n if (seen.has(asset.id) || !shownInFolder(asset)) return false;\n seen.add(asset.id);\n return true;\n });\n return { assets, next: own.length >= limit ? offset + limit : null };\n}\n\n/**\n * One page of a folder's children, or the workspace's top level for `folderId: null` (agora's\n * `getPaginatedAssetsForWorkspace`, gated by `asset_access_query`): folders first, then the newest\n * change, without conversations or catalogs (`athenaFolderPageOf`).\n */\nexport async function listAthenaFolder({\n auth,\n folderId,\n limit,\n offset,\n signal,\n}: {\n auth: MentionAuthContext;\n /** The folder, or `null` for the workspace's top level. */\n folderId: string | null;\n limit: number;\n offset: number;\n signal?: AbortSignal;\n}): Promise<AthenaAssetPage> {\n const data = await fetchGraphQL<{ getPaginatedAssetsForWorkspace: AssetResult[] | null }>(\n auth,\n PAGINATED_ASSETS_QUERY,\n {\n limit,\n offset,\n parentFolderId: folderId,\n filterTypes: null,\n filterColumns: { isArchived: false, isHidden: false },\n },\n { signal },\n );\n return athenaFolderPageOf({\n rows: data.getPaginatedAssetsForWorkspace ?? [],\n folderId,\n limit,\n offset,\n });\n}\n\nexport interface UseAthenaFolderAssetsOptions {\n /** The folder, or `null` for the workspace's top level. */\n folderId: string | null;\n /** How many to read a page. Default 50. */\n pageSize?: number;\n /** `false` holds the read idle. Default `true`. */\n enabled?: boolean;\n}\n\n/**\n * Each asset once across the pages read so far: a row agora appended to one page (a catalog's\n * child filed in the same folder) can also be one of the folder's own on another.\n */\nfunction oncePerAsset(data: InfiniteData<AthenaAssetPage>): InfiniteData<AthenaAssetPage> {\n const seen = new Set<string>();\n return {\n ...data,\n pages: data.pages.map((page) => ({\n ...page,\n assets: page.assets.filter((asset) => {\n if (seen.has(asset.id)) return false;\n seen.add(asset.id);\n return true;\n }),\n })),\n };\n}\n\n/**\n * A folder's children (or the workspace's top level), a page at a time (`fetchNextPage`), without\n * conversations or catalogs. Keyed by the folder and the credential's fingerprint, never the\n * credential.\n */\nexport function useAthenaFolderAssets({\n folderId,\n pageSize = 50,\n enabled = true,\n}: UseAthenaFolderAssetsOptions): UseInfiniteQueryResult<InfiniteData<AthenaAssetPage>, Error> {\n const config = useAthenaConfig();\n const auth = useAssetReadAuth();\n const identity = useAthenaQueryIdentity({\n apiKey: config.apiKey,\n token: config.token,\n getToken: config.getToken,\n });\n return useInfiniteQuery(\n {\n queryKey: [\n 'athena-sdk',\n 'assets',\n 'folder',\n config.backendUrl,\n ...identity,\n folderId,\n pageSize,\n ],\n queryFn: ({ pageParam, signal }) =>\n listAthenaFolder({\n auth,\n folderId,\n limit: pageSize,\n offset: typeof pageParam === 'number' ? pageParam : 0,\n signal,\n }),\n initialPageParam: 0 as number | string,\n getNextPageParam: (last: AthenaAssetPage) => last.next ?? undefined,\n select: oncePerAsset,\n enabled: enabled && config.backendUrl.length > 0,\n staleTime: ASSET_READ_FRESH_MS,\n retry: retryTransient,\n refetchOnWindowFocus: false,\n },\n useAthenaQueryClient(),\n );\n}\n\n/**\n * Has every asset read of the provider in use read again (the title search, recent work,\n * favourites, projects, and each folder's and project's pages), for the backend and credential in\n * use alone: a host that changed the person's assets (an upload into a folder, which also makes\n * recent work) calls it. Only the reads on screen are sent again; the rest read again when shown.\n */\nexport function useAthenaAssetsRefresh(): () => Promise<void> {\n const config = useAthenaConfig();\n const identity = useAthenaQueryIdentity({\n apiKey: config.apiKey,\n token: config.token,\n getToken: config.getToken,\n });\n const queryClient = useAthenaQueryClient();\n return () =>\n queryClient.invalidateQueries({\n predicate: ({ queryKey }) =>\n queryKey[0] === 'athena-sdk' &&\n queryKey[1] === 'assets' &&\n queryKey[3] === config.backendUrl &&\n identity.every((part, at) => Object.is(queryKey[4 + at], part)),\n });\n}\n\nexport const PROJECT_ASSETS_QUERY = `\n query AthenaProjectAssets($projectId: String!, $first: Int!, $after: String) {\n getProjectLinkedAssetsPaginated(projectId: $projectId, first: $first, after: $after) {\n hasNextPage\n nextCursor\n items {\n asset {\n ${MENTION_ASSET_FIELDS}\n }\n }\n }\n }\n`;\n\n/**\n * One page of the assets a project links (agora's `getProjectLinkedAssetsPaginated`, which leaves\n * out every asset the caller may not open), without conversations or catalogs.\n */\nexport async function listAthenaProjectAssets({\n auth,\n projectId,\n first,\n after,\n signal,\n}: {\n auth: MentionAuthContext;\n projectId: string;\n first: number;\n after: string | null;\n signal?: AbortSignal;\n}): Promise<AthenaAssetPage> {\n const data = await fetchGraphQL<{\n getProjectLinkedAssetsPaginated: {\n hasNextPage: boolean;\n nextCursor: string | null;\n items: Array<{ asset: AssetResult }>;\n } | null;\n }>(auth, PROJECT_ASSETS_QUERY, { projectId, first, after }, { signal });\n const page = data.getProjectLinkedAssetsPaginated;\n return {\n assets: (page?.items ?? []).map((item) => item.asset).filter(shownInFolder),\n next: page?.hasNextPage && page.nextCursor ? page.nextCursor : null,\n };\n}\n\nexport interface UseAthenaProjectAssetsOptions {\n projectId: string;\n /** How many to read a page (agora reads 50 at most). Default 20. */\n pageSize?: number;\n /** `false` holds the read idle. Default `true`. */\n enabled?: boolean;\n}\n\n/** The assets a project links, a page at a time (`fetchNextPage`). */\nexport function useAthenaProjectAssets({\n projectId,\n pageSize = 20,\n enabled = true,\n}: UseAthenaProjectAssetsOptions): UseInfiniteQueryResult<InfiniteData<AthenaAssetPage>, Error> {\n const config = useAthenaConfig();\n const auth = useAssetReadAuth();\n const identity = useAthenaQueryIdentity({\n apiKey: config.apiKey,\n token: config.token,\n getToken: config.getToken,\n });\n return useInfiniteQuery(\n {\n queryKey: [\n 'athena-sdk',\n 'assets',\n 'project',\n config.backendUrl,\n ...identity,\n projectId,\n pageSize,\n ],\n queryFn: ({ pageParam, signal }) =>\n listAthenaProjectAssets({\n auth,\n projectId,\n first: pageSize,\n after: typeof pageParam === 'string' ? pageParam : null,\n signal,\n }),\n initialPageParam: null as number | string | null,\n getNextPageParam: (last: AthenaAssetPage) => last.next ?? undefined,\n enabled: enabled && config.backendUrl.length > 0,\n staleTime: ASSET_READ_FRESH_MS,\n retry: retryTransient,\n refetchOnWindowFocus: false,\n },\n useAthenaQueryClient(),\n );\n}\n"],"names":["_a"],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const a1 = require("./a1.cjs");
4
4
  const rangePreview = require("./range-preview.cjs");
5
5
  const rangePreviewTable = require("./range-preview-table.cjs");
6
+ const queryRange = require("./query-range.cjs");
6
7
  exports.SHEET_MAX_COLUMN = a1.SHEET_MAX_COLUMN;
7
8
  exports.SHEET_MAX_ROW = a1.SHEET_MAX_ROW;
8
9
  exports.a1AnchorCell = a1.a1AnchorCell;
@@ -19,4 +20,7 @@ exports.rangePreviewFromCellMap = rangePreview.rangePreviewFromCellMap;
19
20
  exports.rangePreviewFromRows = rangePreview.rangePreviewFromRows;
20
21
  exports.rangePreviewToTableData = rangePreview.rangePreviewToTableData;
21
22
  exports.RangePreviewTable = rangePreviewTable.RangePreviewTable;
23
+ exports.QUERY_RANGE_MAX_DISPLAY_ROWS = queryRange.QUERY_RANGE_MAX_DISPLAY_ROWS;
24
+ exports.queryCellValueText = queryRange.queryCellValueText;
25
+ exports.queryRangeItemTable = queryRange.queryRangeItemTable;
22
26
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Spreadsheet ranges outside the grid: reading and writing A1 references, and
3
- * drawing a read-only preview of a range's values. The SDK's sheet tool cards
2
+ * Spreadsheet ranges outside the grid: reading and writing A1 references,
3
+ * drawing a read-only preview of a range's values, and reading what a
4
+ * `query_sheet_range` call returned into one. The SDK's sheet tool cards
4
5
  * draw it, and so do Olympus's sheet tool cards and citation previews. Pure
5
6
  * apart from the one table component, and free of the chat runtime, so a
6
7
  * host's shell can import it without loading the chat.
@@ -10,3 +11,4 @@
10
11
  export { type A1Range, a1AnchorCell, a1RangeBounds, columnLettersToNumber, columnNumberToLetters, formatA1Cell, formatA1Range, parseA1Range, SHEET_MAX_COLUMN, SHEET_MAX_ROW, type SheetRangeBounds, splitSheetPrefix, } from './a1';
11
12
  export { RANGE_PREVIEW_MAX_COLUMNS, RANGE_PREVIEW_MAX_ROWS, type RangePreview, type RangePreviewLimits, type RangePreviewRow, rangePreviewFromCellMap, rangePreviewFromRows, rangePreviewToTableData, } from './range-preview';
12
13
  export { RangePreviewTable, type RangePreviewTableProps } from './range-preview-table';
14
+ export { QUERY_RANGE_MAX_DISPLAY_ROWS, type QuerySheetRangeCellValue, type QuerySheetRangeData, type QuerySheetRangeItem, type QuerySheetRangeLayer, queryCellValueText, queryRangeItemTable, } from './query-range';
@@ -1,7 +1,9 @@
1
1
  import { SHEET_MAX_COLUMN, SHEET_MAX_ROW, a1AnchorCell, a1RangeBounds, columnLettersToNumber, columnNumberToLetters, formatA1Cell, formatA1Range, parseA1Range, splitSheetPrefix } from "./a1.js";
2
2
  import { RANGE_PREVIEW_MAX_COLUMNS, RANGE_PREVIEW_MAX_ROWS, rangePreviewFromCellMap, rangePreviewFromRows, rangePreviewToTableData } from "./range-preview.js";
3
3
  import { RangePreviewTable } from "./range-preview-table.js";
4
+ import { QUERY_RANGE_MAX_DISPLAY_ROWS, queryCellValueText, queryRangeItemTable } from "./query-range.js";
4
5
  export {
6
+ QUERY_RANGE_MAX_DISPLAY_ROWS,
5
7
  RANGE_PREVIEW_MAX_COLUMNS,
6
8
  RANGE_PREVIEW_MAX_ROWS,
7
9
  RangePreviewTable,
@@ -14,6 +16,8 @@ export {
14
16
  formatA1Cell,
15
17
  formatA1Range,
16
18
  parseA1Range,
19
+ queryCellValueText,
20
+ queryRangeItemTable,
17
21
  rangePreviewFromCellMap,
18
22
  rangePreviewFromRows,
19
23
  rangePreviewToTableData,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const a1 = require("./a1.cjs");
4
+ const rangePreview = require("./range-preview.cjs");
5
+ const QUERY_RANGE_MAX_DISPLAY_ROWS = 200;
6
+ function queryCellValueText(cell) {
7
+ if (cell == null) return "";
8
+ if (Array.isArray(cell)) {
9
+ const formattedValue = String(cell[0] ?? "");
10
+ if (cell.length === 3) {
11
+ const formula = String(cell[2] ?? "");
12
+ return formula ? `${formattedValue} (${formula})` : formattedValue;
13
+ }
14
+ return formattedValue;
15
+ }
16
+ if (typeof cell === "object") {
17
+ try {
18
+ return JSON.stringify(cell);
19
+ } catch {
20
+ return String(cell);
21
+ }
22
+ }
23
+ return String(cell);
24
+ }
25
+ const cellStyleText = (style) => style ? JSON.stringify(style) : "";
26
+ const styleAreas = (styles) => Object.entries(styles).flatMap(
27
+ ([key, style]) => key.split(",").flatMap((part) => {
28
+ const area = a1.a1RangeBounds(part);
29
+ return area ? [{ area, style }] : [];
30
+ })
31
+ );
32
+ const styledBounds = ({ range, areas }) => {
33
+ const parsed = a1.parseA1Range(range);
34
+ if (!parsed) return null;
35
+ if (parsed.kind === "cell" || parsed.kind === "range") {
36
+ const { startRow, endRow, startColumn, endColumn } = parsed;
37
+ return { startRow, endRow, startColumn, endColumn };
38
+ }
39
+ let first = Number.POSITIVE_INFINITY;
40
+ let last = Number.NEGATIVE_INFINITY;
41
+ for (const { area } of areas) {
42
+ const inSpan = parsed.kind === "columns" ? area.startColumn <= parsed.endColumn && area.endColumn >= parsed.startColumn : area.startRow <= parsed.endRow && area.endRow >= parsed.startRow;
43
+ if (!inSpan) continue;
44
+ first = Math.min(first, parsed.kind === "columns" ? area.startRow : area.startColumn);
45
+ last = Math.max(last, parsed.kind === "columns" ? area.endRow : area.endColumn);
46
+ }
47
+ if (first > last) return null;
48
+ return parsed.kind === "columns" ? { startRow: first, endRow: last, startColumn: parsed.startColumn, endColumn: parsed.endColumn } : { startRow: parsed.startRow, endRow: parsed.endRow, startColumn: first, endColumn: last };
49
+ };
50
+ const stylesByCell = ({
51
+ areas,
52
+ bounds
53
+ }) => {
54
+ const byCell = {};
55
+ for (const { area, style } of areas) {
56
+ const lastRow = Math.min(area.endRow, bounds.endRow);
57
+ const lastColumn = Math.min(area.endColumn, bounds.endColumn);
58
+ for (let row = Math.max(area.startRow, bounds.startRow); row <= lastRow; row += 1) {
59
+ for (let column = Math.max(area.startColumn, bounds.startColumn); column <= lastColumn; column += 1) {
60
+ const cell = a1.formatA1Cell({ row, column });
61
+ if (!Object.hasOwn(byCell, cell)) byCell[cell] = style;
62
+ }
63
+ }
64
+ }
65
+ return byCell;
66
+ };
67
+ function queryRangeItemTable({
68
+ item,
69
+ data
70
+ }) {
71
+ const limits = { maxRows: QUERY_RANGE_MAX_DISPLAY_ROWS, maxColumns: Number.POSITIVE_INFINITY };
72
+ let preview = null;
73
+ if (item.layer === "values") {
74
+ if (!(data == null ? void 0 : data.cells)) return void 0;
75
+ preview = rangePreview.rangePreviewFromCellMap({
76
+ range: item.range,
77
+ cells: data.cells,
78
+ formatCell: queryCellValueText,
79
+ ...limits
80
+ });
81
+ } else {
82
+ if (!(data == null ? void 0 : data.styles)) return void 0;
83
+ const areas = styleAreas(data.styles);
84
+ const bounds = styledBounds({ range: item.range, areas });
85
+ if (!bounds) return void 0;
86
+ const drawn = {
87
+ ...bounds,
88
+ endRow: Math.min(bounds.endRow, bounds.startRow + QUERY_RANGE_MAX_DISPLAY_ROWS - 1)
89
+ };
90
+ preview = rangePreview.rangePreviewFromCellMap({
91
+ range: a1.formatA1Range(bounds),
92
+ cells: stylesByCell({ areas, bounds: drawn }),
93
+ formatCell: cellStyleText,
94
+ ...limits
95
+ });
96
+ }
97
+ return preview ? { tableData: rangePreview.rangePreviewToTableData(preview), totalRows: preview.totalRows, preview } : void 0;
98
+ }
99
+ exports.QUERY_RANGE_MAX_DISPLAY_ROWS = QUERY_RANGE_MAX_DISPLAY_ROWS;
100
+ exports.queryCellValueText = queryCellValueText;
101
+ exports.queryRangeItemTable = queryRangeItemTable;
102
+ //# sourceMappingURL=query-range.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-range.cjs","sources":["../../src/sheet-range/query-range.ts"],"sourcesContent":["/**\n * What a `query_sheet_range` call read, as a range preview: the values layer\n * (each cell's formatted value, with its formula after it) or the formatting\n * layer (each cell's style as JSON), for the SDK's sheet tool card and\n * Olympus's alike.\n */\nimport { a1RangeBounds, formatA1Cell, formatA1Range, parseA1Range, type SheetRangeBounds } from './a1';\nimport { type RangePreview, rangePreviewFromCellMap, rangePreviewToTableData } from './range-preview';\n\n/** The layers a range query reads. */\nexport type QuerySheetRangeLayer = 'values' | 'formatting';\n\n/** One range of a `query_sheet_range` call. */\nexport interface QuerySheetRangeItem {\n /** A1 notation: `A1:D10`, `'Sheet 2'!A1:C20`. */\n range: string;\n /**\n * Optional on the wire: the backend defaults an omitted layer to `values`\n * and tells the model it may omit it, which the model usually does.\n */\n layer?: QuerySheetRangeLayer;\n}\n\n/**\n * A queried cell's value: plain when its formatted value is its value, else\n * `[formatted, value]`, or `[formatted, value, formula]` for a formula.\n */\nexport type QuerySheetRangeCellValue =\n | string\n | number\n | boolean\n | null\n | [string, unknown]\n | [string, unknown, string];\n\n/** One range's data in a `query_sheet_range` answer. */\nexport interface QuerySheetRangeData {\n /** A1 keys to cell values (the values layer). */\n cells?: Record<string, QuerySheetRangeCellValue>;\n /** Keys of cells and rectangles sharing a style (`A1:A3,B1`) to that style (the formatting layer). */\n styles?: Record<string, unknown>;\n}\n\n/** A range's rows the card draws and copies at most. */\nexport const QUERY_RANGE_MAX_DISPLAY_ROWS = 200;\n\n/** A cell value as its display text: the formatted value, with its formula after it. */\nexport function queryCellValueText(cell: QuerySheetRangeCellValue | undefined): string {\n if (cell == null) return '';\n if (Array.isArray(cell)) {\n const formattedValue = String(cell[0] ?? '');\n if (cell.length === 3) {\n const formula = String(cell[2] ?? '');\n return formula ? `${formattedValue} (${formula})` : formattedValue;\n }\n return formattedValue;\n }\n if (typeof cell === 'object') {\n try {\n return JSON.stringify(cell);\n } catch {\n return String(cell);\n }\n }\n return String(cell);\n}\n\n/** A cell's style in the formatting layer, as JSON. */\nconst cellStyleText = (style: unknown): string => (style ? JSON.stringify(style) : '');\n\n/** One cell or rectangle of a formatting-layer key, with the style it carries. */\ninterface StyleArea {\n area: SheetRangeBounds;\n style: unknown;\n}\n\n/**\n * The formatting layer's styles as areas. The backend gives the cells that\n * share a style one key of comma-separated rectangles and cells (`A1:A3,B1`);\n * a part that is neither is skipped.\n */\nconst styleAreas = (styles: Record<string, unknown>): StyleArea[] =>\n Object.entries(styles).flatMap(([key, style]) =>\n key.split(',').flatMap((part) => {\n const area = a1RangeBounds(part);\n return area ? [{ area, style }] : [];\n }),\n );\n\n/**\n * The cells a formatting query covers: the queried cell or rectangle, or for\n * whole columns (rows) the rows (columns) its styles reach within them. Null\n * when the range is not an A1 reference, or whole columns or rows hold no\n * style.\n */\nconst styledBounds = ({ range, areas }: { range: string; areas: StyleArea[] }): SheetRangeBounds | null => {\n const parsed = parseA1Range(range);\n if (!parsed) return null;\n if (parsed.kind === 'cell' || parsed.kind === 'range') {\n const { startRow, endRow, startColumn, endColumn } = parsed;\n return { startRow, endRow, startColumn, endColumn };\n }\n let first = Number.POSITIVE_INFINITY;\n let last = Number.NEGATIVE_INFINITY;\n for (const { area } of areas) {\n const inSpan =\n parsed.kind === 'columns'\n ? area.startColumn <= parsed.endColumn && area.endColumn >= parsed.startColumn\n : area.startRow <= parsed.endRow && area.endRow >= parsed.startRow;\n if (!inSpan) continue;\n first = Math.min(first, parsed.kind === 'columns' ? area.startRow : area.startColumn);\n last = Math.max(last, parsed.kind === 'columns' ? area.endRow : area.endColumn);\n }\n if (first > last) return null;\n return parsed.kind === 'columns'\n ? { startRow: first, endRow: last, startColumn: parsed.startColumn, endColumn: parsed.endColumn }\n : { startRow: parsed.startRow, endRow: parsed.endRow, startColumn: first, endColumn: last };\n};\n\n/**\n * Each cell's style within `bounds`, a cell keeping the first area that names\n * it. Only `bounds` is visited, however large an area is.\n */\nconst stylesByCell = ({\n areas,\n bounds,\n}: {\n areas: StyleArea[];\n bounds: SheetRangeBounds;\n}): Record<string, unknown> => {\n const byCell: Record<string, unknown> = {};\n for (const { area, style } of areas) {\n const lastRow = Math.min(area.endRow, bounds.endRow);\n const lastColumn = Math.min(area.endColumn, bounds.endColumn);\n for (let row = Math.max(area.startRow, bounds.startRow); row <= lastRow; row += 1) {\n for (let column = Math.max(area.startColumn, bounds.startColumn); column <= lastColumn; column += 1) {\n const cell = formatA1Cell({ row, column });\n if (!Object.hasOwn(byCell, cell)) byCell[cell] = style;\n }\n }\n }\n return byCell;\n};\n\n/**\n * One queried range as a card shows and copies it: the range's first\n * {@link QUERY_RANGE_MAX_DISPLAY_ROWS} rows (every column; the table draws\n * the first ones), `tableData` for copying, and the range's full row count.\n * Undefined without the layer's data or for a range that is not an A1\n * reference.\n */\nexport function queryRangeItemTable({\n item,\n data,\n}: {\n item: QuerySheetRangeItem & { layer: QuerySheetRangeLayer };\n data: QuerySheetRangeData | null | undefined;\n}): { tableData: string[][]; totalRows: number; preview: RangePreview } | undefined {\n const limits = { maxRows: QUERY_RANGE_MAX_DISPLAY_ROWS, maxColumns: Number.POSITIVE_INFINITY };\n let preview: RangePreview | null = null;\n if (item.layer === 'values') {\n if (!data?.cells) return undefined;\n preview = rangePreviewFromCellMap({\n range: item.range,\n cells: data.cells,\n formatCell: queryCellValueText,\n ...limits,\n });\n } else {\n if (!data?.styles) return undefined;\n const areas = styleAreas(data.styles);\n const bounds = styledBounds({ range: item.range, areas });\n if (!bounds) return undefined;\n const drawn = {\n ...bounds,\n endRow: Math.min(bounds.endRow, bounds.startRow + QUERY_RANGE_MAX_DISPLAY_ROWS - 1),\n };\n preview = rangePreviewFromCellMap({\n range: formatA1Range(bounds),\n cells: stylesByCell({ areas, bounds: drawn }),\n formatCell: cellStyleText,\n ...limits,\n });\n }\n return preview ? { tableData: rangePreviewToTableData(preview), totalRows: preview.totalRows, preview } : undefined;\n}\n"],"names":["a1RangeBounds","parseA1Range","formatA1Cell","rangePreviewFromCellMap","formatA1Range","rangePreviewToTableData"],"mappings":"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"}