@assistant-ui/react 0.5.100 → 0.7.1

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 (734) hide show
  1. package/dist/api/AssistantRuntime.d.ts +6 -86
  2. package/dist/api/AssistantRuntime.d.ts.map +1 -1
  3. package/dist/api/AssistantRuntime.js +0 -8
  4. package/dist/api/AssistantRuntime.js.map +1 -1
  5. package/dist/api/AssistantRuntime.mjs +0 -8
  6. package/dist/api/AssistantRuntime.mjs.map +1 -1
  7. package/dist/api/AttachmentRuntime.d.ts +4 -16
  8. package/dist/api/AttachmentRuntime.d.ts.map +1 -1
  9. package/dist/api/AttachmentRuntime.js.map +1 -1
  10. package/dist/api/AttachmentRuntime.mjs.map +1 -1
  11. package/dist/api/ComposerRuntime.d.ts +15 -131
  12. package/dist/api/ComposerRuntime.d.ts.map +1 -1
  13. package/dist/api/ComposerRuntime.js +4 -84
  14. package/dist/api/ComposerRuntime.js.map +1 -1
  15. package/dist/api/ComposerRuntime.mjs +4 -84
  16. package/dist/api/ComposerRuntime.mjs.map +1 -1
  17. package/dist/api/ContentPartRuntime.d.ts +2 -6
  18. package/dist/api/ContentPartRuntime.d.ts.map +1 -1
  19. package/dist/api/ContentPartRuntime.js.map +1 -1
  20. package/dist/api/ContentPartRuntime.mjs.map +1 -1
  21. package/dist/api/MessageRuntime.d.ts +8 -19
  22. package/dist/api/MessageRuntime.d.ts.map +1 -1
  23. package/dist/api/MessageRuntime.js +11 -7
  24. package/dist/api/MessageRuntime.js.map +1 -1
  25. package/dist/api/MessageRuntime.mjs +10 -6
  26. package/dist/api/MessageRuntime.mjs.map +1 -1
  27. package/dist/api/RuntimePathTypes.d.ts +33 -33
  28. package/dist/api/RuntimePathTypes.d.ts.map +1 -1
  29. package/dist/api/RuntimePathTypes.js.map +1 -1
  30. package/dist/api/ThreadListItemRuntime.d.ts +12 -8
  31. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
  32. package/dist/api/ThreadListItemRuntime.js +10 -6
  33. package/dist/api/ThreadListItemRuntime.js.map +1 -1
  34. package/dist/api/ThreadListItemRuntime.mjs +10 -6
  35. package/dist/api/ThreadListItemRuntime.mjs.map +1 -1
  36. package/dist/api/ThreadListRuntime.d.ts +10 -28
  37. package/dist/api/ThreadListRuntime.d.ts.map +1 -1
  38. package/dist/api/ThreadListRuntime.js +23 -26
  39. package/dist/api/ThreadListRuntime.js.map +1 -1
  40. package/dist/api/ThreadListRuntime.mjs +23 -26
  41. package/dist/api/ThreadListRuntime.mjs.map +1 -1
  42. package/dist/api/ThreadRuntime.d.ts +53 -211
  43. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  44. package/dist/api/ThreadRuntime.js +2 -94
  45. package/dist/api/ThreadRuntime.js.map +1 -1
  46. package/dist/api/ThreadRuntime.mjs +2 -94
  47. package/dist/api/ThreadRuntime.mjs.map +1 -1
  48. package/dist/api/index.d.ts +1 -0
  49. package/dist/api/index.d.ts.map +1 -1
  50. package/dist/api/index.js.map +1 -1
  51. package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
  52. package/dist/context/providers/AssistantRuntimeProvider.js +0 -1
  53. package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
  54. package/dist/context/providers/AssistantRuntimeProvider.mjs +0 -1
  55. package/dist/context/providers/AssistantRuntimeProvider.mjs.map +1 -1
  56. package/dist/context/providers/TextContentPartProvider.d.ts.map +1 -1
  57. package/dist/context/providers/TextContentPartProvider.js +0 -2
  58. package/dist/context/providers/TextContentPartProvider.js.map +1 -1
  59. package/dist/context/providers/TextContentPartProvider.mjs +0 -2
  60. package/dist/context/providers/TextContentPartProvider.mjs.map +1 -1
  61. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +1 -4
  62. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  63. package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +1 -1
  64. package/dist/context/providers/ThreadRuntimeProvider.js +1 -13
  65. package/dist/context/providers/ThreadRuntimeProvider.js.map +1 -1
  66. package/dist/context/providers/ThreadRuntimeProvider.mjs +1 -13
  67. package/dist/context/providers/ThreadRuntimeProvider.mjs.map +1 -1
  68. package/dist/context/react/AssistantContext.d.ts +10 -120
  69. package/dist/context/react/AssistantContext.d.ts.map +1 -1
  70. package/dist/context/react/AssistantContext.js +0 -15
  71. package/dist/context/react/AssistantContext.js.map +1 -1
  72. package/dist/context/react/AssistantContext.mjs +0 -11
  73. package/dist/context/react/AssistantContext.mjs.map +1 -1
  74. package/dist/context/react/AttachmentContext.d.ts +32 -48
  75. package/dist/context/react/AttachmentContext.d.ts.map +1 -1
  76. package/dist/context/react/ComposerContext.d.ts +0 -5
  77. package/dist/context/react/ComposerContext.d.ts.map +1 -1
  78. package/dist/context/react/ComposerContext.js +3 -5
  79. package/dist/context/react/ComposerContext.js.map +1 -1
  80. package/dist/context/react/ComposerContext.mjs +2 -3
  81. package/dist/context/react/ComposerContext.mjs.map +1 -1
  82. package/dist/context/react/ContentPartContext.d.ts +0 -5
  83. package/dist/context/react/ContentPartContext.d.ts.map +1 -1
  84. package/dist/context/react/ContentPartContext.js +3 -5
  85. package/dist/context/react/ContentPartContext.js.map +1 -1
  86. package/dist/context/react/ContentPartContext.mjs +2 -3
  87. package/dist/context/react/ContentPartContext.mjs.map +1 -1
  88. package/dist/context/react/MessageContext.d.ts +6 -46
  89. package/dist/context/react/MessageContext.d.ts.map +1 -1
  90. package/dist/context/react/MessageContext.js +2 -6
  91. package/dist/context/react/MessageContext.js.map +1 -1
  92. package/dist/context/react/MessageContext.mjs +2 -4
  93. package/dist/context/react/MessageContext.mjs.map +1 -1
  94. package/dist/context/react/ThreadContext.d.ts +11 -1749
  95. package/dist/context/react/ThreadContext.d.ts.map +1 -1
  96. package/dist/context/react/ThreadContext.js +4 -30
  97. package/dist/context/react/ThreadContext.js.map +1 -1
  98. package/dist/context/react/ThreadContext.mjs +4 -22
  99. package/dist/context/react/ThreadContext.mjs.map +1 -1
  100. package/dist/context/react/ThreadListItemContext.d.ts +6 -24
  101. package/dist/context/react/ThreadListItemContext.d.ts.map +1 -1
  102. package/dist/context/react/index.d.ts +5 -101
  103. package/dist/context/react/index.d.ts.map +1 -1
  104. package/dist/context/react/index.js +0 -38
  105. package/dist/context/react/index.js.map +1 -1
  106. package/dist/context/react/index.mjs +5 -49
  107. package/dist/context/react/index.mjs.map +1 -1
  108. package/dist/context/stores/AssistantToolUIs.d.ts +9 -6
  109. package/dist/context/stores/AssistantToolUIs.d.ts.map +1 -1
  110. package/dist/context/stores/AssistantToolUIs.js.map +1 -1
  111. package/dist/context/stores/AssistantToolUIs.mjs.map +1 -1
  112. package/dist/context/stores/MessageUtils.d.ts +7 -12
  113. package/dist/context/stores/MessageUtils.d.ts.map +1 -1
  114. package/dist/context/stores/MessageUtils.js.map +1 -1
  115. package/dist/context/stores/MessageUtils.mjs.map +1 -1
  116. package/dist/context/stores/ThreadViewport.d.ts +6 -10
  117. package/dist/context/stores/ThreadViewport.d.ts.map +1 -1
  118. package/dist/context/stores/ThreadViewport.js +0 -1
  119. package/dist/context/stores/ThreadViewport.js.map +1 -1
  120. package/dist/context/stores/ThreadViewport.mjs +0 -2
  121. package/dist/context/stores/ThreadViewport.mjs.map +1 -1
  122. package/dist/index.d.ts +0 -1
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +0 -2
  125. package/dist/index.js.map +1 -1
  126. package/dist/index.mjs +0 -1
  127. package/dist/index.mjs.map +1 -1
  128. package/dist/internal.d.ts +1 -0
  129. package/dist/internal.d.ts.map +1 -1
  130. package/dist/internal.js +3 -0
  131. package/dist/internal.js.map +1 -1
  132. package/dist/internal.mjs +2 -0
  133. package/dist/internal.mjs.map +1 -1
  134. package/dist/model-config/useAssistantToolUI.d.ts.map +1 -1
  135. package/dist/model-config/useAssistantToolUI.js.map +1 -1
  136. package/dist/model-config/useAssistantToolUI.mjs.map +1 -1
  137. package/dist/primitive-hooks/contentPart/useContentPartDisplay.d.ts +1 -4
  138. package/dist/primitive-hooks/contentPart/useContentPartDisplay.d.ts.map +1 -1
  139. package/dist/primitive-hooks/contentPart/useContentPartDisplay.js.map +1 -1
  140. package/dist/primitive-hooks/contentPart/useContentPartDisplay.mjs.map +1 -1
  141. package/dist/primitive-hooks/contentPart/useContentPartImage.d.ts +1 -4
  142. package/dist/primitive-hooks/contentPart/useContentPartImage.d.ts.map +1 -1
  143. package/dist/primitive-hooks/contentPart/useContentPartImage.js.map +1 -1
  144. package/dist/primitive-hooks/contentPart/useContentPartImage.mjs.map +1 -1
  145. package/dist/primitive-hooks/contentPart/useContentPartText.d.ts +1 -4
  146. package/dist/primitive-hooks/contentPart/useContentPartText.d.ts.map +1 -1
  147. package/dist/primitive-hooks/contentPart/useContentPartText.js.map +1 -1
  148. package/dist/primitive-hooks/contentPart/useContentPartText.mjs.map +1 -1
  149. package/dist/primitive-hooks/index.d.ts +0 -5
  150. package/dist/primitive-hooks/index.d.ts.map +1 -1
  151. package/dist/primitive-hooks/index.js +1 -11
  152. package/dist/primitive-hooks/index.js.map +1 -1
  153. package/dist/primitive-hooks/index.mjs +0 -5
  154. package/dist/primitive-hooks/index.mjs.map +1 -1
  155. package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -5
  156. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  157. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  158. package/dist/primitives/actionBar/ActionBarCopy.mjs.map +1 -1
  159. package/dist/primitives/actionBar/ActionBarEdit.d.ts +0 -4
  160. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  161. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  162. package/dist/primitives/actionBar/ActionBarEdit.mjs.map +1 -1
  163. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +0 -4
  164. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
  165. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  166. package/dist/primitives/actionBar/ActionBarFeedbackNegative.mjs.map +1 -1
  167. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +0 -4
  168. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
  169. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  170. package/dist/primitives/actionBar/ActionBarFeedbackPositive.mjs.map +1 -1
  171. package/dist/primitives/actionBar/ActionBarReload.d.ts +0 -4
  172. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  173. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  174. package/dist/primitives/actionBar/ActionBarReload.mjs.map +1 -1
  175. package/dist/primitives/actionBar/ActionBarRoot.d.ts +0 -4
  176. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  177. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  178. package/dist/primitives/actionBar/ActionBarRoot.mjs.map +1 -1
  179. package/dist/primitives/actionBar/ActionBarSpeak.d.ts +0 -4
  180. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
  181. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  182. package/dist/primitives/actionBar/ActionBarSpeak.mjs.map +1 -1
  183. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +0 -4
  184. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
  185. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  186. package/dist/primitives/actionBar/ActionBarStopSpeaking.mjs.map +1 -1
  187. package/dist/primitives/assistantModal/AssistantModalContent.d.ts +0 -4
  188. package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
  189. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  190. package/dist/primitives/assistantModal/AssistantModalContent.mjs.map +1 -1
  191. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +0 -4
  192. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
  193. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  194. package/dist/primitives/assistantModal/AssistantModalRoot.mjs.map +1 -1
  195. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts +0 -4
  196. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -1
  197. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  198. package/dist/primitives/assistantModal/AssistantModalTrigger.mjs.map +1 -1
  199. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +0 -4
  200. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  201. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  202. package/dist/primitives/branchPicker/BranchPickerCount.mjs.map +1 -1
  203. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +0 -4
  204. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  205. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  206. package/dist/primitives/branchPicker/BranchPickerNext.mjs.map +1 -1
  207. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +0 -4
  208. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -1
  209. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  210. package/dist/primitives/branchPicker/BranchPickerNumber.mjs.map +1 -1
  211. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +0 -4
  212. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  213. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  214. package/dist/primitives/branchPicker/BranchPickerPrevious.mjs.map +1 -1
  215. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +0 -4
  216. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  217. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  218. package/dist/primitives/branchPicker/BranchPickerRoot.mjs.map +1 -1
  219. package/dist/primitives/composer/ComposerAddAttachment.d.ts +1 -5
  220. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  221. package/dist/primitives/composer/ComposerAddAttachment.js +2 -2
  222. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  223. package/dist/primitives/composer/ComposerAddAttachment.mjs +1 -1
  224. package/dist/primitives/composer/ComposerAddAttachment.mjs.map +1 -1
  225. package/dist/primitives/composer/ComposerAttachments.d.ts +0 -4
  226. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  227. package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
  228. package/dist/primitives/composer/ComposerAttachments.mjs.map +1 -1
  229. package/dist/primitives/composer/ComposerCancel.d.ts +0 -4
  230. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  231. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  232. package/dist/primitives/composer/ComposerCancel.mjs.map +1 -1
  233. package/dist/primitives/composer/ComposerIf.d.ts +0 -4
  234. package/dist/primitives/composer/ComposerIf.d.ts.map +1 -1
  235. package/dist/primitives/composer/ComposerIf.js.map +1 -1
  236. package/dist/primitives/composer/ComposerIf.mjs.map +1 -1
  237. package/dist/primitives/composer/ComposerInput.d.ts +0 -4
  238. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  239. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  240. package/dist/primitives/composer/ComposerInput.mjs.map +1 -1
  241. package/dist/primitives/composer/ComposerRoot.d.ts +0 -1
  242. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  243. package/dist/primitives/composer/ComposerRoot.js +2 -2
  244. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  245. package/dist/primitives/composer/ComposerRoot.mjs +1 -1
  246. package/dist/primitives/composer/ComposerRoot.mjs.map +1 -1
  247. package/dist/primitives/composer/ComposerSend.d.ts +1 -5
  248. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  249. package/dist/primitives/composer/ComposerSend.js +2 -2
  250. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  251. package/dist/primitives/composer/ComposerSend.mjs +1 -1
  252. package/dist/primitives/composer/ComposerSend.mjs.map +1 -1
  253. package/dist/primitives/contentPart/ContentPartDisplay.d.ts +0 -4
  254. package/dist/primitives/contentPart/ContentPartDisplay.d.ts.map +1 -1
  255. package/dist/primitives/contentPart/ContentPartDisplay.js.map +1 -1
  256. package/dist/primitives/contentPart/ContentPartDisplay.mjs.map +1 -1
  257. package/dist/primitives/contentPart/ContentPartImage.d.ts +0 -4
  258. package/dist/primitives/contentPart/ContentPartImage.d.ts.map +1 -1
  259. package/dist/primitives/contentPart/ContentPartImage.js.map +1 -1
  260. package/dist/primitives/contentPart/ContentPartImage.mjs.map +1 -1
  261. package/dist/primitives/contentPart/ContentPartInProgress.d.ts +0 -4
  262. package/dist/primitives/contentPart/ContentPartInProgress.d.ts.map +1 -1
  263. package/dist/primitives/contentPart/ContentPartInProgress.js.map +1 -1
  264. package/dist/primitives/contentPart/ContentPartInProgress.mjs.map +1 -1
  265. package/dist/primitives/contentPart/ContentPartText.d.ts +0 -4
  266. package/dist/primitives/contentPart/ContentPartText.d.ts.map +1 -1
  267. package/dist/primitives/contentPart/ContentPartText.js.map +1 -1
  268. package/dist/primitives/contentPart/ContentPartText.mjs.map +1 -1
  269. package/dist/primitives/index.d.ts +0 -7
  270. package/dist/primitives/index.d.ts.map +1 -1
  271. package/dist/primitives/index.js.map +1 -1
  272. package/dist/primitives/index.mjs.map +1 -1
  273. package/dist/primitives/message/MessageAttachments.d.ts +0 -4
  274. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  275. package/dist/primitives/message/MessageAttachments.js +2 -4
  276. package/dist/primitives/message/MessageAttachments.js.map +1 -1
  277. package/dist/primitives/message/MessageAttachments.mjs +2 -4
  278. package/dist/primitives/message/MessageAttachments.mjs.map +1 -1
  279. package/dist/primitives/message/MessageContent.d.ts +0 -4
  280. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  281. package/dist/primitives/message/MessageContent.js +6 -6
  282. package/dist/primitives/message/MessageContent.js.map +1 -1
  283. package/dist/primitives/message/MessageContent.mjs +7 -7
  284. package/dist/primitives/message/MessageContent.mjs.map +1 -1
  285. package/dist/primitives/message/MessageIf.d.ts +0 -4
  286. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  287. package/dist/primitives/message/MessageIf.js.map +1 -1
  288. package/dist/primitives/message/MessageIf.mjs.map +1 -1
  289. package/dist/primitives/message/MessageRoot.d.ts +0 -4
  290. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  291. package/dist/primitives/message/MessageRoot.js.map +1 -1
  292. package/dist/primitives/message/MessageRoot.mjs.map +1 -1
  293. package/dist/primitives/message/index.d.ts +0 -1
  294. package/dist/primitives/message/index.d.ts.map +1 -1
  295. package/dist/primitives/message/index.js +0 -3
  296. package/dist/primitives/message/index.js.map +1 -1
  297. package/dist/primitives/message/index.mjs +0 -2
  298. package/dist/primitives/message/index.mjs.map +1 -1
  299. package/dist/primitives/thread/ThreadEmpty.d.ts +0 -4
  300. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  301. package/dist/primitives/thread/ThreadEmpty.js +2 -2
  302. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  303. package/dist/primitives/thread/ThreadEmpty.mjs +1 -1
  304. package/dist/primitives/thread/ThreadEmpty.mjs.map +1 -1
  305. package/dist/primitives/thread/ThreadIf.d.ts +0 -4
  306. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  307. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  308. package/dist/primitives/thread/ThreadIf.mjs.map +1 -1
  309. package/dist/primitives/thread/ThreadMessages.d.ts +0 -4
  310. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  311. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  312. package/dist/primitives/thread/ThreadMessages.mjs.map +1 -1
  313. package/dist/primitives/thread/ThreadRoot.d.ts +0 -4
  314. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  315. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  316. package/dist/primitives/thread/ThreadRoot.mjs.map +1 -1
  317. package/dist/primitives/thread/ThreadScrollToBottom.d.ts +0 -4
  318. package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
  319. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  320. package/dist/primitives/thread/ThreadScrollToBottom.mjs.map +1 -1
  321. package/dist/primitives/thread/ThreadSuggestion.d.ts +0 -4
  322. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  323. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  324. package/dist/primitives/thread/ThreadSuggestion.mjs.map +1 -1
  325. package/dist/primitives/thread/ThreadViewport.d.ts +0 -4
  326. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  327. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  328. package/dist/primitives/thread/ThreadViewport.mjs.map +1 -1
  329. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  330. package/dist/primitives/threadListItem/ThreadListItemArchive.js +3 -2
  331. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  332. package/dist/primitives/threadListItem/ThreadListItemArchive.mjs +3 -2
  333. package/dist/primitives/threadListItem/ThreadListItemArchive.mjs.map +1 -1
  334. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +14 -0
  335. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -0
  336. package/dist/primitives/threadListItem/ThreadListItemRoot.js +47 -0
  337. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -0
  338. package/dist/primitives/threadListItem/ThreadListItemRoot.mjs +23 -0
  339. package/dist/primitives/threadListItem/ThreadListItemRoot.mjs.map +1 -0
  340. package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts +8 -0
  341. package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -0
  342. package/dist/primitives/{message/MessageInProgress.js → threadListItem/ThreadListItemTitle.js} +13 -10
  343. package/dist/primitives/threadListItem/ThreadListItemTitle.js.map +1 -0
  344. package/dist/primitives/threadListItem/ThreadListItemTitle.mjs +14 -0
  345. package/dist/primitives/threadListItem/ThreadListItemTitle.mjs.map +1 -0
  346. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +13 -0
  347. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -0
  348. package/dist/{runtimes/core/subscribeToMainThread.js → primitives/threadListItem/ThreadListItemTrigger.js} +17 -22
  349. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -0
  350. package/dist/primitives/threadListItem/ThreadListItemTrigger.mjs +21 -0
  351. package/dist/primitives/threadListItem/ThreadListItemTrigger.mjs.map +1 -0
  352. package/dist/primitives/threadListItem/index.d.ts +3 -0
  353. package/dist/primitives/threadListItem/index.d.ts.map +1 -1
  354. package/dist/primitives/threadListItem/index.js +9 -0
  355. package/dist/primitives/threadListItem/index.js.map +1 -1
  356. package/dist/primitives/threadListItem/index.mjs +6 -0
  357. package/dist/primitives/threadListItem/index.mjs.map +1 -1
  358. package/dist/runtimes/attachment/AttachmentAdapter.d.ts +3 -7
  359. package/dist/runtimes/attachment/AttachmentAdapter.d.ts.map +1 -1
  360. package/dist/runtimes/attachment/AttachmentAdapter.js.map +1 -1
  361. package/dist/runtimes/attachment/CompositeAttachmentAdapter.d.ts +2 -6
  362. package/dist/runtimes/attachment/CompositeAttachmentAdapter.d.ts.map +1 -1
  363. package/dist/runtimes/attachment/CompositeAttachmentAdapter.js +1 -2
  364. package/dist/runtimes/attachment/CompositeAttachmentAdapter.js.map +1 -1
  365. package/dist/runtimes/attachment/CompositeAttachmentAdapter.mjs +1 -2
  366. package/dist/runtimes/attachment/CompositeAttachmentAdapter.mjs.map +1 -1
  367. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  368. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +0 -6
  369. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  370. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +0 -6
  371. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
  372. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +6 -7
  373. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  374. package/dist/runtimes/core/BaseThreadRuntimeCore.js +8 -4
  375. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  376. package/dist/runtimes/core/BaseThreadRuntimeCore.mjs +8 -4
  377. package/dist/runtimes/core/BaseThreadRuntimeCore.mjs.map +1 -1
  378. package/dist/runtimes/core/ComposerRuntimeCore.d.ts +0 -3
  379. package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
  380. package/dist/runtimes/core/ComposerRuntimeCore.js.map +1 -1
  381. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +7 -10
  382. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  383. package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
  384. package/dist/runtimes/core/ThreadRuntimeCore.d.ts +30 -17
  385. package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
  386. package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
  387. package/dist/runtimes/core/index.d.ts +1 -2
  388. package/dist/runtimes/core/index.d.ts.map +1 -1
  389. package/dist/runtimes/core/index.js +0 -12
  390. package/dist/runtimes/core/index.js.map +1 -1
  391. package/dist/runtimes/core/index.mjs +0 -5
  392. package/dist/runtimes/core/index.mjs.map +1 -1
  393. package/dist/runtimes/edge/converters/toCoreMessages.d.ts +1 -1
  394. package/dist/runtimes/edge/converters/toCoreMessages.d.ts.map +1 -1
  395. package/dist/runtimes/edge/converters/toCoreMessages.js.map +1 -1
  396. package/dist/runtimes/edge/converters/toCoreMessages.mjs.map +1 -1
  397. package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts +0 -4
  398. package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
  399. package/dist/runtimes/edge/createEdgeRuntimeAPI.js +0 -2
  400. package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
  401. package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs +0 -2
  402. package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
  403. package/dist/runtimes/edge/streams/runResultStream.js +0 -2
  404. package/dist/runtimes/edge/streams/runResultStream.js.map +1 -1
  405. package/dist/runtimes/edge/streams/runResultStream.mjs +0 -2
  406. package/dist/runtimes/edge/streams/runResultStream.mjs.map +1 -1
  407. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +3 -16
  408. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  409. package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
  410. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
  411. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +0 -3
  412. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
  413. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +0 -3
  414. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
  415. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +10 -12
  416. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  417. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +29 -7
  418. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  419. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +29 -7
  420. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -1
  421. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +2 -12
  422. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  423. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +4 -3
  424. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  425. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs +4 -3
  426. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs.map +1 -1
  427. package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
  428. package/dist/runtimes/external-store/ThreadMessageLike.js +2 -0
  429. package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
  430. package/dist/runtimes/external-store/ThreadMessageLike.mjs +2 -0
  431. package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
  432. package/dist/runtimes/local/ChatModelAdapter.d.ts +0 -8
  433. package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
  434. package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
  435. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +1 -6
  436. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  437. package/dist/runtimes/local/LocalRuntimeOptions.js +1 -2
  438. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  439. package/dist/runtimes/local/LocalRuntimeOptions.mjs +1 -2
  440. package/dist/runtimes/local/LocalRuntimeOptions.mjs.map +1 -1
  441. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +16 -20
  442. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  443. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +112 -72
  444. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  445. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +112 -72
  446. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
  447. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.d.ts +19 -0
  448. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.d.ts.map +1 -0
  449. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.js +87 -0
  450. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.js.map +1 -0
  451. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.mjs +62 -0
  452. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.mjs.map +1 -0
  453. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +1 -1
  454. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  455. package/dist/runtimes/local/LocalThreadRuntimeCore.js +15 -11
  456. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  457. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +15 -11
  458. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  459. package/dist/styles/index.css.map +1 -1
  460. package/dist/types/AssistantTypes.d.ts +1 -18
  461. package/dist/types/AssistantTypes.d.ts.map +1 -1
  462. package/dist/types/AssistantTypes.js.map +1 -1
  463. package/dist/types/AttachmentTypes.d.ts +1 -1
  464. package/dist/types/AttachmentTypes.d.ts.map +1 -1
  465. package/dist/types/AttachmentTypes.js.map +1 -1
  466. package/dist/types/ContentPartComponentTypes.d.ts +4 -28
  467. package/dist/types/ContentPartComponentTypes.d.ts.map +1 -1
  468. package/dist/types/ContentPartComponentTypes.js.map +1 -1
  469. package/dist/ui/assistant-message.d.ts +1 -10
  470. package/dist/ui/assistant-message.d.ts.map +1 -1
  471. package/dist/ui/assistant-message.js.map +1 -1
  472. package/dist/ui/assistant-message.mjs.map +1 -1
  473. package/dist/ui/composer.d.ts +1 -25
  474. package/dist/ui/composer.d.ts.map +1 -1
  475. package/dist/ui/composer.js.map +1 -1
  476. package/dist/ui/composer.mjs.map +1 -1
  477. package/dist/ui/index.d.ts +6 -14
  478. package/dist/ui/index.d.ts.map +1 -1
  479. package/dist/ui/index.js +0 -4
  480. package/dist/ui/index.js.map +1 -1
  481. package/dist/ui/index.mjs +14 -24
  482. package/dist/ui/index.mjs.map +1 -1
  483. package/dist/ui/thread-welcome.d.ts +5 -17
  484. package/dist/ui/thread-welcome.d.ts.map +1 -1
  485. package/dist/ui/thread-welcome.js.map +1 -1
  486. package/dist/ui/thread-welcome.mjs.map +1 -1
  487. package/dist/ui/thread.d.ts +1 -19
  488. package/dist/ui/thread.d.ts.map +1 -1
  489. package/dist/ui/thread.js.map +1 -1
  490. package/dist/ui/thread.mjs.map +1 -1
  491. package/dist/ui/user-message.d.ts +1 -18
  492. package/dist/ui/user-message.d.ts.map +1 -1
  493. package/dist/ui/user-message.js.map +1 -1
  494. package/dist/ui/user-message.mjs.map +1 -1
  495. package/dist/utils/smooth/SmoothContext.js +2 -2
  496. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  497. package/dist/utils/smooth/SmoothContext.mjs +3 -3
  498. package/dist/utils/smooth/SmoothContext.mjs.map +1 -1
  499. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  500. package/dist/utils/smooth/useSmooth.js +0 -1
  501. package/dist/utils/smooth/useSmooth.js.map +1 -1
  502. package/dist/utils/smooth/useSmooth.mjs +0 -1
  503. package/dist/utils/smooth/useSmooth.mjs.map +1 -1
  504. package/package.json +7 -7
  505. package/src/api/AssistantRuntime.ts +3 -25
  506. package/src/api/AttachmentRuntime.ts +4 -16
  507. package/src/api/ComposerRuntime.ts +18 -214
  508. package/src/api/ContentPartRuntime.ts +2 -6
  509. package/src/api/MessageRuntime.ts +16 -20
  510. package/src/api/RuntimePathTypes.ts +26 -26
  511. package/src/api/ThreadListItemRuntime.ts +19 -11
  512. package/src/api/ThreadListRuntime.ts +39 -58
  513. package/src/api/ThreadRuntime.ts +52 -213
  514. package/src/api/index.ts +4 -0
  515. package/src/context/providers/AssistantRuntimeProvider.tsx +0 -1
  516. package/src/context/providers/TextContentPartProvider.tsx +0 -2
  517. package/src/context/providers/ThreadRuntimeProvider.tsx +1 -17
  518. package/src/context/react/AssistantContext.ts +0 -25
  519. package/src/context/react/ComposerContext.ts +1 -1
  520. package/src/context/react/ContentPartContext.ts +1 -1
  521. package/src/context/react/MessageContext.ts +2 -2
  522. package/src/context/react/ThreadContext.ts +5 -42
  523. package/src/context/react/index.ts +2 -125
  524. package/src/context/stores/AssistantToolUIs.ts +9 -2
  525. package/src/context/stores/MessageUtils.ts +6 -6
  526. package/src/context/stores/ThreadViewport.tsx +5 -6
  527. package/src/index.ts +0 -1
  528. package/src/internal.ts +1 -0
  529. package/src/model-config/useAssistantToolUI.tsx +0 -1
  530. package/src/primitive-hooks/contentPart/useContentPartDisplay.tsx +1 -1
  531. package/src/primitive-hooks/contentPart/useContentPartImage.tsx +1 -2
  532. package/src/primitive-hooks/contentPart/useContentPartText.tsx +1 -1
  533. package/src/primitive-hooks/index.ts +0 -5
  534. package/src/primitives/actionBar/ActionBarCopy.tsx +0 -5
  535. package/src/primitives/actionBar/ActionBarEdit.tsx +0 -5
  536. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +0 -6
  537. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +0 -6
  538. package/src/primitives/actionBar/ActionBarReload.tsx +0 -5
  539. package/src/primitives/actionBar/ActionBarRoot.tsx +0 -5
  540. package/src/primitives/actionBar/ActionBarSpeak.tsx +0 -5
  541. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +0 -6
  542. package/src/primitives/assistantModal/AssistantModalContent.tsx +1 -7
  543. package/src/primitives/assistantModal/AssistantModalRoot.tsx +0 -6
  544. package/src/primitives/assistantModal/AssistantModalTrigger.tsx +0 -6
  545. package/src/primitives/branchPicker/BranchPickerCount.tsx +0 -5
  546. package/src/primitives/branchPicker/BranchPickerNext.tsx +0 -6
  547. package/src/primitives/branchPicker/BranchPickerNumber.tsx +0 -5
  548. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +1 -6
  549. package/src/primitives/branchPicker/BranchPickerRoot.tsx +0 -5
  550. package/src/primitives/composer/ComposerAddAttachment.tsx +2 -7
  551. package/src/primitives/composer/ComposerAttachments.tsx +0 -6
  552. package/src/primitives/composer/ComposerCancel.tsx +0 -5
  553. package/src/primitives/composer/ComposerIf.tsx +0 -5
  554. package/src/primitives/composer/ComposerInput.tsx +0 -5
  555. package/src/primitives/composer/ComposerRoot.tsx +1 -3
  556. package/src/primitives/composer/ComposerSend.tsx +2 -7
  557. package/src/primitives/contentPart/ContentPartDisplay.tsx +0 -6
  558. package/src/primitives/contentPart/ContentPartImage.tsx +0 -5
  559. package/src/primitives/contentPart/ContentPartInProgress.tsx +0 -6
  560. package/src/primitives/contentPart/ContentPartText.tsx +0 -5
  561. package/src/primitives/index.ts +0 -8
  562. package/src/primitives/message/MessageAttachments.tsx +2 -10
  563. package/src/primitives/message/MessageContent.tsx +7 -15
  564. package/src/primitives/message/MessageIf.tsx +0 -5
  565. package/src/primitives/message/MessageRoot.tsx +0 -5
  566. package/src/primitives/message/index.ts +0 -1
  567. package/src/primitives/thread/ThreadEmpty.tsx +1 -6
  568. package/src/primitives/thread/ThreadIf.tsx +0 -5
  569. package/src/primitives/thread/ThreadMessages.tsx +0 -5
  570. package/src/primitives/thread/ThreadRoot.tsx +0 -5
  571. package/src/primitives/thread/ThreadScrollToBottom.tsx +0 -6
  572. package/src/primitives/thread/ThreadSuggestion.tsx +0 -5
  573. package/src/primitives/thread/ThreadViewport.tsx +0 -5
  574. package/src/primitives/threadListItem/ThreadListItemArchive.ts +3 -2
  575. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +29 -0
  576. package/src/primitives/threadListItem/ThreadListItemTitle.tsx +19 -0
  577. package/src/primitives/threadListItem/ThreadListItemTrigger.ts +25 -0
  578. package/src/primitives/threadListItem/index.ts +4 -1
  579. package/src/runtimes/attachment/AttachmentAdapter.ts +2 -12
  580. package/src/runtimes/attachment/CompositeAttachmentAdapter.ts +1 -1
  581. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +0 -8
  582. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +11 -5
  583. package/src/runtimes/core/ComposerRuntimeCore.tsx +0 -3
  584. package/src/runtimes/core/ThreadListRuntimeCore.tsx +7 -11
  585. package/src/runtimes/core/ThreadRuntimeCore.tsx +33 -17
  586. package/src/runtimes/core/index.ts +1 -2
  587. package/src/runtimes/edge/converters/toCoreMessages.ts +1 -1
  588. package/src/runtimes/edge/createEdgeRuntimeAPI.ts +0 -6
  589. package/src/runtimes/edge/streams/runResultStream.ts +0 -2
  590. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +3 -17
  591. package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +0 -3
  592. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +39 -7
  593. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +4 -3
  594. package/src/runtimes/external-store/ThreadMessageLike.tsx +4 -3
  595. package/src/runtimes/local/ChatModelAdapter.tsx +0 -9
  596. package/src/runtimes/local/LocalRuntimeOptions.tsx +1 -7
  597. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +140 -96
  598. package/src/runtimes/local/LocalThreadMetadataRuntimeCore.tsx +79 -0
  599. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +16 -11
  600. package/src/types/AssistantTypes.ts +1 -20
  601. package/src/types/AttachmentTypes.ts +1 -2
  602. package/src/types/ContentPartComponentTypes.tsx +4 -31
  603. package/src/ui/assistant-message.tsx +0 -5
  604. package/src/ui/composer.tsx +0 -5
  605. package/src/ui/index.ts +5 -23
  606. package/src/ui/thread-welcome.tsx +6 -9
  607. package/src/ui/thread.tsx +0 -5
  608. package/src/ui/user-message.tsx +2 -12
  609. package/src/utils/smooth/SmoothContext.tsx +3 -3
  610. package/src/utils/smooth/useSmooth.tsx +0 -1
  611. package/dist/hooks/index.d.ts +0 -3
  612. package/dist/hooks/index.d.ts.map +0 -1
  613. package/dist/hooks/index.js +0 -34
  614. package/dist/hooks/index.js.map +0 -1
  615. package/dist/hooks/index.mjs +0 -8
  616. package/dist/hooks/index.mjs.map +0 -1
  617. package/dist/hooks/useAppendMessage.d.ts +0 -6
  618. package/dist/hooks/useAppendMessage.d.ts.map +0 -1
  619. package/dist/hooks/useAppendMessage.js +0 -42
  620. package/dist/hooks/useAppendMessage.js.map +0 -1
  621. package/dist/hooks/useAppendMessage.mjs +0 -17
  622. package/dist/hooks/useAppendMessage.mjs.map +0 -1
  623. package/dist/hooks/useSwitchToNewThread.d.ts +0 -5
  624. package/dist/hooks/useSwitchToNewThread.d.ts.map +0 -1
  625. package/dist/hooks/useSwitchToNewThread.js +0 -39
  626. package/dist/hooks/useSwitchToNewThread.js.map +0 -1
  627. package/dist/hooks/useSwitchToNewThread.mjs +0 -14
  628. package/dist/hooks/useSwitchToNewThread.mjs.map +0 -1
  629. package/dist/primitive-hooks/actionBar/index.d.ts +0 -34
  630. package/dist/primitive-hooks/actionBar/index.d.ts.map +0 -1
  631. package/dist/primitive-hooks/actionBar/index.js +0 -49
  632. package/dist/primitive-hooks/actionBar/index.js.map +0 -1
  633. package/dist/primitive-hooks/actionBar/index.mjs +0 -20
  634. package/dist/primitive-hooks/actionBar/index.mjs.map +0 -1
  635. package/dist/primitive-hooks/branchPicker/index.d.ts +0 -17
  636. package/dist/primitive-hooks/branchPicker/index.d.ts.map +0 -1
  637. package/dist/primitive-hooks/branchPicker/index.js +0 -40
  638. package/dist/primitive-hooks/branchPicker/index.js.map +0 -1
  639. package/dist/primitive-hooks/branchPicker/index.mjs +0 -12
  640. package/dist/primitive-hooks/branchPicker/index.mjs.map +0 -1
  641. package/dist/primitive-hooks/composer/index.d.ts +0 -17
  642. package/dist/primitive-hooks/composer/index.d.ts.map +0 -1
  643. package/dist/primitive-hooks/composer/index.js +0 -40
  644. package/dist/primitive-hooks/composer/index.js.map +0 -1
  645. package/dist/primitive-hooks/composer/index.mjs +0 -12
  646. package/dist/primitive-hooks/composer/index.mjs.map +0 -1
  647. package/dist/primitive-hooks/message/index.d.ts +0 -5
  648. package/dist/primitive-hooks/message/index.d.ts.map +0 -1
  649. package/dist/primitive-hooks/message/index.js +0 -31
  650. package/dist/primitive-hooks/message/index.js.map +0 -1
  651. package/dist/primitive-hooks/message/index.mjs +0 -6
  652. package/dist/primitive-hooks/message/index.mjs.map +0 -1
  653. package/dist/primitive-hooks/thread/index.d.ts +0 -17
  654. package/dist/primitive-hooks/thread/index.d.ts.map +0 -1
  655. package/dist/primitive-hooks/thread/index.js +0 -40
  656. package/dist/primitive-hooks/thread/index.js.map +0 -1
  657. package/dist/primitive-hooks/thread/index.mjs +0 -12
  658. package/dist/primitive-hooks/thread/index.mjs.map +0 -1
  659. package/dist/primitives/actionBar/types.d.ts +0 -9
  660. package/dist/primitives/actionBar/types.d.ts.map +0 -1
  661. package/dist/primitives/actionBar/types.js +0 -19
  662. package/dist/primitives/actionBar/types.js.map +0 -1
  663. package/dist/primitives/actionBar/types.mjs +0 -1
  664. package/dist/primitives/actionBar/types.mjs.map +0 -1
  665. package/dist/primitives/assistantModal/types.d.ts +0 -4
  666. package/dist/primitives/assistantModal/types.d.ts.map +0 -1
  667. package/dist/primitives/assistantModal/types.js +0 -19
  668. package/dist/primitives/assistantModal/types.js.map +0 -1
  669. package/dist/primitives/assistantModal/types.mjs +0 -1
  670. package/dist/primitives/assistantModal/types.mjs.map +0 -1
  671. package/dist/primitives/attachment/types.d.ts +0 -1
  672. package/dist/primitives/attachment/types.d.ts.map +0 -1
  673. package/dist/primitives/attachment/types.js +0 -2
  674. package/dist/primitives/attachment/types.js.map +0 -1
  675. package/dist/primitives/attachment/types.mjs +0 -1
  676. package/dist/primitives/attachment/types.mjs.map +0 -1
  677. package/dist/primitives/branchPicker/types.d.ts +0 -6
  678. package/dist/primitives/branchPicker/types.d.ts.map +0 -1
  679. package/dist/primitives/branchPicker/types.js +0 -19
  680. package/dist/primitives/branchPicker/types.js.map +0 -1
  681. package/dist/primitives/branchPicker/types.mjs +0 -1
  682. package/dist/primitives/branchPicker/types.mjs.map +0 -1
  683. package/dist/primitives/composer/types.d.ts +0 -6
  684. package/dist/primitives/composer/types.d.ts.map +0 -1
  685. package/dist/primitives/composer/types.js +0 -19
  686. package/dist/primitives/composer/types.js.map +0 -1
  687. package/dist/primitives/composer/types.mjs +0 -1
  688. package/dist/primitives/composer/types.mjs.map +0 -1
  689. package/dist/primitives/contentPart/types.d.ts +0 -5
  690. package/dist/primitives/contentPart/types.d.ts.map +0 -1
  691. package/dist/primitives/contentPart/types.js +0 -19
  692. package/dist/primitives/contentPart/types.js.map +0 -1
  693. package/dist/primitives/contentPart/types.mjs +0 -1
  694. package/dist/primitives/contentPart/types.mjs.map +0 -1
  695. package/dist/primitives/message/MessageInProgress.d.ts +0 -13
  696. package/dist/primitives/message/MessageInProgress.d.ts.map +0 -1
  697. package/dist/primitives/message/MessageInProgress.js.map +0 -1
  698. package/dist/primitives/message/MessageInProgress.mjs +0 -11
  699. package/dist/primitives/message/MessageInProgress.mjs.map +0 -1
  700. package/dist/primitives/message/types.d.ts +0 -5
  701. package/dist/primitives/message/types.d.ts.map +0 -1
  702. package/dist/primitives/message/types.js +0 -19
  703. package/dist/primitives/message/types.js.map +0 -1
  704. package/dist/primitives/message/types.mjs +0 -1
  705. package/dist/primitives/message/types.mjs.map +0 -1
  706. package/dist/primitives/thread/types.d.ts +0 -8
  707. package/dist/primitives/thread/types.d.ts.map +0 -1
  708. package/dist/primitives/thread/types.js +0 -19
  709. package/dist/primitives/thread/types.js.map +0 -1
  710. package/dist/primitives/thread/types.mjs +0 -1
  711. package/dist/primitives/thread/types.mjs.map +0 -1
  712. package/dist/runtimes/core/subscribeToMainThread.d.ts +0 -6
  713. package/dist/runtimes/core/subscribeToMainThread.d.ts.map +0 -1
  714. package/dist/runtimes/core/subscribeToMainThread.js.map +0 -1
  715. package/dist/runtimes/core/subscribeToMainThread.mjs +0 -23
  716. package/dist/runtimes/core/subscribeToMainThread.mjs.map +0 -1
  717. package/src/hooks/index.ts +0 -2
  718. package/src/hooks/useAppendMessage.tsx +0 -19
  719. package/src/hooks/useSwitchToNewThread.tsx +0 -14
  720. package/src/primitive-hooks/actionBar/index.ts +0 -39
  721. package/src/primitive-hooks/branchPicker/index.ts +0 -18
  722. package/src/primitive-hooks/composer/index.ts +0 -17
  723. package/src/primitive-hooks/message/index.ts +0 -4
  724. package/src/primitive-hooks/thread/index.ts +0 -16
  725. package/src/primitives/actionBar/types.ts +0 -8
  726. package/src/primitives/assistantModal/types.ts +0 -3
  727. package/src/primitives/attachment/types.ts +0 -0
  728. package/src/primitives/branchPicker/types.ts +0 -5
  729. package/src/primitives/composer/types.ts +0 -5
  730. package/src/primitives/contentPart/types.ts +0 -4
  731. package/src/primitives/message/MessageInProgress.tsx +0 -22
  732. package/src/primitives/message/types.ts +0 -4
  733. package/src/primitives/thread/types.ts +0 -7
  734. package/src/runtimes/core/subscribeToMainThread.ts +0 -30
