tools

package
v0.0.0-...-40cf4c9 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2025 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package tools: consolidated interfaces for mocking CLI/tool dependencies

Index

Constants

This section is empty.

Variables

View Source
var OpenURLFunc = browser.OpenURL

OpenURLFunc allows browser.OpenURL to be overridden in tests

Functions

func CanIUseProvider

func CanIUseProvider(ctx context.Context, grpcClient client.FabricClient, providerId client.ProviderID, projectName string, provider client.Provider, serviceCount int) error

func CheckProviderConfigured

func CheckProviderConfigured(ctx context.Context, client cliClient.FabricClient, providerId cliClient.ProviderID, projectName string, serviceCount int) (cliClient.Provider, error)

func HandleConfigError

func HandleConfigError(err error) *mcp.CallToolResult

func HandleTermsOfServiceError

func HandleTermsOfServiceError(err error) *mcp.CallToolResult

HandleTermsOfServiceError checks if the error is related to terms of service not being accepted and returns an appropriate error message if it is. Returns nil if the error is not related to terms of service.

func SetupTools

func SetupTools(s *server.MCPServer, cluster string, authPort int, providerId *client.ProviderID)

SetupTools configures and adds all the MCP tools to the server

Types

type CLIInterface

type CLIInterface interface {
	Connecter
	// Unique methods
	NewProvider(ctx context.Context, providerId cliClient.ProviderID, client cliClient.FabricClient) (cliClient.Provider, error)
	LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)
}

type Connecter

type Connecter interface {
	Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)
}

--- Common method sets ---

type DefaultCLI

type DefaultCLI struct{}

DefaultCLI implements CLIInterface using the actual CLI functions

func (*DefaultCLI) Connect

func (c *DefaultCLI) Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)

func (*DefaultCLI) LoadProjectNameWithFallback

func (c *DefaultCLI) LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)

func (*DefaultCLI) NewProvider

func (c *DefaultCLI) NewProvider(ctx context.Context, providerId cliClient.ProviderID, client cliClient.FabricClient) (cliClient.Provider, error)

type DefaultDeployCLI

type DefaultDeployCLI struct{}

DefaultDeployCLI implements DeployCLIInterface using actual CLI functions

func (*DefaultDeployCLI) CheckProviderConfigured

func (c *DefaultDeployCLI) CheckProviderConfigured(ctx context.Context, client *cliClient.GrpcClient, providerId cliClient.ProviderID, projectName string, serviceCount int) (cliClient.Provider, error)

func (*DefaultDeployCLI) ComposeUp

func (*DefaultDeployCLI) ConfigureLoader

func (c *DefaultDeployCLI) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

func (*DefaultDeployCLI) Connect

func (c *DefaultDeployCLI) Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)

func (*DefaultDeployCLI) LoadProject

func (c *DefaultDeployCLI) LoadProject(ctx context.Context, loader cliClient.Loader) (*compose.Project, error)

func (*DefaultDeployCLI) NewProvider

func (c *DefaultDeployCLI) NewProvider(ctx context.Context, providerId cliClient.ProviderID, client *cliClient.GrpcClient) (cliClient.Provider, error)

func (*DefaultDeployCLI) OpenBrowser

func (c *DefaultDeployCLI) OpenBrowser(url string) error

type DefaultDeploymentInfo

type DefaultDeploymentInfo struct{}

DefaultDeploymentInfo implements DeploymentInfoInterface using the actual deployment_info functions

func (*DefaultDeploymentInfo) GetServices

func (d *DefaultDeploymentInfo) GetServices(ctx context.Context, projectName string, provider cliClient.Provider) ([]deployment_info.Service, error)

type DefaultEstimateCLI

type DefaultEstimateCLI struct{}

DefaultEstimateCLI implements EstimateCLIInterface using actual CLI functions

func (*DefaultEstimateCLI) CaptureTermOutput

func (c *DefaultEstimateCLI) CaptureTermOutput(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse) string

func (*DefaultEstimateCLI) ConfigureLoader

func (c *DefaultEstimateCLI) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

func (*DefaultEstimateCLI) Connect

func (c *DefaultEstimateCLI) Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)

