File size: 1,402 Bytes
aab0173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
45
46
47
48
49
50
51
52
53
54
55
56
import { createPiCli } from "./piCli.js";
import { createSandbox } from "./sandbox.js";
import "./styles.css";
import { createWebTerminal } from "./webTerminal.js";

const nodes = {
  status: document.querySelector("#status"),
  modelStatus: document.querySelector("#model-status"),
  sandboxStatus: document.querySelector("#sandbox-status"),
  modelLabel: document.querySelector("#model-label"),
  terminal: document.querySelector("#terminal"),
  modelGate: document.querySelector("#model-gate"),
  gateStatus: document.querySelector("#gate-status"),
  gateDevice: document.querySelector("#gate-device"),
  confirmLoadModel: document.querySelector("#confirm-load-model"),
  useTestModel: document.querySelector("#use-test-model"),
};

const params = new URLSearchParams(window.location.search);
const terminal = await createWebTerminal(nodes.terminal);

const sandbox = createSandbox({
  onStatus: (text) => {
    nodes.sandboxStatus.textContent = text;
  },
});

const cli = createPiCli({
  terminal,
  sandbox,
  nodes,
  params,
});

window.__piCliWeb = cli;
window.__piWebAgent = {
  get transcript() {
    return cli.transcript;
  },
  get terminalText() {
    return cli.outputText;
  },
  get modelReady() {
    return cli.modelReady;
  },
  get status() {
    return cli.status;
  },
  runInput(text) {
    return cli.handleLine(text);
  },
  loadModel() {
    return cli.loadModel();
  },
};