@@ -6,12 +6,8 @@ export declare class CompositeAttachmentAdapter implements AttachmentAdapter {
6
6
  constructor(adapters: AttachmentAdapter[]);
7
7
  add(state: {
8
8
  file: File;
9
- }): Promise<Omit<PendingAttachment, "status"> & {
10
- status?: import("../../types/AttachmentTypes").PendingAttachmentStatus;
11
- }>;
12
- send(attachment: PendingAttachment): Promise<Omit<import("../..").CompleteAttachment, "status"> & {
13
- status?: import("../../types/AttachmentTypes").CompleteAttachmentStatus;
14
- }>;
9
+ }): Promise<PendingAttachment>;
10
+ send(attachment: PendingAttachment): Promise<import("../..").CompleteAttachment>;
15
11
  remove(attachment: Attachment): Promise<void>;
16
12
  }
17
13
  //# sourceMappingURL=CompositeAttachmentAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeAttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA6CxD,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,OAAO,CAAC,SAAS,CAAsB;IAEhC,MAAM,EAAE,MAAM,CAAC;gBAEV,QAAQ,EAAE,iBAAiB,EAAE;IAgB5B,GAAG,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;IASzB,IAAI,CAAC,UAAU,EAAE,iBAAiB;;;IAUlC,MAAM,CAAC,UAAU,EAAE,UAAU;CAiB3C"}
