1
0
into-the-llm/interface/index.html

96 lines
3.1 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Into The Breach as a Service</title>
<style>
body {
font-family: Arial, sans-serif;
padding: 20px;
}
#screenshot {
margin-top: 20px;
cursor: pointer;
}
.message {
margin-top: 20px;
color: green;
}
</style>
<script>
function takeScreenshot() {
fetch('/screenshot')
.then(response => response.blob())
.then(imageBlob => {
const imageUrl = URL.createObjectURL(imageBlob);
const screenshotImage = document.getElementById('screenshot');
screenshotImage.src = imageUrl;
screenshotImage.style.display = 'block';
})
.catch(error => {
console.error('Error taking screenshot:', error);
});
}
function handleClick(event) {
const x = event.pageX - this.offsetLeft;
const y = event.pageY - this.offsetTop;
fetch(`/click/${x}/${y}`)
.then(response => response.text())
.then(message => {
document.getElementById('click-message').innerText = message;
})
.then(() => {
takeScreenshot();
})
.catch(error => {
console.error('Error triggering click:', error);
});
}
function updateChat() {
fetch("/messages")
.then(response => response.json())
.then(messages => {
const historyDiv = document.getElementById('chat-history');
historyDiv.innerHTML = "";
const definitionList = document.createElement('dl')
historyDiv.append(definitionList);
messages.forEach(message => {
const dt = document.createElement('dt');
dt.textContent = message.role;
const dd = document.createElement('dd');
dd.textContent = message.content[0].text || message.content[1].text;
definitionList.append(dt);
definitionList.append(dd);
});
});
}
function refresh() {
takeScreenshot();
updateChat();
setTimeout(refresh, 500);
}
function init() {
const clickableImage = document.getElementById('screenshot');
clickableImage.addEventListener('click', handleClick);
refresh();
}
</script>
</head>
<body onload="init()">
<div id="screenshot-div">
<p><strong>Click on the Image to Trigger Click at X, Y:</strong></p>
<img id="screenshot" width='1280px' height='720px' style="display:none;" />
</div>
<div class="message" id="click-message"></div>
<div id="chat-history"> </div>
</body>
</html>