@assistant-ui/react 0.5.100 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
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":"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"}