1
+ {"version":3,"file":"CompositeAttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA6CxD,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,OAAO,CAAC,SAAS,CAAsB;IAEhC,MAAM,EAAE,MAAM,CAAC;gBAEV,QAAQ,EAAE,iBAAiB,EAAE;IAgB5B,GAAG,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;IASzB,IAAI,CAAC,UAAU,EAAE,iBAAiB;IAUlC,MAAM,CAAC,UAAU,EAAE,UAAU;CAiB3C"}
@@ -87,8 +87,7 @@ var CompositeAttachmentAdapter = class {
87
87
  if (fileMatchesAccept(
88
88
  {
89
89
  name: attachment.name,
90
- type: attachment.contentType ?? "unknown/unknown"
91
- // TODO remove after 0.6.0
90
+ type: attachment.contentType
92
91
  },
93
92
  adapter.accept
94
93
  )) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"sourcesContent":["import { Attachment, PendingAttachment } from \"../../types/AttachmentTypes\";\nimport { AttachmentAdapter } from \"./AttachmentAdapter\";\n\nfunction fileMatchesAccept(\n file: { name: string; type: string },\n acceptString: string,\n) {\n // Check if the accept string is \"*\", which allows any file\n if (acceptString === \"*\") {\n return true;\n }\n\n // Split the accept string into an array of allowed types\n const allowedTypes = acceptString\n .split(\",\")\n .map((type) => type.trim().toLowerCase());\n\n // Get the file's extension and MIME type\n const fileExtension = \".\" + file.name.split(\".\").pop()!.toLowerCase();\n const fileMimeType = file.type.toLowerCase();\n\n for (const type of allowedTypes) {\n // Check for file extension match\n if (type.startsWith(\".\") && type === fileExtension) {\n return true;\n }\n\n // Check for exact MIME type match\n if (type.includes(\"/\") && type === fileMimeType) {\n return true;\n }\n\n if (type === \"image/*\" || type === \"video/*\" || type === \"audio/*\") {\n // Check for wildcard MIME type match\n if (type.endsWith(\"/*\")) {\n const generalType = type.split(\"/\")[0]!;\n if (fileMimeType.startsWith(generalType + \"/\")) {\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nexport class CompositeAttachmentAdapter implements AttachmentAdapter {\n private _adapters: AttachmentAdapter[];\n\n public accept: string;\n\n constructor(adapters: AttachmentAdapter[]) {\n this._adapters = adapters;\n\n const wildcardIdx = adapters.findIndex((a) => a.accept === \"*\");\n if (wildcardIdx !== -1) {\n if (wildcardIdx !== adapters.length - 1)\n throw new Error(\n \"A wildcard adapter (handling all files) can only be specified as the last adapter.\",\n );\n\n this.accept = \"*\";\n } else {\n this.accept = adapters.map((a) => a.accept).join(\",\");\n }\n }\n\n public async add(state: { file: File }) {\n for (const adapter of this._adapters) {\n if (fileMatchesAccept(state.file, adapter.accept)) {\n return adapter.add(state);\n }\n }\n throw new Error(\"No matching adapter found for file\");\n }\n\n public async send(attachment: PendingAttachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (fileMatchesAccept(attachment.file, adapter.accept)) {\n return adapter.send(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n\n public async remove(attachment: Attachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (\n fileMatchesAccept(\n {\n name: attachment.name,\n type: attachment.contentType ?? \"unknown/unknown\", // TODO remove after 0.6.0\n },\n adapter.accept,\n )\n ) {\n return adapter.remove(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,kBACP,MACA,cACA;AAEA,MAAI,iBAAiB,KAAK;AACxB,WAAO;AAAA,EACT;AAGA,QAAM,eAAe,aAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC;AAG1C,QAAM,gBAAgB,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,YAAY;AACpE,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,aAAW,QAAQ,cAAc;AAE/B,QAAI,KAAK,WAAW,GAAG,KAAK,SAAS,eAAe;AAClD,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,SAAS,GAAG,KAAK,SAAS,cAAc;AAC/C,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,WAAW;AAElE,UAAI,KAAK,SAAS,IAAI,GAAG;AACvB,cAAM,cAAc,KAAK,MAAM,GAAG,EAAE,CAAC;AACrC,YAAI,aAAa,WAAW,cAAc,GAAG,GAAG;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,6BAAN,MAA8D;AAAA,EAC3D;AAAA,EAED;AAAA,EAEP,YAAY,UAA+B;AACzC,SAAK,YAAY;AAEjB,UAAM,cAAc,SAAS,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG;AAC9D,QAAI,gBAAgB,IAAI;AACtB,UAAI,gBAAgB,SAAS,SAAS;AACpC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAEF,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,WAAK,SAAS,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,MAAa,IAAI,OAAuB;AACtC,eAAW,WAAW,KAAK,WAAW;AACpC,UAAI,kBAAkB,MAAM,MAAM,QAAQ,MAAM,GAAG;AACjD,eAAO,QAAQ,IAAI,KAAK;AAAA,MAC1B;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAAA,EAEA,MAAa,KAAK,YAA+B;AAC/C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UAAI,kBAAkB,WAAW,MAAM,QAAQ,MAAM,GAAG;AACtD,eAAO,QAAQ,KAAK,UAAU;AAAA,MAChC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAEA,MAAa,OAAO,YAAwB;AAC1C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UACE;AAAA,QACE;AAAA,UACE,MAAM,WAAW;AAAA,UACjB,MAAM,WAAW,eAAe;AAAA;AAAA,QAClC;AAAA,QACA,QAAQ;AAAA,MACV,GACA;AACA,eAAO,QAAQ,OAAO,UAAU;AAAA,MAClC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"sourcesContent":["import { Attachment, PendingAttachment } from \"../../types/AttachmentTypes\";\nimport { AttachmentAdapter } from \"./AttachmentAdapter\";\n\nfunction fileMatchesAccept(\n file: { name: string; type: string },\n acceptString: string,\n) {\n // Check if the accept string is \"*\", which allows any file\n if (acceptString === \"*\") {\n return true;\n }\n\n // Split the accept string into an array of allowed types\n const allowedTypes = acceptString\n .split(\",\")\n .map((type) => type.trim().toLowerCase());\n\n // Get the file's extension and MIME type\n const fileExtension = \".\" + file.name.split(\".\").pop()!.toLowerCase();\n const fileMimeType = file.type.toLowerCase();\n\n for (const type of allowedTypes) {\n // Check for file extension match\n if (type.startsWith(\".\") && type === fileExtension) {\n return true;\n }\n\n // Check for exact MIME type match\n if (type.includes(\"/\") && type === fileMimeType) {\n return true;\n }\n\n if (type === \"image/*\" || type === \"video/*\" || type === \"audio/*\") {\n // Check for wildcard MIME type match\n if (type.endsWith(\"/*\")) {\n const generalType = type.split(\"/\")[0]!;\n if (fileMimeType.startsWith(generalType + \"/\")) {\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nexport class CompositeAttachmentAdapter implements AttachmentAdapter {\n private _adapters: AttachmentAdapter[];\n\n public accept: string;\n\n constructor(adapters: AttachmentAdapter[]) {\n this._adapters = adapters;\n\n const wildcardIdx = adapters.findIndex((a) => a.accept === \"*\");\n if (wildcardIdx !== -1) {\n if (wildcardIdx !== adapters.length - 1)\n throw new Error(\n \"A wildcard adapter (handling all files) can only be specified as the last adapter.\",\n );\n\n this.accept = \"*\";\n } else {\n this.accept = adapters.map((a) => a.accept).join(\",\");\n }\n }\n\n public async add(state: { file: File }) {\n for (const adapter of this._adapters) {\n if (fileMatchesAccept(state.file, adapter.accept)) {\n return adapter.add(state);\n }\n }\n throw new Error(\"No matching adapter found for file\");\n }\n\n public async send(attachment: PendingAttachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (fileMatchesAccept(attachment.file, adapter.accept)) {\n return adapter.send(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n\n public async remove(attachment: Attachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (\n fileMatchesAccept(\n {\n name: attachment.name,\n type: attachment.contentType,\n },\n adapter.accept,\n )\n ) {\n return adapter.remove(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,kBACP,MACA,cACA;AAEA,MAAI,iBAAiB,KAAK;AACxB,WAAO;AAAA,EACT;AAGA,QAAM,eAAe,aAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC;AAG1C,QAAM,gBAAgB,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,YAAY;AACpE,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,aAAW,QAAQ,cAAc;AAE/B,QAAI,KAAK,WAAW,GAAG,KAAK,SAAS,eAAe;AAClD,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,SAAS,GAAG,KAAK,SAAS,cAAc;AAC/C,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,WAAW;AAElE,UAAI,KAAK,SAAS,IAAI,GAAG;AACvB,cAAM,cAAc,KAAK,MAAM,GAAG,EAAE,CAAC;AACrC,YAAI,aAAa,WAAW,cAAc,GAAG,GAAG;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,6BAAN,MAA8D;AAAA,EAC3D;AAAA,EAED;AAAA,EAEP,YAAY,UAA+B;AACzC,SAAK,YAAY;AAEjB,UAAM,cAAc,SAAS,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG;AAC9D,QAAI,gBAAgB,IAAI;AACtB,UAAI,gBAAgB,SAAS,SAAS;AACpC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAEF,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,WAAK,SAAS,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,MAAa,IAAI,OAAuB;AACtC,eAAW,WAAW,KAAK,WAAW;AACpC,UAAI,kBAAkB,MAAM,MAAM,QAAQ,MAAM,GAAG;AACjD,eAAO,QAAQ,IAAI,KAAK;AAAA,MAC1B;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAAA,EAEA,MAAa,KAAK,YAA+B;AAC/C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UAAI,kBAAkB,WAAW,MAAM,QAAQ,MAAM,GAAG;AACtD,eAAO,QAAQ,KAAK,UAAU;AAAA,MAChC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAEA,MAAa,OAAO,YAAwB;AAC1C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UACE;AAAA,QACE;AAAA,UACE,MAAM,WAAW;AAAA,UACjB,MAAM,WAAW;AAAA,QACnB;AAAA,QACA,QAAQ;AAAA,MACV,GACA;AACA,eAAO,QAAQ,OAAO,UAAU;AAAA,MAClC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACF;","names":[]}
@@ -63,8 +63,7 @@ var CompositeAttachmentAdapter = class {
63
63
  if (fileMatchesAccept(
64
64
  {
65
65
  name: attachment.name,
66
- type: attachment.contentType ?? "unknown/unknown"
67
- // TODO remove after 0.6.0
66
+ type: attachment.contentType
68
67
  },
69
68
  adapter.accept
70
69
  )) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"sourcesContent":["import { Attachment, PendingAttachment } from \"../../types/AttachmentTypes\";\nimport { AttachmentAdapter } from \"./AttachmentAdapter\";\n\nfunction fileMatchesAccept(\n file: { name: string; type: string },\n acceptString: string,\n) {\n // Check if the accept string is \"*\", which allows any file\n if (acceptString === \"*\") {\n return true;\n }\n\n // Split the accept string into an array of allowed types\n const allowedTypes = acceptString\n .split(\",\")\n .map((type) => type.trim().toLowerCase());\n\n // Get the file's extension and MIME type\n const fileExtension = \".\" + file.name.split(\".\").pop()!.toLowerCase();\n const fileMimeType = file.type.toLowerCase();\n\n for (const type of allowedTypes) {\n // Check for file extension match\n if (type.startsWith(\".\") && type === fileExtension) {\n return true;\n }\n\n // Check for exact MIME type match\n if (type.includes(\"/\") && type === fileMimeType) {\n return true;\n }\n\n if (type === \"image/*\" || type === \"video/*\" || type === \"audio/*\") {\n // Check for wildcard MIME type match\n if (type.endsWith(\"/*\")) {\n const generalType = type.split(\"/\")[0]!;\n if (fileMimeType.startsWith(generalType + \"/\")) {\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nexport class CompositeAttachmentAdapter implements AttachmentAdapter {\n private _adapters: AttachmentAdapter[];\n\n public accept: string;\n\n constructor(adapters: AttachmentAdapter[]) {\n this._adapters = adapters;\n\n const wildcardIdx = adapters.findIndex((a) => a.accept === \"*\");\n if (wildcardIdx !== -1) {\n if (wildcardIdx !== adapters.length - 1)\n throw new Error(\n \"A wildcard adapter (handling all files) can only be specified as the last adapter.\",\n );\n\n this.accept = \"*\";\n } else {\n this.accept = adapters.map((a) => a.accept).join(\",\");\n }\n }\n\n public async add(state: { file: File }) {\n for (const adapter of this._adapters) {\n if (fileMatchesAccept(state.file, adapter.accept)) {\n return adapter.add(state);\n }\n }\n throw new Error(\"No matching adapter found for file\");\n }\n\n public async send(attachment: PendingAttachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (fileMatchesAccept(attachment.file, adapter.accept)) {\n return adapter.send(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n\n public async remove(attachment: Attachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (\n fileMatchesAccept(\n {\n name: attachment.name,\n type: attachment.contentType ?? \"unknown/unknown\", // TODO remove after 0.6.0\n },\n adapter.accept,\n )\n ) {\n return adapter.remove(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n}\n"],"mappings":";AAGA,SAAS,kBACP,MACA,cACA;AAEA,MAAI,iBAAiB,KAAK;AACxB,WAAO;AAAA,EACT;AAGA,QAAM,eAAe,aAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC;AAG1C,QAAM,gBAAgB,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,YAAY;AACpE,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,aAAW,QAAQ,cAAc;AAE/B,QAAI,KAAK,WAAW,GAAG,KAAK,SAAS,eAAe;AAClD,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,SAAS,GAAG,KAAK,SAAS,cAAc;AAC/C,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,WAAW;AAElE,UAAI,KAAK,SAAS,IAAI,GAAG;AACvB,cAAM,cAAc,KAAK,MAAM,GAAG,EAAE,CAAC;AACrC,YAAI,aAAa,WAAW,cAAc,GAAG,GAAG;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,6BAAN,MAA8D;AAAA,EAC3D;AAAA,EAED;AAAA,EAEP,YAAY,UAA+B;AACzC,SAAK,YAAY;AAEjB,UAAM,cAAc,SAAS,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG;AAC9D,QAAI,gBAAgB,IAAI;AACtB,UAAI,gBAAgB,SAAS,SAAS;AACpC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAEF,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,WAAK,SAAS,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,MAAa,IAAI,OAAuB;AACtC,eAAW,WAAW,KAAK,WAAW;AACpC,UAAI,kBAAkB,MAAM,MAAM,QAAQ,MAAM,GAAG;AACjD,eAAO,QAAQ,IAAI,KAAK;AAAA,MAC1B;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAAA,EAEA,MAAa,KAAK,YAA+B;AAC/C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UAAI,kBAAkB,WAAW,MAAM,QAAQ,MAAM,GAAG;AACtD,eAAO,QAAQ,KAAK,UAAU;AAAA,MAChC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAEA,MAAa,OAAO,YAAwB;AAC1C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UACE;AAAA,QACE;AAAA,UACE,MAAM,WAAW;AAAA,UACjB,MAAM,WAAW,eAAe;AAAA;AAAA,QAClC;AAAA,QACA,QAAQ;AAAA,MACV,GACA;AACA,eAAO,QAAQ,OAAO,UAAU;AAAA,MAClC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"sourcesContent":["import { Attachment, PendingAttachment } from \"../../types/AttachmentTypes\";\nimport { AttachmentAdapter } from \"./AttachmentAdapter\";\n\nfunction fileMatchesAccept(\n file: { name: string; type: string },\n acceptString: string,\n) {\n // Check if the accept string is \"*\", which allows any file\n if (acceptString === \"*\") {\n return true;\n }\n\n // Split the accept string into an array of allowed types\n const allowedTypes = acceptString\n .split(\",\")\n .map((type) => type.trim().toLowerCase());\n\n // Get the file's extension and MIME type\n const fileExtension = \".\" + file.name.split(\".\").pop()!.toLowerCase();\n const fileMimeType = file.type.toLowerCase();\n\n for (const type of allowedTypes) {\n // Check for file extension match\n if (type.startsWith(\".\") && type === fileExtension) {\n return true;\n }\n\n // Check for exact MIME type match\n if (type.includes(\"/\") && type === fileMimeType) {\n return true;\n }\n\n if (type === \"image/*\" || type === \"video/*\" || type === \"audio/*\") {\n // Check for wildcard MIME type match\n if (type.endsWith(\"/*\")) {\n const generalType = type.split(\"/\")[0]!;\n if (fileMimeType.startsWith(generalType + \"/\")) {\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nexport class CompositeAttachmentAdapter implements AttachmentAdapter {\n private _adapters: AttachmentAdapter[];\n\n public accept: string;\n\n constructor(adapters: AttachmentAdapter[]) {\n this._adapters = adapters;\n\n const wildcardIdx = adapters.findIndex((a) => a.accept === \"*\");\n if (wildcardIdx !== -1) {\n if (wildcardIdx !== adapters.length - 1)\n throw new Error(\n \"A wildcard adapter (handling all files) can only be specified as the last adapter.\",\n );\n\n this.accept = \"*\";\n } else {\n this.accept = adapters.map((a) => a.accept).join(\",\");\n }\n }\n\n public async add(state: { file: File }) {\n for (const adapter of this._adapters) {\n if (fileMatchesAccept(state.file, adapter.accept)) {\n return adapter.add(state);\n }\n }\n throw new Error(\"No matching adapter found for file\");\n }\n\n public async send(attachment: PendingAttachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (fileMatchesAccept(attachment.file, adapter.accept)) {\n return adapter.send(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n\n public async remove(attachment: Attachment) {\n const adapters = this._adapters.slice();\n for (const adapter of adapters) {\n if (\n fileMatchesAccept(\n {\n name: attachment.name,\n type: attachment.contentType,\n },\n adapter.accept,\n )\n ) {\n return adapter.remove(attachment);\n }\n }\n throw new Error(\"No matching adapter found for attachment\");\n }\n}\n"],"mappings":";AAGA,SAAS,kBACP,MACA,cACA;AAEA,MAAI,iBAAiB,KAAK;AACxB,WAAO;AAAA,EACT;AAGA,QAAM,eAAe,aAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC;AAG1C,QAAM,gBAAgB,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,YAAY;AACpE,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,aAAW,QAAQ,cAAc;AAE/B,QAAI,KAAK,WAAW,GAAG,KAAK,SAAS,eAAe;AAClD,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,SAAS,GAAG,KAAK,SAAS,cAAc;AAC/C,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,WAAW;AAElE,UAAI,KAAK,SAAS,IAAI,GAAG;AACvB,cAAM,cAAc,KAAK,MAAM,GAAG,EAAE,CAAC;AACrC,YAAI,aAAa,WAAW,cAAc,GAAG,GAAG;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,6BAAN,MAA8D;AAAA,EAC3D;AAAA,EAED;AAAA,EAEP,YAAY,UAA+B;AACzC,SAAK,YAAY;AAEjB,UAAM,cAAc,SAAS,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG;AAC9D,QAAI,gBAAgB,IAAI;AACtB,UAAI,gBAAgB,SAAS,SAAS;AACpC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAEF,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,WAAK,SAAS,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,MAAa,IAAI,OAAuB;AACtC,eAAW,WAAW,KAAK,WAAW;AACpC,UAAI,kBAAkB,MAAM,MAAM,QAAQ,MAAM,GAAG;AACjD,eAAO,QAAQ,IAAI,KAAK;AAAA,MAC1B;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAAA,EAEA,MAAa,KAAK,YAA+B;AAC/C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UAAI,kBAAkB,WAAW,MAAM,QAAQ,MAAM,GAAG;AACtD,eAAO,QAAQ,KAAK,UAAU;AAAA,MAChC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAEA,MAAa,OAAO,YAAwB;AAC1C,UAAM,WAAW,KAAK,UAAU,MAAM;AACtC,eAAW,WAAW,UAAU;AAC9B,UACE;AAAA,QACE;AAAA,UACE,MAAM,WAAW;AAAA,UACjB,MAAM,WAAW;AAAA,QACnB;AAAA,QACA,QAAQ;AAAA,MACV,GACA;AACA,eAAO,QAAQ,OAAO,UAAU;AAAA,MAClC;AAAA,IACF;AACA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD,8BAAsB,uBAAwB,YAAW,mBAAmB;IAC1E,SAAgB,SAAS,QAAQ;IAEjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAEjE,mBAAmB,IAAI,MAAM;IAIpC,OAAO,CAAC,YAAY,CAA6B;IACjD,IAAW,WAAW,0BAErB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE;IAKrD,aAAoB,SAAS,IAAI,OAAO,CAAC;IAEzC,IAAW,OAAO,YAEjB;IAED,OAAO,CAAC,KAAK,CAAM;IAEnB,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,IAAI,gBAEP;IAED,OAAO,CAAC,IAAI,EAAE,WAAW;IAKzB,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,KAAK;IAOQ,IAAI;aA0BD,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI;aAC1D,MAAM,IAAI,IAAI;IAExB,aAAa,CAAC,IAAI,EAAE,IAAI;IAcxB,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAc3C,OAAO,CAAC,cAAc,CAAyB;IAC/C,SAAS,CAAC,iBAAiB;IAIpB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;CAIpD"}
