@liveblocks/react 3.7.1 → 3.8.0-next1

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.
@@ -2151,6 +2151,7 @@ function makeLiveblocksContextBundle(client) {
2151
2151
  useAiChats,
2152
2152
  useAiChat,
2153
2153
  useAiChatMessages,
2154
+ useAiChatStatus,
2154
2155
  useCreateAiChat,
2155
2156
  useDeleteAiChat,
2156
2157
  useSendAiMessage,
@@ -2170,6 +2171,7 @@ function makeLiveblocksContextBundle(client) {
2170
2171
  useAiChats: useAiChatsSuspense,
2171
2172
  useAiChat: useAiChatSuspense,
2172
2173
  useAiChatMessages: useAiChatMessagesSuspense,
2174
+ useAiChatStatus,
2173
2175
  useCreateAiChat,
2174
2176
  useDeleteAiChat,
2175
2177
  useSendAiMessage,
@@ -2746,6 +2748,43 @@ function useDeleteAiChat() {
2746
2748
  [client]
2747
2749
  );
2748
2750
  }
2751
+ var LOADING = Object.freeze({ status: "loading" });
2752
+ var IDLE = Object.freeze({ status: "idle" });
2753
+ function useAiChatStatus(chatId, branchId) {
2754
+ const client = useClient();
2755
+ const store = getUmbrellaStoreForClient(client);
2756
+ useEnsureAiConnection(client);
2757
+ useEffect4(
2758
+ () => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(branchId ?? null).waitUntilLoaded()
2759
+ );
2760
+ return useSignal(
2761
+ // Signal
2762
+ store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(branchId ?? null).signal,
2763
+ // Selector
2764
+ (result) => {
2765
+ if (result.isLoading) return LOADING;
2766
+ if (result.error) return IDLE;
2767
+ const messages = result.messages;
2768
+ const lastMessage = messages[messages.length - 1];
2769
+ if (lastMessage?.role !== "assistant") return IDLE;
2770
+ if (lastMessage.status !== "generating" && lastMessage.status !== "awaiting-tool")
2771
+ return IDLE;
2772
+ const contentSoFar = lastMessage.contentSoFar;
2773
+ const lastPart = contentSoFar[contentSoFar.length - 1];
2774
+ if (lastPart?.type === "tool-invocation") {
2775
+ return {
2776
+ status: "generating",
2777
+ partType: "tool-invocation",
2778
+ toolName: lastPart.name
2779
+ };
2780
+ } else {
2781
+ return { status: "generating", partType: lastPart?.type };
2782
+ }
2783
+ },
2784
+ // Consider { status: "generating", partType: "text" } and { status: "generating", partType: "text" } equal
2785
+ shallow3
2786
+ );
2787
+ }
2749
2788
  function useSendAiMessage(chatId, options) {
2750
2789
  const client = useClient();
2751
2790
  return useCallback2(
@@ -4692,6 +4731,7 @@ export {
4692
4731
  getUmbrellaStoreForClient,
4693
4732
  useCreateAiChat,
4694
4733
  useDeleteAiChat,
4734
+ useAiChatStatus,
4695
4735
  useSendAiMessage,
4696
4736
  LiveblocksProvider,
4697
4737
  createLiveblocksContext,
@@ -4798,4 +4838,4 @@ export {
4798
4838
  _useStorageRoot,
4799
4839
  _useUpdateMyPresence
4800
4840
  };
4801
- //# sourceMappingURL=chunk-OKYUUXNY.js.map
4841
+ //# sourceMappingURL=chunk-GXPZZIB2.js.map