@athenaintel/react 0.57.2 → 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 (799) hide show
  1. package/README.md +759 -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 +290 -97
  238. package/dist/chat/AthenaChat.cjs.map +1 -1
  239. package/dist/chat/AthenaChat.d.ts +80 -4
  240. package/dist/chat/AthenaChat.js +290 -97
  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 +56 -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 +57 -20
  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 +3 -1
  583. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  584. package/dist/runtime/statewire-run-config.d.ts +7 -0
  585. package/dist/runtime/statewire-run-config.js +3 -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 +6 -6
  656. package/dist/threads/SessionList.cjs.map +1 -1
  657. package/dist/threads/SessionsPage.cjs +13 -7
  658. package/dist/threads/SessionsPage.cjs.map +1 -1
  659. package/dist/threads/SessionsPage.d.ts +10 -1
  660. package/dist/threads/SessionsPage.js +9 -3
  661. package/dist/threads/SessionsPage.js.map +1 -1
  662. package/dist/threads/session-list-model.cjs.map +1 -1
  663. package/dist/threads/session-list-model.d.ts +2 -1
  664. package/dist/threads/session-list-model.js.map +1 -1
  665. package/dist/threads/session-row-parts.cjs +3 -3
  666. package/dist/threads/session-row-parts.cjs.map +1 -1
  667. package/dist/threads/sessions-page-model.cjs +13 -5
  668. package/dist/threads/sessions-page-model.cjs.map +1 -1
  669. package/dist/threads/sessions-page-model.d.ts +7 -0
  670. package/dist/threads/sessions-page-model.js +11 -3
  671. package/dist/threads/sessions-page-model.js.map +1 -1
  672. package/dist/threads/sessions-page-storage.cjs +8 -8
  673. package/dist/threads/sessions-page-storage.cjs.map +1 -1
  674. package/dist/threads/sessions-page-storage.d.ts +5 -1
  675. package/dist/threads/sessions-page-storage.js +8 -8
  676. package/dist/threads/sessions-page-storage.js.map +1 -1
  677. package/dist/threads/use-athena-sessions.cjs +1 -0
  678. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  679. package/dist/threads/use-athena-sessions.d.ts +7 -0
  680. package/dist/threads/use-athena-sessions.js +1 -0
  681. package/dist/threads/use-athena-sessions.js.map +1 -1
  682. package/dist/threads/use-athena-thread-agent.cjs +31 -0
  683. package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
  684. package/dist/threads/use-athena-thread-agent.d.ts +38 -0
  685. package/dist/threads/use-athena-thread-agent.js +31 -0
  686. package/dist/threads/use-athena-thread-agent.js.map +1 -0
  687. package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
  688. package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
  689. package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
  690. package/dist/threads/use-athena-thread-plan-mode.js +18 -0
  691. package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
  692. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  693. package/dist/tools/agent-creations.cjs +97 -0
  694. package/dist/tools/agent-creations.cjs.map +1 -0
  695. package/dist/tools/agent-creations.d.ts +38 -0
  696. package/dist/tools/agent-creations.js +97 -0
  697. package/dist/tools/agent-creations.js.map +1 -0
  698. package/dist/tools/agent-highlights.cjs +100 -0
  699. package/dist/tools/agent-highlights.cjs.map +1 -0
  700. package/dist/tools/agent-highlights.d.ts +57 -0
  701. package/dist/tools/agent-highlights.js +100 -0
  702. package/dist/tools/agent-highlights.js.map +1 -0
  703. package/dist/tools/append-document-tool-ui.cjs +1 -0
  704. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  705. package/dist/tools/append-document-tool-ui.d.ts +7 -0
  706. package/dist/tools/append-document-tool-ui.js +2 -1
  707. package/dist/tools/append-document-tool-ui.js.map +1 -1
  708. package/dist/tools/auto-open-tools.cjs +144 -71
  709. package/dist/tools/auto-open-tools.cjs.map +1 -1
  710. package/dist/tools/auto-open-tools.d.ts +131 -1
  711. package/dist/tools/auto-open-tools.js +145 -72
  712. package/dist/tools/auto-open-tools.js.map +1 -1
  713. package/dist/tools/browser-tool-uis.cjs +594 -0
  714. package/dist/tools/browser-tool-uis.cjs.map +1 -0
  715. package/dist/tools/browser-tool-uis.d.ts +8 -0
  716. package/dist/tools/browser-tool-uis.js +594 -0
  717. package/dist/tools/browser-tool-uis.js.map +1 -0
  718. package/dist/tools/computer-asset-tool-uis.cjs +313 -0
  719. package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
  720. package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
  721. package/dist/tools/computer-asset-tool-uis.js +313 -0
  722. package/dist/tools/computer-asset-tool-uis.js.map +1 -0
  723. package/dist/tools/document-edit-tool-uis.cjs +218 -0
  724. package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
  725. package/dist/tools/document-edit-tool-uis.d.ts +40 -0
  726. package/dist/tools/document-edit-tool-uis.js +218 -0
  727. package/dist/tools/document-edit-tool-uis.js.map +1 -0
  728. package/dist/tools/drive-tool-uis.cjs +425 -0
  729. package/dist/tools/drive-tool-uis.cjs.map +1 -0
  730. package/dist/tools/drive-tool-uis.d.ts +120 -0
  731. package/dist/tools/drive-tool-uis.js +425 -0
  732. package/dist/tools/drive-tool-uis.js.map +1 -0
  733. package/dist/tools/email-calendar-tool-uis.cjs +789 -0
  734. package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
  735. package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
  736. package/dist/tools/email-calendar-tool-uis.js +789 -0
  737. package/dist/tools/email-calendar-tool-uis.js.map +1 -0
  738. package/dist/tools/ontology-tool-uis.cjs +83 -0
  739. package/dist/tools/ontology-tool-uis.cjs.map +1 -0
  740. package/dist/tools/ontology-tool-uis.d.ts +9 -0
  741. package/dist/tools/ontology-tool-uis.js +83 -0
  742. package/dist/tools/ontology-tool-uis.js.map +1 -0
  743. package/dist/tools/orchestration-tool-uis.cjs +586 -0
  744. package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
  745. package/dist/tools/orchestration-tool-uis.d.ts +141 -0
  746. package/dist/tools/orchestration-tool-uis.js +586 -0
  747. package/dist/tools/orchestration-tool-uis.js.map +1 -0
  748. package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
  749. package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
  750. package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
  751. package/dist/tools/presentation-edit-tool-uis.js +516 -0
  752. package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
  753. package/dist/tools/project-tool-uis.cjs +213 -0
  754. package/dist/tools/project-tool-uis.cjs.map +1 -0
  755. package/dist/tools/project-tool-uis.d.ts +14 -0
  756. package/dist/tools/project-tool-uis.js +213 -0
  757. package/dist/tools/project-tool-uis.js.map +1 -0
  758. package/dist/tools/sandbox-tool-uis.cjs +491 -0
  759. package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
  760. package/dist/tools/sandbox-tool-uis.d.ts +116 -0
  761. package/dist/tools/sandbox-tool-uis.js +491 -0
  762. package/dist/tools/sandbox-tool-uis.js.map +1 -0
  763. package/dist/tools/sheet-query-tool-ui.cjs +138 -0
  764. package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
  765. package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
  766. package/dist/tools/sheet-query-tool-ui.js +138 -0
  767. package/dist/tools/sheet-query-tool-ui.js.map +1 -0
  768. package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
  769. package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
  770. package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
  771. package/dist/tools/studio-screenshot-tool-uis.js +262 -0
  772. package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
  773. package/dist/tools/subagent-task-tool-ui.cjs +24 -475
  774. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  775. package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
  776. package/dist/tools/subagent-task-tool-ui.js +28 -479
  777. package/dist/tools/subagent-task-tool-ui.js.map +1 -1
  778. package/dist/tools/tool-summary.cjs +36 -0
  779. package/dist/tools/tool-summary.cjs.map +1 -1
  780. package/dist/tools/tool-summary.js +36 -0
  781. package/dist/tools/tool-summary.js.map +1 -1
  782. package/dist/tools/tool-uis.cjs +181 -53
  783. package/dist/tools/tool-uis.cjs.map +1 -1
  784. package/dist/tools/tool-uis.d.ts +40 -0
  785. package/dist/tools/tool-uis.js +183 -55
  786. package/dist/tools/tool-uis.js.map +1 -1
  787. package/dist/typed-interrupts/index.cjs +15 -0
  788. package/dist/typed-interrupts/index.cjs.map +1 -0
  789. package/dist/typed-interrupts/index.d.ts +20 -0
  790. package/dist/typed-interrupts/index.js +15 -0
  791. package/dist/typed-interrupts/index.js.map +1 -0
  792. package/dist/workbench/session-workbench-panes.cjs +6 -6
  793. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  794. package/package.json +28 -6
  795. package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
  796. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
  797. package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
  798. package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
  799. package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration-tool-uis.js","sources":["../../src/tools/orchestration-tool-uis.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * The deep agent's orchestration cards, as Athena draws them on the web:\n *\n * - `eval` (Olympus's `eval-tool-card.tsx`): \"Code interpreter\" and the\n * code's first line; behind it the code and what it returned or printed.\n * - The background-task verbs `start_async_task`, `check_async_task`,\n * `update_async_task`, `cancel_async_task` and `ask_agent` (Olympus's\n * `coding-task-cards.tsx` and `agent-task-card.tsx`), one tool UI keyed on\n * the tool name: a coding worker's task (its status pill and, once it\n * reports, the summary, branch, commit, changed files, tests, cost,\n * blockers and questions), a child agent session (the verb, the task's title\n * and status, its answer, a link to its session), or a plain row naming the\n * verb and its subject.\n *\n * Everything is read off the call's own arguments and result. The web card's\n * live reads of the host's background-task state (a coding task's polled\n * status and Claude transcript, a started session's tray status) have no\n * counterpart here. The SDK calls an `eval` made render under the card\n * through `NestedPtcMessages`, as under every tool UI.\n */\nimport type { ToolCallMessagePartComponent } from \"@assistant-ui/react\";\nimport {\n ASK_AGENT_TOOL_NAME,\n CANCEL_ASYNC_TASK_TOOL_NAME,\n CHECK_ASYNC_TASK_TOOL_NAME,\n START_ASYNC_TASK_TOOL_NAME,\n UPDATE_ASYNC_TASK_TOOL_NAME,\n} from \"@athenaintel/agent-runtime\";\nimport {\n BotIcon,\n BracesIcon,\n CheckCircle2Icon,\n ChevronDownIcon,\n CircleDashedIcon,\n Loader2Icon,\n ShieldAlertIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport { type ElementType, memo, useMemo, useState } from \"react\";\nimport { useAssetPanelStore } from \"../assets/asset-panel-store\";\nimport { cn, isRecord } from \"../lib/utils\";\nimport {\n argsRecord,\n asText,\n type CardState,\n cardOutcome,\n cardStateOf,\n Chevron,\n ErrorChip,\n rendersAsGenericCard,\n StatusGlyph,\n StoppedCallNotice,\n stoppedCallFailure,\n stringArg,\n type ToolCardDisclosure,\n type ToolPartView,\n useCardChrome,\n} from \"./sandbox-tool-uis\";\nimport { ToolFallback } from \"./tool-fallback\";\n\n/** A JSON-object result, from its string or as given; `null` for anything else. */\nfunction jsonRecord(result: unknown): Record<string, unknown> | null {\n if (typeof result !== \"string\") return isRecord(result) ? result : null;\n try {\n const parsed: unknown = JSON.parse(result);\n return isRecord(parsed) ? parsed : null;\n } catch {\n return null;\n }\n}\n\nfunction textField(record: Record<string, unknown>, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\n// ─── eval ────────────────────────────────────────────────────────────\n\n/** The code's first non-blank line, trimmed and capped for the header. */\nfunction firstCodeLine(code: string): string {\n const line = (code.split(\"\\n\").find((candidate) => candidate.trim().length > 0) ?? \"\").trim();\n return line.length > 90 ? `${line.slice(0, 89)}…` : line;\n}\n\nconst EVAL_ERROR_OPEN = '<error type=\"';\n\n/**\n * Whether the interpreter's answer is an error: its last element is\n * `<error type=\"…\">…</error>` (`langchain_quickjs` `format_outcome`), after\n * any `<stdout>` the code printed first.\n */\nexport function evalAnswerIsError(text: string): boolean {\n const trimmed = text.trimEnd();\n if (!trimmed.endsWith(\"</error>\")) return false;\n // The error's own text is XML-escaped, so the last opening tag is its own.\n const start = trimmed.lastIndexOf(EVAL_ERROR_OPEN);\n return start === 0 || (start > 0 && trimmed[start - 1] === \"\\n\");\n}\n\nexport type EvalInterpreterCardProps = ToolPartView & ToolCardDisclosure;\n\n/** The `eval` card: the code's first line, and the code and its answer behind it. */\nexport function EvalInterpreterCard({\n args,\n result,\n status,\n isError,\n isPreliminary,\n defaultOpen = false,\n}: EvalInterpreterCardProps) {\n const [expanded, setExpanded] = useState(defaultOpen);\n const chrome = useCardChrome();\n const code = stringArg(argsRecord(args), \"code\") ?? \"\";\n const state = cardStateOf({ status, isError, isPreliminary, result });\n // A running call's placeholder (its SDK-call log) is not its answer.\n const answered = result != null && isPreliminary !== true;\n const output = useMemo(() => (answered ? asText(result) : \"\"), [answered, result]);\n const failed = state === \"error\" || (answered && evalAnswerIsError(output));\n\n return (\n <div\n data-slot=\"eval-card\"\n data-tool-outcome={cardOutcome({ state, failed })}\n className={chrome.root}\n >\n <button\n type=\"button\"\n aria-expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n className={cn(\"flex w-full items-center gap-3 text-left\", chrome.header)}\n >\n <BracesIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-primary\" />\n <span className=\"min-w-0 flex-1 truncate text-sm text-foreground\">\n <span className=\"text-muted-foreground\">Code interpreter </span>\n <code className=\"font-mono text-xs\">{firstCodeLine(code)}</code>\n </span>\n {failed ? <ErrorChip /> : null}\n <StatusGlyph state={state} succeeded={false} />\n <Chevron expanded={expanded} />\n </button>\n <StoppedCallNotice message={stoppedCallFailure(status)} />\n {expanded && (code || output) ? (\n // An editor's dark pane in either theme.\n <div data-slot=\"eval-card-details\" className=\"border-t border-border\">\n {code ? (\n <pre className=\"max-h-80 overflow-auto bg-zinc-900 px-4 py-3 font-mono text-xs leading-relaxed text-zinc-100\">\n {code}\n </pre>\n ) : null}\n {output ? (\n <pre\n className={cn(\n \"max-h-60 overflow-auto border-t border-zinc-800 bg-zinc-900 px-4 py-3 font-mono text-xs leading-relaxed\",\n failed ? \"text-red-300\" : \"text-emerald-200/90\",\n )}\n >\n {output}\n </pre>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nconst EvalToolUIImpl: ToolCallMessagePartComponent = (props) =>\n rendersAsGenericCard(props) ? (\n <ToolFallback {...props} icon={BracesIcon} />\n ) : (\n <EvalInterpreterCard {...props} />\n );\n\n/** The `eval` (QuickJS code interpreter) tool UI. */\nexport const EvalToolUI = memo(EvalToolUIImpl) as unknown as ToolCallMessagePartComponent;\nEvalToolUI.displayName = \"EvalToolUI\";\n\n// ─── Background tasks: which card ────────────────────────────────────\n\n/** The deepagents async subagent the coding worker registers as (ADR 0006). */\nconst CLAUDE_CODER_AGENT_NAME = \"claude-coder\";\n\n/** `subagent_type` of a background task that is a child agent session. */\nconst AGENT_TASK_TYPE = \"agent\";\n\nconst TASK_ID_RE = /task_id:\\s*([0-9a-f-]{36})/i;\n\n/** The task a coding worker's start names (`Launched async subagent. task_id: <uuid>`). */\nexport function taskIdFromLaunchResult(result: unknown): string | null {\n const match = typeof result === \"string\" ? TASK_ID_RE.exec(result) : null;\n return match?.[1] ?? null;\n}\n\n/**\n * deepagents' own replies to a coding worker's update, cancel and check\n * (`async_subagents.py`); agent sessions answer JSON instead.\n */\nconst CODING_WORKER_REPLY =\n /^(?:Updated async subagent|Queued follow-up to async subagent|Failed to update async subagent|Cancelled async subagent task|Failed to cancel run|Failed to get run status)\\b/;\n\n/** Keys only an agent session's answer carries (`background_tasks.py`). */\nconst SESSION_ANSWER_KEYS = [\"session_asset_id\", \"title\", \"task_id\", \"delivery\", \"agent\", \"success\"];\n\n/**\n * Whether a follow-up's answer came from a coding worker: one of deepagents'\n * replies, or its check JSON (`{status, thread_id, result?, error?}`), which\n * names no session.\n */\nexport function isCodingWorkerAnswer(result: unknown): boolean {\n if (typeof result === \"string\" && CODING_WORKER_REPLY.test(result.trim())) return true;\n const payload = jsonRecord(result);\n return (\n payload !== null &&\n typeof payload.status === \"string\" &&\n typeof payload.thread_id === \"string\" &&\n !SESSION_ANSWER_KEYS.some((key) => key in payload)\n );\n}\n\n/**\n * What an agent-session verb answered (`background_tasks.py`), all optional:\n * a start names the task and its session, a check its status and result, an\n * update its delivery, a cancel its status, a refusal its code and message.\n */\nexport interface AgentTaskPayload {\n success?: boolean;\n code?: string;\n task_id?: string;\n thread_id?: string;\n status?: string;\n title: string | null;\n session_asset_id: string | null;\n result?: string;\n error?: string;\n detail?: string;\n delivery?: string;\n message?: string;\n /** The agent the session runs as (a start or an `ask_agent`). */\n agent?: string;\n}\n\n/** The verb's JSON answer, or `null` for anything that is not a JSON object. */\nexport function parseAgentTaskPayload(result: unknown): AgentTaskPayload | null {\n const payload = jsonRecord(result);\n if (payload === null) return null;\n return {\n success: typeof payload.success === \"boolean\" ? payload.success : undefined,\n code: textField(payload, \"code\"),\n task_id: textField(payload, \"task_id\"),\n thread_id: textField(payload, \"thread_id\"),\n status: textField(payload, \"status\"),\n title: textField(payload, \"title\") ?? null,\n session_asset_id: textField(payload, \"session_asset_id\") ?? null,\n result: textField(payload, \"result\"),\n error: textField(payload, \"error\"),\n detail: textField(payload, \"detail\"),\n delivery: textField(payload, \"delivery\"),\n message: textField(payload, \"message\"),\n agent: textField(payload, \"agent\"),\n };\n}\n\n/**\n * Whether an answer came from an agent session: JSON naming a status, a\n * delivery, a session or a task, or a refusal naming its code.\n */\nexport function isAgentTaskResult(result: unknown): boolean {\n const payload = parseAgentTaskPayload(result);\n if (payload === null) return false;\n return Boolean(\n payload.session_asset_id ||\n payload.delivery ||\n payload.status ||\n payload.task_id ||\n (payload.success === false && payload.code),\n );\n}\n\nexport type AsyncTaskCardKind = \"coding\" | \"agent\" | \"generic\";\n\n/**\n * Which card a background-task call gets. A start names its worker\n * (`subagent_type`); `ask_agent` only ever reaches an agent session. A\n * follow-up carries only a task id, so its own answer says which worker it\n * addressed; one with no answer yet, or an answer neither worker gives, is a\n * plain row.\n */\nexport function asyncTaskCardKind({\n toolName,\n args,\n result,\n}: {\n toolName: string;\n args: Record<string, unknown> | undefined;\n result: unknown;\n}): AsyncTaskCardKind {\n if (toolName === ASK_AGENT_TOOL_NAME) return \"agent\";\n if (toolName === START_ASYNC_TASK_TOOL_NAME) {\n const worker = stringArg(args, \"subagent_type\") ?? stringArg(args, \"agent_name\");\n if (worker === CLAUDE_CODER_AGENT_NAME) return \"coding\";\n // A named collab-agent peer starts an agent session under its own name.\n if (worker === AGENT_TASK_TYPE || isAgentTaskResult(result)) return \"agent\";\n return \"generic\";\n }\n if (isCodingWorkerAnswer(result)) return \"coding\";\n if (isAgentTaskResult(result)) return \"agent\";\n return \"generic\";\n}\n\n// ─── Coding worker ───────────────────────────────────────────────────\n\n/** The compact result the coding worker returns (ADR 0006 §3.1), inside `check_async_task`'s `result`. */\nexport interface CodingTaskResult {\n status: string;\n summary: string;\n branch: string | null;\n commit_sha: string | null;\n changed_files: string[];\n tests: { command: string; status: string; output_summary?: string }[];\n artifacts: string[];\n blockers: string[];\n questions: string[];\n claude_session_id: string | null;\n cost_usd: number | null;\n num_turns: number | null;\n}\n\nexport interface CodingTaskCheck {\n runStatus: string | null;\n error: string | null;\n worker: CodingTaskResult | null;\n raw: string;\n}\n\nconst NO_CHECK: CodingTaskCheck = { runStatus: null, error: null, worker: null, raw: \"\" };\n\nfunction stringList(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((item): item is string => typeof item === \"string\") : [];\n}\n\nfunction parseJson(text: string): { value: unknown } | null {\n try {\n return { value: JSON.parse(text) };\n } catch {\n return null;\n }\n}\n\n/**\n * The worker's report out of a `check_async_task` answer: deepagents answers\n * `{status, thread_id, result?, error?}`, whose `result` is the worker's last\n * message, the compact JSON it wrote. Anything unparseable reads as no report\n * (the raw text still shows), never as an error thrown in a render.\n */\nexport function parseCodingTaskCheck(result: unknown): CodingTaskCheck {\n const parsed = typeof result === \"string\" ? parseJson(result) : { value: result };\n if (parsed === null && typeof result === \"string\") {\n return { runStatus: null, error: null, worker: null, raw: result };\n }\n const payload = parsed?.value;\n if (!isRecord(payload)) {\n return { runStatus: null, error: null, worker: null, raw: String(result ?? \"\") };\n }\n const inner = payload.result;\n const report = typeof inner === \"string\" ? (parseJson(inner)?.value ?? null) : inner;\n let worker: CodingTaskResult | null = null;\n if (isRecord(report) && typeof report.status === \"string\") {\n worker = {\n status: report.status,\n summary: textField(report, \"summary\") ?? \"\",\n branch: textField(report, \"branch\") ?? null,\n commit_sha: textField(report, \"commit_sha\") ?? null,\n changed_files: stringList(report.changed_files),\n tests: Array.isArray(report.tests)\n ? report.tests.filter(isRecord).map((test) => ({\n command: textField(test, \"command\") ?? \"\",\n status: textField(test, \"status\") ?? \"\",\n output_summary: textField(test, \"output_summary\"),\n }))\n : [],\n artifacts: stringList(report.artifacts),\n blockers: stringList(report.blockers),\n questions: stringList(report.questions),\n claude_session_id: textField(report, \"claude_session_id\") ?? null,\n cost_usd: typeof report.cost_usd === \"number\" ? report.cost_usd : null,\n num_turns: typeof report.num_turns === \"number\" ? report.num_turns : null,\n };\n }\n return {\n runStatus: textField(payload, \"status\") ?? null,\n error: textField(payload, \"error\") ?? null,\n worker,\n raw: typeof result === \"string\" ? result : JSON.stringify(result),\n };\n}\n\ntype PillTone = \"success\" | \"warning\" | \"failed\" | \"muted\" | \"running\";\n\nexport interface CodingTaskPill {\n label: string;\n tone: PillTone;\n Icon: ElementType;\n spin?: boolean;\n}\n\nconst PILL_TONE: Record<PillTone, string> = {\n success: \"border-emerald-500/20 bg-emerald-500/10 text-emerald-600\",\n warning: \"border-amber-500/20 bg-amber-500/10 text-amber-600\",\n failed: \"border-destructive/20 bg-destructive/10 text-destructive\",\n muted: \"border-border bg-muted text-muted-foreground\",\n running: \"border-primary/20 bg-primary/10 text-primary\",\n};\n\n/**\n * The status pill: the worker's own verdict, else the task's last known run\n * status, else where the call itself is.\n */\nexport function codingTaskPill({\n runStatus,\n workerStatus,\n state,\n}: {\n runStatus: string | null;\n workerStatus: string | null;\n state: CardState;\n}): CodingTaskPill {\n if (workerStatus === \"completed\") {\n return { label: \"completed\", tone: \"success\", Icon: CheckCircle2Icon };\n }\n if (workerStatus === \"blocked\") return { label: \"blocked\", tone: \"warning\", Icon: CircleDashedIcon };\n if (workerStatus === \"failed\" || runStatus === \"error\") {\n return { label: \"failed\", tone: \"failed\", Icon: XCircleIcon };\n }\n if (runStatus === \"cancelled\" || runStatus === \"interrupted\") {\n return { label: runStatus, tone: \"muted\", Icon: XCircleIcon };\n }\n if (runStatus === \"success\") return { label: \"finished\", tone: \"success\", Icon: CheckCircle2Icon };\n if (state === \"running\" || runStatus === \"running\" || runStatus === \"pending\") {\n return { label: \"running\", tone: \"running\", Icon: Loader2Icon, spin: true };\n }\n if (state === \"waiting\") {\n return { label: \"waiting for approval\", tone: \"warning\", Icon: ShieldAlertIcon };\n }\n if (state === \"error\") return { label: \"failed\", tone: \"failed\", Icon: XCircleIcon };\n if (state === \"cancelled\") return { label: \"cancelled\", tone: \"muted\", Icon: XCircleIcon };\n return { label: runStatus ?? \"launched\", tone: \"muted\", Icon: CircleDashedIcon };\n}\n\n/** deepagents phrases a successful cancel as `Cancelled async subagent task: <id>`. */\nconst CANCELLED_REPLY = /^Cancelled async subagent task/i;\n\n/** The task's run status as the call's own answer gives it: a check's status, or a cancel that went through. */\nfunction answeredRunStatus({\n toolName,\n result,\n check,\n}: {\n toolName: string;\n result: unknown;\n check: CodingTaskCheck;\n}): string | null {\n if (check.runStatus !== null) return check.runStatus;\n return toolName === CANCEL_ASYNC_TASK_TOOL_NAME &&\n typeof result === \"string\" &&\n CANCELLED_REPLY.test(result.trim())\n ? \"cancelled\"\n : null;\n}\n\nconst CODING_VERB: Record<string, string> = {\n [START_ASYNC_TASK_TOOL_NAME]: \"Started coding task\",\n [CHECK_ASYNC_TASK_TOOL_NAME]: \"Checked coding task\",\n [UPDATE_ASYNC_TASK_TOOL_NAME]: \"Sent follow-up to coding task\",\n [CANCEL_ASYNC_TASK_TOOL_NAME]: \"Cancelled coding task\",\n};\n\nexport type AsyncTaskCardProps = ToolPartView & ToolCardDisclosure;\n\nconst ASYNC_CARD_TINT = \"bg-muted/60 hover:bg-muted/60\";\n\n/**\n * A coding worker's task: the verb and its instruction, the status pill and,\n * once the worker reports (opened on its own then), its report.\n */\nfunction CodingTaskCard({\n toolName,\n args,\n result,\n status,\n isError,\n isPreliminary,\n defaultOpen = false,\n}: AsyncTaskCardProps) {\n const [expanded, setExpanded] = useState(defaultOpen);\n const chrome = useCardChrome({ tint: ASYNC_CARD_TINT });\n const fields = argsRecord(args);\n const state = cardStateOf({ status, isError, isPreliminary, result });\n const taskId =\n (toolName === START_ASYNC_TASK_TOOL_NAME ? taskIdFromLaunchResult(result) : null) ??\n stringArg(fields, \"task_id\") ??\n null;\n const check = useMemo(\n () => (toolName === CHECK_ASYNC_TASK_TOOL_NAME ? parseCodingTaskCheck(result) : NO_CHECK),\n [toolName, result],\n );\n const pill = codingTaskPill({\n runStatus: answeredRunStatus({ toolName, result, check }),\n workerStatus: check.worker?.status ?? null,\n state,\n });\n const instruction = stringArg(fields, \"message\") ?? stringArg(fields, \"description\") ?? \"\";\n const worker = check.worker;\n // A finished worker's report opens the body on its own.\n const bodyOpen = expanded || worker !== null;\n\n return (\n <div\n data-slot=\"async-task-card\"\n data-kind=\"coding\"\n data-tool-outcome={cardOutcome({ state, failed: pill.tone === \"failed\" })}\n className={chrome.root}\n >\n <button\n type=\"button\"\n aria-expanded={bodyOpen}\n onClick={() => setExpanded(!expanded)}\n className={cn(\"flex w-full items-center gap-3 text-left\", chrome.header)}\n >\n <BotIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-primary\" />\n <span className=\"min-w-0 flex-1 truncate text-sm text-foreground\">\n {CODING_VERB[toolName] ?? toolName}\n {instruction ? (\n <span className=\"text-muted-foreground\">\n {\" \"}\n · {instruction.replace(/\\s+/g, \" \").slice(0, 90)}\n </span>\n ) : null}\n </span>\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium\",\n PILL_TONE[pill.tone],\n )}\n >\n <pill.Icon\n aria-hidden=\"true\"\n className={cn(\"size-3\", pill.spin && \"animate-spin motion-reduce:animate-none\")}\n />\n {pill.label}\n </span>\n </button>\n <StoppedCallNotice message={stoppedCallFailure(status)} />\n {bodyOpen ? (\n <div className=\"flex flex-col gap-2 border-t border-border px-4 py-3 text-sm\">\n {taskId ? <div className=\"font-mono text-xs text-muted-foreground\">task {taskId}</div> : null}\n {worker ? (\n <>\n {worker.summary ? (\n <p className=\"whitespace-pre-wrap text-foreground\">{worker.summary}</p>\n ) : null}\n <dl className=\"grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {worker.branch ? (\n <>\n <dt>Branch</dt>\n <dd className=\"font-mono\">{worker.branch}</dd>\n </>\n ) : null}\n {worker.commit_sha ? (\n <>\n <dt>Commit</dt>\n <dd className=\"font-mono\">{worker.commit_sha.slice(0, 10)}</dd>\n </>\n ) : null}\n <dt>Changed files</dt>\n <dd>{worker.changed_files.length}</dd>\n {worker.tests.length > 0 ? (\n <>\n <dt>Tests</dt>\n <dd>\n {worker.tests.filter((test) => test.status === \"passed\").length}/\n {worker.tests.length} passed\n </dd>\n </>\n ) : null}\n {worker.cost_usd !== null ? (\n <>\n <dt>Cost</dt>\n <dd>${worker.cost_usd.toFixed(2)}</dd>\n </>\n ) : null}\n </dl>\n {worker.blockers.length > 0 ? (\n <ul className=\"list-disc pl-5 text-xs text-amber-600\">\n {worker.blockers.map((blocker) => (\n <li key={blocker}>{blocker}</li>\n ))}\n </ul>\n ) : null}\n {worker.questions.length > 0 ? (\n <ul className=\"list-disc pl-5 text-xs text-foreground\">\n {worker.questions.map((question) => (\n <li key={question}>{question}</li>\n ))}\n </ul>\n ) : null}\n </>\n ) : null}\n {check.error ? <p className=\"text-xs text-destructive\">{check.error}</p> : null}\n {!worker && expanded && check.raw ? (\n <pre className=\"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-muted p-2 text-xs text-muted-foreground\">\n {check.raw}\n </pre>\n ) : null}\n {!worker && expanded && toolName !== CHECK_ASYNC_TASK_TOOL_NAME && typeof result === \"string\" ? (\n <pre className=\"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-muted p-2 text-xs text-muted-foreground\">\n {result}\n </pre>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\n// ─── Agent session ───────────────────────────────────────────────────\n\nconst AGENT_VERB: Record<string, string> = {\n [START_ASYNC_TASK_TOOL_NAME]: \"Started background task\",\n [CHECK_ASYNC_TASK_TOOL_NAME]: \"Checked background task\",\n [UPDATE_ASYNC_TASK_TOOL_NAME]: \"Sent instructions to background task\",\n [CANCEL_ASYNC_TASK_TOOL_NAME]: \"Cancelled background task\",\n [ASK_AGENT_TOOL_NAME]: \"Asked agent\",\n};\n\nconst AGENT_REFUSED: Record<string, string> = {\n [START_ASYNC_TASK_TOOL_NAME]: \"Could not start background task\",\n [CHECK_ASYNC_TASK_TOOL_NAME]: \"Could not check background task\",\n [UPDATE_ASYNC_TASK_TOOL_NAME]: \"Could not send instructions to background task\",\n [CANCEL_ASYNC_TASK_TOOL_NAME]: \"Could not cancel background task\",\n [ASK_AGENT_TOOL_NAME]: \"Could not ask agent\",\n};\n\ntype BadgeTone = \"success\" | \"info\" | \"warning\" | \"destructive\" | \"muted\";\n\nconst BADGE_TONE: Record<BadgeTone, string> = {\n success: \"bg-emerald-500/10 text-emerald-600\",\n info: \"bg-primary/10 text-primary\",\n warning: \"bg-amber-500/10 text-amber-600\",\n destructive: \"bg-destructive/10 text-destructive\",\n muted: \"bg-muted text-muted-foreground\",\n};\n\ninterface AgentTaskBadge {\n tone: BadgeTone;\n label: string;\n /** The task is still moving: a spinner beside the label is truthful while the call runs. */\n active: boolean;\n}\n\n/** A task status in the verbs' vocabulary (`_UPSTREAM_STATUS` in agora's `background_tasks.py`). */\nconst AGENT_STATUS_BADGE: Record<string, AgentTaskBadge> = {\n running: { tone: \"info\", label: \"Running\", active: true },\n interrupted: { tone: \"warning\", label: \"Waiting for input\", active: true },\n success: { tone: \"success\", label: \"Finished\", active: false },\n error: { tone: \"destructive\", label: \"Failed\", active: false },\n cancelled: { tone: \"muted\", label: \"Cancelled\", active: false },\n};\n\n/** Where the call itself is, for a card whose answer has not arrived. */\nconst CALL_STATE_BADGE: Partial<Record<CardState, AgentTaskBadge>> = {\n waiting: { tone: \"warning\", label: \"Waiting for approval\", active: false },\n error: { tone: \"destructive\", label: \"Failed\", active: false },\n cancelled: { tone: \"muted\", label: \"Cancelled\", active: false },\n};\n\n/** A child session's asset: the answer names it, else its thread id does (`thread_…` → `asset_thread_…`). */\nfunction sessionAssetIdOf({\n payload,\n threadId,\n}: {\n payload: AgentTaskPayload | null;\n threadId: string | null;\n}): string | null {\n if (payload?.session_asset_id) return payload.session_asset_id;\n if (!threadId) return null;\n if (threadId.startsWith(\"asset_\")) return threadId;\n return threadId.startsWith(\"thread_\") ? `asset_${threadId}` : null;\n}\n\n/**\n * A background task that is a child agent session: what the verb did, the\n * task's title and status, the child's answer or error once it has one, and\n * a link to the child's own session. A refused request shows why.\n */\nfunction AgentTaskCard({\n toolName,\n args,\n result,\n status,\n isError,\n isPreliminary,\n defaultOpen = false,\n}: AsyncTaskCardProps) {\n const [expanded, setExpanded] = useState(defaultOpen);\n const chrome = useCardChrome({ tint: \"bg-muted/60 hover:bg-muted\" });\n const openAsset = useAssetPanelStore((s) => s.openAsset);\n const fields = argsRecord(args);\n const state = cardStateOf({ status, isError, isPreliminary, result });\n const payload = useMemo(() => parseAgentTaskPayload(result), [result]);\n const threadId = payload?.task_id ?? payload?.thread_id ?? stringArg(fields, \"task_id\") ?? null;\n const isAsk = toolName === ASK_AGENT_TOOL_NAME;\n const isStart = toolName === START_ASYNC_TASK_TOOL_NAME || isAsk;\n const askedAgent = isAsk ? (payload?.agent ?? stringArg(fields, \"agent\") ?? null) : null;\n const title =\n [askedAgent, payload?.title || (isStart ? stringArg(fields, \"title\") : null)]\n .filter(Boolean)\n .join(\" · \") || null;\n // The verbs refuse with JSON `success: false`, or with plain text when there\n // was no task to address; a refusal is never a task the verb acted on.\n const refusal =\n payload?.success === false\n ? (payload.message ?? payload.error ?? payload.code ?? \"The request was refused.\")\n : payload === null && typeof result === \"string\" && result.length > 0\n ? result\n : null;\n const taskStatus = refusal ? null : (payload?.status ?? null);\n const badge: AgentTaskBadge | null = refusal\n ? { tone: \"destructive\", label: \"Refused\", active: false }\n : taskStatus\n ? (AGENT_STATUS_BADGE[taskStatus] ?? { tone: \"muted\", label: taskStatus, active: false })\n : state === \"running\"\n ? AGENT_STATUS_BADGE.running\n : (CALL_STATE_BADGE[state] ?? null);\n const label = refusal\n ? (AGENT_REFUSED[toolName] ?? \"Background task request refused\")\n : (AGENT_VERB[toolName] ?? toolName);\n const body =\n refusal ??\n payload?.result ??\n payload?.error ??\n payload?.detail ??\n (toolName === UPDATE_ASYNC_TASK_TOOL_NAME ? stringArg(fields, \"message\") : undefined) ??\n (toolName === START_ASYNC_TASK_TOOL_NAME ? stringArg(fields, \"description\") : undefined) ??\n (isAsk ? stringArg(fields, \"message\") : undefined) ??\n payload?.message ??\n null;\n const sessionAssetId = refusal ? null : sessionAssetIdOf({ payload, threadId });\n\n return (\n <div\n data-slot=\"async-task-card\"\n data-kind=\"agent\"\n data-tool-outcome={cardOutcome({ state, failed: badge?.tone === \"destructive\" })}\n className={cn(chrome.root, \"text-sm\")}\n >\n <button\n type=\"button\"\n aria-expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n className={cn(\"flex w-full items-center gap-3 text-left\", chrome.header)}\n >\n <span className=\"min-w-0 flex-1 truncate text-foreground\">\n {label}\n {title ? <span className=\"text-muted-foreground\"> · {title}</span> : null}\n </span>\n {badge ? (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-1 whitespace-nowrap rounded-md px-1.5 py-0 text-[10px] font-medium leading-4\",\n BADGE_TONE[badge.tone],\n )}\n >\n {badge.active && state === \"running\" ? (\n <Loader2Icon aria-hidden=\"true\" className=\"size-3 animate-spin motion-reduce:animate-none\" />\n ) : null}\n {badge.label}\n </span>\n ) : null}\n <ChevronDownIcon\n aria-hidden=\"true\"\n className={cn(\n \"size-4 shrink-0 text-muted-foreground transition-transform\",\n expanded && \"rotate-180\",\n )}\n />\n </button>\n <StoppedCallNotice message={stoppedCallFailure(status)} />\n {expanded ? (\n <div className=\"flex flex-col gap-2 border-t border-border px-4 py-3\">\n {body ? (\n <p className=\"max-h-60 overflow-auto whitespace-pre-wrap text-xs text-muted-foreground\">\n {body}\n </p>\n ) : null}\n {sessionAssetId ? (\n <button\n type=\"button\"\n onClick={() => openAsset(sessionAssetId, title ? { name: title } : undefined)}\n className=\"self-start text-xs text-primary hover:underline\"\n >\n Open the task's session\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\n// ─── Any other background task ───────────────────────────────────────\n\n/** A task neither worker's answer names (or one with no answer yet): the verb, its subject, its answer. */\nfunction GenericAsyncTaskRow({\n toolName,\n args,\n result,\n status,\n isError,\n isPreliminary,\n defaultOpen = false,\n}: AsyncTaskCardProps) {\n const [expanded, setExpanded] = useState(defaultOpen);\n const chrome = useCardChrome({ tint: ASYNC_CARD_TINT });\n const fields = argsRecord(args);\n const state = cardStateOf({ status, isError, isPreliminary, result });\n const subject = stringArg(fields, \"agent_name\") ?? stringArg(fields, \"task_id\") ?? \"\";\n const text = typeof result === \"string\" ? result : result == null ? \"\" : JSON.stringify(result);\n return (\n <div\n data-slot=\"async-task-card\"\n data-kind=\"generic\"\n data-tool-outcome={cardOutcome({ state, failed: false })}\n className={cn(chrome.root, \"text-sm\")}\n >\n <button\n type=\"button\"\n aria-expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n className={cn(\"flex w-full items-center gap-3 text-left\", chrome.header)}\n >\n <span className=\"min-w-0 flex-1 truncate text-foreground\">\n {CODING_VERB[toolName] ?? toolName}\n {subject ? <span className=\"font-mono text-muted-foreground\"> · {subject}</span> : null}\n </span>\n {state === \"error\" ? <ErrorChip /> : null}\n <StatusGlyph state={state} succeeded={false} />\n </button>\n <StoppedCallNotice message={stoppedCallFailure(status)} />\n {expanded && text ? (\n <pre className=\"max-h-40 overflow-auto whitespace-pre-wrap border-t border-border px-4 py-3 text-xs text-muted-foreground\">\n {text}\n </pre>\n ) : null}\n </div>\n );\n}\n\n// ─── The tool UI ─────────────────────────────────────────────────────\n\n/** The card a background-task call gets (see {@link asyncTaskCardKind}). */\nexport function AsyncTaskCard(props: AsyncTaskCardProps) {\n switch (\n asyncTaskCardKind({ toolName: props.toolName, args: argsRecord(props.args), result: props.result })\n ) {\n case \"coding\":\n return <CodingTaskCard {...props} />;\n case \"agent\":\n return <AgentTaskCard {...props} />;\n case \"generic\":\n return <GenericAsyncTaskRow {...props} />;\n }\n}\n\nconst AsyncTaskToolUIImpl: ToolCallMessagePartComponent = (props) =>\n rendersAsGenericCard(props) ? <ToolFallback {...props} icon={BotIcon} /> : <AsyncTaskCard {...props} />;\n\n/**\n * The background-task tool UI, one component for every verb: register it\n * under `start_async_task`, `check_async_task`, `update_async_task`,\n * `cancel_async_task` and `ask_agent`. It reads which verb from `toolName`.\n */\nexport const AsyncTaskToolUI = memo(AsyncTaskToolUIImpl) as unknown as ToolCallMessagePartComponent;\nAsyncTaskToolUI.displayName = \"AsyncTaskToolUI\";\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,516 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const require$$0 = require("react");