1
+ {"version":3,"file":"BaseComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD,8BAAsB,uBAAwB,YAAW,mBAAmB;IAC1E,SAAgB,SAAS,QAAQ;IAEjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAEjE,mBAAmB,IAAI,MAAM;IAIpC,OAAO,CAAC,YAAY,CAA6B;IACjD,IAAW,WAAW,0BAErB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE;IAKrD,aAAoB,SAAS,IAAI,OAAO,CAAC;IAEzC,IAAW,OAAO,YAEjB;IAED,OAAO,CAAC,KAAK,CAAM;IAEnB,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,IAAI,gBAEP;IAED,OAAO,CAAC,IAAI,EAAE,WAAW;IAKzB,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,KAAK;IAOQ,IAAI;aAsBD,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI;aAC1D,MAAM,IAAI,IAAI;IAExB,aAAa,CAAC,IAAI,EAAE,IAAI;IAUxB,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAc3C,OAAO,CAAC,cAAc,CAAyB;IAC/C,SAAS,CAAC,iBAAiB;IAIpB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;CAIpD"}
@@ -68,9 +68,6 @@ var BaseComposerRuntimeCore = class {
68
68
  this.attachments.map(async (a) => {
69
69
  if (isAttachmentComplete(a)) return a;
70
70
  const result = await adapter.send(a);
71
- if (result.status?.type !== "complete") {
72
- result.status = { type: "complete" };
73
- }
74
71
  return result;
75
72
  })
76
73
  ) : [];
