package dto

import "encoding/json"

type AgentWorkflowPlanCreateInput struct {
	Action        string  `json:"action"`
	TeamID        string  `json:"teamId,omitempty"`
	Key           string  `json:"key"`
	DisplayName   string  `json:"displayName"`
	DescriptionMD string  `json:"descriptionMd,omitempty"`
	Source        *string `json:"source"`
}

type AgentWorkflowPlanListInput struct {
	Action          string `json:"action"`
	TeamID          string `json:"teamId,omitempty"`
	IncludeArchived bool   `json:"includeArchived,omitempty"`
	Limit           *int   `json:"limit,omitempty"`
	Cursor          string `json:"cursor,omitempty"`
}

type AgentWorkflowPlanIDInput struct {
	Action string `json:"action"`
	PlanID string `json:"planId"`
}

type AgentWorkflowPlanValidateInput struct {
	Action string  `json:"action"`
	Source *string `json:"source"`
}

type AgentWorkflowPlanReviseInput struct {
	Action               string          `json:"action"`
	PlanID               string          `json:"planId"`
	TeamID               string          `json:"teamId,omitempty"`
	ExpectedRevision     int64           `json:"expectedRevision"`
	ExpectedPlanRevision int64           `json:"expectedPlanRevision,omitempty"`
	DraftRevision        int64           `json:"draftRevision,omitempty"`
	MakeDefault          bool            `json:"makeDefault,omitempty"`
	Source               *string         `json:"source"`
	Layout               json.RawMessage `json:"layout,omitempty"`
}

type AgentWorkflowPlanPublishInput struct {
	Action           string `json:"action"`
	PlanID           string `json:"planId"`
	ExpectedRevision int64  `json:"expectedRevision"`
	MakeDefault      bool   `json:"makeDefault,omitempty"`
}

type AgentWorkflowPlanLifecycleInput struct {
	Action           string `json:"action"`
	PlanID           string `json:"planId"`
	ExpectedRevision int64  `json:"expectedRevision"`
}
