@athenaintel/react 0.57.1 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/README.md +778 -9
  2. package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
  3. package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
  4. package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
  5. package/dist/agent-runtime/src/addressed-agents.js +16 -0
  6. package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
  7. package/dist/agent-runtime/src/answer-label.cjs +4 -3
  8. package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
  9. package/dist/agent-runtime/src/answer-label.d.ts +13 -6
  10. package/dist/agent-runtime/src/answer-label.js +4 -3
  11. package/dist/agent-runtime/src/answer-label.js.map +1 -1
  12. package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
  13. package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
  14. package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
  15. package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
  16. package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
  17. package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
  18. package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
  19. package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
  20. package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
  21. package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
  22. package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
  23. package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
  24. package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
  25. package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
  26. package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
  27. package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
  28. package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
  29. package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
  30. package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
  31. package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
  32. package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
  33. package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
  34. package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
  35. package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
  36. package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
  37. package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
  38. package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
  39. package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
  40. package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
  41. package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
  42. package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
  43. package/dist/agent-runtime/src/chat-outbox.js +492 -547
  44. package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
  45. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
  46. package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
  47. package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
  48. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
  49. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
  50. package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
  51. package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
  52. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
  53. package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
  54. package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
  55. package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
  56. package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
  57. package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
  58. package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
  59. package/dist/agent-runtime/src/edit-command.d.ts +1 -1
  60. package/dist/agent-runtime/src/edit-command.js.map +1 -1
  61. package/dist/agent-runtime/src/errors.cjs +1 -0
  62. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  63. package/dist/agent-runtime/src/errors.js +1 -0
  64. package/dist/agent-runtime/src/errors.js.map +1 -1
  65. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
  66. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  67. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
  68. package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
  69. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  70. package/dist/agent-runtime/src/index.d.ts +14 -8
  71. package/dist/agent-runtime/src/lane-follow.cjs +289 -0
  72. package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
  73. package/dist/agent-runtime/src/lane-follow.js +289 -0
  74. package/dist/agent-runtime/src/lane-follow.js.map +1 -0
  75. package/dist/agent-runtime/src/lane-images.cjs +387 -0
  76. package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
  77. package/dist/agent-runtime/src/lane-images.js +387 -0
  78. package/dist/agent-runtime/src/lane-images.js.map +1 -0
  79. package/dist/agent-runtime/src/message-window.js +1 -1
  80. package/dist/agent-runtime/src/messages.cjs +19 -1
  81. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  82. package/dist/agent-runtime/src/messages.d.ts +8 -0
  83. package/dist/agent-runtime/src/messages.js +21 -3
  84. package/dist/agent-runtime/src/messages.js.map +1 -1
  85. package/dist/agent-runtime/src/named-agents.cjs +301 -0
  86. package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
  87. package/dist/agent-runtime/src/named-agents.d.ts +246 -0
  88. package/dist/agent-runtime/src/named-agents.js +301 -0
  89. package/dist/agent-runtime/src/named-agents.js.map +1 -0
  90. package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
  91. package/dist/agent-runtime/src/offline-status.d.ts +66 -2
  92. package/dist/agent-runtime/src/offline-status.js.map +1 -1
  93. package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
  94. package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
  95. package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
  96. package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
  97. package/dist/agent-runtime/src/queue.cjs +2 -2
  98. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  99. package/dist/agent-runtime/src/queue.d.ts +20 -25
  100. package/dist/agent-runtime/src/queue.js +2 -2
  101. package/dist/agent-runtime/src/queue.js.map +1 -1
  102. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
  103. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  104. package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
  105. package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
  106. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
  107. package/dist/agent-runtime/src/run-send.cjs +54 -0
  108. package/dist/agent-runtime/src/run-send.cjs.map +1 -0
  109. package/dist/agent-runtime/src/run-send.d.ts +51 -0
  110. package/dist/agent-runtime/src/run-send.js +54 -0
  111. package/dist/agent-runtime/src/run-send.js.map +1 -0
  112. package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
  113. package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
  114. package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
  115. package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
  116. package/dist/agent-runtime/src/runtime.d.ts +9 -5
  117. package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
  118. package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
  119. package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
  120. package/dist/agent-runtime/src/sealed-idb.js +64 -0
  121. package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
  122. package/dist/agent-runtime/src/send-recovery.cjs +90 -118
  123. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
  124. package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
  125. package/dist/agent-runtime/src/send-recovery.js +90 -118
  126. package/dist/agent-runtime/src/send-recovery.js.map +1 -1
  127. package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
  128. package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
  129. package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
  130. package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
  131. package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
  132. package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
  133. package/dist/agent-runtime/src/statewire-state.cjs +4 -0
  134. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
  135. package/dist/agent-runtime/src/statewire-state.js +4 -0
  136. package/dist/agent-runtime/src/statewire-state.js.map +1 -1
  137. package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
  138. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
  139. package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
  140. package/dist/agent-runtime/src/statewire-transport.js +8 -2
  141. package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
  142. package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
  143. package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
  144. package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
  145. package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
  146. package/dist/agent-runtime/src/subagents.cjs +22 -29
  147. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  148. package/dist/agent-runtime/src/subagents.js +23 -30
  149. package/dist/agent-runtime/src/subagents.js.map +1 -1
  150. package/dist/agent-runtime/src/thread-extras.cjs +27 -19
  151. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
  152. package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
  153. package/dist/agent-runtime/src/thread-extras.js +27 -19
  154. package/dist/agent-runtime/src/thread-extras.js.map +1 -1
  155. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
  156. package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
  157. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  158. package/dist/agent-runtime/src/tool-metadata.js +12 -0
  159. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  160. package/dist/agent-runtime/src/tool-names.cjs +21 -0
  161. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  162. package/dist/agent-runtime/src/tool-names.d.ts +8 -0
  163. package/dist/agent-runtime/src/tool-names.js +21 -0
  164. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  165. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
  166. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
  167. package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
  168. package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
  169. package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
  170. package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
  171. package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
  172. package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
  173. package/dist/agent-runtime/src/typed-interrupts.js +48 -0
  174. package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
  175. package/dist/agent-runtime/src/types.d.ts +1 -1
  176. package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
  177. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  178. package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
  179. package/dist/agent-runtime/src/use-conversation-list.js +1 -0
  180. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
  181. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
  182. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  183. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
  184. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
  185. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  186. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
  187. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  188. package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
  189. package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
  190. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
  191. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
  192. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  193. package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
  194. package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
  195. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
  196. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
  197. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  198. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
  199. package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
  200. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  201. package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
  202. package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
  203. package/dist/agent-runtime/src/work-in.d.ts +127 -0
  204. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  205. package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
  206. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  207. package/dist/assets/asset-panel-store.cjs +13 -5
  208. package/dist/assets/asset-panel-store.cjs.map +1 -1
  209. package/dist/assets/asset-panel-store.d.ts +33 -2
  210. package/dist/assets/asset-panel-store.js +13 -5
  211. package/dist/assets/asset-panel-store.js.map +1 -1
  212. package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
  213. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  214. package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
  215. package/dist/auth/AthenaCredentialSourceContext.js +11 -0
  216. package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
  217. package/dist/auth/account-identity.cjs +13 -2
  218. package/dist/auth/account-identity.cjs.map +1 -1
  219. package/dist/auth/account-identity.d.ts +9 -0
  220. package/dist/auth/account-identity.js +13 -2
  221. package/dist/auth/account-identity.js.map +1 -1
  222. package/dist/auth/credential-source.cjs +20 -4
  223. package/dist/auth/credential-source.cjs.map +1 -1
  224. package/dist/auth/credential-source.d.ts +9 -0
  225. package/dist/auth/credential-source.js +20 -4
  226. package/dist/auth/credential-source.js.map +1 -1
  227. package/dist/catalog/chat-pickers.cjs +31 -0
  228. package/dist/catalog/chat-pickers.cjs.map +1 -1
  229. package/dist/catalog/chat-pickers.d.ts +17 -0
  230. package/dist/catalog/chat-pickers.js +33 -2
  231. package/dist/catalog/chat-pickers.js.map +1 -1
  232. package/dist/catalog/runtime-catalog.cjs +63 -3
  233. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  234. package/dist/catalog/runtime-catalog.d.ts +63 -3
  235. package/dist/catalog/runtime-catalog.js +64 -4
  236. package/dist/catalog/runtime-catalog.js.map +1 -1
  237. package/dist/chat/AthenaChat.cjs +337 -99
  238. package/dist/chat/AthenaChat.cjs.map +1 -1
  239. package/dist/chat/AthenaChat.d.ts +80 -4
  240. package/dist/chat/AthenaChat.js +337 -99
  241. package/dist/chat/AthenaChat.js.map +1 -1
  242. package/dist/chat/StatewireApprovalCard.cjs +35 -5
  243. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  244. package/dist/chat/StatewireApprovalCard.d.ts +55 -2
  245. package/dist/chat/StatewireApprovalCard.js +37 -7
  246. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  247. package/dist/chat/StatewireQueuedMessages.cjs +17 -2
  248. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  249. package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
  250. package/dist/chat/StatewireQueuedMessages.js +18 -3
  251. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  252. package/dist/chat/chat-agent-mentions.cjs +70 -0
  253. package/dist/chat/chat-agent-mentions.cjs.map +1 -0
  254. package/dist/chat/chat-agent-mentions.d.ts +13 -0
  255. package/dist/chat/chat-agent-mentions.js +70 -0
  256. package/dist/chat/chat-agent-mentions.js.map +1 -0
  257. package/dist/chat/composer-actions.cjs +12 -0
  258. package/dist/chat/composer-actions.cjs.map +1 -0
  259. package/dist/chat/composer-actions.d.ts +22 -0
  260. package/dist/chat/composer-actions.js +12 -0
  261. package/dist/chat/composer-actions.js.map +1 -0
  262. package/dist/chat/follow-up-suggestions.cjs +185 -0
  263. package/dist/chat/follow-up-suggestions.cjs.map +1 -0
  264. package/dist/chat/follow-up-suggestions.d.ts +64 -0
  265. package/dist/chat/follow-up-suggestions.js +185 -0
  266. package/dist/chat/follow-up-suggestions.js.map +1 -0
  267. package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
  268. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  269. package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
  270. package/dist/chat/super-grouping/ToolTimeline.js +4 -3
  271. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  272. package/dist/chat/turn-changes.cjs +284 -0
  273. package/dist/chat/turn-changes.cjs.map +1 -0
  274. package/dist/chat/turn-changes.d.ts +130 -0
  275. package/dist/chat/turn-changes.js +284 -0
  276. package/dist/chat/turn-changes.js.map +1 -0
  277. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
  278. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
  279. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
  280. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
  281. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
  282. package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
  283. package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
  284. package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
  285. package/dist/chat/typed-interrupts/approval-cards.js +250 -0
  286. package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
  287. package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
  288. package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
  289. package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
  290. package/dist/chat/typed-interrupts/form-cards.js +289 -0
  291. package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
  292. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
  293. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
  294. package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
  295. package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
  296. package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
  297. package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
  298. package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
  299. package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
  300. package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
  301. package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
  302. package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
  303. package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
  304. package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
  305. package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
  306. package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
  307. package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
  308. package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
  309. package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
  310. package/dist/chat/typed-interrupts/request-file-card.js +159 -0
  311. package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
  312. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
  313. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
  314. package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
  315. package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
  316. package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
  317. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
  318. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
  319. package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
  320. package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
  321. package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
  322. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
  323. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
  324. package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
  325. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
  326. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
  327. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
  328. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
  329. package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
  330. package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
  331. package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
  332. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
  333. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
  334. package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
  335. package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
  336. package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
  337. package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
  338. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
  339. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
  340. package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
  341. package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
  342. package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
  343. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
  344. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
  345. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
  346. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
  347. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
  348. package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
  349. package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
  350. package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
  351. package/dist/chat-ui/composer/composer-named-agents.js +13 -0
  352. package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
  353. package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
  354. package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
  355. package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
  356. package/dist/chat-ui/composer/slash-command-menu.js +143 -0
  357. package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
  358. package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
  359. package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
  360. package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
  361. package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
  362. package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
  363. package/dist/chat-ui/composer/slash-commands.cjs +74 -0
  364. package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
  365. package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
  366. package/dist/chat-ui/composer/slash-commands.js +74 -0
  367. package/dist/chat-ui/composer/slash-commands.js.map +1 -0
  368. package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
  369. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  370. package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
  371. package/dist/chat-ui/composer/tiptap-composer.js +135 -9
  372. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  373. package/dist/chat-ui/index.cjs +3 -0
  374. package/dist/chat-ui/index.cjs.map +1 -1
  375. package/dist/chat-ui/index.d.ts +3 -2
  376. package/dist/chat-ui/index.js +3 -0
  377. package/dist/chat-ui/index.js.map +1 -1
  378. package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
  379. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  380. package/dist/chat-ui/mentions/mention-chip.js +2 -2
  381. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  382. package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
  383. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  384. package/dist/chat-ui/mentions/mention-extension.js +8 -1
  385. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  386. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
  387. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
  388. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
  389. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
  390. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
  391. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
  392. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
  393. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
  394. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
  395. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
  396. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
  397. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
  398. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
  399. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  400. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
  401. package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
  402. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
  403. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
  404. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  405. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
  406. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
  407. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  408. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
  409. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
  410. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
  411. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
  412. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  413. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
  414. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
  415. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  416. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
  417. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
  418. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
  419. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
  420. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
  421. package/dist/chat-ui/statewire.d.ts +1 -1
  422. package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
  423. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  424. package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
  425. package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
  426. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  427. package/dist/collab/client.cjs +17 -5
  428. package/dist/collab/client.cjs.map +1 -1
  429. package/dist/collab/client.d.ts +22 -7
  430. package/dist/collab/client.js +17 -5
  431. package/dist/collab/client.js.map +1 -1
  432. package/dist/composer/ComposerAttachedReferences.cjs +119 -0
  433. package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
  434. package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
  435. package/dist/composer/ComposerAttachedReferences.js +119 -0
  436. package/dist/composer/ComposerAttachedReferences.js.map +1 -0
  437. package/dist/composer/ComposerNamedAgents.cjs +63 -0
  438. package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
  439. package/dist/composer/ComposerNamedAgents.d.ts +16 -0
  440. package/dist/composer/ComposerNamedAgents.js +63 -0
  441. package/dist/composer/ComposerNamedAgents.js.map +1 -0
  442. package/dist/composer/attached-references.cjs +159 -0
  443. package/dist/composer/attached-references.cjs.map +1 -0
  444. package/dist/composer/attached-references.d.ts +86 -0
  445. package/dist/composer/attached-references.js +159 -0
  446. package/dist/composer/attached-references.js.map +1 -0
  447. package/dist/composer/build-composed-message.cjs +14 -7
  448. package/dist/composer/build-composed-message.cjs.map +1 -1
  449. package/dist/composer/build-composed-message.d.ts +6 -1
  450. package/dist/composer/build-composed-message.js +14 -7
  451. package/dist/composer/build-composed-message.js.map +1 -1
  452. package/dist/composer/composer-handoff.cjs +6 -2
  453. package/dist/composer/composer-handoff.cjs.map +1 -1
  454. package/dist/composer/composer-handoff.d.ts +7 -1
  455. package/dist/composer/composer-handoff.js +6 -2
  456. package/dist/composer/composer-handoff.js.map +1 -1
  457. package/dist/composer/folder-upload.cjs +149 -0
  458. package/dist/composer/folder-upload.cjs.map +1 -0
  459. package/dist/composer/folder-upload.d.ts +79 -0
  460. package/dist/composer/folder-upload.js +149 -0
  461. package/dist/composer/folder-upload.js.map +1 -0
  462. package/dist/composer/index.d.ts +1 -1
  463. package/dist/composer/useAttachToChat.cjs +35 -0
  464. package/dist/composer/useAttachToChat.cjs.map +1 -0
  465. package/dist/composer/useAttachToChat.d.ts +54 -0
  466. package/dist/composer/useAttachToChat.js +35 -0
  467. package/dist/composer/useAttachToChat.js.map +1 -0
  468. package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
  469. package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
  470. package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
  471. package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
  472. package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
  473. package/dist/composer/useFileUpload.cjs +95 -7
  474. package/dist/composer/useFileUpload.cjs.map +1 -1
  475. package/dist/composer/useFileUpload.d.ts +21 -2
  476. package/dist/composer/useFileUpload.js +95 -7
  477. package/dist/composer/useFileUpload.js.map +1 -1
  478. package/dist/data/athena-api-error.cjs +125 -0
  479. package/dist/data/athena-api-error.cjs.map +1 -0
  480. package/dist/data/athena-api-error.d.ts +96 -0
  481. package/dist/data/athena-api-error.js +125 -0
  482. package/dist/data/athena-api-error.js.map +1 -0
  483. package/dist/data/athena-data-client.cjs +106 -0
  484. package/dist/data/athena-data-client.cjs.map +1 -0
  485. package/dist/data/athena-data-client.d.ts +74 -0
  486. package/dist/data/athena-data-client.js +106 -0
  487. package/dist/data/athena-data-client.js.map +1 -0
  488. package/dist/data/athena-member.cjs +93 -0
  489. package/dist/data/athena-member.cjs.map +1 -0
  490. package/dist/data/athena-member.d.ts +125 -0
  491. package/dist/data/athena-member.js +93 -0
  492. package/dist/data/athena-member.js.map +1 -0
  493. package/dist/data/athena-request.cjs +458 -0
  494. package/dist/data/athena-request.cjs.map +1 -0
  495. package/dist/data/athena-request.d.ts +120 -0
  496. package/dist/data/athena-request.js +458 -0
  497. package/dist/data/athena-request.js.map +1 -0
  498. package/dist/data/use-athena-fetch.cjs +14 -0
  499. package/dist/data/use-athena-fetch.cjs.map +1 -0
  500. package/dist/data/use-athena-fetch.d.ts +19 -0
  501. package/dist/data/use-athena-fetch.js +14 -0
  502. package/dist/data/use-athena-fetch.js.map +1 -0
  503. package/dist/data/use-athena-graphql.cjs +66 -0
  504. package/dist/data/use-athena-graphql.cjs.map +1 -0
  505. package/dist/data/use-athena-graphql.d.ts +56 -0
  506. package/dist/data/use-athena-graphql.js +66 -0
  507. package/dist/data/use-athena-graphql.js.map +1 -0
  508. package/dist/data/use-athena-rest.cjs +33 -0
  509. package/dist/data/use-athena-rest.cjs.map +1 -0
  510. package/dist/data/use-athena-rest.d.ts +21 -0
  511. package/dist/data/use-athena-rest.js +33 -0
  512. package/dist/data/use-athena-rest.js.map +1 -0
  513. package/dist/data/use-semantic-query.cjs +44 -0
  514. package/dist/data/use-semantic-query.cjs.map +1 -0
  515. package/dist/data/use-semantic-query.d.ts +92 -0
  516. package/dist/data/use-semantic-query.js +44 -0
  517. package/dist/data/use-semantic-query.js.map +1 -0
  518. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  519. package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
  520. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  521. package/dist/diagnostics/errors.cjs +7 -0
  522. package/dist/diagnostics/errors.cjs.map +1 -1
  523. package/dist/diagnostics/errors.d.ts +7 -0
  524. package/dist/diagnostics/errors.js +7 -0
  525. package/dist/diagnostics/errors.js.map +1 -1
  526. package/dist/index.cjs +155 -11
  527. package/dist/index.cjs.map +1 -1
  528. package/dist/index.d.ts +72 -13
  529. package/dist/index.js +148 -4
  530. package/dist/index.js.map +1 -1
  531. package/dist/keryx-http/src/initial-sync.cjs +64 -16
  532. package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
  533. package/dist/keryx-http/src/initial-sync.d.ts +31 -1
  534. package/dist/keryx-http/src/initial-sync.js +64 -16
  535. package/dist/keryx-http/src/initial-sync.js.map +1 -1
  536. package/dist/keryx-http/src/own-awareness.cjs +20 -0
  537. package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
  538. package/dist/keryx-http/src/own-awareness.d.ts +50 -0
  539. package/dist/keryx-http/src/own-awareness.js +20 -0
  540. package/dist/keryx-http/src/own-awareness.js.map +1 -0
  541. package/dist/keryx-http/src/update-attributions.cjs +26 -1
  542. package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
  543. package/dist/keryx-http/src/update-attributions.d.ts +10 -1
  544. package/dist/keryx-http/src/update-attributions.js +26 -1
  545. package/dist/keryx-http/src/update-attributions.js.map +1 -1
  546. package/dist/offline/chat-outbox.cjs +262 -26
  547. package/dist/offline/chat-outbox.cjs.map +1 -1
  548. package/dist/offline/chat-outbox.d.ts +90 -12
  549. package/dist/offline/chat-outbox.js +263 -27
  550. package/dist/offline/chat-outbox.js.map +1 -1
  551. package/dist/provider/AthenaProvider.cjs +63 -19
  552. package/dist/provider/AthenaProvider.cjs.map +1 -1
  553. package/dist/provider/AthenaProvider.d.ts +24 -8
  554. package/dist/provider/AthenaProvider.js +66 -22
  555. package/dist/provider/AthenaProvider.js.map +1 -1
  556. package/dist/react/package.json.cjs +1 -1
  557. package/dist/react/package.json.js +1 -1
  558. package/dist/references/src/anchors/types.cjs +5 -0
  559. package/dist/references/src/anchors/types.cjs.map +1 -1
  560. package/dist/references/src/anchors/types.js +5 -0
  561. package/dist/references/src/anchors/types.js.map +1 -1
  562. package/dist/references/src/attachable.cjs +149 -0
  563. package/dist/references/src/attachable.cjs.map +1 -0
  564. package/dist/references/src/attachable.d.ts +87 -0
  565. package/dist/references/src/attachable.js +149 -0
  566. package/dist/references/src/attachable.js.map +1 -0
  567. package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
  568. package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
  569. package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
  570. package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
  571. package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
  572. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
  573. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  574. package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
  575. package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
  576. package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
  577. package/dist/runtime/statewire-plan-mode.cjs +71 -0
  578. package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
  579. package/dist/runtime/statewire-plan-mode.d.ts +88 -0
  580. package/dist/runtime/statewire-plan-mode.js +71 -0
  581. package/dist/runtime/statewire-plan-mode.js.map +1 -0
  582. package/dist/runtime/statewire-run-config.cjs +18 -1
  583. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  584. package/dist/runtime/statewire-run-config.d.ts +20 -0
  585. package/dist/runtime/statewire-run-config.js +18 -1
  586. package/dist/runtime/statewire-run-config.js.map +1 -1
  587. package/dist/runtime/statewire-session-key.cjs +11 -5
  588. package/dist/runtime/statewire-session-key.cjs.map +1 -1
  589. package/dist/runtime/statewire-session-key.d.ts +22 -10
  590. package/dist/runtime/statewire-session-key.js +11 -5
  591. package/dist/runtime/statewire-session-key.js.map +1 -1
  592. package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
  593. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  594. package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
  595. package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
  596. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  597. package/dist/search/useAthenaAssets.cjs +394 -0
  598. package/dist/search/useAthenaAssets.cjs.map +1 -0
  599. package/dist/search/useAthenaAssets.d.ts +186 -0
  600. package/dist/search/useAthenaAssets.js +394 -0
  601. package/dist/search/useAthenaAssets.js.map +1 -0
  602. package/dist/sheet-range/index.cjs +4 -0
  603. package/dist/sheet-range/index.cjs.map +1 -1
  604. package/dist/sheet-range/index.d.ts +4 -2
  605. package/dist/sheet-range/index.js +4 -0
  606. package/dist/sheet-range/index.js.map +1 -1
  607. package/dist/sheet-range/query-range.cjs +102 -0
  608. package/dist/sheet-range/query-range.cjs.map +1 -0
  609. package/dist/sheet-range/query-range.d.ts +46 -0
  610. package/dist/sheet-range/query-range.js +102 -0
  611. package/dist/sheet-range/query-range.js.map +1 -0
  612. package/dist/styles.css +1 -1
  613. package/dist/subagents/index.cjs +49 -0
  614. package/dist/subagents/index.cjs.map +1 -0
  615. package/dist/subagents/index.d.ts +16 -0
  616. package/dist/subagents/index.js +49 -0
  617. package/dist/subagents/index.js.map +1 -0
  618. package/dist/subagents/lane-follow.cjs +19 -0
  619. package/dist/subagents/lane-follow.cjs.map +1 -0
  620. package/dist/subagents/lane-follow.d.ts +9 -0
  621. package/dist/subagents/lane-follow.js +19 -0
  622. package/dist/subagents/lane-follow.js.map +1 -0
  623. package/dist/subagents/lane-model.cjs +178 -0
  624. package/dist/subagents/lane-model.cjs.map +1 -0
  625. package/dist/subagents/lane-model.d.ts +140 -0
  626. package/dist/subagents/lane-model.js +178 -0
  627. package/dist/subagents/lane-model.js.map +1 -0
  628. package/dist/subagents/lane-parts.cjs +517 -0
  629. package/dist/subagents/lane-parts.cjs.map +1 -0
  630. package/dist/subagents/lane-parts.d.ts +130 -0
  631. package/dist/subagents/lane-parts.js +517 -0
  632. package/dist/subagents/lane-parts.js.map +1 -0
  633. package/dist/subagents/subagent-lane-group.cjs +215 -0
  634. package/dist/subagents/subagent-lane-group.cjs.map +1 -0
  635. package/dist/subagents/subagent-lane-group.d.ts +67 -0
  636. package/dist/subagents/subagent-lane-group.js +215 -0
  637. package/dist/subagents/subagent-lane-group.js.map +1 -0
  638. package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
  639. package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
  640. package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
  641. package/dist/subagents/subagent-transcript-drawer.js +431 -0
  642. package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
  643. package/dist/subagents/task-subagent-group.cjs +115 -0
  644. package/dist/subagents/task-subagent-group.cjs.map +1 -0
  645. package/dist/subagents/task-subagent-group.d.ts +36 -0
  646. package/dist/subagents/task-subagent-group.js +115 -0
  647. package/dist/subagents/task-subagent-group.js.map +1 -0
  648. package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
  649. package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
  650. package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
  651. package/dist/subagents/use-omitted-images-in-view.js +68 -0
  652. package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
  653. package/dist/threads/Inbox.cjs +2 -2
  654. package/dist/threads/Inbox.cjs.map +1 -1
  655. package/dist/threads/SessionList.cjs +27 -24
  656. package/dist/threads/SessionList.cjs.map +1 -1
  657. package/dist/threads/SessionList.js +22 -19
  658. package/dist/threads/SessionList.js.map +1 -1
  659. package/dist/threads/SessionsPage.cjs +13 -7
  660. package/dist/threads/SessionsPage.cjs.map +1 -1
  661. package/dist/threads/SessionsPage.d.ts +10 -1
  662. package/dist/threads/SessionsPage.js +9 -3
  663. package/dist/threads/SessionsPage.js.map +1 -1
  664. package/dist/threads/live-session-rows.cjs +207 -0
  665. package/dist/threads/live-session-rows.cjs.map +1 -0
  666. package/dist/threads/live-session-rows.d.ts +175 -0
  667. package/dist/threads/live-session-rows.js +207 -0
  668. package/dist/threads/live-session-rows.js.map +1 -0
  669. package/dist/threads/session-list-model.cjs.map +1 -1
  670. package/dist/threads/session-list-model.d.ts +2 -1
  671. package/dist/threads/session-list-model.js.map +1 -1
  672. package/dist/threads/session-row-parts.cjs +3 -3
  673. package/dist/threads/session-row-parts.cjs.map +1 -1
  674. package/dist/threads/sessions-page-model.cjs +13 -5
  675. package/dist/threads/sessions-page-model.cjs.map +1 -1
  676. package/dist/threads/sessions-page-model.d.ts +7 -0
  677. package/dist/threads/sessions-page-model.js +11 -3
  678. package/dist/threads/sessions-page-model.js.map +1 -1
  679. package/dist/threads/sessions-page-storage.cjs +8 -8
  680. package/dist/threads/sessions-page-storage.cjs.map +1 -1
  681. package/dist/threads/sessions-page-storage.d.ts +5 -1
  682. package/dist/threads/sessions-page-storage.js +8 -8
  683. package/dist/threads/sessions-page-storage.js.map +1 -1
  684. package/dist/threads/statewire-thread-list.cjs +173 -20
  685. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  686. package/dist/threads/statewire-thread-list.d.ts +44 -1
  687. package/dist/threads/statewire-thread-list.js +174 -21
  688. package/dist/threads/statewire-thread-list.js.map +1 -1
  689. package/dist/threads/use-athena-sessions.cjs +1 -0
  690. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  691. package/dist/threads/use-athena-sessions.d.ts +7 -0
  692. package/dist/threads/use-athena-sessions.js +1 -0
  693. package/dist/threads/use-athena-sessions.js.map +1 -1
  694. package/dist/threads/use-athena-thread-agent.cjs +31 -0
  695. package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
  696. package/dist/threads/use-athena-thread-agent.d.ts +38 -0
  697. package/dist/threads/use-athena-thread-agent.js +31 -0
  698. package/dist/threads/use-athena-thread-agent.js.map +1 -0
  699. package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
  700. package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
  701. package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
  702. package/dist/threads/use-athena-thread-plan-mode.js +18 -0
  703. package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
  704. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  705. package/dist/tools/agent-creations.cjs +97 -0
  706. package/dist/tools/agent-creations.cjs.map +1 -0
  707. package/dist/tools/agent-creations.d.ts +38 -0
  708. package/dist/tools/agent-creations.js +97 -0
  709. package/dist/tools/agent-creations.js.map +1 -0
  710. package/dist/tools/agent-highlights.cjs +100 -0
  711. package/dist/tools/agent-highlights.cjs.map +1 -0
  712. package/dist/tools/agent-highlights.d.ts +57 -0
  713. package/dist/tools/agent-highlights.js +100 -0
  714. package/dist/tools/agent-highlights.js.map +1 -0
  715. package/dist/tools/append-document-tool-ui.cjs +1 -0
  716. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  717. package/dist/tools/append-document-tool-ui.d.ts +7 -0
  718. package/dist/tools/append-document-tool-ui.js +2 -1
  719. package/dist/tools/append-document-tool-ui.js.map +1 -1
  720. package/dist/tools/auto-open-tools.cjs +144 -71
  721. package/dist/tools/auto-open-tools.cjs.map +1 -1
  722. package/dist/tools/auto-open-tools.d.ts +131 -1
  723. package/dist/tools/auto-open-tools.js +145 -72
  724. package/dist/tools/auto-open-tools.js.map +1 -1
  725. package/dist/tools/browser-tool-uis.cjs +594 -0
  726. package/dist/tools/browser-tool-uis.cjs.map +1 -0
  727. package/dist/tools/browser-tool-uis.d.ts +8 -0
  728. package/dist/tools/browser-tool-uis.js +594 -0
  729. package/dist/tools/browser-tool-uis.js.map +1 -0
  730. package/dist/tools/computer-asset-tool-uis.cjs +313 -0
  731. package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
  732. package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
  733. package/dist/tools/computer-asset-tool-uis.js +313 -0
  734. package/dist/tools/computer-asset-tool-uis.js.map +1 -0
  735. package/dist/tools/document-edit-tool-uis.cjs +218 -0
  736. package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
  737. package/dist/tools/document-edit-tool-uis.d.ts +40 -0
  738. package/dist/tools/document-edit-tool-uis.js +218 -0
  739. package/dist/tools/document-edit-tool-uis.js.map +1 -0
  740. package/dist/tools/drive-tool-uis.cjs +425 -0
  741. package/dist/tools/drive-tool-uis.cjs.map +1 -0
  742. package/dist/tools/drive-tool-uis.d.ts +120 -0
  743. package/dist/tools/drive-tool-uis.js +425 -0
  744. package/dist/tools/drive-tool-uis.js.map +1 -0
  745. package/dist/tools/email-calendar-tool-uis.cjs +789 -0
  746. package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
  747. package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
  748. package/dist/tools/email-calendar-tool-uis.js +789 -0
  749. package/dist/tools/email-calendar-tool-uis.js.map +1 -0
  750. package/dist/tools/ontology-tool-uis.cjs +83 -0
  751. package/dist/tools/ontology-tool-uis.cjs.map +1 -0
  752. package/dist/tools/ontology-tool-uis.d.ts +9 -0
  753. package/dist/tools/ontology-tool-uis.js +83 -0
  754. package/dist/tools/ontology-tool-uis.js.map +1 -0
  755. package/dist/tools/orchestration-tool-uis.cjs +586 -0
  756. package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
  757. package/dist/tools/orchestration-tool-uis.d.ts +141 -0
  758. package/dist/tools/orchestration-tool-uis.js +586 -0
  759. package/dist/tools/orchestration-tool-uis.js.map +1 -0
  760. package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
  761. package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
  762. package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
  763. package/dist/tools/presentation-edit-tool-uis.js +516 -0
  764. package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
  765. package/dist/tools/project-tool-uis.cjs +213 -0
  766. package/dist/tools/project-tool-uis.cjs.map +1 -0
  767. package/dist/tools/project-tool-uis.d.ts +14 -0
  768. package/dist/tools/project-tool-uis.js +213 -0
  769. package/dist/tools/project-tool-uis.js.map +1 -0
  770. package/dist/tools/sandbox-tool-uis.cjs +491 -0
  771. package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
  772. package/dist/tools/sandbox-tool-uis.d.ts +116 -0
  773. package/dist/tools/sandbox-tool-uis.js +491 -0
  774. package/dist/tools/sandbox-tool-uis.js.map +1 -0
  775. package/dist/tools/sheet-query-tool-ui.cjs +138 -0
  776. package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
  777. package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
  778. package/dist/tools/sheet-query-tool-ui.js +138 -0
  779. package/dist/tools/sheet-query-tool-ui.js.map +1 -0
  780. package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
  781. package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
  782. package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
  783. package/dist/tools/studio-screenshot-tool-uis.js +262 -0
  784. package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
  785. package/dist/tools/subagent-task-tool-ui.cjs +24 -475
  786. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  787. package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
  788. package/dist/tools/subagent-task-tool-ui.js +28 -479
  789. package/dist/tools/subagent-task-tool-ui.js.map +1 -1
  790. package/dist/tools/tool-summary.cjs +36 -0
  791. package/dist/tools/tool-summary.cjs.map +1 -1
  792. package/dist/tools/tool-summary.js +36 -0
  793. package/dist/tools/tool-summary.js.map +1 -1
  794. package/dist/tools/tool-uis.cjs +181 -53
  795. package/dist/tools/tool-uis.cjs.map +1 -1
  796. package/dist/tools/tool-uis.d.ts +40 -0
  797. package/dist/tools/tool-uis.js +183 -55
  798. package/dist/tools/tool-uis.js.map +1 -1
  799. package/dist/typed-interrupts/index.cjs +15 -0
  800. package/dist/typed-interrupts/index.cjs.map +1 -0
  801. package/dist/typed-interrupts/index.d.ts +20 -0
  802. package/dist/typed-interrupts/index.js +15 -0
  803. package/dist/typed-interrupts/index.js.map +1 -0
  804. package/dist/workbench/session-workbench-panes.cjs +6 -6
  805. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  806. package/package.json +28 -6
  807. package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
  808. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
  809. package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
  810. package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
  811. package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ const typedInterrupts = require("../../agent-runtime/src/typed-interrupts.cjs");
