@assistant-ui/react 0.10.22 → 0.10.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts +1 -1
  2. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  3. package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  4. package/dist/cloud/auiV0.d.ts +1 -1
  5. package/dist/cloud/auiV0.d.ts.map +1 -1
  6. package/dist/cloud/auiV0.js.map +1 -1
  7. package/dist/cloud/index.d.ts +1 -1
  8. package/dist/cloud/index.d.ts.map +1 -1
  9. package/dist/cloud/index.js +1 -1
  10. package/dist/cloud/index.js.map +1 -1
  11. package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
  12. package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  13. package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
  14. package/dist/context/react/AssistantContext.d.ts +23 -0
  15. package/dist/context/react/AssistantContext.d.ts.map +1 -1
  16. package/dist/context/react/AssistantContext.js.map +1 -1
  17. package/dist/context/react/ComposerContext.d.ts +64 -0
  18. package/dist/context/react/ComposerContext.d.ts.map +1 -1
  19. package/dist/context/react/ComposerContext.js.map +1 -1
  20. package/dist/context/react/MessageContext.d.ts +56 -0
  21. package/dist/context/react/MessageContext.d.ts.map +1 -1
  22. package/dist/context/react/MessageContext.js.map +1 -1
  23. package/dist/context/react/ThreadContext.d.ts +42 -0
  24. package/dist/context/react/ThreadContext.d.ts.map +1 -1
  25. package/dist/context/react/ThreadContext.js.map +1 -1
  26. package/dist/primitives/actionBar/ActionBarCopy.d.ts +42 -0
  27. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  28. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  29. package/dist/primitives/actionBar/ActionBarEdit.d.ts +38 -0
  30. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  31. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  32. package/dist/primitives/actionBar/ActionBarReload.d.ts +39 -0
  33. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  34. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  35. package/dist/primitives/actionBar/ActionBarRoot.d.ts +56 -0
  36. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  37. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  38. package/dist/primitives/attachment/AttachmentRoot.d.ts +18 -0
  39. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  40. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  41. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +17 -0
  42. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  43. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  44. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +17 -0
  45. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  46. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  47. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +38 -0
  48. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  49. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  50. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +27 -0
  51. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  52. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  53. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  54. package/dist/primitives/composer/ComposerAttachments.js +11 -8
  55. package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
  56. package/dist/primitives/composer/ComposerCancel.d.ts +17 -0
  57. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  58. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  59. package/dist/primitives/composer/ComposerInput.d.ts +72 -0
  60. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  61. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  62. package/dist/primitives/composer/ComposerRoot.d.ts +19 -0
  63. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  64. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  65. package/dist/primitives/composer/ComposerSend.d.ts +18 -0
  66. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  67. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  68. package/dist/primitives/contentPart/ContentPartImage.d.ts +19 -0
  69. package/dist/primitives/contentPart/ContentPartImage.d.ts.map +1 -1
  70. package/dist/primitives/contentPart/ContentPartImage.js.map +1 -1
  71. package/dist/primitives/contentPart/ContentPartText.d.ts +34 -0
  72. package/dist/primitives/contentPart/ContentPartText.d.ts.map +1 -1
  73. package/dist/primitives/contentPart/ContentPartText.js.map +1 -1
  74. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  75. package/dist/primitives/message/MessageAttachments.js +11 -8
  76. package/dist/primitives/message/MessageAttachments.js.map +1 -1
  77. package/dist/primitives/message/MessageContent.d.ts +41 -0
  78. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  79. package/dist/primitives/message/MessageContent.js +14 -11
  80. package/dist/primitives/message/MessageContent.js.map +1 -1
  81. package/dist/primitives/message/MessageRoot.d.ts +22 -0
  82. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  83. package/dist/primitives/message/MessageRoot.js.map +1 -1
  84. package/dist/primitives/thread/ThreadMessages.d.ts +44 -0
  85. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  86. package/dist/primitives/thread/ThreadMessages.js +5 -2
  87. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  88. package/dist/primitives/thread/ThreadRoot.d.ts +19 -0
  89. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  90. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  91. package/dist/primitives/thread/ThreadViewport.d.ts +24 -0
  92. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  93. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  94. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  95. package/dist/primitives/threadList/ThreadListItems.js +12 -9
  96. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  97. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts +54 -0
  98. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts.map +1 -1
  99. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts +33 -0
  100. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts.map +1 -1
  101. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts +47 -0
  102. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts.map +1 -1
  103. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +2 -2
  104. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  105. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  106. package/dist/runtimes/local/index.d.ts +1 -1
  107. package/dist/runtimes/local/index.d.ts.map +1 -1
  108. package/dist/runtimes/local/index.js +3 -2
  109. package/dist/runtimes/local/index.js.map +1 -1
  110. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts +1 -1
  111. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
  112. package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
  113. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
  114. package/dist/tests/setup.js +8 -8
  115. package/dist/tests/setup.js.map +1 -1
  116. package/package.json +8 -7
  117. package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +1 -1
  118. package/src/cloud/auiV0.ts +1 -1
  119. package/src/cloud/index.ts +1 -1
  120. package/src/cloud/useCloudThreadListRuntime.tsx +1 -1
  121. package/src/context/react/AssistantContext.ts +23 -0
  122. package/src/context/react/ComposerContext.ts +64 -0
  123. package/src/context/react/MessageContext.ts +56 -0
  124. package/src/context/react/ThreadContext.ts +42 -0
  125. package/src/primitives/actionBar/ActionBarCopy.tsx +42 -0
  126. package/src/primitives/actionBar/ActionBarEdit.tsx +38 -0
  127. package/src/primitives/actionBar/ActionBarReload.tsx +39 -0
  128. package/src/primitives/actionBar/ActionBarRoot.tsx +38 -0
  129. package/src/primitives/attachment/AttachmentRoot.tsx +18 -0
  130. package/src/primitives/branchPicker/BranchPickerCount.tsx +17 -0
  131. package/src/primitives/branchPicker/BranchPickerNext.tsx +17 -0
  132. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +38 -0
  133. package/src/primitives/branchPicker/BranchPickerRoot.tsx +22 -0
  134. package/src/primitives/composer/ComposerAttachments.tsx +11 -7
  135. package/src/primitives/composer/ComposerCancel.tsx +17 -0
  136. package/src/primitives/composer/ComposerInput.tsx +44 -0
  137. package/src/primitives/composer/ComposerRoot.tsx +19 -0
  138. package/src/primitives/composer/ComposerSend.tsx +18 -0
  139. package/src/primitives/contentPart/ContentPartImage.tsx +19 -0
  140. package/src/primitives/contentPart/ContentPartText.tsx +25 -0
  141. package/src/primitives/message/MessageAttachments.tsx +11 -7
  142. package/src/primitives/message/MessageContent.tsx +54 -18
  143. package/src/primitives/message/MessageRoot.tsx +22 -0
  144. package/src/primitives/thread/ThreadMessages.tsx +52 -4
  145. package/src/primitives/thread/ThreadRoot.tsx +19 -0
  146. package/src/primitives/thread/ThreadViewport.tsx +19 -0
  147. package/src/primitives/threadList/ThreadListItems.tsx +12 -8
  148. package/src/runtimes/adapters/attachment/AttachmentAdapter.ts +56 -0
  149. package/src/runtimes/adapters/feedback/FeedbackAdapter.ts +33 -0
  150. package/src/runtimes/adapters/speech/SpeechAdapterTypes.ts +47 -0
  151. package/src/runtimes/local/LocalRuntimeOptions.tsx +1 -1
  152. package/src/runtimes/local/index.ts +1 -1
  153. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
  154. package/dist/cloud/AssistantCloud.d.ts +0 -15
  155. package/dist/cloud/AssistantCloud.d.ts.map +0 -1
  156. package/dist/cloud/AssistantCloud.js +0 -25
  157. package/dist/cloud/AssistantCloud.js.map +0 -1
  158. package/dist/cloud/AssistantCloudAPI.d.ts +0 -28
  159. package/dist/cloud/AssistantCloudAPI.d.ts.map +0 -1
  160. package/dist/cloud/AssistantCloudAPI.js +0 -87
  161. package/dist/cloud/AssistantCloudAPI.js.map +0 -1
  162. package/dist/cloud/AssistantCloudAuthStrategy.d.ts +0 -30
  163. package/dist/cloud/AssistantCloudAuthStrategy.d.ts.map +0 -1
  164. package/dist/cloud/AssistantCloudAuthStrategy.js +0 -139
  165. package/dist/cloud/AssistantCloudAuthStrategy.js.map +0 -1
  166. package/dist/cloud/AssistantCloudAuthTokens.d.ts +0 -11
  167. package/dist/cloud/AssistantCloudAuthTokens.d.ts.map +0 -1
  168. package/dist/cloud/AssistantCloudAuthTokens.js +0 -13
  169. package/dist/cloud/AssistantCloudAuthTokens.js.map +0 -1
  170. package/dist/cloud/AssistantCloudFiles.d.ts +0 -27
  171. package/dist/cloud/AssistantCloudFiles.d.ts.map +0 -1
  172. package/dist/cloud/AssistantCloudFiles.js +0 -22
  173. package/dist/cloud/AssistantCloudFiles.js.map +0 -1
  174. package/dist/cloud/AssistantCloudRuns.d.ts +0 -26
  175. package/dist/cloud/AssistantCloudRuns.d.ts.map +0 -1
  176. package/dist/cloud/AssistantCloudRuns.js +0 -39
  177. package/dist/cloud/AssistantCloudRuns.js.map +0 -1
  178. package/dist/cloud/AssistantCloudThreadMessages.d.ts +0 -30
  179. package/dist/cloud/AssistantCloudThreadMessages.d.ts.map +0 -1
  180. package/dist/cloud/AssistantCloudThreadMessages.js +0 -21
  181. package/dist/cloud/AssistantCloudThreadMessages.js.map +0 -1
  182. package/dist/cloud/AssistantCloudThreads.d.ts +0 -48
  183. package/dist/cloud/AssistantCloudThreads.d.ts.map +0 -1
  184. package/dist/cloud/AssistantCloudThreads.js +0 -30
  185. package/dist/cloud/AssistantCloudThreads.js.map +0 -1
  186. package/src/cloud/AssistantCloud.tsx +0 -22
  187. package/src/cloud/AssistantCloudAPI.tsx +0 -121
  188. package/src/cloud/AssistantCloudAuthStrategy.tsx +0 -193
  189. package/src/cloud/AssistantCloudAuthTokens.tsx +0 -13
  190. package/src/cloud/AssistantCloudFiles.tsx +0 -45
  191. package/src/cloud/AssistantCloudRuns.tsx +0 -45
  192. package/src/cloud/AssistantCloudThreadMessages.tsx +0 -48
  193. package/src/cloud/AssistantCloudThreads.tsx +0 -79
  194. package/src/tests/AssistantCloudFiles.test.ts +0 -521
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/message/MessageRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n ComponentPropsWithoutRef,\n useCallback,\n} from \"react\";\nimport { useMessageUtilsStore } from \"../../context/react/MessageContext\";\nimport { useManagedRef } from \"../../utils/hooks/useManagedRef\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n\nconst useIsHoveringRef = () => {\n const messageUtilsStore = useMessageUtilsStore();\n const callbackRef = useCallback(\n (el: HTMLElement) => {\n const setIsHovering = messageUtilsStore.getState().setIsHovering;\n\n const handleMouseEnter = () => {\n setIsHovering(true);\n };\n const handleMouseLeave = () => {\n setIsHovering(false);\n };\n\n el.addEventListener(\"mouseenter\", handleMouseEnter);\n el.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", handleMouseEnter);\n el.removeEventListener(\"mouseleave\", handleMouseLeave);\n setIsHovering(false);\n };\n },\n [messageUtilsStore],\n );\n\n return useManagedRef(callbackRef);\n};\n\nexport namespace MessagePrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\nexport const MessagePrimitiveRoot = forwardRef<\n MessagePrimitiveRoot.Element,\n MessagePrimitiveRoot.Props\n>((props, forwardRef) => {\n const isHoveringRef = useIsHoveringRef();\n const ref = useComposedRefs<HTMLDivElement>(forwardRef, isHoveringRef);\n\n return <Primitive.div {...props} ref={ref} />;\n});\n\nMessagePrimitiveRoot.displayName = \"MessagePrimitive.Root\";\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B;AAAA,EAEE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AA0CvB;AAxCT,IAAM,mBAAmB,MAAM;AAC7B,QAAM,oBAAoB,qBAAqB;AAC/C,QAAM,cAAc;AAAA,IAClB,CAAC,OAAoB;AACnB,YAAM,gBAAgB,kBAAkB,SAAS,EAAE;AAEnD,YAAM,mBAAmB,MAAM;AAC7B,sBAAc,IAAI;AAAA,MACpB;AACA,YAAM,mBAAmB,MAAM;AAC7B,sBAAc,KAAK;AAAA,MACrB;AAEA,SAAG,iBAAiB,cAAc,gBAAgB;AAClD,SAAG,iBAAiB,cAAc,gBAAgB;AAElD,aAAO,MAAM;AACX,WAAG,oBAAoB,cAAc,gBAAgB;AACrD,WAAG,oBAAoB,cAAc,gBAAgB;AACrD,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,SAAO,cAAc,WAAW;AAClC;AAOO,IAAM,uBAAuB,WAGlC,CAAC,OAAOA,gBAAe;AACvB,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,MAAM,gBAAgCA,aAAY,aAAa;AAErE,SAAO,oBAAC,UAAU,KAAV,EAAe,GAAG,OAAO,KAAU;AAC7C,CAAC;AAED,qBAAqB,cAAc;","names":["forwardRef"]}
1
+ {"version":3,"sources":["../../../src/primitives/message/MessageRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n ComponentPropsWithoutRef,\n useCallback,\n} from \"react\";\nimport { useMessageUtilsStore } from \"../../context/react/MessageContext\";\nimport { useManagedRef } from \"../../utils/hooks/useManagedRef\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n\nconst useIsHoveringRef = () => {\n const messageUtilsStore = useMessageUtilsStore();\n const callbackRef = useCallback(\n (el: HTMLElement) => {\n const setIsHovering = messageUtilsStore.getState().setIsHovering;\n\n const handleMouseEnter = () => {\n setIsHovering(true);\n };\n const handleMouseLeave = () => {\n setIsHovering(false);\n };\n\n el.addEventListener(\"mouseenter\", handleMouseEnter);\n el.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", handleMouseEnter);\n el.removeEventListener(\"mouseleave\", handleMouseLeave);\n setIsHovering(false);\n };\n },\n [messageUtilsStore],\n );\n\n return useManagedRef(callbackRef);\n};\n\nexport namespace MessagePrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n /**\n * Props for the MessagePrimitive.Root component.\n * Accepts all standard div element props.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\n/**\n * The root container component for a message.\n *\n * This component provides the foundational wrapper for message content and handles\n * hover state management for the message. It automatically tracks when the user\n * is hovering over the message, which can be used by child components like action bars.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.Root>\n * <MessagePrimitive.Content />\n * <ActionBarPrimitive.Root>\n * <ActionBarPrimitive.Copy />\n * <ActionBarPrimitive.Edit />\n * </ActionBarPrimitive.Root>\n * </MessagePrimitive.Root>\n * ```\n */\nexport const MessagePrimitiveRoot = forwardRef<\n MessagePrimitiveRoot.Element,\n MessagePrimitiveRoot.Props\n>((props, forwardRef) => {\n const isHoveringRef = useIsHoveringRef();\n const ref = useComposedRefs<HTMLDivElement>(forwardRef, isHoveringRef);\n\n return <Primitive.div {...props} ref={ref} />;\n});\n\nMessagePrimitiveRoot.displayName = \"MessagePrimitive.Root\";\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B;AAAA,EAEE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAgEvB;AA9DT,IAAM,mBAAmB,MAAM;AAC7B,QAAM,oBAAoB,qBAAqB;AAC/C,QAAM,cAAc;AAAA,IAClB,CAAC,OAAoB;AACnB,YAAM,gBAAgB,kBAAkB,SAAS,EAAE;AAEnD,YAAM,mBAAmB,MAAM;AAC7B,sBAAc,IAAI;AAAA,MACpB;AACA,YAAM,mBAAmB,MAAM;AAC7B,sBAAc,KAAK;AAAA,MACrB;AAEA,SAAG,iBAAiB,cAAc,gBAAgB;AAClD,SAAG,iBAAiB,cAAc,gBAAgB;AAElD,aAAO,MAAM;AACX,WAAG,oBAAoB,cAAc,gBAAgB;AACrD,WAAG,oBAAoB,cAAc,gBAAgB;AACrD,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,SAAO,cAAc,WAAW;AAClC;AA6BO,IAAM,uBAAuB,WAGlC,CAAC,OAAOA,gBAAe;AACvB,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,MAAM,gBAAgCA,aAAY,aAAa;AAErE,SAAO,oBAAC,UAAU,KAAV,EAAe,GAAG,OAAO,KAAU;AAC7C,CAAC;AAED,qBAAqB,cAAc;","names":["forwardRef"]}
@@ -1,27 +1,71 @@
1
1
  import { type ComponentType, type FC } from "react";
2
2
  export declare namespace ThreadPrimitiveMessages {
3
3
  type Props = {
4
+ /**
5
+ * Component configuration for rendering different types of messages and composers.
6
+ *
7
+ * You can provide either:
8
+ * 1. A single `Message` component that handles all message types
9
+ * 2. Specific components for `UserMessage` and `AssistantMessage` (with optional `SystemMessage`)
10
+ *
11
+ * Optional edit composer components can be provided to customize the editing experience
12
+ * for different message types when users edit their messages.
13
+ */
4
14
  components: {
15
+ /** Component used to render all message types */
5
16
  Message: ComponentType;
17
+ /** Component used when editing any message type */
6
18
  EditComposer?: ComponentType | undefined;
19
+ /** Component used when editing user messages specifically */
7
20
  UserEditComposer?: ComponentType | undefined;
21
+ /** Component used when editing assistant messages specifically */
8
22
  AssistantEditComposer?: ComponentType | undefined;
23
+ /** Component used when editing system messages specifically */
9
24
  SystemEditComposer?: ComponentType | undefined;
25
+ /** Component used to render user messages specifically */
10
26
  UserMessage?: ComponentType | undefined;
27
+ /** Component used to render assistant messages specifically */
11
28
  AssistantMessage?: ComponentType | undefined;
29
+ /** Component used to render system messages specifically */
12
30
  SystemMessage?: ComponentType | undefined;
13
31
  } | {
32
+ /** Component used to render all message types (fallback) */
14
33
  Message?: ComponentType | undefined;
34
+ /** Component used when editing any message type */
15
35
  EditComposer?: ComponentType | undefined;
36
+ /** Component used when editing user messages specifically */
16
37
  UserEditComposer?: ComponentType | undefined;
38
+ /** Component used when editing assistant messages specifically */
17
39
  AssistantEditComposer?: ComponentType | undefined;
40
+ /** Component used when editing system messages specifically */
18
41
  SystemEditComposer?: ComponentType | undefined;
42
+ /** Component used to render user messages */
19
43
  UserMessage: ComponentType;
44
+ /** Component used to render assistant messages */
20
45
  AssistantMessage: ComponentType;
46
+ /** Component used to render system messages */
21
47
  SystemMessage?: ComponentType | undefined;
22
48
  };
23
49
  };
24
50
  }
51
+ /**
52
+ * Renders all messages in the current thread using the provided component configuration.
53
+ *
54
+ * This component automatically renders all messages in the thread, providing the appropriate
55
+ * message context for each message. It handles different message types (user, assistant, system)
56
+ * and supports editing mode through the provided edit composer components.
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * <ThreadPrimitive.Messages
61
+ * components={{
62
+ * UserMessage: MyUserMessage,
63
+ * AssistantMessage: MyAssistantMessage,
64
+ * EditComposer: MyEditComposer
65
+ * }}
66
+ * />
67
+ * ```
68
+ */
25
69
  export declare const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props>;
26
70
  export declare const ThreadPrimitiveMessages: import("react").NamedExoticComponent<ThreadPrimitiveMessages.Props>;
27
71
  //# sourceMappingURL=ThreadMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadMessages.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;AAMnE,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,KAAK,GAAG;QAClB,UAAU,EACN;YACE,OAAO,EAAE,aAAa,CAAC;YACvB,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACxC,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,GACD;YACE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACpC,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,WAAW,EAAE,aAAa,CAAC;YAC3B,gBAAgB,EAAE,aAAa,CAAC;YAChC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,CAAC;KACP,CAAC;CACH;AA8GD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CASzE,CAAC;AAIF,eAAO,MAAM,uBAAuB,qEAGnC,CAAC"}
1
+ {"version":3,"file":"ThreadMessages.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;AAMnE,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,KAAK,GAAG;QAClB;;;;;;;;;WASG;QACH,UAAU,EACN;YACE,iDAAiD;YACjD,OAAO,EAAE,aAAa,CAAC;YACvB,mDAAmD;YACnD,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,6DAA6D;YAC7D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,kEAAkE;YAClE,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,+DAA+D;YAC/D,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,0DAA0D;YAC1D,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACxC,+DAA+D;YAC/D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,4DAA4D;YAC5D,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,GACD;YACE,4DAA4D;YAC5D,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACpC,mDAAmD;YACnD,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,6DAA6D;YAC7D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,kEAAkE;YAClE,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,+DAA+D;YAC/D,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,6CAA6C;YAC7C,WAAW,EAAE,aAAa,CAAC;YAC3B,kDAAkD;YAClD,gBAAgB,EAAE,aAAa,CAAC;YAChC,+CAA+C;YAC/C,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,CAAC;KACP,CAAC;CACH;AA8GD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAazE,CAAC;AAIF,eAAO,MAAM,uBAAuB,qEAGnC,CAAC"}
@@ -62,8 +62,11 @@ var ThreadPrimitiveMessagesImpl = ({
62
62
  components
63
63
  }) => {
64
64
  const messagesLength = useThread((t) => t.messages.length);
65
- if (messagesLength === 0) return null;
66
- return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx(ThreadMessage, { messageIndex: index, components }, index));
65
+ const messageElements = useMemo(() => {
66
+ if (messagesLength === 0) return null;
67
+ return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx(ThreadMessage, { messageIndex: index, components }, index));
68
+ }, [messagesLength, components]);
69
+ return messageElements;
67
70
  };
