inspect

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package inspect provides business logic for inspecting and explaining solutions. This package is the shared domain layer used by CLI, MCP, and future API consumers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadSolution

func LoadSolution(ctx context.Context, path string) (*solution.Solution, error)

LoadSolution loads a solution from a path using the standard loader with catalog resolution. This function is reusable by CLI, MCP, and future API.

func LookupProvider

func LookupProvider(ctx context.Context, name string, reg *provider.Registry) (*provider.Descriptor, error)

LookupProvider looks up a provider by name and returns its descriptor. This is a standalone function reusable by CLI, MCP, and future API.

Types

type ActionInfo

type ActionInfo struct {
	Name        string              `json:"name" yaml:"name" doc:"Action name"`
	Provider    string              `json:"provider" yaml:"provider" doc:"Provider used by this action"`
	DependsOn   []string            `json:"dependsOn,omitempty" yaml:"dependsOn,omitempty" doc:"Action dependencies"`
	Conditional bool                `json:"conditional,omitempty" yaml:"conditional,omitempty" doc:"Whether action has a when condition"`
	HasRetry    bool                `json:"hasRetry,omitempty" yaml:"hasRetry,omitempty" doc:"Whether retry is configured"`
	HasForEach  bool                `json:"hasForEach,omitempty" yaml:"hasForEach,omitempty" doc:"Whether forEach is configured"`
	SourcePos   *sourcepos.Position `json:"sourcePos,omitempty" yaml:"sourcePos,omitempty" doc:"Source file location"`
}

ActionInfo holds structured information about an action.

type CatalogInfo

type CatalogInfo struct {
	Visibility string `json:"visibility,omitempty" yaml:"visibility,omitempty" doc:"Catalog visibility level"`
	Beta       bool   `json:"beta,omitempty" yaml:"beta,omitempty" doc:"Whether the solution is in beta"`
	Disabled   bool   `json:"disabled,omitempty" yaml:"disabled,omitempty" doc:"Whether the solution is disabled"`
}

CatalogInfo holds catalog metadata.

type LinkInfo

type LinkInfo struct {
	Name string `json:"name" yaml:"name" doc:"Link display name"`
	URL  string `json:"url" yaml:"url" doc:"Link URL"`
}

LinkInfo holds a named link.

type MaintainerInfo

type MaintainerInfo struct {
	Name  string `json:"name" yaml:"name" doc:"Maintainer name"`
	Email string `json:"email,omitempty" yaml:"email,omitempty" doc:"Maintainer email"`
}

MaintainerInfo holds maintainer contact info.

type ResolverInfo

type ResolverInfo struct {
	Name        string              `json:"name" yaml:"name" doc:"Resolver name"`
	Providers   []string            `json:"providers,omitempty" yaml:"providers,omitempty" doc:"Provider names used"`
	DependsOn   []string            `json:"dependsOn,omitempty" yaml:"dependsOn,omitempty" doc:"Resolver dependencies"`
	Conditional bool                `json:"conditional,omitempty" yaml:"conditional,omitempty" doc:"Whether resolver has a when condition"`
	Phases      []string            `json:"phases,omitempty" yaml:"phases,omitempty" doc:"Configured phases (resolve, transform, validate)"`
	SourcePos   *sourcepos.Position `json:"sourcePos,omitempty" yaml:"sourcePos,omitempty" doc:"Source file location"`
}

ResolverInfo holds structured information about a resolver.

type SolutionExplanation

type SolutionExplanation struct {
	Name        string `json:"name" yaml:"name" doc:"Solution name"`
	DisplayName string `json:"displayName,omitempty" yaml:"displayName,omitempty" doc:"Human-readable display name"`
	Version     string `json:"version" yaml:"version" doc:"Solution version"`
	Description string `json:"description,omitempty" yaml:"description,omitempty" doc:"Solution description"`
	Category    string `json:"category,omitempty" yaml:"category,omitempty" doc:"Solution category"`
	Path        string `json:"path,omitempty" yaml:"path,omitempty" doc:"Source file path"`

	Catalog *CatalogInfo `json:"catalog,omitempty" yaml:"catalog,omitempty" doc:"Catalog visibility info"`

	Resolvers []ResolverInfo `json:"resolvers,omitempty" yaml:"resolvers,omitempty" doc:"Resolver configurations"`
	Actions   []ActionInfo   `json:"actions,omitempty" yaml:"actions,omitempty" doc:"Action configurations"`
	Finally   []ActionInfo   `json:"finally,omitempty" yaml:"finally,omitempty" doc:"Finally/cleanup actions"`

	Tags        []string         `json:"tags,omitempty" yaml:"tags,omitempty" doc:"Solution tags"`
	Links       []LinkInfo       `json:"links,omitempty" yaml:"links,omitempty" doc:"Related links"`
	Maintainers []MaintainerInfo `json:"maintainers,omitempty" yaml:"maintainers,omitempty" doc:"Solution maintainers"`
}

SolutionExplanation holds structured explanation data for a solution. This can be serialized to JSON/YAML or formatted for terminal output.

func BuildSolutionExplanation

func BuildSolutionExplanation(sol *solution.Solution) *SolutionExplanation

BuildSolutionExplanation builds a structured explanation from a loaded solution. This returns data that can be serialized (JSON/YAML) or formatted for display.

Jump to

Keyboard shortcuts

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