UNPKG

testeranto

Version:

the AI powered BDD test framework for typescript projects

67 lines (66 loc) 3.91 kB
import React from "react"; import { Modal, Button } from "react-bootstrap"; import { useFs } from "../../useFs"; export const MagicRobotModal = ({ customMessage, isWebSocketConnected, messageOption, navigate, projectName, runtime, setCustomMessage, setMessageOption, setShowAiderModal, setShowToast, setToastMessage, setToastVariant, showAiderModal, testName, }) => { const fs = useFs(); const onclick = async () => { try { const promptPath = `testeranto/reports/${projectName}/${testName .split(".") .slice(0, -1) .join(".")}/${runtime}/prompt.txt`; let command = `aider --load ${promptPath}`; if (messageOption === "default") { const messagePath = `testeranto/reports/${projectName}/${testName .split(".") .slice(0, -1) .join(".")}/${runtime}/message.txt`; command += ` --message-file ${messagePath}`; } else { command += ` --message "${customMessage}"`; } // Send command to server via the centralized WebSocket if (isWebSocketConnected) { fs.send(JSON.stringify({ type: "executeCommand", command: command, })); setToastMessage("Command sent to server"); setToastVariant("success"); setShowToast(true); setShowAiderModal(false); // Navigate to process manager page setTimeout(() => { navigate("/processes"); }, 1000); } else { setToastMessage("WebSocket connection not ready"); setToastVariant("danger"); setShowToast(true); } } catch (err) { console.error("WebSocket error:", err); setToastMessage("Error preparing command"); setToastVariant("danger"); setShowToast(true); } }; return (React.createElement(Modal, { show: showAiderModal, onHide: () => setShowAiderModal(false), size: "lg", onShow: () => setMessageOption("default") }, React.createElement(Modal.Header, { closeButton: true }, React.createElement(Modal.Title, null, "Aider")), React.createElement(Modal.Body, null, React.createElement("div", { className: "mb-3" }, React.createElement("div", { className: "form-check" }, React.createElement("input", { className: "form-check-input", type: "radio", name: "messageOption", id: "defaultMessage", value: "default", checked: messageOption === "default", onChange: () => setMessageOption("default") }), React.createElement("label", { className: "form-check-label", htmlFor: "defaultMessage" }, "Use default message.txt")), React.createElement("div", { className: "form-check" }, React.createElement("input", { className: "form-check-input", type: "radio", name: "messageOption", id: "customMessage", value: "custom", checked: messageOption === "custom", onChange: () => setMessageOption("custom") }), React.createElement("label", { className: "form-check-label", htmlFor: "customMessage" }, "Use custom message")), messageOption === "custom" && (React.createElement("div", { className: "mt-2" }, React.createElement("textarea", { className: "form-control", rows: 8, placeholder: "Enter your custom message", value: customMessage, onChange: (e) => setCustomMessage(e.target.value), style: { minHeight: "500px" } }))))), React.createElement(Modal.Footer, null, React.createElement(Button, { variant: "primary", onClick: onclick }, "Run Aider Command")))); };