@athenaintel/react 0.57.2 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (799) hide show
  1. package/README.md +759 -9
  2. package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
  3. package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
  4. package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
  5. package/dist/agent-runtime/src/addressed-agents.js +16 -0
  6. package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
  7. package/dist/agent-runtime/src/answer-label.cjs +4 -3
  8. package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
  9. package/dist/agent-runtime/src/answer-label.d.ts +13 -6
  10. package/dist/agent-runtime/src/answer-label.js +4 -3
  11. package/dist/agent-runtime/src/answer-label.js.map +1 -1
  12. package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
  13. package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
  14. package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
  15. package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
  16. package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
  17. package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
  18. package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
  19. package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
  20. package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
  21. package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
  22. package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
  23. package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
  24. package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
  25. package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
  26. package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
  27. package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
  28. package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
  29. package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
  30. package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
  31. package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
  32. package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
  33. package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
  34. package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
  35. package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
  36. package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
  37. package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
  38. package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
  39. package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
  40. package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
  41. package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
  42. package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
  43. package/dist/agent-runtime/src/chat-outbox.js +492 -547
  44. package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
  45. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
  46. package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
  47. package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
  48. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
  49. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
  50. package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
  51. package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
  52. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
  53. package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
  54. package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
  55. package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
  56. package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
  57. package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
  58. package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
  59. package/dist/agent-runtime/src/edit-command.d.ts +1 -1
  60. package/dist/agent-runtime/src/edit-command.js.map +1 -1
  61. package/dist/agent-runtime/src/errors.cjs +1 -0
  62. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  63. package/dist/agent-runtime/src/errors.js +1 -0
  64. package/dist/agent-runtime/src/errors.js.map +1 -1
  65. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
  66. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  67. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
  68. package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
  69. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  70. package/dist/agent-runtime/src/index.d.ts +14 -8
  71. package/dist/agent-runtime/src/lane-follow.cjs +289 -0
  72. package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
  73. package/dist/agent-runtime/src/lane-follow.js +289 -0
  74. package/dist/agent-runtime/src/lane-follow.js.map +1 -0
  75. package/dist/agent-runtime/src/lane-images.cjs +387 -0
  76. package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
  77. package/dist/agent-runtime/src/lane-images.js +387 -0
  78. package/dist/agent-runtime/src/lane-images.js.map +1 -0
  79. package/dist/agent-runtime/src/message-window.js +1 -1
  80. package/dist/agent-runtime/src/messages.cjs +19 -1
  81. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  82. package/dist/agent-runtime/src/messages.d.ts +8 -0
  83. package/dist/agent-runtime/src/messages.js +21 -3
  84. package/dist/agent-runtime/src/messages.js.map +1 -1
  85. package/dist/agent-runtime/src/named-agents.cjs +301 -0
  86. package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
  87. package/dist/agent-runtime/src/named-agents.d.ts +246 -0
  88. package/dist/agent-runtime/src/named-agents.js +301 -0
  89. package/dist/agent-runtime/src/named-agents.js.map +1 -0
  90. package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
  91. package/dist/agent-runtime/src/offline-status.d.ts +66 -2
  92. package/dist/agent-runtime/src/offline-status.js.map +1 -1
  93. package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
  94. package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
  95. package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
  96. package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
  97. package/dist/agent-runtime/src/queue.cjs +2 -2
  98. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  99. package/dist/agent-runtime/src/queue.d.ts +20 -25
  100. package/dist/agent-runtime/src/queue.js +2 -2
  101. package/dist/agent-runtime/src/queue.js.map +1 -1
  102. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
  103. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  104. package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
  105. package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
  106. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
  107. package/dist/agent-runtime/src/run-send.cjs +54 -0
  108. package/dist/agent-runtime/src/run-send.cjs.map +1 -0
  109. package/dist/agent-runtime/src/run-send.d.ts +51 -0
  110. package/dist/agent-runtime/src/run-send.js +54 -0
  111. package/dist/agent-runtime/src/run-send.js.map +1 -0
  112. package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
  113. package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
  114. package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
  115. package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
  116. package/dist/agent-runtime/src/runtime.d.ts +9 -5
  117. package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
  118. package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
  119. package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
  120. package/dist/agent-runtime/src/sealed-idb.js +64 -0
  121. package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
  122. package/dist/agent-runtime/src/send-recovery.cjs +90 -118
  123. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
  124. package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
  125. package/dist/agent-runtime/src/send-recovery.js +90 -118
  126. package/dist/agent-runtime/src/send-recovery.js.map +1 -1
  127. package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
  128. package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
  129. package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
  130. package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
  131. package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
  132. package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
  133. package/dist/agent-runtime/src/statewire-state.cjs +4 -0
  134. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
  135. package/dist/agent-runtime/src/statewire-state.js +4 -0
  136. package/dist/agent-runtime/src/statewire-state.js.map +1 -1
  137. package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
  138. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
  139. package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
  140. package/dist/agent-runtime/src/statewire-transport.js +8 -2
  141. package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
  142. package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
  143. package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
  144. package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
  145. package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
  146. package/dist/agent-runtime/src/subagents.cjs +22 -29
  147. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  148. package/dist/agent-runtime/src/subagents.js +23 -30
  149. package/dist/agent-runtime/src/subagents.js.map +1 -1
  150. package/dist/agent-runtime/src/thread-extras.cjs +27 -19
  151. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
  152. package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
  153. package/dist/agent-runtime/src/thread-extras.js +27 -19
  154. package/dist/agent-runtime/src/thread-extras.js.map +1 -1
  155. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
  156. package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
  157. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  158. package/dist/agent-runtime/src/tool-metadata.js +12 -0
  159. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  160. package/dist/agent-runtime/src/tool-names.cjs +21 -0
  161. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  162. package/dist/agent-runtime/src/tool-names.d.ts +8 -0
  163. package/dist/agent-runtime/src/tool-names.js +21 -0
  164. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  165. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
  166. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
  167. package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
  168. package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
  169. package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
  170. package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
  171. package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
  172. package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
  173. package/dist/agent-runtime/src/typed-interrupts.js +48 -0
  174. package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
  175. package/dist/agent-runtime/src/types.d.ts +1 -1
  176. package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
  177. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  178. package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
  179. package/dist/agent-runtime/src/use-conversation-list.js +1 -0
  180. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
  181. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
  182. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  183. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
  184. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
  185. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  186. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
  187. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  188. package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
  189. package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
  190. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
  191. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
  192. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  193. package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
  194. package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
  195. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
  196. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
  197. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  198. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
  199. package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
  200. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  201. package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
  202. package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
  203. package/dist/agent-runtime/src/work-in.d.ts +127 -0
  204. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  205. package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
  206. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  207. package/dist/assets/asset-panel-store.cjs +13 -5
  208. package/dist/assets/asset-panel-store.cjs.map +1 -1
  209. package/dist/assets/asset-panel-store.d.ts +33 -2
  210. package/dist/assets/asset-panel-store.js +13 -5
  211. package/dist/assets/asset-panel-store.js.map +1 -1
  212. package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
  213. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  214. package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
  215. package/dist/auth/AthenaCredentialSourceContext.js +11 -0
  216. package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
  217. package/dist/auth/account-identity.cjs +13 -2
  218. package/dist/auth/account-identity.cjs.map +1 -1
  219. package/dist/auth/account-identity.d.ts +9 -0
  220. package/dist/auth/account-identity.js +13 -2
  221. package/dist/auth/account-identity.js.map +1 -1
  222. package/dist/auth/credential-source.cjs +20 -4
  223. package/dist/auth/credential-source.cjs.map +1 -1
  224. package/dist/auth/credential-source.d.ts +9 -0
  225. package/dist/auth/credential-source.js +20 -4
  226. package/dist/auth/credential-source.js.map +1 -1
  227. package/dist/catalog/chat-pickers.cjs +31 -0
  228. package/dist/catalog/chat-pickers.cjs.map +1 -1
  229. package/dist/catalog/chat-pickers.d.ts +17 -0
  230. package/dist/catalog/chat-pickers.js +33 -2
  231. package/dist/catalog/chat-pickers.js.map +1 -1
  232. package/dist/catalog/runtime-catalog.cjs +63 -3
  233. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  234. package/dist/catalog/runtime-catalog.d.ts +63 -3
  235. package/dist/catalog/runtime-catalog.js +64 -4
  236. package/dist/catalog/runtime-catalog.js.map +1 -1
  237. package/dist/chat/AthenaChat.cjs +290 -97
  238. package/dist/chat/AthenaChat.cjs.map +1 -1
  239. package/dist/chat/AthenaChat.d.ts +80 -4
  240. package/dist/chat/AthenaChat.js +290 -97
  241. package/dist/chat/AthenaChat.js.map +1 -1
  242. package/dist/chat/StatewireApprovalCard.cjs +35 -5
  243. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  244. package/dist/chat/StatewireApprovalCard.d.ts +55 -2
  245. package/dist/chat/StatewireApprovalCard.js +37 -7
  246. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  247. package/dist/chat/StatewireQueuedMessages.cjs +17 -2
  248. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  249. package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
  250. package/dist/chat/StatewireQueuedMessages.js +18 -3
  251. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  252. package/dist/chat/chat-agent-mentions.cjs +70 -0
  253. package/dist/chat/chat-agent-mentions.cjs.map +1 -0
  254. package/dist/chat/chat-agent-mentions.d.ts +13 -0
  255. package/dist/chat/chat-agent-mentions.js +70 -0
  256. package/dist/chat/chat-agent-mentions.js.map +1 -0
  257. package/dist/chat/composer-actions.cjs +12 -0
  258. package/dist/chat/composer-actions.cjs.map +1 -0
  259. package/dist/chat/composer-actions.d.ts +22 -0
  260. package/dist/chat/composer-actions.js +12 -0
  261. package/dist/chat/composer-actions.js.map +1 -0
  262. package/dist/chat/follow-up-suggestions.cjs +185 -0
  263. package/dist/chat/follow-up-suggestions.cjs.map +1 -0
  264. package/dist/chat/follow-up-suggestions.d.ts +64 -0
  265. package/dist/chat/follow-up-suggestions.js +185 -0
  266. package/dist/chat/follow-up-suggestions.js.map +1 -0
  267. package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
  268. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  269. package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
  270. package/dist/chat/super-grouping/ToolTimeline.js +4 -3
  271. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  272. package/dist/chat/turn-changes.cjs +284 -0
  273. package/dist/chat/turn-changes.cjs.map +1 -0
  274. package/dist/chat/turn-changes.d.ts +130 -0
  275. package/dist/chat/turn-changes.js +284 -0
  276. package/dist/chat/turn-changes.js.map +1 -0
  277. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
  278. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
  279. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
  280. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
  281. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
  282. package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
  283. package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
  284. package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
  285. package/dist/chat/typed-interrupts/approval-cards.js +250 -0
  286. package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
  287. package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
  288. package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
  289. package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
  290. package/dist/chat/typed-interrupts/form-cards.js +289 -0
  291. package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
  292. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
  293. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
  294. package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
  295. package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
  296. package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
  297. package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
  298. package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
  299. package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
  300. package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
  301. package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
  302. package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
  303. package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
  304. package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
  305. package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
  306. package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
  307. package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
  308. package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
  309. package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
  310. package/dist/chat/typed-interrupts/request-file-card.js +159 -0
  311. package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
  312. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
  313. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
  314. package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
  315. package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
  316. package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
  317. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
  318. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
  319. package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
  320. package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
  321. package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
  322. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
  323. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
  324. package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
  325. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
  326. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
  327. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
  328. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
  329. package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
  330. package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
  331. package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
  332. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
  333. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
  334. package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
  335. package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
  336. package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
  337. package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
  338. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
  339. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
  340. package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
  341. package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
  342. package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
  343. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
  344. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
  345. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
  346. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
  347. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
  348. package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
  349. package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
  350. package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
  351. package/dist/chat-ui/composer/composer-named-agents.js +13 -0
  352. package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
  353. package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
  354. package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
  355. package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
  356. package/dist/chat-ui/composer/slash-command-menu.js +143 -0
  357. package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
  358. package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
  359. package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
  360. package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
  361. package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
  362. package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
  363. package/dist/chat-ui/composer/slash-commands.cjs +74 -0
  364. package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
  365. package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
  366. package/dist/chat-ui/composer/slash-commands.js +74 -0
  367. package/dist/chat-ui/composer/slash-commands.js.map +1 -0
  368. package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
  369. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  370. package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
  371. package/dist/chat-ui/composer/tiptap-composer.js +135 -9
  372. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  373. package/dist/chat-ui/index.cjs +3 -0
  374. package/dist/chat-ui/index.cjs.map +1 -1
  375. package/dist/chat-ui/index.d.ts +3 -2
  376. package/dist/chat-ui/index.js +3 -0
  377. package/dist/chat-ui/index.js.map +1 -1
  378. package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
  379. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  380. package/dist/chat-ui/mentions/mention-chip.js +2 -2
  381. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  382. package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
  383. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  384. package/dist/chat-ui/mentions/mention-extension.js +8 -1
  385. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  386. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
  387. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
  388. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
  389. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
  390. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
  391. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
  392. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
  393. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
  394. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
  395. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
  396. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
  397. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
  398. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
  399. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  400. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
  401. package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
  402. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
  403. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
  404. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  405. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
  406. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
  407. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  408. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
  409. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
  410. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
  411. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
  412. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  413. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
  414. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
  415. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  416. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
  417. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
  418. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
  419. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
  420. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
  421. package/dist/chat-ui/statewire.d.ts +1 -1
  422. package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
  423. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  424. package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
  425. package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
  426. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  427. package/dist/collab/client.cjs +17 -5
  428. package/dist/collab/client.cjs.map +1 -1
  429. package/dist/collab/client.d.ts +22 -7
  430. package/dist/collab/client.js +17 -5
  431. package/dist/collab/client.js.map +1 -1
  432. package/dist/composer/ComposerAttachedReferences.cjs +119 -0
  433. package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
  434. package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
  435. package/dist/composer/ComposerAttachedReferences.js +119 -0
  436. package/dist/composer/ComposerAttachedReferences.js.map +1 -0
  437. package/dist/composer/ComposerNamedAgents.cjs +63 -0
  438. package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
  439. package/dist/composer/ComposerNamedAgents.d.ts +16 -0
  440. package/dist/composer/ComposerNamedAgents.js +63 -0
  441. package/dist/composer/ComposerNamedAgents.js.map +1 -0
  442. package/dist/composer/attached-references.cjs +159 -0
  443. package/dist/composer/attached-references.cjs.map +1 -0
  444. package/dist/composer/attached-references.d.ts +86 -0
  445. package/dist/composer/attached-references.js +159 -0
  446. package/dist/composer/attached-references.js.map +1 -0
  447. package/dist/composer/build-composed-message.cjs +14 -7
  448. package/dist/composer/build-composed-message.cjs.map +1 -1
  449. package/dist/composer/build-composed-message.d.ts +6 -1
  450. package/dist/composer/build-composed-message.js +14 -7
  451. package/dist/composer/build-composed-message.js.map +1 -1
  452. package/dist/composer/composer-handoff.cjs +6 -2
  453. package/dist/composer/composer-handoff.cjs.map +1 -1
  454. package/dist/composer/composer-handoff.d.ts +7 -1
  455. package/dist/composer/composer-handoff.js +6 -2
  456. package/dist/composer/composer-handoff.js.map +1 -1
  457. package/dist/composer/folder-upload.cjs +149 -0
  458. package/dist/composer/folder-upload.cjs.map +1 -0
  459. package/dist/composer/folder-upload.d.ts +79 -0
  460. package/dist/composer/folder-upload.js +149 -0
  461. package/dist/composer/folder-upload.js.map +1 -0
  462. package/dist/composer/index.d.ts +1 -1
  463. package/dist/composer/useAttachToChat.cjs +35 -0
  464. package/dist/composer/useAttachToChat.cjs.map +1 -0
  465. package/dist/composer/useAttachToChat.d.ts +54 -0
  466. package/dist/composer/useAttachToChat.js +35 -0
  467. package/dist/composer/useAttachToChat.js.map +1 -0
  468. package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
  469. package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
  470. package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
  471. package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
  472. package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
  473. package/dist/composer/useFileUpload.cjs +95 -7
  474. package/dist/composer/useFileUpload.cjs.map +1 -1
  475. package/dist/composer/useFileUpload.d.ts +21 -2
  476. package/dist/composer/useFileUpload.js +95 -7
  477. package/dist/composer/useFileUpload.js.map +1 -1
  478. package/dist/data/athena-api-error.cjs +125 -0
  479. package/dist/data/athena-api-error.cjs.map +1 -0
  480. package/dist/data/athena-api-error.d.ts +96 -0
  481. package/dist/data/athena-api-error.js +125 -0
  482. package/dist/data/athena-api-error.js.map +1 -0
  483. package/dist/data/athena-data-client.cjs +106 -0
  484. package/dist/data/athena-data-client.cjs.map +1 -0
  485. package/dist/data/athena-data-client.d.ts +74 -0
  486. package/dist/data/athena-data-client.js +106 -0
  487. package/dist/data/athena-data-client.js.map +1 -0
  488. package/dist/data/athena-member.cjs +93 -0
  489. package/dist/data/athena-member.cjs.map +1 -0
  490. package/dist/data/athena-member.d.ts +125 -0
  491. package/dist/data/athena-member.js +93 -0
  492. package/dist/data/athena-member.js.map +1 -0
  493. package/dist/data/athena-request.cjs +458 -0
  494. package/dist/data/athena-request.cjs.map +1 -0
  495. package/dist/data/athena-request.d.ts +120 -0
  496. package/dist/data/athena-request.js +458 -0
  497. package/dist/data/athena-request.js.map +1 -0
  498. package/dist/data/use-athena-fetch.cjs +14 -0
  499. package/dist/data/use-athena-fetch.cjs.map +1 -0
  500. package/dist/data/use-athena-fetch.d.ts +19 -0
  501. package/dist/data/use-athena-fetch.js +14 -0
  502. package/dist/data/use-athena-fetch.js.map +1 -0
  503. package/dist/data/use-athena-graphql.cjs +66 -0
  504. package/dist/data/use-athena-graphql.cjs.map +1 -0
  505. package/dist/data/use-athena-graphql.d.ts +56 -0
  506. package/dist/data/use-athena-graphql.js +66 -0
  507. package/dist/data/use-athena-graphql.js.map +1 -0
  508. package/dist/data/use-athena-rest.cjs +33 -0
  509. package/dist/data/use-athena-rest.cjs.map +1 -0
  510. package/dist/data/use-athena-rest.d.ts +21 -0
  511. package/dist/data/use-athena-rest.js +33 -0
  512. package/dist/data/use-athena-rest.js.map +1 -0
  513. package/dist/data/use-semantic-query.cjs +44 -0
  514. package/dist/data/use-semantic-query.cjs.map +1 -0
  515. package/dist/data/use-semantic-query.d.ts +92 -0
  516. package/dist/data/use-semantic-query.js +44 -0
  517. package/dist/data/use-semantic-query.js.map +1 -0
  518. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  519. package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
  520. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  521. package/dist/diagnostics/errors.cjs +7 -0
  522. package/dist/diagnostics/errors.cjs.map +1 -1
  523. package/dist/diagnostics/errors.d.ts +7 -0
  524. package/dist/diagnostics/errors.js +7 -0
  525. package/dist/diagnostics/errors.js.map +1 -1
  526. package/dist/index.cjs +155 -11
  527. package/dist/index.cjs.map +1 -1
  528. package/dist/index.d.ts +72 -13
  529. package/dist/index.js +148 -4
  530. package/dist/index.js.map +1 -1
  531. package/dist/keryx-http/src/initial-sync.cjs +64 -16
  532. package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
  533. package/dist/keryx-http/src/initial-sync.d.ts +31 -1
  534. package/dist/keryx-http/src/initial-sync.js +64 -16
  535. package/dist/keryx-http/src/initial-sync.js.map +1 -1
  536. package/dist/keryx-http/src/own-awareness.cjs +20 -0
  537. package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
  538. package/dist/keryx-http/src/own-awareness.d.ts +50 -0
  539. package/dist/keryx-http/src/own-awareness.js +20 -0
  540. package/dist/keryx-http/src/own-awareness.js.map +1 -0
  541. package/dist/keryx-http/src/update-attributions.cjs +26 -1
  542. package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
  543. package/dist/keryx-http/src/update-attributions.d.ts +10 -1
  544. package/dist/keryx-http/src/update-attributions.js +26 -1
  545. package/dist/keryx-http/src/update-attributions.js.map +1 -1
  546. package/dist/offline/chat-outbox.cjs +262 -26
  547. package/dist/offline/chat-outbox.cjs.map +1 -1
  548. package/dist/offline/chat-outbox.d.ts +90 -12
  549. package/dist/offline/chat-outbox.js +263 -27
  550. package/dist/offline/chat-outbox.js.map +1 -1
  551. package/dist/provider/AthenaProvider.cjs +56 -19
  552. package/dist/provider/AthenaProvider.cjs.map +1 -1
  553. package/dist/provider/AthenaProvider.d.ts +24 -8
  554. package/dist/provider/AthenaProvider.js +57 -20
  555. package/dist/provider/AthenaProvider.js.map +1 -1
  556. package/dist/react/package.json.cjs +1 -1
  557. package/dist/react/package.json.js +1 -1
  558. package/dist/references/src/anchors/types.cjs +5 -0
  559. package/dist/references/src/anchors/types.cjs.map +1 -1
  560. package/dist/references/src/anchors/types.js +5 -0
  561. package/dist/references/src/anchors/types.js.map +1 -1
  562. package/dist/references/src/attachable.cjs +149 -0
  563. package/dist/references/src/attachable.cjs.map +1 -0
  564. package/dist/references/src/attachable.d.ts +87 -0
  565. package/dist/references/src/attachable.js +149 -0
  566. package/dist/references/src/attachable.js.map +1 -0
  567. package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
  568. package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
  569. package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
  570. package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
  571. package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
  572. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
  573. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  574. package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
  575. package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
  576. package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
  577. package/dist/runtime/statewire-plan-mode.cjs +71 -0
  578. package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
  579. package/dist/runtime/statewire-plan-mode.d.ts +88 -0
  580. package/dist/runtime/statewire-plan-mode.js +71 -0
  581. package/dist/runtime/statewire-plan-mode.js.map +1 -0
  582. package/dist/runtime/statewire-run-config.cjs +3 -1
  583. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  584. package/dist/runtime/statewire-run-config.d.ts +7 -0
  585. package/dist/runtime/statewire-run-config.js +3 -1
  586. package/dist/runtime/statewire-run-config.js.map +1 -1
  587. package/dist/runtime/statewire-session-key.cjs +11 -5
  588. package/dist/runtime/statewire-session-key.cjs.map +1 -1
  589. package/dist/runtime/statewire-session-key.d.ts +22 -10
  590. package/dist/runtime/statewire-session-key.js +11 -5
  591. package/dist/runtime/statewire-session-key.js.map +1 -1
  592. package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
  593. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  594. package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
  595. package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
  596. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  597. package/dist/search/useAthenaAssets.cjs +394 -0
  598. package/dist/search/useAthenaAssets.cjs.map +1 -0
  599. package/dist/search/useAthenaAssets.d.ts +186 -0
  600. package/dist/search/useAthenaAssets.js +394 -0
  601. package/dist/search/useAthenaAssets.js.map +1 -0
  602. package/dist/sheet-range/index.cjs +4 -0
  603. package/dist/sheet-range/index.cjs.map +1 -1
  604. package/dist/sheet-range/index.d.ts +4 -2
  605. package/dist/sheet-range/index.js +4 -0
  606. package/dist/sheet-range/index.js.map +1 -1
  607. package/dist/sheet-range/query-range.cjs +102 -0
  608. package/dist/sheet-range/query-range.cjs.map +1 -0
  609. package/dist/sheet-range/query-range.d.ts +46 -0
  610. package/dist/sheet-range/query-range.js +102 -0
  611. package/dist/sheet-range/query-range.js.map +1 -0
  612. package/dist/styles.css +1 -1
  613. package/dist/subagents/index.cjs +49 -0
  614. package/dist/subagents/index.cjs.map +1 -0
  615. package/dist/subagents/index.d.ts +16 -0
  616. package/dist/subagents/index.js +49 -0
  617. package/dist/subagents/index.js.map +1 -0
  618. package/dist/subagents/lane-follow.cjs +19 -0
  619. package/dist/subagents/lane-follow.cjs.map +1 -0
  620. package/dist/subagents/lane-follow.d.ts +9 -0
  621. package/dist/subagents/lane-follow.js +19 -0
  622. package/dist/subagents/lane-follow.js.map +1 -0
  623. package/dist/subagents/lane-model.cjs +178 -0
  624. package/dist/subagents/lane-model.cjs.map +1 -0
  625. package/dist/subagents/lane-model.d.ts +140 -0
  626. package/dist/subagents/lane-model.js +178 -0
  627. package/dist/subagents/lane-model.js.map +1 -0
  628. package/dist/subagents/lane-parts.cjs +517 -0
  629. package/dist/subagents/lane-parts.cjs.map +1 -0
  630. package/dist/subagents/lane-parts.d.ts +130 -0
  631. package/dist/subagents/lane-parts.js +517 -0
  632. package/dist/subagents/lane-parts.js.map +1 -0
  633. package/dist/subagents/subagent-lane-group.cjs +215 -0
  634. package/dist/subagents/subagent-lane-group.cjs.map +1 -0
  635. package/dist/subagents/subagent-lane-group.d.ts +67 -0
  636. package/dist/subagents/subagent-lane-group.js +215 -0
  637. package/dist/subagents/subagent-lane-group.js.map +1 -0
  638. package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
  639. package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
  640. package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
  641. package/dist/subagents/subagent-transcript-drawer.js +431 -0
  642. package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
  643. package/dist/subagents/task-subagent-group.cjs +115 -0
  644. package/dist/subagents/task-subagent-group.cjs.map +1 -0
  645. package/dist/subagents/task-subagent-group.d.ts +36 -0
  646. package/dist/subagents/task-subagent-group.js +115 -0
  647. package/dist/subagents/task-subagent-group.js.map +1 -0
  648. package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
  649. package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
  650. package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
  651. package/dist/subagents/use-omitted-images-in-view.js +68 -0
  652. package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
  653. package/dist/threads/Inbox.cjs +2 -2
  654. package/dist/threads/Inbox.cjs.map +1 -1
  655. package/dist/threads/SessionList.cjs +6 -6
  656. package/dist/threads/SessionList.cjs.map +1 -1
  657. package/dist/threads/SessionsPage.cjs +13 -7
  658. package/dist/threads/SessionsPage.cjs.map +1 -1
  659. package/dist/threads/SessionsPage.d.ts +10 -1
  660. package/dist/threads/SessionsPage.js +9 -3
  661. package/dist/threads/SessionsPage.js.map +1 -1
  662. package/dist/threads/session-list-model.cjs.map +1 -1
  663. package/dist/threads/session-list-model.d.ts +2 -1
  664. package/dist/threads/session-list-model.js.map +1 -1
  665. package/dist/threads/session-row-parts.cjs +3 -3
  666. package/dist/threads/session-row-parts.cjs.map +1 -1
  667. package/dist/threads/sessions-page-model.cjs +13 -5
  668. package/dist/threads/sessions-page-model.cjs.map +1 -1
  669. package/dist/threads/sessions-page-model.d.ts +7 -0
  670. package/dist/threads/sessions-page-model.js +11 -3
  671. package/dist/threads/sessions-page-model.js.map +1 -1
  672. package/dist/threads/sessions-page-storage.cjs +8 -8
  673. package/dist/threads/sessions-page-storage.cjs.map +1 -1
  674. package/dist/threads/sessions-page-storage.d.ts +5 -1
  675. package/dist/threads/sessions-page-storage.js +8 -8
  676. package/dist/threads/sessions-page-storage.js.map +1 -1
  677. package/dist/threads/use-athena-sessions.cjs +1 -0
  678. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  679. package/dist/threads/use-athena-sessions.d.ts +7 -0
  680. package/dist/threads/use-athena-sessions.js +1 -0
  681. package/dist/threads/use-athena-sessions.js.map +1 -1
  682. package/dist/threads/use-athena-thread-agent.cjs +31 -0
  683. package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
  684. package/dist/threads/use-athena-thread-agent.d.ts +38 -0
  685. package/dist/threads/use-athena-thread-agent.js +31 -0
  686. package/dist/threads/use-athena-thread-agent.js.map +1 -0
  687. package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
  688. package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
  689. package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
  690. package/dist/threads/use-athena-thread-plan-mode.js +18 -0
  691. package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
  692. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  693. package/dist/tools/agent-creations.cjs +97 -0
  694. package/dist/tools/agent-creations.cjs.map +1 -0
  695. package/dist/tools/agent-creations.d.ts +38 -0
  696. package/dist/tools/agent-creations.js +97 -0
  697. package/dist/tools/agent-creations.js.map +1 -0
  698. package/dist/tools/agent-highlights.cjs +100 -0
  699. package/dist/tools/agent-highlights.cjs.map +1 -0
  700. package/dist/tools/agent-highlights.d.ts +57 -0
  701. package/dist/tools/agent-highlights.js +100 -0
  702. package/dist/tools/agent-highlights.js.map +1 -0
  703. package/dist/tools/append-document-tool-ui.cjs +1 -0
  704. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  705. package/dist/tools/append-document-tool-ui.d.ts +7 -0
  706. package/dist/tools/append-document-tool-ui.js +2 -1
  707. package/dist/tools/append-document-tool-ui.js.map +1 -1
  708. package/dist/tools/auto-open-tools.cjs +144 -71
  709. package/dist/tools/auto-open-tools.cjs.map +1 -1
  710. package/dist/tools/auto-open-tools.d.ts +131 -1
  711. package/dist/tools/auto-open-tools.js +145 -72
  712. package/dist/tools/auto-open-tools.js.map +1 -1
  713. package/dist/tools/browser-tool-uis.cjs +594 -0
  714. package/dist/tools/browser-tool-uis.cjs.map +1 -0
  715. package/dist/tools/browser-tool-uis.d.ts +8 -0
  716. package/dist/tools/browser-tool-uis.js +594 -0
  717. package/dist/tools/browser-tool-uis.js.map +1 -0
  718. package/dist/tools/computer-asset-tool-uis.cjs +313 -0
  719. package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
  720. package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
  721. package/dist/tools/computer-asset-tool-uis.js +313 -0
  722. package/dist/tools/computer-asset-tool-uis.js.map +1 -0
  723. package/dist/tools/document-edit-tool-uis.cjs +218 -0
  724. package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
  725. package/dist/tools/document-edit-tool-uis.d.ts +40 -0
  726. package/dist/tools/document-edit-tool-uis.js +218 -0
  727. package/dist/tools/document-edit-tool-uis.js.map +1 -0
  728. package/dist/tools/drive-tool-uis.cjs +425 -0
  729. package/dist/tools/drive-tool-uis.cjs.map +1 -0
  730. package/dist/tools/drive-tool-uis.d.ts +120 -0
  731. package/dist/tools/drive-tool-uis.js +425 -0
  732. package/dist/tools/drive-tool-uis.js.map +1 -0
  733. package/dist/tools/email-calendar-tool-uis.cjs +789 -0
  734. package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
  735. package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
  736. package/dist/tools/email-calendar-tool-uis.js +789 -0
  737. package/dist/tools/email-calendar-tool-uis.js.map +1 -0
  738. package/dist/tools/ontology-tool-uis.cjs +83 -0
  739. package/dist/tools/ontology-tool-uis.cjs.map +1 -0
  740. package/dist/tools/ontology-tool-uis.d.ts +9 -0
  741. package/dist/tools/ontology-tool-uis.js +83 -0
  742. package/dist/tools/ontology-tool-uis.js.map +1 -0
  743. package/dist/tools/orchestration-tool-uis.cjs +586 -0
  744. package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
  745. package/dist/tools/orchestration-tool-uis.d.ts +141 -0
  746. package/dist/tools/orchestration-tool-uis.js +586 -0
  747. package/dist/tools/orchestration-tool-uis.js.map +1 -0
  748. package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
  749. package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
  750. package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
  751. package/dist/tools/presentation-edit-tool-uis.js +516 -0
  752. package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
  753. package/dist/tools/project-tool-uis.cjs +213 -0
  754. package/dist/tools/project-tool-uis.cjs.map +1 -0
  755. package/dist/tools/project-tool-uis.d.ts +14 -0
  756. package/dist/tools/project-tool-uis.js +213 -0
  757. package/dist/tools/project-tool-uis.js.map +1 -0
  758. package/dist/tools/sandbox-tool-uis.cjs +491 -0
  759. package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
  760. package/dist/tools/sandbox-tool-uis.d.ts +116 -0
  761. package/dist/tools/sandbox-tool-uis.js +491 -0
  762. package/dist/tools/sandbox-tool-uis.js.map +1 -0
  763. package/dist/tools/sheet-query-tool-ui.cjs +138 -0
  764. package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
  765. package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
  766. package/dist/tools/sheet-query-tool-ui.js +138 -0
  767. package/dist/tools/sheet-query-tool-ui.js.map +1 -0
  768. package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
  769. package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
  770. package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
  771. package/dist/tools/studio-screenshot-tool-uis.js +262 -0
  772. package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
  773. package/dist/tools/subagent-task-tool-ui.cjs +24 -475
  774. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  775. package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
  776. package/dist/tools/subagent-task-tool-ui.js +28 -479
  777. package/dist/tools/subagent-task-tool-ui.js.map +1 -1
  778. package/dist/tools/tool-summary.cjs +36 -0
  779. package/dist/tools/tool-summary.cjs.map +1 -1
  780. package/dist/tools/tool-summary.js +36 -0
  781. package/dist/tools/tool-summary.js.map +1 -1
  782. package/dist/tools/tool-uis.cjs +181 -53
  783. package/dist/tools/tool-uis.cjs.map +1 -1
  784. package/dist/tools/tool-uis.d.ts +40 -0
  785. package/dist/tools/tool-uis.js +183 -55
  786. package/dist/tools/tool-uis.js.map +1 -1
  787. package/dist/typed-interrupts/index.cjs +15 -0
  788. package/dist/typed-interrupts/index.cjs.map +1 -0
  789. package/dist/typed-interrupts/index.d.ts +20 -0
  790. package/dist/typed-interrupts/index.js +15 -0
  791. package/dist/typed-interrupts/index.js.map +1 -0
  792. package/dist/workbench/session-workbench-panes.cjs +6 -6
  793. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  794. package/package.json +28 -6
  795. package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
  796. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
  797. package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
  798. package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
  799. package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
