| 28 | } |
| 29 | |
| 30 | func (g *GithubIssuesReader) Run(ctx context.Context, sharedState *types.AgentSharedState, params types.ActionParams) (types.ActionResult, error) { |
| 31 | result := struct { |
| 32 | Repository string `json:"repository"` |
| 33 | Owner string `json:"owner"` |
| 34 | Label string `json:"label"` |
| 35 | IssueNumber int `json:"issue_number"` |
| 36 | }{} |
| 37 | err := params.Unmarshal(&result) |
| 38 | if err != nil { |
| 39 | return types.ActionResult{}, err |
| 40 | } |
| 41 | |
| 42 | if g.repository != "" && g.owner != "" { |
| 43 | result.Repository = g.repository |
| 44 | result.Owner = g.owner |
| 45 | } |
| 46 | |
| 47 | issue, _, err := g.client.Issues.Get(ctx, result.Owner, result.Repository, result.IssueNumber) |
| 48 | if err == nil && issue != nil { |
| 49 | return types.ActionResult{ |
| 50 | Result: fmt.Sprintf( |
| 51 | "Issue %d Repository: %s\nTitle: %s\nBody: %s", |
| 52 | issue.GetNumber(), issue.GetRepository().GetFullName(), issue.GetTitle(), issue.GetBody()), |
| 53 | }, nil |
| 54 | } |
| 55 | if err != nil { |
| 56 | return types.ActionResult{Result: fmt.Sprintf("Error fetching issue: %s", err.Error())}, err |
| 57 | } |
| 58 | return types.ActionResult{Result: fmt.Sprintf("No issue found")}, err |
| 59 | } |
| 60 | |
| 61 | func (g *GithubIssuesReader) Definition() types.ActionDefinition { |
| 62 | actionName := "read_github_issue" |