@@ -86,9 +83,6 @@ var BaseComposerRuntimeCore = class {
86
83
  const adapter = this.getAttachmentAdapter();
87
84
  if (!adapter) throw new Error("Attachments are not supported");
88
85
  const attachment = await adapter.add({ file });
89
- if (attachment.status === void 0) {
90
- attachment.status = { type: "requires-action", reason: "composer-send" };
91
- }
92
86
  this._attachments = [...this._attachments, attachment];
93
87
  this.notifySubscribers();
94
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../types/AttachmentTypes\";\nimport { AppendMessage, Unsubscribe } from \"../../types\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { ComposerRuntimeCore } from \"../core/ComposerRuntimeCore\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore implements ComposerRuntimeCore {\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public getAttachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this.notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n setRole(role: MessageRole) {\n this._role = role;\n this.notifySubscribers();\n }\n\n setText(value: string) {\n this._text = value;\n this.notifySubscribers();\n }\n\n reset() {\n this._text = \"\";\n this._role = \"user\";\n this._attachments = [];\n this.notifySubscribers();\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? await Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n // TODO remove after 0.6.0\n if (result.status?.type !== \"complete\") {\n result.status = { type: \"complete\" };\n }\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const message: Omit<AppendMessage, \"parentId\"> = {\n role: this.role,\n content: this.text ? [{ type: \"text\", text: this.text }] : [],\n attachments,\n };\n this.reset();\n\n this.handleSend(message);\n }\n public abstract handleSend(message: Omit<AppendMessage, \"parentId\">): void;\n public abstract cancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const attachment = await adapter.add({ file });\n // TODO remove after 0.6.0\n if (attachment.status === undefined) {\n attachment.status = { type: \"requires-action\", reason: \"composer-send\" };\n }\n\n this._attachments = [...this._attachments, attachment as PendingAttachment];\n this.notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n this._attachments = this._attachments.toSpliced(index, 1);\n this.notifySubscribers();\n }\n\n private _subscriptions = new Set<() => void>();\n protected notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../types/AttachmentTypes\";\nimport { AppendMessage, Unsubscribe } from \"../../types\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { ComposerRuntimeCore } from \"../core/ComposerRuntimeCore\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore implements ComposerRuntimeCore {\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public getAttachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this.notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n setRole(role: MessageRole) {\n this._role = role;\n this.notifySubscribers();\n }\n\n setText(value: string) {\n this._text = value;\n this.notifySubscribers();\n }\n\n reset() {\n this._text = \"\";\n this._role = \"user\";\n this._attachments = [];\n this.notifySubscribers();\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? await Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const message: Omit<AppendMessage, \"parentId\"> = {\n role: this.role,\n content: this.text ? [{ type: \"text\", text: this.text }] : [],\n attachments,\n };\n this.reset();\n\n this.handleSend(message);\n }\n public abstract handleSend(message: Omit<AppendMessage, \"parentId\">): void;\n public abstract cancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const attachment = await adapter.add({ file });\n\n this._attachments = [...this._attachments, attachment as PendingAttachment];\n this.notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n this._attachments = this._attachments.toSpliced(index, 1);\n this.notifySubscribers();\n }\n\n private _subscriptions = new Set<() => void>();\n protected notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,IAAM,uBAAuB,CAAC,MAC5B,EAAE,OAAO,SAAS;AAEb,IAAe,0BAAf,MAAsE;AAAA,EAC3D,YAAY;AAAA,EAIrB,sBAA8B;AACnC,WAAO,KAAK,qBAAqB,GAAG,UAAU;AAAA,EAChD;AAAA,EAEQ,eAAsC,CAAC;AAAA,EAC/C,IAAW,cAAc;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,eAAe,OAA8B;AACrD,SAAK,eAAe;AACpB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAIA,IAAW,UAAU;AACnB,WAAO,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,KAAK,YAAY;AAAA,EAChD;AAAA,EAEQ,QAAQ;AAAA,EAEhB,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,QAAqB;AAAA,EAE7B,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,QAAQ,OAAe;AACrB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,QAAQ;AACN,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,eAAe,CAAC;AACrB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAa,OAAO;AAClB,UAAM,UAAU,KAAK,qBAAqB;AAC1C,UAAM,cACJ,WAAW,KAAK,YAAY,SAAS,IACjC,MAAM,QAAQ;AAAA,MACZ,KAAK,YAAY,IAAI,OAAO,MAAM;AAChC,YAAI,qBAAqB,CAAC,EAAG,QAAO;AACpC,cAAM,SAAS,MAAM,QAAQ,KAAK,CAAC;AACnC,eAAO;AAAA,MACT,CAAC;AAAA,IACH,IACA,CAAC;AAEP,UAAM,UAA2C;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,SAAS,KAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,SAAK,MAAM;AAEX,SAAK,WAAW,OAAO;AAAA,EACzB;AAAA,EAIA,MAAM,cAAc,MAAY;AAC9B,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,aAAa,MAAM,QAAQ,IAAI,EAAE,KAAK,CAAC;AAE7C,SAAK,eAAe,CAAC,GAAG,KAAK,cAAc,UAA+B;AAC1E,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,iBAAiB,cAAsB;AAC3C,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,QAAQ,KAAK,aAAa,UAAU,CAAC,MAAM,EAAE,OAAO,YAAY;AACtE,QAAI,UAAU,GAAI,OAAM,IAAI,MAAM,sBAAsB;AACxD,UAAM,aAAa,KAAK,aAAa,KAAK;AAE1C,UAAM,QAAQ,OAAO,UAAU;AAE/B,SAAK,eAAe,KAAK,aAAa,UAAU,OAAO,CAAC;AACxD,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,iBAAiB,oBAAI,IAAgB;AAAA,EACnC,oBAAoB;AAC5B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AAAA,EAEO,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AACF;","names":[]}
@@ -44,9 +44,6 @@ var BaseComposerRuntimeCore = class {
44
44
  this.attachments.map(async (a) => {
45
45
  if (isAttachmentComplete(a)) return a;
46
46
  const result = await adapter.send(a);
47
- if (result.status?.type !== "complete") {
48
- result.status = { type: "complete" };
49
- }
50
47
  return result;
51
48
  })
52
49
  ) : [];