func (*DefaultEstimateCLI) CreatePlaygroundProvider

func (c *DefaultEstimateCLI) CreatePlaygroundProvider(client *cliClient.GrpcClient) cliClient.Provider

func (*DefaultEstimateCLI) GetRegion

func (c *DefaultEstimateCLI) GetRegion(providerId cliClient.ProviderID) string

func (*DefaultEstimateCLI) LoadProject

func (c *DefaultEstimateCLI) LoadProject(ctx context.Context, loader cliClient.Loader) (*compose.Project, error)

func (*DefaultEstimateCLI) PrintEstimate

func (c *DefaultEstimateCLI) PrintEstimate(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse)

func (*DefaultEstimateCLI) RunEstimate

func (*DefaultEstimateCLI) SetProviderID

func (c *DefaultEstimateCLI) SetProviderID(providerId *cliClient.ProviderID, providerString string) error

type DefaultLoginCLI

type DefaultLoginCLI struct{}

DefaultLoginCLI provides the default implementation

func (*DefaultLoginCLI) Connect

func (c *DefaultLoginCLI) Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)

func (*DefaultLoginCLI) GenerateAuthURL

func (c *DefaultLoginCLI) GenerateAuthURL(authPort int) string

func (*DefaultLoginCLI) InteractiveLoginMCP

func (c *DefaultLoginCLI) InteractiveLoginMCP(ctx context.Context, client *cliClient.GrpcClient, cluster string) error

type DefaultToolCLI

type DefaultToolCLI struct{}

func (*DefaultToolCLI) CanIUseProvider

func (c *DefaultToolCLI) CanIUseProvider(ctx context.Context, client *cliClient.GrpcClient, providerId cliClient.ProviderID, projectName string, provider cliClient.Provider, serviceCount int) error

func (*DefaultToolCLI) CaptureTermOutput

func (c *DefaultToolCLI) CaptureTermOutput(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse) string

func (*DefaultToolCLI) CheckProviderConfigured

func (c *DefaultToolCLI) CheckProviderConfigured(ctx context.Context, client *cliClient.GrpcClient, providerId cliClient.ProviderID, projectName string, serviceCount int) (cliClient.Provider, error)

func (*DefaultToolCLI) ComposeDown

func (c *DefaultToolCLI) ComposeDown(ctx context.Context, projectName string, client *cliClient.GrpcClient, provider cliClient.Provider) (string, error)

func (*DefaultToolCLI) ComposeUp

func (*DefaultToolCLI) ConfigDelete

func (c *DefaultToolCLI) ConfigDelete(ctx context.Context, projectName string, provider cliClient.Provider, name string) error

func (*DefaultToolCLI) ConfigSet

func (c *DefaultToolCLI) ConfigSet(ctx context.Context, projectName string, provider cliClient.Provider, name, value string) error

func (*DefaultToolCLI) ConfigureLoader

func (c *DefaultToolCLI) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

func (*DefaultToolCLI) Connect

func (c *DefaultToolCLI) Connect(ctx context.Context, cluster string) (*cliClient.GrpcClient, error)

func (*DefaultToolCLI) CreatePlaygroundProvider

func (c *DefaultToolCLI) CreatePlaygroundProvider(client *cliClient.GrpcClient) cliClient.Provider

func (*DefaultToolCLI) GetRegion

func (c *DefaultToolCLI) GetRegion(providerId cliClient.ProviderID) string

func (*DefaultToolCLI) GetServices

func (c *DefaultToolCLI) GetServices(ctx context.Context, projectName string, provider cliClient.Provider) ([]deployment_info.Service, error)

func (*DefaultToolCLI) ListConfig

func (c *DefaultToolCLI) ListConfig(ctx context.Context, provider cliClient.Provider, projectName string) (*defangv1.Secrets, error)

func (*DefaultToolCLI) LoadProject

func (c *DefaultToolCLI) LoadProject(ctx context.Context, loader cliClient.Loader) (*compose.Project, error)

func (*DefaultToolCLI) LoadProjectNameWithFallback

func (c *DefaultToolCLI) LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)

func (*DefaultToolCLI) NewProvider