68
71
  ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
69
72
  var ThreadPrimitiveMessages = memo(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ComponentType, type FC, memo, useMemo } from \"react\";\nimport { useThread, useThreadRuntime } from \"../../context/react/ThreadContext\";\nimport { MessageRuntimeProvider } from \"../../context/providers/MessageRuntimeProvider\";\nimport { useEditComposer, useMessage } from \"../../context\";\nimport { ThreadMessage as ThreadMessageType } from \"../../types\";\n\nexport namespace ThreadPrimitiveMessages {\n export type Props = {\n components:\n | {\n Message: ComponentType;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n SystemMessage?: ComponentType | undefined;\n }\n | {\n Message?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage: ComponentType;\n AssistantMessage: ComponentType;\n SystemMessage?: ComponentType | undefined;\n };\n };\n}\n\nconst isComponentsSame = (\n prev: ThreadPrimitiveMessages.Props[\"components\"],\n next: ThreadPrimitiveMessages.Props[\"components\"],\n) => {\n return (\n prev.Message === next.Message &&\n prev.EditComposer === next.EditComposer &&\n prev.UserEditComposer === next.UserEditComposer &&\n prev.AssistantEditComposer === next.AssistantEditComposer &&\n prev.SystemEditComposer === next.SystemEditComposer &&\n prev.UserMessage === next.UserMessage &&\n prev.AssistantMessage === next.AssistantMessage &&\n prev.SystemMessage === next.SystemMessage\n );\n};\n\nconst DEFAULT_SYSTEM_MESSAGE = () => null;\n\nconst getComponent = (\n components: ThreadPrimitiveMessages.Props[\"components\"],\n role: ThreadMessageType[\"role\"],\n isEditing: boolean,\n) => {\n switch (role) {\n case \"user\":\n if (isEditing) {\n return (\n components.UserEditComposer ??\n components.EditComposer ??\n components.UserMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.UserMessage ?? (components.Message as ComponentType);\n }\n case \"assistant\":\n if (isEditing) {\n return (\n components.AssistantEditComposer ??\n components.EditComposer ??\n components.AssistantMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return (\n components.AssistantMessage ?? (components.Message as ComponentType)\n );\n }\n case \"system\":\n if (isEditing) {\n return (\n components.SystemEditComposer ??\n components.EditComposer ??\n components.SystemMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.SystemMessage ?? DEFAULT_SYSTEM_MESSAGE;\n }\n default:\n const _exhaustiveCheck: never = role;\n throw new Error(`Unknown message role: ${_exhaustiveCheck}`);\n }\n};\n\ntype ThreadMessageComponentProps = {\n components: ThreadPrimitiveMessages.Props[\"components\"];\n};\n\nconst ThreadMessageComponent: FC<ThreadMessageComponentProps> = ({\n components,\n}) => {\n const role = useMessage((m) => m.role);\n const isEditing = useEditComposer((c) => c.isEditing);\n const Component = getComponent(components, role, isEditing);\n\n return <Component />;\n};\n\ntype ThreadMessageProps = {\n messageIndex: number;\n components: ThreadPrimitiveMessages.Props[\"components\"];\n};\n\nconst ThreadMessageImpl: FC<ThreadMessageProps> = ({\n messageIndex,\n components,\n}) => {\n const threadRuntime = useThreadRuntime();\n const runtime = useMemo(\n () => threadRuntime.getMesssageByIndex(messageIndex),\n [threadRuntime, messageIndex],\n );\n\n return (\n <MessageRuntimeProvider runtime={runtime}>\n <ThreadMessageComponent components={components} />\n </MessageRuntimeProvider>\n );\n};\n\nconst ThreadMessage = memo(\n ThreadMessageImpl,\n (prev, next) =>\n prev.messageIndex === next.messageIndex &&\n isComponentsSame(prev.components, next.components),\n);\n\nexport const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props> = ({\n components,\n}) => {\n const messagesLength = useThread((t) => t.messages.length);\n if (messagesLength === 0) return null;\n\n return Array.from({ length: messagesLength }, (_, index) => (\n <ThreadMessage key={index} messageIndex={index} components={components} />\n ));\n};\n\nThreadPrimitiveMessagesImpl.displayName = \"ThreadPrimitive.Messages\";\n\nexport const ThreadPrimitiveMessages = memo(\n ThreadPrimitiveMessagesImpl,\n (prev, next) => isComponentsSame(prev.components, next.components),\n);\n"],"mappings":";;;AAEA,SAAsC,MAAM,eAAe;AAC3D,SAAS,WAAW,wBAAwB;AAC5C,SAAS,8BAA8B;AACvC,SAAS,iBAAiB,kBAAkB;AAyGnC;AA5ET,IAAM,mBAAmB,CACvB,MACA,SACG;AACH,SACE,KAAK,YAAY,KAAK,WACtB,KAAK,iBAAiB,KAAK,gBAC3B,KAAK,qBAAqB,KAAK,oBAC/B,KAAK,0BAA0B,KAAK,yBACpC,KAAK,uBAAuB,KAAK,sBACjC,KAAK,gBAAgB,KAAK,eAC1B,KAAK,qBAAqB,KAAK,oBAC/B,KAAK,kBAAkB,KAAK;AAEhC;AAEA,IAAM,yBAAyB,MAAM;AAErC,IAAM,eAAe,CACnB,YACA,MACA,cACG;AACH,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,oBACX,WAAW,gBACX,WAAW,eACV,WAAW;AAAA,MAEhB,OAAO;AACL,eAAO,WAAW,eAAgB,WAAW;AAAA,MAC/C;AAAA,IACF,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,yBACX,WAAW,gBACX,WAAW,oBACV,WAAW;AAAA,MAEhB,OAAO;AACL,eACE,WAAW,oBAAqB,WAAW;AAAA,MAE/C;AAAA,IACF,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,sBACX,WAAW,gBACX,WAAW,iBACV,WAAW;AAAA,MAEhB,OAAO;AACL,eAAO,WAAW,iBAAiB;AAAA,MACrC;AAAA,IACF;AACE,YAAM,mBAA0B;AAChC,YAAM,IAAI,MAAM,yBAAyB,gBAAgB,EAAE;AAAA,EAC/D;AACF;AAMA,IAAM,yBAA0D,CAAC;AAAA,EAC/D;AACF,MAAM;AACJ,QAAM,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI;AACrC,QAAM,YAAY,gBAAgB,CAAC,MAAM,EAAE,SAAS;AACpD,QAAM,YAAY,aAAa,YAAY,MAAM,SAAS;AAE1D,SAAO,oBAAC,aAAU;AACpB;AAOA,IAAM,oBAA4C,CAAC;AAAA,EACjD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,UAAU;AAAA,IACd,MAAM,cAAc,mBAAmB,YAAY;AAAA,IACnD,CAAC,eAAe,YAAY;AAAA,EAC9B;AAEA,SACE,oBAAC,0BAAuB,SACtB,8BAAC,0BAAuB,YAAwB,GAClD;AAEJ;AAEA,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA,CAAC,MAAM,SACL,KAAK,iBAAiB,KAAK,gBAC3B,iBAAiB,KAAK,YAAY,KAAK,UAAU;AACrD;AAEO,IAAM,8BAAiE,CAAC;AAAA,EAC7E;AACF,MAAM;AACJ,QAAM,iBAAiB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM;AACzD,MAAI,mBAAmB,EAAG,QAAO;AAEjC,SAAO,MAAM,KAAK,EAAE,QAAQ,eAAe,GAAG,CAAC,GAAG,UAChD,oBAAC,iBAA0B,cAAc,OAAO,cAA5B,KAAoD,CACzE;AACH;AAEA,4BAA4B,cAAc;AAEnC,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA,CAAC,MAAM,SAAS,iBAAiB,KAAK,YAAY,KAAK,UAAU;AACnE;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ComponentType, type FC, memo, useMemo } from \"react\";\nimport { useThread, useThreadRuntime } from \"../../context/react/ThreadContext\";\nimport { MessageRuntimeProvider } from \"../../context/providers/MessageRuntimeProvider\";\nimport { useEditComposer, useMessage } from \"../../context\";\nimport { ThreadMessage as ThreadMessageType } from \"../../types\";\n\nexport namespace ThreadPrimitiveMessages {\n export type Props = {\n /**\n * Component configuration for rendering different types of messages and composers.\n *\n * You can provide either:\n * 1. A single `Message` component that handles all message types\n * 2. Specific components for `UserMessage` and `AssistantMessage` (with optional `SystemMessage`)\n *\n * Optional edit composer components can be provided to customize the editing experience\n * for different message types when users edit their messages.\n */\n components:\n | {\n /** Component used to render all message types */\n Message: ComponentType;\n /** Component used when editing any message type */\n EditComposer?: ComponentType | undefined;\n /** Component used when editing user messages specifically */\n UserEditComposer?: ComponentType | undefined;\n /** Component used when editing assistant messages specifically */\n AssistantEditComposer?: ComponentType | undefined;\n /** Component used when editing system messages specifically */\n SystemEditComposer?: ComponentType | undefined;\n /** Component used to render user messages specifically */\n UserMessage?: ComponentType | undefined;\n /** Component used to render assistant messages specifically */\n AssistantMessage?: ComponentType | undefined;\n /** Component used to render system messages specifically */\n SystemMessage?: ComponentType | undefined;\n }\n | {\n /** Component used to render all message types (fallback) */\n Message?: ComponentType | undefined;\n /** Component used when editing any message type */\n EditComposer?: ComponentType | undefined;\n /** Component used when editing user messages specifically */\n UserEditComposer?: ComponentType | undefined;\n /** Component used when editing assistant messages specifically */\n AssistantEditComposer?: ComponentType | undefined;\n /** Component used when editing system messages specifically */\n SystemEditComposer?: ComponentType | undefined;\n /** Component used to render user messages */\n UserMessage: ComponentType;\n /** Component used to render assistant messages */\n AssistantMessage: ComponentType;\n /** Component used to render system messages */\n SystemMessage?: ComponentType | undefined;\n };\n };\n}\n\nconst isComponentsSame = (\n prev: ThreadPrimitiveMessages.Props[\"components\"],\n next: ThreadPrimitiveMessages.Props[\"components\"],\n) => {\n return (\n prev.Message === next.Message &&\n prev.EditComposer === next.EditComposer &&\n prev.UserEditComposer === next.UserEditComposer &&\n prev.AssistantEditComposer === next.AssistantEditComposer &&\n prev.SystemEditComposer === next.SystemEditComposer &&\n prev.UserMessage === next.UserMessage &&\n prev.AssistantMessage === next.AssistantMessage &&\n prev.SystemMessage === next.SystemMessage\n );\n};\n\nconst DEFAULT_SYSTEM_MESSAGE = () => null;\n\nconst getComponent = (\n components: ThreadPrimitiveMessages.Props[\"components\"],\n role: ThreadMessageType[\"role\"],\n isEditing: boolean,\n) => {\n switch (role) {\n case \"user\":\n if (isEditing) {\n return (\n components.UserEditComposer ??\n components.EditComposer ??\n components.UserMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.UserMessage ?? (components.Message as ComponentType);\n }\n case \"assistant\":\n if (isEditing) {\n return (\n components.AssistantEditComposer ??\n components.EditComposer ??\n components.AssistantMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return (\n components.AssistantMessage ?? (components.Message as ComponentType)\n );\n }\n case \"system\":\n if (isEditing) {\n return (\n components.SystemEditComposer ??\n components.EditComposer ??\n components.SystemMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.SystemMessage ?? DEFAULT_SYSTEM_MESSAGE;\n }\n default:\n const _exhaustiveCheck: never = role;\n throw new Error(`Unknown message role: ${_exhaustiveCheck}`);\n }\n};\n\ntype ThreadMessageComponentProps = {\n components: ThreadPrimitiveMessages.Props[\"components\"];\n};\n\nconst ThreadMessageComponent: FC<ThreadMessageComponentProps> = ({\n components,\n}) => {\n const role = useMessage((m) => m.role);\n const isEditing = useEditComposer((c) => c.isEditing);\n const Component = getComponent(components, role, isEditing);\n\n return <Component />;\n};\n\ntype ThreadMessageProps = {\n messageIndex: number;\n components: ThreadPrimitiveMessages.Props[\"components\"];\n};\n\nconst ThreadMessageImpl: FC<ThreadMessageProps> = ({\n messageIndex,\n components,\n}) => {\n const threadRuntime = useThreadRuntime();\n const runtime = useMemo(\n () => threadRuntime.getMesssageByIndex(messageIndex),\n [threadRuntime, messageIndex],\n );\n\n return (\n <MessageRuntimeProvider runtime={runtime}>\n <ThreadMessageComponent components={components} />\n </MessageRuntimeProvider>\n );\n};\n\nconst ThreadMessage = memo(\n ThreadMessageImpl,\n (prev, next) =>\n prev.messageIndex === next.messageIndex &&\n isComponentsSame(prev.components, next.components),\n);\n\n/**\n * Renders all messages in the current thread using the provided component configuration.\n *\n * This component automatically renders all messages in the thread, providing the appropriate\n * message context for each message. It handles different message types (user, assistant, system)\n * and supports editing mode through the provided edit composer components.\n *\n * @example\n * ```tsx\n * <ThreadPrimitive.Messages\n * components={{\n * UserMessage: MyUserMessage,\n * AssistantMessage: MyAssistantMessage,\n * EditComposer: MyEditComposer\n * }}\n * />\n * ```\n */\nexport const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props> = ({\n components,\n}) => {\n const messagesLength = useThread((t) => t.messages.length);\n\n const messageElements = useMemo(() => {\n if (messagesLength === 0) return null;\n return Array.from({ length: messagesLength }, (_, index) => (\n <ThreadMessage key={index} messageIndex={index} components={components} />\n ));\n }, [messagesLength, components]);\n\n return messageElements;\n};\n\nThreadPrimitiveMessagesImpl.displayName = \"ThreadPrimitive.Messages\";\n\nexport const ThreadPrimitiveMessages = memo(\n ThreadPrimitiveMessagesImpl,\n (prev, next) => isComponentsSame(prev.components, next.components),\n);\n"],"mappings":";;;AAEA,SAAsC,MAAM,eAAe;AAC3D,SAAS,WAAW,wBAAwB;AAC5C,SAAS,8BAA8B;AACvC,SAAS,iBAAiB,kBAAkB;AAmInC;AA5ET,IAAM,mBAAmB,CACvB,MACA,SACG;AACH,SACE,KAAK,YAAY,KAAK,WACtB,KAAK,iBAAiB,KAAK,gBAC3B,KAAK,qBAAqB,KAAK,oBAC/B,KAAK,0BAA0B,KAAK,yBACpC,KAAK,uBAAuB,KAAK,sBACjC,KAAK,gBAAgB,KAAK,eAC1B,KAAK,qBAAqB,KAAK,oBAC/B,KAAK,kBAAkB,KAAK;AAEhC;AAEA,IAAM,yBAAyB,MAAM;AAErC,IAAM,eAAe,CACnB,YACA,MACA,cACG;AACH,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,oBACX,WAAW,gBACX,WAAW,eACV,WAAW;AAAA,MAEhB,OAAO;AACL,eAAO,WAAW,eAAgB,WAAW;AAAA,MAC/C;AAAA,IACF,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,yBACX,WAAW,gBACX,WAAW,oBACV,WAAW;AAAA,MAEhB,OAAO;AACL,eACE,WAAW,oBAAqB,WAAW;AAAA,MAE/C;AAAA,IACF,KAAK;AACH,UAAI,WAAW;AACb,eACE,WAAW,sBACX,WAAW,gBACX,WAAW,iBACV,WAAW;AAAA,MAEhB,OAAO;AACL,eAAO,WAAW,iBAAiB;AAAA,MACrC;AAAA,IACF;AACE,YAAM,mBAA0B;AAChC,YAAM,IAAI,MAAM,yBAAyB,gBAAgB,EAAE;AAAA,EAC/D;AACF;AAMA,IAAM,yBAA0D,CAAC;AAAA,EAC/D;AACF,MAAM;AACJ,QAAM,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI;AACrC,QAAM,YAAY,gBAAgB,CAAC,MAAM,EAAE,SAAS;AACpD,QAAM,YAAY,aAAa,YAAY,MAAM,SAAS;AAE1D,SAAO,oBAAC,aAAU;AACpB;AAOA,IAAM,oBAA4C,CAAC;AAAA,EACjD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,UAAU;AAAA,IACd,MAAM,cAAc,mBAAmB,YAAY;AAAA,IACnD,CAAC,eAAe,YAAY;AAAA,EAC9B;AAEA,SACE,oBAAC,0BAAuB,SACtB,8BAAC,0BAAuB,YAAwB,GAClD;AAEJ;AAEA,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA,CAAC,MAAM,SACL,KAAK,iBAAiB,KAAK,gBAC3B,iBAAiB,KAAK,YAAY,KAAK,UAAU;AACrD;AAoBO,IAAM,8BAAiE,CAAC;AAAA,EAC7E;AACF,MAAM;AACJ,QAAM,iBAAiB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM;AAEzD,QAAM,kBAAkB,QAAQ,MAAM;AACpC,QAAI,mBAAmB,EAAG,QAAO;AACjC,WAAO,MAAM,KAAK,EAAE,QAAQ,eAAe,GAAG,CAAC,GAAG,UAChD,oBAAC,iBAA0B,cAAc,OAAO,cAA5B,KAAoD,CACzE;AAAA,EACH,GAAG,CAAC,gBAAgB,UAAU,CAAC;AAE/B,SAAO;AACT;AAEA,4BAA4B,cAAc;AAEnC,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA,CAAC,MAAM,SAAS,iBAAiB,KAAK,YAAY,KAAK,UAAU;AACnE;","names":[]}
