planner

package
v0.1.13 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ValidationKindProfilesAllowed  = "profiles_allowed"
	ValidationKindToolBundlesExist = "tool_bundles_exist"
	ValidationKindTemplateAllowed  = "template_allowed"
	ValidationKindSubset           = "subset"
)
View Source
const ContextKey = "planner.context"

Variables

This section is empty.

Functions

func ApplyOutput

func ApplyOutput(app *Application, out Output, pctx *PlannerContext)

func CloneOutput

func CloneOutput(out Output) map[string]any

func FormatValidationErrors

func FormatValidationErrors(errs []ValidationError) string

func OutputBoolPtr

func OutputBoolPtr(out Output, field string) *bool

func OutputMap

func OutputMap(out Output, field string) map[string]any

func OutputString

func OutputString(out Output, field string) string

func OutputStringSlice

func OutputStringSlice(out Output, field string) []string

Types

type Application

type Application struct {
	ToolBundles       []string
	TemplateID        string
	ParallelToolCalls *bool
	Context           map[string]any
}

type Contract

type Contract interface {
	Schema(ctx context.Context) (map[string]interface{}, error)
	Parse(raw string) (Output, error)
	Validate(ctx context.Context, out Output, vctx ValidationContext) []ValidationError
	Apply(app *Application, out Output, pctx *PlannerContext)
	GuidanceDocs(turnID string, out Output, pctx *PlannerContext, meta GuidanceMeta, errs []ValidationError) []GuidanceDoc
}

type FileContract

type FileContract struct {
	// contains filtered or unexported fields
}

func (*FileContract) Apply

func (c *FileContract) Apply(app *Application, out Output, pctx *PlannerContext)

func (*FileContract) GuidanceDocs

func (c *FileContract) GuidanceDocs(turnID string, out Output, pctx *PlannerContext, meta GuidanceMeta, errs []ValidationError) []GuidanceDoc

func (*FileContract) Parse

func (c *FileContract) Parse(raw string) (Output, error)

func (*FileContract) Schema

func (c *FileContract) Schema(ctx context.Context) (map[string]interface{}, error)

func (*FileContract) Validate

type FileResolver

type FileResolver struct {
	// contains filtered or unexported fields
}

func NewFileResolver

func NewFileResolver(fs afs.Service) *FileResolver

func (*FileResolver) Resolve

func (r *FileResolver) Resolve(ctx context.Context, plannerAgent *agentmdl.Agent) (Contract, error)

type GuidanceDoc

type GuidanceDoc struct {
	ID      string
	Summary string
	Content string
}

func BuildGuidanceDocs

func BuildGuidanceDocs(turnID string, out Output, pctx *PlannerContext, meta GuidanceMeta, errs []ValidationError) []GuidanceDoc

type GuidanceMeta

type GuidanceMeta struct {
	Status          string
	StaticProfile   string
	SecondPolicy    string
	OutputPayloadID string
	Validated       *bool
}

type Output

type Output map[string]any

func Parse

func Parse(raw string) (Output, error)

type PlannerContext

type PlannerContext struct {
	Trigger Trigger        `json:"trigger"`
	Attempt int            `json:"attempt"`
	Data    map[string]any `json:"data,omitempty"`
}

func FromQueryInput

func FromQueryInput(input queryInputWithContext) *PlannerContext

FromQueryInput returns the typed planner context for the current turn, or nil when planner mode did not run. It is intentionally tiny so downstream code reads one canonical helper instead of reaching into Context with a raw key.

func NewContext

func NewContext(trigger Trigger, attempt int, out Output) *PlannerContext

type Resolver

type Resolver interface {
	Resolve(ctx context.Context, plannerAgent *agentmdl.Agent) (Contract, error)
}

type Service

type Service struct{}

func New

func New() *Service

func (*Service) Run

func (s *Service) Run(raw string, vctx ValidationContext) (Output, []ValidationError, error)

type StaticContract

type StaticContract struct {
	// contains filtered or unexported fields
}

func NewStaticContract

func NewStaticContract(schema map[string]interface{}) *StaticContract

func NewStaticContractWithRules

func NewStaticContractWithRules(schema map[string]interface{}, rules []ValidationRule) *StaticContract

func (*StaticContract) Apply

func (c *StaticContract) Apply(app *Application, out Output, pctx *PlannerContext)

func (*StaticContract) GuidanceDocs

func (c *StaticContract) GuidanceDocs(turnID string, out Output, pctx *PlannerContext, meta GuidanceMeta, errs []ValidationError) []GuidanceDoc

func (*StaticContract) Parse

func (c *StaticContract) Parse(raw string) (Output, error)

func (*StaticContract) Schema

func (c *StaticContract) Schema(context.Context) (map[string]interface{}, error)

func (*StaticContract) Validate

type StaticResolver

type StaticResolver struct {
	// contains filtered or unexported fields
}

func NewStaticResolver

func NewStaticResolver(contract Contract) *StaticResolver

func (*StaticResolver) Resolve

func (r *StaticResolver) Resolve(_ context.Context, _ *agentmdl.Agent) (Contract, error)

type Trigger

type Trigger string
const (
	TriggerLowConfidence       Trigger = "low_confidence"
	TriggerExploratoryStrategy Trigger = "exploratory_strategy"
	TriggerValidatorFailure    Trigger = "validator_failure"
)

type ValidationContext

type ValidationContext struct {
	ProfileRepo        *promptrepo.Repository
	ToolBundleRepo     *toolbundlerepo.Repository
	TemplateRepo       *tplrepo.Repository
	TemplateBundleRepo *tplbundlerepo.Repository
	Agent              *agentmdl.Agent
}

type ValidationError

type ValidationError struct {
	Code    string `json:"code,omitempty"`
	Field   string `json:"field,omitempty"`
	Value   string `json:"value,omitempty"`
	Message string `json:"message,omitempty"`
}

func Validate

func Validate(out Output, vctx ValidationContext) []ValidationError

func ValidateWithRules

func ValidateWithRules(ctx context.Context, out Output, rules []ValidationRule, vctx ValidationContext) []ValidationError

func (ValidationError) Error

func (e ValidationError) Error() string

type ValidationRule

type ValidationRule struct {
	Kind   string `json:"kind,omitempty"`
	Field  string `json:"field,omitempty"`
	Within string `json:"within,omitempty"`
}

func DefaultValidationRules

func DefaultValidationRules() []ValidationRule

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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