8
+ const typedInterruptKinds = require("../../agent-runtime/src/typed-interrupt-kinds.cjs");
9
+ const lucideReact = require("lucide-react");
10
+ const require$$0 = require("react");
11
+ const button = require("../../ui/button.cjs");
12
+ const interrupts = require("../../agent-runtime/src/interrupts.cjs");
13
+ function TypedInterruptNotice({
14
+ interrupt,
15
+ displayMessage,
16
+ variant,
17
+ readOnlyNotice = "Waiting for someone with edit access to respond.",
18
+ disabled = false,
19
+ resume,
20
+ cancel
21
+ }) {
22
+ const decline = () => {
23
+ if (interrupt.type === typedInterrupts.TypedInterruptType.HITL) {
24
+ resume == null ? void 0 : resume(typedInterruptKinds.typedApprovalResume({ action: "reject", reason: interrupts.HITL_REJECT_REASON }));
25
+ return;
26
+ }
27
+ cancel == null ? void 0 : cancel();
28
+ };
29
+ return /* @__PURE__ */ jsxRuntime.jsxs(
30
+ "div",
31
+ {
32
+ "data-testid": `typed-interrupt-${variant}`,
33
+ className: "w-full rounded-2xl border border-amber-300 bg-amber-50 px-4 py-3 text-amber-900",
34
+ children: [
35
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
36
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlertIcon, { className: "mt-0.5 size-4 shrink-0" }),
37
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
38
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-sm", children: variant === "read-only" ? "Input required" : "This request could not be displayed" }),
39
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "pt-1 text-amber-800 text-sm leading-snug", children: displayMessage || interrupt.message })
40
+ ] })
41
+ ] }),
42
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2 pt-3", children: variant === "read-only" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-amber-800 text-sm", children: readOnlyNotice }) : /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { size: "sm", variant: "outline", disabled, onClick: decline, children: [
43
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, {}),
44
+ "Cancel request"
45
+ ] }) })
46
+ ]
47
+ }
48
+ );
49
+ }
50
+ class TypedInterruptErrorBoundary extends require$$0.Component {
51
+ constructor() {
52
+ super(...arguments);
53
+ __publicField(this, "state", { hasError: false, resetKey: this.props.resetKey });
54
+ }
55
+ static getDerivedStateFromError() {
56
+ return { hasError: true };
57
+ }
58
+ static getDerivedStateFromProps(props, state) {
59
+ return props.resetKey === state.resetKey ? null : { hasError: false, resetKey: props.resetKey };
60
+ }
61
+ componentDidCatch(error, info) {
62
+ console.error("[athena] a typed interrupt card failed to render", error, info.componentStack);
63
+ }
64
+ render() {
65
+ return this.state.hasError ? this.props.fallback : this.props.children;
66
+ }
67
+ }
68
+ exports.TypedInterruptErrorBoundary = TypedInterruptErrorBoundary;
69
+ exports.TypedInterruptNotice = TypedInterruptNotice;
70
+ //# sourceMappingURL=typed-interrupt-notice.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-interrupt-notice.cjs","sources":["../../../src/chat/typed-interrupts/typed-interrupt-notice.tsx"],"sourcesContent":["import { HITL_REJECT_REASON } from '@athenaintel/agent-runtime';\nimport { type TypedInterruptPayload, TypedInterruptType } from '@athenaintel/agent-runtime/typed-interrupts';\nimport { typedApprovalResume } from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport { TriangleAlertIcon, XIcon } from 'lucide-react';\nimport { Component, type ErrorInfo, type ReactNode } from 'react';\nimport { Button } from '../../ui/button';\nimport type { TypedInterruptAnswer } from './typed-interrupt-types';\n\nexport interface TypedInterruptNoticeProps {\n interrupt: TypedInterruptPayload;\n /** The park's message as the engine shows it (its timeout suffix gone once the timer stopped). */\n displayMessage: string;\n /**\n * `read-only`: a viewer without edit rights sees the park's message and who\n * answers it. `render-failed`: the card threw; the message and the one\n * honest answer, a cancel.\n */\n variant: 'read-only' | 'render-failed';\n readOnlyNotice?: ReactNode;\n disabled?: boolean;\n resume?: (value: TypedInterruptAnswer) => void;\n cancel?: () => void;\n}\n\n/**\n * What the typed slot shows when a card cannot (Olympus's\n * `TypedInterruptNotice`): never a generic answer, which a typed raiser's\n * resume model would refuse. The only answer every raiser reads as a clean\n * decline is a cancel (`FormCancelledError`), and for a tool-raised approval,\n * whose model takes only approve or reject, a reject.\n */\nexport function TypedInterruptNotice({\n interrupt,\n displayMessage,\n variant,\n readOnlyNotice = 'Waiting for someone with edit access to respond.',\n disabled = false,\n resume,\n cancel,\n}: TypedInterruptNoticeProps) {\n const decline = () => {\n if (interrupt.type === TypedInterruptType.HITL) {\n resume?.(typedApprovalResume({ action: 'reject', reason: HITL_REJECT_REASON }));\n return;\n }\n cancel?.();\n };\n return (\n <div\n data-testid={`typed-interrupt-${variant}`}\n className=\"w-full rounded-2xl border border-amber-300 bg-amber-50 px-4 py-3 text-amber-900\"\n >\n <div className=\"flex items-start gap-3\">\n <TriangleAlertIcon className=\"mt-0.5 size-4 shrink-0\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"font-semibold text-sm\">\n {variant === 'read-only' ? 'Input required' : 'This request could not be displayed'}\n </p>\n <p className=\"pt-1 text-amber-800 text-sm leading-snug\">{displayMessage || interrupt.message}</p>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2 pt-3\">\n {variant === 'read-only' ? (\n <p className=\"text-amber-800 text-sm\">{readOnlyNotice}</p>\n ) : (\n <Button size=\"sm\" variant=\"outline\" disabled={disabled} onClick={decline}>\n <XIcon />\n Cancel request\n </Button>\n )}\n </div>\n </div>\n );\n}\n\ninterface TypedInterruptErrorBoundaryProps {\n /** A change here (a new park) clears a caught error so the next card renders. */\n resetKey: string | undefined;\n fallback: ReactNode;\n children: ReactNode;\n}\n\ninterface TypedInterruptErrorBoundaryState {\n hasError: boolean;\n resetKey: string | undefined;\n}\n\n/** A card that throws never takes the chat with it: the fallback stands in until the next park. */\nexport class TypedInterruptErrorBoundary extends Component<\n TypedInterruptErrorBoundaryProps,\n TypedInterruptErrorBoundaryState\n> {\n state: TypedInterruptErrorBoundaryState = { hasError: false, resetKey: this.props.resetKey };\n\n static getDerivedStateFromError(): Partial<TypedInterruptErrorBoundaryState> {\n return { hasError: true };\n }\n\n static getDerivedStateFromProps(\n props: TypedInterruptErrorBoundaryProps,\n state: TypedInterruptErrorBoundaryState,\n ): Partial<TypedInterruptErrorBoundaryState> | null {\n return props.resetKey === state.resetKey ? null : { hasError: false, resetKey: props.resetKey };\n }\n\n componentDidCatch(error: unknown, info: ErrorInfo): void {\n console.error('[athena] a typed interrupt card failed to render', error, info.componentStack);\n }\n\n render(): ReactNode {\n return this.state.hasError ? this.props.fallback : this.props.children;\n }\n}\n"],"names":["TypedInterruptType","typedApprovalResume","HITL_REJECT_REASON","jsxs","jsx","TriangleAlertIcon","Button","XIcon","Component"],"mappings":";;;;;;;;;;;;AA+BO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAA8B;AAC5B,QAAM,UAAU,MAAM;AACpB,QAAI,UAAU,SAASA,gBAAAA,mBAAmB,MAAM;AAC9C,uCAASC,oBAAAA,oBAAoB,EAAE,QAAQ,UAAU,QAAQC,WAAAA,mBAAA,CAAoB;AAC7E;AAAA,IACF;AACA;AAAA,EACF;AACA,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa,mBAAmB,OAAO;AAAA,MACvC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,UAAAC,2BAAAA,IAACC,YAAAA,mBAAA,EAAkB,WAAU,yBAAA,CAAyB;AAAA,UACtDF,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,YAAAC,+BAAC,OAAE,WAAU,yBACV,UAAA,YAAY,cAAc,mBAAmB,uCAChD;AAAA,2CACC,KAAA,EAAE,WAAU,4CAA4C,UAAA,kBAAkB,UAAU,QAAA,CAAQ;AAAA,UAAA,EAAA,CAC/F;AAAA,QAAA,GACF;AAAA,QACAA,2BAAAA,IAAC,SAAI,WAAU,0CACZ,sBAAY,cACXA,2BAAAA,IAAC,OAAE,WAAU,0BAA0B,0BAAe,IAEtDD,2BAAAA,KAACG,OAAAA,UAAO,MAAK,MAAK,SAAQ,WAAU,UAAoB,SAAS,SAC/D,UAAA;AAAA,UAAAF,2BAAAA,IAACG,YAAAA,OAAA,EAAM;AAAA,UAAE;AAAA,QAAA,EAAA,CAEX,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAeO,MAAM,oCAAoCC,WAAAA,UAG/C;AAAA,EAHK;AAAA;AAIL,iCAA0C,EAAE,UAAU,OAAO,UAAU,KAAK,MAAM,SAAA;AAAA;AAAA,EAElF,OAAO,2BAAsE;AAC3E,WAAO,EAAE,UAAU,KAAA;AAAA,EACrB;AAAA,EAEA,OAAO,yBACL,OACA,OACkD;AAClD,WAAO,MAAM,aAAa,MAAM,WAAW,OAAO,EAAE,UAAU,OAAO,UAAU,MAAM,SAAA;AAAA,EACvF;AAAA,EAEA,kBAAkB,OAAgB,MAAuB;AACvD,YAAQ,MAAM,oDAAoD,OAAO,KAAK,cAAc;AAAA,EAC9F;AAAA,EAEA,SAAoB;AAClB,WAAO,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,KAAK,MAAM;AAAA,EAChE;AACF;;;"}
@@ -0,0 +1,45 @@
1
+ import { type TypedInterruptPayload } from '../../agent-runtime/src/typed-interrupts';
2
+ import { Component, type ErrorInfo, type ReactNode } from 'react';
3
+ import type { TypedInterruptAnswer } from './typed-interrupt-types';
4
+ export interface TypedInterruptNoticeProps {
5
+ interrupt: TypedInterruptPayload;
6
+ /** The park's message as the engine shows it (its timeout suffix gone once the timer stopped). */
7
+ displayMessage: string;
8
+ /**
9
+ * `read-only`: a viewer without edit rights sees the park's message and who
10
+ * answers it. `render-failed`: the card threw; the message and the one
11
+ * honest answer, a cancel.
12
+ */
13
+ variant: 'read-only' | 'render-failed';
14
+ readOnlyNotice?: ReactNode;
15
+ disabled?: boolean;
16
+ resume?: (value: TypedInterruptAnswer) => void;
17
+ cancel?: () => void;
18
+ }
19
+ /**
20
+ * What the typed slot shows when a card cannot (Olympus's
21
+ * `TypedInterruptNotice`): never a generic answer, which a typed raiser's
22
+ * resume model would refuse. The only answer every raiser reads as a clean
23
+ * decline is a cancel (`FormCancelledError`), and for a tool-raised approval,
24
+ * whose model takes only approve or reject, a reject.
25
+ */
26
+ export declare function TypedInterruptNotice({ interrupt, displayMessage, variant, readOnlyNotice, disabled, resume, cancel, }: TypedInterruptNoticeProps): import("react").JSX.Element;
27
+ interface TypedInterruptErrorBoundaryProps {
28
+ /** A change here (a new park) clears a caught error so the next card renders. */
29
+ resetKey: string | undefined;
30
+ fallback: ReactNode;
31
+ children: ReactNode;
32
+ }
33
+ interface TypedInterruptErrorBoundaryState {
34
+ hasError: boolean;
35
+ resetKey: string | undefined;
36
+ }
37
+ /** A card that throws never takes the chat with it: the fallback stands in until the next park. */
38
+ export declare class TypedInterruptErrorBoundary extends Component<TypedInterruptErrorBoundaryProps, TypedInterruptErrorBoundaryState> {
39
+ state: TypedInterruptErrorBoundaryState;
40
+ static getDerivedStateFromError(): Partial<TypedInterruptErrorBoundaryState>;
41
+ static getDerivedStateFromProps(props: TypedInterruptErrorBoundaryProps, state: TypedInterruptErrorBoundaryState): Partial<TypedInterruptErrorBoundaryState> | null;
42
+ componentDidCatch(error: unknown, info: ErrorInfo): void;
43
+ render(): ReactNode;
44
+ }
45
+ export {};
@@ -0,0 +1,70 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { jsxs, jsx } from "react/jsx-runtime";
5
+ import { TypedInterruptType } from "../../agent-runtime/src/typed-interrupts.js";
6
+ import { typedApprovalResume } from "../../agent-runtime/src/typed-interrupt-kinds.js";
7
+ import { TriangleAlertIcon, XIcon } from "lucide-react";
8
+ import { Component } from "react";
9
+ import { Button } from "../../ui/button.js";
10
+ import { HITL_REJECT_REASON } from "../../agent-runtime/src/interrupts.js";
11
+ function TypedInterruptNotice({
12
+ interrupt,
13
+ displayMessage,
14
+ variant,
15
+ readOnlyNotice = "Waiting for someone with edit access to respond.",
16
+ disabled = false,
17
+ resume,
18
+ cancel
19
+ }) {
20
+ const decline = () => {
21
+ if (interrupt.type === TypedInterruptType.HITL) {
22
+ resume == null ? void 0 : resume(typedApprovalResume({ action: "reject", reason: HITL_REJECT_REASON }));
23
+ return;
24
+ }
25
+ cancel == null ? void 0 : cancel();
26
+ };
27
+ return /* @__PURE__ */ jsxs(
28
+ "div",
29
+ {
30
+ "data-testid": `typed-interrupt-${variant}`,
31
+ className: "w-full rounded-2xl border border-amber-300 bg-amber-50 px-4 py-3 text-amber-900",
32
+ children: [
33
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
34
+ /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "mt-0.5 size-4 shrink-0" }),
35
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
36
+ /* @__PURE__ */ jsx("p", { className: "font-semibold text-sm", children: variant === "read-only" ? "Input required" : "This request could not be displayed" }),
37
+ /* @__PURE__ */ jsx("p", { className: "pt-1 text-amber-800 text-sm leading-snug", children: displayMessage || interrupt.message })
38
+ ] })
39
+ ] }),
40
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2 pt-3", children: variant === "read-only" ? /* @__PURE__ */ jsx("p", { className: "text-amber-800 text-sm", children: readOnlyNotice }) : /* @__PURE__ */ jsxs(Button, { size: "sm", variant: "outline", disabled, onClick: decline, children: [
41
+ /* @__PURE__ */ jsx(XIcon, {}),
42
+ "Cancel request"
43
+ ] }) })
44
+ ]
45
+ }
46
+ );
47
+ }
48
+ class TypedInterruptErrorBoundary extends Component {
49
+ constructor() {
50
+ super(...arguments);
51
+ __publicField(this, "state", { hasError: false, resetKey: this.props.resetKey });
52
+ }
53
+ static getDerivedStateFromError() {
54
+ return { hasError: true };
55
+ }
56
+ static getDerivedStateFromProps(props, state) {
57
+ return props.resetKey === state.resetKey ? null : { hasError: false, resetKey: props.resetKey };
58
+ }
59
+ componentDidCatch(error, info) {
60
+ console.error("[athena] a typed interrupt card failed to render", error, info.componentStack);
61
+ }
62
+ render() {
63
+ return this.state.hasError ? this.props.fallback : this.props.children;
64
+ }
65
+ }
66
+ export {
67
+ TypedInterruptErrorBoundary,
68
+ TypedInterruptNotice
69
+ };
70
+ //# sourceMappingURL=typed-interrupt-notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-interrupt-notice.js","sources":["../../../src/chat/typed-interrupts/typed-interrupt-notice.tsx"],"sourcesContent":["import { HITL_REJECT_REASON } from '@athenaintel/agent-runtime';\nimport { type TypedInterruptPayload, TypedInterruptType } from '@athenaintel/agent-runtime/typed-interrupts';\nimport { typedApprovalResume } from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport { TriangleAlertIcon, XIcon } from 'lucide-react';\nimport { Component, type ErrorInfo, type ReactNode } from 'react';\nimport { Button } from '../../ui/button';\nimport type { TypedInterruptAnswer } from './typed-interrupt-types';\n\nexport interface TypedInterruptNoticeProps {\n interrupt: TypedInterruptPayload;\n /** The park's message as the engine shows it (its timeout suffix gone once the timer stopped). */\n displayMessage: string;\n /**\n * `read-only`: a viewer without edit rights sees the park's message and who\n * answers it. `render-failed`: the card threw; the message and the one\n * honest answer, a cancel.\n */\n variant: 'read-only' | 'render-failed';\n readOnlyNotice?: ReactNode;\n disabled?: boolean;\n resume?: (value: TypedInterruptAnswer) => void;\n cancel?: () => void;\n}\n\n/**\n * What the typed slot shows when a card cannot (Olympus's\n * `TypedInterruptNotice`): never a generic answer, which a typed raiser's\n * resume model would refuse. The only answer every raiser reads as a clean\n * decline is a cancel (`FormCancelledError`), and for a tool-raised approval,\n * whose model takes only approve or reject, a reject.\n */\nexport function TypedInterruptNotice({\n interrupt,\n displayMessage,\n variant,\n readOnlyNotice = 'Waiting for someone with edit access to respond.',\n disabled = false,\n resume,\n cancel,\n}: TypedInterruptNoticeProps) {\n const decline = () => {\n if (interrupt.type === TypedInterruptType.HITL) {\n resume?.(typedApprovalResume({ action: 'reject', reason: HITL_REJECT_REASON }));\n return;\n }\n cancel?.();\n };\n return (\n <div\n data-testid={`typed-interrupt-${variant}`}\n className=\"w-full rounded-2xl border border-amber-300 bg-amber-50 px-4 py-3 text-amber-900\"\n >\n <div className=\"flex items-start gap-3\">\n <TriangleAlertIcon className=\"mt-0.5 size-4 shrink-0\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"font-semibold text-sm\">\n {variant === 'read-only' ? 'Input required' : 'This request could not be displayed'}\n </p>\n <p className=\"pt-1 text-amber-800 text-sm leading-snug\">{displayMessage || interrupt.message}</p>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2 pt-3\">\n {variant === 'read-only' ? (\n <p className=\"text-amber-800 text-sm\">{readOnlyNotice}</p>\n ) : (\n <Button size=\"sm\" variant=\"outline\" disabled={disabled} onClick={decline}>\n <XIcon />\n Cancel request\n </Button>\n )}\n </div>\n </div>\n );\n}\n\ninterface TypedInterruptErrorBoundaryProps {\n /** A change here (a new park) clears a caught error so the next card renders. */\n resetKey: string | undefined;\n fallback: ReactNode;\n children: ReactNode;\n}\n\ninterface TypedInterruptErrorBoundaryState {\n hasError: boolean;\n resetKey: string | undefined;\n}\n\n/** A card that throws never takes the chat with it: the fallback stands in until the next park. */\nexport class TypedInterruptErrorBoundary extends Component<\n TypedInterruptErrorBoundaryProps,\n TypedInterruptErrorBoundaryState\n> {\n state: TypedInterruptErrorBoundaryState = { hasError: false, resetKey: this.props.resetKey };\n\n static getDerivedStateFromError(): Partial<TypedInterruptErrorBoundaryState> {\n return { hasError: true };\n }\n\n static getDerivedStateFromProps(\n props: TypedInterruptErrorBoundaryProps,\n state: TypedInterruptErrorBoundaryState,\n ): Partial<TypedInterruptErrorBoundaryState> | null {\n return props.resetKey === state.resetKey ? null : { hasError: false, resetKey: props.resetKey };\n }\n\n componentDidCatch(error: unknown, info: ErrorInfo): void {\n console.error('[athena] a typed interrupt card failed to render', error, info.componentStack);\n }\n\n render(): ReactNode {\n return this.state.hasError ? this.props.fallback : this.props.children;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AA+BO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAA8B;AAC5B,QAAM,UAAU,MAAM;AACpB,QAAI,UAAU,SAAS,mBAAmB,MAAM;AAC9C,uCAAS,oBAAoB,EAAE,QAAQ,UAAU,QAAQ,mBAAA,CAAoB;AAC7E;AAAA,IACF;AACA;AAAA,EACF;AACA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa,mBAAmB,OAAO;AAAA,MACvC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,UAAA,oBAAC,mBAAA,EAAkB,WAAU,yBAAA,CAAyB;AAAA,UACtD,qBAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,YAAA,oBAAC,OAAE,WAAU,yBACV,UAAA,YAAY,cAAc,mBAAmB,uCAChD;AAAA,gCACC,KAAA,EAAE,WAAU,4CAA4C,UAAA,kBAAkB,UAAU,QAAA,CAAQ;AAAA,UAAA,EAAA,CAC/F;AAAA,QAAA,GACF;AAAA,QACA,oBAAC,SAAI,WAAU,0CACZ,sBAAY,cACX,oBAAC,OAAE,WAAU,0BAA0B,0BAAe,IAEtD,qBAAC,UAAO,MAAK,MAAK,SAAQ,WAAU,UAAoB,SAAS,SAC/D,UAAA;AAAA,UAAA,oBAAC,OAAA,EAAM;AAAA,UAAE;AAAA,QAAA,EAAA,CAEX,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAeO,MAAM,oCAAoC,UAG/C;AAAA,EAHK;AAAA;AAIL,iCAA0C,EAAE,UAAU,OAAO,UAAU,KAAK,MAAM,SAAA;AAAA;AAAA,EAElF,OAAO,2BAAsE;AAC3E,WAAO,EAAE,UAAU,KAAA;AAAA,EACrB;AAAA,EAEA,OAAO,yBACL,OACA,OACkD;AAClD,WAAO,MAAM,aAAa,MAAM,WAAW,OAAO,EAAE,UAAU,OAAO,UAAU,MAAM,SAAA;AAAA,EACvF;AAAA,EAEA,kBAAkB,OAAgB,MAAuB;AACvD,YAAQ,MAAM,oDAAoD,OAAO,KAAK,cAAc;AAAA,EAC9F;AAAA,EAEA,SAAoB;AAClB,WAAO,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,KAAK,MAAM;AAAA,EAChE;AACF;"}
@@ -0,0 +1,76 @@
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 typedInterruptBody = require("./typed-interrupt-body.cjs");
6
+ const typedInterruptNotice = require("./typed-interrupt-notice.cjs");
7
+ const useStatewireTypedInterrupt = require("./use-statewire-typed-interrupt.cjs");
8
+ const cnfast = require("cnfast");
9
+ const TypedInterruptPanel = ({
10
+ classNames,
11
+ readOnly = false,
12
+ readOnlyNotice,
13
+ isHandledElsewhere,
14
+ confirmDecision,
15
+ onResumeRejected,
16
+ pendingResumeGraceMs
17
+ }) => {
18
+ const engine = useStatewireTypedInterrupt.useStatewireTypedInterrupt({ confirmDecision, onResumeRejected, pendingResumeGraceMs });
19
+ const { interrupt, request, requestId } = engine;
20
+ const handledRef = require$$0.useRef({
21
+ requestId: void 0,
22
+ handled: false
23
+ });
24
+ let handledElsewhere = false;
25
+ if (request) {
26
+ handledElsewhere = (isHandledElsewhere == null ? void 0 : isHandledElsewhere({ request, hitl: null, actionRequests: [] })) ?? false;
27
+ handledRef.current = { requestId, handled: handledElsewhere };
28
+ } else if (requestId !== void 0 && handledRef.current.requestId === requestId) {
29
+ handledElsewhere = handledRef.current.handled;
30
+ }
31
+ if (!interrupt || engine.isHiddenByRunning || handledElsewhere) return null;
32
+ const notice = (variant) => /* @__PURE__ */ jsxRuntime.jsx(
33
+ typedInterruptNotice.TypedInterruptNotice,
34
+ {
35
+ interrupt,
36
+ displayMessage: engine.displayMessage,
37
+ variant,
38
+ readOnlyNotice,
39
+ disabled: engine.isLoading || engine.isConversationStreaming,
40
+ resume: engine.resume,
41
+ cancel: engine.cancel
42
+ }
43
+ );
44
+ return /* @__PURE__ */ jsxRuntime.jsxs(
45
+ "section",
46
+ {
47
+ "aria-label": "Input required",
48
+ "data-testid": "typed-interrupt-card",
49
+ "data-interrupt-source": interrupt.source,
50
+ className: cnfast.cn("aui-approval-card aui-typed-interrupt-card flex w-full flex-col gap-2", classNames == null ? void 0 : classNames.root),
51
+ children: [
52
+ readOnly ? notice("read-only") : /* @__PURE__ */ jsxRuntime.jsx(typedInterruptNotice.TypedInterruptErrorBoundary, { resetKey: requestId, fallback: notice("render-failed"), children: /* @__PURE__ */ jsxRuntime.jsx(
53
+ typedInterruptBody.TypedInterruptBody,
54
+ {
55
+ interrupt,
56
+ resume: engine.resume,
57
+ cancel: engine.cancel,
58
+ engine
59
+ },
60
+ requestId
61
+ ) }),
62
+ engine.failure && !readOnly ? /* @__PURE__ */ jsxRuntime.jsx(
63
+ "p",
64
+ {
65
+ role: "alert",
66
+ "data-testid": "typed-interrupt-error",
67
+ className: "rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-destructive text-sm",
68
+ children: engine.failure
69
+ }
70
+ ) : null
71
+ ]
72
+ }
73
+ );
74
+ };
75
+ exports.TypedInterruptPanel = TypedInterruptPanel;
76
+ //# sourceMappingURL=typed-interrupt-panel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-interrupt-panel.cjs","sources":["../../../src/chat/typed-interrupts/typed-interrupt-panel.tsx"],"sourcesContent":["import { type FC, useRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport type { StatewireTypedInterruptCardProps } from './StatewireTypedInterruptCard';\nimport { TypedInterruptBody } from './typed-interrupt-body';\nimport { TypedInterruptErrorBoundary, TypedInterruptNotice } from './typed-interrupt-notice';\nimport { useStatewireTypedInterrupt } from './use-statewire-typed-interrupt';\n\n/**\n * What `StatewireTypedInterruptCard` loads on the first typed park: the engine\n * (`useStatewireTypedInterrupt`), the card for the park's kind\n * (`typed-interrupt-body.tsx`), the viewer's notice and the render-failure\n * fallback, and the host's reason when it refuses an answer.\n *\n * Mount only inside a statewire aui scope.\n */\nexport const TypedInterruptPanel: FC<StatewireTypedInterruptCardProps> = ({\n classNames,\n readOnly = false,\n readOnlyNotice,\n isHandledElsewhere,\n confirmDecision,\n onResumeRejected,\n pendingResumeGraceMs,\n}) => {\n const engine = useStatewireTypedInterrupt({ confirmDecision, onResumeRejected, pendingResumeGraceMs });\n const { interrupt, request, requestId } = engine;\n\n // Whether another surface answers this park: asked while it is live, and\n // kept while its answer is held (the request folds away until the verdict).\n const handledRef = useRef<{ requestId: string | undefined; handled: boolean }>({\n requestId: undefined,\n handled: false,\n });\n let handledElsewhere = false;\n if (request) {\n handledElsewhere = isHandledElsewhere?.({ request, hitl: null, actionRequests: [] }) ?? false;\n handledRef.current = { requestId, handled: handledElsewhere };\n } else if (requestId !== undefined && handledRef.current.requestId === requestId) {\n handledElsewhere = handledRef.current.handled;\n }\n\n if (!interrupt || engine.isHiddenByRunning || handledElsewhere) return null;\n\n const notice = (variant: 'read-only' | 'render-failed') => (\n <TypedInterruptNotice\n interrupt={interrupt}\n displayMessage={engine.displayMessage}\n variant={variant}\n readOnlyNotice={readOnlyNotice}\n disabled={engine.isLoading || engine.isConversationStreaming}\n resume={engine.resume}\n cancel={engine.cancel}\n />\n );\n\n return (\n <section\n aria-label=\"Input required\"\n data-testid=\"typed-interrupt-card\"\n data-interrupt-source={interrupt.source}\n // The approval card's class: the waiting-on-you banner scrolls to it.\n className={cn('aui-approval-card aui-typed-interrupt-card flex w-full flex-col gap-2', classNames?.root)}\n >\n {readOnly ? (\n notice('read-only')\n ) : (\n <TypedInterruptErrorBoundary resetKey={requestId} fallback={notice('render-failed')}>\n {/* One card per park: the next one (two file requests parked together)\n never inherits what the person did in this one. */}\n <TypedInterruptBody\n key={requestId}\n interrupt={interrupt}\n resume={engine.resume}\n cancel={engine.cancel}\n engine={engine}\n />\n </TypedInterruptErrorBoundary>\n )}\n {engine.failure && !readOnly ? (\n <p\n role=\"alert\"\n data-testid=\"typed-interrupt-error\"\n className=\"rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-destructive text-sm\"\n >\n {engine.failure}\n </p>\n ) : null}\n </section>\n );\n};\n"],"names":["useStatewireTypedInterrupt","useRef","jsx","TypedInterruptNotice","jsxs","cn","TypedInterruptErrorBoundary","TypedInterruptBody"],"mappings":";;;;;;;;AAeO,MAAM,sBAA4D,CAAC;AAAA,EACxE;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAASA,2BAAAA,2BAA2B,EAAE,iBAAiB,kBAAkB,sBAAsB;AACrG,QAAM,EAAE,WAAW,SAAS,UAAA,IAAc;AAI1C,QAAM,aAAaC,WAAAA,OAA4D;AAAA,IAC7E,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AACD,MAAI,mBAAmB;AACvB,MAAI,SAAS;AACX,wBAAmB,yDAAqB,EAAE,SAAS,MAAM,MAAM,gBAAgB,GAAC,OAAQ;AACxF,eAAW,UAAU,EAAE,WAAW,SAAS,iBAAA;AAAA,EAC7C,WAAW,cAAc,UAAa,WAAW,QAAQ,cAAc,WAAW;AAChF,uBAAmB,WAAW,QAAQ;AAAA,EACxC;AAEA,MAAI,CAAC,aAAa,OAAO,qBAAqB,iBAAkB,QAAO;AAEvE,QAAM,SAAS,CAAC,YACdC,2BAAAA;AAAAA,IAACC,qBAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB;AAAA,MACA;AAAA,MACA,UAAU,OAAO,aAAa,OAAO;AAAA,MACrC,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,IAAA;AAAA,EAAA;AAInB,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,yBAAuB,UAAU;AAAA,MAEjC,WAAWC,OAAAA,GAAG,yEAAyE,yCAAY,IAAI;AAAA,MAEtG,UAAA;AAAA,QAAA,WACC,OAAO,WAAW,IAElBH,2BAAAA,IAACI,qBAAAA,6BAAA,EAA4B,UAAU,WAAW,UAAU,OAAO,eAAe,GAGhF,UAAAJ,2BAAAA;AAAAA,UAACK,mBAAAA;AAAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ,OAAO;AAAA,YACf,QAAQ,OAAO;AAAA,YACf;AAAA,UAAA;AAAA,UAJK;AAAA,QAAA,GAMT;AAAA,QAED,OAAO,WAAW,CAAC,WAClBL,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAA,OAAO;AAAA,UAAA;AAAA,QAAA,IAER;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;;"}
@@ -0,0 +1,11 @@
1
+ import { type FC } from 'react';
2
+ import type { StatewireTypedInterruptCardProps } from './StatewireTypedInterruptCard';
3
+ /**
4
+ * What `StatewireTypedInterruptCard` loads on the first typed park: the engine
5
+ * (`useStatewireTypedInterrupt`), the card for the park's kind
6
+ * (`typed-interrupt-body.tsx`), the viewer's notice and the render-failure
7
+ * fallback, and the host's reason when it refuses an answer.
8
+ *
9
+ * Mount only inside a statewire aui scope.
10
+ */
11
+ export declare const TypedInterruptPanel: FC<StatewireTypedInterruptCardProps>;
@@ -0,0 +1,76 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useRef } from "react";
3
+ import { TypedInterruptBody } from "./typed-interrupt-body.js";
4
+ import { TypedInterruptErrorBoundary, TypedInterruptNotice } from "./typed-interrupt-notice.js";
5
+ import { useStatewireTypedInterrupt } from "./use-statewire-typed-interrupt.js";
6
+ import { cn } from "cnfast";
7
+ const TypedInterruptPanel = ({
8
+ classNames,
9
+ readOnly = false,
10
+ readOnlyNotice,
11
+ isHandledElsewhere,
12
+ confirmDecision,
13
+ onResumeRejected,
14
+ pendingResumeGraceMs
15
+ }) => {
16
+ const engine = useStatewireTypedInterrupt({ confirmDecision, onResumeRejected, pendingResumeGraceMs });
17
+ const { interrupt, request, requestId } = engine;
18
+ const handledRef = useRef({
19
+ requestId: void 0,
20
+ handled: false
21
+ });
22
+ let handledElsewhere = false;
23
+ if (request) {
24
+ handledElsewhere = (isHandledElsewhere == null ? void 0 : isHandledElsewhere({ request, hitl: null, actionRequests: [] })) ?? false;
25
+ handledRef.current = { requestId, handled: handledElsewhere };
26
+ } else if (requestId !== void 0 && handledRef.current.requestId === requestId) {
27
+ handledElsewhere = handledRef.current.handled;
28
+ }
29
+ if (!interrupt || engine.isHiddenByRunning || handledElsewhere) return null;
30
+ const notice = (variant) => /* @__PURE__ */ jsx(
31
+ TypedInterruptNotice,
32
+ {
33
+ interrupt,
34
+ displayMessage: engine.displayMessage,
35
+ variant,
36
+ readOnlyNotice,
37
+ disabled: engine.isLoading || engine.isConversationStreaming,
38
+ resume: engine.resume,
39
+ cancel: engine.cancel
40
+ }
41
+ );
42
+ return /* @__PURE__ */ jsxs(
43
+ "section",
44
+ {
45
+ "aria-label": "Input required",
46
+ "data-testid": "typed-interrupt-card",
47
+ "data-interrupt-source": interrupt.source,
48
+ className: cn("aui-approval-card aui-typed-interrupt-card flex w-full flex-col gap-2", classNames == null ? void 0 : classNames.root),
49
+ children: [
50
+ readOnly ? notice("read-only") : /* @__PURE__ */ jsx(TypedInterruptErrorBoundary, { resetKey: requestId, fallback: notice("render-failed"), children: /* @__PURE__ */ jsx(
51
+ TypedInterruptBody,
52
+ {
53
+ interrupt,
54
+ resume: engine.resume,
55
+ cancel: engine.cancel,
56
+ engine
57
+ },
58
+ requestId
59
+ ) }),
60
+ engine.failure && !readOnly ? /* @__PURE__ */ jsx(
61
+ "p",
62
+ {
63
+ role: "alert",
64
+ "data-testid": "typed-interrupt-error",
65
+ className: "rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-destructive text-sm",
66
+ children: engine.failure
67
+ }
68
+ ) : null
69
+ ]
70
+ }
71
+ );
72
+ };
73
+ export {
74
+ TypedInterruptPanel
75
+ };
76
+ //# sourceMappingURL=typed-interrupt-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-interrupt-panel.js","sources":["../../../src/chat/typed-interrupts/typed-interrupt-panel.tsx"],"sourcesContent":["import { type FC, useRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport type { StatewireTypedInterruptCardProps } from './StatewireTypedInterruptCard';\nimport { TypedInterruptBody } from './typed-interrupt-body';\nimport { TypedInterruptErrorBoundary, TypedInterruptNotice } from './typed-interrupt-notice';\nimport { useStatewireTypedInterrupt } from './use-statewire-typed-interrupt';\n\n/**\n * What `StatewireTypedInterruptCard` loads on the first typed park: the engine\n * (`useStatewireTypedInterrupt`), the card for the park's kind\n * (`typed-interrupt-body.tsx`), the viewer's notice and the render-failure\n * fallback, and the host's reason when it refuses an answer.\n *\n * Mount only inside a statewire aui scope.\n */\nexport const TypedInterruptPanel: FC<StatewireTypedInterruptCardProps> = ({\n classNames,\n readOnly = false,\n readOnlyNotice,\n isHandledElsewhere,\n confirmDecision,\n onResumeRejected,\n pendingResumeGraceMs,\n}) => {\n const engine = useStatewireTypedInterrupt({ confirmDecision, onResumeRejected, pendingResumeGraceMs });\n const { interrupt, request, requestId } = engine;\n\n // Whether another surface answers this park: asked while it is live, and\n // kept while its answer is held (the request folds away until the verdict).\n const handledRef = useRef<{ requestId: string | undefined; handled: boolean }>({\n requestId: undefined,\n handled: false,\n });\n let handledElsewhere = false;\n if (request) {\n handledElsewhere = isHandledElsewhere?.({ request, hitl: null, actionRequests: [] }) ?? false;\n handledRef.current = { requestId, handled: handledElsewhere };\n } else if (requestId !== undefined && handledRef.current.requestId === requestId) {\n handledElsewhere = handledRef.current.handled;\n }\n\n if (!interrupt || engine.isHiddenByRunning || handledElsewhere) return null;\n\n const notice = (variant: 'read-only' | 'render-failed') => (\n <TypedInterruptNotice\n interrupt={interrupt}\n displayMessage={engine.displayMessage}\n variant={variant}\n readOnlyNotice={readOnlyNotice}\n disabled={engine.isLoading || engine.isConversationStreaming}\n resume={engine.resume}\n cancel={engine.cancel}\n />\n );\n\n return (\n <section\n aria-label=\"Input required\"\n data-testid=\"typed-interrupt-card\"\n data-interrupt-source={interrupt.source}\n // The approval card's class: the waiting-on-you banner scrolls to it.\n className={cn('aui-approval-card aui-typed-interrupt-card flex w-full flex-col gap-2', classNames?.root)}\n >\n {readOnly ? (\n notice('read-only')\n ) : (\n <TypedInterruptErrorBoundary resetKey={requestId} fallback={notice('render-failed')}>\n {/* One card per park: the next one (two file requests parked together)\n never inherits what the person did in this one. */}\n <TypedInterruptBody\n key={requestId}\n interrupt={interrupt}\n resume={engine.resume}\n cancel={engine.cancel}\n engine={engine}\n />\n </TypedInterruptErrorBoundary>\n )}\n {engine.failure && !readOnly ? (\n <p\n role=\"alert\"\n data-testid=\"typed-interrupt-error\"\n className=\"rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-destructive text-sm\"\n >\n {engine.failure}\n </p>\n ) : null}\n </section>\n );\n};\n"],"names":[],"mappings":";;;;;;AAeO,MAAM,sBAA4D,CAAC;AAAA,EACxE;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAAS,2BAA2B,EAAE,iBAAiB,kBAAkB,sBAAsB;AACrG,QAAM,EAAE,WAAW,SAAS,UAAA,IAAc;AAI1C,QAAM,aAAa,OAA4D;AAAA,IAC7E,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AACD,MAAI,mBAAmB;AACvB,MAAI,SAAS;AACX,wBAAmB,yDAAqB,EAAE,SAAS,MAAM,MAAM,gBAAgB,GAAC,OAAQ;AACxF,eAAW,UAAU,EAAE,WAAW,SAAS,iBAAA;AAAA,EAC7C,WAAW,cAAc,UAAa,WAAW,QAAQ,cAAc,WAAW;AAChF,uBAAmB,WAAW,QAAQ;AAAA,EACxC;AAEA,MAAI,CAAC,aAAa,OAAO,qBAAqB,iBAAkB,QAAO;AAEvE,QAAM,SAAS,CAAC,YACd;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB;AAAA,MACA;AAAA,MACA,UAAU,OAAO,aAAa,OAAO;AAAA,MACrC,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,IAAA;AAAA,EAAA;AAInB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,yBAAuB,UAAU;AAAA,MAEjC,WAAW,GAAG,yEAAyE,yCAAY,IAAI;AAAA,MAEtG,UAAA;AAAA,QAAA,WACC,OAAO,WAAW,IAElB,oBAAC,6BAAA,EAA4B,UAAU,WAAW,UAAU,OAAO,eAAe,GAGhF,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ,OAAO;AAAA,YACf,QAAQ,OAAO;AAAA,YACf;AAAA,UAAA;AAAA,UAJK;AAAA,QAAA,GAMT;AAAA,QAED,OAAO,WAAW,CAAC,WAClB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAA,OAAO;AAAA,UAAA;AAAA,QAAA,IAER;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -0,0 +1,46 @@
1
+ import type { TypedInterruptPayload } from '../../agent-runtime/src/typed-interrupts';
2
+ /**
3
+ * The engine state a typed card renders from (`useStatewireTypedInterrupt`'s
4
+ * read side). The same fields as Olympus's `TypedInterruptEngineSlice`, so a
5
+ * host with an engine of its own can hand these cards its slice.
6
+ */
7
+ export interface TypedInterruptEngineSlice {
8
+ /** The pending request's id: unique per park, the key for anything per park. */
9
+ requestId: string | undefined;
10
+ /** An answer is in flight, or its passkey check is open. */
11
+ isLoading: boolean;
12
+ /** The thread is running: the agent moved on, or is processing the answer. */
13
+ isConversationStreaming: boolean;
14
+ /** The backend's timer answers this park at a deadline (display only: the timer is the backend's). */
15
+ hasTimeout: boolean;
16
+ timeoutSeconds: number | null;
17
+ timeoutRemaining: number | null;
18
+ isTimedOut: boolean;
19
+ isTimeoutCancelled: boolean;
20
+ /**
21
+ * Whether `cancelTimeout` can stop the timer (agora keeps it per
22
+ * conversation, which the host must name). `false` keeps the countdown and
23
+ * hides Stop timer; absent reads as `true`.
24
+ */
25
+ canCancelTimeout?: boolean;
26
+ /** Stop the timer for good (kept server-side), giving the person all the time they need. */
27
+ cancelTimeout: () => void | Promise<void>;
28
+ /** The park's message, without its timeout suffix once the timer is stopped. */
29
+ displayMessage: string;
30
+ /** The conversation the park belongs to, when the host names it (drafts and the timer need it). */
31
+ currentThreadId: string | null;
32
+ }
33
+ /** The value a card answers with: its kind's resume shape (the engine stamps the park on it). */
34
+ export type TypedInterruptAnswer = Readonly<Record<string, unknown>>;
35
+ /**
36
+ * What every typed card receives: the parked payload, the two ways to answer
37
+ * it, and the engine slice it renders from. Cards are pure renderers over
38
+ * these; the engine owns the request, the lock and the passkey check.
39
+ */
40
+ export interface TypedInterruptCardProps {
41
+ interrupt: TypedInterruptPayload;
42
+ resume: (value: TypedInterruptAnswer) => void;
43
+ /** `{ action: 'cancel' }`: the raiser ends the interrupted operation. */
44
+ cancel: () => void;
45
+ engine: TypedInterruptEngineSlice;
46
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactQuery = require("@tanstack/react-query");
4
+ const require$$0 = require("react");
5
+ const useAthenaRestQuery = require("../../lib/use-athena-rest-query.cjs");
6
+ const typedInterruptGraphql = require("./typed-interrupt-graphql.cjs");
7
+ const DRAFT_SAVE_DEBOUNCE_MS = 2e3;
8
+ function draftQueryKey(conversation, interruptId) {
9
+ return [
10
+ "athena-sdk",
11
+ "interrupt-draft",
12
+ (conversation == null ? void 0 : conversation.auth.backendUrl) ?? "",
13
+ (conversation == null ? void 0 : conversation.principal) ?? "",
14
+ (conversation == null ? void 0 : conversation.threadId) ?? "",
15
+ interruptId
16
+ ];
17
+ }
18
+ function useInterruptDraft({
19
+ conversation,
20
+ interruptId
21
+ }) {
22
+ const queryClient = useAthenaRestQuery.useAthenaQueryClient();
23
+ const { data, isFetching } = reactQuery.useQuery(
24
+ {
25
+ queryKey: draftQueryKey(conversation, interruptId),
26
+ queryFn: ({ signal }) => conversation ? typedInterruptGraphql.readInterruptDraft(conversation, interruptId, signal) : null,
27
+ enabled: conversation !== null,
28
+ staleTime: 0,
29
+ refetchOnMount: "always",
30
+ retry: false,
31
+ refetchOnWindowFocus: false
32
+ },
33
+ queryClient
34
+ );
35
+ return { draft: conversation ? data : null, isLoading: conversation !== null && isFetching };
36
+ }
37
+ function useInterruptDraftSave({
38
+ conversation,
39
+ interruptId,
40
+ payload,
41
+ enabled
42
+ }) {
43
+ const queryClient = useAthenaRestQuery.useAthenaQueryClient();
44
+ const [status, setStatus] = require$$0.useState("idle");
45
+ const { mutate } = reactQuery.useMutation(
46
+ {
47
+ mutationKey: ["athena-sdk", "interrupt-draft-save"],
48
+ mutationFn: (variables) => typedInterruptGraphql.saveInterruptDraft(variables.conversation, variables.interruptId, variables.answers),
49
+ retry: false
50
+ },
51
+ queryClient
52
+ );
53
+ const latest = require$$0.useRef({ conversation, interruptId, payload });
54
+ latest.current = { conversation, interruptId, payload };
55
+ const timerRef = require$$0.useRef(null);
56
+ const save = require$$0.useCallback(() => {
57
+ timerRef.current = null;
58
+ const { conversation: target, interruptId: key, payload: answers } = latest.current;
59
+ if (!target) return;
60
+ mutate(
61
+ { conversation: target, interruptId: key, answers },
62
+ {
63
+ onSuccess: () => {
64
+ setStatus("saved");
65
+ queryClient.setQueryData(draftQueryKey(target, key), answers);
66
+ },
67
+ onError: () => setStatus("error")
68
+ }
69
+ );
70
+ }, [mutate, queryClient]);
71
+ const flush = require$$0.useCallback(() => {
72
+ if (timerRef.current === null) return;
73
+ clearTimeout(timerRef.current);
74
+ save();
75
+ }, [save]);
76
+ require$$0.useEffect(() => {
77
+ setStatus("idle");
78
+ return () => {
79
+ if (timerRef.current !== null) clearTimeout(timerRef.current);
80
+ timerRef.current = null;
81
+ };
82
+ }, [interruptId]);
83
+ require$$0.useEffect(() => {
84
+ if (!enabled || !conversation) return;
85
+ setStatus("saving");
86
+ if (timerRef.current !== null) clearTimeout(timerRef.current);
87
+ timerRef.current = setTimeout(save, DRAFT_SAVE_DEBOUNCE_MS);
88
+ }, [enabled, conversation, payload, save]);
89
+ require$$0.useEffect(() => {
90
+ if (!enabled) return void 0;
91
+ const onBlur = () => flush();
92
+ const onVisibility = () => {
93
+ if (document.visibilityState === "hidden") flush();
94
+ };
95
+ window.addEventListener("blur", onBlur);
96
+ document.addEventListener("visibilitychange", onVisibility);
97
+ return () => {
98
+ window.removeEventListener("blur", onBlur);
99
+ document.removeEventListener("visibilitychange", onVisibility);
100
+ };
101
+ }, [enabled, flush]);
102
+ return { flush, status };
103
+ }
104
+ exports.useInterruptDraft = useInterruptDraft;
105
+ exports.useInterruptDraftSave = useInterruptDraftSave;
106
+ //# sourceMappingURL=use-interrupt-draft.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-interrupt-draft.cjs","sources":["../../../src/chat/typed-interrupts/use-interrupt-draft.ts"],"sourcesContent":["/**\n * A questionnaire's draft, kept on agora as Olympus keeps it: read once when\n * the card mounts, so answers typed on another surface (or before a reload)\n * come back, and saved two seconds after each change, at once when the window\n * loses focus or hides. agora's timer worker reads a draft's presence as \"the\n * person is answering\" and holds the timeout while it exists; its content is\n * never a resume value. Saves are best-effort: a failed one only shows on the\n * card's indicator.\n */\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useAthenaQueryClient } from '../../lib/use-athena-rest-query';\nimport {\n readInterruptDraft,\n saveInterruptDraft,\n type TypedInterruptConversation,\n} from './typed-interrupt-graphql';\n\nconst DRAFT_SAVE_DEBOUNCE_MS = 2000;\n\nexport type DraftSaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nfunction draftQueryKey(conversation: TypedInterruptConversation | null, interruptId: string) {\n return [\n 'athena-sdk',\n 'interrupt-draft',\n conversation?.auth.backendUrl ?? '',\n conversation?.principal ?? '',\n conversation?.threadId ?? '',\n interruptId,\n ] as const;\n}\n\n/**\n * The draft agora holds for `interruptId` (`null` without one), read again\n * each time a card mounts: another app may have saved answers since. Loading\n * while that read is in flight, so a card restores the latest draft, not a\n * cached one; a read the network holds (offline) does not keep it waiting.\n */\nexport function useInterruptDraft({\n conversation,\n interruptId,\n}: {\n conversation: TypedInterruptConversation | null;\n interruptId: string;\n}): { draft: unknown; isLoading: boolean } {\n const queryClient = useAthenaQueryClient();\n const { data, isFetching } = useQuery(\n {\n queryKey: draftQueryKey(conversation, interruptId),\n queryFn: ({ signal }) =>\n conversation ? readInterruptDraft(conversation, interruptId, signal) : null,\n enabled: conversation !== null,\n staleTime: 0,\n refetchOnMount: 'always',\n retry: false,\n refetchOnWindowFocus: false,\n },\n queryClient,\n );\n return { draft: conversation ? data : null, isLoading: conversation !== null && isFetching };\n}\n\n/**\n * Saves `payload` under `interruptId` two seconds after it last changed while\n * `enabled`; `flush` saves a pending change at once. A pending save never\n * lands under the next park's key, and none outlives the card.\n */\nexport function useInterruptDraftSave({\n conversation,\n interruptId,\n payload,\n enabled,\n}: {\n conversation: TypedInterruptConversation | null;\n interruptId: string;\n payload: unknown;\n enabled: boolean;\n}): { flush: () => void; status: DraftSaveStatus } {\n const queryClient = useAthenaQueryClient();\n const [status, setStatus] = useState<DraftSaveStatus>('idle');\n const { mutate } = useMutation(\n {\n mutationKey: ['athena-sdk', 'interrupt-draft-save'],\n mutationFn: (variables: { conversation: TypedInterruptConversation; interruptId: string; answers: unknown }) =>\n saveInterruptDraft(variables.conversation, variables.interruptId, variables.answers),\n retry: false,\n },\n queryClient,\n );\n const latest = useRef({ conversation, interruptId, payload });\n latest.current = { conversation, interruptId, payload };\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const save = useCallback(() => {\n timerRef.current = null;\n const { conversation: target, interruptId: key, payload: answers } = latest.current;\n if (!target) return;\n mutate(\n { conversation: target, interruptId: key, answers },\n {\n onSuccess: () => {\n setStatus('saved');\n // A card mounted again for this park restores what was saved last.\n queryClient.setQueryData(draftQueryKey(target, key), answers);\n },\n onError: () => setStatus('error'),\n },\n );\n }, [mutate, queryClient]);\n\n const flush = useCallback(() => {\n if (timerRef.current === null) return;\n clearTimeout(timerRef.current);\n save();\n }, [save]);\n\n // Another park: what was pending belonged to the last one.\n useEffect(() => {\n setStatus('idle');\n return () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = null;\n };\n }, [interruptId]);\n\n useEffect(() => {\n if (!enabled || !conversation) return;\n setStatus('saving');\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(save, DRAFT_SAVE_DEBOUNCE_MS);\n }, [enabled, conversation, payload, save]);\n\n useEffect(() => {\n if (!enabled) return undefined;\n const onBlur = () => flush();\n const onVisibility = () => {\n if (document.visibilityState === 'hidden') flush();\n };\n window.addEventListener('blur', onBlur);\n document.addEventListener('visibilitychange', onVisibility);\n return () => {\n window.removeEventListener('blur', onBlur);\n document.removeEventListener('visibilitychange', onVisibility);\n };\n }, [enabled, flush]);\n\n return { flush, status };\n}\n"],"names":["useAthenaQueryClient","useQuery","readInterruptDraft","useState","useMutation","saveInterruptDraft","useRef","useCallback","useEffect"],"mappings":";;;;;;AAkBA,MAAM,yBAAyB;AAI/B,SAAS,cAAc,cAAiD,aAAqB;AAC3F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,KACA,6CAAc,KAAK,eAAc;AAAA,KACjC,6CAAc,cAAa;AAAA,KAC3B,6CAAc,aAAY;AAAA,IAC1B;AAAA,EAAA;AAEJ;AAQO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAG2C;AACzC,QAAM,cAAcA,mBAAAA,qBAAA;AACpB,QAAM,EAAE,MAAM,WAAA,IAAeC,WAAAA;AAAAA,IAC3B;AAAA,MACE,UAAU,cAAc,cAAc,WAAW;AAAA,MACjD,SAAS,CAAC,EAAE,OAAA,MACV,eAAeC,sBAAAA,mBAAmB,cAAc,aAAa,MAAM,IAAI;AAAA,MACzE,SAAS,iBAAiB;AAAA,MAC1B,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,sBAAsB;AAAA,IAAA;AAAA,IAExB;AAAA,EAAA;AAEF,SAAO,EAAE,OAAO,eAAe,OAAO,MAAM,WAAW,iBAAiB,QAAQ,WAAA;AAClF;AAOO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKmD;AACjD,QAAM,cAAcF,mBAAAA,qBAAA;AACpB,QAAM,CAAC,QAAQ,SAAS,IAAIG,WAAAA,SAA0B,MAAM;AAC5D,QAAM,EAAE,WAAWC,WAAAA;AAAAA,IACjB;AAAA,MACE,aAAa,CAAC,cAAc,sBAAsB;AAAA,MAClD,YAAY,CAAC,cACXC,sBAAAA,mBAAmB,UAAU,cAAc,UAAU,aAAa,UAAU,OAAO;AAAA,MACrF,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEF,QAAM,SAASC,WAAAA,OAAO,EAAE,cAAc,aAAa,SAAS;AAC5D,SAAO,UAAU,EAAE,cAAc,aAAa,QAAA;AAC9C,QAAM,WAAWA,WAAAA,OAA6C,IAAI;AAElE,QAAM,OAAOC,WAAAA,YAAY,MAAM;AAC7B,aAAS,UAAU;AACnB,UAAM,EAAE,cAAc,QAAQ,aAAa,KAAK,SAAS,YAAY,OAAO;AAC5E,QAAI,CAAC,OAAQ;AACb;AAAA,MACE,EAAE,cAAc,QAAQ,aAAa,KAAK,QAAA;AAAA,MAC1C;AAAA,QACE,WAAW,MAAM;AACf,oBAAU,OAAO;AAEjB,sBAAY,aAAa,cAAc,QAAQ,GAAG,GAAG,OAAO;AAAA,QAC9D;AAAA,QACA,SAAS,MAAM,UAAU,OAAO;AAAA,MAAA;AAAA,IAClC;AAAA,EAEJ,GAAG,CAAC,QAAQ,WAAW,CAAC;AAExB,QAAM,QAAQA,WAAAA,YAAY,MAAM;AAC9B,QAAI,SAAS,YAAY,KAAM;AAC/B,iBAAa,SAAS,OAAO;AAC7B,SAAA;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAGTC,aAAAA,UAAU,MAAM;AACd,cAAU,MAAM;AAChB,WAAO,MAAM;AACX,UAAI,SAAS,YAAY,KAAM,cAAa,SAAS,OAAO;AAC5D,eAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhBA,aAAAA,UAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,aAAc;AAC/B,cAAU,QAAQ;AAClB,QAAI,SAAS,YAAY,KAAM,cAAa,SAAS,OAAO;AAC5D,aAAS,UAAU,WAAW,MAAM,sBAAsB;AAAA,EAC5D,GAAG,CAAC,SAAS,cAAc,SAAS,IAAI,CAAC;AAEzCA,aAAAA,UAAU,MAAM;AACd,QAAI,CAAC,QAAS,QAAO;AACrB,UAAM,SAAS,MAAM,MAAA;AACrB,UAAM,eAAe,MAAM;AACzB,UAAI,SAAS,oBAAoB,SAAU,OAAA;AAAA,IAC7C;AACA,WAAO,iBAAiB,QAAQ,MAAM;AACtC,aAAS,iBAAiB,oBAAoB,YAAY;AAC1D,WAAO,MAAM;AACX,aAAO,oBAAoB,QAAQ,MAAM;AACzC,eAAS,oBAAoB,oBAAoB,YAAY;AAAA,IAC/D;AAAA,EACF,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO,EAAE,OAAO,OAAA;AAClB;;;"}
@@ -0,0 +1,29 @@
1
+ import { type TypedInterruptConversation } from './typed-interrupt-graphql';
2
+ export type DraftSaveStatus = 'idle' | 'saving' | 'saved' | 'error';
3
+ /**
4
+ * The draft agora holds for `interruptId` (`null` without one), read again
5
+ * each time a card mounts: another app may have saved answers since. Loading
6
+ * while that read is in flight, so a card restores the latest draft, not a
7
+ * cached one; a read the network holds (offline) does not keep it waiting.
8
+ */
9
+ export declare function useInterruptDraft({ conversation, interruptId, }: {
10
+ conversation: TypedInterruptConversation | null;
11
+ interruptId: string;
12
+ }): {
13
+ draft: unknown;
14
+ isLoading: boolean;
15
+ };
16
+ /**
17
+ * Saves `payload` under `interruptId` two seconds after it last changed while
18
+ * `enabled`; `flush` saves a pending change at once. A pending save never
19
+ * lands under the next park's key, and none outlives the card.
20
+ */
21
+ export declare function useInterruptDraftSave({ conversation, interruptId, payload, enabled, }: {
22
+ conversation: TypedInterruptConversation | null;
23
+ interruptId: string;
24
+ payload: unknown;
25
+ enabled: boolean;
26
+ }): {
27
+ flush: () => void;
28
+ status: DraftSaveStatus;
29
+ };