mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-20 11:03:14 +00:00
Remove example health polling
This commit is contained in:
parent
8f8b1f563a
commit
6fd55fe8a8
2 changed files with 2 additions and 51 deletions
|
|
@ -4,7 +4,6 @@ import fs from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { PassThrough } from "node:stream";
|
import { PassThrough } from "node:stream";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
import { waitForHealth } from "./sandbox-agent-client.ts";
|
|
||||||
|
|
||||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
const EXAMPLE_IMAGE = "sandbox-agent-examples:latest";
|
const EXAMPLE_IMAGE = "sandbox-agent-examples:latest";
|
||||||
|
|
@ -173,7 +172,7 @@ async function ensureExampleImage(_docker: Docker): Promise<string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start a Docker container running sandbox-agent and wait for it to be healthy.
|
* Start a Docker container running sandbox-agent.
|
||||||
* Registers SIGINT/SIGTERM handlers for cleanup.
|
* Registers SIGINT/SIGTERM handlers for cleanup.
|
||||||
*/
|
*/
|
||||||
export async function startDockerSandbox(opts: DockerSandboxOptions): Promise<DockerSandbox> {
|
export async function startDockerSandbox(opts: DockerSandboxOptions): Promise<DockerSandbox> {
|
||||||
|
|
@ -275,18 +274,8 @@ export async function startDockerSandbox(opts: DockerSandboxOptions): Promise<Do
|
||||||
}
|
}
|
||||||
const baseUrl = `http://127.0.0.1:${mappedHostPort}`;
|
const baseUrl = `http://127.0.0.1:${mappedHostPort}`;
|
||||||
|
|
||||||
try {
|
|
||||||
await waitForHealth({ baseUrl });
|
|
||||||
} catch (err) {
|
|
||||||
stopStartupLogs();
|
|
||||||
console.error(" Container logs:");
|
|
||||||
for (const chunk of logChunks) {
|
|
||||||
process.stderr.write(` ${chunk}`);
|
|
||||||
}
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
stopStartupLogs();
|
stopStartupLogs();
|
||||||
console.log(` Ready (${baseUrl})`);
|
console.log(` Started (${baseUrl})`);
|
||||||
|
|
||||||
const cleanup = async () => {
|
const cleanup = async () => {
|
||||||
stopStartupLogs();
|
stopStartupLogs();
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@
|
||||||
* Provides minimal helpers for connecting to and interacting with sandbox-agent servers.
|
* Provides minimal helpers for connecting to and interacting with sandbox-agent servers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { setTimeout as delay } from "node:timers/promises";
|
|
||||||
|
|
||||||
function normalizeBaseUrl(baseUrl: string): string {
|
function normalizeBaseUrl(baseUrl: string): string {
|
||||||
return baseUrl.replace(/\/+$/, "");
|
return baseUrl.replace(/\/+$/, "");
|
||||||
}
|
}
|
||||||
|
|
@ -74,41 +72,6 @@ export function buildHeaders({
|
||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function waitForHealth({
|
|
||||||
baseUrl,
|
|
||||||
token,
|
|
||||||
extraHeaders,
|
|
||||||
timeoutMs = 120_000,
|
|
||||||
}: {
|
|
||||||
baseUrl: string;
|
|
||||||
token?: string;
|
|
||||||
extraHeaders?: Record<string, string>;
|
|
||||||
timeoutMs?: number;
|
|
||||||
}): Promise<void> {
|
|
||||||
const normalized = normalizeBaseUrl(baseUrl);
|
|
||||||
const deadline = Date.now() + timeoutMs;
|
|
||||||
let lastError: unknown;
|
|
||||||
while (Date.now() < deadline) {
|
|
||||||
try {
|
|
||||||
const headers = buildHeaders({ token, extraHeaders });
|
|
||||||
const response = await fetch(`${normalized}/v1/health`, { headers });
|
|
||||||
if (response.ok) {
|
|
||||||
const data = await response.json();
|
|
||||||
if (data?.status === "ok") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastError = new Error(`Unexpected health response: ${JSON.stringify(data)}`);
|
|
||||||
} else {
|
|
||||||
lastError = new Error(`Health check failed: ${response.status}`);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
lastError = error;
|
|
||||||
}
|
|
||||||
await delay(500);
|
|
||||||
}
|
|
||||||
throw (lastError ?? new Error("Timed out waiting for /v1/health")) as Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function generateSessionId(): string {
|
export function generateSessionId(): string {
|
||||||
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
|
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||||
let id = "session-";
|
let id = "session-";
|
||||||
|
|
@ -144,4 +107,3 @@ export function detectAgent(): string {
|
||||||
}
|
}
|
||||||
return "claude";
|
return "claude";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue