package dto

import "time"

type DesktopOnboardingAgent struct {
	ID            string `json:"id"`
	Name          string `json:"name"`
	DisplayName   string `json:"displayName"`
	MachineID     string `json:"machineId"`
	MachineStatus string `json:"machineStatus"`
	Status        string `json:"status"`
	Runnable      bool   `json:"runnable"`
}

type DesktopOnboardingResponse struct {
	WorkspaceID       string                   `json:"workspaceId"`
	TutorialChannelID string                   `json:"tutorialChannelId"`
	Subsystem         string                   `json:"subsystem"`
	FlowVersion       string                   `json:"flowVersion"`
	Status            string                   `json:"status,omitempty"`
	CurrentStep       string                   `json:"currentStep,omitempty"`
	Eligible          bool                     `json:"eligible"`
	EligibilityReason string                   `json:"eligibilityReason,omitempty"`
	Completed         bool                     `json:"completed"`
	CompletedAt       *time.Time               `json:"completedAt,omitempty"`
	ReplyMessageID    string                   `json:"replyMessageId,omitempty"`
	ReplySeq          int64                    `json:"replySeq,omitempty"`
	ReplyScopeID      string                   `json:"replyScopeId,omitempty"`
	Agents            []DesktopOnboardingAgent `json:"agents"`
}

type DesktopOnboardingVisibilityRequest struct {
	ScopeID        string `json:"scopeId"`
	ReplyMessageID string `json:"replyMessageId"`
}

type DesktopOnboardingMockStartRequest struct {
	TutorialChannelID string `json:"tutorialChannelId"`
	AgentID           string `json:"agentId"`
	PromptContent     string `json:"promptContent"`
	RequestContent    string `json:"requestContent"`
	ClientMessageID   string `json:"clientMessageId"`
}

type DesktopOnboardingMockStartResponse struct {
	Message        AppMessage         `json:"message"`
	ReplyThread    ReplyThreadSummary `json:"replyThread"`
	RequestMessage AppMessage         `json:"requestMessage"`
}

type DesktopOnboardingMockReplyRequest struct {
	ThreadScopeID        string `json:"threadScopeId"`
	AgentID              string `json:"agentId"`
	RequestMessageID     string `json:"requestMessageId"`
	ReplyClientMessageID string `json:"replyClientMessageId"`
}

type DesktopOnboardingMockReplyResponse struct {
	ReplyMessageID string `json:"replyMessageId"`
	Completed      bool   `json:"completed"`
}