@@ -0,0 +1,387 @@
1
+ import { useAuiState } from "@assistant-ui/store";
2
+ import { useQueries } from "@tanstack/react-query";
3
+ import { useRef, useMemo, useState, useEffect, useCallback } from "react";
4
+ import { DEEP_AGENT_OMITTED_IMAGE_KEY, DEEP_AGENT_HISTORY_LANE_IMAGE_COMMAND } from "./generated/runconfig-contract.js";
5
+ import { hasStatewireThreadExtras } from "./thread-extras.js";
6
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
7
+ const isCount = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0;
8
+ function buildHistoryLaneImageCommand({
9
+ target,
10
+ step,
11
+ index,
12
+ offset = 0
13
+ }) {
14
+ return {
15
+ type: DEEP_AGENT_HISTORY_LANE_IMAGE_COMMAND,
16
+ ...target.lane !== void 0 ? { lane: target.lane } : { messageId: target.messageId },
17
+ step,
18
+ index,
19
+ ...offset > 0 && { offset }
20
+ };
21
+ }
22
+ function readInlineImageChunk(payload) {
23
+ if (!isRecord(payload)) return null;
24
+ const { index, mediaType, offset, total, chunk, next } = payload;
25
+ if (!isCount(index) || !isCount(offset) || !isCount(total) || typeof chunk !== "string") {
26
+ return null;
27
+ }
28
+ if (next !== null && !isCount(next)) return null;
29
+ if (mediaType !== void 0 && mediaType !== null && typeof mediaType !== "string") return null;
30
+ return { index, mediaType: mediaType ?? null, offset, total, chunk, next };
31
+ }
32
+ const nonEmpty = (value) => typeof value === "string" && value ? value : null;
33
+ function readHistoryLaneImageChunk(payload) {
34
+ const chunk = readInlineImageChunk(payload);
35
+ if (chunk === null || !isRecord(payload)) return null;
36
+ const messageId = nonEmpty(payload.messageId);
37
+ const lane = nonEmpty(payload.lane);
38
+ const step = nonEmpty(payload.step);
39
+ if (messageId === null === (lane === null) || step === null) return null;
40
+ return { ...chunk, messageId, lane, step };
41
+ }
42
+ const MAX_IMAGE_CHUNKS = 128;
43
+ const abortReason = (signal) => signal.reason ?? new DOMException("The image read was cancelled.", "AbortError");
44
+ function unlessCancelled(promise, signal) {
45
+ if (signal === void 0) return promise;
46
+ if (signal.aborted) return Promise.reject(abortReason(signal));
47
+ return new Promise((resolve, reject) => {
48
+ const onAbort = () => reject(abortReason(signal));
49
+ signal.addEventListener("abort", onAbort, { once: true });
50
+ promise.then(
51
+ (value) => {
52
+ signal.removeEventListener("abort", onAbort);
53
+ resolve(value);
54
+ },
55
+ (error) => {
56
+ signal.removeEventListener("abort", onAbort);
57
+ reject(error);
58
+ }
59
+ );
60
+ });
61
+ }
62
+ async function readChunkedInlineImage({
63
+ read,
64
+ signal
65
+ }) {
66
+ const chunks = [];
67
+ let offset = 0;
68
+ let total = null;
69
+ let mediaType = null;
70
+ for (let count = 0; count < MAX_IMAGE_CHUNKS; count += 1) {
71
+ if (signal == null ? void 0 : signal.aborted) throw abortReason(signal);
72
+ const answer = await unlessCancelled(read(offset), signal);
73
+ if (answer.offset !== offset || total !== null && answer.total !== total) {
74
+ throw new Error("the image chunk does not continue the image");
75
+ }
76
+ total = answer.total;
77
+ mediaType = answer.mediaType ?? mediaType;
78
+ const end = offset + answer.chunk.length;
79
+ if (answer.chunk.length === 0 || end > total) {
80
+ throw new Error("the image chunk does not fit the image");
81
+ }
82
+ chunks.push(answer.chunk);
83
+ if (answer.next === null) {
84
+ if (end !== total) throw new Error("the image ended before its total");
85
+ const url = chunks.join("");
86
+ if (!url.startsWith("data:")) throw new Error("the image is not a data: URL");
87
+ return { url, mediaType };
88
+ }
89
+ if (answer.next !== end) throw new Error("the next image chunk is not where this one ends");
90
+ offset = end;
91
+ }
92
+ throw new Error(`the image takes more than ${MAX_IMAGE_CHUNKS} chunks`);
93
+ }
94
+ const NO_OMITTED_IMAGES = [];
95
+ function omittedIndex(block) {
96
+ if (!isRecord(block)) return void 0;
97
+ const marker = block[DEEP_AGENT_OMITTED_IMAGE_KEY];
98
+ return isRecord(marker) && isCount(marker.index) ? marker.index : void 0;
99
+ }
100
+ const omittedByStep = /* @__PURE__ */ new WeakMap();
101
+ function omittedImagesOfStep(step) {
102
+ const cached = omittedByStep.get(step);
103
+ if (cached !== void 0) return cached;
104
+ const id = step.id;
105
+ const content = step.content;
106
+ let images = null;
107
+ if (typeof id === "string" && id && Array.isArray(content)) {
108
+ for (const block of content) {
109
+ const index = omittedIndex(block);
110
+ if (index === void 0) continue;
111
+ images ?? (images = []);
112
+ images.push({ step: id, index });
113
+ }
114
+ }
115
+ const found = images ?? NO_OMITTED_IMAGES;
116
+ omittedByStep.set(step, found);
117
+ return found;
118
+ }
119
+ function omittedLaneImages(steps) {
120
+ let images = null;
121
+ for (const step of steps) {
122
+ const own = omittedImagesOfStep(step);
123
+ if (own.length === 0) continue;
124
+ images ?? (images = []);
125
+ images.push(...own);
126
+ }
127
+ return images ?? NO_OMITTED_IMAGES;
128
+ }
129
+ const laneImageKey = ({ step, index }) => `${index}:${step}`;
130
+ const TILE_FRAGMENT = "#athena-lane-image=";
131
+ function readLaneImageTile(src) {
132
+ if (typeof src !== "string" || !src.startsWith("data:")) return null;
133
+ const at = src.lastIndexOf(TILE_FRAGMENT);
134
+ if (at < 0) return null;
135
+ let key;
136
+ try {
137
+ key = decodeURIComponent(src.slice(at + TILE_FRAGMENT.length));
138
+ } catch {
139
+ return null;
140
+ }
141
+ const colon = key.indexOf(":");
142
+ const index = Number(key.slice(0, colon));
143
+ const step = key.slice(colon + 1);
144
+ return colon > 0 && isCount(index) && step ? { step, index } : null;
145
+ }
146
+ function blockWithTile(block, image) {
147
+ const tag = `${TILE_FRAGMENT}${encodeURIComponent(laneImageKey(image))}`;
148
+ const tagged = (value) => typeof value === "string" && !value.includes(TILE_FRAGMENT) ? `${value}${tag}` : null;
149
+ if (block.type === "image_url") {
150
+ const slot = block.image_url;
151
+ const url2 = tagged(isRecord(slot) ? slot.url : slot);
152
+ if (url2 === null) return block;
153
+ return { ...block, image_url: isRecord(slot) ? { ...slot, url: url2 } : url2 };
154
+ }
155
+ if (block.type !== "image") return block;
156
+ const source = block.source;
157
+ if (isRecord(source) && source.type === "base64") {
158
+ const data = tagged(source.data);
159
+ return data === null ? block : { ...block, source: { ...source, data } };
160
+ }
161
+ if (typeof block.base64 === "string") {
162
+ const base64 = tagged(block.base64);
163
+ return base64 === null ? block : { ...block, base64 };
164
+ }
165
+ if (block.source_type === "base64" && typeof block.data === "string") {
166
+ const data = tagged(block.data);
167
+ return data === null ? block : { ...block, data };
168
+ }
169
+ const url = tagged(block.url);
170
+ return url === null ? block : { ...block, url };
171
+ }
172
+ function blockWithImage(block, url) {
173
+ const { [DEEP_AGENT_OMITTED_IMAGE_KEY]: _omitted, ...rest } = block;
174
+ if (block.type === "image_url") {
175
+ const slot = block.image_url;
176
+ if (typeof slot === "string") return { ...rest, image_url: url };
177
+ return isRecord(slot) ? { ...rest, image_url: { ...slot, url } } : null;
178
+ }
179
+ if (block.type !== "image") return null;
180
+ const comma = url.indexOf(",");
181
+ const header = comma < 0 ? "" : url.slice(5, comma);
182
+ const base64 = header.endsWith(";base64");
183
+ const mediaType = header.split(";")[0] || null;
184
+ const payload = url.slice(comma + 1);
185
+ const source = block.source;
186
+ if (isRecord(source) && source.type === "base64") {
187
+ if (!base64) return null;
188
+ return {
189
+ ...rest,
190
+ source: { ...source, media_type: mediaType ?? source.media_type, data: payload }
191
+ };
192
+ }
193
+ if (typeof block.base64 === "string") {
194
+ if (!base64) return null;
195
+ return { ...rest, base64: payload, ...mediaType !== null && { mime_type: mediaType } };
196
+ }
197
+ if (block.source_type === "base64" && typeof block.data === "string") {
198
+ if (!base64) return null;
199
+ return { ...rest, data: payload, ...mediaType !== null && { mime_type: mediaType } };
200
+ }
201
+ return typeof block.url === "string" ? { ...rest, url } : null;
202
+ }
203
+ const shownSteps = /* @__PURE__ */ new WeakMap();
204
+ function stepShown(step, images) {
205
+ const omitted = omittedImagesOfStep(step);
206
+ const stored = step.content;
207
+ const id = step.id;
208
+ if (omitted.length === 0 || !Array.isArray(stored) || typeof id !== "string") return step;
209
+ const read = omitted.map((image) => images.get(laneImageKey(image)));
210
+ const cached = shownSteps.get(step);
211
+ if (cached !== void 0 && cached.images.length === read.length && cached.images.every((image, position) => image === read[position])) {
212
+ return cached.step;
213
+ }
214
+ const content = stored.map((block) => {
215
+ const index = omittedIndex(block);
216
+ if (index === void 0 || !isRecord(block)) return block;
217
+ const image = images.get(laneImageKey({ step: id, index }));
218
+ if (image !== void 0) {
219
+ const restored = blockWithImage(block, image.url);
220
+ if (restored !== null) return restored;
221
+ }
222
+ return blockWithTile(block, { step: id, index });
223
+ });
224
+ const shown = { ...step, content };
225
+ shownSteps.set(step, { images: read, step: shown });
226
+ return shown;
227
+ }
228
+ function showLaneImages({
229
+ steps,
230
+ images
231
+ }) {
232
+ let changed = false;
233
+ const shown = steps.map((step) => {
234
+ const next = stepShown(step, images);
235
+ if (next !== step) changed = true;
236
+ return next;
237
+ });
238
+ return changed ? shown : steps;
239
+ }
240
+ const MAX_CONCURRENT_IMAGE_READS = 2;
241
+ let imageReads = 0;
242
+ const waitingImageReads = [];
243
+ function waitForImageRead(signal) {
244
+ return new Promise((resolve, reject) => {
245
+ const onAbort = () => {
246
+ const position = waitingImageReads.indexOf(wake);
247
+ if (position >= 0) waitingImageReads.splice(position, 1);
248
+ reject(signal === void 0 ? void 0 : abortReason(signal));
249
+ };
250
+ const wake = () => {
251
+ signal == null ? void 0 : signal.removeEventListener("abort", onAbort);
252
+ resolve();
253
+ };
254
+ if (signal == null ? void 0 : signal.aborted) {
255
+ reject(abortReason(signal));
256
+ return;
257
+ }
258
+ waitingImageReads.push(wake);
259
+ signal == null ? void 0 : signal.addEventListener("abort", onAbort, { once: true });
260
+ });
261
+ }
262
+ async function withImageRead(signal, read) {
263
+ var _a;
264
+ while (imageReads >= MAX_CONCURRENT_IMAGE_READS) await waitForImageRead(signal);
265
+ imageReads += 1;
266
+ try {
267
+ return await read();
268
+ } finally {
269
+ imageReads -= 1;
270
+ (_a = waitingImageReads.shift()) == null ? void 0 : _a();
271
+ }
272
+ }
273
+ const answersImage = (answer, { target, step, index }) => answer.step === step && answer.index === index && (target.lane !== void 0 ? answer.lane === target.lane : answer.messageId === target.messageId);
274
+ function readLaneImage({
275
+ sendCommand,
276
+ target,
277
+ step,
278
+ index,
279
+ signal
280
+ }) {
281
+ return readChunkedInlineImage({
282
+ signal,
283
+ read: async (offset) => {
284
+ const answer = readHistoryLaneImageChunk(
285
+ await sendCommand(buildHistoryLaneImageCommand({ target, step, index, offset }))
286
+ );
287
+ if (answer === null || !answersImage(answer, { target, step, index })) {
288
+ throw new Error("history/lane_image answered another image");
289
+ }
290
+ return answer;
291
+ }
292
+ });
293
+ }
294
+ const laneTargetKey = (target) => target.lane !== void 0 ? `lane:${target.lane}` : `card:${target.messageId}`;
295
+ const deepAgentLaneImageQueryKey = ({
296
+ target,
297
+ step,
298
+ index
299
+ }) => ["athena-deep-agent", "history-lane-image", target, step, index];
300
+ const NO_IMAGES_ASKED = /* @__PURE__ */ new Set();
301
+ function useDeepAgentLaneImages({
302
+ messageId,
303
+ lane,
304
+ steps
305
+ }) {
306
+ const sendCommand = useAuiState(
307
+ (s) => hasStatewireThreadExtras(s.thread.extras) ? s.thread.extras.sendCommand : void 0
308
+ );
309
+ const sendRef = useRef(sendCommand);
310
+ sendRef.current = sendCommand;
311
+ const target = useMemo(
312
+ () => lane !== void 0 ? { lane } : messageId !== void 0 ? { messageId } : void 0,
313
+ [lane, messageId]
314
+ );
315
+ const omitted = useMemo(() => omittedLaneImages(steps), [steps]);
316
+ const [asked, setAsked] = useState(NO_IMAGES_ASKED);
317
+ const kept = useRef(/* @__PURE__ */ new Map());
318
+ const readable = target !== void 0 && sendCommand !== void 0;
319
+ const reads = useMemo(
320
+ () => readable ? omitted.filter((image) => asked.has(laneImageKey(image))) : NO_OMITTED_IMAGES,
321
+ [readable, omitted, asked]
322
+ );
323
+ const results = useQueries({
324
+ queries: reads.map((image) => ({
325
+ queryKey: deepAgentLaneImageQueryKey({
326
+ target: target === void 0 ? "" : laneTargetKey(target),
327
+ step: image.step,
328
+ index: image.index
329
+ }),
330
+ queryFn: ({ signal }) => {
331
+ const send = sendRef.current;
332
+ if (target === void 0 || send === void 0) {
333
+ return Promise.reject(new Error("no statewire thread to read the image from"));
334
+ }
335
+ return withImageRead(
336
+ signal,
337
+ () => readLaneImage({ sendCommand: send, target, step: image.step, index: image.index, signal })
338
+ );
339
+ },
340
+ initialData: () => kept.current.get(laneImageKey(image)),
341
+ retry: false,
342
+ retryOnMount: false,
343
+ staleTime: Number.POSITIVE_INFINITY,
344
+ refetchOnMount: false,
345
+ refetchOnWindowFocus: false,
346
+ refetchOnReconnect: false
347
+ })),
348
+ // Shared structurally: the same images read give back the same list.
349
+ combine: (answers) => answers.flatMap((answer, position) => {
350
+ const image = reads[position];
351
+ return image !== void 0 && answer.data !== void 0 ? [{ key: laneImageKey(image), image: answer.data }] : [];
352
+ })
353
+ });
354
+ const images = useMemo(
355
+ () => new Map(results.map(({ key, image }) => [key, image])),
356
+ [results]
357
+ );
358
+ useEffect(() => {
359
+ for (const [key, image] of images) kept.current.set(key, image);
360
+ }, [images]);
361
+ const shown = useMemo(() => showLaneImages({ steps, images }), [steps, images]);
362
+ const pending = readable && omitted.some((image) => !asked.has(laneImageKey(image)));
363
+ const request = useCallback((image) => {
364
+ const key = laneImageKey(image);
365
+ setAsked((previous) => {
366
+ if (previous.has(key)) return previous;
367
+ const next = new Set(previous);
368
+ next.add(key);
369
+ return next;
370
+ });
371
+ }, []);
372
+ return { steps: shown, pending, request };
373
+ }
374
+ export {
375
+ buildHistoryLaneImageCommand,
376
+ deepAgentLaneImageQueryKey,
377
+ laneImageKey,
378
+ omittedLaneImages,
379
+ readChunkedInlineImage,
380
+ readHistoryLaneImageChunk,
381
+ readInlineImageChunk,
382
+ readLaneImage,
383
+ readLaneImageTile,
384
+ showLaneImages,
385
+ useDeepAgentLaneImages
386
+ };
387
+ //# sourceMappingURL=lane-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-images.js","sources":["../../../../agent-runtime/src/lane-images.ts"],"sourcesContent":["/**\n * A lane step's inline images on demand — the client half of agora's\n * `history/lane_image` read command.\n *\n * A subagent lane's steps ride (on a cut card, on an in-eval lane's registry\n * entry, and in every `history/lane` page) with each inline image left off: the\n * block keeps its own shape with a neutral PNG tile in its payload slot\n * (`DEEP_AGENT_OMITTED_IMAGE_PLACEHOLDER_URL`) and\n * `athena_image_omitted: {index, chars, mediaType}` beside it, `index` being\n * the block's position in the stored step's content. `history/lane_image`\n * `{messageId | lane, step, index, offset?}` answers that image's `data:` URL\n * in chunks, exactly as `history/image` answers a top-level message's:\n * `{messageId, lane, step, index, mediaType, offset, total, chunk, next}`, the\n * chunks joined in order being the URL and `next` the offset to ask for next\n * (`null` after the last). {@link readChunkedInlineImage} is that loop, for\n * either command.\n *\n * {@link useDeepAgentLaneImages} reads a lane's images for a surface that\n * shows its steps, lazily, one image at a time as its tile comes into view.\n * The steps it hands back carry each image read so far in its block, and each\n * placeholder still waiting tagged with the image it stands for: its payload\n * slot keeps the tile, with a `#athena-lane-image=` fragment naming the step\n * and index ({@link readLaneImageTile}). A `data:` URL's fragment is no part of\n * its data, so the tile still draws, and whatever card draws it, the `<img>`\n * names its own image. Nothing is read until the surface reports a tile\n * (`request`); each image is one TanStack query cached per (card | lane, step,\n * index), and at most two are read at a time. Any refusal (an older pod's\n * unknown command, an unknown card or lane, a step the lane does not hold, no\n * inline image at that index, an offset past its end) leaves that image's\n * tile: no error, and no second ask while the refusal is cached.\n *\n * Surfaces opt in. A surface that reads no lane image ships none of this.\n */\nimport type { LangChainMessage } from '@assistant-ui/react-langgraph';\nimport type { StatewireThread } from '@assistant-ui/react-statewire';\nimport { useAuiState } from '@assistant-ui/store';\nimport { useQueries } from '@tanstack/react-query';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n DEEP_AGENT_HISTORY_LANE_IMAGE_COMMAND,\n DEEP_AGENT_OMITTED_IMAGE_KEY,\n} from './generated/runconfig-contract';\nimport type { DeepAgentLaneTarget } from './lane-history';\nimport { hasStatewireThreadExtras } from './thread-extras';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isCount = (value: unknown): value is number =>\n typeof value === 'number' && Number.isInteger(value) && value >= 0;\n\n/**\n * The `history/lane_image` read command on the statewire command union, so\n * `sendCommand({ type: 'history/lane_image', … })` typechecks wherever the\n * deep-agent host is driven (an attach-ACL read, like `history/image`).\n */\ndeclare module '@assistant-ui/core' {\n namespace Assistant {\n interface Commands {\n /** One chunk of an inline image a lane step carries as a placeholder. */\n historyLaneImage: HistoryLaneImageCommand;\n }\n }\n}\n\n/** The `history/lane_image` command: one chunk of one lane step's inline image. */\nexport type HistoryLaneImageCommand = {\n readonly type: typeof DEEP_AGENT_HISTORY_LANE_IMAGE_COMMAND;\n /** The step's id. */\n readonly step: string;\n /** The block's position in the stored step's content: the placeholder's `athena_image_omitted.index`. */\n readonly index: number;\n /** Where the chunk starts in the image's `data:` URL; the start when absent. */\n readonly offset?: number;\n} & ({ readonly messageId: string } | { readonly lane: string });\n\nexport function buildHistoryLaneImageCommand({\n target,\n step,\n index,\n offset = 0,\n}: {\n target: DeepAgentLaneTarget;\n step: string;\n index: number;\n offset?: number;\n}): HistoryLaneImageCommand {\n return {\n type: DEEP_AGENT_HISTORY_LANE_IMAGE_COMMAND,\n ...(target.lane !== undefined ? { lane: target.lane } : { messageId: target.messageId }),\n step,\n index,\n ...(offset > 0 && { offset }),\n };\n}\n\n/** One chunk of an inline image's `data:` URL, as `history/image` and `history/lane_image` answer it. */\nexport interface InlineImageChunk {\n readonly index: number;\n /** The image's declared media type; `null` when the store declares none. */\n readonly mediaType: string | null;\n readonly offset: number;\n /** The whole URL's length. */\n readonly total: number;\n readonly chunk: string;\n /** Where the next chunk starts; `null` after the last. */\n readonly next: number | null;\n}\n\n/** The keys `history/image` and `history/lane_image` answer alike; `null` for anything else. */\nexport function readInlineImageChunk(payload: unknown): InlineImageChunk | null {\n if (!isRecord(payload)) return null;\n const { index, mediaType, offset, total, chunk, next } = payload;\n if (!isCount(index) || !isCount(offset) || !isCount(total) || typeof chunk !== 'string') {\n return null;\n }\n if (next !== null && !isCount(next)) return null;\n if (mediaType !== undefined && mediaType !== null && typeof mediaType !== 'string') return null;\n return { index, mediaType: mediaType ?? null, offset, total, chunk, next };\n}\n\n/** One `history/lane_image` answer: an image chunk, and the card or lane and step it belongs to. */\nexport interface HistoryLaneImageChunk extends InlineImageChunk {\n /** The card it reads; `null` for a lane. */\n readonly messageId: string | null;\n /** The in-eval lane it reads; `null` for a card. */\n readonly lane: string | null;\n readonly step: string;\n}\n\nconst nonEmpty = (value: unknown): string | null =>\n typeof value === 'string' && value ? value : null;\n\nexport function readHistoryLaneImageChunk(payload: unknown): HistoryLaneImageChunk | null {\n const chunk = readInlineImageChunk(payload);\n if (chunk === null || !isRecord(payload)) return null;\n const messageId = nonEmpty(payload.messageId);\n const lane = nonEmpty(payload.lane);\n const step = nonEmpty(payload.step);\n if ((messageId === null) === (lane === null) || step === null) return null;\n return { ...chunk, messageId, lane, step };\n}\n\n/** An inline image read whole. */\nexport interface InlineImage {\n /** The image's `data:` URL. */\n readonly url: string;\n readonly mediaType: string | null;\n}\n\n/**\n * The most chunks one image is read in: 128 MiB of `data:` URL at the host's\n * 1 MiB a chunk. Every answer must move the offset forward, so the loop ends\n * anyway; the cap bounds what a host that sends tiny chunks can cost.\n */\nconst MAX_IMAGE_CHUNKS = 128;\n\nconst abortReason = (signal: AbortSignal): unknown =>\n signal.reason ?? new DOMException('The image read was cancelled.', 'AbortError');\n\n/**\n * `promise`, or its rejection as soon as `signal` is cancelled: a request the\n * host has not answered yet never holds up a read nobody wants any more (its\n * answer, if one comes, is dropped).\n */\nfunction unlessCancelled<T>(promise: Promise<T>, signal: AbortSignal | undefined): Promise<T> {\n if (signal === undefined) return promise;\n if (signal.aborted) return Promise.reject(abortReason(signal));\n return new Promise<T>((resolve, reject) => {\n const onAbort = () => reject(abortReason(signal));\n signal.addEventListener('abort', onAbort, { once: true });\n promise.then(\n (value) => {\n signal.removeEventListener('abort', onAbort);\n resolve(value);\n },\n (error: unknown) => {\n signal.removeEventListener('abort', onAbort);\n reject(error);\n }\n );\n });\n}\n\n/**\n * Reads one inline image whole, chunk by chunk: the start, then each `next`\n * the host names, until it names none. Each answer must start where it was\n * asked, keep the first answer's `total`, carry the chunk up to `next`, and end\n * the URL exactly at `total`; anything else throws. A cancelled `signal`\n * rejects at once, without waiting for an answer still out. `read` sends one\n * request and returns its answer, checked against the request.\n */\nexport async function readChunkedInlineImage({\n read,\n signal,\n}: {\n read: (offset: number) => Promise<InlineImageChunk>;\n signal?: AbortSignal | undefined;\n}): Promise<InlineImage> {\n const chunks: string[] = [];\n let offset = 0;\n let total: number | null = null;\n let mediaType: string | null = null;\n for (let count = 0; count < MAX_IMAGE_CHUNKS; count += 1) {\n if (signal?.aborted) throw abortReason(signal);\n const answer = await unlessCancelled(read(offset), signal);\n if (answer.offset !== offset || (total !== null && answer.total !== total)) {\n throw new Error('the image chunk does not continue the image');\n }\n total = answer.total;\n mediaType = answer.mediaType ?? mediaType;\n const end = offset + answer.chunk.length;\n if (answer.chunk.length === 0 || end > total) {\n throw new Error('the image chunk does not fit the image');\n }\n chunks.push(answer.chunk);\n if (answer.next === null) {\n if (end !== total) throw new Error('the image ended before its total');\n const url = chunks.join('');\n if (!url.startsWith('data:')) throw new Error('the image is not a data: URL');\n return { url, mediaType };\n }\n if (answer.next !== end) throw new Error('the next image chunk is not where this one ends');\n offset = end;\n }\n throw new Error(`the image takes more than ${MAX_IMAGE_CHUNKS} chunks`);\n}\n\n/** One lane step's image: the step's id and the block's stored index (`athena_image_omitted.index`). */\nexport interface LaneImageRef {\n readonly step: string;\n readonly index: number;\n}\n\nconst NO_OMITTED_IMAGES: readonly LaneImageRef[] = [];\n\n/** The `athena_image_omitted.index` of a placeholder block; `undefined` for any other block. */\nfunction omittedIndex(block: unknown): number | undefined {\n if (!isRecord(block)) return undefined;\n const marker = block[DEEP_AGENT_OMITTED_IMAGE_KEY];\n return isRecord(marker) && isCount(marker.index) ? marker.index : undefined;\n}\n\nconst omittedByStep = new WeakMap<object, readonly LaneImageRef[]>();\n\n/** The placeholders one step carries, in content order. Memoized per step object. */\nfunction omittedImagesOfStep(step: LangChainMessage): readonly LaneImageRef[] {\n const cached = omittedByStep.get(step);\n if (cached !== undefined) return cached;\n const id = step.id;\n const content: unknown = step.content;\n let images: LaneImageRef[] | null = null;\n if (typeof id === 'string' && id && Array.isArray(content)) {\n for (const block of content) {\n const index = omittedIndex(block);\n if (index === undefined) continue;\n images ??= [];\n images.push({ step: id, index });\n }\n }\n const found = images ?? NO_OMITTED_IMAGES;\n omittedByStep.set(step, found);\n return found;\n}\n\n/** Every image a lane's steps carry as a placeholder, in step and content order. */\nexport function omittedLaneImages(steps: readonly LangChainMessage[]): readonly LaneImageRef[] {\n let images: LaneImageRef[] | null = null;\n for (const step of steps) {\n const own = omittedImagesOfStep(step);\n if (own.length === 0) continue;\n images ??= [];\n images.push(...own);\n }\n return images ?? NO_OMITTED_IMAGES;\n}\n\n/** The key one lane image is held under in a surface's image map. */\nexport const laneImageKey = ({ step, index }: LaneImageRef): string => `${index}:${step}`;\n\n/** The URL fragment a waiting tile carries, ahead of the image's key. */\nconst TILE_FRAGMENT = '#athena-lane-image=';\n\n/**\n * The image a tile stands for, read off the `src` its `<img>` draws: a waiting\n * placeholder's payload carries `#athena-lane-image=<index>:<step>`. `null` for\n * any other picture (a read image, the host's untagged tile, any URL at all).\n */\nexport function readLaneImageTile(src: string | null | undefined): LaneImageRef | null {\n if (typeof src !== 'string' || !src.startsWith('data:')) return null;\n const at = src.lastIndexOf(TILE_FRAGMENT);\n if (at < 0) return null;\n let key: string;\n try {\n key = decodeURIComponent(src.slice(at + TILE_FRAGMENT.length));\n } catch {\n return null;\n }\n const colon = key.indexOf(':');\n const index = Number(key.slice(0, colon));\n const step = key.slice(colon + 1);\n return colon > 0 && isCount(index) && step ? { step, index } : null;\n}\n\n/**\n * A waiting placeholder with the image it stands for named in its payload\n * slot: the slot keeps the tile and gains `#athena-lane-image=<index>:<step>`,\n * which a renderer that builds `data:<type>;base64,<payload>` (or takes the\n * URL whole) carries into the `<img>` it draws, and a `data:` URL's decoder\n * ignores. The block for a slot it cannot tag, as it is.\n */\nfunction blockWithTile(\n block: Record<string, unknown>,\n image: LaneImageRef\n): Record<string, unknown> {\n const tag = `${TILE_FRAGMENT}${encodeURIComponent(laneImageKey(image))}`;\n const tagged = (value: unknown): string | null =>\n typeof value === 'string' && !value.includes(TILE_FRAGMENT) ? `${value}${tag}` : null;\n if (block.type === 'image_url') {\n const slot = block.image_url;\n const url = tagged(isRecord(slot) ? slot.url : slot);\n if (url === null) return block;\n return { ...block, image_url: isRecord(slot) ? { ...slot, url } : url };\n }\n if (block.type !== 'image') return block;\n const source = block.source;\n if (isRecord(source) && source.type === 'base64') {\n const data = tagged(source.data);\n return data === null ? block : { ...block, source: { ...source, data } };\n }\n if (typeof block.base64 === 'string') {\n const base64 = tagged(block.base64);\n return base64 === null ? block : { ...block, base64 };\n }\n if (block.source_type === 'base64' && typeof block.data === 'string') {\n const data = tagged(block.data);\n return data === null ? block : { ...block, data };\n }\n const url = tagged(block.url);\n return url === null ? block : { ...block, url };\n}\n\n/**\n * A placeholder block with its image back, in the block's own shape (the\n * slots agora's `_omitted_image` writes the tile into): a URL slot takes the\n * `data:` URL whole, a base64 slot its payload and media type. The marker\n * goes. `null` for a shape it cannot hold the image in.\n */\nfunction blockWithImage(\n block: Record<string, unknown>,\n url: string\n): Record<string, unknown> | null {\n const { [DEEP_AGENT_OMITTED_IMAGE_KEY]: _omitted, ...rest } = block;\n if (block.type === 'image_url') {\n const slot = block.image_url;\n if (typeof slot === 'string') return { ...rest, image_url: url };\n return isRecord(slot) ? { ...rest, image_url: { ...slot, url } } : null;\n }\n if (block.type !== 'image') return null;\n const comma = url.indexOf(',');\n const header = comma < 0 ? '' : url.slice(5, comma);\n const base64 = header.endsWith(';base64');\n const mediaType = header.split(';')[0] || null;\n const payload = url.slice(comma + 1);\n const source = block.source;\n if (isRecord(source) && source.type === 'base64') {\n if (!base64) return null;\n return {\n ...rest,\n source: { ...source, media_type: mediaType ?? source.media_type, data: payload },\n };\n }\n if (typeof block.base64 === 'string') {\n if (!base64) return null;\n return { ...rest, base64: payload, ...(mediaType !== null && { mime_type: mediaType }) };\n }\n if (block.source_type === 'base64' && typeof block.data === 'string') {\n if (!base64) return null;\n return { ...rest, data: payload, ...(mediaType !== null && { mime_type: mediaType }) };\n }\n return typeof block.url === 'string' ? { ...rest, url } : null;\n}\n\nconst shownSteps = new WeakMap<\n object,\n { readonly images: readonly (InlineImage | undefined)[]; readonly step: LangChainMessage }\n>();\n\n/** One step as a surface shows it: each image read in its block, each other placeholder tagged. */\nfunction stepShown(\n step: LangChainMessage,\n images: ReadonlyMap<string, InlineImage>\n): LangChainMessage {\n const omitted = omittedImagesOfStep(step);\n const stored: unknown = step.content;\n const id = step.id;\n if (omitted.length === 0 || !Array.isArray(stored) || typeof id !== 'string') return step;\n const read = omitted.map((image) => images.get(laneImageKey(image)));\n const cached = shownSteps.get(step);\n if (\n cached !== undefined &&\n cached.images.length === read.length &&\n cached.images.every((image, position) => image === read[position])\n ) {\n return cached.step;\n }\n const content = stored.map((block: unknown) => {\n const index = omittedIndex(block);\n if (index === undefined || !isRecord(block)) return block;\n const image = images.get(laneImageKey({ step: id, index }));\n if (image !== undefined) {\n const restored = blockWithImage(block, image.url);\n if (restored !== null) return restored;\n }\n return blockWithTile(block, { step: id, index });\n });\n // The step's own blocks, each restored or tagged one in its own shape.\n const shown = { ...step, content } as LangChainMessage;\n shownSteps.set(step, { images: read, step: shown });\n return shown;\n}\n\n/**\n * A lane's steps as a surface shows them: each image `images` holds back in\n * its placeholder's block, and each other placeholder's tile tagged with the\n * image it stands for (see {@link readLaneImageTile}). A step without\n * placeholders is the step itself, and the same steps and images give back the\n * same step objects, so a conversion memory sees an unchanged step as\n * unchanged. Without any placeholder, `steps` itself.\n */\nexport function showLaneImages({\n steps,\n images,\n}: {\n steps: readonly LangChainMessage[];\n images: ReadonlyMap<string, InlineImage>;\n}): readonly LangChainMessage[] {\n let changed = false;\n const shown = steps.map((step) => {\n const next = stepShown(step, images);\n if (next !== step) changed = true;\n return next;\n });\n return changed ? shown : steps;\n}\n\n/**\n * At most this many images are read at once across the tab: each is a chain of\n * 1 MiB answers on the thread's command lane, which the run's own commands\n * share.\n */\nconst MAX_CONCURRENT_IMAGE_READS = 2;\nlet imageReads = 0;\nconst waitingImageReads: Array<() => void> = [];\n\n/** Waits for a free read; rejects (and gives up its place) once `signal` is cancelled. */\nfunction waitForImageRead(signal: AbortSignal | undefined): Promise<void> {\n return new Promise((resolve, reject) => {\n const onAbort = () => {\n const position = waitingImageReads.indexOf(wake);\n if (position >= 0) waitingImageReads.splice(position, 1);\n reject(signal === undefined ? undefined : abortReason(signal));\n };\n const wake = () => {\n signal?.removeEventListener('abort', onAbort);\n resolve();\n };\n if (signal?.aborted) {\n reject(abortReason(signal));\n return;\n }\n waitingImageReads.push(wake);\n signal?.addEventListener('abort', onAbort, { once: true });\n });\n}\n\nasync function withImageRead<T>(\n signal: AbortSignal | undefined,\n read: () => Promise<T>\n): Promise<T> {\n while (imageReads >= MAX_CONCURRENT_IMAGE_READS) await waitForImageRead(signal);\n imageReads += 1;\n try {\n return await read();\n } finally {\n imageReads -= 1;\n waitingImageReads.shift()?.();\n }\n}\n\ntype SendCommand = StatewireThread.Extras['sendCommand'];\n\n/** Whether an answer is the chunk of the image a request asked for. */\nconst answersImage = (\n answer: HistoryLaneImageChunk,\n { target, step, index }: { target: DeepAgentLaneTarget; step: string; index: number }\n): boolean =>\n answer.step === step &&\n answer.index === index &&\n (target.lane !== undefined ? answer.lane === target.lane : answer.messageId === target.messageId);\n\n/** One lane image, read whole through `history/lane_image`. */\nexport function readLaneImage({\n sendCommand,\n target,\n step,\n index,\n signal,\n}: {\n sendCommand: SendCommand;\n target: DeepAgentLaneTarget;\n step: string;\n index: number;\n signal?: AbortSignal | undefined;\n}): Promise<InlineImage> {\n return readChunkedInlineImage({\n signal,\n read: async (offset) => {\n const answer = readHistoryLaneImageChunk(\n await sendCommand(buildHistoryLaneImageCommand({ target, step, index, offset }))\n );\n if (answer === null || !answersImage(answer, { target, step, index })) {\n throw new Error('history/lane_image answered another image');\n }\n return answer;\n },\n });\n}\n\n/** One key per card or lane, as the lane pager keys its pages. */\nconst laneTargetKey = (target: DeepAgentLaneTarget): string =>\n target.lane !== undefined ? `lane:${target.lane}` : `card:${target.messageId}`;\n\n/** The query key one lane image is cached under: per card or lane, step and index. */\nexport const deepAgentLaneImageQueryKey = ({\n target,\n step,\n index,\n}: {\n target: string;\n step: string;\n index: number;\n}) => ['athena-deep-agent', 'history-lane-image', target, step, index];\n\n/** What a surface shows of a lane's steps, with the images read so far. */\nexport interface DeepAgentLaneImagesState {\n /** The steps, each image read so far back in its block and each other placeholder's tile tagged. */\n readonly steps: readonly LangChainMessage[];\n /** Tiles remain whose image nobody asked for yet, on a host the images can be read from. */\n readonly pending: boolean;\n /**\n * Read the image a tile the surface shows stands for ({@link readLaneImageTile}).\n * An image the steps do not carry is never read; asking again costs nothing.\n */\n readonly request: (image: LaneImageRef) => void;\n}\n\nconst NO_IMAGES_ASKED: ReadonlySet<string> = new Set();\n\n/**\n * Reads a lane's images as a surface shows them, through `history/lane_image`,\n * each a TanStack query: nothing until `request` names the image a tile stands\n * for, then that image alone, at most two at a time across the tab. A read\n * image is cached per card or lane, step and index, so another surface showing\n * it reads nothing. The card a running `task` lane rides changes id when its\n * result lands: an image this hook already read is kept for the new card,\n * never read again. A refusal is the query's error, never retried or\n * refetched: the image stays its tile.\n */\nexport function useDeepAgentLaneImages({\n messageId,\n lane,\n steps,\n}: {\n /** The card's message id, for a `task` lane. */\n messageId?: string | undefined;\n /** The dispatch id, for an in-eval lane; wins over `messageId`. Neither: nothing is read. */\n lane?: string | undefined;\n /** The steps the surface shows. */\n steps: readonly LangChainMessage[];\n}): DeepAgentLaneImagesState {\n const sendCommand = useAuiState((s) =>\n hasStatewireThreadExtras(s.thread.extras)\n ? (s.thread.extras as StatewireThread.Extras).sendCommand\n : undefined\n );\n const sendRef = useRef(sendCommand);\n sendRef.current = sendCommand;\n const target = useMemo<DeepAgentLaneTarget | undefined>(\n () => (lane !== undefined ? { lane } : messageId !== undefined ? { messageId } : undefined),\n [lane, messageId]\n );\n const omitted = useMemo(() => omittedLaneImages(steps), [steps]);\n const [asked, setAsked] = useState<ReadonlySet<string>>(NO_IMAGES_ASKED);\n // The images this mount read, by step and index: a card whose id changed\n // under it (a running lane's result landed) starts with them.\n const kept = useRef(new Map<string, InlineImage>());\n\n const readable = target !== undefined && sendCommand !== undefined;\n // Only an image the steps carry is read, whatever a tile claims.\n const reads = useMemo(\n () =>\n readable ? omitted.filter((image) => asked.has(laneImageKey(image))) : NO_OMITTED_IMAGES,\n [readable, omitted, asked]\n );\n const results = useQueries({\n queries: reads.map((image) => ({\n queryKey: deepAgentLaneImageQueryKey({\n target: target === undefined ? '' : laneTargetKey(target),\n step: image.step,\n index: image.index,\n }),\n queryFn: ({ signal }) => {\n const send = sendRef.current;\n if (target === undefined || send === undefined) {\n return Promise.reject(new Error('no statewire thread to read the image from'));\n }\n return withImageRead(signal, () =>\n readLaneImage({ sendCommand: send, target, step: image.step, index: image.index, signal })\n );\n },\n initialData: () => kept.current.get(laneImageKey(image)),\n retry: false,\n retryOnMount: false,\n staleTime: Number.POSITIVE_INFINITY,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n })),\n // Shared structurally: the same images read give back the same list.\n combine: (answers) =>\n answers.flatMap((answer, position) => {\n const image = reads[position];\n return image !== undefined && answer.data !== undefined\n ? [{ key: laneImageKey(image), image: answer.data }]\n : [];\n }),\n });\n const images = useMemo(\n () => new Map<string, InlineImage>(results.map(({ key, image }) => [key, image] as const)),\n [results]\n );\n useEffect(() => {\n for (const [key, image] of images) kept.current.set(key, image);\n }, [images]);\n\n const shown = useMemo(() => showLaneImages({ steps, images }), [steps, images]);\n const pending = readable && omitted.some((image) => !asked.has(laneImageKey(image)));\n const request = useCallback((image: LaneImageRef) => {\n const key = laneImageKey(image);\n setAsked((previous) => {\n if (previous.has(key)) return previous;\n const next = new Set(previous);\n next.add(key);\n return next;\n });\n }, []);\n\n return { steps: shown, pending, request };\n}\n"],"names":["url"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DEEP_AGENT_MAX_MESSAGE_WINDOW, DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND, DEEP_AGENT_INTEREST_PROTOCOL, DEEP_AGENT_MAIN_NS, DEEP_AGENT_CUT_LANE_DOCUMENT, DEEP_AGENT_MAX_INTERESTS, DEEP_AGENT_DEFAULT_MESSAGE_WINDOW, DEEP_AGENT_MIN_MESSAGE_WINDOW, DEEP_AGENT_MESSAGE_INTERESTS_HEADER, DEEP_AGENT_MESSAGE_WINDOW_HEADER, DEEP_AGENT_HISTORY_MESSAGE_COMMAND, DEEP_AGENT_TRUNCATED_CONTENT_KEY, DEEP_AGENT_MAX_MESSAGE_INTERESTS_HEADER_BYTES } from "./generated/runconfig-contract.js";
1
+ import { DEEP_AGENT_MAX_MESSAGE_WINDOW, DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND, DEEP_AGENT_INTEREST_PROTOCOL, DEEP_AGENT_MAIN_NS, DEEP_AGENT_CUT_LANE_DOCUMENT, DEEP_AGENT_MAX_INTERESTS, DEEP_AGENT_HISTORY_MESSAGE_COMMAND, DEEP_AGENT_DEFAULT_MESSAGE_WINDOW, DEEP_AGENT_MIN_MESSAGE_WINDOW, DEEP_AGENT_MESSAGE_INTERESTS_HEADER, DEEP_AGENT_MESSAGE_WINDOW_HEADER, DEEP_AGENT_TRUNCATED_CONTENT_KEY, DEEP_AGENT_MAX_MESSAGE_INTERESTS_HEADER_BYTES } from "./generated/runconfig-contract.js";
2
2
  import { deepAgentHistoryStore, hostServesHistoryPage } from "./history-store.js";
