Add delete tasks to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -1448,6 +1448,21 @@ func (r *Resolver) UnassignTaskTool(ctx context.Context, req *mcp.CallToolReques
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Resolver) DeleteTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteTaskInput) (*mcp.CallToolResult, types.DeleteTaskOutput, error) {
|
||||||
|
r.MustAuthorize(ctx, input.ID, probo.ActionTaskDelete)
|
||||||
|
|
||||||
|
svc := r.ProboService(ctx, input.ID)
|
||||||
|
|
||||||
|
err := svc.Tasks.Delete(ctx, input.ID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, types.DeleteTaskOutput{}, fmt.Errorf("failed to delete task: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, types.DeleteTaskOutput{
|
||||||
|
DeletedTaskID: input.ID,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *Resolver) ListSnapshotsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListSnapshotsInput) (*mcp.CallToolResult, types.ListSnapshotsOutput, error) {
|
func (r *Resolver) ListSnapshotsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListSnapshotsInput) (*mcp.CallToolResult, types.ListSnapshotsOutput, error) {
|
||||||
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionSnapshotList)
|
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionSnapshotList)
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ type ResolverInterface interface {
|
|||||||
UpdateTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateTaskInput) (*mcp.CallToolResult, types.UpdateTaskOutput, error)
|
UpdateTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateTaskInput) (*mcp.CallToolResult, types.UpdateTaskOutput, error)
|
||||||
AssignTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AssignTaskInput) (*mcp.CallToolResult, types.AssignTaskOutput, error)
|
AssignTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AssignTaskInput) (*mcp.CallToolResult, types.AssignTaskOutput, error)
|
||||||
UnassignTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UnassignTaskInput) (*mcp.CallToolResult, types.UnassignTaskOutput, error)
|
UnassignTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UnassignTaskInput) (*mcp.CallToolResult, types.UnassignTaskOutput, error)
|
||||||
|
DeleteTaskTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteTaskInput) (*mcp.CallToolResult, types.DeleteTaskOutput, error)
|
||||||
ListSnapshotsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListSnapshotsInput) (*mcp.CallToolResult, types.ListSnapshotsOutput, error)
|
ListSnapshotsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListSnapshotsInput) (*mcp.CallToolResult, types.ListSnapshotsOutput, error)
|
||||||
GetSnapshotTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetSnapshotInput) (*mcp.CallToolResult, types.GetSnapshotOutput, error)
|
GetSnapshotTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetSnapshotInput) (*mcp.CallToolResult, types.GetSnapshotOutput, error)
|
||||||
TakeSnapshotTool(ctx context.Context, req *mcp.CallToolRequest, input *types.TakeSnapshotInput) (*mcp.CallToolResult, types.TakeSnapshotOutput, error)
|
TakeSnapshotTool(ctx context.Context, req *mcp.CallToolRequest, input *types.TakeSnapshotInput) (*mcp.CallToolResult, types.TakeSnapshotOutput, error)
|
||||||
@@ -842,6 +843,19 @@ func registerToolHandlers(server *mcp.Server, resolver ResolverInterface) {
|
|||||||
},
|
},
|
||||||
resolver.UnassignTaskTool,
|
resolver.UnassignTaskTool,
|
||||||
)
|
)
|
||||||
|
mcp.AddTool(
|
||||||
|
server,
|
||||||
|
&mcp.Tool{
|
||||||
|
Name: "deleteTask",
|
||||||
|
Description: "Delete a task",
|
||||||
|
InputSchema: types.DeleteTaskToolInputSchema,
|
||||||
|
OutputSchema: types.DeleteTaskToolOutputSchema,
|
||||||
|
Annotations: &mcp.ToolAnnotations{
|
||||||
|
DestructiveHint: boolPtr(true),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
resolver.DeleteTaskTool,
|
||||||
|
)
|
||||||
mcp.AddTool(
|
mcp.AddTool(
|
||||||
server,
|
server,
|
||||||
&mcp.Tool{
|
&mcp.Tool{
|
||||||
|
|||||||
@@ -3386,6 +3386,24 @@ components:
|
|||||||
task:
|
task:
|
||||||
$ref: "#/components/schemas/Task"
|
$ref: "#/components/schemas/Task"
|
||||||
|
|
||||||
|
DeleteTaskInput:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
$ref: "#/components/schemas/GID"
|
||||||
|
description: Task ID
|
||||||
|
|
||||||
|
DeleteTaskOutput:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- deleted_task_id
|
||||||
|
properties:
|
||||||
|
deleted_task_id:
|
||||||
|
$ref: "#/components/schemas/GID"
|
||||||
|
description: Deleted task ID
|
||||||
|
|
||||||
SnapshotsType:
|
SnapshotsType:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
@@ -4898,6 +4916,15 @@ tools:
|
|||||||
$ref: "#/components/schemas/UnassignTaskInput"
|
$ref: "#/components/schemas/UnassignTaskInput"
|
||||||
outputSchema:
|
outputSchema:
|
||||||
$ref: "#/components/schemas/UnassignTaskOutput"
|
$ref: "#/components/schemas/UnassignTaskOutput"
|
||||||
|
- name: deleteTask
|
||||||
|
description: Delete a task
|
||||||
|
hints:
|
||||||
|
readonly: false
|
||||||
|
destructive: true
|
||||||
|
inputSchema:
|
||||||
|
$ref: "#/components/schemas/DeleteTaskInput"
|
||||||
|
outputSchema:
|
||||||
|
$ref: "#/components/schemas/DeleteTaskOutput"
|
||||||
- name: listSnapshots
|
- name: listSnapshots
|
||||||
description: List all snapshots for the organization
|
description: List all snapshots for the organization
|
||||||
hints:
|
hints:
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ var (
|
|||||||
DeleteDraftDocumentVersionToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"document_version_id":{"type":"string","format":"string"}},"required":["document_version_id"]}`)
|
DeleteDraftDocumentVersionToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"document_version_id":{"type":"string","format":"string"}},"required":["document_version_id"]}`)
|
||||||
DeleteDraftDocumentVersionToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_document_version_id":{"type":"string","format":"string"}},"required":["deleted_document_version_id"]}`)
|
DeleteDraftDocumentVersionToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_document_version_id":{"type":"string","format":"string"}},"required":["deleted_document_version_id"]}`)
|
||||||
DeleteMeetingToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
DeleteMeetingToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
|
DeleteTaskToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
|
DeleteTaskToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_task_id":{"type":"string","format":"string"}},"required":["deleted_task_id"]}`)
|
||||||
DeleteMeetingToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_meeting_id":{"type":"string","format":"string"}},"required":["deleted_meeting_id"]}`)
|
DeleteMeetingToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_meeting_id":{"type":"string","format":"string"}},"required":["deleted_meeting_id"]}`)
|
||||||
DeleteRiskToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
DeleteRiskToolInputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"id":{"type":"string","format":"string"}},"required":["id"]}`)
|
||||||
DeleteRiskToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_risk_id":{"type":"string","format":"string"}},"required":["deleted_risk_id"]}`)
|
DeleteRiskToolOutputSchema = mcp.MustUnmarshalSchema(`{"type":"object","properties":{"deleted_risk_id":{"type":"string","format":"string"}},"required":["deleted_risk_id"]}`)
|
||||||
@@ -2169,6 +2171,18 @@ type UnassignTaskOutput struct {
|
|||||||
Task *Task `json:"task"`
|
Task *Task `json:"task"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteTaskInput represents the schema
|
||||||
|
type DeleteTaskInput struct {
|
||||||
|
// Task ID
|
||||||
|
ID gid.GID `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteTaskOutput represents the schema
|
||||||
|
type DeleteTaskOutput struct {
|
||||||
|
// Deleted task ID
|
||||||
|
DeletedTaskID gid.GID `json:"deleted_task_id"`
|
||||||
|
}
|
||||||
|
|
||||||
// UnlinkControlAuditInput represents the schema
|
// UnlinkControlAuditInput represents the schema
|
||||||
type UnlinkControlAuditInput struct {
|
type UnlinkControlAuditInput struct {
|
||||||
// Audit ID
|
// Audit ID
|
||||||
|
|||||||
Reference in New Issue
Block a user