UNPKG

@hyperbrowser/sdk

Version:

Node SDK for Hyperbrowser API

104 lines (103 loc) 3.67 kB
"use strict"; 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;