@athenaintel/react 0.57.1 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/README.md +778 -9
  2. package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
  3. package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
  4. package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
  5. package/dist/agent-runtime/src/addressed-agents.js +16 -0
  6. package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
  7. package/dist/agent-runtime/src/answer-label.cjs +4 -3
  8. package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
  9. package/dist/agent-runtime/src/answer-label.d.ts +13 -6
  10. package/dist/agent-runtime/src/answer-label.js +4 -3
  11. package/dist/agent-runtime/src/answer-label.js.map +1 -1
  12. package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
  13. package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
  14. package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
  15. package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
  16. package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
  17. package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
  18. package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
  19. package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
  20. package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
  21. package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
  22. package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
  23. package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
  24. package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
  25. package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
  26. package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
  27. package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
  28. package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
  29. package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
  30. package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
  31. package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
  32. package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
  33. package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
  34. package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
  35. package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
  36. package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
  37. package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
  38. package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
  39. package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
  40. package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
  41. package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
  42. package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
  43. package/dist/agent-runtime/src/chat-outbox.js +492 -547
  44. package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
  45. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
  46. package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
  47. package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
  48. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
  49. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
  50. package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
  51. package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
  52. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
  53. package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
  54. package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
  55. package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
  56. package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
  57. package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
  58. package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
  59. package/dist/agent-runtime/src/edit-command.d.ts +1 -1
  60. package/dist/agent-runtime/src/edit-command.js.map +1 -1
  61. package/dist/agent-runtime/src/errors.cjs +1 -0
  62. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  63. package/dist/agent-runtime/src/errors.js +1 -0
  64. package/dist/agent-runtime/src/errors.js.map +1 -1
  65. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
  66. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  67. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
  68. package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
  69. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  70. package/dist/agent-runtime/src/index.d.ts +14 -8
  71. package/dist/agent-runtime/src/lane-follow.cjs +289 -0
  72. package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
  73. package/dist/agent-runtime/src/lane-follow.js +289 -0
  74. package/dist/agent-runtime/src/lane-follow.js.map +1 -0
  75. package/dist/agent-runtime/src/lane-images.cjs +387 -0
  76. package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
  77. package/dist/agent-runtime/src/lane-images.js +387 -0
  78. package/dist/agent-runtime/src/lane-images.js.map +1 -0
  79. package/dist/agent-runtime/src/message-window.js +1 -1
  80. package/dist/agent-runtime/src/messages.cjs +19 -1
  81. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  82. package/dist/agent-runtime/src/messages.d.ts +8 -0
  83. package/dist/agent-runtime/src/messages.js +21 -3
  84. package/dist/agent-runtime/src/messages.js.map +1 -1
  85. package/dist/agent-runtime/src/named-agents.cjs +301 -0
  86. package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
  87. package/dist/agent-runtime/src/named-agents.d.ts +246 -0
  88. package/dist/agent-runtime/src/named-agents.js +301 -0
  89. package/dist/agent-runtime/src/named-agents.js.map +1 -0
  90. package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
  91. package/dist/agent-runtime/src/offline-status.d.ts +66 -2
  92. package/dist/agent-runtime/src/offline-status.js.map +1 -1
  93. package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
  94. package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
  95. package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
  96. package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
  97. package/dist/agent-runtime/src/queue.cjs +2 -2
  98. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  99. package/dist/agent-runtime/src/queue.d.ts +20 -25
  100. package/dist/agent-runtime/src/queue.js +2 -2
  101. package/dist/agent-runtime/src/queue.js.map +1 -1
  102. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
  103. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  104. package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
  105. package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
  106. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
  107. package/dist/agent-runtime/src/run-send.cjs +54 -0
  108. package/dist/agent-runtime/src/run-send.cjs.map +1 -0
  109. package/dist/agent-runtime/src/run-send.d.ts +51 -0
  110. package/dist/agent-runtime/src/run-send.js +54 -0
  111. package/dist/agent-runtime/src/run-send.js.map +1 -0
  112. package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
  113. package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
  114. package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
  115. package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
  116. package/dist/agent-runtime/src/runtime.d.ts +9 -5
  117. package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
  118. package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
  119. package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
  120. package/dist/agent-runtime/src/sealed-idb.js +64 -0
  121. package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
  122. package/dist/agent-runtime/src/send-recovery.cjs +90 -118
  123. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
  124. package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
  125. package/dist/agent-runtime/src/send-recovery.js +90 -118
  126. package/dist/agent-runtime/src/send-recovery.js.map +1 -1
  127. package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
  128. package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
  129. package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
  130. package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
  131. package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
  132. package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
  133. package/dist/agent-runtime/src/statewire-state.cjs +4 -0
  134. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
  135. package/dist/agent-runtime/src/statewire-state.js +4 -0
  136. package/dist/agent-runtime/src/statewire-state.js.map +1 -1
  137. package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
  138. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
  139. package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
  140. package/dist/agent-runtime/src/statewire-transport.js +8 -2
  141. package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
  142. package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
  143. package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
  144. package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
  145. package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
  146. package/dist/agent-runtime/src/subagents.cjs +22 -29
  147. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  148. package/dist/agent-runtime/src/subagents.js +23 -30
  149. package/dist/agent-runtime/src/subagents.js.map +1 -1
  150. package/dist/agent-runtime/src/thread-extras.cjs +27 -19
  151. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
  152. package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
  153. package/dist/agent-runtime/src/thread-extras.js +27 -19
  154. package/dist/agent-runtime/src/thread-extras.js.map +1 -1
  155. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
  156. package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
  157. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  158. package/dist/agent-runtime/src/tool-metadata.js +12 -0
  159. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  160. package/dist/agent-runtime/src/tool-names.cjs +21 -0
  161. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  162. package/dist/agent-runtime/src/tool-names.d.ts +8 -0
  163. package/dist/agent-runtime/src/tool-names.js +21 -0
  164. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  165. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
  166. package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
  167. package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
  168. package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
  169. package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
  170. package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
  171. package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
  172. package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
  173. package/dist/agent-runtime/src/typed-interrupts.js +48 -0
  174. package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
  175. package/dist/agent-runtime/src/types.d.ts +1 -1
  176. package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
  177. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  178. package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
  179. package/dist/agent-runtime/src/use-conversation-list.js +1 -0
  180. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
  181. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
  182. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  183. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
  184. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
  185. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  186. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
  187. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  188. package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
  189. package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
  190. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
  191. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
  192. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  193. package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
  194. package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
  195. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
  196. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
  197. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  198. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
  199. package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
  200. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  201. package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
  202. package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
  203. package/dist/agent-runtime/src/work-in.d.ts +127 -0
  204. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  205. package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
  206. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  207. package/dist/assets/asset-panel-store.cjs +13 -5
  208. package/dist/assets/asset-panel-store.cjs.map +1 -1
  209. package/dist/assets/asset-panel-store.d.ts +33 -2
  210. package/dist/assets/asset-panel-store.js +13 -5
  211. package/dist/assets/asset-panel-store.js.map +1 -1
  212. package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
  213. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  214. package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
  215. package/dist/auth/AthenaCredentialSourceContext.js +11 -0
  216. package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
  217. package/dist/auth/account-identity.cjs +13 -2
  218. package/dist/auth/account-identity.cjs.map +1 -1
  219. package/dist/auth/account-identity.d.ts +9 -0
  220. package/dist/auth/account-identity.js +13 -2
  221. package/dist/auth/account-identity.js.map +1 -1
  222. package/dist/auth/credential-source.cjs +20 -4
  223. package/dist/auth/credential-source.cjs.map +1 -1
  224. package/dist/auth/credential-source.d.ts +9 -0
  225. package/dist/auth/credential-source.js +20 -4
  226. package/dist/auth/credential-source.js.map +1 -1
  227. package/dist/catalog/chat-pickers.cjs +31 -0
  228. package/dist/catalog/chat-pickers.cjs.map +1 -1
  229. package/dist/catalog/chat-pickers.d.ts +17 -0
  230. package/dist/catalog/chat-pickers.js +33 -2
  231. package/dist/catalog/chat-pickers.js.map +1 -1
  232. package/dist/catalog/runtime-catalog.cjs +63 -3
  233. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  234. package/dist/catalog/runtime-catalog.d.ts +63 -3
  235. package/dist/catalog/runtime-catalog.js +64 -4
  236. package/dist/catalog/runtime-catalog.js.map +1 -1
  237. package/dist/chat/AthenaChat.cjs +337 -99
  238. package/dist/chat/AthenaChat.cjs.map +1 -1
  239. package/dist/chat/AthenaChat.d.ts +80 -4
  240. package/dist/chat/AthenaChat.js +337 -99
  241. package/dist/chat/AthenaChat.js.map +1 -1
  242. package/dist/chat/StatewireApprovalCard.cjs +35 -5
  243. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  244. package/dist/chat/StatewireApprovalCard.d.ts +55 -2
  245. package/dist/chat/StatewireApprovalCard.js +37 -7
  246. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  247. package/dist/chat/StatewireQueuedMessages.cjs +17 -2
  248. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  249. package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
  250. package/dist/chat/StatewireQueuedMessages.js +18 -3
  251. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  252. package/dist/chat/chat-agent-mentions.cjs +70 -0
  253. package/dist/chat/chat-agent-mentions.cjs.map +1 -0
  254. package/dist/chat/chat-agent-mentions.d.ts +13 -0
  255. package/dist/chat/chat-agent-mentions.js +70 -0
  256. package/dist/chat/chat-agent-mentions.js.map +1 -0
  257. package/dist/chat/composer-actions.cjs +12 -0
  258. package/dist/chat/composer-actions.cjs.map +1 -0
  259. package/dist/chat/composer-actions.d.ts +22 -0
  260. package/dist/chat/composer-actions.js +12 -0
  261. package/dist/chat/composer-actions.js.map +1 -0
  262. package/dist/chat/follow-up-suggestions.cjs +185 -0
  263. package/dist/chat/follow-up-suggestions.cjs.map +1 -0
  264. package/dist/chat/follow-up-suggestions.d.ts +64 -0
  265. package/dist/chat/follow-up-suggestions.js +185 -0
  266. package/dist/chat/follow-up-suggestions.js.map +1 -0
  267. package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
  268. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  269. package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
  270. package/dist/chat/super-grouping/ToolTimeline.js +4 -3
  271. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  272. package/dist/chat/turn-changes.cjs +284 -0
  273. package/dist/chat/turn-changes.cjs.map +1 -0
  274. package/dist/chat/turn-changes.d.ts +130 -0
  275. package/dist/chat/turn-changes.js +284 -0
  276. package/dist/chat/turn-changes.js.map +1 -0
  277. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
  278. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
  279. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
  280. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
  281. package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
  282. package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
  283. package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
  284. package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
  285. package/dist/chat/typed-interrupts/approval-cards.js +250 -0
  286. package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
  287. package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
  288. package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
  289. package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
  290. package/dist/chat/typed-interrupts/form-cards.js +289 -0
  291. package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
  292. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
  293. package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
  294. package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
  295. package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
  296. package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
  297. package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
  298. package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
  299. package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
  300. package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
  301. package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
  302. package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
  303. package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
  304. package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
  305. package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
  306. package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
  307. package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
  308. package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
  309. package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
  310. package/dist/chat/typed-interrupts/request-file-card.js +159 -0
  311. package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
  312. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
  313. package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
  314. package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
  315. package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
  316. package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
  317. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
  318. package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
  319. package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
  320. package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
  321. package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
  322. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
  323. package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
  324. package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
  325. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
  326. package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
  327. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
  328. package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
  329. package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
  330. package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
  331. package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
  332. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
  333. package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
  334. package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
  335. package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
  336. package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
  337. package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
  338. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
  339. package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
  340. package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
  341. package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
  342. package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
  343. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
  344. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
  345. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
  346. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
  347. package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
  348. package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
  349. package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
  350. package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
  351. package/dist/chat-ui/composer/composer-named-agents.js +13 -0
  352. package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
  353. package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
  354. package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
  355. package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
  356. package/dist/chat-ui/composer/slash-command-menu.js +143 -0
  357. package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
  358. package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
  359. package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
  360. package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
  361. package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
  362. package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
  363. package/dist/chat-ui/composer/slash-commands.cjs +74 -0
  364. package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
  365. package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
  366. package/dist/chat-ui/composer/slash-commands.js +74 -0
  367. package/dist/chat-ui/composer/slash-commands.js.map +1 -0
  368. package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
  369. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  370. package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
  371. package/dist/chat-ui/composer/tiptap-composer.js +135 -9
  372. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  373. package/dist/chat-ui/index.cjs +3 -0
  374. package/dist/chat-ui/index.cjs.map +1 -1
  375. package/dist/chat-ui/index.d.ts +3 -2
  376. package/dist/chat-ui/index.js +3 -0
  377. package/dist/chat-ui/index.js.map +1 -1
  378. package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
  379. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  380. package/dist/chat-ui/mentions/mention-chip.js +2 -2
  381. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  382. package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
  383. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  384. package/dist/chat-ui/mentions/mention-extension.js +8 -1
  385. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  386. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
  387. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
  388. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
  389. package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
  390. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
  391. package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
  392. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
  393. package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
  394. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
  395. package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
  396. package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
  397. package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
  398. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
  399. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  400. package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
  401. package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
  402. package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
  403. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
  404. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  405. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
  406. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
  407. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  408. package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
  409. package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
  410. package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
  411. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
  412. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  413. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
  414. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
  415. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  416. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
  417. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
  418. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
  419. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
  420. package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
  421. package/dist/chat-ui/statewire.d.ts +1 -1
  422. package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
  423. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  424. package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
  425. package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
  426. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  427. package/dist/collab/client.cjs +17 -5
  428. package/dist/collab/client.cjs.map +1 -1
  429. package/dist/collab/client.d.ts +22 -7
  430. package/dist/collab/client.js +17 -5
  431. package/dist/collab/client.js.map +1 -1
  432. package/dist/composer/ComposerAttachedReferences.cjs +119 -0
  433. package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
  434. package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
  435. package/dist/composer/ComposerAttachedReferences.js +119 -0
  436. package/dist/composer/ComposerAttachedReferences.js.map +1 -0
  437. package/dist/composer/ComposerNamedAgents.cjs +63 -0
  438. package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
  439. package/dist/composer/ComposerNamedAgents.d.ts +16 -0
  440. package/dist/composer/ComposerNamedAgents.js +63 -0
  441. package/dist/composer/ComposerNamedAgents.js.map +1 -0
  442. package/dist/composer/attached-references.cjs +159 -0
  443. package/dist/composer/attached-references.cjs.map +1 -0
  444. package/dist/composer/attached-references.d.ts +86 -0
  445. package/dist/composer/attached-references.js +159 -0
  446. package/dist/composer/attached-references.js.map +1 -0
  447. package/dist/composer/build-composed-message.cjs +14 -7
  448. package/dist/composer/build-composed-message.cjs.map +1 -1
  449. package/dist/composer/build-composed-message.d.ts +6 -1
  450. package/dist/composer/build-composed-message.js +14 -7
  451. package/dist/composer/build-composed-message.js.map +1 -1
  452. package/dist/composer/composer-handoff.cjs +6 -2
  453. package/dist/composer/composer-handoff.cjs.map +1 -1
  454. package/dist/composer/composer-handoff.d.ts +7 -1
  455. package/dist/composer/composer-handoff.js +6 -2
  456. package/dist/composer/composer-handoff.js.map +1 -1
  457. package/dist/composer/folder-upload.cjs +149 -0
  458. package/dist/composer/folder-upload.cjs.map +1 -0
  459. package/dist/composer/folder-upload.d.ts +79 -0
  460. package/dist/composer/folder-upload.js +149 -0
  461. package/dist/composer/folder-upload.js.map +1 -0
  462. package/dist/composer/index.d.ts +1 -1
  463. package/dist/composer/useAttachToChat.cjs +35 -0
  464. package/dist/composer/useAttachToChat.cjs.map +1 -0
  465. package/dist/composer/useAttachToChat.d.ts +54 -0
  466. package/dist/composer/useAttachToChat.js +35 -0
  467. package/dist/composer/useAttachToChat.js.map +1 -0
  468. package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
  469. package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
  470. package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
  471. package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
  472. package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
  473. package/dist/composer/useFileUpload.cjs +95 -7
  474. package/dist/composer/useFileUpload.cjs.map +1 -1
  475. package/dist/composer/useFileUpload.d.ts +21 -2
  476. package/dist/composer/useFileUpload.js +95 -7
  477. package/dist/composer/useFileUpload.js.map +1 -1
  478. package/dist/data/athena-api-error.cjs +125 -0
  479. package/dist/data/athena-api-error.cjs.map +1 -0
  480. package/dist/data/athena-api-error.d.ts +96 -0
  481. package/dist/data/athena-api-error.js +125 -0
  482. package/dist/data/athena-api-error.js.map +1 -0
  483. package/dist/data/athena-data-client.cjs +106 -0
  484. package/dist/data/athena-data-client.cjs.map +1 -0
  485. package/dist/data/athena-data-client.d.ts +74 -0
  486. package/dist/data/athena-data-client.js +106 -0
  487. package/dist/data/athena-data-client.js.map +1 -0
  488. package/dist/data/athena-member.cjs +93 -0
  489. package/dist/data/athena-member.cjs.map +1 -0
  490. package/dist/data/athena-member.d.ts +125 -0
  491. package/dist/data/athena-member.js +93 -0
  492. package/dist/data/athena-member.js.map +1 -0
  493. package/dist/data/athena-request.cjs +458 -0
  494. package/dist/data/athena-request.cjs.map +1 -0
  495. package/dist/data/athena-request.d.ts +120 -0
  496. package/dist/data/athena-request.js +458 -0
  497. package/dist/data/athena-request.js.map +1 -0
  498. package/dist/data/use-athena-fetch.cjs +14 -0
  499. package/dist/data/use-athena-fetch.cjs.map +1 -0
  500. package/dist/data/use-athena-fetch.d.ts +19 -0
  501. package/dist/data/use-athena-fetch.js +14 -0
  502. package/dist/data/use-athena-fetch.js.map +1 -0
  503. package/dist/data/use-athena-graphql.cjs +66 -0
  504. package/dist/data/use-athena-graphql.cjs.map +1 -0
  505. package/dist/data/use-athena-graphql.d.ts +56 -0
  506. package/dist/data/use-athena-graphql.js +66 -0
  507. package/dist/data/use-athena-graphql.js.map +1 -0
  508. package/dist/data/use-athena-rest.cjs +33 -0
  509. package/dist/data/use-athena-rest.cjs.map +1 -0
  510. package/dist/data/use-athena-rest.d.ts +21 -0
  511. package/dist/data/use-athena-rest.js +33 -0
  512. package/dist/data/use-athena-rest.js.map +1 -0
  513. package/dist/data/use-semantic-query.cjs +44 -0
  514. package/dist/data/use-semantic-query.cjs.map +1 -0
  515. package/dist/data/use-semantic-query.d.ts +92 -0
  516. package/dist/data/use-semantic-query.js +44 -0
  517. package/dist/data/use-semantic-query.js.map +1 -0
  518. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  519. package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
  520. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  521. package/dist/diagnostics/errors.cjs +7 -0
  522. package/dist/diagnostics/errors.cjs.map +1 -1
  523. package/dist/diagnostics/errors.d.ts +7 -0
  524. package/dist/diagnostics/errors.js +7 -0
  525. package/dist/diagnostics/errors.js.map +1 -1
  526. package/dist/index.cjs +155 -11
  527. package/dist/index.cjs.map +1 -1
  528. package/dist/index.d.ts +72 -13
  529. package/dist/index.js +148 -4
  530. package/dist/index.js.map +1 -1
  531. package/dist/keryx-http/src/initial-sync.cjs +64 -16
  532. package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
  533. package/dist/keryx-http/src/initial-sync.d.ts +31 -1
  534. package/dist/keryx-http/src/initial-sync.js +64 -16
  535. package/dist/keryx-http/src/initial-sync.js.map +1 -1
  536. package/dist/keryx-http/src/own-awareness.cjs +20 -0
  537. package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
  538. package/dist/keryx-http/src/own-awareness.d.ts +50 -0
  539. package/dist/keryx-http/src/own-awareness.js +20 -0
  540. package/dist/keryx-http/src/own-awareness.js.map +1 -0
  541. package/dist/keryx-http/src/update-attributions.cjs +26 -1
  542. package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
  543. package/dist/keryx-http/src/update-attributions.d.ts +10 -1
  544. package/dist/keryx-http/src/update-attributions.js +26 -1
  545. package/dist/keryx-http/src/update-attributions.js.map +1 -1
  546. package/dist/offline/chat-outbox.cjs +262 -26
  547. package/dist/offline/chat-outbox.cjs.map +1 -1
  548. package/dist/offline/chat-outbox.d.ts +90 -12
  549. package/dist/offline/chat-outbox.js +263 -27
  550. package/dist/offline/chat-outbox.js.map +1 -1
  551. package/dist/provider/AthenaProvider.cjs +63 -19
  552. package/dist/provider/AthenaProvider.cjs.map +1 -1
  553. package/dist/provider/AthenaProvider.d.ts +24 -8
  554. package/dist/provider/AthenaProvider.js +66 -22
  555. package/dist/provider/AthenaProvider.js.map +1 -1
  556. package/dist/react/package.json.cjs +1 -1
  557. package/dist/react/package.json.js +1 -1
  558. package/dist/references/src/anchors/types.cjs +5 -0
  559. package/dist/references/src/anchors/types.cjs.map +1 -1
  560. package/dist/references/src/anchors/types.js +5 -0
  561. package/dist/references/src/anchors/types.js.map +1 -1
  562. package/dist/references/src/attachable.cjs +149 -0
  563. package/dist/references/src/attachable.cjs.map +1 -0
  564. package/dist/references/src/attachable.d.ts +87 -0
  565. package/dist/references/src/attachable.js +149 -0
  566. package/dist/references/src/attachable.js.map +1 -0
  567. package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
  568. package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
  569. package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
  570. package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
  571. package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
  572. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
  573. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  574. package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
  575. package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
  576. package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
  577. package/dist/runtime/statewire-plan-mode.cjs +71 -0
  578. package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
  579. package/dist/runtime/statewire-plan-mode.d.ts +88 -0
  580. package/dist/runtime/statewire-plan-mode.js +71 -0
  581. package/dist/runtime/statewire-plan-mode.js.map +1 -0
  582. package/dist/runtime/statewire-run-config.cjs +18 -1
  583. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  584. package/dist/runtime/statewire-run-config.d.ts +20 -0
  585. package/dist/runtime/statewire-run-config.js +18 -1
  586. package/dist/runtime/statewire-run-config.js.map +1 -1
  587. package/dist/runtime/statewire-session-key.cjs +11 -5
  588. package/dist/runtime/statewire-session-key.cjs.map +1 -1
  589. package/dist/runtime/statewire-session-key.d.ts +22 -10
  590. package/dist/runtime/statewire-session-key.js +11 -5
  591. package/dist/runtime/statewire-session-key.js.map +1 -1
  592. package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
  593. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  594. package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
  595. package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
  596. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  597. package/dist/search/useAthenaAssets.cjs +394 -0
  598. package/dist/search/useAthenaAssets.cjs.map +1 -0
  599. package/dist/search/useAthenaAssets.d.ts +186 -0
  600. package/dist/search/useAthenaAssets.js +394 -0
  601. package/dist/search/useAthenaAssets.js.map +1 -0
  602. package/dist/sheet-range/index.cjs +4 -0
  603. package/dist/sheet-range/index.cjs.map +1 -1
  604. package/dist/sheet-range/index.d.ts +4 -2
  605. package/dist/sheet-range/index.js +4 -0
  606. package/dist/sheet-range/index.js.map +1 -1
  607. package/dist/sheet-range/query-range.cjs +102 -0
  608. package/dist/sheet-range/query-range.cjs.map +1 -0
  609. package/dist/sheet-range/query-range.d.ts +46 -0
  610. package/dist/sheet-range/query-range.js +102 -0
  611. package/dist/sheet-range/query-range.js.map +1 -0
  612. package/dist/styles.css +1 -1
  613. package/dist/subagents/index.cjs +49 -0
  614. package/dist/subagents/index.cjs.map +1 -0
  615. package/dist/subagents/index.d.ts +16 -0
  616. package/dist/subagents/index.js +49 -0
  617. package/dist/subagents/index.js.map +1 -0
  618. package/dist/subagents/lane-follow.cjs +19 -0
  619. package/dist/subagents/lane-follow.cjs.map +1 -0
  620. package/dist/subagents/lane-follow.d.ts +9 -0
  621. package/dist/subagents/lane-follow.js +19 -0
  622. package/dist/subagents/lane-follow.js.map +1 -0
  623. package/dist/subagents/lane-model.cjs +178 -0
  624. package/dist/subagents/lane-model.cjs.map +1 -0
  625. package/dist/subagents/lane-model.d.ts +140 -0
  626. package/dist/subagents/lane-model.js +178 -0
  627. package/dist/subagents/lane-model.js.map +1 -0
  628. package/dist/subagents/lane-parts.cjs +517 -0
  629. package/dist/subagents/lane-parts.cjs.map +1 -0
  630. package/dist/subagents/lane-parts.d.ts +130 -0
  631. package/dist/subagents/lane-parts.js +517 -0
  632. package/dist/subagents/lane-parts.js.map +1 -0
  633. package/dist/subagents/subagent-lane-group.cjs +215 -0
  634. package/dist/subagents/subagent-lane-group.cjs.map +1 -0
  635. package/dist/subagents/subagent-lane-group.d.ts +67 -0
  636. package/dist/subagents/subagent-lane-group.js +215 -0
  637. package/dist/subagents/subagent-lane-group.js.map +1 -0
  638. package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
  639. package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
  640. package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
  641. package/dist/subagents/subagent-transcript-drawer.js +431 -0
  642. package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
  643. package/dist/subagents/task-subagent-group.cjs +115 -0
  644. package/dist/subagents/task-subagent-group.cjs.map +1 -0
  645. package/dist/subagents/task-subagent-group.d.ts +36 -0
  646. package/dist/subagents/task-subagent-group.js +115 -0
  647. package/dist/subagents/task-subagent-group.js.map +1 -0
  648. package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
  649. package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
  650. package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
  651. package/dist/subagents/use-omitted-images-in-view.js +68 -0
  652. package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
  653. package/dist/threads/Inbox.cjs +2 -2
  654. package/dist/threads/Inbox.cjs.map +1 -1
  655. package/dist/threads/SessionList.cjs +27 -24
  656. package/dist/threads/SessionList.cjs.map +1 -1
  657. package/dist/threads/SessionList.js +22 -19
  658. package/dist/threads/SessionList.js.map +1 -1
  659. package/dist/threads/SessionsPage.cjs +13 -7
  660. package/dist/threads/SessionsPage.cjs.map +1 -1
  661. package/dist/threads/SessionsPage.d.ts +10 -1
  662. package/dist/threads/SessionsPage.js +9 -3
  663. package/dist/threads/SessionsPage.js.map +1 -1
  664. package/dist/threads/live-session-rows.cjs +207 -0
  665. package/dist/threads/live-session-rows.cjs.map +1 -0
  666. package/dist/threads/live-session-rows.d.ts +175 -0
  667. package/dist/threads/live-session-rows.js +207 -0
  668. package/dist/threads/live-session-rows.js.map +1 -0
  669. package/dist/threads/session-list-model.cjs.map +1 -1
  670. package/dist/threads/session-list-model.d.ts +2 -1
  671. package/dist/threads/session-list-model.js.map +1 -1
  672. package/dist/threads/session-row-parts.cjs +3 -3
  673. package/dist/threads/session-row-parts.cjs.map +1 -1
  674. package/dist/threads/sessions-page-model.cjs +13 -5
  675. package/dist/threads/sessions-page-model.cjs.map +1 -1
  676. package/dist/threads/sessions-page-model.d.ts +7 -0
  677. package/dist/threads/sessions-page-model.js +11 -3
  678. package/dist/threads/sessions-page-model.js.map +1 -1
  679. package/dist/threads/sessions-page-storage.cjs +8 -8
  680. package/dist/threads/sessions-page-storage.cjs.map +1 -1
  681. package/dist/threads/sessions-page-storage.d.ts +5 -1
  682. package/dist/threads/sessions-page-storage.js +8 -8
  683. package/dist/threads/sessions-page-storage.js.map +1 -1
  684. package/dist/threads/statewire-thread-list.cjs +173 -20
  685. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  686. package/dist/threads/statewire-thread-list.d.ts +44 -1
  687. package/dist/threads/statewire-thread-list.js +174 -21
  688. package/dist/threads/statewire-thread-list.js.map +1 -1
  689. package/dist/threads/use-athena-sessions.cjs +1 -0
  690. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  691. package/dist/threads/use-athena-sessions.d.ts +7 -0
  692. package/dist/threads/use-athena-sessions.js +1 -0
  693. package/dist/threads/use-athena-sessions.js.map +1 -1
  694. package/dist/threads/use-athena-thread-agent.cjs +31 -0
  695. package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
  696. package/dist/threads/use-athena-thread-agent.d.ts +38 -0
  697. package/dist/threads/use-athena-thread-agent.js +31 -0
  698. package/dist/threads/use-athena-thread-agent.js.map +1 -0
  699. package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
  700. package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
  701. package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
  702. package/dist/threads/use-athena-thread-plan-mode.js +18 -0
  703. package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
  704. package/dist/threads/use-rest-conversation-history.d.ts +1 -0
  705. package/dist/tools/agent-creations.cjs +97 -0
  706. package/dist/tools/agent-creations.cjs.map +1 -0
  707. package/dist/tools/agent-creations.d.ts +38 -0
  708. package/dist/tools/agent-creations.js +97 -0
  709. package/dist/tools/agent-creations.js.map +1 -0
  710. package/dist/tools/agent-highlights.cjs +100 -0
  711. package/dist/tools/agent-highlights.cjs.map +1 -0
  712. package/dist/tools/agent-highlights.d.ts +57 -0
  713. package/dist/tools/agent-highlights.js +100 -0
  714. package/dist/tools/agent-highlights.js.map +1 -0
  715. package/dist/tools/append-document-tool-ui.cjs +1 -0
  716. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  717. package/dist/tools/append-document-tool-ui.d.ts +7 -0
  718. package/dist/tools/append-document-tool-ui.js +2 -1
  719. package/dist/tools/append-document-tool-ui.js.map +1 -1
  720. package/dist/tools/auto-open-tools.cjs +144 -71
  721. package/dist/tools/auto-open-tools.cjs.map +1 -1
  722. package/dist/tools/auto-open-tools.d.ts +131 -1
  723. package/dist/tools/auto-open-tools.js +145 -72
  724. package/dist/tools/auto-open-tools.js.map +1 -1
  725. package/dist/tools/browser-tool-uis.cjs +594 -0
  726. package/dist/tools/browser-tool-uis.cjs.map +1 -0
  727. package/dist/tools/browser-tool-uis.d.ts +8 -0
  728. package/dist/tools/browser-tool-uis.js +594 -0
  729. package/dist/tools/browser-tool-uis.js.map +1 -0
  730. package/dist/tools/computer-asset-tool-uis.cjs +313 -0
  731. package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
  732. package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
  733. package/dist/tools/computer-asset-tool-uis.js +313 -0
  734. package/dist/tools/computer-asset-tool-uis.js.map +1 -0
  735. package/dist/tools/document-edit-tool-uis.cjs +218 -0
  736. package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
  737. package/dist/tools/document-edit-tool-uis.d.ts +40 -0
  738. package/dist/tools/document-edit-tool-uis.js +218 -0
  739. package/dist/tools/document-edit-tool-uis.js.map +1 -0
  740. package/dist/tools/drive-tool-uis.cjs +425 -0
  741. package/dist/tools/drive-tool-uis.cjs.map +1 -0
  742. package/dist/tools/drive-tool-uis.d.ts +120 -0
  743. package/dist/tools/drive-tool-uis.js +425 -0
  744. package/dist/tools/drive-tool-uis.js.map +1 -0
  745. package/dist/tools/email-calendar-tool-uis.cjs +789 -0
  746. package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
  747. package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
  748. package/dist/tools/email-calendar-tool-uis.js +789 -0
  749. package/dist/tools/email-calendar-tool-uis.js.map +1 -0
  750. package/dist/tools/ontology-tool-uis.cjs +83 -0
  751. package/dist/tools/ontology-tool-uis.cjs.map +1 -0
  752. package/dist/tools/ontology-tool-uis.d.ts +9 -0
  753. package/dist/tools/ontology-tool-uis.js +83 -0
  754. package/dist/tools/ontology-tool-uis.js.map +1 -0
  755. package/dist/tools/orchestration-tool-uis.cjs +586 -0
  756. package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
  757. package/dist/tools/orchestration-tool-uis.d.ts +141 -0
  758. package/dist/tools/orchestration-tool-uis.js +586 -0
  759. package/dist/tools/orchestration-tool-uis.js.map +1 -0
  760. package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
  761. package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
  762. package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
  763. package/dist/tools/presentation-edit-tool-uis.js +516 -0
  764. package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
  765. package/dist/tools/project-tool-uis.cjs +213 -0
  766. package/dist/tools/project-tool-uis.cjs.map +1 -0
  767. package/dist/tools/project-tool-uis.d.ts +14 -0
  768. package/dist/tools/project-tool-uis.js +213 -0
  769. package/dist/tools/project-tool-uis.js.map +1 -0
  770. package/dist/tools/sandbox-tool-uis.cjs +491 -0
  771. package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
  772. package/dist/tools/sandbox-tool-uis.d.ts +116 -0
  773. package/dist/tools/sandbox-tool-uis.js +491 -0
  774. package/dist/tools/sandbox-tool-uis.js.map +1 -0
  775. package/dist/tools/sheet-query-tool-ui.cjs +138 -0
  776. package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
  777. package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
  778. package/dist/tools/sheet-query-tool-ui.js +138 -0
  779. package/dist/tools/sheet-query-tool-ui.js.map +1 -0
  780. package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
  781. package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
  782. package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
  783. package/dist/tools/studio-screenshot-tool-uis.js +262 -0
  784. package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
  785. package/dist/tools/subagent-task-tool-ui.cjs +24 -475
  786. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  787. package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
  788. package/dist/tools/subagent-task-tool-ui.js +28 -479
  789. package/dist/tools/subagent-task-tool-ui.js.map +1 -1
  790. package/dist/tools/tool-summary.cjs +36 -0
  791. package/dist/tools/tool-summary.cjs.map +1 -1
  792. package/dist/tools/tool-summary.js +36 -0
  793. package/dist/tools/tool-summary.js.map +1 -1
  794. package/dist/tools/tool-uis.cjs +181 -53
  795. package/dist/tools/tool-uis.cjs.map +1 -1
  796. package/dist/tools/tool-uis.d.ts +40 -0
  797. package/dist/tools/tool-uis.js +183 -55
  798. package/dist/tools/tool-uis.js.map +1 -1
  799. package/dist/typed-interrupts/index.cjs +15 -0
  800. package/dist/typed-interrupts/index.cjs.map +1 -0
  801. package/dist/typed-interrupts/index.d.ts +20 -0
  802. package/dist/typed-interrupts/index.js +15 -0
  803. package/dist/typed-interrupts/index.js.map +1 -0
  804. package/dist/workbench/session-workbench-panes.cjs +6 -6
  805. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  806. package/package.json +28 -6
  807. package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
  808. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
  809. package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
  810. package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
  811. package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
