commitdiscussions

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package commitdiscussions implements MCP tools for GitLab commit discussion operations.

markdown.go provides Markdown formatting functions for commit discussion MCP tool output.

register.go wires commitdiscussions MCP tools to the MCP server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteNote

func DeleteNote(ctx context.Context, client *gitlabclient.Client, input DeleteNoteInput) error

DeleteNote deletes a commit discussion note.

func FormatListMarkdown

func FormatListMarkdown(out ListOutput) *mcp.CallToolResult

FormatListMarkdown formats a list of discussions as Markdown.

func FormatListMarkdownString

func FormatListMarkdownString(out ListOutput) string

FormatListMarkdownString renders discussions list as Markdown.

func FormatMarkdown

func FormatMarkdown(out Output) *mcp.CallToolResult

FormatMarkdown formats a single discussion as Markdown.

func FormatMarkdownString

func FormatMarkdownString(out Output) string

FormatMarkdownString renders a discussion as Markdown.

func FormatNoteMarkdown

func FormatNoteMarkdown(out NoteOutput) *mcp.CallToolResult

FormatNoteMarkdown formats a single note as Markdown.

func FormatNoteMarkdownString

func FormatNoteMarkdownString(out NoteOutput) string

FormatNoteMarkdownString renders a note as Markdown.

func RegisterMeta

func RegisterMeta(server *mcp.Server, client *gitlabclient.Client)

RegisterMeta registers the gitlab_commit_discussion meta-tool.

func RegisterTools

func RegisterTools(server *mcp.Server, client *gitlabclient.Client)

RegisterTools registers all commit discussion tools on the MCP server.

Types

type AddNoteInput

type AddNoteInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA    string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	DiscussionID string               `json:"discussion_id" jsonschema:"Discussion ID to reply to,required"`
	Body         string               `json:"body" jsonschema:"Note body (Markdown supported),required"`
}

AddNoteInput defines parameters for adding a note to a commit discussion.

type CreateInput

type CreateInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	Body      string               `json:"body" jsonschema:"Discussion body (Markdown supported),required"`
	Position  *PositionInput       `json:"position,omitempty" jsonschema:"Position for inline diff comments"`
}

CreateInput defines parameters for creating a commit discussion.

type DeleteNoteInput

type DeleteNoteInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA    string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	DiscussionID string               `json:"discussion_id" jsonschema:"Discussion ID,required"`
	NoteID       int64                `json:"note_id" jsonschema:"Note ID to delete,required"`
}

DeleteNoteInput defines parameters for deleting a commit discussion note.

type GetInput

type GetInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA    string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	DiscussionID string               `json:"discussion_id" jsonschema:"Discussion ID,required"`
}

GetInput defines parameters for getting a single commit discussion.

type ListInput

type ListInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	Page      int64                `json:"page,omitempty" jsonschema:"Page number for pagination"`
	PerPage   int64                `json:"per_page,omitempty" jsonschema:"Number of items per page"`
}

ListInput defines parameters for listing commit discussions.

type ListOutput

type ListOutput struct {
	toolutil.HintableOutput
	Discussions []Output                  `json:"discussions"`
	Pagination  toolutil.PaginationOutput `json:"pagination"`
}

ListOutput holds a list of commit discussions.

func List

func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)

List lists commit discussions.

type NoteOutput

type NoteOutput struct {
	toolutil.HintableOutput
	ID        int64  `json:"id"`
	Body      string `json:"body"`
	Author    string `json:"author"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at,omitempty"`
	System    bool   `json:"system"`
}

NoteOutput represents a single note within a discussion.

func AddNote

func AddNote(ctx context.Context, client *gitlabclient.Client, input AddNoteInput) (NoteOutput, error)

AddNote adds a note to an existing commit discussion.

func UpdateNote

func UpdateNote(ctx context.Context, client *gitlabclient.Client, input UpdateNoteInput) (NoteOutput, error)

UpdateNote updates an existing commit discussion note.

type Output

type Output struct {
	toolutil.HintableOutput
	ID             string       `json:"id"`
	IndividualNote bool         `json:"individual_note"`
	Notes          []NoteOutput `json:"notes"`
}

Output represents a discussion thread.

func Create

func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)

Create creates a new commit discussion thread.

func Get

func Get(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)

Get gets a single commit discussion.

type PositionInput

type PositionInput struct {
	BaseSHA      string `json:"base_sha" jsonschema:"Base commit SHA,required"`
	StartSHA     string `json:"start_sha" jsonschema:"Start commit SHA,required"`
	HeadSHA      string `json:"head_sha" jsonschema:"Head commit SHA,required"`
	PositionType string `json:"position_type" jsonschema:"Position type (text or image),required"`
	NewPath      string `json:"new_path,omitempty" jsonschema:"File path after change"`
	NewLine      int64  `json:"new_line,omitempty" jsonschema:"Line number after change"`
	OldPath      string `json:"old_path,omitempty" jsonschema:"File path before change"`
	OldLine      int64  `json:"old_line,omitempty" jsonschema:"Line number before change"`
}

PositionInput defines position attributes for inline commit discussions.

type UpdateNoteInput

type UpdateNoteInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	CommitSHA    string               `json:"commit_sha" jsonschema:"Commit SHA,required"`
	DiscussionID string               `json:"discussion_id" jsonschema:"Discussion ID,required"`
	NoteID       int64                `json:"note_id" jsonschema:"Note ID to update,required"`
	Body         string               `json:"body" jsonschema:"Updated note body,required"`
}

UpdateNoteInput defines parameters for updating a commit discussion note.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL