Files
zeekay ea80dc3638 feat: Add new Dockerfiles and improve containerization
- Add main Dockerfile for production builds
- Add Dockerfile.runtime for secure code execution
- Add Dockerfile.runtime.fixed with improved configuration
- Include .dockerignore for build optimization
- Add integration documentation and publishing guides
- Update API and CLI components for better runtime support
- Enhance sandbox and container management features
2025-08-16 23:03:39 -05:00

153 lines
4.7 KiB
Go

// Copyright 2025 Hanzo Industries Inc.
// SPDX-License-Identifier: AGPL-3.0
package computeruse
import (
"net/rpc"
)
type ComputerUseRPCClient struct {
client *rpc.Client
}
// Type check
var _ IComputerUse = &ComputerUseRPCClient{}
// Process management methods
func (m *ComputerUseRPCClient) Initialize() (*Empty, error) {
err := m.client.Call("Plugin.Initialize", new(any), new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) Start() (*Empty, error) {
err := m.client.Call("Plugin.Start", new(any), new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) Stop() (*Empty, error) {
err := m.client.Call("Plugin.Stop", new(any), new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) GetProcessStatus() (map[string]ProcessStatus, error) {
resp := map[string]ProcessStatus{}
err := m.client.Call("Plugin.GetProcessStatus", new(any), &resp)
return resp, err
}
func (m *ComputerUseRPCClient) IsProcessRunning(req *ProcessRequest) (bool, error) {
var resp bool
err := m.client.Call("Plugin.IsProcessRunning", req, &resp)
return resp, err
}
func (m *ComputerUseRPCClient) RestartProcess(req *ProcessRequest) (*Empty, error) {
err := m.client.Call("Plugin.RestartProcess", req, new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) GetProcessLogs(req *ProcessRequest) (string, error) {
var resp string
err := m.client.Call("Plugin.GetProcessLogs", req, &resp)
return resp, err
}
func (m *ComputerUseRPCClient) GetProcessErrors(req *ProcessRequest) (string, error) {
var resp string
err := m.client.Call("Plugin.GetProcessErrors", req, &resp)
return resp, err
}
// Screenshot methods
func (m *ComputerUseRPCClient) TakeScreenshot(request *ScreenshotRequest) (*ScreenshotResponse, error) {
var resp ScreenshotResponse
err := m.client.Call("Plugin.TakeScreenshot", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) TakeRegionScreenshot(request *RegionScreenshotRequest) (*ScreenshotResponse, error) {
var resp ScreenshotResponse
err := m.client.Call("Plugin.TakeRegionScreenshot", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) TakeCompressedScreenshot(request *CompressedScreenshotRequest) (*ScreenshotResponse, error) {
var resp ScreenshotResponse
err := m.client.Call("Plugin.TakeCompressedScreenshot", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) TakeCompressedRegionScreenshot(request *CompressedRegionScreenshotRequest) (*ScreenshotResponse, error) {
var resp ScreenshotResponse
err := m.client.Call("Plugin.TakeCompressedRegionScreenshot", request, &resp)
return &resp, err
}
// Mouse control methods
func (m *ComputerUseRPCClient) GetMousePosition() (*MousePositionResponse, error) {
var resp MousePositionResponse
err := m.client.Call("Plugin.GetMousePosition", new(any), &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) MoveMouse(request *MoveMouseRequest) (*MousePositionResponse, error) {
var resp MousePositionResponse
err := m.client.Call("Plugin.MoveMouse", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) Click(request *ClickRequest) (*MouseClickResponse, error) {
var resp MouseClickResponse
err := m.client.Call("Plugin.Click", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) Drag(request *DragRequest) (*MouseDragResponse, error) {
var resp MouseDragResponse
err := m.client.Call("Plugin.Drag", request, &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) Scroll(request *ScrollRequest) (*ScrollResponse, error) {
var resp ScrollResponse
err := m.client.Call("Plugin.Scroll", request, &resp)
return &resp, err
}
// Keyboard control methods
func (m *ComputerUseRPCClient) TypeText(request *TypeTextRequest) (*Empty, error) {
err := m.client.Call("Plugin.TypeText", request, new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) PressKey(request *PressKeyRequest) (*Empty, error) {
err := m.client.Call("Plugin.PressKey", request, new(Empty))
return new(Empty), err
}
func (m *ComputerUseRPCClient) PressHotkey(request *PressHotkeyRequest) (*Empty, error) {
err := m.client.Call("Plugin.PressHotkey", request, new(Empty))
return new(Empty), err
}
// Display info methods
func (m *ComputerUseRPCClient) GetDisplayInfo() (*DisplayInfoResponse, error) {
var resp DisplayInfoResponse
err := m.client.Call("Plugin.GetDisplayInfo", new(any), &resp)
return &resp, err
}
func (m *ComputerUseRPCClient) GetWindows() (*WindowsResponse, error) {
var resp WindowsResponse
err := m.client.Call("Plugin.GetWindows", new(any), &resp)
return &resp, err
}
// Status method
func (m *ComputerUseRPCClient) GetStatus() (*StatusResponse, error) {
var resp StatusResponse
err := m.client.Call("Plugin.GetStatus", new(any), &resp)
return &resp, err
}