From ec8a2075eec6613700d68df21273585c2ae1f40b Mon Sep 17 00:00:00 2001 From: fyx <7473283+fyxme@users.noreply.github.com> Date: Mon, 23 Mar 2026 00:20:15 -0400 Subject: [PATCH] fix: remove broken /graph, /orchestrator, and /chat endpoints These endpoints return 404s because their backend services are not deployed. Remove all references to avoid exposing non-functional MCP tools and CLI commands to users. - /graph (deprecated): remove infrastructure API client, CLI commands, and MCP tools (list_cloud_accounts, search_infrastructure, get_infrastructure_graph) - /orchestrator (not productionised): remove orchestrator API client, CLI commands, and MCP tools (list_code_reviews, get_code_review) - /chat/comments (service not deployed): remove chat API client, CLI commands, chat_bridge, and MCP tools (list_finding_comments, create_finding_comment) --- cmd/cli/cmd/root.go | 5 - internal/api/chat.go | 248 ----------------------- internal/api/infrastructure.go | 245 ----------------------- internal/api/orchestrator.go | 281 --------------------------- internal/commands/chat.go | 181 ----------------- internal/commands/chat_bridge.go | 22 --- internal/commands/infrastructure.go | 169 ---------------- internal/commands/orchestrator.go | 199 ------------------- internal/mcp/server.go | 14 +- internal/mcp/tools_code_reviews.go | 29 --- internal/mcp/tools_comments.go | 45 ----- internal/mcp/tools_infrastructure.go | 37 ---- scripts/generate/main.go | 6 - 13 files changed, 3 insertions(+), 1478 deletions(-) delete mode 100644 internal/api/chat.go delete mode 100644 internal/api/infrastructure.go delete mode 100644 internal/api/orchestrator.go delete mode 100644 internal/commands/chat.go delete mode 100644 internal/commands/chat_bridge.go delete mode 100644 internal/commands/infrastructure.go delete mode 100644 internal/commands/orchestrator.go delete mode 100644 internal/mcp/tools_code_reviews.go delete mode 100644 internal/mcp/tools_comments.go delete mode 100644 internal/mcp/tools_infrastructure.go diff --git a/cmd/cli/cmd/root.go b/cmd/cli/cmd/root.go index 6d5e946..238dc6e 100644 --- a/cmd/cli/cmd/root.go +++ b/cmd/cli/cmd/root.go @@ -93,17 +93,12 @@ func init() { // Register generated API commands under 'api' parent for cleaner top-level help commands.RegisterAdminCommands(apiCmd, getAPIClient) - // Skip RegisterChatCommands - the handwritten chat command handles interactive chat; - // generated chat API subcommands are bridged via RegisterChatSubcommands. - commands.RegisterChatSubcommands(chatCmd, getAPIClient) commands.RegisterContextCommands(apiCmd, getAPIClient) commands.RegisterCspmCommands(apiCmd, getAPIClient) // Register pentest and bughunt subcommands from generated DAST commands commands.RegisterPentestSubcommands(pentestCmd, getAPIClient) commands.RegisterBughuntSubcommands(bughuntCmd, getAPIClient) - commands.RegisterInfrastructureCommands(apiCmd, getAPIClient) commands.RegisterManagerCommands(apiCmd, getAPIClient) - commands.RegisterOrchestratorCommands(apiCmd, getAPIClient) commands.RegisterSastCommands(apiCmd, getAPIClient) commands.RegisterScaCommands(apiCmd, getAPIClient) commands.RegisterSecretsCommands(apiCmd, getAPIClient) diff --git a/internal/api/chat.go b/internal/api/chat.go deleted file mode 100644 index 0129689..0000000 --- a/internal/api/chat.go +++ /dev/null @@ -1,248 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package api - -import ( - "context" - "fmt" - "io" - "net/url" - "strings" -) - -// CreateChatComments - Create Chat Comment -// POST /chat/comments -func (c *Client) CreateChatComments(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/chat/comments" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - -// GetChatCommentsFindingFindingId - Get Chat Comments by Finding -// GET /chat/comments/finding/{findingId} -func (c *Client) GetChatCommentsFindingFindingId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/chat/comments/finding/{findingId}" - path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// GetChatCommentsFindingFindingIdNodeNodeId - Get Chat Comments by Node -// GET /chat/comments/finding/{findingId}/node/{nodeId} -func (c *Client) GetChatCommentsFindingFindingIdNodeNodeId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/chat/comments/finding/{findingId}/node/{nodeId}" - path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) - path = strings.Replace(path, "{nodeId}", params.Get("nodeId"), 1) - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// DeleteChatCommentsCommentId - Delete Chat Comment -// DELETE /chat/comments/{commentId} -func (c *Client) DeleteChatCommentsCommentId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/chat/comments/{commentId}" - path = strings.Replace(path, "{commentId}", params.Get("commentId"), 1) - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "DELETE", fullURL, nil) -} - -// ListChatMessages - Get Messages by Tenant -// GET /chat/messages -func (c *Client) ListChatMessages(ctx context.Context, params url.Values) ([]byte, error) { - path := "/chat/messages" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} diff --git a/internal/api/infrastructure.go b/internal/api/infrastructure.go deleted file mode 100644 index 0b421cf..0000000 --- a/internal/api/infrastructure.go +++ /dev/null @@ -1,245 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package api - -import ( - "context" - "fmt" - "net/url" -) - -// ListGraphAccounts - List Graph Account IDs -// GET /graph/accounts -func (c *Client) ListGraphAccounts(ctx context.Context, params url.Values) ([]byte, error) { - path := "/graph/accounts" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// ListGraphAll - Get All Graph Nodes and Relationships -// GET /graph/all -func (c *Client) ListGraphAll(ctx context.Context, params url.Values) ([]byte, error) { - path := "/graph/all" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// ListGraphDataLatest - Get Latest Graph Data -// GET /graph/data/latest -func (c *Client) ListGraphDataLatest(ctx context.Context, params url.Values) ([]byte, error) { - path := "/graph/data/latest" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// ListGraphNodes - Get Nodes by Type -// GET /graph/nodes -func (c *Client) ListGraphNodes(ctx context.Context, params url.Values) ([]byte, error) { - path := "/graph/nodes" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("nodeType"); v != "" { - query.Set("nodeType", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// ListGraphNodesSearch - Search Nodes -// GET /graph/nodes/search -func (c *Client) ListGraphNodesSearch(ctx context.Context, params url.Values) ([]byte, error) { - path := "/graph/nodes/search" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("query"); v != "" { - query.Set("query", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} diff --git a/internal/api/orchestrator.go b/internal/api/orchestrator.go deleted file mode 100644 index c76b20f..0000000 --- a/internal/api/orchestrator.go +++ /dev/null @@ -1,281 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package api - -import ( - "context" - "fmt" - "io" - "net/url" - "strings" -) - -// ListOrchestratorCodereviews - Get Code Reviews -// GET /orchestrator/codereviews -func (c *Client) ListOrchestratorCodereviews(ctx context.Context, params url.Values) ([]byte, error) { - path := "/orchestrator/codereviews" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// GetOrchestratorCodereviewsId - Get Code Review -// GET /orchestrator/codereviews/{id} -func (c *Client) GetOrchestratorCodereviewsId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/orchestrator/codereviews/{id}" - path = strings.Replace(path, "{id}", params.Get("id"), 1) - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} - -// CreateOrchestratorFindingsRetriage - Retriage Findings -// POST /orchestrator/findings/retriage -func (c *Client) CreateOrchestratorFindingsRetriage(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/orchestrator/findings/retriage" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - -// CreateOrchestratorOnboardingComplete - Complete Onboarding (Test Only) -// POST /orchestrator/onboarding/complete -func (c *Client) CreateOrchestratorOnboardingComplete(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/orchestrator/onboarding/complete" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - -// CreateOrchestratorOnboardingStart - Start Onboarding -// POST /orchestrator/onboarding/start -func (c *Client) CreateOrchestratorOnboardingStart(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/orchestrator/onboarding/start" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - -// ListOrchestratorOnboardingStatus - Get Onboarding Status -// GET /orchestrator/onboarding/status -func (c *Client) ListOrchestratorOnboardingStatus(ctx context.Context, params url.Values) ([]byte, error) { - path := "/orchestrator/onboarding/status" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "GET", fullURL, nil) -} diff --git a/internal/commands/chat.go b/internal/commands/chat.go deleted file mode 100644 index 262710c..0000000 --- a/internal/commands/chat.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package commands - -import ( - "net/url" - "os" - - "github.com/nullify-platform/cli/internal/api" - "github.com/nullify-platform/cli/internal/output" - "github.com/spf13/cobra" - "github.com/spf13/pflag" -) - -func RegisterChatCommands(parent *cobra.Command, getClient func() *api.Client) { - serviceCmd := &cobra.Command{ - Use: "chat", - Short: "Chat commands", - } - parent.AddCommand(serviceCmd) - - { - cmd := &cobra.Command{ - Use: "create-comments", - Short: "Create Chat Comment", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.CreateChatComments(cmd.Context(), params, os.Stdin) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "get-finding", - Short: "Get Chat Comments by Finding", - Args: cobra.MaximumNArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - if len(args) > 0 { - params.Set("findingId", args[0]) - } - result, err := client.GetChatCommentsFindingFindingId(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - cmd.Flags().String("limit", "", "Maximum number of comments to return (default: 100)") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "get-node", - Short: "Get Chat Comments by Node", - Args: cobra.MaximumNArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - if len(args) > 0 { - params.Set("nodeId", args[0]) - } - result, err := client.GetChatCommentsFindingFindingIdNodeNodeId(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - cmd.Flags().String("limit", "", "Maximum number of comments to return (default: 100)") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "delete-comments", - Short: "Delete Chat Comment", - Args: cobra.MaximumNArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - if len(args) > 0 { - params.Set("commentId", args[0]) - } - result, err := client.DeleteChatCommentsCommentId(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-messages", - Short: "Get Messages by Tenant", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListChatMessages(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - cmd.Flags().String("limit", "", "Maximum number of messages to return (default: 100)") - serviceCmd.AddCommand(cmd) - } - -} diff --git a/internal/commands/chat_bridge.go b/internal/commands/chat_bridge.go deleted file mode 100644 index 3352fc5..0000000 --- a/internal/commands/chat_bridge.go +++ /dev/null @@ -1,22 +0,0 @@ -package commands - -import ( - "github.com/nullify-platform/cli/internal/api" - "github.com/spf13/cobra" -) - -// RegisterChatSubcommands adds generated Chat API subcommands to an existing -// parent command (the handwritten chat command) instead of creating a new parent. -func RegisterChatSubcommands(parent *cobra.Command, getClient func() *api.Client) { - tmp := &cobra.Command{Use: "tmp"} - RegisterChatCommands(tmp, getClient) - - for _, child := range tmp.Commands() { - if child.Use == "chat" { - for _, sub := range child.Commands() { - parent.AddCommand(sub) - } - return - } - } -} diff --git a/internal/commands/infrastructure.go b/internal/commands/infrastructure.go deleted file mode 100644 index 4c9f4d7..0000000 --- a/internal/commands/infrastructure.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package commands - -import ( - "net/url" - - "github.com/nullify-platform/cli/internal/api" - "github.com/nullify-platform/cli/internal/output" - "github.com/spf13/cobra" - "github.com/spf13/pflag" -) - -func RegisterInfrastructureCommands(parent *cobra.Command, getClient func() *api.Client) { - serviceCmd := &cobra.Command{ - Use: "infrastructure", - Short: "Infrastructure commands", - } - parent.AddCommand(serviceCmd) - - { - cmd := &cobra.Command{ - Use: "list-accounts", - Short: "List Graph Account IDs", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListGraphAccounts(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-all", - Short: "Get All Graph Nodes and Relationships", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListGraphAll(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-latest", - Short: "Get Latest Graph Data", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListGraphDataLatest(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-nodes", - Short: "Get Nodes by Type", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListGraphNodes(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("nodeType", "", "") - cmd.Flags().String("limit", "", "") - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-search", - Short: "Search Nodes", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListGraphNodesSearch(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("query", "", "") - cmd.Flags().String("limit", "", "") - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - -} diff --git a/internal/commands/orchestrator.go b/internal/commands/orchestrator.go deleted file mode 100644 index e3c32a1..0000000 --- a/internal/commands/orchestrator.go +++ /dev/null @@ -1,199 +0,0 @@ -// Code generated by scripts/generate/main.go. DO NOT EDIT. -package commands - -import ( - "net/url" - "os" - - "github.com/nullify-platform/cli/internal/api" - "github.com/nullify-platform/cli/internal/output" - "github.com/spf13/cobra" - "github.com/spf13/pflag" -) - -func RegisterOrchestratorCommands(parent *cobra.Command, getClient func() *api.Client) { - serviceCmd := &cobra.Command{ - Use: "orchestrator", - Short: "Orchestrator commands", - } - parent.AddCommand(serviceCmd) - - { - cmd := &cobra.Command{ - Use: "list-codereviews", - Short: "Get Code Reviews", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListOrchestratorCodereviews(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "get-codereviews", - Short: "Get Code Review", - Args: cobra.MaximumNArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - if len(args) > 0 { - params.Set("id", args[0]) - } - result, err := client.GetOrchestratorCodereviewsId(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "create-retriage", - Short: "Retriage Findings", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.CreateOrchestratorFindingsRetriage(cmd.Context(), params, os.Stdin) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "create-complete", - Short: "Complete Onboarding (Test Only)", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.CreateOrchestratorOnboardingComplete(cmd.Context(), params, os.Stdin) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "create-start", - Short: "Start Onboarding", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.CreateOrchestratorOnboardingStart(cmd.Context(), params, os.Stdin) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - - { - cmd := &cobra.Command{ - Use: "list-status", - Short: "Get Onboarding Status", - RunE: func(cmd *cobra.Command, args []string) error { - client := getClient() - params := url.Values{} - cmd.Flags().Visit(func(f *pflag.Flag) { - params.Set(f.Name, f.Value.String()) - }) - result, err := client.ListOrchestratorOnboardingStatus(cmd.Context(), params) - if err != nil { - return err - } - return output.Print(cmd, result) - }, - } - cmd.Flags().String("azureOrganizationId", "", "The Azure organization ID") - cmd.Flags().String("bitbucketWorkspaceId", "", "The Bitbucket workspace ID") - cmd.Flags().String("githubOwnerId", "", "The Github owner ID") - cmd.Flags().String("gitlabGroupId", "", "The GitLab group ID") - cmd.Flags().String("installationId", "", "The Nullify installation ID") - cmd.Flags().String("azureRepositoryId", "", "") - cmd.Flags().String("githubRepositoryId", "", "") - cmd.Flags().String("githubTeamId", "", "") - cmd.Flags().String("bitbucketRepositoryId", "", "") - serviceCmd.AddCommand(cmd) - } - -} diff --git a/internal/mcp/server.go b/internal/mcp/server.go index 0259f0b..3b3e890 100644 --- a/internal/mcp/server.go +++ b/internal/mcp/server.go @@ -48,17 +48,15 @@ func registerTools(s *server.MCPServer, c *client.NullifyClient, queryParams map registerCompositeTools(s, c, queryParams) case ToolSetFindings: - // Unified + composites + comments + // Unified + composites registerUnifiedTools(s, c, queryParams) registerCompositeTools(s, c, queryParams) - registerCommentTools(s, c, queryParams) case ToolSetAdmin: - // Admin + context + manager + infrastructure + composites + // Admin + context + manager + composites registerAdminTools(s, c, queryParams) registerContextTools(s, c, queryParams) registerManagerTools(s, c, queryParams) - registerInfrastructureTools(s, c, queryParams) registerCompositeTools(s, c, queryParams) case ToolSetAll: @@ -72,21 +70,15 @@ func registerTools(s *server.MCPServer, c *client.NullifyClient, queryParams map registerAdminTools(s, c, queryParams) registerContextTools(s, c, queryParams) registerManagerTools(s, c, queryParams) - registerInfrastructureTools(s, c, queryParams) - registerCodeReviewTools(s, c, queryParams) - registerCommentTools(s, c, queryParams) registerCompositeTools(s, c, queryParams) registerUnifiedTools(s, c, queryParams) default: // ToolSetDefault - // Unified + composites + context + infrastructure + manager + code reviews + comments + // Unified + composites + context + manager registerUnifiedTools(s, c, queryParams) registerCompositeTools(s, c, queryParams) registerContextTools(s, c, queryParams) - registerInfrastructureTools(s, c, queryParams) registerManagerTools(s, c, queryParams) - registerCodeReviewTools(s, c, queryParams) - registerCommentTools(s, c, queryParams) registerAdminTools(s, c, queryParams) } } diff --git a/internal/mcp/tools_code_reviews.go b/internal/mcp/tools_code_reviews.go deleted file mode 100644 index 01e2587..0000000 --- a/internal/mcp/tools_code_reviews.go +++ /dev/null @@ -1,29 +0,0 @@ -package mcp - -import ( - "github.com/nullify-platform/cli/internal/client" - - "github.com/mark3labs/mcp-go/mcp" - "github.com/mark3labs/mcp-go/server" -) - -func registerCodeReviewTools(s *server.MCPServer, c *client.NullifyClient, queryParams map[string]string) { - s.AddTool( - mcp.NewTool( - "list_code_reviews", - mcp.WithDescription("List code reviews performed by Nullify's AI agents on pull requests."), - mcp.WithString("repository", mcp.Description("Filter by repository name")), - mcp.WithNumber("limit", mcp.Description("Max results (default 20)")), - ), - makeGetHandler(c, "/orchestrator/codereviews", queryParams), - ) - - s.AddTool( - mcp.NewTool( - "get_code_review", - mcp.WithDescription("Get detailed information about a specific code review, including comments and findings."), - mcp.WithString("id", mcp.Required(), mcp.Description("The code review ID")), - ), - makeGetByIDHandler(c, "/orchestrator/codereviews", queryParams), - ) -} diff --git a/internal/mcp/tools_comments.go b/internal/mcp/tools_comments.go deleted file mode 100644 index 91edb5e..0000000 --- a/internal/mcp/tools_comments.go +++ /dev/null @@ -1,45 +0,0 @@ -package mcp - -import ( - "context" - "fmt" - - "github.com/nullify-platform/cli/internal/client" - - "github.com/mark3labs/mcp-go/mcp" - "github.com/mark3labs/mcp-go/server" -) - -func registerCommentTools(s *server.MCPServer, c *client.NullifyClient, queryParams map[string]string) { - s.AddTool( - mcp.NewTool( - "list_finding_comments", - mcp.WithDescription("List comments on a specific finding. Comments can include discussion, triage notes, and remediation guidance."), - mcp.WithString("finding_id", mcp.Required(), mcp.Description("The finding ID")), - ), - func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { - args := request.GetArguments() - findingID := getStringArg(args, "finding_id") - qs := buildQueryString(queryParams) - return doGet(ctx, c, fmt.Sprintf("/chat/comments/finding/%s%s", findingID, qs)) - }, - ) - - s.AddTool( - mcp.NewTool( - "create_finding_comment", - mcp.WithDescription("Add a comment to a finding. Use this to document triage decisions, ask questions, or provide remediation context."), - mcp.WithString("finding_id", mcp.Required(), mcp.Description("The finding ID")), - mcp.WithString("message", mcp.Required(), mcp.Description("The comment text")), - ), - func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { - args := request.GetArguments() - body := map[string]string{ - "findingId": getStringArg(args, "finding_id"), - "message": getStringArg(args, "message"), - } - qs := buildQueryString(queryParams) - return doPost(ctx, c, fmt.Sprintf("/chat/comments%s", qs), body) - }, - ) -} diff --git a/internal/mcp/tools_infrastructure.go b/internal/mcp/tools_infrastructure.go deleted file mode 100644 index 135d176..0000000 --- a/internal/mcp/tools_infrastructure.go +++ /dev/null @@ -1,37 +0,0 @@ -package mcp - -import ( - "github.com/nullify-platform/cli/internal/client" - - "github.com/mark3labs/mcp-go/mcp" - "github.com/mark3labs/mcp-go/server" -) - -func registerInfrastructureTools(s *server.MCPServer, c *client.NullifyClient, queryParams map[string]string) { - s.AddTool( - mcp.NewTool( - "list_cloud_accounts", - mcp.WithDescription("List connected cloud accounts (AWS, Azure, GCP) for infrastructure security monitoring."), - mcp.WithNumber("limit", mcp.Description("Max results (default 20)")), - ), - makeGetHandler(c, "/graph/accounts", queryParams), - ) - - s.AddTool( - mcp.NewTool( - "search_infrastructure", - mcp.WithDescription("Search infrastructure nodes by name, type, or other attributes."), - mcp.WithString("query", mcp.Required(), mcp.Description("Search query")), - mcp.WithNumber("limit", mcp.Description("Max results (default 20)")), - ), - makeGetHandler(c, "/graph/nodes/search", queryParams), - ) - - s.AddTool( - mcp.NewTool( - "get_infrastructure_graph", - mcp.WithDescription("Get the full infrastructure graph showing relationships between cloud resources."), - ), - makeGetHandler(c, "/graph/all", queryParams), - ) -} diff --git a/scripts/generate/main.go b/scripts/generate/main.go index fb2581f..ba05e6f 100644 --- a/scripts/generate/main.go +++ b/scripts/generate/main.go @@ -74,9 +74,6 @@ var serviceMapping = map[string]string{ "/manager/": "manager", "/context/": "context", "/cspm/": "cspm", - "/graph/": "infrastructure", - "/chat/": "chat", - "/orchestrator/": "orchestrator", "/ticket/": "ticket", } @@ -90,9 +87,6 @@ var serviceDescriptions = map[string]string{ "manager": "Finding Lifecycle Management", "context": "Repository and Code Classification", "cspm": "Cloud Security Posture Management (CSPM)", - "infrastructure": "Infrastructure Graph", - "chat": "AI Chat", - "orchestrator": "Orchestration and Automation", "ticket": "Ticket Integration", }