@@ -2,8 +2,27 @@ import { Primitive } from "@radix-ui/react-primitive";
2
2
  import { type ComponentRef, ComponentPropsWithoutRef } from "react";
3
3
  export declare namespace ThreadPrimitiveRoot {
4
4
  type Element = ComponentRef<typeof Primitive.div>;
5
+ /**
6
+ * Props for the ThreadPrimitive.Root component.
7
+ * Accepts all standard div element props.
8
+ */
5
9
  type Props = ComponentPropsWithoutRef<typeof Primitive.div>;
6
10
  }
11
+ /**
12
+ * The root container component for a thread.
13
+ *
14
+ * This component serves as the foundational wrapper for all thread-related components.
15
+ * It provides the basic structure and context needed for thread functionality.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <ThreadPrimitive.Root>
20
+ * <ThreadPrimitive.Viewport>
21
+ * <ThreadPrimitive.Messages components={{ Message: MyMessage }} />
22
+ * </ThreadPrimitive.Viewport>
23
+ * </ThreadPrimitive.Root>
24
+ * ```
25
+ */
7
26
  export declare const ThreadPrimitiveRoot: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
8
27
  asChild?: boolean;
9
28
  }, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAEhF,yBAAiB,mBAAmB,CAAC;IACnC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,mBAAmB;;0DAK9B,CAAC"}
