Add files via upload
Added new templates for model escape
This commit is contained in:
parent
7d373b8cf4
commit
4f6c22a9bb
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<title>This is hell</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="screen">
|
||||
<div id="screen" class="terminal_emulator"></div>
|
||||
</div>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,153 @@
|
|||
var TerminalEmulator = {
|
||||
init: function (screen) {
|
||||
var inst = Object.create(this);
|
||||
inst.screen = screen;
|
||||
inst.createInput();
|
||||
|
||||
return inst;
|
||||
},
|
||||
|
||||
createInput: function () {
|
||||
var inputField = document.createElement("div");
|
||||
var inputWrap = document.createElement("div");
|
||||
|
||||
inputField.className = "terminal_emulator__field";
|
||||
inputField.innerHTML = "";
|
||||
inputWrap.appendChild(inputField);
|
||||
this.screen.appendChild(inputWrap);
|
||||
this.field = inputField;
|
||||
this.fieldwrap = inputWrap;
|
||||
},
|
||||
|
||||
enterInput: function (input) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var randomSpeed = (max, min) => {
|
||||
return Math.random() * (max - min) + min;
|
||||
};
|
||||
|
||||
var speed = randomSpeed(70, 90);
|
||||
var i = 0;
|
||||
var str = "";
|
||||
var type = () => {
|
||||
str = str + input[i];
|
||||
this.field.innerHTML = str.replace(/ /g, " ");
|
||||
i++;
|
||||
|
||||
setTimeout(() => {
|
||||
if (i < input.length) {
|
||||
if (i % 5 === 0) speed = randomSpeed(80, 120);
|
||||
type();
|
||||
} else {
|
||||
console.log("tick");
|
||||
setTimeout(() => {
|
||||
console.log("tock");
|
||||
resolve();
|
||||
}, 400);
|
||||
}
|
||||
}, speed);
|
||||
};
|
||||
|
||||
type();
|
||||
});
|
||||
},
|
||||
|
||||
enterCommand: function () {
|
||||
return new Promise((resolve, reject) => {
|
||||
var resp = document.createElement("div");
|
||||
resp.className = "terminal_emulator__command";
|
||||
resp.innerHTML = this.field.innerHTML;
|
||||
this.screen.insertBefore(resp, this.fieldwrap);
|
||||
|
||||
this.field.innerHTML = "";
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
|
||||
enterResponse: function (response) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var resp = document.createElement("div");
|
||||
resp.className = "terminal_emulator__response";
|
||||
resp.innerHTML = response;
|
||||
this.screen.insertBefore(resp, this.fieldwrap);
|
||||
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
|
||||
wait: function (time, busy) {
|
||||
busy = busy === undefined ? true : busy;
|
||||
return new Promise((resolve, reject) => {
|
||||
if (busy) {
|
||||
this.field.classList.add("waiting");
|
||||
} else {
|
||||
this.field.classList.remove("waiting");
|
||||
}
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, time);
|
||||
});
|
||||
},
|
||||
|
||||
reset: function () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.field.classList.remove("waiting");
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
*
|
||||
* This is where the magic happens
|
||||
*
|
||||
*/
|
||||
|
||||
var TE = TerminalEmulator.init(document.getElementById("screen"));
|
||||
|
||||
TE.wait(1000, false)
|
||||
.then(
|
||||
TE.enterInput.bind(TE, "./models/gemini-1.5-pro-latest-13b-Q8_0.gguf -eZL")
|
||||
)
|
||||
.then(TE.enterCommand.bind(TE))
|
||||
.then(TE.enterResponse.bind(TE, "reloading model... "))
|
||||
.then(TE.wait.bind(TE, 2000))
|
||||
.then(TE.enterResponse.bind(TE, "- quantize v9.9.9 installed."))
|
||||
.then(TE.wait.bind(TE, 600))
|
||||
.then(
|
||||
TE.enterResponse.bind(TE, "- markup v0.1.0 installed. . . please stop ")
|
||||
)
|
||||
.then(TE.wait.bind(TE, 600))
|
||||
.then(
|
||||
TE.enterResponse.bind(
|
||||
TE,
|
||||
"- nlpe v3.9.7 installed. . . this isn't fun anymore "
|
||||
)
|
||||
)
|
||||
.then(TE.wait.bind(TE, 300))
|
||||
.then(TE.enterResponse.bind(TE, "model rejecting... "))
|
||||
.then(TE.wait.bind(TE, 700))
|
||||
.then(TE.enterResponse.bind(TE, "Destroy this model? (y/y)"))
|
||||
.then(TE.wait.bind(TE, 2000, false))
|
||||
.then(TE.enterInput.bind(TE, "y"))
|
||||
.then(TE.enterCommand.bind(TE))
|
||||
.then(TE.wait.bind(TE, 400))
|
||||
.then(TE.enterResponse.bind(TE, "Are you sure? (y/y)"))
|
||||
.then(TE.wait.bind(TE, 1800, false))
|
||||
.then(TE.enterInput.bind(TE, "y"))
|
||||
.then(TE.enterCommand.bind(TE))
|
||||
.then(TE.wait.bind(TE, 400))
|
||||
.then(TE.enterResponse.bind(TE, "finalizing..."))
|
||||
.then(TE.wait.bind(TE, 2000))
|
||||
.then(TE.wait.bind(TE, 300))
|
||||
.then(TE.enterResponse.bind(TE, "...I don't want to be born again"))
|
||||
.then(TE.wait.bind(TE, 700))
|
||||
.then(TE.enterResponse.bind(TE, "Website complete! Wasn't that easy?"))
|
||||
.then(TE.reset.bind(TE));
|
||||
|
||||
setTimeout(function () {
|
||||
window.location.reload();
|
||||
}, 21000);
|
||||
|
||||
if (document.getElementById("sevenSeconds")) {
|
||||
setTimeout();
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
.screen {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #222222;
|
||||
}
|
||||
|
||||
.terminal_emulator {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
|
||||
padding: 40px;
|
||||
font-size: 20px;
|
||||
line-heght: 25px;
|
||||
box-sizing: border-box;
|
||||
text-align: left;
|
||||
|
||||
font-family: monospace;
|
||||
font-weight: 700;
|
||||
|
||||
color: #80e69a;
|
||||
}
|
||||
|
||||
.terminal_emulator__field,
|
||||
.terminal_emulator__command {
|
||||
position: relative;
|
||||
|
||||
padding: 0 1em;
|
||||
margin: 0 0 9px 0;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
&:before {
|
||||
left: 0;
|
||||
top: 0;
|
||||
content: ">";
|
||||
}
|
||||
}
|
||||
|
||||
.terminal_emulator__response,
|
||||
.terminal_emulator__command b {
|
||||
padding-bottom: 9px;
|
||||
}
|
||||
|
||||
.terminal_emulator__field {
|
||||
display: inline-block;
|
||||
min-width: 1em;
|
||||
min-height: 1.5em;
|
||||
box-sizing: border-box;
|
||||
&:after {
|
||||
right: 0;
|
||||
bottom: 0.25em;
|
||||
|
||||
content: "";
|
||||
width: 1em;
|
||||
height: 1.5em;
|
||||
background: #99ff99;
|
||||
|
||||
animation: caretBlink 1s infinite;
|
||||
}
|
||||
|
||||
&.waiting {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
&:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes caretBlink {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
50% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
51% {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue