@gobolt/genesis 0.3.3 → 0.3.4

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.
@@ -13,6 +13,7 @@ export interface ChatProps {
13
13
  messageHistory: Array<Message>;
14
14
  title?: string;
15
15
  isSimulated?: boolean;
16
+ authToken?: string;
16
17
  }
17
18
  declare const Chat: FC<ChatProps>;
18
19
  export default Chat;
@@ -14,6 +14,8 @@ declare const meta: {
14
14
  };
15
15
  export default meta;
16
16
  type Story = StoryObj<typeof meta>;
17
- export declare const Default: Story;
17
+ export declare const local: Story;
18
+ export declare const remote: Story;
18
19
  export declare const WithMessageHistory: Story;
19
20
  export declare const WithTitle: Story;
21
+ export declare const Remote: Story;
package/dist/index.cjs CHANGED
@@ -75386,7 +75386,8 @@ const Chat = ({
75386
75386
  isOpen = false,
75387
75387
  messageHistory = [],
75388
75388
  title = null,
75389
- isSimulated = false
75389
+ isSimulated = false,
75390
+ authToken
75390
75391
  }) => {
75391
75392
  const [isChatOpen, setIsChatOpen] = React.useState(isOpen);
75392
75393
  const [message2, setMessage] = React.useState("");
@@ -75402,104 +75403,131 @@ const Chat = ({
75402
75403
  if (isSimulated) return;
75403
75404
  const socketUrlToUse = window.location.hostname === "localhost" && window.location.port === "6006" ? "http://localhost:3000" : socketUrl;
75404
75405
  console.log("Connecting to socket server at:", socketUrlToUse);
75405
- socketRef.current = lookup(socketUrlToUse, {
75406
- transports: ["polling", "websocket"],
75407
- reconnection: true,
75408
- reconnectionAttempts: 5,
75409
- reconnectionDelay: 1e3,
75410
- withCredentials: true,
75411
- forceNew: true,
75412
- autoConnect: true,
75413
- timeout: 1e4
75414
- });
75415
- const socket = socketRef.current;
75416
- socket.on("connect", () => {
75417
- console.log("Socket connected successfully");
75418
- setServerError("");
75419
- setServerStatus("ready");
75420
- serverReadyRef.current = true;
75421
- });
75422
- socket.on("connect_error", (error2) => {
75423
- console.error("Socket connection error:", error2);
75424
- setServerError(`Connection error: ${error2.message}`);
75425
- setServerStatus("error");
75426
- serverReadyRef.current = false;
75427
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75428
- setIsLocked(false);
75429
- });
75430
- socket.on("disconnect", (reason) => {
75431
- console.log("Socket disconnected:", reason);
75432
- setServerError(`Disconnected: ${reason}`);
75433
- setServerStatus("error");
75434
- serverReadyRef.current = false;
75435
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75436
- setIsLocked(false);
75437
- });
75438
- socket.on("new connection", () => {
75439
- console.log("New connection established");
75440
- });
75441
- socket.on("server-ready", () => {
75442
- console.log("Server is ready");
75443
- setServerError("");
75444
- setServerStatus("ready");
75445
- serverReadyRef.current = true;
75446
- });
75447
- socket.on("message", (newMessage) => {
75448
- setMessages((prev2) => {
75449
- if (newMessage.sender === "bot") {
75450
- if (newMessage.content === "Processing your message...") {
75451
- const hasThinkingMessage = prev2.some((msg) => msg.isThinking);
75452
- if (hasThinkingMessage) {
75453
- return prev2;
75406
+ const validateToken = async () => {
75407
+ try {
75408
+ const response = await fetch(
75409
+ "https://www.googleapis.com/oauth2/v2/userinfo",
75410
+ {
75411
+ headers: {
75412
+ Authorization: `Bearer ${authToken}`
75454
75413
  }
75455
- return [...prev2, { ...newMessage, isThinking: true }];
75456
75414
  }
75457
- const thinkingMessage = prev2.find((msg) => msg.isThinking);
75458
- if (thinkingMessage) {
75459
- return prev2.map(
75460
- (msg) => msg.isThinking ? { ...newMessage, isThinking: false } : msg
75415
+ );
75416
+ if (!response.ok) {
75417
+ throw new Error("Invalid token");
75418
+ }
75419
+ socketRef.current = lookup(socketUrlToUse, {
75420
+ transports: ["polling", "websocket"],
75421
+ reconnection: true,
75422
+ reconnectionAttempts: 5,
75423
+ reconnectionDelay: 1e3,
75424
+ withCredentials: true,
75425
+ forceNew: true,
75426
+ autoConnect: true,
75427
+ timeout: 1e4,
75428
+ auth: {
75429
+ token: authToken,
75430
+ type: "Bearer"
75431
+ }
75432
+ });
75433
+ const socket = socketRef.current;
75434
+ socket.on("connect", () => {
75435
+ console.log("Socket connected successfully");
75436
+ setServerError("");
75437
+ setServerStatus("ready");
75438
+ serverReadyRef.current = true;
75439
+ });
75440
+ socket.on("connect_error", (error2) => {
75441
+ console.error("Socket connection error:", error2);
75442
+ setServerError(`Connection error: ${error2.message}`);
75443
+ setServerStatus("error");
75444
+ serverReadyRef.current = false;
75445
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75446
+ setIsLocked(false);
75447
+ });
75448
+ socket.on("disconnect", (reason) => {
75449
+ console.log("Socket disconnected:", reason);
75450
+ setServerError(`Disconnected: ${reason}`);
75451
+ setServerStatus("error");
75452
+ serverReadyRef.current = false;
75453
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75454
+ setIsLocked(false);
75455
+ });
75456
+ socket.on("new connection", () => {
75457
+ console.log("New connection established");
75458
+ });
75459
+ socket.on("server-ready", () => {
75460
+ console.log("Server is ready");
75461
+ setServerError("");
75462
+ setServerStatus("ready");
75463
+ serverReadyRef.current = true;
75464
+ });
75465
+ socket.on("message", (newMessage) => {
75466
+ setMessages((prev2) => {
75467
+ if (newMessage.sender === "bot") {
75468
+ if (newMessage.content === "Processing your message...") {
75469
+ const hasThinkingMessage = prev2.some((msg) => msg.isThinking);
75470
+ if (hasThinkingMessage) {
75471
+ return prev2;
75472
+ }
75473
+ return [...prev2, { ...newMessage, isThinking: true }];
75474
+ }
75475
+ const thinkingMessage = prev2.find((msg) => msg.isThinking);
75476
+ if (thinkingMessage) {
75477
+ return prev2.map(
75478
+ (msg) => msg.isThinking ? { ...newMessage, isThinking: false } : msg
75479
+ );
75480
+ }
75481
+ return [...prev2, { ...newMessage, isThinking: false }];
75482
+ }
75483
+ const lastUserMsg = [...prev2].reverse().find((msg) => msg.sender === "user");
75484
+ if (lastUserMsg && lastUserMsg.content === newMessage.content) {
75485
+ return prev2;
75486
+ }
75487
+ return [...prev2, newMessage];
75488
+ });
75489
+ setIsLocked(false);
75490
+ });
75491
+ socket.on("update-bot-message", (updatedData) => {
75492
+ console.log("Received bot message update:", updatedData);
75493
+ setMessages(
75494
+ (prev2) => prev2.map(
75495
+ (message22) => message22.id === updatedData.id ? { ...updatedData } : message22
75496
+ )
75497
+ );
75498
+ });
75499
+ socket.on("error", (error2) => {
75500
+ console.error("Socket error:", error2);
75501
+ setServerError("Server error occurred");
75502
+ });
75503
+ socket.onAny((eventName, ...args) => {
75504
+ console.log(`Socket event received: ${eventName}`, args);
75505
+ });
75506
+ const timeoutId = setTimeout(() => {
75507
+ if (!serverReadyRef.current) {
75508
+ console.log("Server status check failed");
75509
+ setServerError(
75510
+ "Server status check failed - please check the server"
75461
75511
  );
75512
+ setServerStatus("error");
75513
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75514
+ setIsLocked(false);
75462
75515
  }
75463
- return [...prev2, { ...newMessage, isThinking: false }];
75464
- }
75465
- const lastUserMsg = [...prev2].reverse().find((msg) => msg.sender === "user");
75466
- if (lastUserMsg && lastUserMsg.content === newMessage.content) {
75467
- return prev2;
75468
- }
75469
- return [...prev2, newMessage];
75470
- });
75471
- setIsLocked(false);
75472
- });
75473
- socket.on("update-bot-message", (updatedData) => {
75474
- console.log("Received bot message update:", updatedData);
75475
- setMessages(
75476
- (prev2) => prev2.map(
75477
- (message22) => message22.id === updatedData.id ? { ...updatedData } : message22
75478
- )
75479
- );
75480
- });
75481
- socket.on("error", (error2) => {
75482
- console.error("Socket error:", error2);
75483
- setServerError("Server error occurred");
75484
- });
75485
- socket.onAny((eventName, ...args) => {
75486
- console.log(`Socket event received: ${eventName}`, args);
75487
- });
75488
- const timeoutId = setTimeout(() => {
75489
- if (!serverReadyRef.current) {
75490
- console.log("Server status check failed");
75491
- setServerError("Server status check failed - please check the server");
75516
+ }, 2e3);
75517
+ return () => {
75518
+ console.log("Disconnecting socket");
75519
+ socket.disconnect();
75520
+ clearTimeout(timeoutId);
75521
+ };
75522
+ } catch (error2) {
75523
+ console.error("Token validation error:", error2);
75524
+ setServerError("Authentication error: Invalid token");
75492
75525
  setServerStatus("error");
75493
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75494
- setIsLocked(false);
75526
+ serverReadyRef.current = false;
75495
75527
  }
75496
- }, 2e3);
75497
- return () => {
75498
- console.log("Disconnecting socket");
75499
- socket.disconnect();
75500
- clearTimeout(timeoutId);
75501
75528
  };
75502
- }, [isSimulated, socketUrl]);
75529
+ validateToken();
75530
+ }, [isSimulated, socketUrl, authToken]);
75503
75531
  React.useEffect(() => {
75504
75532
  if (messageListRef.current) {
75505
75533
  messageListRef.current.scrollTo({
package/dist/index.js CHANGED
@@ -75368,7 +75368,8 @@ const Chat = ({
75368
75368
  isOpen = false,
75369
75369
  messageHistory = [],
75370
75370
  title = null,
75371
- isSimulated = false
75371
+ isSimulated = false,
75372
+ authToken
75372
75373
  }) => {
75373
75374
  const [isChatOpen, setIsChatOpen] = useState(isOpen);
75374
75375
  const [message2, setMessage] = useState("");
@@ -75384,104 +75385,131 @@ const Chat = ({
75384
75385
  if (isSimulated) return;
75385
75386
  const socketUrlToUse = window.location.hostname === "localhost" && window.location.port === "6006" ? "http://localhost:3000" : socketUrl;
75386
75387
  console.log("Connecting to socket server at:", socketUrlToUse);
75387
- socketRef.current = lookup(socketUrlToUse, {
75388
- transports: ["polling", "websocket"],
75389
- reconnection: true,
75390
- reconnectionAttempts: 5,
75391
- reconnectionDelay: 1e3,
75392
- withCredentials: true,
75393
- forceNew: true,
75394
- autoConnect: true,
75395
- timeout: 1e4
75396
- });
75397
- const socket = socketRef.current;
75398
- socket.on("connect", () => {
75399
- console.log("Socket connected successfully");
75400
- setServerError("");
75401
- setServerStatus("ready");
75402
- serverReadyRef.current = true;
75403
- });
75404
- socket.on("connect_error", (error2) => {
75405
- console.error("Socket connection error:", error2);
75406
- setServerError(`Connection error: ${error2.message}`);
75407
- setServerStatus("error");
75408
- serverReadyRef.current = false;
75409
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75410
- setIsLocked(false);
75411
- });
75412
- socket.on("disconnect", (reason) => {
75413
- console.log("Socket disconnected:", reason);
75414
- setServerError(`Disconnected: ${reason}`);
75415
- setServerStatus("error");
75416
- serverReadyRef.current = false;
75417
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75418
- setIsLocked(false);
75419
- });
75420
- socket.on("new connection", () => {
75421
- console.log("New connection established");
75422
- });
75423
- socket.on("server-ready", () => {
75424
- console.log("Server is ready");
75425
- setServerError("");
75426
- setServerStatus("ready");
75427
- serverReadyRef.current = true;
75428
- });
75429
- socket.on("message", (newMessage) => {
75430
- setMessages((prev2) => {
75431
- if (newMessage.sender === "bot") {
75432
- if (newMessage.content === "Processing your message...") {
75433
- const hasThinkingMessage = prev2.some((msg) => msg.isThinking);
75434
- if (hasThinkingMessage) {
75435
- return prev2;
75388
+ const validateToken = async () => {
75389
+ try {
75390
+ const response = await fetch(
75391
+ "https://www.googleapis.com/oauth2/v2/userinfo",
75392
+ {
75393
+ headers: {
75394
+ Authorization: `Bearer ${authToken}`
75436
75395
  }
75437
- return [...prev2, { ...newMessage, isThinking: true }];
75438
75396
  }
75439
- const thinkingMessage = prev2.find((msg) => msg.isThinking);
75440
- if (thinkingMessage) {
75441
- return prev2.map(
75442
- (msg) => msg.isThinking ? { ...newMessage, isThinking: false } : msg
75397
+ );
75398
+ if (!response.ok) {
75399
+ throw new Error("Invalid token");
75400
+ }
75401
+ socketRef.current = lookup(socketUrlToUse, {
75402
+ transports: ["polling", "websocket"],
75403
+ reconnection: true,
75404
+ reconnectionAttempts: 5,
75405
+ reconnectionDelay: 1e3,
75406
+ withCredentials: true,
75407
+ forceNew: true,
75408
+ autoConnect: true,
75409
+ timeout: 1e4,
75410
+ auth: {
75411
+ token: authToken,
75412
+ type: "Bearer"
75413
+ }
75414
+ });
75415
+ const socket = socketRef.current;
75416
+ socket.on("connect", () => {
75417
+ console.log("Socket connected successfully");
75418
+ setServerError("");
75419
+ setServerStatus("ready");
75420
+ serverReadyRef.current = true;
75421
+ });
75422
+ socket.on("connect_error", (error2) => {
75423
+ console.error("Socket connection error:", error2);
75424
+ setServerError(`Connection error: ${error2.message}`);
75425
+ setServerStatus("error");
75426
+ serverReadyRef.current = false;
75427
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75428
+ setIsLocked(false);
75429
+ });
75430
+ socket.on("disconnect", (reason) => {
75431
+ console.log("Socket disconnected:", reason);
75432
+ setServerError(`Disconnected: ${reason}`);
75433
+ setServerStatus("error");
75434
+ serverReadyRef.current = false;
75435
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75436
+ setIsLocked(false);
75437
+ });
75438
+ socket.on("new connection", () => {
75439
+ console.log("New connection established");
75440
+ });
75441
+ socket.on("server-ready", () => {
75442
+ console.log("Server is ready");
75443
+ setServerError("");
75444
+ setServerStatus("ready");
75445
+ serverReadyRef.current = true;
75446
+ });
75447
+ socket.on("message", (newMessage) => {
75448
+ setMessages((prev2) => {
75449
+ if (newMessage.sender === "bot") {
75450
+ if (newMessage.content === "Processing your message...") {
75451
+ const hasThinkingMessage = prev2.some((msg) => msg.isThinking);
75452
+ if (hasThinkingMessage) {
75453
+ return prev2;
75454
+ }
75455
+ return [...prev2, { ...newMessage, isThinking: true }];
75456
+ }
75457
+ const thinkingMessage = prev2.find((msg) => msg.isThinking);
75458
+ if (thinkingMessage) {
75459
+ return prev2.map(
75460
+ (msg) => msg.isThinking ? { ...newMessage, isThinking: false } : msg
75461
+ );
75462
+ }
75463
+ return [...prev2, { ...newMessage, isThinking: false }];
75464
+ }
75465
+ const lastUserMsg = [...prev2].reverse().find((msg) => msg.sender === "user");
75466
+ if (lastUserMsg && lastUserMsg.content === newMessage.content) {
75467
+ return prev2;
75468
+ }
75469
+ return [...prev2, newMessage];
75470
+ });
75471
+ setIsLocked(false);
75472
+ });
75473
+ socket.on("update-bot-message", (updatedData) => {
75474
+ console.log("Received bot message update:", updatedData);
75475
+ setMessages(
75476
+ (prev2) => prev2.map(
75477
+ (message22) => message22.id === updatedData.id ? { ...updatedData } : message22
75478
+ )
75479
+ );
75480
+ });
75481
+ socket.on("error", (error2) => {
75482
+ console.error("Socket error:", error2);
75483
+ setServerError("Server error occurred");
75484
+ });
75485
+ socket.onAny((eventName, ...args) => {
75486
+ console.log(`Socket event received: ${eventName}`, args);
75487
+ });
75488
+ const timeoutId = setTimeout(() => {
75489
+ if (!serverReadyRef.current) {
75490
+ console.log("Server status check failed");
75491
+ setServerError(
75492
+ "Server status check failed - please check the server"
75443
75493
  );
75494
+ setServerStatus("error");
75495
+ setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75496
+ setIsLocked(false);
75444
75497
  }
75445
- return [...prev2, { ...newMessage, isThinking: false }];
75446
- }
75447
- const lastUserMsg = [...prev2].reverse().find((msg) => msg.sender === "user");
75448
- if (lastUserMsg && lastUserMsg.content === newMessage.content) {
75449
- return prev2;
75450
- }
75451
- return [...prev2, newMessage];
75452
- });
75453
- setIsLocked(false);
75454
- });
75455
- socket.on("update-bot-message", (updatedData) => {
75456
- console.log("Received bot message update:", updatedData);
75457
- setMessages(
75458
- (prev2) => prev2.map(
75459
- (message22) => message22.id === updatedData.id ? { ...updatedData } : message22
75460
- )
75461
- );
75462
- });
75463
- socket.on("error", (error2) => {
75464
- console.error("Socket error:", error2);
75465
- setServerError("Server error occurred");
75466
- });
75467
- socket.onAny((eventName, ...args) => {
75468
- console.log(`Socket event received: ${eventName}`, args);
75469
- });
75470
- const timeoutId = setTimeout(() => {
75471
- if (!serverReadyRef.current) {
75472
- console.log("Server status check failed");
75473
- setServerError("Server status check failed - please check the server");
75498
+ }, 2e3);
75499
+ return () => {
75500
+ console.log("Disconnecting socket");
75501
+ socket.disconnect();
75502
+ clearTimeout(timeoutId);
75503
+ };
75504
+ } catch (error2) {
75505
+ console.error("Token validation error:", error2);
75506
+ setServerError("Authentication error: Invalid token");
75474
75507
  setServerStatus("error");
75475
- setMessages((prev2) => prev2.filter((msg) => !msg.isThinking));
75476
- setIsLocked(false);
75508
+ serverReadyRef.current = false;
75477
75509
  }
75478
- }, 2e3);
75479
- return () => {
75480
- console.log("Disconnecting socket");
75481
- socket.disconnect();
75482
- clearTimeout(timeoutId);
75483
75510
  };
75484
- }, [isSimulated, socketUrl]);
75511
+ validateToken();
75512
+ }, [isSimulated, socketUrl, authToken]);
75485
75513
  useEffect(() => {
75486
75514
  if (messageListRef.current) {
75487
75515
  messageListRef.current.scrollTo({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobolt/genesis",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "genesis design system",
5
5
  "author": "gobolt",
6
6
  "license": "MIT",