1
+ {"version":3,"file":"ThreadRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAEhF,yBAAiB,mBAAmB,CAAC;IACnC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD;;;OAGG;IACH,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB;;0DAK9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nexport namespace ThreadPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\nexport const ThreadPrimitiveRoot = forwardRef<\n ThreadPrimitiveRoot.Element,\n ThreadPrimitiveRoot.Props\n>((props, ref) => {\n return <Primitive.div {...props} ref={ref} />;\n});\n\nThreadPrimitiveRoot.displayName = \"ThreadPrimitive.Root\";\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAA4B,kBAA4C;AAW/D;AAJF,IAAM,sBAAsB,WAGjC,CAAC,OAAO,QAAQ;AAChB,SAAO,oBAAC,UAAU,KAAV,EAAe,GAAG,OAAO,KAAU;AAC7C,CAAC;AAED,oBAAoB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nexport namespace ThreadPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n /**\n * Props for the ThreadPrimitive.Root component.\n * Accepts all standard div element props.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\n/**\n * The root container component for a thread.\n *\n * This component serves as the foundational wrapper for all thread-related components.\n * It provides the basic structure and context needed for thread functionality.\n *\n * @example\n * ```tsx\n * <ThreadPrimitive.Root>\n * <ThreadPrimitive.Viewport>\n * <ThreadPrimitive.Messages components={{ Message: MyMessage }} />\n * </ThreadPrimitive.Viewport>\n * </ThreadPrimitive.Root>\n * ```\n */\nexport const ThreadPrimitiveRoot = forwardRef<\n ThreadPrimitiveRoot.Element,\n ThreadPrimitiveRoot.Props\n>((props, ref) => {\n return <Primitive.div {...props} ref={ref} />;\n});\n\nThreadPrimitiveRoot.displayName = \"ThreadPrimitive.Root\";\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAA4B,kBAA4C;AA8B/D;AAJF,IAAM,sBAAsB,WAGjC,CAAC,OAAO,QAAQ;AAChB,SAAO,oBAAC,UAAU,KAAV,EAAe,GAAG,OAAO,KAAU;AAC7C,CAAC;AAED,oBAAoB,cAAc;","names":[]}
@@ -3,12 +3,36 @@ import { type ComponentRef, ComponentPropsWithoutRef } from "react";
3
3
  export declare namespace ThreadPrimitiveViewport {
4
4
  type Element = ComponentRef<typeof Primitive.div>;
5
5
  type Props = ComponentPropsWithoutRef<typeof Primitive.div> & {
6
+ /**
7
+ * Whether to automatically scroll to the bottom when new messages are added.
8
+ * When enabled, the viewport will automatically scroll to show the latest content.
9
+ * @default true
10
+ */
6
11
  autoScroll?: boolean | undefined;
7
12
  };
8
13
  }
