Files
vssm_web/src/lib/api.js
2026-06-05 23:04:28 -05:00

45 lines
1.3 KiB
JavaScript

const DAEMON_URL = 'http://127.0.0.1:12345';
export async function fetchInstances() {
const res = await fetch(`${DAEMON_URL}/instances/list`);
if (!res.ok) {
throw new Error(`Daemon returned status code: ${res.status}`);
}
return await res.json();
}
export async function toggleInstanceStatus(name, currentStatus) {
const action = currentStatus === 'RUNNING' ? 'stop' : 'start';
const res = await fetch(`${DAEMON_URL}/instances/${action}?name=${encodeURIComponent(name)}`, {
method: 'POST'
});
if (!res.ok) {
const errorText = await res.text();
throw new Error(errorText || `Action '${action}' failed`);
}
return true;
}
export async function sendServerCommand(name, commandString) {
const res = await fetch(`${DAEMON_URL}/instances/command?name=${encodeURIComponent(name)}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ command: commandString })
});
if (!res.ok) {
const errorText = await res.text();
throw new Error(errorText || "Failed to route command to target instance");
}
return await res.text();
}
export async function fetchServerLogs(name) {
const res = await fetch(`${DAEMON_URL}/instances/logs?name=${encodeURIComponent(name)}`);
if (!res.ok) {
throw new Error("Failed to sync engine logs");
}
return await res.json();
}