5
+ const lucideReact = require("lucide-react");
6
+ const assetPanelStore = require("../assets/asset-panel-store.cjs");
7
+ const documentEditToolUis = require("./document-edit-tool-uis.cjs");
8
+ const primitives = require("./primitives.cjs");
9
+ const studioScreenshotToolUis = require("./studio-screenshot-tool-uis.cjs");
10
+ const toolFallback = require("./tool-fallback.cjs");
11
+ const toolResult = require("../agent-runtime/src/tool-result.cjs");
12
+ function recordOf(value) {
13
+ return toolResult.isRecord(value) ? value : {};
14
+ }
15
+ function positiveInteger(value) {
16
+ return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : null;
17
+ }
18
+ const OPEN_BUTTON_CLASS = "flex items-center gap-1.5 rounded-md border border-border/60 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground";
19
+ function parseJsonIfString(raw) {
20
+ if (typeof raw !== "string") return raw;
21
+ try {
22
+ return JSON.parse(raw);
23
+ } catch {
24
+ return raw;
25
+ }
26
+ }
27
+ function safeParseResult(raw) {
28
+ if (typeof raw === "string") return parseJsonIfString(raw);
29
+ if (toolResult.isRecord(raw) && "result" in raw) return parseJsonIfString(raw.result);
30
+ return raw;
31
+ }
32
+ function readSlideEditResult(result) {
33
+ const record = safeParseResult(result);
34
+ if (!toolResult.isRecord(record) || typeof record.success !== "boolean") return null;
35
+ return {
36
+ success: record.success,
37
+ error: toolResult.stringField(record, ["error"]),
38
+ message: toolResult.stringField(record, ["message"]),
39
+ slideNumber: positiveInteger(record.slide_number),
40
+ action: toolResult.stringField(record, ["action"])
41
+ };
42
+ }
43
+ function readSlideEditOutcome({
44
+ toolName,
45
+ action,
46
+ status,
47
+ result,
48
+ isError
49
+ }) {
50
+ const classification = toolResult.classifyToolResult({ status, result, isError });
51
+ if (classification.state === "running") return { kind: "running" };
52
+ if (classification.state === "requires-action") return { kind: "waiting" };
53
+ const blocked = documentEditToolUis.readBlockedToolError(result);
54
+ if (blocked) return { kind: "failed", ...documentEditToolUis.blockedToolErrorLabels({ toolName, blocked }) };
55
+ const edit = readSlideEditResult(result);
56
+ if (edit && !edit.success) {
57
+ return { kind: "failed", title: `Failed to ${action}`, detail: edit.error };
58
+ }
59
+ if (classification.state === "error") {
60
+ return { kind: "failed", title: `Failed to ${action}`, detail: classification.failure.message };
61
+ }
62
+ if (!edit) return { kind: "failed", title: `Couldn't confirm ${action}`, detail: null };
63
+ return { kind: "done", result: edit };
64
+ }
65
+ function slideEditStatus(outcome) {
66
+ switch (outcome.kind) {
67
+ case "running":
68
+ return "running";
69
+ case "waiting":
70
+ return "requires-action";
71
+ case "failed":
72
+ return "incomplete";
73
+ case "done":
74
+ return "complete";
75
+ }
76
+ }
77
+ function makeSlideEditToolUI(spec) {
78
+ const Impl = (props) => {
79
+ var _a;
80
+ const { toolName, args, result, status, isError } = props;
81
+ const openAsset = assetPanelStore.useAssetPanelStore((s) => s.openAsset);
82
+ if (documentEditToolUis.rendersAsGenericCard(props)) return /* @__PURE__ */ jsxRuntime.jsx(toolFallback.ToolFallback, { ...props, icon: spec.icon });
83
+ const typedArgs = recordOf(args);
84
+ const assetId = toolResult.stringField(typedArgs, ["asset_id", "deck_id"]);
85
+ const outcome = readSlideEditOutcome({
86
+ toolName,
87
+ action: spec.action,
88
+ status,
89
+ result,
90
+ isError
91
+ });
92
+ const slideToOpen = outcome.kind === "done" && assetId && spec.opensSlide(outcome.result) ? outcome.result.slideNumber : null;
93
+ const title = outcome.kind === "running" ? spec.loading(typedArgs) : outcome.kind === "waiting" ? documentEditToolUis.waitingTitle(toolName) : outcome.kind === "failed" ? outcome.title : outcome.result.message ?? `Finished: ${spec.action}`;
94
+ const details = outcome.kind === "failed" ? null : ((_a = spec.details) == null ? void 0 : _a.call(spec, typedArgs)) ?? null;
95
+ return /* @__PURE__ */ jsxRuntime.jsxs(
96
+ primitives.ToolCard,
97
+ {
98
+ icon: spec.icon,
99
+ status: slideEditStatus(outcome),
100
+ title,
101
+ toolName,
102
+ error: outcome.kind === "failed" ? outcome.detail : null,
103
+ args: typedArgs,
104
+ result,
105
+ children: [
106
+ details,
107
+ assetId && slideToOpen ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
108
+ "button",
109
+ {
110
+ type: "button",
111
+ onClick: () => openAsset(assetId, { type: "presentation", slideNumber: slideToOpen }),
112
+ className: OPEN_BUTTON_CLASS,
113
+ children: [
114
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLinkIcon, { className: "size-3" }),
115
+ "Open slide ",
116
+ slideToOpen
117
+ ]
118
+ }
119
+ ) }) : null
120
+ ]
121
+ }
122
+ );
123
+ };
124
+ const SlideEdit = require$$0.memo(Impl);
125
+ SlideEdit.displayName = spec.displayName;
126
+ return SlideEdit;
127
+ }
128
+ function flattenText(text, max) {
129
+ const flattened = text.replace(/\s+/g, " ").trim();
130
+ return flattened.length > max ? `${flattened.slice(0, max)}…` : flattened;
131
+ }
132
+ function shapeTextEdits(args) {
133
+ const shapes = parseJsonIfString(args.shapes);
134
+ if (!Array.isArray(shapes)) return [];
135
+ return shapes.flatMap((shape) => {
136
+ if (!toolResult.isRecord(shape)) return [];
137
+ return [{ shapeId: toolResult.stringField(shape, ["shape_id"]) ?? "", text: typeof shape.text === "string" ? shape.text : "" }];
138
+ });
139
+ }
140
+ function ShapeEdits({ args }) {
141
+ const edits = shapeTextEdits(args);
142
+ if (edits.length === 0) return null;
143
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1 border-t border-border/40 px-4 py-2.5", children: edits.map((edit, index) => /* @__PURE__ */ jsxRuntime.jsxs(
144
+ "div",
145
+ {
146
+ className: "flex items-baseline gap-2 rounded bg-muted p-2 text-[11px]",
147
+ children: [
148
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 font-mono text-muted-foreground", children: edit.shapeId }),
149
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 text-foreground", children: flattenText(edit.text, 80) })
150
+ ]
151
+ },
152
+ edit.shapeId || index
153
+ )) });
154
+ }
155
+ const NOTES_PREVIEW_CHARS = 600;
156
+ function SlideNotes({ args }) {
157
+ const notes = typeof args.notes === "string" ? args.notes : "";
158
+ if (!notes) return null;
159
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 px-4 py-2.5", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "whitespace-pre-wrap rounded bg-muted p-2 text-[11px] text-foreground", children: notes.length > NOTES_PREVIEW_CHARS ? `${notes.slice(0, NOTES_PREVIEW_CHARS)}…` : notes }) });
160
+ }
161
+ const UpdateSlideShapesToolUI = makeSlideEditToolUI({
162
+ displayName: "UpdateSlideShapesToolUI",
163
+ icon: lucideReact.PresentationIcon,
164
+ action: "update slide text",
165
+ loading: (args) => {
166
+ const count = shapeTextEdits(args).length;
167
+ return count > 0 ? `Updating ${count} shape${count === 1 ? "" : "s"} on the slide...` : "Updating slide text...";
168
+ },
169
+ opensSlide: () => true,
170
+ details: (args) => /* @__PURE__ */ jsxRuntime.jsx(ShapeEdits, { args })
171
+ });
172
+ const SetSlideNotesToolUI = makeSlideEditToolUI({
173
+ displayName: "SetSlideNotesToolUI",
174
+ icon: lucideReact.PresentationIcon,
175
+ action: "update speaker notes",
176
+ loading: (args) => {
177
+ const slideNumber = positiveInteger(args.slide_number);
178
+ return slideNumber ? `Updating speaker notes on slide ${slideNumber}...` : "Updating speaker notes...";
179
+ },
180
+ opensSlide: () => true,
181
+ details: (args) => /* @__PURE__ */ jsxRuntime.jsx(SlideNotes, { args })
182
+ });
183
+ const ManageSlidesToolUI = makeSlideEditToolUI({
184
+ displayName: "ManageSlidesToolUI",
185
+ icon: lucideReact.PresentationIcon,
186
+ action: "update slides",
187
+ loading: (args) => {
188
+ const slideNumber = positiveInteger(args.slide_number);
189
+ const slideSuffix = slideNumber ? ` ${slideNumber}` : "";
190
+ switch (args.action) {
191
+ case "add":
192
+ return "Adding a slide...";
193
+ case "duplicate":
194
+ return `Duplicating slide${slideSuffix}...`;
195
+ case "delete":
196
+ return `Deleting slide${slideSuffix}...`;
197
+ case "move":
198
+ return `Moving slide${slideSuffix}...`;
199
+ case "reorder":
200
+ return "Reordering slides...";
201
+ case "set_layout":
202
+ return "Changing slide layout...";
203
+ default:
204
+ return "Updating slides...";
205
+ }
206
+ },
207
+ opensSlide: (result) => result.action !== "delete"
208
+ });
209
+ function parseResultString(result) {
210
+ try {
211
+ const parsed = JSON.parse(result);
212
+ return typeof parsed === "string" ? [] : [parsed];
213
+ } catch {
214
+ }
215
+ return result.split("\n").flatMap((line) => {
216
+ const trimmed = line.trim();
217
+ if (!trimmed) return [];
218
+ try {
219
+ const parsed = JSON.parse(trimmed);
220
+ return typeof parsed === "string" ? [] : [parsed];
221
+ } catch {
222
+ return [];
223
+ }
224
+ });
225
+ }
226
+ function imageSourceOf(value) {
227
+ return toolResult.isRecord(value) && value.type === "image" && toolResult.isRecord(value.source) ? value.source : null;
228
+ }
229
+ function extractPresignedUrl(result) {
230
+ if (!result) return void 0;
231
+ if (typeof result === "string") return extractPresignedUrl(parseResultString(result));
232
+ if (Array.isArray(result)) {
233
+ for (const item of result) {
234
+ const url = extractPresignedUrl(item);
235
+ if (url) return url;
236
+ }
237
+ return void 0;
238
+ }
239
+ const source = imageSourceOf(result);
240
+ if (source && typeof source.presigned_url === "string") return source.presigned_url;
241
+ return toolResult.isRecord(result) && typeof result.presigned_url === "string" ? result.presigned_url : void 0;
242
+ }
243
+ function extractScreenshotS3Key(result) {
244
+ if (!result) return void 0;
245
+ if (typeof result === "string") return extractScreenshotS3Key(parseResultString(result));
246
+ if (Array.isArray(result)) {
247
+ for (const item of result) {
248
+ const key = extractScreenshotS3Key(item);
249
+ if (key) return key;
250
+ }
251
+ return void 0;
252
+ }
253
+ const source = imageSourceOf(result);
254
+ return (source == null ? void 0 : source.type) === "s3_key" && typeof source.data === "string" ? source.data : void 0;
255
+ }
256
+ function isTextBlock(value) {
257
+ return toolResult.isRecord(value) && value.type === "text" && typeof value.text === "string";
258
+ }
259
+ function findStructuredFailure(...sources) {
260
+ const stack = sources.map((source) => safeParseResult(source));
261
+ let found = false;
262
+ let detail;
263
+ while (stack.length > 0) {
264
+ const item = stack.pop();
265
+ if (!item) continue;
266
+ if (Array.isArray(item)) {
267
+ stack.push(...item);
268
+ continue;
269
+ }
270
+ if (isTextBlock(item)) {
271
+ const inner = parseJsonIfString(item.text);
272
+ if (inner !== item.text) stack.push(inner);
273
+ continue;
274
+ }
275
+ if (!toolResult.isRecord(item)) continue;
276
+ const explicitError = typeof item.error === "string" && item.error.length > 0 ? item.error : void 0;
277
+ if (item.success === false || explicitError) {
278
+ found = true;
279
+ detail ?? (detail = explicitError ?? (typeof item.message === "string" && item.message.length > 0 ? item.message : void 0));
280
+ }
281
+ for (const value of Object.values(item)) {
282
+ if (value && typeof value === "object") stack.push(value);
283
+ }
284
+ }
285
+ return { found, detail };
286
+ }
287
+ function extractErrorText(result) {
288
+ const parsed = safeParseResult(result);
289
+ if (typeof parsed === "string" && parsed.trim()) return parsed.trim();
290
+ if (Array.isArray(parsed)) {
291
+ for (const item of parsed) {
292
+ if (isTextBlock(item) && item.text.trim()) return item.text.trim();
293
+ }
294
+ }
295
+ return void 0;
296
+ }
297
+ function resolveSlideScreenshotOutcome({
298
+ result,
299
+ artifact,
300
+ statusType,
301
+ isError
302
+ }) {
303
+ const parsedResult = safeParseResult(result);
304
+ const presignedUrl = extractPresignedUrl(parsedResult) ?? extractPresignedUrl(artifact);
305
+ const s3Key = extractScreenshotS3Key(parsedResult) ?? extractScreenshotS3Key(artifact);
306
+ const failure = findStructuredFailure(result, artifact);
307
+ if (isError) return { kind: "failed", detail: failure.detail ?? extractErrorText(result) };
308
+ if (failure.found) return { kind: "failed", detail: failure.detail };
309
+ if (presignedUrl || s3Key) return { kind: "captured", presignedUrl, s3Key };
310
+ if (statusType === "complete") return { kind: "preview-unavailable" };
311
+ return { kind: "pending" };
312
+ }
313
+ function withoutPerSlideFailures(value) {
314
+ const parsed = safeParseResult(value);
315
+ if (Array.isArray(parsed)) return parsed.map(withoutPerSlideFailures);
316
+ if (!toolResult.isRecord(parsed)) return parsed;
317
+ return Object.fromEntries(
318
+ Object.entries(parsed).filter(([key]) => key !== "failed_slides").map(([key, inner]) => [
319
+ key,
320
+ inner && typeof inner === "object" ? withoutPerSlideFailures(inner) : inner
321
+ ])
322
+ );
323
+ }
324
+ function toSlideNumbers(value) {
325
+ if (!Array.isArray(value)) return [];
326
+ return value.filter((n) => typeof n === "number" && Number.isInteger(n) && n > 0);
327
+ }
328
+ function toPositiveNumber(value) {
329
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
330
+ }
331
+ function toFailures(value) {
332
+ if (!Array.isArray(value)) return [];
333
+ return value.flatMap(
334
+ (item) => toolResult.isRecord(item) && typeof item.slide_number === "number" && typeof item.error === "string" ? [{ slideNumber: item.slide_number, error: item.error }] : []
335
+ );
336
+ }
337
+ function toFidelityNotes(value) {
338
+ if (!toolResult.isRecord(value)) return [];
339
+ return Object.entries(value).flatMap(([key, notes]) => {
340
+ const slideNumber = Number(key);
341
+ if (!Number.isInteger(slideNumber) || slideNumber <= 0 || !Array.isArray(notes)) return [];
342
+ const strings = notes.filter(
343
+ (note) => typeof note === "string" && note.length > 0
344
+ );
345
+ return strings.length > 0 ? [{ slideNumber, notes: strings }] : [];
346
+ }).sort((a, b) => a.slideNumber - b.slideNumber);
347
+ }
348
+ function findContactSheetRecord(artifact) {
349
+ const parsed = safeParseResult(artifact);
350
+ const candidates = Array.isArray(parsed) ? parsed : [parsed];
351
+ return candidates.find(
352
+ (item) => toolResult.isRecord(item) && ("captured_slide_numbers" in item || "failed_slides" in item)
353
+ );
354
+ }
355
+ function resolveSlideContactSheetDetails({
356
+ artifact,
357
+ requestedSlideNumbers
358
+ }) {
359
+ const record = findContactSheetRecord(artifact);
360
+ const failedSlides = toFailures(record == null ? void 0 : record.failed_slides);
361
+ const captured = toSlideNumbers(record == null ? void 0 : record.captured_slide_numbers);
362
+ const failedSet = new Set(failedSlides.map((failure) => failure.slideNumber));
363
+ const capturedSlideNumbers = captured.length > 0 ? captured : [...new Set(toSlideNumbers(safeParseResult(requestedSlideNumbers)))].filter((n) => !failedSet.has(n)).sort((a, b) => a - b);
364
+ return {
365
+ capturedSlideNumbers,
366
+ failedSlides,
367
+ fidelityNotes: toFidelityNotes(record == null ? void 0 : record.fidelity_notes_by_slide),
368
+ width: toPositiveNumber(record == null ? void 0 : record.width),
369
+ height: toPositiveNumber(record == null ? void 0 : record.height)
370
+ };
371
+ }
372
+ function formatSlideList(slideNumbers) {
373
+ if (slideNumbers.length === 0) return "slides";
374
+ const sorted = [...new Set(slideNumbers)].sort((a, b) => a - b);
375
+ const parts = [];
376
+ let start = sorted[0] ?? 0;
377
+ let prev = start;
378
+ for (const n of [...sorted.slice(1), Number.NaN]) {
379
+ if (n === prev + 1) {
380
+ prev = n;
381
+ continue;
382
+ }
383
+ parts.push(
384
+ prev - start >= 2 ? `${start}–${prev}` : start === prev ? `${start}` : `${start}, ${prev}`
385
+ );
386
+ start = n;
387
+ prev = n;
388
+ }
389
+ return `${sorted.length === 1 ? "slide" : "slides"} ${parts.join(", ")}`;
390
+ }
391
+ function ContactSheetImage({
392
+ initialPresignedUrl,
393
+ s3Key,
394
+ alt,
395
+ aspectRatio
396
+ }) {
397
+ const presignedUrl = studioScreenshotToolUis.useScreenshotUrl({ s3Key: s3Key ?? null, fallbackUrl: initialPresignedUrl ?? null });
398
+ const [failedUrl, setFailedUrl] = require$$0.useState(null);
399
+ const unavailable = !presignedUrl || failedUrl === presignedUrl;
400
+ return /* @__PURE__ */ jsxRuntime.jsx(
401
+ "div",
402
+ {
403
+ className: "flex w-full items-center justify-center overflow-hidden rounded-lg border border-border/50 bg-muted/20",
404
+ style: aspectRatio ? { aspectRatio } : void 0,
405
+ children: unavailable ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-4 py-6 text-center text-[12px] text-muted-foreground", children: "Screenshot preview is no longer available." }) : (
406
+ // biome-ignore lint/a11y/noNoninteractiveElementInteractions: a failed load, not an interaction; the placeholder replaces the image
407
+ /* @__PURE__ */ jsxRuntime.jsx(
408
+ "img",
409
+ {
410
+ src: presignedUrl ?? void 0,
411
+ alt,
412
+ loading: "lazy",
413
+ className: "h-full w-full object-contain",
414
+ onError: () => setFailedUrl(presignedUrl)
415
+ }
416
+ )
417
+ )
418
+ }
419
+ );
420
+ }
421
+ const CaptureSlideScreenshotsToolUIImpl = (props) => {
422
+ const { toolName, args, result, artifact, status, isError } = props;
423
+ const openAsset = assetPanelStore.useAssetPanelStore((s) => s.openAsset);
424
+ if (documentEditToolUis.rendersAsGenericCard(props)) return /* @__PURE__ */ jsxRuntime.jsx(toolFallback.ToolFallback, { ...props, icon: lucideReact.CameraIcon });
425
+ const typedArgs = recordOf(args);
426
+ const assetId = toolResult.stringField(typedArgs, ["asset_id", "assetId"]);
427
+ const statusType = status == null ? void 0 : status.type;
428
+ const outcome = resolveSlideScreenshotOutcome({
429
+ result: withoutPerSlideFailures(result),
430
+ artifact: withoutPerSlideFailures(artifact),
431
+ statusType,
432
+ isError
433
+ });
434
+ const details = resolveSlideContactSheetDetails({
435
+ artifact,
436
+ requestedSlideNumbers: typedArgs.slide_numbers
437
+ });
438
+ const classification = toolResult.classifyToolResult({ status, result, isError });
439
+ const failureDetail = outcome.kind === "failed" ? outcome.detail ?? "The slides could not be captured." : outcome.kind === "pending" && classification.state === "error" ? classification.failure.message : null;
440
+ const slideList = formatSlideList(details.capturedSlideNumbers);
441
+ const hasSheet = outcome.kind === "captured";
442
+ const hasFailed = failureDetail !== null;
443
+ const previewUnavailable = outcome.kind === "preview-unavailable";
444
+ const isWaiting = statusType === "requires-action" && !hasFailed;
445
+ const firstSlide = details.capturedSlideNumbers[0];
446
+ const openSlide = (slideNumber) => {
447
+ if (assetId) openAsset(assetId, { type: "presentation", slideNumber });
448
+ };
449
+ const cardStatus = hasFailed ? "incomplete" : isWaiting ? "requires-action" : hasSheet || previewUnavailable ? "complete" : "running";
450
+ const title = hasFailed ? `Failed to capture ${slideList}` : isWaiting ? documentEditToolUis.waitingTitle(toolName) : hasSheet || previewUnavailable ? `Captured ${slideList}` : `Capturing ${slideList}...`;
451
+ return /* @__PURE__ */ jsxRuntime.jsxs(
452
+ primitives.ToolCard,
453
+ {
454
+ icon: lucideReact.CameraIcon,
455
+ status: cardStatus,
456
+ title,
457
+ toolName,
458
+ error: failureDetail,
459
+ args: typedArgs,
460
+ result,
461
+ children: [
462
+ hasSheet || previewUnavailable ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 border-t border-border/40 p-3", children: [
463
+ hasSheet ? /* @__PURE__ */ jsxRuntime.jsx(
464
+ ContactSheetImage,
465
+ {
466
+ initialPresignedUrl: outcome.presignedUrl,
467
+ s3Key: outcome.s3Key,
468
+ alt: `Contact sheet of ${slideList}`,
469
+ aspectRatio: details.width && details.height ? details.width / details.height : void 0
470
+ }
471
+ ) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-muted-foreground", children: "The slides were captured, but the preview is not available in this view." }),
472
+ assetId && details.capturedSlideNumbers.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: details.capturedSlideNumbers.map((slideNumber) => /* @__PURE__ */ jsxRuntime.jsxs(
473
+ "button",
474
+ {
475
+ type: "button",
476
+ title: `Open slide ${slideNumber}`,
477
+ onClick: () => openSlide(slideNumber),
478
+ className: "rounded border border-border/60 px-2 py-0.5 text-[11px] text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground",
479
+ children: [
480
+ "Slide ",
481
+ slideNumber
482
+ ]
483
+ },
484
+ slideNumber
485
+ )) }) : null,
486
+ details.failedSlides.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5 text-[11px] text-amber-600", children: details.failedSlides.map((failure) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: failure.error }, failure.slideNumber)) }) : null,
487
+ hasSheet && details.fidelityNotes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5 text-[11px] text-muted-foreground", children: details.fidelityNotes.map(({ slideNumber, notes }) => /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
488
+ "Slide ",
489
+ slideNumber,
490
+ " may differ from the exported .pptx: ",
491
+ notes.join(" ")
492
+ ] }, slideNumber)) }) : null
493
+ ] }) : null,
494
+ assetId && (hasSheet || previewUnavailable) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: () => openSlide(firstSlide ?? 1), className: OPEN_BUTTON_CLASS, children: [
495
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLinkIcon, { className: "size-3" }),
496
+ "Open presentation"
497
+ ] }) }) : null
498
+ ]
499
+ }
500
+ );
501
+ };
502
+ const CaptureSlideScreenshotsToolUIScoped = (props) => /* @__PURE__ */ jsxRuntime.jsx(studioScreenshotToolUis.ScreenshotQueryScope, { children: /* @__PURE__ */ jsxRuntime.jsx(CaptureSlideScreenshotsToolUIImpl, { ...props }) });
503
+ const CaptureSlideScreenshotsToolUI = require$$0.memo(
504
+ CaptureSlideScreenshotsToolUIScoped
505
+ );
506
+ CaptureSlideScreenshotsToolUI.displayName = "CaptureSlideScreenshotsToolUI";
507
+ exports.CaptureSlideScreenshotsToolUI = CaptureSlideScreenshotsToolUI;
508
+ exports.ManageSlidesToolUI = ManageSlidesToolUI;
509
+ exports.SetSlideNotesToolUI = SetSlideNotesToolUI;
510
+ exports.UpdateSlideShapesToolUI = UpdateSlideShapesToolUI;
511
+ exports.formatSlideList = formatSlideList;
512
+ exports.readSlideEditResult = readSlideEditResult;
513
+ exports.resolveSlideContactSheetDetails = resolveSlideContactSheetDetails;
514
+ exports.resolveSlideScreenshotOutcome = resolveSlideScreenshotOutcome;
515
+ exports.withoutPerSlideFailures = withoutPerSlideFailures;
516
+ //# sourceMappingURL=presentation-edit-tool-uis.cjs.map