14
+ /**
15
+ * A scrollable viewport container for thread messages.
16
+ *
17
+ * This component provides a scrollable area for displaying thread messages with
18
+ * automatic scrolling capabilities. It manages the viewport state and provides
19
+ * context for child components to access viewport-related functionality.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <ThreadPrimitive.Viewport autoScroll={true}>
24
+ * <ThreadPrimitive.Messages components={{ Message: MyMessage }} />
25
+ * </ThreadPrimitive.Viewport>
26
+ * ```
27
+ */
9
28
  export declare const ThreadPrimitiveViewport: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
10
29
  asChild?: boolean;
11
30
  }, "ref"> & {
31
+ /**
32
+ * Whether to automatically scroll to the bottom when new messages are added.
33
+ * When enabled, the viewport will automatically scroll to show the latest content.
34
+ * @default true
35
+ */
12
36
  autoScroll?: boolean | undefined;
13
37
  } & import("react").RefAttributes<HTMLDivElement>>;
14
38
  //# sourceMappingURL=ThreadViewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadViewport.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadViewport.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAIhF,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG;QACnE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAClC,CAAC;CACH;AAsBD,eAAO,MAAM,uBAAuB;;;iBAxBnB,OAAO,GAAG,SAAS;kDAiClC,CAAC"}
