diff --git a/operation/issue/issue.go b/operation/issue/issue.go index 48174e0..3c824d8 100644 --- a/operation/issue/issue.go +++ b/operation/issue/issue.go @@ -61,6 +61,7 @@ var ( mcp.WithNumber("commentID", mcp.Description("id of issue comment (required for 'edit_comment')")), mcp.WithArray("labels", mcp.Description("array of label IDs (for 'create', 'add_labels', 'replace_labels')"), mcp.Items(map[string]any{"type": "number"})), mcp.WithNumber("label_id", mcp.Description("label ID to remove (required for 'remove_label')")), + mcp.WithString("ref", mcp.Description("branch name to associate with the issue (for 'create', 'update')")), mcp.WithString("deadline", mcp.Description("due date in ISO 8601 format (for 'create', 'update')")), mcp.WithBoolean("remove_deadline", mcp.Description("unset due date (for 'update')")), ) @@ -229,6 +230,9 @@ func createIssueFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR if labelIDs, err := params.GetInt64Slice(req.GetArguments(), "labels"); err == nil { opt.Labels = labelIDs } + if ref, ok := req.GetArguments()["ref"].(string); ok { + opt.Ref = ref + } opt.Deadline = params.GetOptionalTime(req.GetArguments(), "deadline") issue, _, err := client.CreateIssue(owner, repo, opt) if err != nil { @@ -306,6 +310,9 @@ func editIssueFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRes if ok { opt.State = new(gitea_sdk.StateType(state)) } + if ref, ok := req.GetArguments()["ref"].(string); ok { + opt.Ref = &ref + } opt.Deadline = params.GetOptionalTime(req.GetArguments(), "deadline") if removeDeadline, ok := req.GetArguments()["remove_deadline"].(bool); ok { opt.RemoveDeadline = &removeDeadline diff --git a/operation/issue/slim.go b/operation/issue/slim.go index 511a849..79bde93 100644 --- a/operation/issue/slim.go +++ b/operation/issue/slim.go @@ -63,6 +63,12 @@ func slimIssue(i *gitea_sdk.Issue) map[string]any { "title": i.Milestone.Title, } } + if i.Ref != "" { + m["ref"] = i.Ref + } + if i.Deadline != nil { + m["deadline"] = i.Deadline + } if i.PullRequest != nil { m["is_pull"] = true } @@ -88,6 +94,12 @@ func slimIssues(issues []*gitea_sdk.Issue) []map[string]any { if len(i.Labels) > 0 { m["labels"] = labelNames(i.Labels) } + if i.Ref != "" { + m["ref"] = i.Ref + } + if i.Deadline != nil { + m["deadline"] = i.Deadline + } out = append(out, m) } return out diff --git a/operation/search/slim.go b/operation/search/slim.go index 734f08a..6a84eef 100644 --- a/operation/search/slim.go +++ b/operation/search/slim.go @@ -129,6 +129,12 @@ func slimIssues(issues []*gitea_sdk.Issue) []map[string]any { if i.Repository != nil { m["repository"] = i.Repository.FullName } + if i.Ref != "" { + m["ref"] = i.Ref + } + if i.Deadline != nil { + m["deadline"] = i.Deadline + } if i.PullRequest != nil { m["is_pull"] = true }