@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,289 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { readTypedHitlContext, typedApprovalResume } from "../../agent-runtime/src/typed-interrupt-kinds.js";
3
+ import { SparklesIcon, MailIcon, ShieldIcon, FileTextIcon, OctagonAlertIcon, AlertTriangleIcon, InfoIcon } from "lucide-react";
4
+ import { useState, useMemo } from "react";
5
+ import { ChatMessageBody } from "../../chat-ui/rich-text/chat-message-body.js";
6
+ import { Button } from "../../ui/button.js";
7
+ import { AddFeedbackButton, RejectReasonField, APPROVE_BUTTON_CLASS } from "./approval-cards.js";
8
+ import { InterruptCardShell, WaitForStreamingHint, HoverHint, WAIT_FOR_STREAMING_MESSAGE, formatKeyAsName } from "./interrupt-card-shell.js";
9
+ import { normalizeJsonSchema, schemaDefaults, JsonSchemaForm, readJsonSchemaForm } from "./json-schema-form.js";
10
+ import { parsePendingApprovalContext } from "../../agent-runtime/src/interrupts.js";
11
+ import { cn } from "cnfast";
12
+ function ContextBlock({ context }) {
13
+ if (Object.keys(context).length === 0) return null;
14
+ return /* @__PURE__ */ jsxs("div", { className: "rounded-md bg-muted/60 p-3", children: [
15
+ /* @__PURE__ */ jsx("p", { className: "mb-2 font-medium text-foreground text-sm", children: "Context:" }),
16
+ /* @__PURE__ */ jsx("pre", { className: "max-h-40 overflow-auto whitespace-pre-wrap break-words text-muted-foreground text-xs", children: JSON.stringify(context, null, 2) })
17
+ ] });
18
+ }
19
+ function SchemaForm({
20
+ schema: rawSchema,
21
+ resume,
22
+ cancel,
23
+ engine,
24
+ className
25
+ }) {
26
+ const schema = useMemo(() => normalizeJsonSchema(rawSchema), [rawSchema]);
27
+ const [value, setValue] = useState(() => schemaDefaults(schema));
28
+ const [drafts, setDrafts] = useState({});
29
+ const [errors, setErrors] = useState({});
30
+ const { isLoading, isConversationStreaming } = engine;
31
+ const actionsDisabled = isLoading || isConversationStreaming;
32
+ const onSubmit = (event) => {
33
+ event.preventDefault();
34
+ const read = readJsonSchemaForm({ schema, value, drafts });
35
+ if ("errors" in read) {
36
+ setErrors(read.errors);
37
+ return;
38
+ }
39
+ setErrors({});
40
+ resume(read.value);
41
+ };
42
+ return /* @__PURE__ */ jsxs("form", { className: cn("rounded-md border p-4", className), onSubmit, noValidate: true, children: [
43
+ /* @__PURE__ */ jsx(
44
+ JsonSchemaForm,
45
+ {
46
+ schema,
47
+ value,
48
+ onChange: setValue,
49
+ drafts,
50
+ onDraftsChange: setDrafts,
51
+ errors,
52
+ disabled: actionsDisabled
53
+ }
54
+ ),
55
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 flex gap-2", children: [
56
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(Button, { type: "submit", disabled: actionsDisabled, children: isLoading ? "Submitting..." : "Submit" }) }),
57
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: cancel, disabled: actionsDisabled, children: "Cancel" }) })
58
+ ] })
59
+ ] });
60
+ }
61
+ function FormInterruptCard({ interrupt, resume, cancel, engine }) {
62
+ const formId = interrupt.context.form_id;
63
+ return /* @__PURE__ */ jsx(
64
+ InterruptCardShell,
65
+ {
66
+ title: interrupt.message,
67
+ description: typeof formId === "string" && formId ? `Form: ${formId}` : void 0,
68
+ icon: /* @__PURE__ */ jsx(FileTextIcon, {}),
69
+ hasTimeout: engine.hasTimeout,
70
+ onInteraction: engine.cancelTimeout,
71
+ content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", "data-testid": "typed-interrupt-form", children: [
72
+ /* @__PURE__ */ jsx(
73
+ SchemaForm,
74
+ {
75
+ schema: interrupt.schema,
76
+ resume,
77
+ cancel,
78
+ engine,
79
+ className: "border-border bg-background"
80
+ }
81
+ ),
82
+ /* @__PURE__ */ jsx(ContextBlock, { context: interrupt.context })
83
+ ] })
84
+ }
85
+ );
86
+ }
87
+ function CustomInterruptCard({ interrupt, resume, cancel, engine }) {
88
+ const { isLoading, isConversationStreaming } = engine;
89
+ const actionsDisabled = isLoading || isConversationStreaming;
90
+ const hasSchema = typeof interrupt.schema === "object" && interrupt.schema !== null;
91
+ return /* @__PURE__ */ jsx(
92
+ InterruptCardShell,
93
+ {
94
+ title: interrupt.message,
95
+ description: interrupt.source ? `Custom workflow: ${interrupt.source}` : void 0,
96
+ icon: /* @__PURE__ */ jsx(SparklesIcon, {}),
97
+ hasTimeout: engine.hasTimeout,
98
+ onInteraction: engine.cancelTimeout,
99
+ content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", "data-testid": "typed-interrupt-custom", children: [
100
+ hasSchema ? /* @__PURE__ */ jsx(
101
+ SchemaForm,
102
+ {
103
+ schema: interrupt.schema,
104
+ resume,
105
+ cancel,
106
+ engine,
107
+ className: "border-purple-200 bg-purple-50/50"
108
+ }
109
+ ) : null,
110
+ /* @__PURE__ */ jsx(ContextBlock, { context: interrupt.context }),
111
+ hasSchema ? null : /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
112
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(Button, { onClick: () => resume({}), disabled: actionsDisabled, children: isLoading ? "Processing..." : "Continue" }) }),
113
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: cancel, disabled: actionsDisabled, children: "Cancel" }) })
114
+ ] })
115
+ ] })
116
+ }
117
+ );
118
+ }
119
+ const HIDDEN_ARG_KEYS = /* @__PURE__ */ new Set([
120
+ "catalog_id",
121
+ "asset_id",
122
+ "workspace_id",
123
+ "user_id",
124
+ "event_id",
125
+ "thread_id",
126
+ "message_id",
127
+ "draft_id",
128
+ "reply_to_message_id",
129
+ "attachment_id"
130
+ ]);
131
+ const MAX_NESTING_DEPTH = 3;
132
+ const MAX_LIST_ITEMS = 12;
133
+ function looksLikeInternalId(value) {
134
+ return typeof value === "string" && /^(asset|catalog|user|workspace)_[a-f0-9-]{8,}$/i.test(value);
135
+ }
136
+ function visibleToolArgEntries(args) {
137
+ return Object.entries(args).filter(([key, value]) => !HIDDEN_ARG_KEYS.has(key) && !looksLikeInternalId(value));
138
+ }
139
+ function isPrimitive(value) {
140
+ return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
141
+ }
142
+ function ArgValue({ value, depth }) {
143
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "—" });
144
+ if (isPrimitive(value)) return /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words text-foreground", children: String(value) });
145
+ if (Array.isArray(value)) {
146
+ if (value.length === 0) return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "None" });
147
+ if (value.every(isPrimitive)) return /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words text-foreground", children: value.join(", ") });
148
+ if (depth >= MAX_NESTING_DEPTH) return /* @__PURE__ */ jsx("code", { className: "min-w-0 break-all font-mono text-xs", children: JSON.stringify(value) });
149
+ const shown = value.slice(0, MAX_LIST_ITEMS);
150
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
151
+ shown.map((item, index) => (
152
+ // Position is the only identity a list entry has.
153
+ /* @__PURE__ */ jsx("div", { className: "rounded border border-border bg-background px-2 py-1", children: /* @__PURE__ */ jsx(ArgValue, { value: item, depth: depth + 1 }) }, index)
154
+ )),
155
+ value.length > shown.length ? /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground text-xs", children: [
156
+ "+",
157
+ value.length - shown.length,
158
+ " more"
159
+ ] }) : null
160
+ ] });
161
+ }
162
+ if (typeof value === "object") {
163
+ if (depth >= MAX_NESTING_DEPTH) return /* @__PURE__ */ jsx("code", { className: "min-w-0 break-all font-mono text-xs", children: JSON.stringify(value) });
164
+ const entries = visibleToolArgEntries(value);
165
+ if (entries.length === 0) return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "—" });
166
+ return /* @__PURE__ */ jsx(ArgRows, { entries, depth: depth + 1 });
167
+ }
168
+ return /* @__PURE__ */ jsx("code", { className: "min-w-0 break-all font-mono text-xs", children: JSON.stringify(value) });
169
+ }
170
+ function ArgRows({ entries, depth }) {
171
+ return /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: entries.map(([key, value]) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 gap-2 text-sm", children: [
172
+ /* @__PURE__ */ jsx("span", { className: "w-24 shrink-0 font-medium text-muted-foreground", children: formatKeyAsName(key) }),
173
+ /* @__PURE__ */ jsx(ArgValue, { value, depth })
174
+ ] }, key)) });
175
+ }
176
+ function textField(args, key) {
177
+ const value = args[key];
178
+ if (typeof value === "string") return value;
179
+ if (Array.isArray(value)) return value.filter((each) => typeof each === "string").join(", ");
180
+ return void 0;
181
+ }
182
+ function EmailPreview({ args }) {
183
+ const rows = [
184
+ ["To", textField(args, "to")],
185
+ ["CC", textField(args, "cc")],
186
+ ["BCC", textField(args, "bcc")],
187
+ ["Subject", textField(args, "subject")]
188
+ ];
189
+ const body = textField(args, "body");
190
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
191
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5", children: rows.map(
192
+ ([label, value]) => value ? /* @__PURE__ */ jsxs("div", { className: "flex gap-2 text-sm", children: [
193
+ /* @__PURE__ */ jsx("span", { className: "w-16 shrink-0 font-medium text-muted-foreground", children: label }),
194
+ /* @__PURE__ */ jsx("span", { className: cn("text-foreground", label === "Subject" && "font-medium"), children: value })
195
+ ] }, label) : null
196
+ ) }),
197
+ body ? /* @__PURE__ */ jsxs(Fragment, { children: [
198
+ /* @__PURE__ */ jsx("div", { className: "border-border border-t" }),
199
+ /* @__PURE__ */ jsx("div", { className: "max-h-64 min-h-16 overflow-auto text-foreground text-sm", children: /* @__PURE__ */ jsx(ChatMessageBody, { text: body }) })
200
+ ] }) : null
201
+ ] });
202
+ }
203
+ const WARNING_TONES = {
204
+ info: "text-muted-foreground",
205
+ warning: "text-amber-700",
206
+ critical: "text-red-700"
207
+ };
208
+ function ApprovalContextPanel({ context }) {
209
+ const parsed = parsePendingApprovalContext(context);
210
+ if (!parsed) return null;
211
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-md border border-border bg-muted/60 p-3", "data-testid": "typed-interrupt-approval-context", children: [
212
+ parsed.headline ? /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2", children: [
213
+ /* @__PURE__ */ jsx(SparklesIcon, { className: "mt-0.5 size-3.5 shrink-0 text-primary" }),
214
+ /* @__PURE__ */ jsx("p", { className: "font-medium text-foreground text-sm", children: parsed.headline })
215
+ ] }) : null,
216
+ parsed.summary ? /* @__PURE__ */ jsx("p", { className: "text-foreground text-sm", children: parsed.summary }) : null,
217
+ parsed.facts.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1", children: parsed.facts.map((fact) => /* @__PURE__ */ jsxs("div", { className: "flex gap-2 text-sm", children: [
218
+ /* @__PURE__ */ jsx("span", { className: "w-28 shrink-0 font-medium text-muted-foreground", children: fact.label }),
219
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words text-foreground", children: fact.value })
220
+ ] }, fact.label)) }) : null,
221
+ parsed.warnings.map((warning) => {
222
+ const Icon = warning.severity === "critical" ? OctagonAlertIcon : warning.severity === "warning" ? AlertTriangleIcon : InfoIcon;
223
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-1.5 text-xs", WARNING_TONES[warning.severity]), children: [
224
+ /* @__PURE__ */ jsx(Icon, { className: "size-3.5 shrink-0" }),
225
+ /* @__PURE__ */ jsx("span", { children: warning.message })
226
+ ] }, warning.message);
227
+ })
228
+ ] });
229
+ }
230
+ function isEmailCall(toolId, args) {
231
+ return Boolean((toolId == null ? void 0 : toolId.toLowerCase().includes("email")) && "to" in args && "subject" in args);
232
+ }
233
+ function HitlInterruptCard({ interrupt, resume, engine }) {
234
+ const [reason, setReason] = useState("");
235
+ const [showFeedback, setShowFeedback] = useState(false);
236
+ const { isLoading, hasTimeout, cancelTimeout, displayMessage, isConversationStreaming } = engine;
237
+ const { toolId, toolArgs, approvalContext } = readTypedHitlContext(interrupt);
238
+ const emailMode = isEmailCall(toolId, toolArgs);
239
+ const visibleArgs = visibleToolArgEntries(toolArgs);
240
+ const actionsDisabled = isLoading || isConversationStreaming;
241
+ const feedbackHoldsApprove = reason.trim() !== "";
242
+ const approveDisabled = actionsDisabled || feedbackHoldsApprove;
243
+ const approveHint = isConversationStreaming ? WAIT_FOR_STREAMING_MESSAGE : feedbackHoldsApprove ? "Clear the feedback above to approve, or click Reject to send it with the rejection." : null;
244
+ const approveButton = /* @__PURE__ */ jsx(
245
+ Button,
246
+ {
247
+ onClick: () => resume(typedApprovalResume({ action: "approve" })),
248
+ disabled: approveDisabled,
249
+ className: APPROVE_BUTTON_CLASS,
250
+ children: isLoading ? "Processing..." : emailMode ? "Send Email" : "Approve"
251
+ }
252
+ );
253
+ return /* @__PURE__ */ jsx(
254
+ InterruptCardShell,
255
+ {
256
+ title: emailMode ? "Review Email" : "Human Approval Required",
257
+ description: displayMessage,
258
+ icon: emailMode ? /* @__PURE__ */ jsx(MailIcon, {}) : /* @__PURE__ */ jsx(ShieldIcon, {}),
259
+ hasTimeout,
260
+ onInteraction: cancelTimeout,
261
+ content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", "data-testid": "typed-interrupt-hitl", children: [
262
+ toolId ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: formatKeyAsName(toolId) }) : null,
263
+ /* @__PURE__ */ jsx(ApprovalContextPanel, { context: approvalContext }),
264
+ emailMode ? /* @__PURE__ */ jsx("div", { className: "rounded-md border border-border bg-muted/60 p-3", children: /* @__PURE__ */ jsx(EmailPreview, { args: toolArgs }) }) : visibleArgs.length > 0 ? /* @__PURE__ */ jsx("div", { className: "rounded-md border border-border bg-muted/60 p-3", children: /* @__PURE__ */ jsx(ArgRows, { entries: visibleArgs, depth: 0 }) }) : null,
265
+ showFeedback ? /* @__PURE__ */ jsx(RejectReasonField, { label: "Feedback (optional)", value: reason, onChange: setReason, disabled: isLoading }) : null
266
+ ] }),
267
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
268
+ approveHint ? /* @__PURE__ */ jsx(HoverHint, { label: approveHint, children: approveButton }) : approveButton,
269
+ /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
270
+ Button,
271
+ {
272
+ variant: "outline",
273
+ onClick: () => resume(typedApprovalResume({ action: "reject", reason: reason || void 0 })),
274
+ disabled: actionsDisabled,
275
+ children: isLoading ? "Processing..." : emailMode ? "Don't Send" : "Reject"
276
+ }
277
+ ) }),
278
+ showFeedback ? null : /* @__PURE__ */ jsx(AddFeedbackButton, { onClick: () => setShowFeedback(true), className: "ml-auto px-2 py-1" })
279
+ ] })
280
+ }
281
+ );
282
+ }
283
+ export {
284
+ CustomInterruptCard,
285
+ FormInterruptCard,
286
+ HitlInterruptCard,
287
+ visibleToolArgEntries
288
+ };
289
+ //# sourceMappingURL=form-cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-cards.js","sources":["../../../src/chat/typed-interrupts/form-cards.tsx"],"sourcesContent":["/**\n * The typed parks answered with what their raiser asks for in a schema or a\n * gated call: a form (`raise_form_interrupt`, Olympus's `FormInterruptUi`), a\n * `custom` park with no card of its own (`CustomInterruptUi`), and a\n * tool-raised approval (`raise_hitl_interrupt`, `HITLInterruptUi`).\n *\n * The tool-raised approval shows the call's arguments as rows (internal ids\n * left out), an email's fields when the tool sends one, and what the backend\n * resolved about the call (`approval_context`); approving is a person's\n * decision, which the engine confirms with the host's passkey check and agora\n * holds to a signed-in person. Olympus's bespoke reviews for that card (its\n * email and calendar composer, the default-account picker, history and browser\n * previews) need Olympus's own data stacks and stay there; no tool raises one\n * of those calls as a typed approval today.\n */\nimport { parsePendingApprovalContext } from '@athenaintel/agent-runtime';\nimport { readTypedHitlContext, typedApprovalResume } from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport {\n AlertTriangleIcon,\n FileTextIcon,\n InfoIcon,\n MailIcon,\n OctagonAlertIcon,\n ShieldIcon,\n SparklesIcon,\n} from 'lucide-react';\nimport { type FormEvent, useMemo, useState } from 'react';\nimport { ChatMessageBody } from '../../chat-ui/rich-text/chat-message-body';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { AddFeedbackButton, APPROVE_BUTTON_CLASS, RejectReasonField } from './approval-cards';\nimport {\n formatKeyAsName,\n HoverHint,\n InterruptCardShell,\n WAIT_FOR_STREAMING_MESSAGE,\n WaitForStreamingHint,\n} from './interrupt-card-shell';\nimport {\n JsonSchemaForm,\n type JsonSchemaDrafts,\n normalizeJsonSchema,\n readJsonSchemaForm,\n schemaDefaults,\n} from './json-schema-form';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nfunction ContextBlock({ context }: { context: Readonly<Record<string, unknown>> }) {\n if (Object.keys(context).length === 0) return null;\n return (\n <div className=\"rounded-md bg-muted/60 p-3\">\n <p className=\"mb-2 font-medium text-foreground text-sm\">Context:</p>\n <pre className=\"max-h-40 overflow-auto whitespace-pre-wrap break-words text-muted-foreground text-xs\">\n {JSON.stringify(context, null, 2)}\n </pre>\n </div>\n );\n}\n\n/** A schema's fields with Submit and Cancel; Submit checks the schema first. */\nfunction SchemaForm({\n schema: rawSchema,\n resume,\n cancel,\n engine,\n className,\n}: Pick<TypedInterruptCardProps, 'resume' | 'cancel' | 'engine'> & { schema: unknown; className?: string }) {\n const schema = useMemo(() => normalizeJsonSchema(rawSchema), [rawSchema]);\n const [value, setValue] = useState<Record<string, unknown>>(() => schemaDefaults(schema));\n const [drafts, setDrafts] = useState<JsonSchemaDrafts>({});\n const [errors, setErrors] = useState<Record<string, string>>({});\n const { isLoading, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const onSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const read = readJsonSchemaForm({ schema, value, drafts });\n if ('errors' in read) {\n setErrors(read.errors);\n return;\n }\n setErrors({});\n resume(read.value);\n };\n return (\n <form className={cn('rounded-md border p-4', className)} onSubmit={onSubmit} noValidate>\n <JsonSchemaForm\n schema={schema}\n value={value}\n onChange={setValue}\n drafts={drafts}\n onDraftsChange={setDrafts}\n errors={errors}\n disabled={actionsDisabled}\n />\n <div className=\"mt-4 flex gap-2\">\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button type=\"submit\" disabled={actionsDisabled}>\n {isLoading ? 'Submitting...' : 'Submit'}\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button type=\"button\" variant=\"outline\" onClick={cancel} disabled={actionsDisabled}>\n Cancel\n </Button>\n </WaitForStreamingHint>\n </div>\n </form>\n );\n}\n\nexport function FormInterruptCard({ interrupt, resume, cancel, engine }: TypedInterruptCardProps) {\n const formId = interrupt.context.form_id;\n return (\n <InterruptCardShell\n title={interrupt.message}\n description={typeof formId === 'string' && formId ? `Form: ${formId}` : undefined}\n icon={<FileTextIcon />}\n hasTimeout={engine.hasTimeout}\n onInteraction={engine.cancelTimeout}\n content={\n <div className=\"flex flex-col gap-4\" data-testid=\"typed-interrupt-form\">\n <SchemaForm\n schema={interrupt.schema}\n resume={resume}\n cancel={cancel}\n engine={engine}\n className=\"border-border bg-background\"\n />\n <ContextBlock context={interrupt.context} />\n </div>\n }\n />\n );\n}\n\nexport function CustomInterruptCard({ interrupt, resume, cancel, engine }: TypedInterruptCardProps) {\n const { isLoading, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const hasSchema = typeof interrupt.schema === 'object' && interrupt.schema !== null;\n return (\n <InterruptCardShell\n title={interrupt.message}\n description={interrupt.source ? `Custom workflow: ${interrupt.source}` : undefined}\n icon={<SparklesIcon />}\n hasTimeout={engine.hasTimeout}\n onInteraction={engine.cancelTimeout}\n content={\n <div className=\"flex flex-col gap-4\" data-testid=\"typed-interrupt-custom\">\n {hasSchema ? (\n <SchemaForm\n schema={interrupt.schema}\n resume={resume}\n cancel={cancel}\n engine={engine}\n className=\"border-purple-200 bg-purple-50/50\"\n />\n ) : null}\n <ContextBlock context={interrupt.context} />\n {hasSchema ? null : (\n <div className=\"flex gap-2\">\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button onClick={() => resume({})} disabled={actionsDisabled}>\n {isLoading ? 'Processing...' : 'Continue'}\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button variant=\"outline\" onClick={cancel} disabled={actionsDisabled}>\n Cancel\n </Button>\n </WaitForStreamingHint>\n </div>\n )}\n </div>\n }\n />\n );\n}\n\n// ── The tool-raised approval ─────────────────────────────────────────────\n\n/** Keys that hold internal ids, never shown (Olympus's `HIDDEN_ARG_KEYS`). */\nconst HIDDEN_ARG_KEYS: ReadonlySet<string> = new Set([\n 'catalog_id',\n 'asset_id',\n 'workspace_id',\n 'user_id',\n 'event_id',\n 'thread_id',\n 'message_id',\n 'draft_id',\n 'reply_to_message_id',\n 'attachment_id',\n]);\nconst MAX_NESTING_DEPTH = 3;\nconst MAX_LIST_ITEMS = 12;\n\nfunction looksLikeInternalId(value: unknown): boolean {\n return typeof value === 'string' && /^(asset|catalog|user|workspace)_[a-f0-9-]{8,}$/i.test(value);\n}\n\n/** The arguments the preview shows as rows. */\nexport function visibleToolArgEntries(args: Readonly<Record<string, unknown>>): [string, unknown][] {\n return Object.entries(args).filter(([key, value]) => !HIDDEN_ARG_KEYS.has(key) && !looksLikeInternalId(value));\n}\n\nfunction isPrimitive(value: unknown): value is string | number | boolean {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction ArgValue({ value, depth }: { value: unknown; depth: number }) {\n if (value === null || value === undefined) return <span className=\"text-muted-foreground\">—</span>;\n if (isPrimitive(value)) return <span className=\"min-w-0 break-words text-foreground\">{String(value)}</span>;\n if (Array.isArray(value)) {\n if (value.length === 0) return <span className=\"text-muted-foreground\">None</span>;\n if (value.every(isPrimitive)) return <span className=\"min-w-0 break-words text-foreground\">{value.join(', ')}</span>;\n if (depth >= MAX_NESTING_DEPTH) return <code className=\"min-w-0 break-all font-mono text-xs\">{JSON.stringify(value)}</code>;\n const shown = value.slice(0, MAX_LIST_ITEMS);\n return (\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {shown.map((item, index) => (\n // Position is the only identity a list entry has.\n <div key={index} className=\"rounded border border-border bg-background px-2 py-1\">\n <ArgValue value={item} depth={depth + 1} />\n </div>\n ))}\n {value.length > shown.length ? (\n <p className=\"text-muted-foreground text-xs\">+{value.length - shown.length} more</p>\n ) : null}\n </div>\n );\n }\n if (typeof value === 'object') {\n if (depth >= MAX_NESTING_DEPTH) return <code className=\"min-w-0 break-all font-mono text-xs\">{JSON.stringify(value)}</code>;\n const entries = visibleToolArgEntries(value as Record<string, unknown>);\n if (entries.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return <ArgRows entries={entries} depth={depth + 1} />;\n }\n return <code className=\"min-w-0 break-all font-mono text-xs\">{JSON.stringify(value)}</code>;\n}\n\nfunction ArgRows({ entries, depth }: { entries: [string, unknown][]; depth: number }) {\n return (\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n {entries.map(([key, value]) => (\n <div key={key} className=\"flex min-w-0 gap-2 text-sm\">\n <span className=\"w-24 shrink-0 font-medium text-muted-foreground\">{formatKeyAsName(key)}</span>\n <ArgValue value={value} depth={depth} />\n </div>\n ))}\n </div>\n );\n}\n\nfunction textField(args: Readonly<Record<string, unknown>>, key: string): string | undefined {\n const value = args[key];\n if (typeof value === 'string') return value;\n if (Array.isArray(value)) return value.filter((each) => typeof each === 'string').join(', ');\n return undefined;\n}\n\nfunction EmailPreview({ args }: { args: Readonly<Record<string, unknown>> }) {\n const rows: [string, string | undefined][] = [\n ['To', textField(args, 'to')],\n ['CC', textField(args, 'cc')],\n ['BCC', textField(args, 'bcc')],\n ['Subject', textField(args, 'subject')],\n ];\n const body = textField(args, 'body');\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n {rows.map(([label, value]) =>\n value ? (\n <div key={label} className=\"flex gap-2 text-sm\">\n <span className=\"w-16 shrink-0 font-medium text-muted-foreground\">{label}</span>\n <span className={cn('text-foreground', label === 'Subject' && 'font-medium')}>{value}</span>\n </div>\n ) : null,\n )}\n </div>\n {body ? (\n <>\n <div className=\"border-border border-t\" />\n <div className=\"max-h-64 min-h-16 overflow-auto text-foreground text-sm\">\n <ChatMessageBody text={body} />\n </div>\n </>\n ) : null}\n </div>\n );\n}\n\nconst WARNING_TONES = {\n info: 'text-muted-foreground',\n warning: 'text-amber-700',\n critical: 'text-red-700',\n} as const;\n\nfunction ApprovalContextPanel({ context }: { context: unknown }) {\n const parsed = parsePendingApprovalContext(context);\n if (!parsed) return null;\n return (\n <div className=\"flex flex-col gap-2 rounded-md border border-border bg-muted/60 p-3\" data-testid=\"typed-interrupt-approval-context\">\n {parsed.headline ? (\n <div className=\"flex items-start gap-2\">\n <SparklesIcon className=\"mt-0.5 size-3.5 shrink-0 text-primary\" />\n <p className=\"font-medium text-foreground text-sm\">{parsed.headline}</p>\n </div>\n ) : null}\n {parsed.summary ? <p className=\"text-foreground text-sm\">{parsed.summary}</p> : null}\n {parsed.facts.length > 0 ? (\n <div className=\"flex flex-col gap-1\">\n {parsed.facts.map((fact) => (\n <div key={fact.label} className=\"flex gap-2 text-sm\">\n <span className=\"w-28 shrink-0 font-medium text-muted-foreground\">{fact.label}</span>\n <span className=\"min-w-0 break-words text-foreground\">{fact.value}</span>\n </div>\n ))}\n </div>\n ) : null}\n {parsed.warnings.map((warning) => {\n const Icon =\n warning.severity === 'critical' ? OctagonAlertIcon : warning.severity === 'warning' ? AlertTriangleIcon : InfoIcon;\n return (\n <div key={warning.message} className={cn('flex items-start gap-1.5 text-xs', WARNING_TONES[warning.severity])}>\n <Icon className=\"size-3.5 shrink-0\" />\n <span>{warning.message}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction isEmailCall(toolId: string | null, args: Readonly<Record<string, unknown>>): boolean {\n return Boolean(toolId?.toLowerCase().includes('email') && 'to' in args && 'subject' in args);\n}\n\nexport function HitlInterruptCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const [reason, setReason] = useState('');\n const [showFeedback, setShowFeedback] = useState(false);\n const { isLoading, hasTimeout, cancelTimeout, displayMessage, isConversationStreaming } = engine;\n const { toolId, toolArgs, approvalContext } = readTypedHitlContext(interrupt);\n const emailMode = isEmailCall(toolId, toolArgs);\n const visibleArgs = visibleToolArgEntries(toolArgs);\n const actionsDisabled = isLoading || isConversationStreaming;\n const feedbackHoldsApprove = reason.trim() !== '';\n const approveDisabled = actionsDisabled || feedbackHoldsApprove;\n const approveHint = isConversationStreaming\n ? WAIT_FOR_STREAMING_MESSAGE\n : feedbackHoldsApprove\n ? 'Clear the feedback above to approve, or click Reject to send it with the rejection.'\n : null;\n const approveButton = (\n <Button\n onClick={() => resume(typedApprovalResume({ action: 'approve' }))}\n disabled={approveDisabled}\n className={APPROVE_BUTTON_CLASS}\n >\n {isLoading ? 'Processing...' : emailMode ? 'Send Email' : 'Approve'}\n </Button>\n );\n return (\n <InterruptCardShell\n title={emailMode ? 'Review Email' : 'Human Approval Required'}\n description={displayMessage}\n icon={emailMode ? <MailIcon /> : <ShieldIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-3\" data-testid=\"typed-interrupt-hitl\">\n {toolId ? <p className=\"text-muted-foreground text-sm\">{formatKeyAsName(toolId)}</p> : null}\n <ApprovalContextPanel context={approvalContext} />\n {emailMode ? (\n <div className=\"rounded-md border border-border bg-muted/60 p-3\">\n <EmailPreview args={toolArgs} />\n </div>\n ) : visibleArgs.length > 0 ? (\n <div className=\"rounded-md border border-border bg-muted/60 p-3\">\n <ArgRows entries={visibleArgs} depth={0} />\n </div>\n ) : null}\n {showFeedback ? (\n <RejectReasonField label=\"Feedback (optional)\" value={reason} onChange={setReason} disabled={isLoading} />\n ) : null}\n </div>\n }\n actions={\n <>\n {approveHint ? <HoverHint label={approveHint}>{approveButton}</HoverHint> : approveButton}\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(typedApprovalResume({ action: 'reject', reason: reason || undefined }))}\n disabled={actionsDisabled}\n >\n {isLoading ? 'Processing...' : emailMode ? \"Don't Send\" : 'Reject'}\n </Button>\n </WaitForStreamingHint>\n {showFeedback ? null : <AddFeedbackButton onClick={() => setShowFeedback(true)} className=\"ml-auto px-2 py-1\" />}\n </>\n }\n />\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const lucideReact = require("lucide-react");
5
+ const require$$0 = require("react");
6
+ const cnfast = require("cnfast");
7
+ const WAIT_FOR_STREAMING_MESSAGE = "Please wait for the conversation to finish streaming";
8
+ const INTERACTION_DELAY_MS = 200;
9
+ function StatusDot({ status }) {
10
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 pt-1.5", children: /* @__PURE__ */ jsxRuntime.jsx(
11
+ "div",
12
+ {
13
+ "aria-hidden": true,
14
+ className: cnfast.cn(
15
+ "size-2 rounded-full",
16
+ status === "processing" && "animate-pulse bg-blue-500",
17
+ status === "completed" && "bg-green-500",
18
+ (status === "pending" || status === "awaiting-input") && "animate-pulse bg-yellow-500"
19
+ )
20
+ }
21
+ ) });
22
+ }
23
+ function InteractionWatcher({
24
+ onInteraction,
25
+ children
26
+ }) {
27
+ const ref = require$$0.useRef(null);
28
+ const onInteractionRef = require$$0.useRef(onInteraction);
29
+ onInteractionRef.current = onInteraction;
30
+ require$$0.useEffect(() => {
31
+ const element = ref.current;
32
+ if (!element) return void 0;
33
+ let ready = false;
34
+ let fired = false;
35
+ const readyTimer = setTimeout(() => {
36
+ ready = true;
37
+ }, INTERACTION_DELAY_MS);
38
+ const handle = (event) => {
39
+ if (!ready || fired) return;
40
+ if (event instanceof MouseEvent && event.type === "click") {
41
+ const rect = element.getBoundingClientRect();
42
+ const outside = rect.width > 0 && (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom);
43
+ if (outside) return;
44
+ }
45
+ fired = true;
46
+ onInteractionRef.current();
47
+ };
48
+ const kinds = ["click", "keydown", "touchstart", "scroll"];
49
+ for (const kind of kinds) element.addEventListener(kind, handle, { capture: true, passive: true });
50
+ return () => {
51
+ clearTimeout(readyTimer);
52
+ for (const kind of kinds) element.removeEventListener(kind, handle, { capture: true });
53
+ };
54
+ }, []);
55
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, children });
56
+ }
57
+ function InterruptCardShell({
58
+ status = "awaiting-input",
59
+ title,
60
+ description,
61
+ icon,
62
+ content,
63
+ actions,
64
+ hasTimeout = false,
65
+ onInteraction
66
+ }) {
67
+ const card = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-start gap-3 rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm", children: [
68
+ /* @__PURE__ */ jsxRuntime.jsx(StatusDot, { status }),
69
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-3", children: [
70
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2", children: [
71
+ icon ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 text-foreground [&_svg]:size-5", children: icon }) : null,
72
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
73
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-foreground text-sm", children: title }),
74
+ description ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-muted-foreground text-sm", children: description }) : null
75
+ ] })
76
+ ] }),
77
+ content ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-3", children: content }) : null,
78
+ actions ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2", children: actions }) : null
79
+ ] })
80
+ ] });
81
+ if (hasTimeout && onInteraction) {
82
+ return /* @__PURE__ */ jsxRuntime.jsx(InteractionWatcher, { onInteraction, children: card });
83
+ }
84
+ return card;
85
+ }
86
+ function HoverHint({ label, children }) {
87
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "group/typed-hint relative inline-flex", children: [
88
+ children,
89
+ /* @__PURE__ */ jsxRuntime.jsx(
90
+ "span",
91
+ {
92
+ "aria-hidden": "true",
93
+ className: "pointer-events-none absolute bottom-full left-1/2 z-20 mb-1 w-max max-w-xs -translate-x-1/2 rounded-md bg-foreground px-3 py-1.5 text-background text-xs opacity-0 shadow-md transition-opacity delay-0 group-focus-within/typed-hint:opacity-100 group-hover/typed-hint:opacity-100 group-hover/typed-hint:delay-300",
94
+ children: label
95
+ }
96
+ )
97
+ ] });
98
+ }
99
+ function WaitForStreamingHint({
100
+ active,
101
+ children
102
+ }) {
103
+ if (!active) return children;
104
+ return /* @__PURE__ */ jsxRuntime.jsx(HoverHint, { label: WAIT_FOR_STREAMING_MESSAGE, children });
105
+ }
106
+ function formatCountdown(seconds) {
107
+ const days = Math.floor(seconds / 86400);
108
+ const hours = Math.floor(seconds % 86400 / 3600);
109
+ if (days > 0) return hours > 0 ? `${days}d ${hours}h` : `${days}d`;
110
+ const minutes = Math.floor(seconds % 3600 / 60);
111
+ const secs = Math.floor(seconds % 60);
112
+ if (hours > 0) {
113
+ return `${hours}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
114
+ }
115
+ if (minutes > 0) return `${minutes}:${secs.toString().padStart(2, "0")}`;
116
+ return `${secs}s`;
117
+ }
118
+ function formatSecondsForDisplay(seconds) {
119
+ const hours = Math.floor(seconds / 3600);
120
+ const minutes = Math.floor(seconds % 3600 / 60);
121
+ const secs = Math.floor(seconds % 60);
122
+ if (hours > 0) {
123
+ return `${hours}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
124
+ }
125
+ return `${minutes}:${secs.toString().padStart(2, "0")}`;
126
+ }
127
+ function TimedInterruptCountdown({
128
+ timeoutRemaining,
129
+ timeoutSeconds,
130
+ isTimedOut,
131
+ isTimeoutCancelled,
132
+ className
133
+ }) {
134
+ if (isTimeoutCancelled) {
135
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cnfast.cn("flex items-center gap-2 text-green-600", className), children: [
136
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClockIcon, { className: "size-4" }),
137
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-sm", children: "Timeout cancelled - take your time" })
138
+ ] });
139
+ }
140
+ if (timeoutRemaining === null || timeoutSeconds === null) return null;
141
+ if (isTimedOut) {
142
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cnfast.cn("flex items-center gap-2 text-amber-600", className), children: [
143
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircleIcon, { className: "size-4 animate-pulse" }),
144
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-sm", children: "Timed out - resuming automatically..." })
145
+ ] });
146
+ }
147
+ const progress = timeoutSeconds > 0 ? (timeoutSeconds - timeoutRemaining) / timeoutSeconds * 100 : 100;
148
+ const urgent = timeoutRemaining <= 10;
149
+ const critical = timeoutRemaining <= 5;
150
+ const tone = critical ? "text-red-500" : urgent ? "text-amber-500" : "text-muted-foreground";
151
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cnfast.cn("flex flex-col gap-1", className), "data-testid": "typed-interrupt-countdown", children: [
152
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
153
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClockIcon, { className: cnfast.cn("size-4", tone, critical && "animate-pulse") }),
154
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cnfast.cn("font-medium text-sm", tone), children: [
155
+ "Auto-continuing in ",
156
+ formatCountdown(timeoutRemaining)
157
+ ] })
158
+ ] }),
159
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 w-full overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
160
+ "div",
161
+ {
162
+ className: cnfast.cn(
163
+ "h-full rounded-full transition-all duration-1000 ease-linear",
164
+ critical ? "bg-red-500" : urgent ? "bg-amber-500" : "bg-primary"
165
+ ),
166
+ style: { width: `${Math.max(0, 100 - progress)}%` }
167
+ }
168
+ ) })
169
+ ] });
170
+ }
171
+ function formatKeyAsName(key) {
172
+ if (!key) return "";
173
+ return key.replace(/_/g, " ").split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
174
+ }
175
+ exports.HoverHint = HoverHint;
176
+ exports.InterruptCardShell = InterruptCardShell;
177
+ exports.TimedInterruptCountdown = TimedInterruptCountdown;
178
+ exports.WAIT_FOR_STREAMING_MESSAGE = WAIT_FOR_STREAMING_MESSAGE;
179
+ exports.WaitForStreamingHint = WaitForStreamingHint;
180
+ exports.formatKeyAsName = formatKeyAsName;
181
+ exports.formatSecondsForDisplay = formatSecondsForDisplay;
182
+ //# sourceMappingURL=interrupt-card-shell.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt-card-shell.cjs","sources":["../../../src/chat/typed-interrupts/interrupt-card-shell.tsx"],"sourcesContent":["/**\n * The look every typed card shares (Olympus's `InterruptProgressUI`): a\n * status dot, the kind's icon, a title and description, the card's content and\n * its actions. A timed park's card also stops the backend's timer the first\n * time the person clicks, types, touches or scrolls inside it (Olympus's\n * `InterruptInteractionWrapper`), never on a pointer merely passing over it or\n * on the focus moving in.\n */\nimport { AlertCircleIcon, ClockIcon } from 'lucide-react';\nimport { type ReactElement, type ReactNode, useEffect, useRef } from 'react';\nimport { cn } from '../../lib/utils';\n\nexport type InterruptCardStatus = 'pending' | 'awaiting-input' | 'processing' | 'completed';\n\n/** What a disabled control says while the conversation still streams. */\nexport const WAIT_FOR_STREAMING_MESSAGE = 'Please wait for the conversation to finish streaming';\n\n/** Clicks, keys, touches and scrolls inside this long after mount are the auto-focus, not the person. */\nconst INTERACTION_DELAY_MS = 200;\n\nfunction StatusDot({ status }: { status: InterruptCardStatus }) {\n return (\n <div className=\"shrink-0 pt-1.5\">\n <div\n aria-hidden\n className={cn(\n 'size-2 rounded-full',\n status === 'processing' && 'animate-pulse bg-blue-500',\n status === 'completed' && 'bg-green-500',\n (status === 'pending' || status === 'awaiting-input') && 'animate-pulse bg-yellow-500',\n )}\n />\n </div>\n );\n}\n\n/**\n * Calls `onInteraction` once, on the first click, key, touch or scroll inside\n * `children` after the auto-focus window. Listens on the element itself, so\n * the wrapper is no control of its own.\n */\nfunction InteractionWatcher({\n onInteraction,\n children,\n}: {\n onInteraction: () => void;\n children: ReactNode;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const onInteractionRef = useRef(onInteraction);\n onInteractionRef.current = onInteraction;\n useEffect(() => {\n const element = ref.current;\n if (!element) return undefined;\n let ready = false;\n let fired = false;\n const readyTimer = setTimeout(() => {\n ready = true;\n }, INTERACTION_DELAY_MS);\n const handle = (event: Event) => {\n if (!ready || fired) return;\n // A click whose point lies outside the card (a portal's) is not the card's.\n if (event instanceof MouseEvent && event.type === 'click') {\n const rect = element.getBoundingClientRect();\n const outside =\n rect.width > 0 &&\n (event.clientX < rect.left ||\n event.clientX > rect.right ||\n event.clientY < rect.top ||\n event.clientY > rect.bottom);\n if (outside) return;\n }\n fired = true;\n onInteractionRef.current();\n };\n const kinds = ['click', 'keydown', 'touchstart', 'scroll'] as const;\n for (const kind of kinds) element.addEventListener(kind, handle, { capture: true, passive: true });\n return () => {\n clearTimeout(readyTimer);\n for (const kind of kinds) element.removeEventListener(kind, handle, { capture: true });\n };\n }, []);\n return <div ref={ref}>{children}</div>;\n}\n\nexport interface InterruptCardShellProps {\n status?: InterruptCardStatus;\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n content?: ReactNode;\n actions?: ReactNode;\n /** The park has a timer: the first interaction inside calls `onInteraction`. */\n hasTimeout?: boolean;\n onInteraction?: () => void;\n}\n\nexport function InterruptCardShell({\n status = 'awaiting-input',\n title,\n description,\n icon,\n content,\n actions,\n hasTimeout = false,\n onInteraction,\n}: InterruptCardShellProps) {\n const card = (\n <div className=\"flex w-full items-start gap-3 rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm\">\n <StatusDot status={status} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-3\">\n <div className=\"flex items-start gap-2\">\n {icon ? <div className=\"shrink-0 text-foreground [&_svg]:size-5\">{icon}</div> : null}\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-medium text-foreground text-sm\">{title}</div>\n {description ? (\n <div className=\"mt-1 text-muted-foreground text-sm\">{description}</div>\n ) : null}\n </div>\n </div>\n {content ? <div className=\"flex flex-col gap-3\">{content}</div> : null}\n {actions ? <div className=\"flex flex-wrap items-center gap-2\">{actions}</div> : null}\n </div>\n </div>\n );\n if (hasTimeout && onInteraction) {\n return <InteractionWatcher onInteraction={onInteraction}>{card}</InteractionWatcher>;\n }\n return card;\n}\n\n/**\n * A short hint shown above `children` while the pointer rests on them (or the\n * focus is inside). Plain CSS, not a Radix tooltip: a host whose bundler puts\n * every dependency in its startup chunk (the Office task pane) would otherwise\n * download the tooltip's popper stack on every open for these lazily loaded\n * cards. The hint is visual only; the control's own text names it.\n */\nexport function HoverHint({ label, children }: { label: ReactNode; children: ReactElement }) {\n return (\n <span className=\"group/typed-hint relative inline-flex\">\n {children}\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute bottom-full left-1/2 z-20 mb-1 w-max max-w-xs -translate-x-1/2 rounded-md bg-foreground px-3 py-1.5 text-background text-xs opacity-0 shadow-md transition-opacity delay-0 group-focus-within/typed-hint:opacity-100 group-hover/typed-hint:opacity-100 group-hover/typed-hint:delay-300\"\n >\n {label}\n </span>\n </span>\n );\n}\n\n/**\n * Wraps a control that is off while the conversation streams, saying why on\n * hover; otherwise renders the control as it is.\n */\nexport function WaitForStreamingHint({\n active,\n children,\n}: {\n active: boolean;\n children: ReactElement;\n}) {\n if (!active) return children;\n return <HoverHint label={WAIT_FOR_STREAMING_MESSAGE}>{children}</HoverHint>;\n}\n\nfunction formatCountdown(seconds: number): string {\n const days = Math.floor(seconds / 86_400);\n const hours = Math.floor((seconds % 86_400) / 3600);\n if (days > 0) return hours > 0 ? `${days}d ${hours}h` : `${days}d`;\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = Math.floor(seconds % 60);\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;\n }\n if (minutes > 0) return `${minutes}:${secs.toString().padStart(2, '0')}`;\n return `${secs}s`;\n}\n\n/** `m:ss` (or `h:mm:ss`) of a wait. */\nexport function formatSecondsForDisplay(seconds: number): string {\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = Math.floor(seconds % 60);\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;\n }\n return `${minutes}:${secs.toString().padStart(2, '0')}`;\n}\n\n/** The auto-continue countdown of a timed park (Olympus's `TimedInterruptCountdown`). */\nexport function TimedInterruptCountdown({\n timeoutRemaining,\n timeoutSeconds,\n isTimedOut,\n isTimeoutCancelled,\n className,\n}: {\n timeoutRemaining: number | null;\n timeoutSeconds: number | null;\n isTimedOut: boolean;\n isTimeoutCancelled: boolean;\n className?: string;\n}) {\n if (isTimeoutCancelled) {\n return (\n <div className={cn('flex items-center gap-2 text-green-600', className)}>\n <ClockIcon className=\"size-4\" />\n <span className=\"font-medium text-sm\">Timeout cancelled - take your time</span>\n </div>\n );\n }\n if (timeoutRemaining === null || timeoutSeconds === null) return null;\n if (isTimedOut) {\n return (\n <div className={cn('flex items-center gap-2 text-amber-600', className)}>\n <AlertCircleIcon className=\"size-4 animate-pulse\" />\n <span className=\"font-medium text-sm\">Timed out - resuming automatically...</span>\n </div>\n );\n }\n const progress = timeoutSeconds > 0 ? ((timeoutSeconds - timeoutRemaining) / timeoutSeconds) * 100 : 100;\n const urgent = timeoutRemaining <= 10;\n const critical = timeoutRemaining <= 5;\n const tone = critical ? 'text-red-500' : urgent ? 'text-amber-500' : 'text-muted-foreground';\n return (\n <div className={cn('flex flex-col gap-1', className)} data-testid=\"typed-interrupt-countdown\">\n <div className=\"flex items-center gap-2\">\n <ClockIcon className={cn('size-4', tone, critical && 'animate-pulse')} />\n <span className={cn('font-medium text-sm', tone)}>\n Auto-continuing in {formatCountdown(timeoutRemaining)}\n </span>\n </div>\n <div className=\"h-1 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-1000 ease-linear',\n critical ? 'bg-red-500' : urgent ? 'bg-amber-500' : 'bg-primary',\n )}\n style={{ width: `${Math.max(0, 100 - progress)}%` }}\n />\n </div>\n </div>\n );\n}\n\n/** `delete_assets` → `Delete Assets` (Olympus's `formatToolIdAsName`). */\nexport function formatKeyAsName(key: string): string {\n if (!key) return '';\n return key\n .replace(/_/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n"],"names":["jsx","cn","useRef","useEffect","jsxs","ClockIcon","AlertCircleIcon"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ export type InterruptCardStatus = 'pending' | 'awaiting-input' | 'processing' | 'completed';
3
+ /** What a disabled control says while the conversation still streams. */
4
+ export declare const WAIT_FOR_STREAMING_MESSAGE = "Please wait for the conversation to finish streaming";
5
+ export interface InterruptCardShellProps {
6
+ status?: InterruptCardStatus;
7
+ title: ReactNode;
8
+ description?: ReactNode;
9
+ icon?: ReactNode;
10
+ content?: ReactNode;
11
+ actions?: ReactNode;
12
+ /** The park has a timer: the first interaction inside calls `onInteraction`. */
13
+ hasTimeout?: boolean;
14
+ onInteraction?: () => void;
15
+ }
16
+ export declare function InterruptCardShell({ status, title, description, icon, content, actions, hasTimeout, onInteraction, }: InterruptCardShellProps): import("react").JSX.Element;
17
+ /**
18
+ * A short hint shown above `children` while the pointer rests on them (or the
19
+ * focus is inside). Plain CSS, not a Radix tooltip: a host whose bundler puts
20
+ * every dependency in its startup chunk (the Office task pane) would otherwise
21
+ * download the tooltip's popper stack on every open for these lazily loaded
22
+ * cards. The hint is visual only; the control's own text names it.
23
+ */
24
+ export declare function HoverHint({ label, children }: {
25
+ label: ReactNode;
26
+ children: ReactElement;
27
+ }): import("react").JSX.Element;
28
+ /**
29
+ * Wraps a control that is off while the conversation streams, saying why on
30
+ * hover; otherwise renders the control as it is.
31
+ */
32
+ export declare function WaitForStreamingHint({ active, children, }: {
33
+ active: boolean;
34
+ children: ReactElement;
35
+ }): import("react").JSX.Element;
36
+ /** `m:ss` (or `h:mm:ss`) of a wait. */
37
+ export declare function formatSecondsForDisplay(seconds: number): string;
38
+ /** The auto-continue countdown of a timed park (Olympus's `TimedInterruptCountdown`). */
39
+ export declare function TimedInterruptCountdown({ timeoutRemaining, timeoutSeconds, isTimedOut, isTimeoutCancelled, className, }: {
40
+ timeoutRemaining: number | null;
41
+ timeoutSeconds: number | null;
42
+ isTimedOut: boolean;
43
+ isTimeoutCancelled: boolean;
44
+ className?: string;
45
+ }): import("react").JSX.Element | null;
46
+ /** `delete_assets` → `Delete Assets` (Olympus's `formatToolIdAsName`). */
47
+ export declare function formatKeyAsName(key: string): string;