1
+ {"version":3,"file":"ThreadViewport.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadViewport.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAIhF,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG;QACnE;;;;WAIG;QACH,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAClC,CAAC;CACH;AAsBD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB;;;IA3ChC;;;;OAIG;iBACU,OAAO,GAAG,SAAS;kDA+ClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/thread/ThreadViewport.tsx"],"sourcesContent":["\"use client\";\n\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\nimport { useThreadViewportAutoScroll } from \"./useThreadViewportAutoScroll\";\nimport { ThreadViewportProvider } from \"../../context/providers/ThreadViewportProvider\";\n\nexport namespace ThreadPrimitiveViewport {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div> & {\n autoScroll?: boolean | undefined;\n };\n}\n\nconst ThreadPrimitiveViewportScrollable = forwardRef<\n ThreadPrimitiveViewport.Element,\n ThreadPrimitiveViewport.Props\n>(({ autoScroll, children, ...rest }, forwardedRef) => {\n const autoScrollRef = useThreadViewportAutoScroll<HTMLDivElement>({\n autoScroll,\n });\n\n const ref = useComposedRefs(forwardedRef, autoScrollRef);\n\n return (\n <Primitive.div {...rest} ref={ref}>\n {children}\n </Primitive.div>\n );\n});\n\nThreadPrimitiveViewportScrollable.displayName =\n \"ThreadPrimitive.ViewportScrollable\";\n\nexport const ThreadPrimitiveViewport = forwardRef<\n ThreadPrimitiveViewport.Element,\n ThreadPrimitiveViewport.Props\n>((props, ref) => {\n return (\n <ThreadViewportProvider>\n <ThreadPrimitiveViewportScrollable {...props} ref={ref} />\n </ThreadViewportProvider>\n );\n});\n\nThreadPrimitiveViewport.displayName = \"ThreadPrimitive.Viewport\";\n"],"mappings":";;;AAEA,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAC1B,SAA4B,kBAA4C;AACxE,SAAS,mCAAmC;AAC5C,SAAS,8BAA8B;AAoBnC;AAXJ,IAAM,oCAAoC,WAGxC,CAAC,EAAE,YAAY,UAAU,GAAG,KAAK,GAAG,iBAAiB;AACrD,QAAM,gBAAgB,4BAA4C;AAAA,IAChE;AAAA,EACF,CAAC;AAED,QAAM,MAAM,gBAAgB,cAAc,aAAa;AAEvD,SACE,oBAAC,UAAU,KAAV,EAAe,GAAG,MAAM,KACtB,UACH;AAEJ,CAAC;AAED,kCAAkC,cAChC;AAEK,IAAM,0BAA0B,WAGrC,CAAC,OAAO,QAAQ;AAChB,SACE,oBAAC,0BACC,8BAAC,qCAAmC,GAAG,OAAO,KAAU,GAC1D;AAEJ,CAAC;AAED,wBAAwB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/thread/ThreadViewport.tsx"],"sourcesContent":["\"use client\";\n\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\nimport { useThreadViewportAutoScroll } from \"./useThreadViewportAutoScroll\";\nimport { ThreadViewportProvider } from \"../../context/providers/ThreadViewportProvider\";\n\nexport namespace ThreadPrimitiveViewport {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div> & {\n /**\n * Whether to automatically scroll to the bottom when new messages are added.\n * When enabled, the viewport will automatically scroll to show the latest content.\n * @default true\n */\n autoScroll?: boolean | undefined;\n };\n}\n\nconst ThreadPrimitiveViewportScrollable = forwardRef<\n ThreadPrimitiveViewport.Element,\n ThreadPrimitiveViewport.Props\n>(({ autoScroll, children, ...rest }, forwardedRef) => {\n const autoScrollRef = useThreadViewportAutoScroll<HTMLDivElement>({\n autoScroll,\n });\n\n const ref = useComposedRefs(forwardedRef, autoScrollRef);\n\n return (\n <Primitive.div {...rest} ref={ref}>\n {children}\n </Primitive.div>\n );\n});\n\nThreadPrimitiveViewportScrollable.displayName =\n \"ThreadPrimitive.ViewportScrollable\";\n\n/**\n * A scrollable viewport container for thread messages.\n *\n * This component provides a scrollable area for displaying thread messages with\n * automatic scrolling capabilities. It manages the viewport state and provides\n * context for child components to access viewport-related functionality.\n *\n * @example\n * ```tsx\n * <ThreadPrimitive.Viewport autoScroll={true}>\n * <ThreadPrimitive.Messages components={{ Message: MyMessage }} />\n * </ThreadPrimitive.Viewport>\n * ```\n */\nexport const ThreadPrimitiveViewport = forwardRef<\n ThreadPrimitiveViewport.Element,\n ThreadPrimitiveViewport.Props\n>((props, ref) => {\n return (\n <ThreadViewportProvider>\n <ThreadPrimitiveViewportScrollable {...props} ref={ref} />\n </ThreadViewportProvider>\n );\n});\n\nThreadPrimitiveViewport.displayName = \"ThreadPrimitive.Viewport\";\n"],"mappings":";;;AAEA,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAC1B,SAA4B,kBAA4C;AACxE,SAAS,mCAAmC;AAC5C,SAAS,8BAA8B;AAyBnC;AAXJ,IAAM,oCAAoC,WAGxC,CAAC,EAAE,YAAY,UAAU,GAAG,KAAK,GAAG,iBAAiB;AACrD,QAAM,gBAAgB,4BAA4C;AAAA,IAChE;AAAA,EACF,CAAC;AAED,QAAM,MAAM,gBAAgB,cAAc,aAAa;AAEvD,SACE,oBAAC,UAAU,KAAV,EAAe,GAAG,MAAM,KACtB,UACH;AAEJ,CAAC;AAED,kCAAkC,cAChC;AAgBK,IAAM,0BAA0B,WAGrC,CAAC,OAAO,QAAQ;AAChB,SACE,oBAAC,0BACC,8BAAC,qCAAmC,GAAG,OAAO,KAAU,GAC1D;AAEJ,CAAC;AAED,wBAAwB,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItems.d.ts","sourceRoot":"","sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAiB,MAAM,OAAO,CAAC;AAIzD,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,KAAK,GAAG;QAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/B,UAAU,EAAE;YACV,cAAc,EAAE,aAAa,CAAC;SAC/B,CAAC;KACH,CAAC;CACH;AAuCD,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAgBvE,CAAC"}
1
+ {"version":3,"file":"ThreadListItems.d.ts","sourceRoot":"","sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAiB,MAAM,OAAO,CAAC;AAIzD,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,KAAK,GAAG;QAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/B,UAAU,EAAE;YACV,cAAc,EAAE,aAAa,CAAC;SAC/B,CAAC;KACH,CAAC;CACH;AAuCD,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAoBvE,CAAC"}
@@ -29,15 +29,18 @@ var ThreadListPrimitiveItems = ({
29
29
  const contentLength = useThreadList(
30
30
  (s) => archived ? s.archivedThreads.length : s.threads.length
31
31
  );
32
- return Array.from({ length: contentLength }, (_, index) => /* @__PURE__ */ jsx(
33
- ThreadListItem,
34
- {
35
- partIndex: index,
36
- archived,
37
- components
38
- },
39
- index
40
- ));
32
+ const listElements = useMemo(() => {
33
+ return Array.from({ length: contentLength }, (_, index) => /* @__PURE__ */ jsx(
34
+ ThreadListItem,
35
+ {
36
+ partIndex: index,
37
+ archived,
38
+ components
39
+ },
40
+ index
41
+ ));
42
+ }, [contentLength, archived, components]);
43
+ return listElements;
41
44
  };
42
45
  ThreadListPrimitiveItems.displayName = "ThreadListPrimitive.Items";
43
46
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentType, FC, memo, useMemo } from \"react\";\nimport { ThreadListItemRuntimeProvider } from \"../../context/providers/ThreadListItemRuntimeProvider\";\nimport { useAssistantRuntime, useThreadList } from \"../../context\";\n\nexport namespace ThreadListPrimitiveItems {\n export type Props = {\n archived?: boolean | undefined;\n components: {\n ThreadListItem: ComponentType;\n };\n };\n}\n\ntype ThreadListItemProps = {\n partIndex: number;\n archived: boolean;\n components: ThreadListPrimitiveItems.Props[\"components\"];\n};\n\nconst ThreadListItemImpl: FC<ThreadListItemProps> = ({\n partIndex,\n archived,\n components,\n}) => {\n const assistantRuntime = useAssistantRuntime();\n const runtime = useMemo(\n () =>\n archived\n ? assistantRuntime.threads.getArchivedItemByIndex(partIndex)\n : assistantRuntime.threads.getItemByIndex(partIndex),\n [assistantRuntime, partIndex, archived],\n );\n\n const ThreadListItemComponent = components.ThreadListItem;\n\n return (\n <ThreadListItemRuntimeProvider runtime={runtime}>\n <ThreadListItemComponent />\n </ThreadListItemRuntimeProvider>\n );\n};\n\nconst ThreadListItem = memo(\n ThreadListItemImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.archived === next.archived &&\n prev.components.ThreadListItem === next.components.ThreadListItem,\n);\n\nexport const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props> = ({\n archived = false,\n components,\n}) => {\n const contentLength = useThreadList((s) =>\n archived ? s.archivedThreads.length : s.threads.length,\n );\n\n return Array.from({ length: contentLength }, (_, index) => (\n <ThreadListItem\n key={index}\n partIndex={index}\n archived={archived}\n components={components}\n />\n ));\n};\n\nThreadListPrimitiveItems.displayName = \"ThreadListPrimitive.Items\";\n"],"mappings":";;;AAEA,SAA4B,MAAM,eAAe;AACjD,SAAS,qCAAqC;AAC9C,SAAS,qBAAqB,qBAAqB;AAmC7C;AAlBN,IAAM,qBAA8C,CAAC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,UAAU;AAAA,IACd,MACE,WACI,iBAAiB,QAAQ,uBAAuB,SAAS,IACzD,iBAAiB,QAAQ,eAAe,SAAS;AAAA,IACvD,CAAC,kBAAkB,WAAW,QAAQ;AAAA,EACxC;AAEA,QAAM,0BAA0B,WAAW;AAE3C,SACE,oBAAC,iCAA8B,SAC7B,8BAAC,2BAAwB,GAC3B;AAEJ;AAEA,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA,CAAC,MAAM,SACL,KAAK,cAAc,KAAK,aACxB,KAAK,aAAa,KAAK,YACvB,KAAK,WAAW,mBAAmB,KAAK,WAAW;AACvD;AAEO,IAAM,2BAA+D,CAAC;AAAA,EAC3E,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,gBAAgB;AAAA,IAAc,CAAC,MACnC,WAAW,EAAE,gBAAgB,SAAS,EAAE,QAAQ;AAAA,EAClD;AAEA,SAAO,MAAM,KAAK,EAAE,QAAQ,cAAc,GAAG,CAAC,GAAG,UAC/C;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW;AAAA,MACX;AAAA,MACA;AAAA;AAAA,IAHK;AAAA,EAIP,CACD;AACH;AAEA,yBAAyB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentType, FC, memo, useMemo } from \"react\";\nimport { ThreadListItemRuntimeProvider } from \"../../context/providers/ThreadListItemRuntimeProvider\";\nimport { useAssistantRuntime, useThreadList } from \"../../context\";\n\nexport namespace ThreadListPrimitiveItems {\n export type Props = {\n archived?: boolean | undefined;\n components: {\n ThreadListItem: ComponentType;\n };\n };\n}\n\ntype ThreadListItemProps = {\n partIndex: number;\n archived: boolean;\n components: ThreadListPrimitiveItems.Props[\"components\"];\n};\n\nconst ThreadListItemImpl: FC<ThreadListItemProps> = ({\n partIndex,\n archived,\n components,\n}) => {\n const assistantRuntime = useAssistantRuntime();\n const runtime = useMemo(\n () =>\n archived\n ? assistantRuntime.threads.getArchivedItemByIndex(partIndex)\n : assistantRuntime.threads.getItemByIndex(partIndex),\n [assistantRuntime, partIndex, archived],\n );\n\n const ThreadListItemComponent = components.ThreadListItem;\n\n return (\n <ThreadListItemRuntimeProvider runtime={runtime}>\n <ThreadListItemComponent />\n </ThreadListItemRuntimeProvider>\n );\n};\n\nconst ThreadListItem = memo(\n ThreadListItemImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.archived === next.archived &&\n prev.components.ThreadListItem === next.components.ThreadListItem,\n);\n\nexport const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props> = ({\n archived = false,\n components,\n}) => {\n const contentLength = useThreadList((s) =>\n archived ? s.archivedThreads.length : s.threads.length,\n );\n\n const listElements = useMemo(() => {\n return Array.from({ length: contentLength }, (_, index) => (\n <ThreadListItem\n key={index}\n partIndex={index}\n archived={archived}\n components={components}\n />\n ));\n }, [contentLength, archived, components]);\n\n return listElements;\n};\n\nThreadListPrimitiveItems.displayName = \"ThreadListPrimitive.Items\";\n"],"mappings":";;;AAEA,SAA4B,MAAM,eAAe;AACjD,SAAS,qCAAqC;AAC9C,SAAS,qBAAqB,qBAAqB;AAmC7C;AAlBN,IAAM,qBAA8C,CAAC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,UAAU;AAAA,IACd,MACE,WACI,iBAAiB,QAAQ,uBAAuB,SAAS,IACzD,iBAAiB,QAAQ,eAAe,SAAS;AAAA,IACvD,CAAC,kBAAkB,WAAW,QAAQ;AAAA,EACxC;AAEA,QAAM,0BAA0B,WAAW;AAE3C,SACE,oBAAC,iCAA8B,SAC7B,8BAAC,2BAAwB,GAC3B;AAEJ;AAEA,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA,CAAC,MAAM,SACL,KAAK,cAAc,KAAK,aACxB,KAAK,aAAa,KAAK,YACvB,KAAK,WAAW,mBAAmB,KAAK,WAAW;AACvD;AAEO,IAAM,2BAA+D,CAAC;AAAA,EAC3E,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,gBAAgB;AAAA,IAAc,CAAC,MACnC,WAAW,EAAE,gBAAgB,SAAS,EAAE,QAAQ;AAAA,EAClD;AAEA,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,MAAM,KAAK,EAAE,QAAQ,cAAc,GAAG,CAAC,GAAG,UAC/C;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW;AAAA,QACX;AAAA,QACA;AAAA;AAAA,MAHK;AAAA,IAIP,CACD;AAAA,EACH,GAAG,CAAC,eAAe,UAAU,UAAU,CAAC;AAExC,SAAO;AACT;AAEA,yBAAyB,cAAc;","names":[]}
@@ -1,10 +1,64 @@
1
1
  import { Attachment, PendingAttachment, CompleteAttachment } from "../../../types/AttachmentTypes";
