Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
96 lines
3.3 KiB
Go
96 lines
3.3 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
tuttigenerated "github.com/tutti-os/tutti/services/tuttid/api/generated"
|
|
workspaceapi "github.com/tutti-os/tutti/services/tuttid/api/workspace"
|
|
"github.com/tutti-os/tutti/services/tuttid/apierrors"
|
|
)
|
|
|
|
func (api DaemonAPI) GetWorkspaceWorkbench(ctx context.Context, request tuttigenerated.GetWorkspaceWorkbenchRequestObject) (tuttigenerated.GetWorkspaceWorkbenchResponseObject, error) {
|
|
if api.WorkbenchService == nil {
|
|
return tuttigenerated.GetWorkspaceWorkbench503JSONResponse{
|
|
ServiceUnavailableErrorJSONResponse: serviceUnavailableError(
|
|
apierrors.WorkspaceWorkbenchUnavailable(apierrors.WithDeveloperMessage("workspace workbench service is unavailable")),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
workspaceID := strings.TrimSpace(string(request.WorkspaceID))
|
|
if workspaceID == "" {
|
|
return tuttigenerated.GetWorkspaceWorkbench400JSONResponse{
|
|
InvalidRequestErrorJSONResponse: invalidRequestError(
|
|
apierrors.MissingWorkspaceID(
|
|
apierrors.WithDeveloperMessage("workspace id is required"),
|
|
apierrors.WithParams(map[string]any{"field": "workspaceId"}),
|
|
),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
snapshot, err := api.WorkbenchService.GetSnapshot(ctx, workspaceID)
|
|
if err != nil {
|
|
return writeGetWorkspaceWorkbenchError(err), nil
|
|
}
|
|
|
|
response, err := workspaceapi.GeneratedWorkbenchResponseFromBiz(snapshot)
|
|
if err != nil {
|
|
return tuttigenerated.GetWorkspaceWorkbench502JSONResponse{
|
|
WorkspaceOperationErrorJSONResponse: workspaceOperationError(
|
|
apierrors.WorkspaceOperationFailed(apierrors.WithCause(err)),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
return tuttigenerated.GetWorkspaceWorkbench200JSONResponse(response), nil
|
|
}
|
|
|
|
func (api DaemonAPI) PutWorkspaceWorkbench(ctx context.Context, request tuttigenerated.PutWorkspaceWorkbenchRequestObject) (tuttigenerated.PutWorkspaceWorkbenchResponseObject, error) {
|
|
if api.WorkbenchService == nil {
|
|
return tuttigenerated.PutWorkspaceWorkbench503JSONResponse{
|
|
ServiceUnavailableErrorJSONResponse: serviceUnavailableError(
|
|
apierrors.WorkspaceWorkbenchUnavailable(apierrors.WithDeveloperMessage("workspace workbench service is unavailable")),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
workspaceID := strings.TrimSpace(string(request.WorkspaceID))
|
|
if workspaceID == "" {
|
|
return tuttigenerated.PutWorkspaceWorkbench400JSONResponse{
|
|
InvalidRequestErrorJSONResponse: invalidRequestError(
|
|
apierrors.MissingWorkspaceID(
|
|
apierrors.WithDeveloperMessage("workspace id is required"),
|
|
apierrors.WithParams(map[string]any{"field": "workspaceId"}),
|
|
),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
if request.Body == nil {
|
|
return tuttigenerated.PutWorkspaceWorkbench400JSONResponse{
|
|
InvalidRequestErrorJSONResponse: invalidRequestError(
|
|
apierrors.EmptyBody(apierrors.WithDeveloperMessage("empty body")),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
snapshotInput := workspaceapi.WorkbenchSnapshotFromGenerated(request.Body.Snapshot)
|
|
snapshot, err := api.WorkbenchService.PutSnapshot(ctx, workspaceID, snapshotInput)
|
|
if err != nil {
|
|
return writePutWorkspaceWorkbenchError(err), nil
|
|
}
|
|
|
|
response, err := workspaceapi.GeneratedWorkbenchResponseFromBiz(snapshot)
|
|
if err != nil {
|
|
return tuttigenerated.PutWorkspaceWorkbench502JSONResponse{
|
|
WorkspaceOperationErrorJSONResponse: workspaceOperationError(
|
|
apierrors.WorkspaceOperationFailed(apierrors.WithCause(err)),
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
return tuttigenerated.PutWorkspaceWorkbench200JSONResponse(response), nil
|
|
}
|