You've already forked agentic-coding-workflow
test(mcp): 13 PM tool tests + fix jsonschema tags
Add tools_pm_test.go with 13 integration tests covering all 16 PM tools via SDK in-memory transport with fake services. Fix jsonschema tags in tools_pm.go and tools_chat.go — SDK's tag parser rejects "required,min=1" and "required,description=X" syntax; use plain description text instead (non-pointer fields are auto-required). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+24
-24
@@ -76,7 +76,7 @@ func registerListProjects(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== list_workspaces =====
|
||||
|
||||
type listWorkspacesIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required,project slug"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"project slug"`
|
||||
}
|
||||
type workspaceSummary struct {
|
||||
ID string `json:"id"`
|
||||
@@ -126,7 +126,7 @@ func registerListWorkspaces(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== list_requirements =====
|
||||
|
||||
type listRequirementsIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Phase string `json:"phase,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
}
|
||||
@@ -178,7 +178,7 @@ func registerListRequirements(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== list_issues =====
|
||||
|
||||
type listIssuesIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
RequirementNumber any `json:"requirement_number,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
AssigneeID string `json:"assignee_id,omitempty"`
|
||||
@@ -246,8 +246,8 @@ func registerListIssues(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== get_issue =====
|
||||
|
||||
type getIssueIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
}
|
||||
type issueDetail struct {
|
||||
Number int `json:"number"`
|
||||
@@ -289,8 +289,8 @@ func registerGetIssue(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== get_requirement =====
|
||||
|
||||
type getRequirementIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
}
|
||||
type requirementDetail struct {
|
||||
Number int `json:"number"`
|
||||
@@ -334,8 +334,8 @@ func registerGetRequirement(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== create_issue =====
|
||||
|
||||
type createIssueIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Title string `json:"title" jsonschema:"required,minLength=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Title string `json:"title" jsonschema:"title (non-empty)"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
type issueCreateOut struct {
|
||||
@@ -377,8 +377,8 @@ func registerCreateIssue(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== update_issue =====
|
||||
|
||||
type updateIssueIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
Title string `json:"title,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
@@ -426,8 +426,8 @@ func registerUpdateIssue(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== close/reopen_issue =====
|
||||
|
||||
type closeIssueIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
}
|
||||
type okOut struct {
|
||||
OK bool `json:"ok"`
|
||||
@@ -486,8 +486,8 @@ func registerReopenIssue(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== assign_issue =====
|
||||
|
||||
type assignIssueIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
AssigneeID *string `json:"assignee_id,omitempty"`
|
||||
}
|
||||
|
||||
@@ -527,8 +527,8 @@ func registerAssignIssue(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== create_requirement =====
|
||||
|
||||
type createRequirementIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Title string `json:"title" jsonschema:"required,minLength=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Title string `json:"title" jsonschema:"title (non-empty)"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
type requirementCreateOut struct {
|
||||
@@ -571,8 +571,8 @@ func registerCreateRequirement(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== update_requirement =====
|
||||
|
||||
type updateRequirementIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
Title string `json:"title,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
@@ -617,8 +617,8 @@ func registerUpdateRequirement(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== close/reopen_requirement =====
|
||||
|
||||
type closeRequirementIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
}
|
||||
|
||||
func registerCloseRequirement(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
@@ -674,9 +674,9 @@ func registerReopenRequirement(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
// ===== set_requirement_phase =====
|
||||
|
||||
type setRequirementPhaseIn struct {
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required"`
|
||||
Number int `json:"number" jsonschema:"required,min=1"`
|
||||
Phase string `json:"phase" jsonschema:"required"`
|
||||
ProjectSlug string `json:"project_slug" jsonschema:"required field"`
|
||||
Number int `json:"number" jsonschema:"issue number (>=1)"`
|
||||
Phase string `json:"phase" jsonschema:"required field"`
|
||||
}
|
||||
|
||||
func registerSetRequirementPhase(srv *mcpsdk.Server, deps ServerDeps) {
|
||||
|
||||
Reference in New Issue
Block a user