diff --git a/app/api/controller/aiagent/generate_pipeline_step.go b/app/api/controller/aiagent/generate_pipeline_step.go index 41c94f5fb..30968d07e 100644 --- a/app/api/controller/aiagent/generate_pipeline_step.go +++ b/app/api/controller/aiagent/generate_pipeline_step.go @@ -27,7 +27,9 @@ func (c *Controller) GeneratePipelineStep( in *controllertypes.GeneratePipelineStepInput, ) (*controllertypes.GeneratePipelineStepOutput, error) { generateRequest := &aitypes.PipelineStepGenerateRequest{ - Prompt: in.Prompt, + Prompt: in.Prompt, + Metadata: in.Metadata, + Conversation: in.Conversation, } output, err := c.intelligence.GeneratePipelineStep(ctx, generateRequest) diff --git a/app/api/controller/aiagent/types/common.go b/app/api/controller/aiagent/types/common.go index ed3adaace..1abab1ea5 100644 --- a/app/api/controller/aiagent/types/common.go +++ b/app/api/controller/aiagent/types/common.go @@ -21,4 +21,30 @@ type Suggestion struct { Suggestion string } +// Enum type for Role. +type Role string + +const ( + RoleUser Role = "user" + RoleAssistant Role = "assistant" +) + +// Enum type for Message Type. +type MessageType string + +const ( + TypeText MessageType = "text" + TypeYAML MessageType = "yaml" +) + +type Conversation struct { + Role Role `json:"role"` + Message Message `json:"message"` +} + +type Message struct { + Type MessageType `json:"type"` + Data string `json:"data"` +} + // Additional common structs can be defined here as needed. diff --git a/app/api/controller/aiagent/types/step.go b/app/api/controller/aiagent/types/step.go index e41ee9368..cf8053634 100644 --- a/app/api/controller/aiagent/types/step.go +++ b/app/api/controller/aiagent/types/step.go @@ -20,7 +20,9 @@ type PipelineStepData struct { // create. type GeneratePipelineStepInput struct { - Prompt string `json:"prompt"` + Prompt string `json:"prompt"` + Metadata map[string]string `json:"metadata"` + Conversation []Conversation `json:"conversation"` } type GeneratePipelineStepOutput struct { @@ -30,8 +32,9 @@ type GeneratePipelineStepOutput struct { // update. type UpdatePipelineStepInput struct { - Prompt string `json:"prompt"` - Data PipelineStepData `json:"data"` + Prompt string `json:"prompt"` + Data PipelineStepData `json:"data"` + Conversation []Conversation `json:"conversation"` } type UpdatePipelineStepOutput struct { diff --git a/types/aigenerate/step.go b/types/aigenerate/step.go index b06d7ad32..aa582b27e 100644 --- a/types/aigenerate/step.go +++ b/types/aigenerate/step.go @@ -14,8 +14,14 @@ package types +import ( + "github.com/harness/gitness/app/api/controller/aiagent/types" +) + type PipelineStepGenerateRequest struct { - Prompt string + Prompt string + Metadata map[string]string `json:"metadata"` + Conversation []types.Conversation `json:"conversation"` } type PipelineStepGenerateResponse struct { @@ -23,8 +29,10 @@ type PipelineStepGenerateResponse struct { } type PipelineStepUpdateRequest struct { - Prompt string - Step string + Prompt string + Step string + Metadata map[string]string `json:"metadata"` + Conversation []types.Conversation `json:"conversation"` } type PipelineStepUpdateResponse struct {