template

package
v0.0.71 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2026 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ResolveDeferredInputs added in v0.0.66

func ResolveDeferredInputs(snapshot json.RawMessage, input map[string]any) (map[string]any, error)

func ScopeID

func ScopeID(meta recipe.NodeMetadata, fallback string, scopeType ScopeType) string

ScopeID exposes the internal scope id logic for validation pre-seeding.

Types

type CELOptionsProvider

type CELOptionsProvider interface {
	TypeOptions() []cel.EnvOption
	FunctionOptions(adapter types.Adapter) ([]cel.EnvOption, error)
}

CELOptionsProvider supplies type options (must be applied at env creation) and function options (require adapter) for CEL.

func MergeCELOptionsProviders

func MergeCELOptionsProviders(providers ...CELOptionsProvider) CELOptionsProvider

type DiagnosticsObserver added in v0.0.11

type DiagnosticsObserver interface {
	VarsResolved(scope ScopeType, nodePath string, vars map[string]interface{})
}

type DynamicOutputs

type DynamicOutputs map[string]interface{}

DynamicOutputs marks a map whose keys are not known until runtime (e.g. child recipe outputs). During validation we want template resolution to tolerate missing keys and return a benign placeholder instead of failing with "no such key". DynamicOutputs is a marker type we use when seeding validation placeholders for steps whose outputs are not knowable at compile time (e.g., child recipes). It aliases a simple map so normal execution still gets a concrete map, while validation can wrap it in a permissive accessor.

type ExpressionSegment

type ExpressionSegment struct {
	Expression string // Raw CEL expression
	Pos        int    // Start position in original input
}

ExpressionSegment represents a CEL expression in a template

func (ExpressionSegment) Position

func (e ExpressionSegment) Position() int

type RenderMode

type RenderMode int

RenderMode defines how templates should be resolved (interpolation vs pure CEL).

const (
	// ModeInterpolation supports string interpolation with embedded expressions
	ModeInterpolation RenderMode = iota
	// ModePureCEL requires pure CEL expression only (for when conditions)
	ModePureCEL
)

type ResolutionContext

type ResolutionContext struct {
	ToolScopes []toolenv.Scope
	// ExecutionNeeds is lexical same-job state, never a persistent job override.
	ExecutionNeeds execution.Requirements

	// Scope type: "root", "sequence", "state_machine", "state"
	ScopeType ScopeType
	Options   ResolutionOptions
	// EffectiveConst is inherited down the node tree and prevents git state advancement.
	EffectiveConst bool

	// Parent context (nil for root)
	Parent *ResolutionContext

	// Template data for current scope
	TemplateData templateData

	// CEL environment for when expressions
	CELEnv *cel.Env

	CurrentRunID string // Track current run for this scope
	// contains filtered or unexported fields
}

ResolutionContext represents template resolution context

func NewRecipeResolutionContext

func NewRecipeResolutionContext(commitContext *contextual.GitCommitContext, recipeInputs map[string]interface{}, execCtx contextual.JobContext, opts ...ResolutionOptions) (*ResolutionContext, error)

NewRecipeResolutionContext creates a new resolution context for a recipe

func (*ResolutionContext) AddExecution

func (rc *ResolutionContext) AddExecution(output map[string]interface{})

func (*ResolutionContext) AddExecutionWithArtifactData

func (rc *ResolutionContext) AddExecutionWithArtifactData(output map[string]interface{}, artifactRefs map[string]recipeartifacts.Ref, artifacts []jobdb.Artifact)

func (*ResolutionContext) AddExecutionWithArtifacts

func (rc *ResolutionContext) AddExecutionWithArtifacts(output map[string]interface{}, artifactRefs map[string]recipeartifacts.Ref)

func (*ResolutionContext) AddExecutionWithContextData added in v0.0.42

func (rc *ResolutionContext) AddExecutionWithContextData(output map[string]interface{}, artifactRefs map[string]recipeartifacts.Ref, artifacts []jobdb.Artifact, jobs jobcontext.StartedJobsContext)