@@ -62,9 +59,6 @@ var BaseComposerRuntimeCore = class {
62
59
  const adapter = this.getAttachmentAdapter();
63
60
  if (!adapter) throw new Error("Attachments are not supported");
64
61
  const attachment = await adapter.add({ file });
65
- if (attachment.status === void 0) {
66
- attachment.status = { type: "requires-action", reason: "composer-send" };
67
- }
68
62
  this._attachments = [...this._attachments, attachment];
69
63
  this.notifySubscribers();
70
64
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../types/AttachmentTypes\";\nimport { AppendMessage, Unsubscribe } from \"../../types\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { ComposerRuntimeCore } from \"../core/ComposerRuntimeCore\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore implements ComposerRuntimeCore {\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public getAttachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this.notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n setRole(role: MessageRole) {\n this._role = role;\n this.notifySubscribers();\n }\n\n setText(value: string) {\n this._text = value;\n this.notifySubscribers();\n }\n\n reset() {\n this._text = \"\";\n this._role = \"user\";\n this._attachments = [];\n this.notifySubscribers();\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? await Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n // TODO remove after 0.6.0\n if (result.status?.type !== \"complete\") {\n result.status = { type: \"complete\" };\n }\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const message: Omit<AppendMessage, \"parentId\"> = {\n role: this.role,\n content: this.text ? [{ type: \"text\", text: this.text }] : [],\n attachments,\n };\n this.reset();\n\n this.handleSend(message);\n }\n public abstract handleSend(message: Omit<AppendMessage, \"parentId\">): void;\n public abstract cancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const attachment = await adapter.add({ file });\n // TODO remove after 0.6.0\n if (attachment.status === undefined) {\n attachment.status = { type: \"requires-action\", reason: \"composer-send\" };\n }\n\n this._attachments = [...this._attachments, attachment as PendingAttachment];\n this.notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n this._attachments = this._attachments.toSpliced(index, 1);\n this.notifySubscribers();\n }\n\n private _subscriptions = new Set<() => void>();\n protected notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../types/AttachmentTypes\";\nimport { AppendMessage, Unsubscribe } from \"../../types\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { ComposerRuntimeCore } from \"../core/ComposerRuntimeCore\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore implements ComposerRuntimeCore {\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public getAttachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this.notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n setRole(role: MessageRole) {\n this._role = role;\n this.notifySubscribers();\n }\n\n setText(value: string) {\n this._text = value;\n this.notifySubscribers();\n }\n\n reset() {\n this._text = \"\";\n this._role = \"user\";\n this._attachments = [];\n this.notifySubscribers();\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? await Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const message: Omit<AppendMessage, \"parentId\"> = {\n role: this.role,\n content: this.text ? [{ type: \"text\", text: this.text }] : [],\n attachments,\n };\n this.reset();\n\n this.handleSend(message);\n }\n public abstract handleSend(message: Omit<AppendMessage, \"parentId\">): void;\n public abstract cancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const attachment = await adapter.add({ file });\n\n this._attachments = [...this._attachments, attachment as PendingAttachment];\n this.notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n this._attachments = this._attachments.toSpliced(index, 1);\n this.notifySubscribers();\n }\n\n private _subscriptions = new Set<() => void>();\n protected notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n}\n"],"mappings":";AAUA,IAAM,uBAAuB,CAAC,MAC5B,EAAE,OAAO,SAAS;AAEb,IAAe,0BAAf,MAAsE;AAAA,EAC3D,YAAY;AAAA,EAIrB,sBAA8B;AACnC,WAAO,KAAK,qBAAqB,GAAG,UAAU;AAAA,EAChD;AAAA,EAEQ,eAAsC,CAAC;AAAA,EAC/C,IAAW,cAAc;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,eAAe,OAA8B;AACrD,SAAK,eAAe;AACpB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAIA,IAAW,UAAU;AACnB,WAAO,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,KAAK,YAAY;AAAA,EAChD;AAAA,EAEQ,QAAQ;AAAA,EAEhB,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,QAAqB;AAAA,EAE7B,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,QAAQ,OAAe;AACrB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,QAAQ;AACN,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,eAAe,CAAC;AACrB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAa,OAAO;AAClB,UAAM,UAAU,KAAK,qBAAqB;AAC1C,UAAM,cACJ,WAAW,KAAK,YAAY,SAAS,IACjC,MAAM,QAAQ;AAAA,MACZ,KAAK,YAAY,IAAI,OAAO,MAAM;AAChC,YAAI,qBAAqB,CAAC,EAAG,QAAO;AACpC,cAAM,SAAS,MAAM,QAAQ,KAAK,CAAC;AACnC,eAAO;AAAA,MACT,CAAC;AAAA,IACH,IACA,CAAC;AAEP,UAAM,UAA2C;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,SAAS,KAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,SAAK,MAAM;AAEX,SAAK,WAAW,OAAO;AAAA,EACzB;AAAA,EAIA,MAAM,cAAc,MAAY;AAC9B,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,aAAa,MAAM,QAAQ,IAAI,EAAE,KAAK,CAAC;AAE7C,SAAK,eAAe,CAAC,GAAG,KAAK,cAAc,UAA+B;AAC1E,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,iBAAiB,cAAsB;AAC3C,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,QAAQ,KAAK,aAAa,UAAU,CAAC,MAAM,EAAE,OAAO,YAAY;AACtE,QAAI,UAAU,GAAI,OAAM,IAAI,MAAM,sBAAsB;AACxD,UAAM,aAAa,KAAK,aAAa,KAAK;AAE1C,UAAM,QAAQ,OAAO,UAAU;AAE/B,SAAK,eAAe,KAAK,aAAa,UAAU,OAAO,CAAC;AACxD,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,iBAAiB,oBAAI,IAAgB;AAAA,EACnC,oBAAoB;AAC5B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AAAA,EAEO,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import type { ModelConfigProvider, AppendMessage, Unsubscribe } from "../../types";
2
2
  import { ExportedMessageRepository, MessageRepository } from "../utils/MessageRepository";
3
3
  import { DefaultThreadComposerRuntimeCore } from "../composer/DefaultThreadComposerRuntimeCore";
4
- import { AddToolResultOptions, ThreadSuggestion, SubmitFeedbackOptions, ThreadRuntimeCore, SpeechState, RuntimeCapabilities, ThreadRuntimeEventType } from "../core/ThreadRuntimeCore";
4
+ import { AddToolResultOptions, ThreadSuggestion, SubmitFeedbackOptions, ThreadRuntimeCore, SpeechState, RuntimeCapabilities, SubmittedFeedback, ThreadRuntimeEventType, ThreadMetadataRuntimeCore } from "../core/ThreadRuntimeCore";
5
5
  import { DefaultEditComposerRuntimeCore } from "../composer/DefaultEditComposerRuntimeCore";
6
6
  import { SpeechSynthesisAdapter } from "../speech/SpeechAdapterTypes";
7
7
  import { FeedbackAdapter } from "../feedback/FeedbackAdapter";
@@ -12,11 +12,11 @@ type BaseThreadAdapters = {
12
12
  attachments?: AttachmentAdapter | undefined;
13
13
  };
14
14
  export declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
15
- private configProvider;
15
+ private readonly _configProvider;
16
+ private readonly _metadata;
16
17
  private _subscriptions;
17
18
  protected readonly repository: MessageRepository;
18
19
  abstract get adapters(): BaseThreadAdapters | undefined;
19
- abstract get threadId(): string;
20
20
  abstract get isDisabled(): boolean;
21
21
  abstract get suggestions(): readonly ThreadSuggestion[];
22
22
  abstract get extras(): unknown;
@@ -25,9 +25,10 @@ export declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore
25
25
  abstract startRun(parentId: string | null): void;
26
26
  abstract addToolResult(options: AddToolResultOptions): void;
27
27
  abstract cancelRun(): void;
28
+ get metadata(): ThreadMetadataRuntimeCore;
28
29
  get messages(): import("../..").ThreadMessage[];
29
30
  readonly composer: DefaultThreadComposerRuntimeCore;
30
- constructor(configProvider: ModelConfigProvider);
31
+ constructor(_configProvider: ModelConfigProvider, _metadata: ThreadMetadataRuntimeCore);
31
32
  getModelConfig(): import("../..").ModelConfig;
32
33
  private _editComposers;
33
34
  getEditComposer(messageId: string): DefaultEditComposerRuntimeCore | undefined;
@@ -42,9 +43,7 @@ export declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore
42
43
  _notifyEventSubscribers(event: ThreadRuntimeEventType): void;
43
44
  subscribe(callback: () => void): Unsubscribe;
44
45
  private _submittedFeedback;
45
- getSubmittedFeedback(messageId: string): Readonly<{
46
- type: "negative" | "positive";
47
- }> | undefined;
46
+ getSubmittedFeedback(messageId: string): SubmittedFeedback | undefined;
48
47
  submitFeedback({ messageId, type }: SubmitFeedbackOptions): void;
49
48
  private _stopSpeaking;
50
49
  speech: SpeechState | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EAEnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,qBAAsB,YAAW,iBAAiB;IAuB1D,OAAO,CAAC,cAAc;IAtBlC,OAAO,CAAC,cAAc,CAAyB;IAE/C,SAAS,CAAC,QAAQ,CAAC,UAAU,oBAA2B;IACxD,aAAoB,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAE/D,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,UAAU,IAAI,OAAO,CAAC;IAC1C,aAAoB,WAAW,IAAI,SAAS,gBAAgB,EAAE,CAAC;IAC/D,aAAoB,MAAM,IAAI,OAAO,CAAC;IAEtC,aAAoB,YAAY,IAAI,mBAAmB,CAAC;aACxC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;aACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;aACvC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;aAClD,SAAS,IAAI,IAAI;IAEjC,IAAW,QAAQ,oCAElB;IAED,SAAgB,QAAQ,mCAA8C;gBAElD,cAAc,EAAE,mBAAmB;IAEhD,cAAc;IAIrB,OAAO,CAAC,cAAc,CAAqD;IACpE,eAAe,CAAC,SAAS,EAAE,MAAM;IAGjC,SAAS,CAAC,SAAS,EAAE,MAAM;IAe3B,cAAc,CAAC,SAAS,EAAE,MAAM;;;;IAIhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,kBAAkB;IAIrB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB;IAOrD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB,CAAyC;IAE5D,oBAAoB,CAAC,SAAS,EAAE,MAAM;;;IAItC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB;IAWhE,OAAO,CAAC,aAAa,CAA0B;IACxC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAEhC,KAAK,CAAC,SAAS,EAAE,MAAM;IA8BvB,YAAY;IAMZ,MAAM;IAIN,MAAM,CAAC,IAAI,EAAE,yBAAyB;IAK7C,OAAO,CAAC,iBAAiB,CAAsC;IAExD,WAAW,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,IAAI;CAiBvE"}