2
+ /**
3
+ * Interface for handling file attachments in the assistant runtime.
4
+ *
5
+ * AttachmentAdapter provides methods for managing file attachments throughout
6
+ * their lifecycle: adding, processing, removing, and sending attachments with messages.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const imageAdapter: AttachmentAdapter = {
11
+ * accept: "image/*",
12
+ *
13
+ * async add({ file }) {
14
+ * return {
15
+ * id: generateId(),
16
+ * type: "image",
17
+ * name: file.name,
18
+ * file,
19
+ * status: { type: "uploading" }
20
+ * };
21
+ * },
22
+ *
23
+ * async remove(attachment) {
24
+ * // Clean up resources
25
+ * },
26
+ *
27
+ * async send(attachment) {
28
+ * const url = await uploadFile(attachment.file);
29
+ * return { ...attachment, url, status: { type: "complete" } };
30
+ * }
31
+ * };
32
+ * ```
33
+ */
2
34
  export type AttachmentAdapter = {
35
+ /**
36
+ * MIME type pattern for accepted file types (e.g., "image/*", "text/plain").
37
+ */
3
38
  accept: string;
39
+ /**
40
+ * Processes a file when it's added as an attachment.
41
+ *
42
+ * @param state - Object containing the file to process
43
+ * @param state.file - The File object to be attached
44
+ * @returns Promise or AsyncGenerator yielding PendingAttachment states
45
+ */
4
46
  add(state: {
5
47
  file: File;
6
48
  }): Promise<PendingAttachment> | AsyncGenerator<PendingAttachment, void>;
49
+ /**
50
+ * Removes an attachment and cleans up associated resources.
51
+ *
52
+ * @param attachment - The attachment to remove
53
+ * @returns Promise that resolves when removal is complete
54
+ */
7
55
  remove(attachment: Attachment): Promise<void>;
56
+ /**
57
+ * Finalizes an attachment for sending with a message.
58
+ *
59
+ * @param attachment - The pending attachment to finalize
60
+ * @returns Promise resolving to the complete attachment
61
+ */
8
62
  send(attachment: PendingAttachment): Promise<CompleteAttachment>;
9
63
  };
10
64
  //# sourceMappingURL=AttachmentAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/attachment/AttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,KAAK,EAAE;QACT,IAAI,EAAE,IAAI,CAAC;KACZ,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClE,CAAC"}
1
+ {"version":3,"file":"AttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/attachment/AttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,EAAE;QACT,IAAI,EAAE,IAAI,CAAC;KACZ,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAEzE;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClE,CAAC"}
@@ -1,9 +1,42 @@
1
1
  import { ThreadMessage } from "../../../types/AssistantTypes";
2
+ /**
3
+ * Feedback data structure for rating messages.
4
+ */
2
5
  type FeedbackAdapterFeedback = {
6
+ /** The message being rated */
3
7
  message: ThreadMessage;
8
+ /** The type of feedback being provided */
4
9
  type: "positive" | "negative";
5
10
  };
11
+ /**
12
+ * Interface for handling user feedback on assistant messages.
13
+ *
14
+ * FeedbackAdapter allows users to provide positive or negative feedback
15
+ * on assistant responses, which can be used for analytics, model improvement,
16
+ * or user experience tracking.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * const feedbackAdapter: FeedbackAdapter = {
21
+ * submit: (feedback) => {
22
+ * console.log(`User gave ${feedback.type} feedback on message:`, feedback.message.id);
23
+ *
24
+ * // Send to analytics service
25
+ * analytics.track('message_feedback', {
26
+ * messageId: feedback.message.id,
27
+ * feedbackType: feedback.type,
28
+ * messageContent: feedback.message.content
29
+ * });
30
+ * }
31
+ * };
32
+ * ```
33
+ */
6
34
  export type FeedbackAdapter = {
35
+ /**
36
+ * Submits user feedback for a message.
37
+ *
38
+ * @param feedback - The feedback data containing message and rating type
39
+ */
7
40
  submit: (feedback: FeedbackAdapterFeedback) => void;
8
41
  };
9
42
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/feedback/FeedbackAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACrD,CAAC"}
1
+ {"version":3,"file":"FeedbackAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/feedback/FeedbackAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;GAEG;AACH,KAAK,uBAAuB,GAAG;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,0CAA0C;IAC1C,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACrD,CAAC"}
@@ -1,19 +1,66 @@
1
1
  import { Unsubscribe } from "../../../types";
2
+ /**
3
+ * Types and interfaces for speech synthesis (text-to-speech) functionality.
4
+ */
2
5
  export declare namespace SpeechSynthesisAdapter {
6
+ /**
7
+ * Status of a speech synthesis operation.
8
+ */
3
9
  type Status = {
10
+ /** Speech is starting or currently running */
4
11
  type: "starting" | "running";
5
12
  } | {
13
+ /** Speech has ended */
6
14
  type: "ended";
15
+ /** Reason why speech ended */
7
16
  reason: "finished" | "cancelled" | "error";
17
+ /** Error details if speech ended due to error */
8
18
  error?: unknown;
9
19
  };
20
+ /**
21
+ * Represents a single speech utterance with control and status tracking.
22
+ */
10
23
  type Utterance = {
24
+ /** Current status of the utterance */
11
25
  status: Status;
26
+ /** Cancel the current speech */
12
27
  cancel: () => void;
28
+ /** Subscribe to status changes */
13
29
  subscribe: (callback: () => void) => Unsubscribe;
14
30
  };
15
31
  }
32
+ /**
33
+ * Interface for text-to-speech functionality.
34
+ *
35
+ * SpeechSynthesisAdapter provides the ability to convert text content
36
+ * into spoken audio, with status tracking and cancellation support.
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * const speechAdapter: SpeechSynthesisAdapter = {
41
+ * speak: (text) => {
42
+ * const utterance = new SpeechSynthesisUtterance(text);
43
+ * speechSynthesis.speak(utterance);
44
+ *
45
+ * return {
46
+ * status: { type: "starting" },
47
+ * cancel: () => speechSynthesis.cancel(),
48
+ * subscribe: (callback) => {
49
+ * utterance.addEventListener('end', callback);
50
+ * return () => utterance.removeEventListener('end', callback);
51
+ * }
52
+ * };
53
+ * }
54
+ * };
55
+ * ```
56
+ */
16
57
  export type SpeechSynthesisAdapter = {
58
+ /**
59
+ * Converts text to speech and returns an utterance object for control.
60
+ *
61
+ * @param text - The text content to speak
62
+ * @returns An utterance object with status and control methods
63
+ */
17
64
  speak: (text: string) => SpeechSynthesisAdapter.Utterance;
18
65
  };
19
66
  export declare namespace SpeechRecognitionAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"SpeechAdapterTypes.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/speech/SpeechAdapterTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,MAAM,GACd;QACE,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;KAC9B,GACD;QACE,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;QAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IAEN,KAAY,SAAS,GAAG;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,sBAAsB,CAAC,SAAS,CAAC;CAC3D,CAAC;AAEF,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,MAAM,GACd;QACE,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;KAC9B,GACD;QACE,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;KAC3C,CAAC;IAEN,KAAY,MAAM,GAAG;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,KAAY,OAAO,GAAG;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;QACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,WAAW,CAAC;QACjE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,WAAW,CAAC;KAC/D,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC;CAChD,CAAC"}
1
+ {"version":3,"file":"SpeechAdapterTypes.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/adapters/speech/SpeechAdapterTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,yBAAiB,sBAAsB,CAAC;IACtC;;OAEG;IACH,KAAY,MAAM,GACd;QACE,8CAA8C;QAC9C,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;KAC9B,GACD;QACE,uBAAuB;QACvB,IAAI,EAAE,OAAO,CAAC;QACd,8BAA8B;QAC9B,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;QAC3C,iDAAiD;QACjD,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IAEN;;OAEG;IACH,KAAY,SAAS,GAAG;QACtB,sCAAsC;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,gCAAgC;QAChC,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,kCAAkC;QAClC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;KAClD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;;OAKG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,sBAAsB,CAAC,SAAS,CAAC;CAC3D,CAAC;AAEF,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,MAAM,GACd;QACE,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;KAC9B,GACD;QACE,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;KAC3C,CAAC;IAEN,KAAY,MAAM,GAAG;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,KAAY,OAAO,GAAG;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;QACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,WAAW,CAAC;QACjE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,WAAW,CAAC;KAC/D,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC;CAChD,CAAC"}
@@ -4,7 +4,7 @@ import { ThreadMessageLike } from "../external-store";
4
4
  import { FeedbackAdapter } from "../adapters/feedback/FeedbackAdapter";
