package server import ( "context" "chat-agent-system/internal/chat" "chat-agent-system/internal/projectworkflow" ) // chatWorkflowAdapter adapts projectworkflow.Service to chat.WorkflowRunner // without letting the chat package import projectworkflow (module boundary). type chatWorkflowAdapter struct { svc *projectworkflow.Service } func adaptChatWorkflow(svc *projectworkflow.Service) chat.WorkflowRunner { if svc == nil { return nil } return chatWorkflowAdapter{svc: svc} } func (a chatWorkflowAdapter) CreateWorkflowRun(ctx context.Context, req chat.WorkflowStartRequest) (*chat.WorkflowStartResult, error) { startedBy := req.StartedBy created, err := a.svc.CreateWorkflowRun(ctx, &projectworkflow.WorkflowRun{ RunID: req.RunID, ProjectID: req.ProjectID, WorkflowKey: req.WorkflowKey, StartedBy: &startedBy, Status: req.Status, }) if err != nil { return nil, err } return &chat.WorkflowStartResult{RunID: created.RunID}, nil }