func (c *DefaultToolCLI) NewProvider(ctx context.Context, providerId cliClient.ProviderID, client *cliClient.GrpcClient) (cliClient.Provider, error)

func (*DefaultToolCLI) NewProviderFabric

func (c *DefaultToolCLI) NewProviderFabric(ctx context.Context, providerId cliClient.ProviderID, client cliClient.FabricClient) (cliClient.Provider, error)

func (*DefaultToolCLI) NewProviderGrpc

func (c *DefaultToolCLI) NewProviderGrpc(ctx context.Context, providerId cliClient.ProviderID, client *cliClient.GrpcClient) (cliClient.Provider, error)

func (*DefaultToolCLI) OpenBrowser

func (c *DefaultToolCLI) OpenBrowser(url string) error

func (*DefaultToolCLI) PrintEstimate

func (c *DefaultToolCLI) PrintEstimate(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse)

func (*DefaultToolCLI) RunEstimate

func (c *DefaultToolCLI) RunEstimate(ctx context.Context, project *compose.Project, client *cliClient.GrpcClient, provider cliClient.Provider, providerId cliClient.ProviderID, region string, mode defangv1.DeploymentMode) (*defangv1.EstimateResponse, error)

func (*DefaultToolCLI) SetProviderID

func (c *DefaultToolCLI) SetProviderID(providerId *cliClient.ProviderID, providerString string) error

type DeployCLIAdapter

type DeployCLIAdapter struct{ *DefaultToolCLI }

--- Adapter types for tool interfaces --- The following adapter types embed DefaultToolCLI to implement specific tool interfaces.

type DeployCLIInterface

type DeployCLIInterface interface {
	Connecter
	ProviderFactory
	LoaderConfigurator
	// Unique methods
	ComposeUp(ctx context.Context, project *compose.Project, client *cliClient.GrpcClient, provider cliClient.Provider, uploadMode compose.UploadMode, mode defangv1.DeploymentMode) (*defangv1.DeployResponse, *compose.Project, error)
	CheckProviderConfigured(ctx context.Context, client *cliClient.GrpcClient, providerId cliClient.ProviderID, projectName string, serviceCount int) (cliClient.Provider, error)
	LoadProject(ctx context.Context, loader cliClient.Loader) (*compose.Project, error)
	OpenBrowser(url string) error
}

--- Tool interfaces composed from common sets ---

type DeploymentInfoInterface

type DeploymentInfoInterface interface {
	GetServices(ctx context.Context, projectName string, provider cliClient.Provider) ([]deployment_info.Service, error)
}

type DestroyCLIAdapter

type DestroyCLIAdapter struct{ *DefaultToolCLI }

func (*DestroyCLIAdapter) ConfigureLoader

func (a *DestroyCLIAdapter) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

func (*DestroyCLIAdapter) LoadProjectNameWithFallback

func (a *DestroyCLIAdapter) LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)

--- DestroyCLIInterface ---

type DestroyCLIInterface

type DestroyCLIInterface interface {
	Connecter
	ProviderFactory
	LoaderConfigurator
	ProjectNameLoader
	// Unique methods
	ComposeDown(ctx context.Context, projectName string, client *cliClient.GrpcClient, provider cliClient.Provider) (string, error)
	CanIUseProvider(ctx context.Context, client *cliClient.GrpcClient, providerId cliClient.ProviderID, projectName string, provider cliClient.Provider, serviceCount int) error
}

type EstimateCLIInterface

type EstimateCLIInterface interface {
	Connecter
	LoaderConfigurator
	// Unique methods
	LoadProject(ctx context.Context, loader cliClient.Loader) (*compose.Project, error)
	RunEstimate(ctx context.Context, project *compose.Project, client *cliClient.GrpcClient, provider cliClient.Provider, providerId cliClient.ProviderID, region string, mode defangv1.DeploymentMode) (*defangv1.EstimateResponse, error)
	PrintEstimate(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse)
	GetRegion(providerId cliClient.ProviderID) string
	CreatePlaygroundProvider(client *cliClient.GrpcClient) cliClient.Provider
	SetProviderID(providerId *cliClient.ProviderID, providerString string) error
	CaptureTermOutput(mode defangv1.DeploymentMode, estimate *defangv1.EstimateResponse) string
}