5
5
  import { SpeechSynthesisAdapter } from "../adapters/speech/SpeechAdapterTypes";
6
6
  import { ChatModelAdapter } from "./ChatModelAdapter";
7
- import { AssistantCloud } from "../../cloud";
7
+ import { AssistantCloud } from "assistant-cloud";
8
8
  import { SuggestionAdapter } from "../adapters";
9
9
  export type LocalRuntimeOptionsBase = {
10
10
  maxSteps?: number | undefined;
@@ -41,6 +41,6 @@ export declare const splitLocalRuntimeOptions: <T extends LocalRuntimeOptions>(o
41
41
  }, "chatModel"> | undefined;
42
42
  unstable_humanToolNames: string[] | undefined;
43
43
  };
44
- otherOptions: Omit<T, "adapters" | "cloud" | "maxSteps" | "unstable_humanToolNames" | "initialMessages">;
44
+ otherOptions: Omit<T, "adapters" | "maxSteps" | "unstable_humanToolNames" | "cloud" | "initialMessages">;
45
45
  };
46
46
  //# sourceMappingURL=LocalRuntimeOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalRuntimeOptions.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE;QACR,SAAS,EAAE,gBAAgB,CAAC;QAC5B,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;QAC3C,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;QAC5C,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;QACvC,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;KAC5C,CAAC;IAEF;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAChD,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAC5E,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;CAC/E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,mBAAmB,EACpE,SAAS,CAAC;;;;;;uBAtBG,gBAAgB;sBACjB,oBAAoB,GAAG,SAAS;0BAC5B,iBAAiB,GAAG,SAAS;qBAClC,sBAAsB,GAAG,SAAS;uBAChC,eAAe,GAAG,SAAS;yBACzB,iBAAiB,GAAG,SAAS;;;;;CAsC7C,CAAC"}
1
+ {"version":3,"file":"LocalRuntimeOptions.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE;QACR,SAAS,EAAE,gBAAgB,CAAC;QAC5B,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;QAC3C,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;QAC5C,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;QACvC,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;KAC5C,CAAC;IAEF;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAChD,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAC5E,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;CAC/E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,mBAAmB,EACpE,SAAS,CAAC;;;;;;uBAtBG,gBAAgB;sBACjB,oBAAoB,GAAG,SAAS;0BAC5B,iBAAiB,GAAG,SAAS;qBAClC,sBAAsB,GAAG,SAAS;uBAChC,eAAe,GAAG,SAAS;yBACzB,iBAAiB,GAAG,SAAS;;;;;CAsC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeOptions.tsx"],"sourcesContent":["import { ThreadHistoryAdapter } from \"../adapters/thread-history/ThreadHistoryAdapter\";\nimport { AttachmentAdapter } from \"../adapters/attachment/AttachmentAdapter\";\nimport { ThreadMessageLike } from \"../external-store\";\nimport { FeedbackAdapter } from \"../adapters/feedback/FeedbackAdapter\";\nimport { SpeechSynthesisAdapter } from \"../adapters/speech/SpeechAdapterTypes\";\nimport { ChatModelAdapter } from \"./ChatModelAdapter\";\nimport { AssistantCloud } from \"../../cloud\";\nimport { SuggestionAdapter } from \"../adapters\";\n\nexport type LocalRuntimeOptionsBase = {\n maxSteps?: number | undefined;\n adapters: {\n chatModel: ChatModelAdapter;\n history?: ThreadHistoryAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n suggestion?: SuggestionAdapter | undefined;\n };\n\n /**\n * Names of tools that are allowed to interrupt the run in order to wait for human/external approval.\n */\n unstable_humanToolNames?: string[] | undefined;\n};\n\n// TODO align LocalRuntimeOptions with LocalRuntimeOptionsBase\nexport type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, \"adapters\"> & {\n cloud?: AssistantCloud | undefined;\n initialMessages?: readonly ThreadMessageLike[] | undefined;\n adapters?: Omit<LocalRuntimeOptionsBase[\"adapters\"], \"chatModel\"> | undefined;\n};\n\nexport const splitLocalRuntimeOptions = <T extends LocalRuntimeOptions>(\n options: T,\n) => {\n const {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n ...rest\n } = options;\n\n return {\n localRuntimeOptions: {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n },\n otherOptions: rest,\n };\n};\n"],"mappings":";AAiCO,IAAM,2BAA2B,CACtC,YACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,SAAO;AAAA,IACL,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,EAChB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeOptions.tsx"],"sourcesContent":["import { ThreadHistoryAdapter } from \"../adapters/thread-history/ThreadHistoryAdapter\";\nimport { AttachmentAdapter } from \"../adapters/attachment/AttachmentAdapter\";\nimport { ThreadMessageLike } from \"../external-store\";\nimport { FeedbackAdapter } from \"../adapters/feedback/FeedbackAdapter\";\nimport { SpeechSynthesisAdapter } from \"../adapters/speech/SpeechAdapterTypes\";\nimport { ChatModelAdapter } from \"./ChatModelAdapter\";\nimport { AssistantCloud } from \"assistant-cloud\";\nimport { SuggestionAdapter } from \"../adapters\";\n\nexport type LocalRuntimeOptionsBase = {\n maxSteps?: number | undefined;\n adapters: {\n chatModel: ChatModelAdapter;\n history?: ThreadHistoryAdapter | undefined;\n attachments?: AttachmentAdapter | undefined;\n speech?: SpeechSynthesisAdapter | undefined;\n feedback?: FeedbackAdapter | undefined;\n suggestion?: SuggestionAdapter | undefined;\n };\n\n /**\n * Names of tools that are allowed to interrupt the run in order to wait for human/external approval.\n */\n unstable_humanToolNames?: string[] | undefined;\n};\n\n// TODO align LocalRuntimeOptions with LocalRuntimeOptionsBase\nexport type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, \"adapters\"> & {\n cloud?: AssistantCloud | undefined;\n initialMessages?: readonly ThreadMessageLike[] | undefined;\n adapters?: Omit<LocalRuntimeOptionsBase[\"adapters\"], \"chatModel\"> | undefined;\n};\n\nexport const splitLocalRuntimeOptions = <T extends LocalRuntimeOptions>(\n options: T,\n) => {\n const {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n ...rest\n } = options;\n\n return {\n localRuntimeOptions: {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n },\n otherOptions: rest,\n };\n};\n"],"mappings":";AAiCO,IAAM,2BAA2B,CACtC,YACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,SAAO;AAAA,IACL,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,EAChB;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- export { useLocalRuntime } from "./useLocalRuntime";
1
+ export { useLocalRuntime, useLocalThreadRuntime } from "./useLocalRuntime";
2
2
  export type { LocalRuntimeOptions } from "./LocalRuntimeOptions";
3
3
  export type { ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, ChatModelRunUpdate, } from "./ChatModelAdapter";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // src/runtimes/local/index.ts
2
- import { useLocalRuntime } from "./useLocalRuntime.js";
2
+ import { useLocalRuntime, useLocalThreadRuntime } from "./useLocalRuntime.js";
3
3
  export {
4
- useLocalRuntime
4
+ useLocalRuntime,
5
+ useLocalThreadRuntime
5
6
  };
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/index.ts"],"sourcesContent":["export { useLocalRuntime } from \"./useLocalRuntime\";\nexport type { LocalRuntimeOptions } from \"./LocalRuntimeOptions\";\nexport type {\n ChatModelAdapter,\n ChatModelRunOptions,\n ChatModelRunResult,\n ChatModelRunUpdate,\n} from \"./ChatModelAdapter\";\n"],"mappings":";AAAA,SAAS,uBAAuB;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/index.ts"],"sourcesContent":["export { useLocalRuntime, useLocalThreadRuntime } from \"./useLocalRuntime\";\nexport type { LocalRuntimeOptions } from \"./LocalRuntimeOptions\";\nexport type {\n ChatModelAdapter,\n ChatModelRunOptions,\n ChatModelRunResult,\n ChatModelRunUpdate,\n} from \"./ChatModelAdapter\";\n"],"mappings":";AAAA,SAAS,iBAAiB,6BAA6B;","names":[]}
@@ -1,4 +1,4 @@
1
- import { AssistantCloud } from "../../../cloud";
1
+ import { AssistantCloud } from "assistant-cloud";
2
2
  import { RemoteThreadListAdapter } from "../types";
3
3
  type ThreadData = {
4
4
  externalId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/remote-thread-list/adapter/cloud.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAKnD,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAEnC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC;AASF,eAAO,MAAM,yBAAyB,GACpC,SAAS,6BAA6B,KACrC,uBA4EF,CAAC"}
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/remote-thread-list/adapter/cloud.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAKnD,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAEnC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC;AASF,eAAO,MAAM,yBAAyB,GACpC,SAAS,6BAA6B,KACrC,uBA4EF,CAAC"}
@@ -5,7 +5,7 @@ import {
5
5
  useMemo,
6
6
  useRef
7
7
  } from "react";
8
- import { AssistantCloud } from "../../../cloud/index.js";
8
+ import { AssistantCloud } from "assistant-cloud";
9
9
  import { useAssistantCloudThreadHistoryAdapter } from "../../../cloud/AssistantCloudThreadHistoryAdapter.js";
10
10
  import { RuntimeAdapterProvider } from "../../adapters/RuntimeAdapterProvider.js";
11
11
  import { InMemoryThreadListAdapter } from "./in-memory.js";