@paymanai/payman-typescript-ask-sdk 4.0.5 → 4.0.7

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.
@@ -983,9 +983,28 @@ function buildRequestBody(config, userMessage, sessionId, options) {
983
983
  sessionOwnerId,
984
984
  sessionOwnerLabel: sessionOwner?.name || void 0,
985
985
  sessionAttributes,
986
- analysisMode: options?.analysisMode
986
+ analysisMode: options?.analysisMode,
987
+ locale: resolveLocale(config.locale),
988
+ timezone: resolveTimezone(config.timezone)
987
989
  };
988
990
  }
991
+ function resolveLocale(configured) {
992
+ if (configured && configured.trim().length > 0) return configured.trim();
993
+ if (typeof navigator !== "undefined") {
994
+ const navLocale = navigator.language;
995
+ if (navLocale && navLocale.length > 0) return navLocale;
996
+ }
997
+ return "en-US";
998
+ }
999
+ function resolveTimezone(configured) {
1000
+ if (configured && configured.trim().length > 0) return configured.trim();
1001
+ try {
1002
+ const zone = Intl.DateTimeFormat().resolvedOptions().timeZone;
1003
+ if (zone && zone.length > 0) return zone;
1004
+ } catch {
1005
+ }
1006
+ return "UTC";
1007
+ }
989
1008
  function buildStreamingUrl(config) {
990
1009
  const endpoint = config.api.streamEndpoint || DEFAULT_STREAM_ENDPOINT;
991
1010
  const stage = config.stage || "DEV";
@@ -1433,14 +1452,24 @@ function useStreamManagerV2(config, callbacks, setMessages, setIsWaitingForRespo
1433
1452
  }
1434
1453
 
1435
1454
  // src/hooks/useChatV2.ts
1455
+ function getStoredOrInitialMessages(config) {
1456
+ if (!config.userId) return config.initialMessages ?? [];
1457
+ const stored = chatStore.get(config.userId);
1458
+ if (stored.length > 0) return stored;
1459
+ if (config.initialMessages?.length) {
1460
+ chatStore.set(config.userId, config.initialMessages);
1461
+ return config.initialMessages;
1462
+ }
1463
+ return [];
1464
+ }
1465
+ function getSessionIdFromMessages(messages) {
1466
+ return messages.find((message) => message.sessionId)?.sessionId;
1467
+ }
1436
1468
  function useChatV2(config, callbacks = {}) {
1437
- const [messages, setMessages] = react.useState(() => {
1438
- if (config.userId) return chatStore.get(config.userId);
1439
- return config.initialMessages ?? [];
1440
- });
1469
+ const [messages, setMessages] = react.useState(() => getStoredOrInitialMessages(config));
1441
1470
  const [isWaitingForResponse, setIsWaitingForResponse] = react.useState(false);
1442
1471
  const sessionIdRef = react.useRef(
1443
- config.userId ? chatStore.get(config.userId).find((m) => m.sessionId)?.sessionId ?? config.initialSessionId ?? void 0 : config.initialSessionId ?? void 0
1472
+ getSessionIdFromMessages(getStoredOrInitialMessages(config)) ?? config.initialSessionId ?? void 0
1444
1473
  );
1445
1474
  const prevUserIdRef = react.useRef(config.userId);
1446
1475
  const callbacksRef = react.useRef(callbacks);
@@ -1684,7 +1713,7 @@ function useChatV2(config, callbacks = {}) {
1684
1713
  setIsWaitingForResponse(active.isWaiting);
1685
1714
  }
1686
1715
  return unsubscribe;
1687
- }, []);
1716
+ }, [config.userId]);
1688
1717
  react.useEffect(() => {
1689
1718
  if (!config.userId) return;
1690
1719
  const toSave = messages.filter((m) => !m.isStreaming);
@@ -1692,6 +1721,13 @@ function useChatV2(config, callbacks = {}) {
1692
1721
  chatStore.set(config.userId, toSave);
1693
1722
  }
1694
1723
  }, [messages, config.userId]);
1724
+ react.useEffect(() => {
1725
+ if (!config.userId || activeStreamStore.has(config.userId)) return;
1726
+ if (!config.initialMessages?.length || messagesRef.current.length > 0) return;
1727
+ chatStore.set(config.userId, config.initialMessages);
1728
+ setMessages(config.initialMessages);
1729
+ sessionIdRef.current = getSessionIdFromMessages(config.initialMessages) ?? config.initialSessionId;
1730
+ }, [config.initialMessages, config.initialSessionId, config.userId]);
1695
1731
  react.useEffect(() => {
1696
1732
  const prevUserId = prevUserIdRef.current;
1697
1733
  prevUserIdRef.current = config.userId;
@@ -1703,11 +1739,19 @@ function useChatV2(config, callbacks = {}) {
1703
1739
  setIsWaitingForResponse(false);
1704
1740
  setUserActionState({ request: null, result: null, clearOtpTrigger: 0 });
1705
1741
  } else if (config.userId) {
1706
- const stored = chatStore.get(config.userId);
1707
- setMessages(stored);
1708
- sessionIdRef.current = stored.find((m) => m.sessionId)?.sessionId;
1742
+ const active = activeStreamStore.get(config.userId);
1743
+ if (active) {
1744
+ setMessages(active.messages);
1745
+ setIsWaitingForResponse(active.isWaiting);
1746
+ sessionIdRef.current = getSessionIdFromMessages(active.messages) ?? config.initialSessionId;
1747
+ return;
1748
+ }
1749
+ const nextMessages = getStoredOrInitialMessages(config);
1750
+ setMessages(nextMessages);
1751
+ sessionIdRef.current = getSessionIdFromMessages(nextMessages) ?? config.initialSessionId;
1752
+ setIsWaitingForResponse(false);
1709
1753
  }
1710
- }, [config.userId]);
1754
+ }, [config]);
1711
1755
  return {
1712
1756
  messages,
1713
1757
  sendMessage,