File size: 1,479 Bytes
372531f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// /multi_agents/frontend/components/HumanFeedback.tsx

import React, { useState, useEffect } from 'react';

interface HumanFeedbackProps {
  websocket: WebSocket | null;
  onFeedbackSubmit: (feedback: string | null) => void;
  questionForHuman: boolean;
}

const HumanFeedback: React.FC<HumanFeedbackProps> = ({ questionForHuman, websocket, onFeedbackSubmit }) => {
  const [feedbackRequest, setFeedbackRequest] = useState<string | null>(null);
  const [userFeedback, setUserFeedback] = useState<string>('');

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    onFeedbackSubmit(userFeedback === '' ? null : userFeedback);
    setFeedbackRequest(null);
    setUserFeedback('');
  };

  return (
    <div className="bg-gray-100 p-4 rounded-lg shadow-md">

      <h3 className="text-lg font-semibold mb-2">Human Feedback Required</h3>

      <p className="mb-4">{questionForHuman}</p>

      <form onSubmit={handleSubmit}>

        <textarea

          className="w-full p-2 border rounded-md"

          value={userFeedback}

          onChange={(e) => setUserFeedback(e.target.value)}

          placeholder="Enter your feedback here (or leave blank for 'no')"

        />

        <button

          type="submit"

          className="mt-2 px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600"

        >

          Submit Feedback

        </button>

      </form>

    </div>
  );
};

export default HumanFeedback;