type ListConfigCLIAdapter

type ListConfigCLIAdapter struct{ *DefaultToolCLI }

func (*ListConfigCLIAdapter) ListConfig

func (a *ListConfigCLIAdapter) ListConfig(ctx context.Context, provider cliClient.Provider, projectName string) (*defangv1.Secrets, error)

--- ListConfigCLIInterface ---

type ListConfigCLIInterface

type ListConfigCLIInterface interface {
	Connecter
	ProviderFactory
	LoaderConfigurator
	ProjectNameLoader
	// Unique methods
	ListConfig(ctx context.Context, provider cliClient.Provider, projectName string) (*defangv1.Secrets, error)
}

type LoaderConfigurator

type LoaderConfigurator interface {
	ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader
}

type LoginCLIAdapter

type LoginCLIAdapter struct{ *DefaultToolCLI }

func (*LoginCLIAdapter) GenerateAuthURL

func (a *LoginCLIAdapter) GenerateAuthURL(authPort int) string

func (*LoginCLIAdapter) InteractiveLoginMCP

func (a *LoginCLIAdapter) InteractiveLoginMCP(ctx context.Context, client *cliClient.GrpcClient, cluster string) error

--- LoginCLIInterface ---

type LoginCLIInterface

type LoginCLIInterface interface {
	Connecter
	// Unique methods
	InteractiveLoginMCP(ctx context.Context, client *cliClient.GrpcClient, cluster string) error
	GenerateAuthURL(authPort int) string
}

type ProjectNameLoader

type ProjectNameLoader interface {
	LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)
}

type ProviderFactory

type ProviderFactory interface {
	NewProvider(ctx context.Context, providerId cliClient.ProviderID, client *cliClient.GrpcClient) (cliClient.Provider, error)
}

type RemoveConfigCLIAdapter

type RemoveConfigCLIAdapter struct{ *DefaultToolCLI }

func (*RemoveConfigCLIAdapter) ConfigDelete

func (a *RemoveConfigCLIAdapter) ConfigDelete(ctx context.Context, projectName string, provider cliClient.Provider, name string) error

func (*RemoveConfigCLIAdapter) ConfigureLoader

func (a *RemoveConfigCLIAdapter) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

--- RemoveConfigCLIInterface ---

func (*RemoveConfigCLIAdapter) LoadProjectNameWithFallback

func (a *RemoveConfigCLIAdapter) LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)

type RemoveConfigCLIInterface

type RemoveConfigCLIInterface interface {
	Connecter
	ProviderFactory
	LoaderConfigurator
	ProjectNameLoader
	// Unique methods
	ConfigDelete(ctx context.Context, projectName string, provider cliClient.Provider, name string) error
}

type SetConfigCLIAdapter

type SetConfigCLIAdapter struct{ *DefaultToolCLI }

func (*SetConfigCLIAdapter) ConfigSet

func (a *SetConfigCLIAdapter) ConfigSet(ctx context.Context, projectName string, provider cliClient.Provider, name, value string) error

func (*SetConfigCLIAdapter) ConfigureLoader

func (a *SetConfigCLIAdapter) ConfigureLoader(request mcp.CallToolRequest) cliClient.Loader

func (*SetConfigCLIAdapter) LoadProjectNameWithFallback

func (a *SetConfigCLIAdapter) LoadProjectNameWithFallback(ctx context.Context, loader cliClient.Loader, provider cliClient.Provider) (string, error)

func (*SetConfigCLIAdapter) NewProvider

--- SetConfigCLIInterface ---

type SetConfigCLIInterface

type SetConfigCLIInterface interface {
	Connecter
	LoaderConfigurator
	ProjectNameLoader
	// Unique methods
	NewProvider(ctx context.Context, providerId cliClient.ProviderID, client cliClient.FabricClient) (cliClient.Provider, error)
	ConfigSet(ctx context.Context, projectName string, provider cliClient.Provider, name, value string) error
}

Jump to

Keyboard shortcuts

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