@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,449 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { readQuestionnaireContext, interruptDraftId, QuestionType, questionnaireResume } from "../../agent-runtime/src/typed-interrupt-kinds.js";
3
+ import { MessageSquareIcon, ArrowLeftIcon, ArrowRightIcon, Loader2Icon, CloudIcon, AlertCircleIcon, XIcon, SendIcon, HelpCircleIcon, CheckIcon } from "lucide-react";
4
+ import { useMemo, useId, useState, useRef, useEffect, useCallback } from "react";
5
+ import { mentionsToPlainText } from "../../chat-ui/mentions/mention-chip.js";
6
+ import { ChatMessageBody } from "../../chat-ui/rich-text/chat-message-body.js";
7
+ import { Button } from "../../ui/button.js";
8
+ import { InterruptCardShell, HoverHint, WaitForStreamingHint, TimedInterruptCountdown } from "./interrupt-card-shell.js";
9
+ import { useTypedInterruptConversation } from "./typed-interrupt-graphql.js";
10
+ import { useInterruptDraft, useInterruptDraftSave } from "./use-interrupt-draft.js";
11
+ import { cn } from "cnfast";
12
+ const EMPTY_ANSWER = { value: "", comment: "", selectedOptions: [] };
13
+ function emptyAnswers(count) {
14
+ return Array.from({ length: count }, () => ({ value: "", comment: "", selectedOptions: [] }));
15
+ }
16
+ function questionSignature(questions) {
17
+ return questions.map((question) => [question.text, question.type, ...question.options].join("")).join("");
18
+ }
19
+ function isQuestionAnswered(answer, type) {
20
+ if (answer.comment.trim().length > 0) return true;
21
+ switch (type) {
22
+ case QuestionType.YES_NO:
23
+ return answer.value === "yes" || answer.value === "no";
24
+ case QuestionType.MULTI_CHOICE:
25
+ return answer.selectedOptions.length > 0;
26
+ default:
27
+ return answer.value.trim().length > 0;
28
+ }
29
+ }
30
+ function isAnswerState(value) {
31
+ if (typeof value !== "object" || value === null) return false;
32
+ const candidate = value;
33
+ return typeof candidate.value === "string" && typeof candidate.comment === "string" && Array.isArray(candidate.selectedOptions) && candidate.selectedOptions.every((option) => typeof option === "string");
34
+ }
35
+ function readDraft(raw, count) {
36
+ const answers = Array.isArray(raw) ? raw : typeof raw === "object" && raw !== null && Array.isArray(raw.answers) ? raw.answers : null;
37
+ if (!answers || answers.length !== count || !answers.every(isAnswerState)) return null;
38
+ const index = typeof raw === "object" && raw !== null && !Array.isArray(raw) ? raw.currentIndex : void 0;
39
+ return {
40
+ answers: answers.map((answer) => ({ ...answer, selectedOptions: [...answer.selectedOptions] })),
41
+ ...typeof index === "number" && index >= 0 && index < count ? { index } : {}
42
+ };
43
+ }
44
+ function formatAnswers(questions, answers) {
45
+ return questions.map((question, index) => {
46
+ const answer = answers[index] ?? EMPTY_ANSWER;
47
+ const comment = answer.comment.trim() || null;
48
+ if (!isQuestionAnswered(answer, question.type)) return { value: "", comment };
49
+ const value = question.type === QuestionType.MULTI_CHOICE ? answer.selectedOptions.join(", ") : answer.value;
50
+ return { value, comment };
51
+ });
52
+ }
53
+ function RecommendedBadge() {
54
+ return /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full border border-current px-1.5 font-medium text-[10px] uppercase tracking-wide opacity-80", children: "Recommended" });
55
+ }
56
+ const QUESTION_HINTS = {
57
+ [QuestionType.YES_NO]: "Select Yes or No",
58
+ [QuestionType.SINGLE_CHOICE]: "Select one option",
59
+ [QuestionType.MULTI_CHOICE]: "Select one or more options"
60
+ };
61
+ const GROUP_CLASS = "m-0 flex min-w-0 border-0 p-0";
62
+ const TEXTAREA_CLASS = "min-h-16 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
63
+ function QuestionnaireCard({ interrupt, resume, engine }) {
64
+ const { title, questions } = useMemo(() => readQuestionnaireContext(interrupt), [interrupt]);
65
+ const heading = (title == null ? void 0 : title.trim()) || "Questions from AI";
66
+ const total = questions.length;
67
+ const {
68
+ isLoading,
69
+ hasTimeout,
70
+ timeoutSeconds,
71
+ timeoutRemaining,
72
+ isTimedOut,
73
+ isTimeoutCancelled,
74
+ cancelTimeout,
75
+ displayMessage,
76
+ isConversationStreaming
77
+ } = engine;
78
+ const actionsDisabled = isLoading || isConversationStreaming;
79
+ const labelId = useId();
80
+ const [currentIndex, setCurrentIndex] = useState(0);
81
+ const [answers, setAnswers] = useState(() => emptyAnswers(total));
82
+ const [showComment, setShowComment] = useState(() => new Array(total).fill(false));
83
+ const [confirmingPartial, setConfirmingPartial] = useState(false);
84
+ const [draftHydrated, setDraftHydrated] = useState(false);
85
+ const touchedRef = useRef(false);
86
+ const signature = useMemo(() => questionSignature(questions), [questions]);
87
+ const instanceKey = engine.requestId ?? null;
88
+ useEffect(() => {
89
+ setCurrentIndex(0);
90
+ setAnswers(emptyAnswers(total));
91
+ setShowComment(new Array(total).fill(false));
92
+ setConfirmingPartial(false);
93
+ setDraftHydrated(false);
94
+ touchedRef.current = false;
95
+ }, [instanceKey, signature, total]);
96
+ const conversation = useTypedInterruptConversation();
97
+ const draftId = interruptDraftId(interrupt);
98
+ const { draft, isLoading: draftLoading } = useInterruptDraft({ conversation, interruptId: draftId });
99
+ useEffect(() => {
100
+ if (draftHydrated || draftLoading) return;
101
+ if (!touchedRef.current) {
102
+ const restored = readDraft(draft, total);
103
+ if (restored) {
104
+ setAnswers(restored.answers);
105
+ if (restored.index !== void 0) setCurrentIndex(restored.index);
106
+ }
107
+ }
108
+ setDraftHydrated(true);
109
+ }, [draftHydrated, draftLoading, draft, total]);
110
+ const draftPayload = useMemo(() => ({ answers, currentIndex }), [answers, currentIndex]);
111
+ const { flush: flushDraft, status: draftStatus } = useInterruptDraftSave({
112
+ conversation,
113
+ interruptId: draftId,
114
+ payload: draftPayload,
115
+ enabled: draftHydrated && touchedRef.current
116
+ });
117
+ const question = questions[currentIndex] ?? {
118
+ text: "",
119
+ type: QuestionType.TEXT,
120
+ options: [],
121
+ recommended: null
122
+ };
123
+ const answer = answers[currentIndex] ?? EMPTY_ANSWER;
124
+ const isFirst = currentIndex === 0;
125
+ const isLast = currentIndex === total - 1;
126
+ const answeredCount = answers.filter((each, index) => {
127
+ const asked = questions[index];
128
+ return asked ? isQuestionAnswered(each, asked.type) : false;
129
+ }).length;
130
+ const allAnswered = total > 0 && answeredCount === total;
131
+ const updateAnswer = useCallback(
132
+ (update) => {
133
+ touchedRef.current = true;
134
+ setConfirmingPartial(false);
135
+ setAnswers((previous) => {
136
+ const next = [...previous];
137
+ next[currentIndex] = update(next[currentIndex] ?? EMPTY_ANSWER);
138
+ return next;
139
+ });
140
+ },
141
+ [currentIndex]
142
+ );
143
+ const goTo = (index) => {
144
+ flushDraft();
145
+ setCurrentIndex(index);
146
+ };
147
+ const submit = () => resume(questionnaireResume(formatAnswers(questions, answers)));
148
+ const onSubmit = () => {
149
+ if (!allAnswered) {
150
+ setConfirmingPartial(true);
151
+ return;
152
+ }
153
+ submit();
154
+ };
155
+ const unansweredCount = total - answeredCount;
156
+ const choiceClass = (selected) => cn(
157
+ "w-full rounded-md border px-3 py-2 text-left text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50",
158
+ selected ? "border-blue-600 bg-blue-50 text-blue-700" : "border-border hover:border-muted-foreground/40 hover:bg-muted"
159
+ );
160
+ const renderAnswerInput = () => {
161
+ switch (question.type) {
162
+ case QuestionType.YES_NO:
163
+ return /* @__PURE__ */ jsx("fieldset", { className: cn(GROUP_CLASS, "flex-row gap-3"), "aria-labelledby": labelId, children: ["yes", "no"].map((choice) => {
164
+ const selected = answer.value === choice;
165
+ return /* @__PURE__ */ jsx(
166
+ "button",
167
+ {
168
+ type: "button",
169
+ onClick: () => updateAnswer((current) => ({ ...current, value: choice })),
170
+ disabled: isLoading,
171
+ "aria-pressed": selected,
172
+ className: cn(
173
+ "flex-1 rounded-md border-2 px-4 py-2.5 font-medium text-sm transition-all disabled:cursor-not-allowed disabled:opacity-50",
174
+ selected ? "border-blue-600 bg-blue-600 text-white shadow-md" : "border-border bg-background text-foreground hover:bg-muted"
175
+ ),
176
+ children: /* @__PURE__ */ jsxs("span", { className: "flex items-center justify-center gap-2", children: [
177
+ selected ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) : null,
178
+ /* @__PURE__ */ jsx("span", { children: choice === "yes" ? "Yes" : "No" }),
179
+ question.recommended === choice ? /* @__PURE__ */ jsx(RecommendedBadge, {}) : null
180
+ ] })
181
+ },
182
+ choice
183
+ );
184
+ }) });
185
+ case QuestionType.SINGLE_CHOICE:
186
+ return /* @__PURE__ */ jsx("fieldset", { className: cn(GROUP_CLASS, "flex-col gap-2"), "aria-labelledby": labelId, children: question.options.map((option, index) => {
187
+ const selected = answer.value === option;
188
+ return /* @__PURE__ */ jsx(
189
+ "button",
190
+ {
191
+ type: "button",
192
+ onClick: () => updateAnswer((current) => ({ ...current, value: option })),
193
+ disabled: isLoading,
194
+ "aria-pressed": selected,
195
+ className: choiceClass(selected),
196
+ children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
197
+ /* @__PURE__ */ jsx(
198
+ "span",
199
+ {
200
+ "aria-hidden": true,
201
+ className: cn(
202
+ "flex size-4 shrink-0 items-center justify-center rounded-full border-2",
203
+ selected ? "border-blue-600 bg-blue-600" : "border-muted-foreground/40"
204
+ ),
205
+ children: selected ? /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full bg-white" }) : null
206
+ }
207
+ ),
208
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 break-words", children: mentionsToPlainText(option) }),
209
+ question.recommended === option ? /* @__PURE__ */ jsx(RecommendedBadge, {}) : null
210
+ ] })
211
+ },
212
+ `${index}-${option}`
213
+ );
214
+ }) });
215
+ case QuestionType.MULTI_CHOICE:
216
+ return /* @__PURE__ */ jsx("fieldset", { className: cn(GROUP_CLASS, "flex-col gap-2"), "aria-labelledby": labelId, children: question.options.map((option, index) => {
217
+ const selected = answer.selectedOptions.includes(option);
218
+ return /* @__PURE__ */ jsx(
219
+ "button",
220
+ {
221
+ type: "button",
222
+ onClick: () => updateAnswer((current) => ({
223
+ ...current,
224
+ selectedOptions: current.selectedOptions.includes(option) ? current.selectedOptions.filter((each) => each !== option) : [...current.selectedOptions, option]
225
+ })),
226
+ disabled: isLoading,
227
+ "aria-pressed": selected,
228
+ className: choiceClass(selected),
229
+ children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
230
+ /* @__PURE__ */ jsx(
231
+ "span",
232
+ {
233
+ "aria-hidden": true,
234
+ className: cn(
235
+ "flex size-4 shrink-0 items-center justify-center rounded border",
236
+ selected ? "border-blue-600 bg-blue-600" : "border-muted-foreground/40"
237
+ ),
238
+ children: selected ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-3 text-white" }) : null
239
+ }
240
+ ),
241
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 break-words", children: mentionsToPlainText(option) })
242
+ ] })
243
+ },
244
+ `${index}-${option}`
245
+ );
246
+ }) });
247
+ default:
248
+ return /* @__PURE__ */ jsx(
249
+ "textarea",
250
+ {
251
+ "aria-labelledby": labelId,
252
+ value: answer.value,
253
+ onChange: (event) => {
254
+ const value = event.target.value;
255
+ updateAnswer((current) => ({ ...current, value }));
256
+ },
257
+ placeholder: "Type your answer here...",
258
+ readOnly: actionsDisabled,
259
+ rows: 3,
260
+ className: TEXTAREA_CLASS
261
+ }
262
+ );
263
+ }
264
+ };
265
+ const loadingDraft = draftLoading && !draftHydrated;
266
+ const showDraftIndicator = loadingDraft || answeredCount > 0 && draftStatus !== "idle";
267
+ const draftHint = loadingDraft ? "Checking for a previously saved draft..." : draftStatus === "error" ? "Couldn't save draft" : draftStatus === "saving" ? "Saving draft..." : "Draft saved — your answers will be restored if you leave and come back within 24 hours.";
268
+ return /* @__PURE__ */ jsx(
269
+ InterruptCardShell,
270
+ {
271
+ title: heading,
272
+ description: displayMessage,
273
+ icon: /* @__PURE__ */ jsx(HelpCircleIcon, {}),
274
+ hasTimeout,
275
+ onInteraction: cancelTimeout,
276
+ content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", "data-testid": "typed-interrupt-questionnaire", children: [
277
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
278
+ /* @__PURE__ */ jsxs("span", { className: "font-medium text-foreground text-sm", children: [
279
+ "Question ",
280
+ currentIndex + 1,
281
+ " of ",
282
+ total
283
+ ] }),
284
+ /* @__PURE__ */ jsx("div", { className: "flex gap-1", children: questions.map((each, index) => {
285
+ const answered = isQuestionAnswered(answers[index] ?? EMPTY_ANSWER, each.type);
286
+ return /* @__PURE__ */ jsx(
287
+ "button",
288
+ {
289
+ type: "button",
290
+ onClick: () => goTo(index),
291
+ "aria-pressed": index === currentIndex,
292
+ "aria-label": `Go to question ${index + 1}`,
293
+ className: cn(
294
+ "size-2 rounded-full transition-colors",
295
+ index === currentIndex ? "bg-blue-600" : answered ? "bg-blue-300" : "bg-muted-foreground/30"
296
+ )
297
+ },
298
+ index
299
+ );
300
+ }) })
301
+ ] }),
302
+ /* @__PURE__ */ jsxs("div", { className: "rounded-md bg-muted/60 p-3", children: [
303
+ /* @__PURE__ */ jsx("div", { className: "text-foreground text-sm", children: /* @__PURE__ */ jsx(ChatMessageBody, { text: question.text }) }),
304
+ QUESTION_HINTS[question.type] ? /* @__PURE__ */ jsx("p", { className: "mt-1 text-muted-foreground text-xs", children: QUESTION_HINTS[question.type] }) : null
305
+ ] }),
306
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
307
+ /* @__PURE__ */ jsx("p", { id: labelId, className: "font-medium text-foreground text-sm", children: "Your answer:" }),
308
+ renderAnswerInput()
309
+ ] }),
310
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
311
+ /* @__PURE__ */ jsxs(
312
+ "button",
313
+ {
314
+ type: "button",
315
+ onClick: () => setShowComment((previous) => {
316
+ const next = [...previous];
317
+ next[currentIndex] = !next[currentIndex];
318
+ return next;
319
+ }),
320
+ "aria-pressed": showComment[currentIndex] === true,
321
+ className: "flex w-fit items-center gap-1.5 text-muted-foreground text-xs transition-colors hover:text-foreground",
322
+ children: [
323
+ /* @__PURE__ */ jsx(MessageSquareIcon, { className: "size-3" }),
324
+ showComment[currentIndex] ? "Hide additional comment" : "Add additional comment"
325
+ ]
326
+ }
327
+ ),
328
+ showComment[currentIndex] ? /* @__PURE__ */ jsx(
329
+ "textarea",
330
+ {
331
+ "aria-label": "Additional comment",
332
+ value: answer.comment,
333
+ onChange: (event) => {
334
+ const comment = event.target.value;
335
+ updateAnswer((current) => ({ ...current, comment }));
336
+ },
337
+ placeholder: "Add any additional context or notes...",
338
+ readOnly: actionsDisabled,
339
+ rows: 2,
340
+ className: TEXTAREA_CLASS
341
+ }
342
+ ) : null
343
+ ] }),
344
+ total > 1 ? /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground text-xs", children: [
345
+ answeredCount,
346
+ " of ",
347
+ total,
348
+ " questions answered"
349
+ ] }) : null,
350
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-2", children: [
351
+ /* @__PURE__ */ jsxs(
352
+ Button,
353
+ {
354
+ onClick: () => goTo(currentIndex - 1),
355
+ variant: "outline",
356
+ size: "sm",
357
+ disabled: isFirst || isLoading,
358
+ children: [
359
+ /* @__PURE__ */ jsx(ArrowLeftIcon, {}),
360
+ "Previous"
361
+ ]
362
+ }
363
+ ),
364
+ /* @__PURE__ */ jsxs(Button, { onClick: () => goTo(currentIndex + 1), size: "sm", disabled: isLast || isLoading, children: [
365
+ "Next",
366
+ /* @__PURE__ */ jsx(ArrowRightIcon, {})
367
+ ] })
368
+ ] }),
369
+ confirmingPartial ? /* @__PURE__ */ jsxs(
370
+ "div",
371
+ {
372
+ role: "alertdialog",
373
+ "aria-labelledby": `${labelId}-partial`,
374
+ className: "flex flex-col gap-2 rounded-md border border-amber-300 bg-amber-50 p-3 text-amber-900",
375
+ children: [
376
+ /* @__PURE__ */ jsx("p", { id: `${labelId}-partial`, className: "font-semibold text-sm", children: "Submit with unanswered questions?" }),
377
+ /* @__PURE__ */ jsxs("p", { className: "text-sm", children: [
378
+ "You have ",
379
+ unansweredCount,
380
+ " unanswered question",
381
+ unansweredCount > 1 ? "s" : "",
382
+ ". Are you sure you want to submit?"
383
+ ] }),
384
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
385
+ /* @__PURE__ */ jsx(Button, { size: "sm", disabled: actionsDisabled, onClick: submit, children: "Submit anyway" }),
386
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: "outline", onClick: () => setConfirmingPartial(false), children: "Keep answering" })
387
+ ] })
388
+ ]
389
+ }
390
+ ) : null,
391
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2", children: [
392
+ showDraftIndicator ? /* @__PURE__ */ jsx(HoverHint, { label: draftHint, children: /* @__PURE__ */ jsxs(
393
+ "span",
394
+ {
395
+ role: "img",
396
+ "aria-label": draftHint,
397
+ className: cn("flex items-center", draftStatus === "error" ? "text-amber-500" : "text-muted-foreground"),
398
+ children: [
399
+ loadingDraft || draftStatus === "saving" ? /* @__PURE__ */ jsx(Loader2Icon, { className: "size-3.5 animate-spin" }) : null,
400
+ !loadingDraft && draftStatus === "saved" ? /* @__PURE__ */ jsx(CloudIcon, { className: "size-3.5" }) : null,
401
+ !loadingDraft && draftStatus === "error" ? /* @__PURE__ */ jsx(AlertCircleIcon, { className: "size-3.5" }) : null
402
+ ]
403
+ }
404
+ ) }) : null,
405
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxs(
406
+ Button,
407
+ {
408
+ onClick: () => resume(questionnaireResume([])),
409
+ variant: "ghost",
410
+ size: "sm",
411
+ disabled: actionsDisabled,
412
+ children: [
413
+ /* @__PURE__ */ jsx(XIcon, {}),
414
+ "Cancel"
415
+ ]
416
+ }
417
+ ) }),
418
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxs(
419
+ Button,
420
+ {
421
+ onClick: onSubmit,
422
+ variant: allAnswered ? "default" : "outline",
423
+ size: "sm",
424
+ disabled: actionsDisabled,
425
+ children: [
426
+ /* @__PURE__ */ jsx(SendIcon, {}),
427
+ isLoading ? "Submitting..." : "Submit"
428
+ ]
429
+ }
430
+ ) })
431
+ ] }),
432
+ hasTimeout ? /* @__PURE__ */ jsx(
433
+ TimedInterruptCountdown,
434
+ {
435
+ timeoutRemaining,
436
+ timeoutSeconds,
437
+ isTimedOut,
438
+ isTimeoutCancelled
439
+ }
440
+ ) : null
441
+ ] })
442
+ }
443
+ );
444
+ }
445
+ export {
446
+ QuestionnaireCard,
447
+ isQuestionAnswered
448
+ };
449
+ //# sourceMappingURL=questionnaire-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaire-card.js","sources":["../../../src/chat/typed-interrupts/questionnaire-card.tsx"],"sourcesContent":["/**\n * The `ask` tool's questionnaire (Olympus's `AskQuestionnaireInterruptUi`):\n * one question at a time with its progress, an answer by the question's kind\n * (text, yes / no, one option, several options) and an optional comment on\n * each, and Submit once the person is done, asking first when some questions\n * are still unanswered. Cancel answers with no answers, which the tool reads\n * as the person declining. The answers in progress are kept as a draft on\n * agora (`use-interrupt-draft.ts`) when the host names the conversation.\n */\nimport {\n interruptDraftId,\n type QuestionnaireAnswer,\n questionnaireResume,\n QuestionType,\n readQuestionnaireContext,\n type TypedQuestion,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport {\n AlertCircleIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n CheckIcon,\n CloudIcon,\n HelpCircleIcon,\n Loader2Icon,\n MessageSquareIcon,\n SendIcon,\n XIcon,\n} from 'lucide-react';\nimport { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { mentionsToPlainText } from '../../chat-ui/mentions/mention-chip';\nimport { ChatMessageBody } from '../../chat-ui/rich-text/chat-message-body';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport {\n HoverHint,\n InterruptCardShell,\n TimedInterruptCountdown,\n WaitForStreamingHint,\n} from './interrupt-card-shell';\nimport { useTypedInterruptConversation } from './typed-interrupt-graphql';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\nimport { useInterruptDraft, useInterruptDraftSave } from './use-interrupt-draft';\n\ninterface AnswerState {\n value: string;\n comment: string;\n selectedOptions: string[];\n}\n\nconst EMPTY_ANSWER: AnswerState = { value: '', comment: '', selectedOptions: [] };\n\nfunction emptyAnswers(count: number): AnswerState[] {\n return Array.from({ length: count }, () => ({ value: '', comment: '', selectedOptions: [] }));\n}\n\nfunction questionSignature(questions: readonly TypedQuestion[]): string {\n return questions\n .map((question) => [question.text, question.type, ...question.options].join('\\u001f'))\n .join('\\u001e');\n}\n\n/** A comment answers a question too; otherwise the answer its kind takes. */\nexport function isQuestionAnswered(answer: AnswerState, type: QuestionType): boolean {\n if (answer.comment.trim().length > 0) return true;\n switch (type) {\n case QuestionType.YES_NO:\n return answer.value === 'yes' || answer.value === 'no';\n case QuestionType.MULTI_CHOICE:\n return answer.selectedOptions.length > 0;\n default:\n return answer.value.trim().length > 0;\n }\n}\n\nfunction isAnswerState(value: unknown): value is AnswerState {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Record<string, unknown>;\n return (\n typeof candidate.value === 'string' &&\n typeof candidate.comment === 'string' &&\n Array.isArray(candidate.selectedOptions) &&\n candidate.selectedOptions.every((option) => typeof option === 'string')\n );\n}\n\n/** A saved draft's answers and position, when they fit this questionnaire. */\nfunction readDraft(raw: unknown, count: number): { answers: AnswerState[]; index?: number } | null {\n const answers = Array.isArray(raw)\n ? raw\n : typeof raw === 'object' && raw !== null && Array.isArray((raw as { answers?: unknown }).answers)\n ? (raw as { answers: unknown[] }).answers\n : null;\n if (!answers || answers.length !== count || !answers.every(isAnswerState)) return null;\n const index =\n typeof raw === 'object' && raw !== null && !Array.isArray(raw)\n ? (raw as { currentIndex?: unknown }).currentIndex\n : undefined;\n return {\n answers: answers.map((answer) => ({ ...answer, selectedOptions: [...answer.selectedOptions] })),\n ...(typeof index === 'number' && index >= 0 && index < count ? { index } : {}),\n };\n}\n\n/** The answers as the tool's resume takes them: a multi-choice's options joined, comments trimmed. */\nfunction formatAnswers(questions: readonly TypedQuestion[], answers: readonly AnswerState[]): QuestionnaireAnswer[] {\n return questions.map((question, index) => {\n const answer = answers[index] ?? EMPTY_ANSWER;\n const comment = answer.comment.trim() || null;\n if (!isQuestionAnswered(answer, question.type)) return { value: '', comment };\n const value =\n question.type === QuestionType.MULTI_CHOICE ? answer.selectedOptions.join(', ') : answer.value;\n return { value, comment };\n });\n}\n\n/** Marks the answer the agent recommends, which is also what a timeout answers with. */\nfunction RecommendedBadge() {\n return (\n <span className=\"shrink-0 rounded-full border border-current px-1.5 font-medium text-[10px] uppercase tracking-wide opacity-80\">\n Recommended\n </span>\n );\n}\n\nconst QUESTION_HINTS: Partial<Record<QuestionType, string>> = {\n [QuestionType.YES_NO]: 'Select Yes or No',\n [QuestionType.SINGLE_CHOICE]: 'Select one option',\n [QuestionType.MULTI_CHOICE]: 'Select one or more options',\n};\n\n/** An answer's choices, as one group named by \"Your answer:\". */\nconst GROUP_CLASS = 'm-0 flex min-w-0 border-0 p-0';\n\nconst TEXTAREA_CLASS =\n 'min-h-16 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50';\n\nexport function QuestionnaireCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const { title, questions } = useMemo(() => readQuestionnaireContext(interrupt), [interrupt]);\n const heading = title?.trim() || 'Questions from AI';\n const total = questions.length;\n const {\n isLoading,\n hasTimeout,\n timeoutSeconds,\n timeoutRemaining,\n isTimedOut,\n isTimeoutCancelled,\n cancelTimeout,\n displayMessage,\n isConversationStreaming,\n } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const labelId = useId();\n\n const [currentIndex, setCurrentIndex] = useState(0);\n const [answers, setAnswers] = useState<AnswerState[]>(() => emptyAnswers(total));\n const [showComment, setShowComment] = useState<boolean[]>(() => new Array(total).fill(false));\n const [confirmingPartial, setConfirmingPartial] = useState(false);\n const [draftHydrated, setDraftHydrated] = useState(false);\n const touchedRef = useRef(false);\n\n // A new park (a same-source park is a new request) starts empty.\n const signature = useMemo(() => questionSignature(questions), [questions]);\n const instanceKey = engine.requestId ?? null;\n useEffect(() => {\n setCurrentIndex(0);\n setAnswers(emptyAnswers(total));\n setShowComment(new Array(total).fill(false));\n setConfirmingPartial(false);\n setDraftHydrated(false);\n touchedRef.current = false;\n }, [instanceKey, signature, total]);\n\n // Keyed as the timer worker looks drafts up, never by the request id.\n const conversation = useTypedInterruptConversation();\n const draftId = interruptDraftId(interrupt);\n const { draft, isLoading: draftLoading } = useInterruptDraft({ conversation, interruptId: draftId });\n useEffect(() => {\n if (draftHydrated || draftLoading) return;\n if (!touchedRef.current) {\n const restored = readDraft(draft, total);\n if (restored) {\n setAnswers(restored.answers);\n if (restored.index !== undefined) setCurrentIndex(restored.index);\n }\n }\n setDraftHydrated(true);\n }, [draftHydrated, draftLoading, draft, total]);\n\n const draftPayload = useMemo(() => ({ answers, currentIndex }), [answers, currentIndex]);\n const { flush: flushDraft, status: draftStatus } = useInterruptDraftSave({\n conversation,\n interruptId: draftId,\n payload: draftPayload,\n enabled: draftHydrated && touchedRef.current,\n });\n\n const question: TypedQuestion = questions[currentIndex] ?? {\n text: '',\n type: QuestionType.TEXT,\n options: [],\n recommended: null,\n };\n const answer = answers[currentIndex] ?? EMPTY_ANSWER;\n const isFirst = currentIndex === 0;\n const isLast = currentIndex === total - 1;\n const answeredCount = answers.filter((each, index) => {\n const asked = questions[index];\n return asked ? isQuestionAnswered(each, asked.type) : false;\n }).length;\n const allAnswered = total > 0 && answeredCount === total;\n\n const updateAnswer = useCallback(\n (update: (current: AnswerState) => AnswerState) => {\n touchedRef.current = true;\n setConfirmingPartial(false);\n setAnswers((previous) => {\n const next = [...previous];\n next[currentIndex] = update(next[currentIndex] ?? EMPTY_ANSWER);\n return next;\n });\n },\n [currentIndex],\n );\n\n const goTo = (index: number) => {\n flushDraft();\n setCurrentIndex(index);\n };\n\n const submit = () => resume(questionnaireResume(formatAnswers(questions, answers)));\n const onSubmit = () => {\n if (!allAnswered) {\n setConfirmingPartial(true);\n return;\n }\n submit();\n };\n const unansweredCount = total - answeredCount;\n\n const choiceClass = (selected: boolean) =>\n cn(\n 'w-full rounded-md border px-3 py-2 text-left text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50',\n selected\n ? 'border-blue-600 bg-blue-50 text-blue-700'\n : 'border-border hover:border-muted-foreground/40 hover:bg-muted',\n );\n\n const renderAnswerInput = () => {\n switch (question.type) {\n case QuestionType.YES_NO:\n return (\n <fieldset className={cn(GROUP_CLASS, 'flex-row gap-3')} aria-labelledby={labelId}>\n {(['yes', 'no'] as const).map((choice) => {\n const selected = answer.value === choice;\n return (\n <button\n key={choice}\n type=\"button\"\n onClick={() => updateAnswer((current) => ({ ...current, value: choice }))}\n disabled={isLoading}\n aria-pressed={selected}\n className={cn(\n 'flex-1 rounded-md border-2 px-4 py-2.5 font-medium text-sm transition-all disabled:cursor-not-allowed disabled:opacity-50',\n selected\n ? 'border-blue-600 bg-blue-600 text-white shadow-md'\n : 'border-border bg-background text-foreground hover:bg-muted',\n )}\n >\n <span className=\"flex items-center justify-center gap-2\">\n {selected ? <CheckIcon className=\"size-4\" /> : null}\n <span>{choice === 'yes' ? 'Yes' : 'No'}</span>\n {question.recommended === choice ? <RecommendedBadge /> : null}\n </span>\n </button>\n );\n })}\n </fieldset>\n );\n case QuestionType.SINGLE_CHOICE:\n return (\n <fieldset className={cn(GROUP_CLASS, 'flex-col gap-2')} aria-labelledby={labelId}>\n {question.options.map((option, index) => {\n const selected = answer.value === option;\n return (\n <button\n key={`${index}-${option}`}\n type=\"button\"\n onClick={() => updateAnswer((current) => ({ ...current, value: option }))}\n disabled={isLoading}\n aria-pressed={selected}\n className={choiceClass(selected)}\n >\n <span className=\"flex items-center gap-2\">\n <span\n aria-hidden\n className={cn(\n 'flex size-4 shrink-0 items-center justify-center rounded-full border-2',\n selected ? 'border-blue-600 bg-blue-600' : 'border-muted-foreground/40',\n )}\n >\n {selected ? <span className=\"size-2 rounded-full bg-white\" /> : null}\n </span>\n <span className=\"min-w-0 flex-1 break-words\">{mentionsToPlainText(option)}</span>\n {question.recommended === option ? <RecommendedBadge /> : null}\n </span>\n </button>\n );\n })}\n </fieldset>\n );\n case QuestionType.MULTI_CHOICE:\n return (\n <fieldset className={cn(GROUP_CLASS, 'flex-col gap-2')} aria-labelledby={labelId}>\n {question.options.map((option, index) => {\n const selected = answer.selectedOptions.includes(option);\n return (\n <button\n key={`${index}-${option}`}\n type=\"button\"\n onClick={() =>\n updateAnswer((current) => ({\n ...current,\n selectedOptions: current.selectedOptions.includes(option)\n ? current.selectedOptions.filter((each) => each !== option)\n : [...current.selectedOptions, option],\n }))\n }\n disabled={isLoading}\n aria-pressed={selected}\n className={choiceClass(selected)}\n >\n <span className=\"flex items-center gap-2\">\n <span\n aria-hidden\n className={cn(\n 'flex size-4 shrink-0 items-center justify-center rounded border',\n selected ? 'border-blue-600 bg-blue-600' : 'border-muted-foreground/40',\n )}\n >\n {selected ? <CheckIcon className=\"size-3 text-white\" /> : null}\n </span>\n <span className=\"min-w-0 flex-1 break-words\">{mentionsToPlainText(option)}</span>\n </span>\n </button>\n );\n })}\n </fieldset>\n );\n default:\n return (\n <textarea\n aria-labelledby={labelId}\n value={answer.value}\n onChange={(event) => {\n const value = event.target.value;\n updateAnswer((current) => ({ ...current, value }));\n }}\n placeholder=\"Type your answer here...\"\n readOnly={actionsDisabled}\n rows={3}\n className={TEXTAREA_CLASS}\n />\n );\n }\n };\n\n const loadingDraft = draftLoading && !draftHydrated;\n const showDraftIndicator = loadingDraft || (answeredCount > 0 && draftStatus !== 'idle');\n const draftHint = loadingDraft\n ? 'Checking for a previously saved draft...'\n : draftStatus === 'error'\n ? \"Couldn't save draft\"\n : draftStatus === 'saving'\n ? 'Saving draft...'\n : 'Draft saved — your answers will be restored if you leave and come back within 24 hours.';\n\n return (\n <InterruptCardShell\n title={heading}\n description={displayMessage}\n icon={<HelpCircleIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-4\" data-testid=\"typed-interrupt-questionnaire\">\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium text-foreground text-sm\">\n Question {currentIndex + 1} of {total}\n </span>\n <div className=\"flex gap-1\">\n {questions.map((each, index) => {\n const answered = isQuestionAnswered(answers[index] ?? EMPTY_ANSWER, each.type);\n return (\n <button\n // Position is the only identity a question has.\n key={index}\n type=\"button\"\n onClick={() => goTo(index)}\n aria-pressed={index === currentIndex}\n aria-label={`Go to question ${index + 1}`}\n className={cn(\n 'size-2 rounded-full transition-colors',\n index === currentIndex ? 'bg-blue-600' : answered ? 'bg-blue-300' : 'bg-muted-foreground/30',\n )}\n />\n );\n })}\n </div>\n </div>\n\n <div className=\"rounded-md bg-muted/60 p-3\">\n <div className=\"text-foreground text-sm\">\n <ChatMessageBody text={question.text} />\n </div>\n {QUESTION_HINTS[question.type] ? (\n <p className=\"mt-1 text-muted-foreground text-xs\">{QUESTION_HINTS[question.type]}</p>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <p id={labelId} className=\"font-medium text-foreground text-sm\">\n Your answer:\n </p>\n {renderAnswerInput()}\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <button\n type=\"button\"\n onClick={() =>\n setShowComment((previous) => {\n const next = [...previous];\n next[currentIndex] = !next[currentIndex];\n return next;\n })\n }\n aria-pressed={showComment[currentIndex] === true}\n className=\"flex w-fit items-center gap-1.5 text-muted-foreground text-xs transition-colors hover:text-foreground\"\n >\n <MessageSquareIcon className=\"size-3\" />\n {showComment[currentIndex] ? 'Hide additional comment' : 'Add additional comment'}\n </button>\n {showComment[currentIndex] ? (\n <textarea\n aria-label=\"Additional comment\"\n value={answer.comment}\n onChange={(event) => {\n const comment = event.target.value;\n updateAnswer((current) => ({ ...current, comment }));\n }}\n placeholder=\"Add any additional context or notes...\"\n readOnly={actionsDisabled}\n rows={2}\n className={TEXTAREA_CLASS}\n />\n ) : null}\n </div>\n\n {total > 1 ? (\n <div className=\"text-muted-foreground text-xs\">\n {answeredCount} of {total} questions answered\n </div>\n ) : null}\n\n <div className=\"flex w-full items-center justify-between gap-2\">\n <Button\n onClick={() => goTo(currentIndex - 1)}\n variant=\"outline\"\n size=\"sm\"\n disabled={isFirst || isLoading}\n >\n <ArrowLeftIcon />\n Previous\n </Button>\n <Button onClick={() => goTo(currentIndex + 1)} size=\"sm\" disabled={isLast || isLoading}>\n Next\n <ArrowRightIcon />\n </Button>\n </div>\n\n {confirmingPartial ? (\n <div\n role=\"alertdialog\"\n aria-labelledby={`${labelId}-partial`}\n className=\"flex flex-col gap-2 rounded-md border border-amber-300 bg-amber-50 p-3 text-amber-900\"\n >\n <p id={`${labelId}-partial`} className=\"font-semibold text-sm\">\n Submit with unanswered questions?\n </p>\n <p className=\"text-sm\">\n You have {unansweredCount} unanswered question{unansweredCount > 1 ? 's' : ''}. Are you sure you want\n to submit?\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <Button size=\"sm\" disabled={actionsDisabled} onClick={submit}>\n Submit anyway\n </Button>\n <Button size=\"sm\" variant=\"outline\" onClick={() => setConfirmingPartial(false)}>\n Keep answering\n </Button>\n </div>\n </div>\n ) : null}\n\n <div className=\"flex items-center justify-center gap-2\">\n {showDraftIndicator ? (\n <HoverHint label={draftHint}>\n <span\n role=\"img\"\n aria-label={draftHint}\n className={cn('flex items-center', draftStatus === 'error' ? 'text-amber-500' : 'text-muted-foreground')}\n >\n {loadingDraft || draftStatus === 'saving' ? <Loader2Icon className=\"size-3.5 animate-spin\" /> : null}\n {!loadingDraft && draftStatus === 'saved' ? <CloudIcon className=\"size-3.5\" /> : null}\n {!loadingDraft && draftStatus === 'error' ? <AlertCircleIcon className=\"size-3.5\" /> : null}\n </span>\n </HoverHint>\n ) : null}\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n onClick={() => resume(questionnaireResume([]))}\n variant=\"ghost\"\n size=\"sm\"\n disabled={actionsDisabled}\n >\n <XIcon />\n Cancel\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n onClick={onSubmit}\n variant={allAnswered ? 'default' : 'outline'}\n size=\"sm\"\n disabled={actionsDisabled}\n >\n <SendIcon />\n {isLoading ? 'Submitting...' : 'Submit'}\n </Button>\n </WaitForStreamingHint>\n </div>\n\n {hasTimeout ? (\n <TimedInterruptCountdown\n timeoutRemaining={timeoutRemaining}\n timeoutSeconds={timeoutSeconds}\n isTimedOut={isTimedOut}\n isTimeoutCancelled={isTimeoutCancelled}\n />\n ) : null}\n </div>\n }\n />\n );\n}\n"],"names":[],"mappings":"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"}