feat: 完整游戏运维功能
This commit is contained in:
+237
-146
@@ -93,6 +93,7 @@ type AuthSessionResponse struct {
|
||||
SessionID string `json:"sessionId,omitempty"`
|
||||
Status string `json:"status"`
|
||||
Message string `json:"message,omitempty"`
|
||||
ExpiresAt time.Time `json:"expiresAt,omitempty"`
|
||||
}
|
||||
|
||||
type AIProviderCreateRequest struct {
|
||||
@@ -125,17 +126,17 @@ type AIProviderStatusRequest struct {
|
||||
}
|
||||
|
||||
type AIProviderResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Kind domain.AIProviderKind `json:"kind"`
|
||||
BaseURL string `json:"baseUrl"`
|
||||
APIKeyRef string `json:"apiKeyRef"`
|
||||
Models []string `json:"models"`
|
||||
DefaultModel string `json:"defaultModel,omitempty"`
|
||||
RelayMode domain.AIRelayMode `json:"relayMode"`
|
||||
TimeoutMS int `json:"timeoutMs"`
|
||||
Status domain.AIProviderStatus `json:"status"`
|
||||
RedactionPolicy string `json:"redactionPolicy"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Kind domain.AIProviderKind `json:"kind"`
|
||||
BaseURL string `json:"baseUrl"`
|
||||
APIKeyConfigured bool `json:"apiKeyConfigured"`
|
||||
Models []string `json:"models"`
|
||||
DefaultModel string `json:"defaultModel,omitempty"`
|
||||
RelayMode domain.AIRelayMode `json:"relayMode"`
|
||||
TimeoutMS int `json:"timeoutMs"`
|
||||
Status domain.AIProviderStatus `json:"status"`
|
||||
RedactionPolicy string `json:"redactionPolicy"`
|
||||
}
|
||||
|
||||
type AIProviderListResponse struct {
|
||||
@@ -206,20 +207,21 @@ type GamePluginRemoteAccessBody struct {
|
||||
}
|
||||
|
||||
type GamePluginManifestBody struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
Kind string `json:"kind"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
Server GamePluginManifestServerBody `json:"server"`
|
||||
Bridge GamePluginBridgeBody `json:"bridge,omitempty"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
Permissions []string `json:"permissions"`
|
||||
Actions PluginLifecycleActionsBody `json:"actions"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
AI GamePluginManifestAIBody `json:"ai,omitempty"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
Kind string `json:"kind"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
Server GamePluginManifestServerBody `json:"server"`
|
||||
Bridge GamePluginBridgeBody `json:"bridge,omitempty"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
Permissions []string `json:"permissions"`
|
||||
Actions PluginLifecycleActionsBody `json:"actions"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
AI GamePluginManifestAIBody `json:"ai,omitempty"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
RuntimeProfiles GamePluginRuntimeProfilesBody `json:"runtimeProfiles,omitempty"`
|
||||
}
|
||||
|
||||
type GamePluginManifestRegistrationRequest struct {
|
||||
@@ -228,48 +230,50 @@ type GamePluginManifestRegistrationRequest struct {
|
||||
}
|
||||
|
||||
type GamePluginCreateRequest struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions,omitempty"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions,omitempty"`
|
||||
BridgeActions []string `json:"bridgeActions,omitempty"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
AIPurposes []string `json:"aiPurposes,omitempty"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions,omitempty"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions,omitempty"`
|
||||
BridgeActions []string `json:"bridgeActions,omitempty"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
AIPurposes []string `json:"aiPurposes,omitempty"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
RuntimeProfiles GamePluginRuntimeProfilesBody `json:"runtimeProfiles,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
}
|
||||
|
||||
type GamePluginResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions"`
|
||||
BridgeActions []string `json:"bridgeActions"`
|
||||
Pages []GamePluginPageBody `json:"pages"`
|
||||
Tags []string `json:"tags"`
|
||||
AIPurposes []string `json:"aiPurposes"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
Status domain.GamePluginStatus `json:"status"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions"`
|
||||
BridgeActions []string `json:"bridgeActions"`
|
||||
Pages []GamePluginPageBody `json:"pages"`
|
||||
Tags []string `json:"tags"`
|
||||
AIPurposes []string `json:"aiPurposes"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
RuntimeProfiles GamePluginRuntimeProfilesBody `json:"runtimeProfiles,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
Status domain.GamePluginStatus `json:"status"`
|
||||
}
|
||||
|
||||
type GamePluginListResponse struct {
|
||||
@@ -278,27 +282,28 @@ type GamePluginListResponse struct {
|
||||
}
|
||||
|
||||
type MarketplacePluginResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions"`
|
||||
BridgeActions []string `json:"bridgeActions"`
|
||||
Pages []GamePluginPageBody `json:"pages"`
|
||||
Tags []string `json:"tags"`
|
||||
AIPurposes []string `json:"aiPurposes"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
Status domain.GamePluginStatus `json:"status"`
|
||||
Source string `json:"source"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Version string `json:"version"`
|
||||
ServerType string `json:"serverType"`
|
||||
ServerDisplayName string `json:"serverDisplayName,omitempty"`
|
||||
SupportedOS []string `json:"supportedOs,omitempty"`
|
||||
ManifestRef string `json:"manifestRef"`
|
||||
CreateFormSchemaRef string `json:"createFormSchemaRef"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
DeclaredPermissions []string `json:"declaredPermissions"`
|
||||
Permissions PluginPermissionsResponse `json:"permissions"`
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions"`
|
||||
BridgeActions []string `json:"bridgeActions"`
|
||||
Pages []GamePluginPageBody `json:"pages"`
|
||||
Tags []string `json:"tags"`
|
||||
AIPurposes []string `json:"aiPurposes"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
RuntimeProfiles GamePluginRuntimeProfilesBody `json:"runtimeProfiles,omitempty"`
|
||||
ValidationViolations []string `json:"validationViolations,omitempty"`
|
||||
Status domain.GamePluginStatus `json:"status"`
|
||||
Source string `json:"source"`
|
||||
}
|
||||
|
||||
type MarketplacePluginListResponse struct {
|
||||
@@ -389,17 +394,20 @@ type ServerMemberListResponse struct {
|
||||
}
|
||||
|
||||
type ServerInstanceResponse struct {
|
||||
ID string `json:"id"`
|
||||
PluginID string `json:"pluginId"`
|
||||
PluginVersion string `json:"pluginVersion"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Name string `json:"name"`
|
||||
OwnerUserID string `json:"ownerUserId,omitempty"`
|
||||
AdminUserIDs []string `json:"adminUserIds"`
|
||||
State domain.ServerInstanceState `json:"state"`
|
||||
ConfigVersion int `json:"configVersion"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
ID string `json:"id"`
|
||||
PluginID string `json:"pluginId"`
|
||||
PluginVersion string `json:"pluginVersion"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Name string `json:"name"`
|
||||
OwnerUserID string `json:"ownerUserId,omitempty"`
|
||||
AdminUserIDs []string `json:"adminUserIds"`
|
||||
State domain.ServerInstanceState `json:"state"`
|
||||
ConfigVersion int `json:"configVersion"`
|
||||
ConfigKey string `json:"configKey,omitempty"`
|
||||
ConfigChecksum string `json:"configChecksum,omitempty"`
|
||||
ConfigUpdatedAt *time.Time `json:"configUpdatedAt,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type ServerInstanceListResponse struct {
|
||||
@@ -440,6 +448,7 @@ type ServerConfigResponse struct {
|
||||
Format string `json:"format"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Content string `json:"content"`
|
||||
Checksum string `json:"checksum"`
|
||||
Source string `json:"source,omitempty"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
@@ -453,6 +462,7 @@ type ConfigDiffLineResponse struct {
|
||||
|
||||
type ServerConfigDiffPreviewRequest struct {
|
||||
ExpectedConfigVersion int `json:"expectedConfigVersion"`
|
||||
ExpectedChecksum string `json:"expectedChecksum,omitempty"`
|
||||
Key string `json:"key"`
|
||||
ProposedContent string `json:"proposedContent,omitempty"`
|
||||
ProposedContentInputRef string `json:"proposedContentInputRef,omitempty"`
|
||||
@@ -461,6 +471,7 @@ type ServerConfigDiffPreviewRequest struct {
|
||||
type ServerConfigDiffPreviewResponse struct {
|
||||
ServerInstanceID string `json:"serverInstanceId"`
|
||||
ConfigVersion int `json:"configVersion"`
|
||||
Checksum string `json:"checksum"`
|
||||
Key string `json:"key"`
|
||||
CurrentContent string `json:"currentContent"`
|
||||
ProposedContent string `json:"proposedContent,omitempty"`
|
||||
@@ -473,6 +484,7 @@ type ServerConfigDiffPreviewResponse struct {
|
||||
|
||||
type ServerConfigWriteApprovalRequest struct {
|
||||
ExpectedConfigVersion int `json:"expectedConfigVersion"`
|
||||
ExpectedChecksum string `json:"expectedChecksum,omitempty"`
|
||||
Key string `json:"key"`
|
||||
ProposedContent string `json:"proposedContent,omitempty"`
|
||||
ProposedContentInputRef string `json:"proposedContentInputRef,omitempty"`
|
||||
@@ -491,7 +503,9 @@ type FileOperationDispatchRequest struct {
|
||||
Operation domain.FileOperationKind `json:"operation"`
|
||||
Key string `json:"key"`
|
||||
InputRef string `json:"inputRef,omitempty"`
|
||||
Content string `json:"content,omitempty"`
|
||||
ExpectedConfigVersion int `json:"expectedConfigVersion,omitempty"`
|
||||
ExpectedChecksum string `json:"expectedChecksum,omitempty"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
}
|
||||
|
||||
@@ -516,6 +530,8 @@ type RunEndpointCreateRequest struct {
|
||||
ID string `json:"id"`
|
||||
DisplayName string `json:"displayName"`
|
||||
Version string `json:"version"`
|
||||
Platform string `json:"platform,omitempty"`
|
||||
Architecture string `json:"architecture,omitempty"`
|
||||
Status domain.RunEndpointStatus `json:"status"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
Capacity RunCapacityResponse `json:"capacity"`
|
||||
@@ -526,6 +542,8 @@ type RunEndpointResponse struct {
|
||||
ID string `json:"id"`
|
||||
DisplayName string `json:"displayName"`
|
||||
Version string `json:"version"`
|
||||
Platform string `json:"platform,omitempty"`
|
||||
Architecture string `json:"architecture,omitempty"`
|
||||
Status domain.RunEndpointStatus `json:"status"`
|
||||
Capabilities []string `json:"capabilities"`
|
||||
Capacity RunCapacityResponse `json:"capacity"`
|
||||
@@ -553,19 +571,49 @@ type JobProgressBody struct {
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
type JobRetryPolicyResponse struct {
|
||||
MaxAttempts int `json:"maxAttempts"`
|
||||
InitialBackoffSeconds int `json:"initialBackoffSeconds"`
|
||||
MaxBackoffSeconds int `json:"maxBackoffSeconds"`
|
||||
}
|
||||
|
||||
type JobResponse struct {
|
||||
ID string `json:"id"`
|
||||
ServerInstanceID string `json:"serverInstanceId,omitempty"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Capability string `json:"capability"`
|
||||
TargetKey string `json:"targetKey,omitempty"`
|
||||
InputRef string `json:"inputRef,omitempty"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
State domain.JobState `json:"state"`
|
||||
Progress JobProgressBody `json:"progress"`
|
||||
ResultRef string `json:"resultRef,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
ID string `json:"id"`
|
||||
ServerInstanceID string `json:"serverInstanceId,omitempty"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Capability string `json:"capability"`
|
||||
TargetKey string `json:"targetKey,omitempty"`
|
||||
InputRef string `json:"inputRef,omitempty"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
State domain.JobState `json:"state"`
|
||||
Progress JobProgressBody `json:"progress"`
|
||||
ResultRef string `json:"resultRef,omitempty"`
|
||||
ExecutionResult JobExecutionResultResponse `json:"executionResult,omitempty"`
|
||||
RetryPolicy JobRetryPolicyResponse `json:"retryPolicy"`
|
||||
Attempt int `json:"attempt"`
|
||||
NextAttemptAt *time.Time `json:"nextAttemptAt,omitempty"`
|
||||
AckDeadlineAt *time.Time `json:"ackDeadlineAt,omitempty"`
|
||||
LeaseExpiresAt *time.Time `json:"leaseExpiresAt,omitempty"`
|
||||
CancelReason string `json:"cancelReason,omitempty"`
|
||||
CancelRequestedAt *time.Time `json:"cancelRequestedAt,omitempty"`
|
||||
CancelCompletedAt *time.Time `json:"cancelCompletedAt,omitempty"`
|
||||
TerminalAt *time.Time `json:"terminalAt,omitempty"`
|
||||
LastReconciledAt *time.Time `json:"lastReconciledAt,omitempty"`
|
||||
ReconcileCount int `json:"reconcileCount"`
|
||||
ReconcileOutcome string `json:"reconcileOutcome,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type JobExecutionResultResponse struct {
|
||||
Kind string `json:"kind,omitempty"`
|
||||
ProcessState string `json:"processState,omitempty"`
|
||||
ExitClassification string `json:"exitClassification,omitempty"`
|
||||
ExitCode int `json:"exitCode,omitempty"`
|
||||
Version int `json:"version,omitempty"`
|
||||
Checksum string `json:"checksum,omitempty"`
|
||||
SizeBytes int64 `json:"sizeBytes,omitempty"`
|
||||
AuditSummary string `json:"auditSummary,omitempty"`
|
||||
}
|
||||
|
||||
type JobListResponse struct {
|
||||
@@ -768,20 +816,21 @@ func (request GamePluginManifestRegistrationRequest) ToDomain() domain.GamePlugi
|
||||
return domain.GamePluginManifestRegistration{
|
||||
ManifestRef: request.ManifestRef,
|
||||
Manifest: domain.GamePluginManifest{
|
||||
ID: request.Manifest.ID,
|
||||
Name: request.Manifest.Name,
|
||||
Description: request.Manifest.Description,
|
||||
Version: request.Manifest.Version,
|
||||
Kind: request.Manifest.Kind,
|
||||
Tags: domain.CopyStringSlice(request.Manifest.Tags),
|
||||
Server: request.Manifest.Server.ToDomain(),
|
||||
Bridge: request.Manifest.Bridge.ToDomain(),
|
||||
Capabilities: domain.CopyStringSlice(request.Manifest.Capabilities),
|
||||
Permissions: domain.CopyStringSlice(request.Manifest.Permissions),
|
||||
Actions: request.Manifest.Actions.ToDomain(),
|
||||
Pages: pagesToDomain(request.Manifest.Pages),
|
||||
AI: request.Manifest.AI.ToDomain(),
|
||||
RemoteAccess: request.Manifest.RemoteAccess.ToDomain(),
|
||||
ID: request.Manifest.ID,
|
||||
Name: request.Manifest.Name,
|
||||
Description: request.Manifest.Description,
|
||||
Version: request.Manifest.Version,
|
||||
Kind: request.Manifest.Kind,
|
||||
Tags: domain.CopyStringSlice(request.Manifest.Tags),
|
||||
Server: request.Manifest.Server.ToDomain(),
|
||||
Bridge: request.Manifest.Bridge.ToDomain(),
|
||||
Capabilities: domain.CopyStringSlice(request.Manifest.Capabilities),
|
||||
Permissions: domain.CopyStringSlice(request.Manifest.Permissions),
|
||||
Actions: request.Manifest.Actions.ToDomain(),
|
||||
Pages: pagesToDomain(request.Manifest.Pages),
|
||||
AI: request.Manifest.AI.ToDomain(),
|
||||
RemoteAccess: request.Manifest.RemoteAccess.ToDomain(),
|
||||
RuntimeProfiles: request.Manifest.RuntimeProfiles.ToDomain(),
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -843,6 +892,7 @@ func (request GamePluginCreateRequest) ToDomain() domain.GamePlugin {
|
||||
Tags: domain.CopyStringSlice(request.Tags),
|
||||
AIPurposes: domain.CopyStringSlice(request.AIPurposes),
|
||||
RemoteAccess: request.RemoteAccess.ToDomain(),
|
||||
RuntimeProfiles: request.RuntimeProfiles.ToDomain(),
|
||||
ValidationViolations: domain.CopyStringSlice(request.ValidationViolations),
|
||||
}
|
||||
}
|
||||
@@ -867,6 +917,7 @@ func (request ServerConfigDiffPreviewRequest) ToDomain(serverInstanceID string)
|
||||
return domain.ServerConfigDiffRequest{
|
||||
ServerInstanceID: serverInstanceID,
|
||||
ExpectedConfigVersion: request.ExpectedConfigVersion,
|
||||
ExpectedChecksum: request.ExpectedChecksum,
|
||||
Key: request.Key,
|
||||
ProposedContent: request.ProposedContent,
|
||||
ProposedContentInputRef: request.ProposedContentInputRef,
|
||||
@@ -877,6 +928,7 @@ func (request ServerConfigWriteApprovalRequest) ToDomain(serverInstanceID string
|
||||
return domain.ServerConfigWriteApproval{
|
||||
ServerInstanceID: serverInstanceID,
|
||||
ExpectedConfigVersion: request.ExpectedConfigVersion,
|
||||
ExpectedChecksum: request.ExpectedChecksum,
|
||||
Key: request.Key,
|
||||
ProposedContent: request.ProposedContent,
|
||||
ProposedContentInputRef: request.ProposedContentInputRef,
|
||||
@@ -891,7 +943,9 @@ func (request FileOperationDispatchRequest) ToDomain() domain.FileOperationDispa
|
||||
Operation: request.Operation,
|
||||
Key: request.Key,
|
||||
InputRef: request.InputRef,
|
||||
Content: request.Content,
|
||||
ExpectedConfigVersion: request.ExpectedConfigVersion,
|
||||
ExpectedChecksum: request.ExpectedChecksum,
|
||||
IdempotencyKey: request.IdempotencyKey,
|
||||
}
|
||||
}
|
||||
@@ -901,6 +955,8 @@ func (request RunEndpointCreateRequest) ToDomain() domain.RunEndpoint {
|
||||
ID: request.ID,
|
||||
DisplayName: request.DisplayName,
|
||||
Version: request.Version,
|
||||
Platform: request.Platform,
|
||||
Architecture: request.Architecture,
|
||||
Status: request.Status,
|
||||
Capabilities: domain.CopyStringSlice(request.Capabilities),
|
||||
Capacity: capacityToDomain(request.Capacity),
|
||||
@@ -988,6 +1044,7 @@ func AuthSessionFromDomain(session domain.AuthSession) AuthSessionResponse {
|
||||
SessionID: session.SessionID,
|
||||
Status: session.Status,
|
||||
Message: session.Message,
|
||||
ExpiresAt: session.ExpiresAt,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1016,17 +1073,17 @@ func UserListFromDomain(users []domain.User) UserListResponse {
|
||||
func AIProviderFromDomain(provider domain.AIProvider) AIProviderResponse {
|
||||
provider = domain.CopyAIProvider(provider)
|
||||
return AIProviderResponse{
|
||||
ID: provider.ID,
|
||||
Name: provider.Name,
|
||||
Kind: provider.Kind,
|
||||
BaseURL: provider.BaseURL,
|
||||
APIKeyRef: provider.APIKeyRef,
|
||||
Models: provider.Models,
|
||||
DefaultModel: provider.DefaultModel,
|
||||
RelayMode: provider.RelayMode,
|
||||
TimeoutMS: provider.TimeoutMS,
|
||||
Status: provider.Status,
|
||||
RedactionPolicy: provider.RedactionPolicy,
|
||||
ID: provider.ID,
|
||||
Name: provider.Name,
|
||||
Kind: provider.Kind,
|
||||
BaseURL: provider.BaseURL,
|
||||
APIKeyConfigured: provider.APIKeyRef != "",
|
||||
Models: provider.Models,
|
||||
DefaultModel: provider.DefaultModel,
|
||||
RelayMode: provider.RelayMode,
|
||||
TimeoutMS: provider.TimeoutMS,
|
||||
Status: provider.Status,
|
||||
RedactionPolicy: provider.RedactionPolicy,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1079,6 +1136,7 @@ func GamePluginFromDomain(plugin domain.GamePlugin) GamePluginResponse {
|
||||
Tags: plugin.Tags,
|
||||
AIPurposes: plugin.AIPurposes,
|
||||
RemoteAccess: remoteAccessFromDomain(plugin.RemoteAccess),
|
||||
RuntimeProfiles: runtimeProfilesFromDomain(plugin.RuntimeProfiles),
|
||||
ValidationViolations: plugin.ValidationViolations,
|
||||
Status: plugin.Status,
|
||||
}
|
||||
@@ -1167,6 +1225,7 @@ func MarketplacePluginFromDomain(plugin domain.PluginMarketplacePlugin) Marketpl
|
||||
Tags: plugin.Tags,
|
||||
AIPurposes: plugin.AIPurposes,
|
||||
RemoteAccess: remoteAccessFromDomain(plugin.RemoteAccess),
|
||||
RuntimeProfiles: runtimeProfilesFromDomain(plugin.RuntimeProfiles),
|
||||
ValidationViolations: plugin.ValidationViolations,
|
||||
Status: plugin.Status,
|
||||
Source: plugin.Source,
|
||||
@@ -1188,17 +1247,20 @@ func ServerInstanceFromDomain(instance domain.ServerInstance) ServerInstanceResp
|
||||
adminUserIDs = []string{}
|
||||
}
|
||||
return ServerInstanceResponse{
|
||||
ID: instance.ID,
|
||||
PluginID: instance.PluginID,
|
||||
PluginVersion: instance.PluginVersion,
|
||||
RunEndpointID: instance.RunEndpointID,
|
||||
Name: instance.Name,
|
||||
OwnerUserID: instance.OwnerUserID,
|
||||
AdminUserIDs: adminUserIDs,
|
||||
State: instance.State,
|
||||
ConfigVersion: instance.ConfigVersion,
|
||||
CreatedAt: instance.CreatedAt,
|
||||
UpdatedAt: instance.UpdatedAt,
|
||||
ID: instance.ID,
|
||||
PluginID: instance.PluginID,
|
||||
PluginVersion: instance.PluginVersion,
|
||||
RunEndpointID: instance.RunEndpointID,
|
||||
Name: instance.Name,
|
||||
OwnerUserID: instance.OwnerUserID,
|
||||
AdminUserIDs: adminUserIDs,
|
||||
State: instance.State,
|
||||
ConfigVersion: instance.ConfigVersion,
|
||||
ConfigKey: instance.ConfigKey,
|
||||
ConfigChecksum: instance.ConfigChecksum,
|
||||
ConfigUpdatedAt: optionalTime(instance.ConfigUpdatedAt),
|
||||
CreatedAt: instance.CreatedAt,
|
||||
UpdatedAt: instance.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1274,6 +1336,7 @@ func ServerConfigFromDomain(config domain.ServerConfig) ServerConfigResponse {
|
||||
Format: config.Format,
|
||||
Key: config.Key,
|
||||
Content: config.Content,
|
||||
Checksum: config.Checksum,
|
||||
Source: config.Source,
|
||||
UpdatedAt: config.UpdatedAt,
|
||||
}
|
||||
@@ -1293,6 +1356,7 @@ func ServerConfigDiffPreviewFromDomain(preview domain.ServerConfigDiffPreview) S
|
||||
return ServerConfigDiffPreviewResponse{
|
||||
ServerInstanceID: preview.ServerInstanceID,
|
||||
ConfigVersion: preview.ConfigVersion,
|
||||
Checksum: preview.Checksum,
|
||||
Key: preview.Key,
|
||||
CurrentContent: preview.CurrentContent,
|
||||
ProposedContent: preview.ProposedContent,
|
||||
@@ -1332,6 +1396,8 @@ func RunEndpointFromDomain(endpoint domain.RunEndpoint) RunEndpointResponse {
|
||||
ID: endpoint.ID,
|
||||
DisplayName: endpoint.DisplayName,
|
||||
Version: endpoint.Version,
|
||||
Platform: endpoint.Platform,
|
||||
Architecture: endpoint.Architecture,
|
||||
Status: endpoint.Status,
|
||||
Capabilities: endpoint.Capabilities,
|
||||
Capacity: capacityFromDomain(endpoint.Capacity),
|
||||
@@ -1359,11 +1425,36 @@ func JobFromDomain(job domain.Job) JobResponse {
|
||||
State: job.State,
|
||||
Progress: progressFromDomain(job.Progress),
|
||||
ResultRef: job.ResultRef,
|
||||
CreatedAt: job.CreatedAt,
|
||||
UpdatedAt: job.UpdatedAt,
|
||||
ExecutionResult: JobExecutionResultResponse{Kind: job.ExecutionResult.Kind, ProcessState: job.ExecutionResult.ProcessState, ExitClassification: job.ExecutionResult.ExitClassification, ExitCode: job.ExecutionResult.ExitCode, Version: job.ExecutionResult.Version, Checksum: job.ExecutionResult.Checksum, SizeBytes: job.ExecutionResult.SizeBytes, AuditSummary: job.ExecutionResult.AuditSummary},
|
||||
RetryPolicy: JobRetryPolicyResponse{
|
||||
MaxAttempts: job.RetryPolicy.MaxAttempts,
|
||||
InitialBackoffSeconds: job.RetryPolicy.InitialBackoffSeconds,
|
||||
MaxBackoffSeconds: job.RetryPolicy.MaxBackoffSeconds,
|
||||
},
|
||||
Attempt: job.Attempt,
|
||||
NextAttemptAt: optionalTime(job.NextAttemptAt),
|
||||
AckDeadlineAt: optionalTime(job.AckDeadlineAt),
|
||||
LeaseExpiresAt: optionalTime(job.LeaseExpiresAt),
|
||||
CancelReason: job.CancelReason,
|
||||
CancelRequestedAt: optionalTime(job.CancelRequestedAt),
|
||||
CancelCompletedAt: optionalTime(job.CancelCompletedAt),
|
||||
TerminalAt: optionalTime(job.TerminalAt),
|
||||
LastReconciledAt: optionalTime(job.LastReconciledAt),
|
||||
ReconcileCount: job.ReconcileCount,
|
||||
ReconcileOutcome: job.ReconcileOutcome,
|
||||
CreatedAt: job.CreatedAt,
|
||||
UpdatedAt: job.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
func optionalTime(value time.Time) *time.Time {
|
||||
if value.IsZero() {
|
||||
return nil
|
||||
}
|
||||
copy := value
|
||||
return ©
|
||||
}
|
||||
|
||||
func JobListFromDomain(jobs []domain.Job) JobListResponse {
|
||||
items := make([]JobResponse, len(jobs))
|
||||
for i, job := range jobs {
|
||||
|
||||
Reference in New Issue
Block a user