1
+ {"version":3,"file":"BaseThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,qBAAsB,YAAW,iBAAiB;IA0BpE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IA1B5B,OAAO,CAAC,cAAc,CAAyB;IAE/C,SAAS,CAAC,QAAQ,CAAC,UAAU,oBAA2B;IACxD,aAAoB,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAC/D,aAAoB,UAAU,IAAI,OAAO,CAAC;IAC1C,aAAoB,WAAW,IAAI,SAAS,gBAAgB,EAAE,CAAC;IAC/D,aAAoB,MAAM,IAAI,OAAO,CAAC;IAEtC,aAAoB,YAAY,IAAI,mBAAmB,CAAC;aACxC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;aACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;aACvC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;aAClD,SAAS,IAAI,IAAI;IAEjC,IAAW,QAAQ,8BAElB;IAED,IAAW,QAAQ,oCAElB;IAED,SAAgB,QAAQ,mCAA8C;gBAGnD,eAAe,EAAE,mBAAmB,EACpC,SAAS,EAAE,yBAAyB;IAGhD,cAAc;IAIrB,OAAO,CAAC,cAAc,CAAqD;IACpE,eAAe,CAAC,SAAS,EAAE,MAAM;IAGjC,SAAS,CAAC,SAAS,EAAE,MAAM;IAe3B,cAAc,CAAC,SAAS,EAAE,MAAM;;;;IAIhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,kBAAkB;IAIrB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB;IAOrD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB,CAAyC;IAE5D,oBAAoB,CAAC,SAAS,EAAE,MAAM;IAItC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB;IAWhE,OAAO,CAAC,aAAa,CAA0B;IACxC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAEhC,KAAK,CAAC,SAAS,EAAE,MAAM;IA8BvB,YAAY;IAMZ,MAAM;IAIN,MAAM,CAAC,IAAI,EAAE,yBAAyB;IAK7C,OAAO,CAAC,iBAAiB,CAAsC;IAExD,WAAW,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,IAAI;CAiBvE"}
@@ -28,17 +28,21 @@ var import_DefaultThreadComposerRuntimeCore = require("../composer/DefaultThread
28
28
  var import_DefaultEditComposerRuntimeCore = require("../composer/DefaultEditComposerRuntimeCore.cjs");
29
29
  var import_getThreadMessageText = require("../../utils/getThreadMessageText.cjs");
30
30
  var BaseThreadRuntimeCore = class {
31
- constructor(configProvider) {
32
- this.configProvider = configProvider;
31
+ constructor(_configProvider, _metadata) {
32
+ this._configProvider = _configProvider;
33
+ this._metadata = _metadata;
33
34
  }
34
35
  _subscriptions = /* @__PURE__ */ new Set();
35
36
  repository = new import_MessageRepository.MessageRepository();
37
+ get metadata() {
38
+ return this._metadata;
39
+ }
36
40
  get messages() {
37
41
  return this.repository.getMessages();
38
42
  }
39
43
  composer = new import_DefaultThreadComposerRuntimeCore.DefaultThreadComposerRuntimeCore(this);
40
44
  getModelConfig() {
41
- return this.configProvider.getModelConfig();
45
+ return this._configProvider.getModelConfig();
42
46
  }
43
47
  _editComposers = /* @__PURE__ */ new Map();
44
48
  getEditComposer(messageId) {
@@ -132,7 +136,7 @@ var BaseThreadRuntimeCore = class {
132
136
  _eventSubscribers = /* @__PURE__ */ new Map();
133
137
  unstable_on(event, callback) {
134
138
  if (event === "model-config-update") {
135
- return this.configProvider.subscribe?.(callback) ?? (() => {
139
+ return this._configProvider.subscribe?.(callback) ?? (() => {
136
140
  });
137
141
  }
138
142
  const subscribers = this._eventSubscribers.get(event);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"sourcesContent":["import type {\n ModelConfigProvider,\n AppendMessage,\n Unsubscribe,\n} from \"../../types\";\nimport {\n ExportedMessageRepository,\n MessageRepository,\n} from \"../utils/MessageRepository\";\nimport { DefaultThreadComposerRuntimeCore } from \"../composer/DefaultThreadComposerRuntimeCore\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n SubmitFeedbackOptions,\n ThreadRuntimeCore,\n SpeechState,\n RuntimeCapabilities,\n SubmittedFeedback,\n ThreadRuntimeEventType,\n} from \"../core/ThreadRuntimeCore\";\nimport { DefaultEditComposerRuntimeCore } from \"../composer/DefaultEditComposerRuntimeCore\";\nimport { SpeechSynthesisAdapter } from \"../speech/SpeechAdapterTypes\";\nimport { FeedbackAdapter } from \"../feedback/FeedbackAdapter\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { getThreadMessageText } from \"../../utils/getThreadMessageText\";\n\ntype BaseThreadAdapters = {\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n};\n\nexport abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {\n private _subscriptions = new Set<() => void>();\n\n protected readonly repository = new MessageRepository();\n public abstract get adapters(): BaseThreadAdapters | undefined;\n\n public abstract get threadId(): string;\n public abstract get isDisabled(): boolean;\n public abstract get suggestions(): readonly ThreadSuggestion[];\n public abstract get extras(): unknown;\n\n public abstract get capabilities(): RuntimeCapabilities;\n public abstract append(message: AppendMessage): void;\n public abstract startRun(parentId: string | null): void;\n public abstract addToolResult(options: AddToolResultOptions): void;\n public abstract cancelRun(): void;\n\n public get messages() {\n return this.repository.getMessages();\n }\n\n public readonly composer = new DefaultThreadComposerRuntimeCore(this);\n\n constructor(private configProvider: ModelConfigProvider) {}\n\n public getModelConfig() {\n return this.configProvider.getModelConfig();\n }\n\n private _editComposers = new Map<string, DefaultEditComposerRuntimeCore>();\n public getEditComposer(messageId: string) {\n return this._editComposers.get(messageId);\n }\n public beginEdit(messageId: string) {\n if (this._editComposers.has(messageId))\n throw new Error(\"Edit already in progress\");\n\n this._editComposers.set(\n messageId,\n new DefaultEditComposerRuntimeCore(\n this,\n () => this._editComposers.delete(messageId),\n this.repository.getMessage(messageId),\n ),\n );\n this._notifySubscribers();\n }\n\n public getMessageById(messageId: string) {\n return this.repository.getMessage(messageId);\n }\n\n public getBranches(messageId: string): string[] {\n return this.repository.getBranches(messageId);\n }\n\n public switchToBranch(branchId: string): void {\n this.repository.switchToBranch(branchId);\n this._notifySubscribers();\n }\n\n protected _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public _notifyEventSubscribers(event: ThreadRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _submittedFeedback: Record<string, SubmittedFeedback> = {};\n\n public getSubmittedFeedback(messageId: string) {\n return this._submittedFeedback[messageId];\n }\n\n public submitFeedback({ messageId, type }: SubmitFeedbackOptions) {\n const adapter = this.adapters?.feedback;\n if (!adapter) throw new Error(\"Feedback adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n adapter.submit({ message, type });\n\n this._submittedFeedback[messageId] = { type };\n this._notifySubscribers();\n }\n\n private _stopSpeaking: Unsubscribe | undefined;\n public speech: SpeechState | undefined;\n\n public speak(messageId: string) {\n const adapter = this.adapters?.speech;\n if (!adapter) throw new Error(\"Speech adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n\n this._stopSpeaking?.();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n const unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n this._stopSpeaking = undefined;\n this.speech = undefined;\n } else {\n this.speech = { messageId, status: utterance.status };\n }\n this._notifySubscribers();\n });\n\n this.speech = { messageId, status: utterance.status };\n this._notifySubscribers();\n\n this._stopSpeaking = () => {\n utterance.cancel();\n unsub();\n this.speech = undefined;\n this._stopSpeaking = undefined;\n };\n }\n\n public stopSpeaking() {\n if (!this._stopSpeaking) throw new Error(\"No message is being spoken\");\n this._stopSpeaking();\n this._notifySubscribers();\n }\n\n public export() {\n return this.repository.export();\n }\n\n public import(data: ExportedMessageRepository) {\n this.repository.import(data);\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<string, Set<() => void>>();\n\n public unstable_on(event: ThreadRuntimeEventType, callback: () => void) {\n if (event === \"model-config-update\") {\n return this.configProvider.subscribe?.(callback) ?? (() => {});\n }\n\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event)!;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":"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","names":["subscribers"]}
1
+ {"version":3,"sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"sourcesContent":["import type {\n ModelConfigProvider,\n AppendMessage,\n Unsubscribe,\n} from \"../../types\";\nimport {\n ExportedMessageRepository,\n MessageRepository,\n} from \"../utils/MessageRepository\";\nimport { DefaultThreadComposerRuntimeCore } from \"../composer/DefaultThreadComposerRuntimeCore\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n SubmitFeedbackOptions,\n ThreadRuntimeCore,\n SpeechState,\n RuntimeCapabilities,\n SubmittedFeedback,\n ThreadRuntimeEventType,\n ThreadMetadataRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { DefaultEditComposerRuntimeCore } from \"../composer/DefaultEditComposerRuntimeCore\";\nimport { SpeechSynthesisAdapter } from \"../speech/SpeechAdapterTypes\";\nimport { FeedbackAdapter } from \"../feedback/FeedbackAdapter\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { getThreadMessageText } from \"../../utils/getThreadMessageText\";\n\ntype BaseThreadAdapters = {\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n};\n\nexport abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {\n private _subscriptions = new Set<() => void>();\n\n protected readonly repository = new MessageRepository();\n public abstract get adapters(): BaseThreadAdapters | undefined;\n public abstract get isDisabled(): boolean;\n public abstract get suggestions(): readonly ThreadSuggestion[];\n public abstract get extras(): unknown;\n\n public abstract get capabilities(): RuntimeCapabilities;\n public abstract append(message: AppendMessage): void;\n public abstract startRun(parentId: string | null): void;\n public abstract addToolResult(options: AddToolResultOptions): void;\n public abstract cancelRun(): void;\n\n public get metadata() {\n return this._metadata;\n }\n\n public get messages() {\n return this.repository.getMessages();\n }\n\n public readonly composer = new DefaultThreadComposerRuntimeCore(this);\n\n constructor(\n private readonly _configProvider: ModelConfigProvider,\n private readonly _metadata: ThreadMetadataRuntimeCore,\n ) {}\n\n public getModelConfig() {\n return this._configProvider.getModelConfig();\n }\n\n private _editComposers = new Map<string, DefaultEditComposerRuntimeCore>();\n public getEditComposer(messageId: string) {\n return this._editComposers.get(messageId);\n }\n public beginEdit(messageId: string) {\n if (this._editComposers.has(messageId))\n throw new Error(\"Edit already in progress\");\n\n this._editComposers.set(\n messageId,\n new DefaultEditComposerRuntimeCore(\n this,\n () => this._editComposers.delete(messageId),\n this.repository.getMessage(messageId),\n ),\n );\n this._notifySubscribers();\n }\n\n public getMessageById(messageId: string) {\n return this.repository.getMessage(messageId);\n }\n\n public getBranches(messageId: string): string[] {\n return this.repository.getBranches(messageId);\n }\n\n public switchToBranch(branchId: string): void {\n this.repository.switchToBranch(branchId);\n this._notifySubscribers();\n }\n\n protected _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public _notifyEventSubscribers(event: ThreadRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _submittedFeedback: Record<string, SubmittedFeedback> = {};\n\n public getSubmittedFeedback(messageId: string) {\n return this._submittedFeedback[messageId];\n }\n\n public submitFeedback({ messageId, type }: SubmitFeedbackOptions) {\n const adapter = this.adapters?.feedback;\n if (!adapter) throw new Error(\"Feedback adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n adapter.submit({ message, type });\n\n this._submittedFeedback[messageId] = { type };\n this._notifySubscribers();\n }\n\n private _stopSpeaking: Unsubscribe | undefined;\n public speech: SpeechState | undefined;\n\n public speak(messageId: string) {\n const adapter = this.adapters?.speech;\n if (!adapter) throw new Error(\"Speech adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n\n this._stopSpeaking?.();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n const unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n this._stopSpeaking = undefined;\n this.speech = undefined;\n } else {\n this.speech = { messageId, status: utterance.status };\n }\n this._notifySubscribers();\n });\n\n this.speech = { messageId, status: utterance.status };\n this._notifySubscribers();\n\n this._stopSpeaking = () => {\n utterance.cancel();\n unsub();\n this.speech = undefined;\n this._stopSpeaking = undefined;\n };\n }\n\n public stopSpeaking() {\n if (!this._stopSpeaking) throw new Error(\"No message is being spoken\");\n this._stopSpeaking();\n this._notifySubscribers();\n }\n\n public export() {\n return this.repository.export();\n }\n\n public import(data: ExportedMessageRepository) {\n this.repository.import(data);\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<string, Set<() => void>>();\n\n public unstable_on(event: ThreadRuntimeEventType, callback: () => void) {\n if (event === \"model-config-update\") {\n return this._configProvider.subscribe?.(callback) ?? (() => {});\n }\n\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event)!;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":"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","names":["subscribers"]}
@@ -6,17 +6,21 @@ import { DefaultThreadComposerRuntimeCore } from "../composer/DefaultThreadCompo
6
6
  import { DefaultEditComposerRuntimeCore } from "../composer/DefaultEditComposerRuntimeCore.mjs";
7
7
  import { getThreadMessageText } from "../../utils/getThreadMessageText.mjs";
8
8
  var BaseThreadRuntimeCore = class {
9
- constructor(configProvider) {
10
- this.configProvider = configProvider;
9
+ constructor(_configProvider, _metadata) {
10
+ this._configProvider = _configProvider;
11
+ this._metadata = _metadata;
11
12
  }
12
13
  _subscriptions = /* @__PURE__ */ new Set();
13
14
  repository = new MessageRepository();
15
+ get metadata() {
16
+ return this._metadata;
17
+ }
14
18
  get messages() {
15
19
  return this.repository.getMessages();
16
20
  }
17
21
  composer = new DefaultThreadComposerRuntimeCore(this);
18
22
  getModelConfig() {
19
- return this.configProvider.getModelConfig();
23
+ return this._configProvider.getModelConfig();
20
24
  }
21
25
  _editComposers = /* @__PURE__ */ new Map();
22
26
  getEditComposer(messageId) {
@@ -110,7 +114,7 @@ var BaseThreadRuntimeCore = class {
110
114
  _eventSubscribers = /* @__PURE__ */ new Map();
111
115
  unstable_on(event, callback) {
112
116
  if (event === "model-config-update") {
113
- return this.configProvider.subscribe?.(callback) ?? (() => {
117
+ return this._configProvider.subscribe?.(callback) ?? (() => {
114
118
  });
115
119
  }
116
120
  const subscribers = this._eventSubscribers.get(event);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"sourcesContent":["import type {\n ModelConfigProvider,\n AppendMessage,\n Unsubscribe,\n} from \"../../types\";\nimport {\n ExportedMessageRepository,\n MessageRepository,\n} from \"../utils/MessageRepository\";\nimport { DefaultThreadComposerRuntimeCore } from \"../composer/DefaultThreadComposerRuntimeCore\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n SubmitFeedbackOptions,\n ThreadRuntimeCore,\n SpeechState,\n RuntimeCapabilities,\n SubmittedFeedback,\n ThreadRuntimeEventType,\n} from \"../core/ThreadRuntimeCore\";\nimport { DefaultEditComposerRuntimeCore } from \"../composer/DefaultEditComposerRuntimeCore\";\nimport { SpeechSynthesisAdapter } from \"../speech/SpeechAdapterTypes\";\nimport { FeedbackAdapter } from \"../feedback/FeedbackAdapter\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { getThreadMessageText } from \"../../utils/getThreadMessageText\";\n\ntype BaseThreadAdapters = {\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n};\n\nexport abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {\n private _subscriptions = new Set<() => void>();\n\n protected readonly repository = new MessageRepository();\n public abstract get adapters(): BaseThreadAdapters | undefined;\n\n public abstract get threadId(): string;\n public abstract get isDisabled(): boolean;\n public abstract get suggestions(): readonly ThreadSuggestion[];\n public abstract get extras(): unknown;\n\n public abstract get capabilities(): RuntimeCapabilities;\n public abstract append(message: AppendMessage): void;\n public abstract startRun(parentId: string | null): void;\n public abstract addToolResult(options: AddToolResultOptions): void;\n public abstract cancelRun(): void;\n\n public get messages() {\n return this.repository.getMessages();\n }\n\n public readonly composer = new DefaultThreadComposerRuntimeCore(this);\n\n constructor(private configProvider: ModelConfigProvider) {}\n\n public getModelConfig() {\n return this.configProvider.getModelConfig();\n }\n\n private _editComposers = new Map<string, DefaultEditComposerRuntimeCore>();\n public getEditComposer(messageId: string) {\n return this._editComposers.get(messageId);\n }\n public beginEdit(messageId: string) {\n if (this._editComposers.has(messageId))\n throw new Error(\"Edit already in progress\");\n\n this._editComposers.set(\n messageId,\n new DefaultEditComposerRuntimeCore(\n this,\n () => this._editComposers.delete(messageId),\n this.repository.getMessage(messageId),\n ),\n );\n this._notifySubscribers();\n }\n\n public getMessageById(messageId: string) {\n return this.repository.getMessage(messageId);\n }\n\n public getBranches(messageId: string): string[] {\n return this.repository.getBranches(messageId);\n }\n\n public switchToBranch(branchId: string): void {\n this.repository.switchToBranch(branchId);\n this._notifySubscribers();\n }\n\n protected _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public _notifyEventSubscribers(event: ThreadRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _submittedFeedback: Record<string, SubmittedFeedback> = {};\n\n public getSubmittedFeedback(messageId: string) {\n return this._submittedFeedback[messageId];\n }\n\n public submitFeedback({ messageId, type }: SubmitFeedbackOptions) {\n const adapter = this.adapters?.feedback;\n if (!adapter) throw new Error(\"Feedback adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n adapter.submit({ message, type });\n\n this._submittedFeedback[messageId] = { type };\n this._notifySubscribers();\n }\n\n private _stopSpeaking: Unsubscribe | undefined;\n public speech: SpeechState | undefined;\n\n public speak(messageId: string) {\n const adapter = this.adapters?.speech;\n if (!adapter) throw new Error(\"Speech adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n\n this._stopSpeaking?.();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n const unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n this._stopSpeaking = undefined;\n this.speech = undefined;\n } else {\n this.speech = { messageId, status: utterance.status };\n }\n this._notifySubscribers();\n });\n\n this.speech = { messageId, status: utterance.status };\n this._notifySubscribers();\n\n this._stopSpeaking = () => {\n utterance.cancel();\n unsub();\n this.speech = undefined;\n this._stopSpeaking = undefined;\n };\n }\n\n public stopSpeaking() {\n if (!this._stopSpeaking) throw new Error(\"No message is being spoken\");\n this._stopSpeaking();\n this._notifySubscribers();\n }\n\n public export() {\n return this.repository.export();\n }\n\n public import(data: ExportedMessageRepository) {\n this.repository.import(data);\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<string, Set<() => void>>();\n\n public unstable_on(event: ThreadRuntimeEventType, callback: () => void) {\n if (event === \"model-config-update\") {\n return this.configProvider.subscribe?.(callback) ?? (() => {});\n }\n\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event)!;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":"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","names":["subscribers"]}
1
+ {"version":3,"sources":["../../../src/runtimes/core/BaseThreadRuntimeCore.tsx"],"sourcesContent":["import type {\n ModelConfigProvider,\n AppendMessage,\n Unsubscribe,\n} from \"../../types\";\nimport {\n ExportedMessageRepository,\n MessageRepository,\n} from \"../utils/MessageRepository\";\nimport { DefaultThreadComposerRuntimeCore } from \"../composer/DefaultThreadComposerRuntimeCore\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n SubmitFeedbackOptions,\n ThreadRuntimeCore,\n SpeechState,\n RuntimeCapabilities,\n SubmittedFeedback,\n ThreadRuntimeEventType,\n ThreadMetadataRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { DefaultEditComposerRuntimeCore } from \"../composer/DefaultEditComposerRuntimeCore\";\nimport { SpeechSynthesisAdapter } from \"../speech/SpeechAdapterTypes\";\nimport { FeedbackAdapter } from \"../feedback/FeedbackAdapter\";\nimport { AttachmentAdapter } from \"../attachment\";\nimport { getThreadMessageText } from \"../../utils/getThreadMessageText\";\n\ntype BaseThreadAdapters = {\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n};\n\nexport abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {\n private _subscriptions = new Set<() => void>();\n\n protected readonly repository = new MessageRepository();\n public abstract get adapters(): BaseThreadAdapters | undefined;\n public abstract get isDisabled(): boolean;\n public abstract get suggestions(): readonly ThreadSuggestion[];\n public abstract get extras(): unknown;\n\n public abstract get capabilities(): RuntimeCapabilities;\n public abstract append(message: AppendMessage): void;\n public abstract startRun(parentId: string | null): void;\n public abstract addToolResult(options: AddToolResultOptions): void;\n public abstract cancelRun(): void;\n\n public get metadata() {\n return this._metadata;\n }\n\n public get messages() {\n return this.repository.getMessages();\n }\n\n public readonly composer = new DefaultThreadComposerRuntimeCore(this);\n\n constructor(\n private readonly _configProvider: ModelConfigProvider,\n private readonly _metadata: ThreadMetadataRuntimeCore,\n ) {}\n\n public getModelConfig() {\n return this._configProvider.getModelConfig();\n }\n\n private _editComposers = new Map<string, DefaultEditComposerRuntimeCore>();\n public getEditComposer(messageId: string) {\n return this._editComposers.get(messageId);\n }\n public beginEdit(messageId: string) {\n if (this._editComposers.has(messageId))\n throw new Error(\"Edit already in progress\");\n\n this._editComposers.set(\n messageId,\n new DefaultEditComposerRuntimeCore(\n this,\n () => this._editComposers.delete(messageId),\n this.repository.getMessage(messageId),\n ),\n );\n this._notifySubscribers();\n }\n\n public getMessageById(messageId: string) {\n return this.repository.getMessage(messageId);\n }\n\n public getBranches(messageId: string): string[] {\n return this.repository.getBranches(messageId);\n }\n\n public switchToBranch(branchId: string): void {\n this.repository.switchToBranch(branchId);\n this._notifySubscribers();\n }\n\n protected _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n public _notifyEventSubscribers(event: ThreadRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _submittedFeedback: Record<string, SubmittedFeedback> = {};\n\n public getSubmittedFeedback(messageId: string) {\n return this._submittedFeedback[messageId];\n }\n\n public submitFeedback({ messageId, type }: SubmitFeedbackOptions) {\n const adapter = this.adapters?.feedback;\n if (!adapter) throw new Error(\"Feedback adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n adapter.submit({ message, type });\n\n this._submittedFeedback[messageId] = { type };\n this._notifySubscribers();\n }\n\n private _stopSpeaking: Unsubscribe | undefined;\n public speech: SpeechState | undefined;\n\n public speak(messageId: string) {\n const adapter = this.adapters?.speech;\n if (!adapter) throw new Error(\"Speech adapter not configured\");\n\n const { message } = this.repository.getMessage(messageId);\n\n this._stopSpeaking?.();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n const unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n this._stopSpeaking = undefined;\n this.speech = undefined;\n } else {\n this.speech = { messageId, status: utterance.status };\n }\n this._notifySubscribers();\n });\n\n this.speech = { messageId, status: utterance.status };\n this._notifySubscribers();\n\n this._stopSpeaking = () => {\n utterance.cancel();\n unsub();\n this.speech = undefined;\n this._stopSpeaking = undefined;\n };\n }\n\n public stopSpeaking() {\n if (!this._stopSpeaking) throw new Error(\"No message is being spoken\");\n this._stopSpeaking();\n this._notifySubscribers();\n }\n\n public export() {\n return this.repository.export();\n }\n\n public import(data: ExportedMessageRepository) {\n this.repository.import(data);\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<string, Set<() => void>>();\n\n public unstable_on(event: ThreadRuntimeEventType, callback: () => void) {\n if (event === \"model-config-update\") {\n return this._configProvider.subscribe?.(callback) ?? (() => {});\n }\n\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event)!;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":"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","names":["subscribers"]}
@@ -12,9 +12,6 @@ export type ComposerRuntimeCore = Readonly<{
12
12
  setText: (value: string) => void;
13
13
  role: MessageRole;
14
14
  setRole: (role: MessageRole) => void;
15
- /**
16
- * @deprecated This method will be removed in 0.6.0. Submit feedback if you need this functionality.
17
- */
18
15
  reset: () => void;
19
16
  send: () => void;
20
17
  cancel: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAEnC,mBAAmB,IAAI,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IAEjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAErC;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GACzD,QAAQ,CAAC;IACP,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"ComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAEnC,mBAAmB,IAAI,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IAEjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAErC,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GACzD,QAAQ,CAAC;IACP,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/core/ComposerRuntimeCore.tsx"],"sourcesContent":["import type { Attachment, PendingAttachment, Unsubscribe } from \"../../types\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nexport type ComposerRuntimeCore = Readonly<{\n attachments: readonly Attachment[];\n\n getAttachmentAccept(): string;\n addAttachment: (file: File) => Promise<void>;\n removeAttachment: (attachmentId: string) => Promise<void>;\n\n isEditing: boolean;\n\n canCancel: boolean;\n isEmpty: boolean;\n\n text: string;\n setText: (value: string) => void;\n\n role: MessageRole;\n setRole: (role: MessageRole) => void;\n\n /**\n * @deprecated This method will be removed in 0.6.0. Submit feedback if you need this functionality.\n */\n reset: () => void;\n\n send: () => void;\n cancel: () => void;\n\n subscribe: (callback: () => void) => Unsubscribe;\n}>;\n\nexport type ThreadComposerRuntimeCore = ComposerRuntimeCore &\n Readonly<{\n attachments: readonly PendingAttachment[];\n }>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/core/ComposerRuntimeCore.tsx"],"sourcesContent":["import type { Attachment, PendingAttachment, Unsubscribe } from \"../../types\";\nimport { MessageRole } from \"../../types/AssistantTypes\";\n\nexport type ComposerRuntimeCore = Readonly<{\n attachments: readonly Attachment[];\n\n getAttachmentAccept(): string;\n addAttachment: (file: File) => Promise<void>;\n removeAttachment: (attachmentId: string) => Promise<void>;\n\n isEditing: boolean;\n\n canCancel: boolean;\n isEmpty: boolean;\n\n text: string;\n setText: (value: string) => void;\n\n role: MessageRole;\n setRole: (role: MessageRole) => void;\n\n reset: () => void;\n\n send: () => void;\n cancel: () => void;\n\n subscribe: (callback: () => void) => Unsubscribe;\n}>;\n\nexport type ThreadComposerRuntimeCore = ComposerRuntimeCore &\n Readonly<{\n attachments: readonly PendingAttachment[];\n }>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,16 +1,13 @@
1
1
  import { Unsubscribe } from "../../types";
2
- import { ThreadRuntimeCore } from "./ThreadRuntimeCore";
3
- export type ThreadListMetadata = Readonly<{
4
- threadId: string;
5
- title?: string;
6
- }>;
2
+ import { ThreadMetadata, ThreadRuntimeCore } from "./ThreadRuntimeCore";
7
3
  export type ThreadListRuntimeCore = {
8
4
  mainThread: ThreadRuntimeCore;
9
- threads: readonly ThreadListMetadata[];
10
- archivedThreads: readonly ThreadListMetadata[];
11
- getThreadMetadataById(threadId: string): ThreadListMetadata | undefined;
12
- switchToThread(threadId: string): void;
13
- switchToNewThread(): void;
5
+ newThread: string | undefined;
6
+ threads: readonly string[];
7
+ archivedThreads: readonly string[];
8
+ getThreadMetadataById(threadId: string): ThreadMetadata | undefined;
9
+ switchToThread(threadId: string): Promise<void>;
10
+ switchToNewThread(): Promise<void>;
14
11
  rename(threadId: string, newTitle: string): Promise<void>;
15
12
  archive(threadId: string): Promise<void>;
16
13
  unarchive(threadId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ThreadListRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,iBAAiB,CAAC;IAE9B,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAE/C,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;IAExE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iBAAiB,IAAI,IAAI,CAAC;IAK1B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C,CAAC"}
1
+ {"version":3,"file":"ThreadListRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ThreadListRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,iBAAiB,CAAC;IAE9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAEpE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAKnC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/core/ThreadListRuntimeCore.tsx"],"sourcesContent":["import { Unsubscribe } from \"../../types\";\nimport { ThreadRuntimeCore } from \"./ThreadRuntimeCore\";\n\nexport type ThreadListMetadata = Readonly<{\n threadId: string;\n title?: string;\n}>;\n\nexport type ThreadListRuntimeCore = {\n mainThread: ThreadRuntimeCore;\n\n threads: readonly ThreadListMetadata[];\n archivedThreads: readonly ThreadListMetadata[];\n\n getThreadMetadataById(threadId: string): ThreadListMetadata | undefined;\n\n switchToThread(threadId: string): void;\n switchToNewThread(): void;\n\n // getLoadThreadsPromise(): Promise<void>;\n // getLoadArchivedThreadsPromise(): Promise<void>;\n // create(): Promise<ThreadMetadata>;\n rename(threadId: string, newTitle: string): Promise<void>;\n archive(threadId: string): Promise<void>;\n unarchive(threadId: string): Promise<void>;\n delete(threadId: string): Promise<void>;\n\n subscribe(callback: () => void): Unsubscribe;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/core/ThreadListRuntimeCore.tsx"],"sourcesContent":["import { Unsubscribe } from \"../../types\";\nimport { ThreadMetadata, ThreadRuntimeCore } from \"./ThreadRuntimeCore\";\n\nexport type ThreadListRuntimeCore = {\n mainThread: ThreadRuntimeCore;\n\n newThread: string | undefined;\n threads: readonly string[];\n archivedThreads: readonly string[];\n\n getThreadMetadataById(threadId: string): ThreadMetadata | undefined;\n\n switchToThread(threadId: string): Promise<void>;\n switchToNewThread(): Promise<void>;\n\n // getLoadThreadsPromise(): Promise<void>;\n // getLoadArchivedThreadsPromise(): Promise<void>;\n // create(): Promise<ThreadMetadata>;\n rename(threadId: string, newTitle: string): Promise<void>;\n archive(threadId: string): Promise<void>;\n unarchive(threadId: string): Promise<void>;\n delete(threadId: string): Promise<void>;\n\n subscribe(callback: () => void): Unsubscribe;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -3,16 +3,16 @@ import type { Unsubscribe } from "../../types/Unsubscribe";
3
3
  import { SpeechSynthesisAdapter } from "../speech/SpeechAdapterTypes";
4
4
  import { ExportedMessageRepository } from "../utils/MessageRepository";
5
5
  import { ComposerRuntimeCore, ThreadComposerRuntimeCore } from "./ComposerRuntimeCore";
6
- export type RuntimeCapabilities = Readonly<{
7
- switchToBranch: boolean;
8
- edit: boolean;
9
- reload: boolean;
10
- cancel: boolean;
11
- unstable_copy: boolean;
12
- speech: boolean;
13
- attachments: boolean;
14
- feedback: boolean;
15
- }>;
6
+ export type RuntimeCapabilities = {
7
+ readonly switchToBranch: boolean;
8
+ readonly edit: boolean;
9
+ readonly reload: boolean;
10
+ readonly cancel: boolean;
11
+ readonly unstable_copy: boolean;
12
+ readonly speech: boolean;
13
+ readonly attachments: boolean;
14
+ readonly feedback: boolean;
15
+ };
16
16
  export type AddToolResultOptions = {
17
17
  messageId: string;
18
18
  toolName: string;
@@ -26,15 +26,29 @@ export type SubmitFeedbackOptions = {
26
26
  export type ThreadSuggestion = {
27
27
  prompt: string;
28
28
  };
29
- export type SpeechState = Readonly<{
30
- messageId: string;
31
- status: SpeechSynthesisAdapter.Status;
32
- }>;
33
- export type SubmittedFeedback = Readonly<{
34
- type: "negative" | "positive";
29
+ export type SpeechState = {
30
+ readonly messageId: string;
31
+ readonly status: SpeechSynthesisAdapter.Status;
32
+ };
33
+ export type SubmittedFeedback = {
34
+ readonly type: "negative" | "positive";
35
+ };
36
+ export type ThreadMetadata = Readonly<{
37
+ readonly threadId: string;
38
+ readonly state: "archived" | "regular" | "new" | "deleted";
39
+ readonly title?: string | undefined;
35
40
  }>;
36
41
  export type ThreadRuntimeEventType = "switched-to" | "switched-away" | "run-start" | "model-config-update";
42
+ export type ThreadMetadataRuntimeCore = ThreadMetadata & {
43
+ create(title?: string): Promise<void>;
44
+ rename(newTitle: string): Promise<void>;
45
+ archive(): Promise<void>;
46
+ unarchive(): Promise<void>;
47
+ delete(): Promise<void>;
48
+ subscribe(callback: () => void): Unsubscribe;
49
+ };
37
50
  export type ThreadRuntimeCore = Readonly<{
51
+ metadata: ThreadMetadataRuntimeCore;
38
52
  getMessageById: (messageId: string) => {
39
53
  parentId: string | null;
40
54
  message: ThreadMessage;
@@ -55,7 +69,6 @@ export type ThreadRuntimeCore = Readonly<{
55
69
  beginEdit: (messageId: string) => void;
56
70
  speech: SpeechState | undefined;
57
71
  capabilities: Readonly<RuntimeCapabilities>;
58
- threadId: string;
59
72
  isDisabled: boolean;
60
73
  messages: readonly ThreadMessage[];
61
74
  suggestions: readonly ThreadSuggestion[];
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ThreadRuntimeCore.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/core/ThreadRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAC9B,aAAa,GACb,eAAe,GACf,WAAW,GACX,qBAAqB,CAAC;AAE1B,MAAM,MAAM,yBAAyB,GAAG,cAAc,GAAG;IACvD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,yBAAyB,CAAC;IAEpC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAC9B;QACE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,OAAO,EAAE,aAAa,CAAC;KACxB,GACD,SAAS,CAAC;IAEd,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;IACtD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEvD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,IAAI,CAAC;IAEzB,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAC3E,cAAc,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAE1D,cAAc,EAAE,MAAM,WAAW,CAAC;IAElC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,mBAAmB,GAAG,SAAS,CAAC;IACxE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAEhC,YAAY,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAEhB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;IAEjD,MAAM,CAAC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACpD,MAAM,IAAI,yBAAyB,CAAC;IAEpC,WAAW,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC/E,CAAC,CAAC"}