@@ -0,0 +1,101 @@
1
+ import { isMessageRunCommand } from "./chat-outbox-policy.js";
2
+ import { heldSendFailure } from "./statewire-held-sends.js";
3
+ const CHAT_OUTBOX_LOCAL_META_KIND = "athena-chat-outbox";
4
+ const LEGACY_CHAT_OUTBOX_SOURCE = "athena-chat-outbox:v1";
5
+ function isRecord(value) {
6
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7
+ }
8
+ function readChatOutboxLocalMeta(localMeta) {
9
+ if (!isRecord(localMeta)) return {};
10
+ const meta = {};
11
+ if (localMeta.kind === CHAT_OUTBOX_LOCAL_META_KIND) meta.kind = CHAT_OUTBOX_LOCAL_META_KIND;
12
+ if (typeof localMeta.threadId === "string") meta.threadId = localMeta.threadId;
13
+ if (typeof localMeta.queuedAt === "number" && Number.isFinite(localMeta.queuedAt)) meta.queuedAt = localMeta.queuedAt;
14
+ if (typeof localMeta.newChat === "boolean") meta.newChat = localMeta.newChat;
15
+ if (typeof localMeta.composerMarkdown === "string") meta.composerMarkdown = localMeta.composerMarkdown;
16
+ if (typeof localMeta.composerHtml === "string") meta.composerHtml = localMeta.composerHtml;
17
+ const attachments = readAttachments(localMeta.attachments);
18
+ if (attachments) meta.attachments = attachments;
19
+ if (typeof localMeta.countdownEndsAt === "number") meta.countdownEndsAt = localMeta.countdownEndsAt;
20
+ if (typeof localMeta.countdownFrom === "number") meta.countdownFrom = localMeta.countdownFrom;
21
+ if (localMeta.migratedFrom === LEGACY_CHAT_OUTBOX_SOURCE) meta.migratedFrom = LEGACY_CHAT_OUTBOX_SOURCE;
22
+ if (typeof localMeta.legacyId === "string") meta.legacyId = localMeta.legacyId;
23
+ const error = heldSendFailure(localMeta);
24
+ if (error) meta.error = error;
25
+ return meta;
26
+ }
27
+ function withoutTransientLocalMeta(localMeta) {
28
+ if (!isRecord(localMeta)) return localMeta;
29
+ const { countdownEndsAt: _ends, countdownFrom: _from, error: _error, ...rest } = localMeta;
30
+ return Object.keys(rest).length > 0 ? rest : void 0;
31
+ }
32
+ function readAttachments(value) {
33
+ if (!Array.isArray(value)) return void 0;
34
+ const attachments = [];
35
+ for (const attachment of value) {
36
+ if (!isRecord(attachment) || typeof attachment.assetId !== "string" || attachment.assetId.length === 0) continue;
37
+ attachments.push({
38
+ assetId: attachment.assetId,
39
+ title: typeof attachment.title === "string" ? attachment.title : "",
40
+ ...typeof attachment.mediaType === "string" && { mediaType: attachment.mediaType }
41
+ });
42
+ }
43
+ return attachments.length > 0 ? attachments : void 0;
44
+ }
45
+ function readFiles(value) {
46
+ if (!Array.isArray(value)) return void 0;
47
+ const files = [];
48
+ for (const file of value) {
49
+ if (!isRecord(file) || typeof file.url !== "string" || typeof file.mediaType !== "string") continue;
50
+ files.push({
51
+ url: file.url,
52
+ mediaType: file.mediaType,
53
+ ...typeof file.filename === "string" && { filename: file.filename }
54
+ });
55
+ }
56
+ return files.length > 0 ? files : void 0;
57
+ }
58
+ function runSendMessage(command) {
59
+ if (!isMessageRunCommand(command)) return null;
60
+ const params = command.params[0];
61
+ if (!isRecord(params) || !isRecord(params.message)) return null;
62
+ const { id, parts, metadata } = params.message;
63
+ if (typeof id !== "string") return null;
64
+ return {
65
+ id,
66
+ parts: Array.isArray(parts) ? parts : [],
67
+ ...isRecord(metadata) && { metadata }
68
+ };
69
+ }
70
+ function chatOutboxEntryOf(entry, threadId) {
71
+ const message = runSendMessage(entry.command);
72
+ if (message === null) return null;
73
+ const meta = readChatOutboxLocalMeta(entry.localMeta);
74
+ const text = message.parts.flatMap((part) => isRecord(part) && part.type === "text" && typeof part.text === "string" ? [part.text] : []).join("\n\n");
75
+ const files = readFiles(message.parts.filter((part) => isRecord(part) && part.type === "file"));
76
+ return {
77
+ id: message.id,
78
+ outboxId: entry.id,
79
+ threadId: meta.threadId ?? threadId,
80
+ text,
81
+ queuedAt: meta.queuedAt ?? entry.ts,
82
+ newChat: meta.newChat ?? false,
83
+ durable: entry.durable,
84
+ ...meta.composerMarkdown !== void 0 && { composerMarkdown: meta.composerMarkdown },
85
+ ...meta.composerHtml !== void 0 && { composerHtml: meta.composerHtml },
86
+ ...message.metadata !== void 0 && { metadata: message.metadata },
87
+ ...files && { files },
88
+ ...meta.attachments && { attachments: meta.attachments }
89
+ };
90
+ }
91
+ export {
92
+ CHAT_OUTBOX_LOCAL_META_KIND,
93
+ LEGACY_CHAT_OUTBOX_SOURCE,
94
+ chatOutboxEntryOf,
95
+ readAttachments,
96
+ readChatOutboxLocalMeta,
97
+ readFiles,
98
+ runSendMessage,
99
+ withoutTransientLocalMeta
100
+ };
101
+ //# sourceMappingURL=chat-outbox-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-outbox-entry.js","sources":["../../../../agent-runtime/src/chat-outbox-entry.ts"],"sourcesContent":["import type { StatewireClient } from \"statewire\";\nimport { isMessageRunCommand } from \"./chat-outbox-policy\";\nimport { heldSendFailure } from \"./statewire-held-sends\";\n\n/**\n * A chat message waiting in statewire's outbox, as the chat outbox shows it.\n *\n * The outbox entry is the record: its command is the `run/*` send that carries the message (text and\n * files in `message.parts`, metadata on `message.metadata`), and its client-only `localMeta` keeps\n * what the person's device needs and the server never sees ({@link ChatOutboxLocalMeta}). Both are\n * persisted with the thread's statewire session (sealed on the device where the host keeps copies).\n */\n\n/** An already-uploaded file a waiting message refers to (never a file picked while offline). */\nexport interface ChatOutboxFile {\n /** A server-backed URL (an asset's image route); never a `blob:` or `data:` URL. */\n url: string;\n mediaType: string;\n filename?: string;\n}\n\n/**\n * A file already in Athena that a waiting message carries: an upload that finished before Athena\n * went out of reach. Its reference rides the message's text, as a sent message's does; this copy\n * names it so the outbox can ask Athena, right before the message goes, that the file is still there\n * and still the person's to open (`ChatOutboxOptions.checkAttachments`).\n */\nexport interface ChatOutboxAttachment {\n assetId: string;\n /** Its name, as the composer showed it. */\n title: string;\n mediaType?: string;\n}\n\n/** Marks a `localMeta` written by the chat outbox. */\nexport const CHAT_OUTBOX_LOCAL_META_KIND = \"athena-chat-outbox\";\n\n/** The legacy store a migrated entry came from (`chat-outbox-legacy.ts`). */\nexport const LEGACY_CHAT_OUTBOX_SOURCE = \"athena-chat-outbox:v1\";\n\n/** What an outbox entry of a chat message keeps on the device (`OutboxEntry.localMeta`). */\nexport interface ChatOutboxLocalMeta {\n kind?: typeof CHAT_OUTBOX_LOCAL_META_KIND;\n threadId?: string;\n /** When it was typed (epoch ms): a message that waited more than a day asks before it goes. */\n queuedAt?: number;\n /** Typed into a chat that had never started: reopening that chat finds it again. */\n newChat?: boolean;\n /** The composer draft the text was serialized from, for giving it back exactly as typed. */\n composerMarkdown?: string;\n /** The draft as an HTML composer holds it (the phone's), given back exactly on Cancel or Edit. */\n composerHtml?: string;\n /** The files already in Athena the message carries, asked about right before it goes. */\n attachments?: ChatOutboxAttachment[];\n /** When the running countdown sends it (epoch ms). */\n countdownEndsAt?: number;\n /** When that countdown started (epoch ms): a tab coming to the front starts an older one over. */\n countdownFrom?: number;\n /** The legacy store it was migrated from, and its id there. */\n migratedFrom?: typeof LEGACY_CHAT_OUTBOX_SOURCE;\n legacyId?: string;\n /** Why it could not be sent (`statewire-held-sends.ts`); set, the row says \"Couldn't send\". */\n error?: StatewireClient.SendFailure;\n}\n\nexport interface ChatOutboxEntry {\n /**\n * The message id, minted when the message was typed. It is sent under it, so a send whose answer\n * was lost never posts twice: the thread's host refuses an id it already holds.\n */\n id: string;\n /** The statewire outbox entry that carries it (`undefined` while the session is still loading). */\n outboxId?: string;\n threadId: string;\n /** The text exactly as it will be sent (what the model reads). */\n text: string;\n composerMarkdown?: string;\n composerHtml?: string;\n /** The message metadata frozen when it was typed (its composer markdown, the agents it names, …). */\n metadata?: Record<string, unknown>;\n files?: ChatOutboxFile[];\n attachments?: ChatOutboxAttachment[];\n /** When it was typed (epoch ms). */\n queuedAt: number;\n newChat: boolean;\n /** Kept on the device (`false`: in page memory only, gone if the page closes). */\n durable: boolean;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** The chat outbox's view of an entry's `localMeta` (fields of the wrong type are dropped). */\nexport function readChatOutboxLocalMeta(localMeta: unknown): ChatOutboxLocalMeta {\n if (!isRecord(localMeta)) return {};\n const meta: ChatOutboxLocalMeta = {};\n if (localMeta.kind === CHAT_OUTBOX_LOCAL_META_KIND) meta.kind = CHAT_OUTBOX_LOCAL_META_KIND;\n if (typeof localMeta.threadId === \"string\") meta.threadId = localMeta.threadId;\n if (typeof localMeta.queuedAt === \"number\" && Number.isFinite(localMeta.queuedAt)) meta.queuedAt = localMeta.queuedAt;\n if (typeof localMeta.newChat === \"boolean\") meta.newChat = localMeta.newChat;\n if (typeof localMeta.composerMarkdown === \"string\") meta.composerMarkdown = localMeta.composerMarkdown;\n if (typeof localMeta.composerHtml === \"string\") meta.composerHtml = localMeta.composerHtml;\n const attachments = readAttachments(localMeta.attachments);\n if (attachments) meta.attachments = attachments;\n if (typeof localMeta.countdownEndsAt === \"number\") meta.countdownEndsAt = localMeta.countdownEndsAt;\n if (typeof localMeta.countdownFrom === \"number\") meta.countdownFrom = localMeta.countdownFrom;\n if (localMeta.migratedFrom === LEGACY_CHAT_OUTBOX_SOURCE) meta.migratedFrom = LEGACY_CHAT_OUTBOX_SOURCE;\n if (typeof localMeta.legacyId === \"string\") meta.legacyId = localMeta.legacyId;\n const error = heldSendFailure(localMeta);\n if (error) meta.error = error;\n return meta;\n}\n\n/** `localMeta` without the countdown and the failure: what a send that goes again carries. */\nexport function withoutTransientLocalMeta(localMeta: unknown): unknown {\n if (!isRecord(localMeta)) return localMeta;\n const { countdownEndsAt: _ends, countdownFrom: _from, error: _error, ...rest } = localMeta;\n return Object.keys(rest).length > 0 ? rest : undefined;\n}\n\nexport function readAttachments(value: unknown): ChatOutboxAttachment[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const attachments: ChatOutboxAttachment[] = [];\n for (const attachment of value) {\n if (!isRecord(attachment) || typeof attachment.assetId !== \"string\" || attachment.assetId.length === 0) continue;\n attachments.push({\n assetId: attachment.assetId,\n title: typeof attachment.title === \"string\" ? attachment.title : \"\",\n ...(typeof attachment.mediaType === \"string\" && { mediaType: attachment.mediaType }),\n });\n }\n return attachments.length > 0 ? attachments : undefined;\n}\n\nexport function readFiles(value: unknown): ChatOutboxFile[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const files: ChatOutboxFile[] = [];\n for (const file of value) {\n if (!isRecord(file) || typeof file.url !== \"string\" || typeof file.mediaType !== \"string\") continue;\n files.push({\n url: file.url,\n mediaType: file.mediaType,\n ...(typeof file.filename === \"string\" && { filename: file.filename }),\n });\n }\n return files.length > 0 ? files : undefined;\n}\n\n/** The user message a message-carrying run send carries (`params[0].message`). */\nexport function runSendMessage(\n command: { method: string; params: readonly unknown[] },\n): { id: string; parts: unknown[]; metadata?: Record<string, unknown> } | null {\n if (!isMessageRunCommand(command)) return null;\n const params = command.params[0];\n if (!isRecord(params) || !isRecord(params.message)) return null;\n const { id, parts, metadata } = params.message;\n if (typeof id !== \"string\") return null;\n return {\n id,\n parts: Array.isArray(parts) ? parts : [],\n ...(isRecord(metadata) && { metadata }),\n };\n}\n\n/**\n * The chat message an outbox entry carries, or `null` when it carries none (not a\n * message-carrying run send). `threadId` names the thread whose session holds it.\n */\nexport function chatOutboxEntryOf(entry: StatewireClient.OutboxEntry, threadId: string): ChatOutboxEntry | null {\n const message = runSendMessage(entry.command);\n if (message === null) return null;\n const meta = readChatOutboxLocalMeta(entry.localMeta);\n const text = message.parts\n .flatMap((part) => (isRecord(part) && part.type === \"text\" && typeof part.text === \"string\" ? [part.text] : []))\n .join(\"\\n\\n\");\n const files = readFiles(message.parts.filter((part) => isRecord(part) && part.type === \"file\"));\n return {\n id: message.id,\n outboxId: entry.id,\n threadId: meta.threadId ?? threadId,\n text,\n queuedAt: meta.queuedAt ?? entry.ts,\n newChat: meta.newChat ?? false,\n durable: entry.durable,\n ...(meta.composerMarkdown !== undefined && { composerMarkdown: meta.composerMarkdown }),\n ...(meta.composerHtml !== undefined && { composerHtml: meta.composerHtml }),\n ...(message.metadata !== undefined && { metadata: message.metadata }),\n ...(files && { files }),\n ...(meta.attachments && { attachments: meta.attachments }),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const chatOutboxEntry = require("./chat-outbox-entry.cjs");
4
+ const sealedIdb = require("./sealed-idb.cjs");
5
+ const statewireTransport = require("./statewire-transport.cjs");
6
+ const LEGACY_CHAT_OUTBOX_DATABASE = chatOutboxEntry.LEGACY_CHAT_OUTBOX_SOURCE;
7
+ const LEGACY_FORMAT = 1;
8
+ const DATABASE_VERSION = 1;
9
+ const ENTRIES_STORE = "entries";
10
+ const BY_OWNER = "byOwner";
11
+ const BY_OWNER_THREAD = "byOwnerThread";
12
+ function isRecord(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
15
+ function readLegacyChatOutboxFailure(value) {
16
+ if (!isRecord(value) || typeof value.at !== "number") return void 0;
17
+ return { reason: typeof value.reason === "string" && value.reason.length > 0 ? value.reason : "error", at: value.at };
18
+ }
19
+ function parseLegacyChatOutboxMessage(value) {
20
+ if (!isRecord(value)) return null;
21
+ const { id, threadId, text, queuedAt } = value;
22
+ if (typeof id !== "string" || typeof threadId !== "string" || typeof text !== "string") return null;
23
+ if (typeof queuedAt !== "number" || !Number.isFinite(queuedAt)) return null;
24
+ const files = chatOutboxEntry.readFiles(value.files);
25
+ const attachments = chatOutboxEntry.readAttachments(value.attachments);
26
+ return {
27
+ id,
28
+ threadId,
29
+ text,
30
+ queuedAt,
31
+ newChat: value.newChat === true,
32
+ ...typeof value.composerMarkdown === "string" && { composerMarkdown: value.composerMarkdown },
33
+ ...typeof value.composerHtml === "string" && { composerHtml: value.composerHtml },
34
+ ...isRecord(value.metadata) && { metadata: value.metadata },
35
+ ...isRecord(value.sendContext) && { sendContext: value.sendContext },
36
+ ...files && { files },
37
+ ...attachments && { attachments }
38
+ };
39
+ }
40
+ function withFailure(message, value) {
41
+ const failure = readLegacyChatOutboxFailure(value);
42
+ return failure ? { ...message, failure } : message;
43
+ }
44
+ function upgrade(db) {
45
+ if (!db.objectStoreNames.contains(ENTRIES_STORE)) {
46
+ const store = db.createObjectStore(ENTRIES_STORE, { keyPath: "key" });
47
+ store.createIndex(BY_OWNER, "owner", { unique: false });
48
+ store.createIndex(BY_OWNER_THREAD, ["owner", "thread"], { unique: false });
49
+ }
50
+ }
51
+ function createLegacyChatOutboxReader({
52
+ ownerId,
53
+ getKey,
54
+ factory = sealedIdb.idbGlobals.indexedDB,
55
+ databaseName = LEGACY_CHAT_OUTBOX_DATABASE
56
+ }) {
57
+ const database = sealedIdb.lazySealedDatabase({ factory, name: databaseName, version: DATABASE_VERSION, upgrade });
58
+ const ownerHash = () => sealedIdb.sha256Hex(ownerId);
59
+ const recordKey = (threadId, id) => sealedIdb.sha256Hex(`${ownerId}|${threadId}|${id}`);
60
+ const aadOf = (record) => `athena-chat-outbox|${LEGACY_FORMAT}|${record.owner}|${record.thread}|${record.key}`;
61
+ const open = async (records) => {
62
+ if (records.length === 0) return [];
63
+ let key = null;
64
+ try {
65
+ key = await getKey();
66
+ } catch {
67
+ key = null;
68
+ }
69
+ if (!key) return [];
70
+ const opened = [];
71
+ for (const record of records) {
72
+ if (!record || record.format > LEGACY_FORMAT) continue;
73
+ try {
74
+ const message = parseLegacyChatOutboxMessage(await sealedIdb.openJson({ key, sealed: record.sealed, aad: aadOf(record) }));
75
+ if (message) opened.push(withFailure(message, record.failure));
76
+ } catch {
77
+ }
78
+ }
79
+ return opened.sort((a, b) => a.queuedAt - b.queuedAt);
80
+ };
81
+ const readIndex = async (index, query) => {
82
+ const db = await database();
83
+ if (!db) return [];
84
+ return await sealedIdb.requestToPromise(
85
+ db.transaction(ENTRIES_STORE, "readonly").objectStore(ENTRIES_STORE).index(index).getAll(query)
86
+ );
87
+ };
88
+ return {
89
+ async listAll() {
90
+ try {
91
+ return await open(await readIndex(BY_OWNER, await ownerHash()));
92
+ } catch {
93
+ return [];
94
+ }
95
+ },
96
+ async list(threadId) {
97
+ try {
98
+ const thread = await sealedIdb.sha256Hex(`${ownerId}|${threadId}`);
99
+ return await open(await readIndex(BY_OWNER_THREAD, [await ownerHash(), thread]));
100
+ } catch {
101
+ return [];
102
+ }
103
+ },
104
+ async count() {
105
+ const db = await database();
106
+ if (!db) return 0;
107
+ const owner = await ownerHash();
108
+ const keys = await sealedIdb.requestToPromise(
109
+ db.transaction(ENTRIES_STORE, "readonly").objectStore(ENTRIES_STORE).index(BY_OWNER).getAllKeys(owner)
110
+ );
111
+ return keys.length;
112
+ },
113
+ async remove(threadId, id) {
114
+ const db = await database();
115
+ if (!db) return;
116
+ const key = await recordKey(threadId, id);
117
+ const tx = db.transaction(ENTRIES_STORE, "readwrite");
118
+ const store = tx.objectStore(ENTRIES_STORE);
119
+ const existing = await sealedIdb.requestToPromise(store.get(key));
120
+ if (!isRecord(existing) || typeof existing.format !== "number" || existing.format <= LEGACY_FORMAT) {
121
+ store.delete(key);
122
+ }
123
+ await sealedIdb.transactionDone(tx);
124
+ },
125
+ async clear() {
126
+ const db = await database();
127
+ if (!db) return;
128
+ const owner = await ownerHash();
129
+ const tx = db.transaction(ENTRIES_STORE, "readwrite");
130
+ const store = tx.objectStore(ENTRIES_STORE);
131
+ const keys = await sealedIdb.requestToPromise(store.index(BY_OWNER).getAllKeys(owner));
132
+ for (const key of keys) store.delete(key);
133
+ await sealedIdb.transactionDone(tx);
134
+ }
135
+ };
136
+ }
137
+ function newRunId() {
138
+ var _a, _b;
139
+ const host = globalThis;
140
+ return ((_b = (_a = host.crypto) == null ? void 0 : _a.randomUUID) == null ? void 0 : _b.call(_a)) ?? `run-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
141
+ }
142
+ function legacyAgents(message) {
143
+ var _a;
144
+ if (message.metadata && "addressedAgents" in message.metadata) return void 0;
145
+ const named = (_a = message.sendContext) == null ? void 0 : _a.namedAgents;
146
+ if (!Array.isArray(named)) return void 0;
147
+ const refs = named.flatMap(
148
+ (agent) => isRecord(agent) && typeof agent.ref === "string" && agent.ref.length > 0 ? [agent.ref] : []
149
+ );
150
+ return refs.length > 0 ? refs : void 0;
151
+ }
152
+ const LEGACY_ATTACHMENT_REFUSED_CODE = "attachment-unavailable";
153
+ function legacyChatOutboxSendFailure(failure) {
154
+ return {
155
+ fate: "rejected",
156
+ cause: "server",
157
+ code: failure.reason === "attachment" ? LEGACY_ATTACHMENT_REFUSED_CODE : `legacy-${failure.reason}`
158
+ };
159
+ }
160
+ function legacyChatOutboxInsert(message) {
161
+ const agents = legacyAgents(message);
162
+ const metadata = agents === void 0 && message.metadata === void 0 ? void 0 : { ...message.metadata, ...agents !== void 0 && { addressedAgents: agents } };
163
+ const parts = [
164
+ ...(message.files ?? []).map((file) => ({
165
+ type: "file",
166
+ mediaType: file.mediaType,
167
+ url: file.url,
168
+ ...file.filename !== void 0 && { filename: file.filename }
169
+ })),
170
+ ...message.text.length > 0 ? [{ type: "text", text: message.text }] : []
171
+ ];
172
+ const localMeta = {
173
+ kind: chatOutboxEntry.CHAT_OUTBOX_LOCAL_META_KIND,
174
+ threadId: message.threadId,
175
+ queuedAt: message.queuedAt,
176
+ newChat: message.newChat,
177
+ migratedFrom: chatOutboxEntry.LEGACY_CHAT_OUTBOX_SOURCE,
178
+ legacyId: message.id,
179
+ ...message.composerMarkdown !== void 0 && { composerMarkdown: message.composerMarkdown },
180
+ ...message.composerHtml !== void 0 && { composerHtml: message.composerHtml },
181
+ ...message.attachments !== void 0 && { attachments: message.attachments },
182
+ ...message.failure !== void 0 && { error: legacyChatOutboxSendFailure(message.failure) }
183
+ };
184
+ return {
185
+ protocol: statewireTransport.DEEP_AGENT_STATEWIRE_PROTOCOL,
186
+ command: {
187
+ method: "run/send",
188
+ params: [
189
+ {
190
+ type: "run/send",
191
+ behavior: "auto",
192
+ runId: newRunId(),
193
+ message: { id: message.id, role: "user", parts, ...metadata !== void 0 && { metadata } }
194
+ }
195
+ ]
196
+ },
197
+ held: true,
198
+ localMeta
199
+ };
200
+ }
201
+ function holdsLegacy(outbox, message) {
202
+ return outbox.entries.some((entry) => {
203
+ var _a;
204
+ const meta = chatOutboxEntry.readChatOutboxLocalMeta(entry.localMeta);
205
+ return meta.legacyId === message.id || ((_a = chatOutboxEntry.runSendMessage(entry.command)) == null ? void 0 : _a.id) === message.id;
206
+ });
207
+ }
208
+ async function migrateLegacyChatOutbox({
209
+ threadId,
210
+ reader,
211
+ outbox,
212
+ isKept,
213
+ messageIdsShown
214
+ }) {
215
+ const result = { inserted: 0, removed: 0, kept: 0 };
216
+ const messages = await reader.list(threadId);
217
+ for (const message of messages) {
218
+ if (message.threadId !== threadId) continue;
219
+ const delivered = (messageIdsShown == null ? void 0 : messageIdsShown().has(message.id)) ?? false;
220
+ if (!delivered && !holdsLegacy(outbox, message)) {
221
+ outbox.insert(legacyChatOutboxInsert(message));
222
+ result.inserted += 1;
223
+ }
224
+ let kept = delivered;
225
+ if (!kept) {
226
+ try {
227
+ kept = await isKept(message.id);
228
+ } catch {
229
+ kept = false;
230
+ }
231
+ }
232
+ if (!kept) {
233
+ result.kept += 1;
234
+ continue;
235
+ }
236
+ try {
237
+ await reader.remove(threadId, message.id);
238
+ result.removed += 1;
239
+ } catch {
240
+ result.kept += 1;
241
+ }
242
+ }
243
+ return result;
244
+ }
245
+ exports.LEGACY_CHAT_OUTBOX_DATABASE = LEGACY_CHAT_OUTBOX_DATABASE;
246
+ exports.createLegacyChatOutboxReader = createLegacyChatOutboxReader;
247
+ exports.legacyChatOutboxInsert = legacyChatOutboxInsert;
248
+ exports.legacyChatOutboxSendFailure = legacyChatOutboxSendFailure;
249
+ exports.migrateLegacyChatOutbox = migrateLegacyChatOutbox;
250
+ exports.parseLegacyChatOutboxMessage = parseLegacyChatOutboxMessage;
251
+ exports.readLegacyChatOutboxFailure = readLegacyChatOutboxFailure;
252
+ //# sourceMappingURL=chat-outbox-legacy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-outbox-legacy.cjs","sources":["../../../../agent-runtime/src/chat-outbox-legacy.ts"],"sourcesContent":["import type { StatewireClient } from \"statewire\";\nimport {\n CHAT_OUTBOX_LOCAL_META_KIND,\n type ChatOutboxAttachment,\n type ChatOutboxFile,\n type ChatOutboxLocalMeta,\n LEGACY_CHAT_OUTBOX_SOURCE,\n readAttachments,\n readChatOutboxLocalMeta,\n readFiles,\n runSendMessage,\n} from \"./chat-outbox-entry\";\nimport {\n type IdbDatabase,\n idbGlobals,\n lazySealedDatabase,\n openJson,\n requestToPromise,\n sha256Hex,\n transactionDone,\n} from \"./sealed-idb\";\nimport { DEEP_AGENT_STATEWIRE_PROTOCOL } from \"./statewire-transport\";\n\n/**\n * The chat outbox's previous store (`athena-chat-outbox:v1`, one IndexedDB database per browser,\n * records sealed with AES-GCM under the person's key), read once to move each waiting message into\n * its thread's statewire outbox ({@link migrateLegacyChatOutbox}). Nothing new is ever written\n * here: a record is deleted only once its message is held in the thread's outbox on the device.\n */\n\nexport const LEGACY_CHAT_OUTBOX_DATABASE = LEGACY_CHAT_OUTBOX_SOURCE;\nconst LEGACY_FORMAT = 1;\nconst DATABASE_VERSION = 1;\nconst ENTRIES_STORE = \"entries\";\nconst BY_OWNER = \"byOwner\";\nconst BY_OWNER_THREAD = \"byOwnerThread\";\n\n/**\n * A hand-off the legacy store recorded as failed (`refused`, `error`, `prepare`, `attachment`):\n * the message waited for the person's Retry, Edit or Discard, and still does once migrated.\n */\nexport interface LegacyChatOutboxFailure {\n reason: string;\n at: number;\n}\n\n/** A message the legacy store kept. */\nexport interface LegacyChatOutboxMessage {\n id: string;\n threadId: string;\n text: string;\n queuedAt: number;\n newChat: boolean;\n composerMarkdown?: string;\n composerHtml?: string;\n metadata?: Record<string, unknown>;\n /** The per-send settings it was typed with (Olympus: `{ namedAgents }`, the agents it named). */\n sendContext?: Record<string, unknown>;\n files?: ChatOutboxFile[];\n attachments?: ChatOutboxAttachment[];\n /** Its last hand-off failed: it never goes on its own. */\n failure?: LegacyChatOutboxFailure;\n}\n\ninterface StoredRecord {\n key: string;\n owner: string;\n thread: string;\n format: number;\n sealed: Uint8Array;\n failure?: unknown;\n}\n\nexport interface LegacyChatOutboxReader {\n /** Every message kept for this person (records that do not open are skipped and left). */\n listAll(): Promise<LegacyChatOutboxMessage[]>;\n list(threadId: string): Promise<LegacyChatOutboxMessage[]>;\n /** How many records are kept for this person, opened or not. */\n count(): Promise<number>;\n remove(threadId: string, id: string): Promise<void>;\n /** Every record of this person, gone (a sign-out the person chose). */\n clear(): Promise<void>;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** A legacy record's failure read back; any failure with a time counts, its reason defaulting to `error`. */\nexport function readLegacyChatOutboxFailure(value: unknown): LegacyChatOutboxFailure | undefined {\n if (!isRecord(value) || typeof value.at !== \"number\") return undefined;\n return { reason: typeof value.reason === \"string\" && value.reason.length > 0 ? value.reason : \"error\", at: value.at };\n}\n\n/** A sealed v1 entry read back, or `null` when it is not one. */\nexport function parseLegacyChatOutboxMessage(value: unknown): LegacyChatOutboxMessage | null {\n if (!isRecord(value)) return null;\n const { id, threadId, text, queuedAt } = value;\n if (typeof id !== \"string\" || typeof threadId !== \"string\" || typeof text !== \"string\") return null;\n if (typeof queuedAt !== \"number\" || !Number.isFinite(queuedAt)) return null;\n const files = readFiles(value.files);\n const attachments = readAttachments(value.attachments);\n return {\n id,\n threadId,\n text,\n queuedAt,\n newChat: value.newChat === true,\n ...(typeof value.composerMarkdown === \"string\" && { composerMarkdown: value.composerMarkdown }),\n ...(typeof value.composerHtml === \"string\" && { composerHtml: value.composerHtml }),\n ...(isRecord(value.metadata) && { metadata: value.metadata }),\n ...(isRecord(value.sendContext) && { sendContext: value.sendContext }),\n ...(files && { files }),\n ...(attachments && { attachments }),\n };\n}\n\nfunction withFailure(message: LegacyChatOutboxMessage, value: unknown): LegacyChatOutboxMessage {\n const failure = readLegacyChatOutboxFailure(value);\n return failure ? { ...message, failure } : message;\n}\n\nfunction upgrade(db: IdbDatabase): void {\n if (!db.objectStoreNames.contains(ENTRIES_STORE)) {\n const store = db.createObjectStore(ENTRIES_STORE, { keyPath: \"key\" });\n store.createIndex(BY_OWNER, \"owner\", { unique: false });\n store.createIndex(BY_OWNER_THREAD, [\"owner\", \"thread\"], { unique: false });\n }\n}\n\n/**\n * The legacy store, read-only but for deletes. `getKey` is the person's AES-GCM key for reading\n * (`null`: nothing opens). `factory` is an `IDBFactory` (the browser's by default).\n */\nexport function createLegacyChatOutboxReader({\n ownerId,\n getKey,\n factory = idbGlobals.indexedDB,\n databaseName = LEGACY_CHAT_OUTBOX_DATABASE,\n}: {\n ownerId: string;\n getKey: () => Promise<CryptoKey | null>;\n factory?: object | undefined;\n databaseName?: string;\n}): LegacyChatOutboxReader {\n const database = lazySealedDatabase({ factory, name: databaseName, version: DATABASE_VERSION, upgrade });\n const ownerHash = () => sha256Hex(ownerId);\n const recordKey = (threadId: string, id: string) => sha256Hex(`${ownerId}|${threadId}|${id}`);\n const aadOf = (record: StoredRecord) =>\n `athena-chat-outbox|${LEGACY_FORMAT}|${record.owner}|${record.thread}|${record.key}`;\n\n const open = async (records: StoredRecord[]): Promise<LegacyChatOutboxMessage[]> => {\n if (records.length === 0) return [];\n let key: CryptoKey | null = null;\n try {\n key = await getKey();\n } catch {\n key = null;\n }\n if (!key) return [];\n const opened: LegacyChatOutboxMessage[] = [];\n for (const record of records) {\n if (!record || record.format > LEGACY_FORMAT) continue;\n try {\n const message = parseLegacyChatOutboxMessage(await openJson({ key, sealed: record.sealed, aad: aadOf(record) }));\n if (message) opened.push(withFailure(message, record.failure));\n } catch {\n // Not readable with this key: left as it is (it may be the only copy of someone's work).\n }\n }\n return opened.sort((a, b) => a.queuedAt - b.queuedAt);\n };\n\n const readIndex = async (index: string, query: unknown): Promise<StoredRecord[]> => {\n const db = await database();\n if (!db) return [];\n return (await requestToPromise(\n db.transaction(ENTRIES_STORE, \"readonly\").objectStore(ENTRIES_STORE).index(index).getAll(query),\n )) as StoredRecord[];\n };\n\n return {\n async listAll() {\n try {\n return await open(await readIndex(BY_OWNER, await ownerHash()));\n } catch {\n return [];\n }\n },\n async list(threadId) {\n try {\n const thread = await sha256Hex(`${ownerId}|${threadId}`);\n return await open(await readIndex(BY_OWNER_THREAD, [await ownerHash(), thread]));\n } catch {\n return [];\n }\n },\n async count() {\n const db = await database();\n if (!db) return 0;\n // Hashed before the transaction opens: an await on anything but its own requests ends it.\n const owner = await ownerHash();\n const keys = await requestToPromise(\n db.transaction(ENTRIES_STORE, \"readonly\").objectStore(ENTRIES_STORE).index(BY_OWNER).getAllKeys(owner),\n );\n return keys.length;\n },\n async remove(threadId, id) {\n const db = await database();\n if (!db) return;\n const key = await recordKey(threadId, id);\n const tx = db.transaction(ENTRIES_STORE, \"readwrite\");\n const store = tx.objectStore(ENTRIES_STORE);\n const existing = await requestToPromise(store.get(key));\n // A newer build's record of the same message stays as that build wrote it.\n if (!isRecord(existing) || typeof existing.format !== \"number\" || existing.format <= LEGACY_FORMAT) {\n store.delete(key);\n }\n await transactionDone(tx);\n },\n async clear() {\n const db = await database();\n if (!db) return;\n const owner = await ownerHash();\n const tx = db.transaction(ENTRIES_STORE, \"readwrite\");\n const store = tx.objectStore(ENTRIES_STORE);\n const keys = await requestToPromise(store.index(BY_OWNER).getAllKeys(owner));\n for (const key of keys) store.delete(key);\n await transactionDone(tx);\n },\n };\n}\n\nfunction newRunId(): string {\n const host = globalThis as { crypto?: { randomUUID?: () => string } };\n return host.crypto?.randomUUID?.() ?? `run-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\n/**\n * The agents a legacy message named: Olympus kept them as `sendContext.namedAgents`\n * (`[{ ref, name, assetId }]`). A message whose metadata already names its own keeps those.\n */\nfunction legacyAgents(message: LegacyChatOutboxMessage): string[] | undefined {\n if (message.metadata && \"addressedAgents\" in message.metadata) return undefined;\n const named = message.sendContext?.namedAgents;\n if (!Array.isArray(named)) return undefined;\n const refs = named.flatMap((agent) =>\n isRecord(agent) && typeof agent.ref === \"string\" && agent.ref.length > 0 ? [agent.ref] : [],\n );\n return refs.length > 0 ? refs : undefined;\n}\n\n/** The failure code of a legacy attachment refusal (`CHAT_OUTBOX_ATTACHMENT_REFUSED_CODE`). */\nconst LEGACY_ATTACHMENT_REFUSED_CODE = \"attachment-unavailable\";\n\n/** The `localMeta.error` a legacy failure becomes: the row shows \"Couldn't send\" and never goes on its own. */\nexport function legacyChatOutboxSendFailure(failure: LegacyChatOutboxFailure): StatewireClient.SendFailure {\n return {\n fate: \"rejected\",\n cause: \"server\",\n code: failure.reason === \"attachment\" ? LEGACY_ATTACHMENT_REFUSED_CODE : `legacy-${failure.reason}`,\n };\n}\n\n/**\n * The held `run/send` a legacy message becomes (re-anchored when it is released). A message\n * whose hand-off had failed keeps its failure (`localMeta.error`): it waits for Retry, Edit or Discard.\n */\nexport function legacyChatOutboxInsert(message: LegacyChatOutboxMessage): StatewireClient.OutboxInsert {\n const agents = legacyAgents(message);\n const metadata =\n agents === undefined && message.metadata === undefined\n ? undefined\n : { ...message.metadata, ...(agents !== undefined && { addressedAgents: agents }) };\n const parts = [\n ...(message.files ?? []).map((file) => ({\n type: \"file\" as const,\n mediaType: file.mediaType,\n url: file.url,\n ...(file.filename !== undefined && { filename: file.filename }),\n })),\n ...(message.text.length > 0 ? [{ type: \"text\" as const, text: message.text }] : []),\n ];\n const localMeta: ChatOutboxLocalMeta = {\n kind: CHAT_OUTBOX_LOCAL_META_KIND,\n threadId: message.threadId,\n queuedAt: message.queuedAt,\n newChat: message.newChat,\n migratedFrom: LEGACY_CHAT_OUTBOX_SOURCE,\n legacyId: message.id,\n ...(message.composerMarkdown !== undefined && { composerMarkdown: message.composerMarkdown }),\n ...(message.composerHtml !== undefined && { composerHtml: message.composerHtml }),\n ...(message.attachments !== undefined && { attachments: message.attachments }),\n ...(message.failure !== undefined && { error: legacyChatOutboxSendFailure(message.failure) }),\n };\n return {\n protocol: DEEP_AGENT_STATEWIRE_PROTOCOL,\n command: {\n method: \"run/send\",\n params: [\n {\n type: \"run/send\",\n behavior: \"auto\",\n runId: newRunId(),\n message: { id: message.id, role: \"user\", parts, ...(metadata !== undefined && { metadata }) },\n },\n ],\n },\n held: true,\n localMeta,\n };\n}\n\n/** The outbox verbs a migration uses (`StatewireClient.Outbox`, structurally). */\nexport interface LegacyMigrationOutbox {\n readonly entries: readonly StatewireClient.OutboxEntry[];\n insert(entry: StatewireClient.OutboxInsert): string;\n}\n\n/** Whether the outbox already holds the legacy message (inserted by an earlier, interrupted run). */\nfunction holdsLegacy(outbox: LegacyMigrationOutbox, message: LegacyChatOutboxMessage): boolean {\n return outbox.entries.some((entry) => {\n const meta = readChatOutboxLocalMeta(entry.localMeta);\n return meta.legacyId === message.id || runSendMessage(entry.command)?.id === message.id;\n });\n}\n\nexport interface MigrateLegacyChatOutboxResult {\n /** Inserted into the thread's outbox by this run. */\n inserted: number;\n /** Legacy records deleted (their message is held on the device). */\n removed: number;\n /** Left in the legacy store: not yet confirmed kept on the device, or a delete that failed. */\n kept: number;\n}\n\n/**\n * Moves the thread's legacy records into its statewire outbox: each becomes a held entry\n * (`insert({ protocol, command, held: true, localMeta: { migratedFrom, legacyId, queuedAt, … } })`)\n * and its record is deleted only once `isKept` confirms the entry is stored on the device (read\n * back from storage, e.g. through `readOutboxes`). Idempotent: an entry already holding the\n * message (an interrupted earlier run, another tab) is not inserted again, and its record is\n * deleted once confirmed. A session kept in page memory only never confirms, so its legacy records\n * stay until the message is sent or discarded ({@link ChatOutboxOptions.legacy}).\n */\nexport async function migrateLegacyChatOutbox({\n threadId,\n reader,\n outbox,\n isKept,\n messageIdsShown,\n}: {\n threadId: string;\n reader: LegacyChatOutboxReader;\n outbox: LegacyMigrationOutbox;\n /** Resolves `true` once the entry carrying `messageId` is stored on the device. */\n isKept: (messageId: string) => Promise<boolean>;\n /** Message ids the thread already shows (delivered before the migration): their records just go. */\n messageIdsShown?: () => ReadonlySet<string>;\n}): Promise<MigrateLegacyChatOutboxResult> {\n const result: MigrateLegacyChatOutboxResult = { inserted: 0, removed: 0, kept: 0 };\n const messages = await reader.list(threadId);\n for (const message of messages) {\n if (message.threadId !== threadId) continue;\n const delivered = messageIdsShown?.().has(message.id) ?? false;\n if (!delivered && !holdsLegacy(outbox, message)) {\n outbox.insert(legacyChatOutboxInsert(message));\n result.inserted += 1;\n }\n let kept = delivered;\n if (!kept) {\n try {\n kept = await isKept(message.id);\n } catch {\n kept = false;\n }\n }\n if (!kept) {\n result.kept += 1;\n continue;\n }\n try {\n await reader.remove(threadId, message.id);\n result.removed += 1;\n } catch {\n result.kept += 1;\n }\n }\n return result;\n}\n"],"names":["LEGACY_CHAT_OUTBOX_SOURCE","readFiles","readAttachments","idbGlobals","lazySealedDatabase","sha256Hex","openJson","requestToPromise","transactionDone","CHAT_OUTBOX_LOCAL_META_KIND","DEEP_AGENT_STATEWIRE_PROTOCOL","readChatOutboxLocalMeta","runSendMessage"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type { StatewireClient } from "statewire";
2
+ import { type ChatOutboxAttachment, type ChatOutboxFile } from "./chat-outbox-entry";
3
+ /**
4
+ * The chat outbox's previous store (`athena-chat-outbox:v1`, one IndexedDB database per browser,
5
+ * records sealed with AES-GCM under the person's key), read once to move each waiting message into
6
+ * its thread's statewire outbox ({@link migrateLegacyChatOutbox}). Nothing new is ever written
7
+ * here: a record is deleted only once its message is held in the thread's outbox on the device.
8
+ */
9
+ export declare const LEGACY_CHAT_OUTBOX_DATABASE = "athena-chat-outbox:v1";
10
+ /**
11
+ * A hand-off the legacy store recorded as failed (`refused`, `error`, `prepare`, `attachment`):
12
+ * the message waited for the person's Retry, Edit or Discard, and still does once migrated.
13
+ */
14
+ export interface LegacyChatOutboxFailure {
15
+ reason: string;
16
+ at: number;
17
+ }
18
+ /** A message the legacy store kept. */
19
+ export interface LegacyChatOutboxMessage {
20
+ id: string;
21
+ threadId: string;
22
+ text: string;
23
+ queuedAt: number;
24
+ newChat: boolean;
25
+ composerMarkdown?: string;
26
+ composerHtml?: string;
27
+ metadata?: Record<string, unknown>;
28
+ /** The per-send settings it was typed with (Olympus: `{ namedAgents }`, the agents it named). */
29
+ sendContext?: Record<string, unknown>;
30
+ files?: ChatOutboxFile[];
31
+ attachments?: ChatOutboxAttachment[];
32
+ /** Its last hand-off failed: it never goes on its own. */
33
+ failure?: LegacyChatOutboxFailure;
34
+ }
35
+ export interface LegacyChatOutboxReader {
36
+ /** Every message kept for this person (records that do not open are skipped and left). */
37
+ listAll(): Promise<LegacyChatOutboxMessage[]>;
38
+ list(threadId: string): Promise<LegacyChatOutboxMessage[]>;
39
+ /** How many records are kept for this person, opened or not. */
40
+ count(): Promise<number>;
41
+ remove(threadId: string, id: string): Promise<void>;
42
+ /** Every record of this person, gone (a sign-out the person chose). */
43
+ clear(): Promise<void>;
44
+ }
45
+ /** A legacy record's failure read back; any failure with a time counts, its reason defaulting to `error`. */
46
+ export declare function readLegacyChatOutboxFailure(value: unknown): LegacyChatOutboxFailure | undefined;
47
+ /** A sealed v1 entry read back, or `null` when it is not one. */
48
+ export declare function parseLegacyChatOutboxMessage(value: unknown): LegacyChatOutboxMessage | null;
49
+ /**
50
+ * The legacy store, read-only but for deletes. `getKey` is the person's AES-GCM key for reading
51
+ * (`null`: nothing opens). `factory` is an `IDBFactory` (the browser's by default).
52
+ */
53
+ export declare function createLegacyChatOutboxReader({ ownerId, getKey, factory, databaseName, }: {
54
+ ownerId: string;
55
+ getKey: () => Promise<CryptoKey | null>;
56
+ factory?: object | undefined;
57
+ databaseName?: string;
58
+ }): LegacyChatOutboxReader;
59
+ /** The `localMeta.error` a legacy failure becomes: the row shows "Couldn't send" and never goes on its own. */
60
+ export declare function legacyChatOutboxSendFailure(failure: LegacyChatOutboxFailure): StatewireClient.SendFailure;
61
+ /**
62
+ * The held `run/send` a legacy message becomes (re-anchored when it is released). A message
63
+ * whose hand-off had failed keeps its failure (`localMeta.error`): it waits for Retry, Edit or Discard.
64
+ */
65
+ export declare function legacyChatOutboxInsert(message: LegacyChatOutboxMessage): StatewireClient.OutboxInsert;
66
+ /** The outbox verbs a migration uses (`StatewireClient.Outbox`, structurally). */
67
+ export interface LegacyMigrationOutbox {
68
+ readonly entries: readonly StatewireClient.OutboxEntry[];
69
+ insert(entry: StatewireClient.OutboxInsert): string;
70
+ }
71
+ export interface MigrateLegacyChatOutboxResult {
72
+ /** Inserted into the thread's outbox by this run. */
73
+ inserted: number;
74
+ /** Legacy records deleted (their message is held on the device). */
75
+ removed: number;
76
+ /** Left in the legacy store: not yet confirmed kept on the device, or a delete that failed. */
77
+ kept: number;
78
+ }
79
+ /**
80
+ * Moves the thread's legacy records into its statewire outbox: each becomes a held entry
81
+ * (`insert({ protocol, command, held: true, localMeta: { migratedFrom, legacyId, queuedAt, … } })`)
82
+ * and its record is deleted only once `isKept` confirms the entry is stored on the device (read
83
+ * back from storage, e.g. through `readOutboxes`). Idempotent: an entry already holding the
84
+ * message (an interrupted earlier run, another tab) is not inserted again, and its record is
85
+ * deleted once confirmed. A session kept in page memory only never confirms, so its legacy records
86
+ * stay until the message is sent or discarded ({@link ChatOutboxOptions.legacy}).
87
+ */
88
+ export declare function migrateLegacyChatOutbox({ threadId, reader, outbox, isKept, messageIdsShown, }: {
89
+ threadId: string;
90
+ reader: LegacyChatOutboxReader;
91
+ outbox: LegacyMigrationOutbox;
92
+ /** Resolves `true` once the entry carrying `messageId` is stored on the device. */
93
+ isKept: (messageId: string) => Promise<boolean>;
94
+ /** Message ids the thread already shows (delivered before the migration): their records just go. */
95
+ messageIdsShown?: () => ReadonlySet<string>;
96
+ }): Promise<MigrateLegacyChatOutboxResult>;