3
3
  import { readDeepAgentProtocol } from "./protocol.js";
4
4
  import { DEEP_AGENT_STATEWIRE_PROTOCOL } from "./statewire-transport.js";
@@ -64,7 +64,8 @@ function nativeTurnTiming(message) {
64
64
  toolCallCount: ((_a = message.tool_calls) == null ? void 0 : _a.length) ?? 0
65
65
  };
66
66
  }
67
- const convertDeepAgentLangChainMessage = (message, metadata) => {
67
+ const convertDeepAgentLangChainMessage = (source, metadata) => {
68
+ const message = withRedactedToolStubs(source);
68
69
  const converted = reactLanggraph.convertLangChainMessages(message, metadata);
69
70
  if (message.type !== "ai" || Array.isArray(converted) || converted.role !== "assistant") {
70
71
  return converted;
@@ -83,6 +84,22 @@ const convertDeepAgentLangChainMessage = (message, metadata) => {
83
84
  }
84
85
  };
85
86
  };
87
+ function withRedactedToolStubs(message) {
88
+ if (message.type === "tool") {
89
+ const stub = message;
90
+ if (typeof stub.name === "string" || stub.content !== void 0) return message;
91
+ return { ...message, name: toolNames.REDACTED_TOOL_NAME, content: "" };
92
+ }
93
+ if (message.type !== "ai") return message;
94
+ const calls = message.tool_calls;
95
+ if (!(calls == null ? void 0 : calls.some((call) => typeof (call == null ? void 0 : call.name) !== "string"))) return message;
96
+ return {
97
+ ...message,
98
+ tool_calls: calls.map(
99
+ (call) => typeof (call == null ? void 0 : call.name) === "string" ? call : { ...call, name: toolNames.REDACTED_TOOL_NAME, args: {} }
100
+ )
101
+ };
102
+ }
86
103
  function withoutQuietToolCalls(message) {
87
104
  const calls = message.tool_calls ?? [];
88
105
  const quietIds = new Set(
@@ -826,4 +843,5 @@ exports.readRunMarkerFromSourceMessages = readRunMarkerFromSourceMessages;
826
843
  exports.sanitizeLangChainMessages = sanitizeLangChainMessages;
827
844
  exports.substituteToolOutput = substituteToolOutput;
828
845
  exports.withPendingAssistantMessage = withPendingAssistantMessage;
846
+ exports.withRedactedToolStubs = withRedactedToolStubs;
829
847
  //# sourceMappingURL=messages.cjs.map