func (*ResolutionContext) ApplyContextPatch

func (rc *ResolutionContext) ApplyContextPatch(p coretask.ContextPatch) error

ApplyContextPatch mutates template-visible context for this ResolutionContext.

Job patches are applied to this context and all ancestors (global visibility). Scoped patches are applied to the currently-visible scope containers only (e.g. a sequence's "sequence" map, or a state machine's "states" map).

func (*ResolutionContext) EvaluateCEL

func (rc *ResolutionContext) EvaluateCEL(expr string) (bool, error)

EvaluateCEL handles pure CEL evaluation for when conditions

func (*ResolutionContext) GetGitCommitContext

func (rc *ResolutionContext) GetGitCommitContext() contextual.GitCommitContext

func (*ResolutionContext) GetLastArtifactRefs

func (rc *ResolutionContext) GetLastArtifactRefs() []recipeartifacts.Ref

func (*ResolutionContext) GetLastArtifacts

func (rc *ResolutionContext) GetLastArtifacts() []jobdb.Artifact

func (*ResolutionContext) GetLastExecution

func (rc *ResolutionContext) GetLastExecution() map[string]interface{}

func (*ResolutionContext) GetLastJobs added in v0.0.42

func (*ResolutionContext) InputSnapshot added in v0.0.66

func (rc *ResolutionContext) InputSnapshot() (json.RawMessage, error)

InputSnapshot preserves the template context for manifest defaults discovered only inside a live task. It contains unresolved references, never fetched values.

func (*ResolutionContext) NewChildContext

func (rc *ResolutionContext) NewChildContext(scopeType ScopeType, metadata recipe.NodeMetadata, fallback string, inputs map[string]interface{}) (*ResolutionContext, error)

NewChildContext creates a child resolution context

func (*ResolutionContext) NextWorkspaceID added in v0.0.54

func (rc *ResolutionContext) NextWorkspaceID(node string) string

NextWorkspaceID uses separate counters so legacy invocation identities do not change.

func (*ResolutionContext) PublishWorkspaceResult added in v0.0.54

func (rc *ResolutionContext) PublishWorkspaceResult(from *ResolutionContext)

PublishWorkspaceResult exports data, never the active Git state.

func (*ResolutionContext) RememberArtifacts

func (rc *ResolutionContext) RememberArtifacts(artifacts []jobdb.Artifact)

func (*ResolutionContext) ResolveCompositeInputs added in v0.0.54

func (rc *ResolutionContext) ResolveCompositeInputs(input map[string]interface{}) (map[string]interface{}, error)

Composite bindings are evaluated in the calling workspace, before the override.

func (*ResolutionContext) ResolveExecutionNeeds added in v0.0.52

func (rc *ResolutionContext) ResolveExecutionNeeds(needs *recipe.ExecutionNeeds) error

ResolveExecutionNeeds uses the same resolver as node inputs, after local vars are available. Each context owns its overlay; leaving it restores its parent.

func (*ResolutionContext) ResolveInputs added in v0.0.66

func (rc *ResolutionContext) ResolveInputs(input map[string]any) (map[string]any, error)

ResolveInputs is the only template entry point that can produce references. Callers must subsequently validate the destination schema.

func (*ResolutionContext) ResolveMap

func (rc *ResolutionContext) ResolveMap(input map[string]interface{}) (map[string]interface{}, error)

func (*ResolutionContext) ResolveTemplateWithMode

func (rc *ResolutionContext) ResolveTemplateWithMode(expr string, mode RenderMode) (interface{}, error)

ResolveTemplateWithMode handles expression evaluation with a specific mode

func (*ResolutionContext) ResolveValueWithLocals added in v0.0.24

func (rc *ResolutionContext) ResolveValueWithLocals(value interface{}, locals map[string]interface{}) (interface{}, error)

func (*ResolutionContext) ResolveValueWithMode

func (rc *ResolutionContext) ResolveValueWithMode(value interface{}, mode RenderMode) (interface{}, error)

