@hyperbrowser/sdk
Version:
Node SDK for Hyperbrowser API
104 lines (103 loc) • 3.67 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClaudeComputerUseService = void 0;
const client_1 = require("../../client");
const constants_1 = require("../../types/constants");
const utils_1 = require("../../utils");
const base_1 = require("../base");
class ClaudeComputerUseService extends base_1.BaseService {
/**
* Start a new Claude Computer Use task job
* @param params The parameters for the task job
*/
async start(params) {
try {
return await this.request("/task/claude-computer-use", {
method: "POST",
body: JSON.stringify(params),
});
}
catch (error) {
if (error instanceof client_1.HyperbrowserError) {
throw error;
}
throw new client_1.HyperbrowserError("Failed to start Claude Computer Use task job", undefined);
}
}
/**
* Get the status of a Claude Computer Use task job
* @param id The ID of the task job to get
*/
async getStatus(id) {
try {
return await this.request(`/task/claude-computer-use/${id}/status`);
}
catch (error) {
if (error instanceof client_1.HyperbrowserError) {
throw error;
}
throw new client_1.HyperbrowserError(`Failed to get Claude Computer Use task job ${id} status`, undefined);
}
}
/**
* Get the result of a Claude Computer Use task job
* @param id The ID of the task job to get
*/
async get(id) {
try {
return await this.request(`/task/claude-computer-use/${id}`);
}
catch (error) {
if (error instanceof client_1.HyperbrowserError) {
throw error;
}
throw new client_1.HyperbrowserError(`Failed to get Claude Computer Use task job ${id}`, undefined);
}
}
/**
* Stop a Claude Computer Use task job
* @param id The ID of the task job to stop
*/
async stop(id) {
try {
return await this.request(`/task/claude-computer-use/${id}/stop`, {
method: "PUT",
});
}
catch (error) {
if (error instanceof client_1.HyperbrowserError) {
throw error;
}
throw new client_1.HyperbrowserError(`Failed to stop Claude Computer Use task job ${id}`, undefined);
}
}
/**
* Start a Claude Computer Use task job and wait for it to complete
* @param params The parameters for the task job
*/
async startAndWait(params) {
const job = await this.start(params);
const jobId = job.jobId;
if (!jobId) {
throw new client_1.HyperbrowserError("Failed to start Claude Computer Use task job, could not get job ID");
}
let failures = 0;
while (true) {
try {
const { status } = await this.getStatus(jobId);
if (status === "completed" || status === "failed" || status === "stopped") {
return await this.get(jobId);
}
failures = 0;
}
catch (error) {
failures++;
if (failures >= constants_1.POLLING_ATTEMPTS) {
throw new client_1.HyperbrowserError(`Failed to poll Claude Computer Use task job ${jobId} after ${constants_1.POLLING_ATTEMPTS} attempts: ${error}`);
}
}
await (0, utils_1.sleep)(2000);
}
}
}
exports.ClaudeComputerUseService = ClaudeComputerUseService;
;