Files
tutti/services/tuttid/api/daemon_app_factory.go
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

464 lines
24 KiB
Go

package api
import (
"context"
"encoding/json"
"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"
workspacebiz "github.com/tutti-os/tutti/services/tuttid/biz/workspace"
agentservice "github.com/tutti-os/tutti/services/tuttid/service/agent"
workspaceservice "github.com/tutti-os/tutti/services/tuttid/service/workspace"
)
type AppFactoryService interface {
Cancel(context.Context, string, string) (workspacebiz.AppFactoryJob, error)
Create(context.Context, string, workspaceservice.CreateAppFactoryJobInput) (workspacebiz.AppFactoryJob, error)
Delete(context.Context, string, string) error
Fix(context.Context, string, string, workspaceservice.FixAppFactoryJobInput) (workspacebiz.AppFactoryJob, error)
Get(context.Context, string, string) (workspacebiz.AppFactoryJob, error)
GetAgentTargetComposerOptions(context.Context, string, workspaceservice.AppFactoryAgentTargetComposerOptionsInput) (agentservice.ComposerOptions, error)
List(context.Context, string) ([]workspacebiz.AppFactoryJob, error)
PrepareModification(context.Context, string, string) (workspacebiz.AppFactoryJob, error)
Publish(context.Context, string, string) (workspacebiz.AppFactoryJob, workspacebiz.WorkspaceApp, error)
RetryValidation(context.Context, string, string) (workspacebiz.AppFactoryJob, error)
}
func workspaceAppFactoryServiceUnavailableError() tuttigenerated.ServiceUnavailableErrorJSONResponse {
return serviceUnavailableError(
apierrors.WorkspaceAppServiceUnavailable(
apierrors.WithDeveloperMessage("workspace app factory service is unavailable"),
),
)
}
func (api DaemonAPI) ListWorkspaceAppFactoryJobs(ctx context.Context, request tuttigenerated.ListWorkspaceAppFactoryJobsRequestObject) (tuttigenerated.ListWorkspaceAppFactoryJobsResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.ListWorkspaceAppFactoryJobs503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID := strings.TrimSpace(string(request.WorkspaceID))
if workspaceID == "" {
return tuttigenerated.ListWorkspaceAppFactoryJobs400JSONResponse{InvalidRequestErrorJSONResponse: invalidWorkspaceIDError()}, nil
}
jobs, err := api.AppFactoryService.List(ctx, workspaceID)
if err != nil {
return writeListWorkspaceAppFactoryJobsError(err), nil
}
return tuttigenerated.ListWorkspaceAppFactoryJobs200JSONResponse{
WorkspaceId: workspaceID,
Jobs: generatedAppFactoryJobs(jobs),
}, nil
}
func (api DaemonAPI) CreateWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.CreateWorkspaceAppFactoryJobRequestObject) (tuttigenerated.CreateWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.CreateWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID := strings.TrimSpace(string(request.WorkspaceID))
if workspaceID == "" {
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidWorkspaceIDError()}, nil
}
if request.Body == nil || strings.TrimSpace(request.Body.Prompt) == "" {
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(apierrors.WithDeveloperMessage("app factory prompt is required")))}, nil
}
if strings.TrimSpace(request.Body.DisplayName) == "" {
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(apierrors.WithDeveloperMessage("app factory display name is required")))}, nil
}
if strings.TrimSpace(request.Body.AgentTargetId) == "" {
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(
apierrors.WithDeveloperMessage("agent target id is required"),
apierrors.WithParams(map[string]any{"field": "agentTargetId"}),
))}, nil
}
if strings.TrimSpace(request.Body.ClientSubmitId) == "" {
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(
apierrors.WithDeveloperMessage("client submit id is required"),
apierrors.WithParams(map[string]any{"field": "clientSubmitId"}),
))}, nil
}
job, err := api.AppFactoryService.Create(ctx, workspaceID, workspaceservice.CreateAppFactoryJobInput{
Prompt: request.Body.Prompt,
DisplayName: request.Body.DisplayName,
Description: optionalStringValue(request.Body.Description),
AgentTargetID: request.Body.AgentTargetId,
Model: optionalStringValue(request.Body.Model),
PermissionModeID: optionalStringValue(
request.Body.PermissionModeId,
),
ReasoningEffort: optionalStringValue(request.Body.ReasoningEffort),
})
if err != nil {
return writeCreateWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.CreateWorkspaceAppFactoryJob201JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) GetWorkspaceAppFactoryAgentTargetComposerOptions(ctx context.Context, request tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptionsRequestObject) (tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptionsResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID := strings.TrimSpace(string(request.WorkspaceID))
if workspaceID == "" {
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions400JSONResponse{InvalidRequestErrorJSONResponse: invalidWorkspaceIDError()}, nil
}
agentTargetID := strings.TrimSpace(request.AgentTargetID)
if agentTargetID == "" {
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions400JSONResponse{
InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(
apierrors.WithDeveloperMessage("agent target id is required"),
apierrors.WithParams(map[string]any{"field": "agentTargetId"}),
)),
}, nil
}
settings := agentservice.ComposerSettings{}
section := agentservice.ComposerOptionsSectionFull
if request.Body != nil && request.Body.Section != nil {
section = agentservice.ComposerOptionsSection(*request.Body.Section)
}
if request.Body != nil && request.Body.Settings != nil {
settings = composerSettingsFromGenerated(*request.Body.Settings)
}
locale := api.composerDefaultLocale(ctx)
if request.Body != nil && request.Body.Locale != nil {
locale = string(*request.Body.Locale)
}
options, err := api.AppFactoryService.GetAgentTargetComposerOptions(ctx, workspaceID, workspaceservice.AppFactoryAgentTargetComposerOptionsInput{
AgentTargetID: agentTargetID,
Locale: locale,
Section: section,
Settings: settings,
})
if err != nil {
return writeGetWorkspaceAppFactoryAgentTargetComposerOptionsError(err), nil
}
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions200JSONResponse(
generatedAgentProviderComposerOptions(options),
), nil
}
func (api DaemonAPI) GetWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.GetWorkspaceAppFactoryJobRequestObject) (tuttigenerated.GetWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.GetWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.GetWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
job, err := api.AppFactoryService.Get(ctx, workspaceID, jobID)
if err != nil {
return writeGetWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.GetWorkspaceAppFactoryJob200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) DeleteWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.DeleteWorkspaceAppFactoryJobRequestObject) (tuttigenerated.DeleteWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.DeleteWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.DeleteWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
if err := api.AppFactoryService.Delete(ctx, workspaceID, jobID); err != nil {
return writeDeleteWorkspaceAppFactoryJobError(err), nil
}
jobs, err := api.AppFactoryService.List(ctx, workspaceID)
if err != nil {
return writeDeleteWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.DeleteWorkspaceAppFactoryJob200JSONResponse{
WorkspaceId: workspaceID,
Jobs: generatedAppFactoryJobs(jobs),
}, nil
}
func (api DaemonAPI) CancelWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.CancelWorkspaceAppFactoryJobRequestObject) (tuttigenerated.CancelWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.CancelWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.CancelWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
job, err := api.AppFactoryService.Cancel(ctx, workspaceID, jobID)
if err != nil {
return writeCancelWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.CancelWorkspaceAppFactoryJob200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) RetryWorkspaceAppFactoryJobValidation(ctx context.Context, request tuttigenerated.RetryWorkspaceAppFactoryJobValidationRequestObject) (tuttigenerated.RetryWorkspaceAppFactoryJobValidationResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
job, err := api.AppFactoryService.RetryValidation(ctx, workspaceID, jobID)
if err != nil {
return writeRetryWorkspaceAppFactoryJobValidationError(err), nil
}
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) FixWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.FixWorkspaceAppFactoryJobRequestObject) (tuttigenerated.FixWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.FixWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.FixWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
if request.Body == nil || strings.TrimSpace(request.Body.Prompt) == "" {
return tuttigenerated.FixWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(apierrors.MalformedRequest(apierrors.WithDeveloperMessage("app factory fix prompt is required")))}, nil
}
job, err := api.AppFactoryService.Fix(ctx, workspaceID, jobID, workspaceservice.FixAppFactoryJobInput{Prompt: request.Body.Prompt})
if err != nil {
return writeFixWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.FixWorkspaceAppFactoryJob200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) PrepareWorkspaceAppFactoryJobModification(ctx context.Context, request tuttigenerated.PrepareWorkspaceAppFactoryJobModificationRequestObject) (tuttigenerated.PrepareWorkspaceAppFactoryJobModificationResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
job, err := api.AppFactoryService.PrepareModification(ctx, workspaceID, jobID)
if err != nil {
return writePrepareWorkspaceAppFactoryJobModificationError(err), nil
}
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
}, nil
}
func (api DaemonAPI) PublishWorkspaceAppFactoryJob(ctx context.Context, request tuttigenerated.PublishWorkspaceAppFactoryJobRequestObject) (tuttigenerated.PublishWorkspaceAppFactoryJobResponseObject, error) {
if api.AppFactoryService == nil {
return tuttigenerated.PublishWorkspaceAppFactoryJob503JSONResponse{ServiceUnavailableErrorJSONResponse: workspaceAppFactoryServiceUnavailableError()}, nil
}
workspaceID, jobID, errResponse := validateWorkspaceAppFactoryJobPath(request.WorkspaceID, request.JobID)
if errResponse != nil {
return tuttigenerated.PublishWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: *errResponse}, nil
}
job, app, err := api.AppFactoryService.Publish(ctx, workspaceID, jobID)
if err != nil {
return writePublishWorkspaceAppFactoryJobError(err), nil
}
return tuttigenerated.PublishWorkspaceAppFactoryJob200JSONResponse{
WorkspaceId: workspaceID,
Job: generatedAppFactoryJob(job),
App: workspaceapi.GeneratedAppFromBiz(app),
}, nil
}
func generatedAppFactoryJobs(jobs []workspacebiz.AppFactoryJob) []tuttigenerated.WorkspaceAppFactoryJob {
result := make([]tuttigenerated.WorkspaceAppFactoryJob, 0, len(jobs))
for _, job := range jobs {
result = append(result, generatedAppFactoryJob(job))
}
return result
}
func generatedAppFactoryJob(job workspacebiz.AppFactoryJob) tuttigenerated.WorkspaceAppFactoryJob {
return tuttigenerated.WorkspaceAppFactoryJob{
AgentSessionId: nullableGeneratedString(job.AgentSessionID),
AppId: nullableGeneratedString(job.AppID),
CreatedAtUnixMs: job.CreatedAtUnixMs,
Description: nullableGeneratedString(job.Description),
DisplayName: strings.TrimSpace(job.DisplayName),
FailureReason: nullableGeneratedString(job.FailureReason),
AgentTargetId: nullableGeneratedString(job.AgentTargetID),
JobId: job.JobID,
Model: nullableGeneratedString(job.Model),
Prompt: job.Prompt,
Provider: nullableGeneratedString(job.Provider),
ReasoningEffort: nullableGeneratedString(job.ReasoningEffort),
PublishedVersion: nullableGeneratedString(job.PublishedVersion),
Status: tuttigenerated.WorkspaceAppFactoryJobStatus(job.Status),
UpdatedAtUnixMs: job.UpdatedAtUnixMs,
ValidationResult: generatedValidationResult(job.ValidationResultJSON),
WorkspaceId: job.WorkspaceID,
}
}
func generatedValidationResult(raw string) *map[string]interface{} {
raw = strings.TrimSpace(raw)
if raw == "" {
return nil
}
var result map[string]interface{}
if err := json.Unmarshal([]byte(raw), &result); err != nil {
return nil
}
return &result
}
func nullableGeneratedString(value string) *string {
value = strings.TrimSpace(value)
if value == "" {
return nil
}
return &value
}
func validateWorkspaceAppFactoryJobPath(workspaceIDValue tuttigenerated.WorkspaceID, jobIDValue tuttigenerated.WorkspaceAppFactoryJobID) (string, string, *tuttigenerated.InvalidRequestErrorJSONResponse) {
workspaceID := strings.TrimSpace(string(workspaceIDValue))
if workspaceID == "" {
response := invalidWorkspaceIDError()
return "", "", &response
}
jobID := strings.TrimSpace(string(jobIDValue))
if jobID == "" {
response := invalidRequestError(apierrors.MalformedRequest(apierrors.WithDeveloperMessage("app factory job id is required"), apierrors.WithParams(map[string]any{"field": "jobId"})))
return "", "", &response
}
return workspaceID, jobID, nil
}
func invalidWorkspaceIDError() tuttigenerated.InvalidRequestErrorJSONResponse {
return invalidRequestError(apierrors.MissingWorkspaceID(apierrors.WithDeveloperMessage("workspace id is required"), apierrors.WithParams(map[string]any{"field": "workspaceId"})))
}
func writeListWorkspaceAppFactoryJobsError(err error) tuttigenerated.ListWorkspaceAppFactoryJobsResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound:
return tuttigenerated.ListWorkspaceAppFactoryJobs404JSONResponse{WorkspaceNotFoundErrorJSONResponse: workspaceNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.ListWorkspaceAppFactoryJobs400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.ListWorkspaceAppFactoryJobs502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeCreateWorkspaceAppFactoryJobError(err error) tuttigenerated.CreateWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound:
return tuttigenerated.CreateWorkspaceAppFactoryJob404JSONResponse{WorkspaceNotFoundErrorJSONResponse: workspaceNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.CreateWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.CreateWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeGetWorkspaceAppFactoryAgentTargetComposerOptionsError(err error) tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptionsResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound:
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions404JSONResponse{WorkspaceNotFoundErrorJSONResponse: workspaceNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.GetWorkspaceAppFactoryAgentTargetComposerOptions502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeGetWorkspaceAppFactoryJobError(err error) tuttigenerated.GetWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.GetWorkspaceAppFactoryJob404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.GetWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.GetWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeCancelWorkspaceAppFactoryJobError(err error) tuttigenerated.CancelWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.CancelWorkspaceAppFactoryJob404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.CancelWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.CancelWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeDeleteWorkspaceAppFactoryJobError(err error) tuttigenerated.DeleteWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.DeleteWorkspaceAppFactoryJob404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.DeleteWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.DeleteWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeRetryWorkspaceAppFactoryJobValidationError(err error) tuttigenerated.RetryWorkspaceAppFactoryJobValidationResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.RetryWorkspaceAppFactoryJobValidation502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writeFixWorkspaceAppFactoryJobError(err error) tuttigenerated.FixWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.FixWorkspaceAppFactoryJob404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.FixWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.FixWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writePrepareWorkspaceAppFactoryJobModificationError(err error) tuttigenerated.PrepareWorkspaceAppFactoryJobModificationResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.PrepareWorkspaceAppFactoryJobModification502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}
func writePublishWorkspaceAppFactoryJobError(err error) tuttigenerated.PublishWorkspaceAppFactoryJobResponseObject {
protocolErr := apierrors.Classify(err)
switch protocolErr.Code {
case tuttigenerated.WorkspaceNotFound, tuttigenerated.WorkspaceAppNotFound:
return tuttigenerated.PublishWorkspaceAppFactoryJob404JSONResponse{WorkspaceAppNotFoundErrorJSONResponse: workspaceAppNotFoundError(protocolErr)}
case tuttigenerated.InvalidRequest:
return tuttigenerated.PublishWorkspaceAppFactoryJob400JSONResponse{InvalidRequestErrorJSONResponse: invalidRequestError(protocolErr)}
default:
return tuttigenerated.PublishWorkspaceAppFactoryJob502JSONResponse{WorkspaceOperationErrorJSONResponse: workspaceOperationError(protocolErr)}
}
}