ResolveValueWithMode recursively resolves templates in a value with a specific mode

func (*ResolutionContext) ResolveVars added in v0.0.11

func (rc *ResolutionContext) ResolveVars(vars map[string]interface{}) error

ResolveVars evaluates a vars block against the current outer vars snapshot, then atomically overlays the rendered values onto the current scope.

func (*ResolutionContext) TaskExecutionContext

func (rc *ResolutionContext) TaskExecutionContext() contextual.TaskExecutionContext

func (*ResolutionContext) UpdateGitState

func (rc *ResolutionContext) UpdateGitState(commit contextual.GitCommitContext)

func (*ResolutionContext) WithFailure added in v0.0.22

func (*ResolutionContext) WithLocals added in v0.0.24

func (rc *ResolutionContext) WithLocals(locals map[string]interface{}) *ResolutionContext

func (*ResolutionContext) WithWorkspace added in v0.0.54

WithWorkspace keeps output containers and lexical paths, but forks Git state.

type ResolutionMode

type ResolutionMode string
const (
	ModeRun      ResolutionMode = "run"
	ModeValidate ResolutionMode = "validate"
)

type ResolutionOptions

type ResolutionOptions struct {
	Mode                ResolutionMode
	ValidationMode      string
	ClampSliceIndex     bool
	AllowFutureStepRefs bool
	CatchBeforeRetry    bool
	// ResolvedSelectors carries compiler-internal selector pins for the current run.
	ResolvedSelectors map[string]string
	// ResolvedGitRefs carries compiler-internal repo/ref pins for the current run.
	ResolvedGitRefs map[string]string
	// CELOptionsProvider allows callers (server/api testserver, cortex) to inject CEL functions.
	// It is given the adapter to allow proper wrapping of complex return types.
	CELOptionsProvider  CELOptionsProvider
	DiagnosticsObserver DiagnosticsObserver
}

func DefaultResolutionOptions

func DefaultResolutionOptions() ResolutionOptions

type RunOutput

type RunOutput = contextual.RunOutput

RunOutput represents a single execution run

type ScopeMetadata

type ScopeMetadata struct {
	ExecutionID string    `json:"execution_id"`
	Timestamp   time.Time `json:"timestamp"`
}

ScopeMetadata contains execution context metadata

type ScopeType

type ScopeType string

ScopeType defines resolver scope kinds.

const (
	ScopeRecipe       ScopeType = "recipe"
	ScopeSequence     ScopeType = "sequence"
	ScopeStateMachine ScopeType = "state_machine"
	ScopeState        ScopeType = "state"
	ScopeOp           ScopeType = "op"
)

type Segment

type Segment interface {
	Position() int // For error reporting
	// contains filtered or unexported methods
}

Segment represents a parsed segment of a template

type StepOutput

type StepOutput = contextual.StepOutput

type TextSegment

type TextSegment struct {
	Text string
	Pos  int
}

TextSegment represents plain text in a template

func (TextSegment) Position

func (t TextSegment) Position() int

type TransitionData added in v0.0.11

type TransitionData struct {
	From    string                 `json:"from,omitempty"`
	To      string                 `json:"to,omitempty"`
	Payload map[string]interface{} `json:"payload"`
	Failure *recipe.RuntimeFailure `json:"failure,omitempty"`
}

TransitionData is the transition metadata visible to a target state invocation.

func EmptyTransitionData added in v0.0.11

func EmptyTransitionData() TransitionData

func NewFailureTransitionData added in v0.0.22

func NewFailureTransitionData(from string, to string, payload map[string]interface{}, failure *recipe.RuntimeFailure) TransitionData

func NewTransitionData added in v0.0.11

func NewTransitionData(from string, to string, payload map[string]interface{}) TransitionData

func (TransitionData) AsMap added in v0.0.11

func (td TransitionData) AsMap() map[string]interface{}

func (TransitionData) Clone added in v0.0.11

func (td TransitionData) Clone() TransitionData

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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