Documentation
¶
Overview ¶
Package mrnotes implements MCP tools for GitLab merge request note operations.
The package wraps the GitLab Notes API for merge request notes:
Index ¶
- func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
- func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
- func FormatListMarkdown(out ListOutput) string
- func FormatOutputMarkdown(n Output) string
- type CreateInput
- type DeleteInput
- type GetInput
- type ListInput
- type ListOutput
- type Output
- func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
- func GetNote(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)
- func ToOutput(n *gl.Note, extra toolutil.NoteExtra) Output
- func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
- type UpdateInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ActionSpecs ¶
func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
ActionSpecs returns canonical specs for merge request note actions exposed as MCP tools. The create/list/get/update/delete routes are projected into the dynamic, meta, individual, and audit surfaces by the action catalog (ADR-0004).
func Delete ¶
func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
Delete removes a note from a merge request. Returns an error if the note does not exist or the user lacks permission.
func FormatListMarkdown ¶
func FormatListMarkdown(out ListOutput) string
FormatListMarkdown renders a list of MR notes as a Markdown table.
IncludeInternal matches issuenotes: a merge request carries internal notes too, and without the column a reader could not tell one from a note everybody can see. The table carries no link, so the hints carry no instruction to keep them — toolutil.FormatNoteListMarkdown drops that one — and they name the canonical action IDs every surface resolves rather than describing a tool.
func FormatOutputMarkdown ¶
FormatOutputMarkdown renders a single MR note as a Markdown summary.
Types ¶
type CreateInput ¶
type CreateInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
MRIID int64 `json:"merge_request_iid" jsonschema:"Merge request IID (project-scoped, not 'merge_request_id'),required"`
Body string `json:"body" jsonschema:"Comment body (Markdown supported),required"`
Internal *bool `json:"internal,omitempty" jsonschema:"Mark note as internal (visible only to project members)"`
CreatedAt string `` /* 192-byte string literal not displayed */
MergeRequestDiffHeadSHA string `` /* 172-byte string literal not displayed */
}
CreateInput defines parameters for adding a general comment to a merge request.
type DeleteInput ¶
type DeleteInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
MRIID int64 `json:"merge_request_iid" jsonschema:"Merge request IID (project-scoped, not 'merge_request_id'),required"`
NoteID int64 `json:"note_id" jsonschema:"ID of the note to delete,required"`
}
DeleteInput defines parameters for deleting a note.
type GetInput ¶
type GetInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
MRIID int64 `json:"merge_request_iid" jsonschema:"Merge request IID (project-scoped, not 'merge_request_id'),required"`
NoteID int64 `json:"note_id" jsonschema:"ID of the note to retrieve,required"`
}
GetInput defines parameters for getting a single note.
type ListInput ¶
type ListInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
MRIID int64 `json:"merge_request_iid" jsonschema:"Merge request IID (project-scoped, not 'merge_request_id'),required"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order by field (created_at, updated_at)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
ListInput defines parameters for listing merge request notes.
type ListOutput ¶
type ListOutput struct {
toolutil.HintableOutput
Notes []Output `json:"notes"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
ListOutput holds a list of notes.
func List ¶
func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)
List returns a paginated list of notes for a merge request. Results can be ordered by creation or update time and sorted in ascending or descending direction.
type Output ¶
type Output toolutil.NoteOutput
Output is a merge request note: a type of its own over toolutil.NoteOutput, the canonical REST note shape the issue, merge request and snippet note packages share, whose fields and JSON tags are defined there; see toolutil.NoteOutputFromGitLab for the 1:1 audit conversion logic. It is a defined type rather than an alias because the Markdown registry is keyed by type: while the three packages aliased one, the issue note formatter rendered every merge request note as an "Issue Note" naming issue actions, and this package's card was never served (issue 1291).
func Create ¶
func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
Create adds a new general comment to a merge request. The body is normalized before submission. Returns the created note.
func ToOutput ¶
ToOutput converts a GitLab API gl.Note, and what the captured response adds to it, to the MCP tool Output shape. Delegates to toolutil.NoteOutputFromGitLab which owns the 1:1 audit field mapping and timestamp formatting.
func Update ¶
func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
Update modifies the body of an existing note on a merge request. Returns the updated note with refreshed timestamps.
type UpdateInput ¶
type UpdateInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
MRIID int64 `json:"merge_request_iid" jsonschema:"Merge request IID (project-scoped, not 'merge_request_id'),required"`
NoteID int64 `json:"note_id" jsonschema:"ID of the note to update,required"`
Body string `json:"body" jsonschema:"Updated comment body,required"`
}
UpdateInput defines parameters for editing a note.