Documentation
¶
Overview ¶
Package pidl provides types and utilities for the Protocol Interaction Description Language. PIDL is a JSON-based DSL for describing protocol choreography that compiles to diagrams.
Index ¶
- Constants
- func IsValidAnnotationType(t AnnotationType) bool
- func IsValidCategory(c Category) bool
- func IsValidComponentType(t string) bool
- func IsValidCredential(c string) bool
- func IsValidEntityType(t EntityType) bool
- func IsValidFlowMode(m FlowMode) bool
- func IsValidProtocol(protocol string) bool
- func IsValidSecurityRequirement(r SecurityRequirement) bool
- func IsValidTrustLevel(t TrustLevel) bool
- func IsValidTrustRelationType(t string) bool
- func SanitizeID(s string) string
- func TitleCase(s string) string
- func ValidateFile(filename string) (*Protocol, ValidationErrors, error)
- type Alternative
- type AnimationPreset
- type Annotation
- type AnnotationType
- type Breakpoint
- type Category
- type DebugSession
- func (d *DebugSession) Continue() (*ExecutionStep, error)
- func (d *DebugSession) EnableBreakpoint(flowIndex int, enabled bool) error
- func (d *DebugSession) FormatFlowList() string
- func (d *DebugSession) Inspect() *DebugState
- func (d *DebugSession) InspectEntity(id string) (*Entity, string, error)
- func (d *DebugSession) InspectFlow(index int) (*Flow, error)
- func (d *DebugSession) ListBreakpoints() []*Breakpoint
- func (d *DebugSession) ListFlows() []FlowListItem
- func (d *DebugSession) Protocol() *Protocol
- func (d *DebugSession) RemoveBreakpoint(flowIndex int) error
- func (d *DebugSession) Reset()
- func (d *DebugSession) SetBreakpoint(flowIndex int, condition string) error
- func (d *DebugSession) SetEntityState(entityID, stateID string) error
- func (d *DebugSession) Step() (*ExecutionStep, error)
- func (d *DebugSession) Trace() *ExecutionTrace
- type DebugState
- type DeploymentComponent
- type DiffCategory
- type DiffItem
- type DiffOptions
- type DiffSummary
- type DiffType
- type Entity
- func (e Entity) HasProtocolRoles() bool
- func (e Entity) HasRole(protocol, role string) bool
- func (e Entity) HasStates() bool
- func (e Entity) InitialState() *EntityState
- func (e Entity) RolesByProtocol(protocol string) []ProtocolRole
- func (e Entity) StateByID(id string) *EntityState
- func (e Entity) StateIDs() []string
- type EntityMetadata
- type EntityState
- type EntityType
- type ExecutionContext
- type ExecutionEvent
- type ExecutionStep
- type ExecutionTrace
- type Executor
- func (e *Executor) NewContext() *ExecutionContext
- func (e *Executor) Reset(ctx *ExecutionContext)
- func (e *Executor) Run(ctx *ExecutionContext) (*ExecutionTrace, error)
- func (e *Executor) RunN(ctx *ExecutionContext, n int) (*ExecutionTrace, error)
- func (e *Executor) Step(ctx *ExecutionContext) (*ExecutionStep, error)
- type FileValidationResult
- type Flow
- func (f Flow) DisplayLabel() string
- func (f Flow) EffectiveMode() FlowMode
- func (f Flow) HasAlternatives() bool
- func (f Flow) HasAnnotations() bool
- func (f Flow) HasCondition() bool
- func (f Flow) HasNote() bool
- func (f Flow) HasSecurity() bool
- func (f Flow) HasStateMutations() bool
- func (f Flow) RequiresEncryption() bool
- func (f Flow) RequiresToken() bool
- type FlowAnimation
- type FlowListItem
- type FlowMode
- type FlowSecurity
- type NetworkConfig
- type NetworkLayoutConfig
- type Phase
- type Protocol
- func (p *Protocol) AllComponentTypes() []string
- func (p *Protocol) AllProtocols() []string
- func (p *Protocol) AllTrustRelationTypes() []string
- func (p *Protocol) ChildPhases(parentID string) []Phase
- func (p *Protocol) ComponentByID(id string) *DeploymentComponent
- func (p *Protocol) ComponentForEntity(entityID string) *DeploymentComponent
- func (p *Protocol) ComponentsByType(componentType string) []DeploymentComponent
- func (p *Protocol) EntitiesByProtocol(protocol string) []Entity
- func (p *Protocol) EntitiesByRole(protocol, role string) []Entity
- func (p *Protocol) EntitiesInComponent(componentID string) []Entity
- func (p *Protocol) EntitiesWithProtocolRoles() []Entity
- func (p *Protocol) EntitiesWithStates() []Entity
- func (p *Protocol) EntityByID(id string) *Entity
- func (p *Protocol) EntityIDs() []string
- func (p *Protocol) FlowsByPhase(phaseID string) []Flow
- func (p *Protocol) IsResolved() bool
- func (p *Protocol) IsValid() bool
- func (p *Protocol) NeedsResolution() bool
- func (p *Protocol) PhaseByID(id string) *Phase
- func (p *Protocol) PhaseDepth(phaseID string) int
- func (p *Protocol) PhaseIDs() []string
- func (p *Protocol) Resolve(opts ResolveOptions) (*Protocol, error)
- func (p *Protocol) RootPhases() []Phase
- func (p *Protocol) StateTransitions() []StateTransition
- func (p *Protocol) StateTransitionsForEntity(entityID string) []StateTransition
- func (p *Protocol) ToJSON() ([]byte, error)
- func (p *Protocol) ToJSONCompact() ([]byte, error)
- func (p *Protocol) TokenByID(id string) *TokenDefinition
- func (p *Protocol) TrustRelationByID(id string) *TrustRelationship
- func (p *Protocol) TrustRelationsByType(relType string) []TrustRelationship
- func (p *Protocol) TrustRelationsFrom(id string) []TrustRelationship
- func (p *Protocol) TrustRelationsTo(id string) []TrustRelationship
- func (p *Protocol) Validate() ValidationErrors
- func (p *Protocol) WriteFile(filename string) error
- type ProtocolDiff
- type ProtocolExtends
- type ProtocolImport
- type ProtocolMeta
- type ProtocolMetadata
- type ProtocolRole
- type Reference
- type ResolveOptions
- type SecurityRequirement
- type StateChange
- type StateMutation
- type StateTransition
- type TokenDefinition
- type TrustLevel
- type TrustRelationship
- type ValidationError
- type ValidationErrors
Constants ¶
const ( ProtocolOAuth = "oauth" ProtocolSCIM = "scim" ProtocolSPIFFE = "spiffe" ProtocolAAuth = "aauth" ProtocolIDJAG = "idjag" ProtocolAuthZEN = "authzen" ProtocolMCP = "mcp" ProtocolA2A = "a2a" )
Protocol identifier constants.
const ( ComponentTypeIdP = "idp" ComponentTypeIGA = "iga" ComponentTypeAgentProvider = "agent_provider" ComponentTypePersonServer = "person_server" ComponentTypeAccessServer = "access_server" ComponentTypePDP = "pdp" ComponentTypeGateway = "gateway" ComponentTypeMCPClient = "mcp_client" ComponentTypeMCPServer = "mcp_server" ComponentTypeResourceAPI = "resource_api" ComponentTypeSPIRE = "spire" )
Component type constants.
const ( TrustTypeAuthenticates = "authenticates" TrustTypeValidates = "validates" TrustTypeDelegates = "delegates" TrustTypeAuthorizes = "authorizes" TrustTypeIssues = "issues" TrustTypeTrusts = "trusts" TrustTypeProvisions = "provisions" TrustTypeAttests = "attests" )
Trust relationship type constants.
const ( CredentialX509SVID = "x509_svid" CredentialJWTSVID = "jwt_svid" CredentialJWTAssertion = "jwt_assertion" CredentialAccessToken = "access_token" CredentialIDToken = "id_token" CredentialAAAgentJWT = "aa_agent_jwt" CredentialAAAuthJWT = "aa_auth_jwt" CredentialMTLS = "mtls" CredentialAPIKey = "api_key" )
Credential type constants.
Variables ¶
This section is empty.
Functions ¶
func IsValidAnnotationType ¶ added in v0.2.0
func IsValidAnnotationType(t AnnotationType) bool
IsValidAnnotationType checks if the annotation type is valid.
func IsValidCategory ¶ added in v0.4.0
IsValidCategory checks if the category is valid.
func IsValidComponentType ¶ added in v0.4.0
IsValidComponentType checks if the component type is a known type.
func IsValidCredential ¶ added in v0.4.0
IsValidCredential checks if the credential type is a known type.
func IsValidEntityType ¶ added in v0.4.0
func IsValidEntityType(t EntityType) bool
IsValidEntityType checks if the entity type is valid.
func IsValidFlowMode ¶ added in v0.4.0
IsValidFlowMode checks if the flow mode is valid.
func IsValidProtocol ¶ added in v0.4.0
IsValidProtocol checks if the protocol identifier is a known protocol.
func IsValidSecurityRequirement ¶ added in v0.4.0
func IsValidSecurityRequirement(r SecurityRequirement) bool
IsValidSecurityRequirement checks if the security requirement is valid.
func IsValidTrustLevel ¶ added in v0.4.0
func IsValidTrustLevel(t TrustLevel) bool
IsValidTrustLevel checks if the trust level is valid.
func IsValidTrustRelationType ¶ added in v0.4.0
IsValidTrustRelationType checks if the trust relation type is a known type.
func SanitizeID ¶
SanitizeID converts a string to a valid PIDL ID (lowercase, alphanumeric, underscores/hyphens).
func ValidateFile ¶
func ValidateFile(filename string) (*Protocol, ValidationErrors, error)
ValidateFile parses and validates a PIDL file, returning any validation errors.
Types ¶
type Alternative ¶ added in v0.2.0
type Alternative struct {
// Condition describes when this alternative is taken.
Condition string `json:"condition"`
// Flows are the steps in this alternative path.
Flows []Flow `json:"flows"`
// Description provides additional context.
Description string `json:"description,omitempty"`
}
Alternative represents an alternative path in the flow.
type AnimationPreset ¶ added in v0.3.0
type AnimationPreset string
AnimationPreset represents a semantic animation preset.
const ( // AnimationPresetRequest is the default for outgoing requests. AnimationPresetRequest AnimationPreset = "request" // AnimationPresetResponse is for return values (gray, dashed). AnimationPresetResponse AnimationPreset = "response" // AnimationPresetSuccess indicates successful operations (green). AnimationPresetSuccess AnimationPreset = "success" // AnimationPresetError indicates errors/failures (red, pulsing). AnimationPresetError AnimationPreset = "error" // AnimationPresetWarning indicates warnings (orange, pulsing). AnimationPresetWarning AnimationPreset = "warning" // AnimationPresetHighlight emphasizes critical paths (yellow, larger dot). AnimationPresetHighlight AnimationPreset = "highlight" // AnimationPresetNone disables animation (static arrow). AnimationPresetNone AnimationPreset = "none" )
type Annotation ¶ added in v0.2.0
type Annotation struct {
// Type categorizes the annotation.
Type AnnotationType `json:"type"`
// Text is the annotation message.
Text string `json:"text"`
// Details provides additional context.
Details string `json:"details,omitempty"`
}
Annotation represents a typed annotation on a flow.
type AnnotationType ¶ added in v0.2.0
type AnnotationType string
AnnotationType represents the type of annotation.
const ( AnnotationTypeSecurity AnnotationType = "security" AnnotationTypePerformance AnnotationType = "performance" AnnotationTypeDeprecated AnnotationType = "deprecated" AnnotationTypeInfo AnnotationType = "info" AnnotationTypeWarning AnnotationType = "warning" AnnotationTypeError AnnotationType = "error" )
type Breakpoint ¶ added in v0.4.0
type Breakpoint struct {
// FlowIndex is the flow index where the breakpoint is set.
FlowIndex int
// Condition is an optional condition expression (evaluated by ConditionEvaluator).
Condition string
// Enabled indicates if the breakpoint is active.
Enabled bool
// HitCount tracks how many times this breakpoint was hit.
HitCount int
}
Breakpoint represents a debug breakpoint.
type DebugSession ¶ added in v0.4.0
type DebugSession struct {
// Executor runs the protocol.
Executor *Executor
// Context holds the execution state.
Context *ExecutionContext
// Breakpoints maps flow indices to breakpoints.
Breakpoints map[int]*Breakpoint
// Watchpoints maps entity IDs to watched state patterns.
Watchpoints map[string]string
// contains filtered or unexported fields
}
DebugSession provides interactive debugging of protocol execution.
func NewDebugSession ¶ added in v0.4.0
func NewDebugSession(p *Protocol) *DebugSession
NewDebugSession creates a new debug session for a protocol.
func (*DebugSession) Continue ¶ added in v0.4.0
func (d *DebugSession) Continue() (*ExecutionStep, error)
Continue runs until a breakpoint is hit or execution completes. Returns the step where it stopped (breakpoint or final step).
func (*DebugSession) EnableBreakpoint ¶ added in v0.4.0
func (d *DebugSession) EnableBreakpoint(flowIndex int, enabled bool) error
EnableBreakpoint enables or disables a breakpoint.
func (*DebugSession) FormatFlowList ¶ added in v0.4.0
func (d *DebugSession) FormatFlowList() string
FormatFlowList returns a formatted string of all flows.
func (*DebugSession) Inspect ¶ added in v0.4.0
func (d *DebugSession) Inspect() *DebugState
Inspect returns the current debug state.
func (*DebugSession) InspectEntity ¶ added in v0.4.0
func (d *DebugSession) InspectEntity(id string) (*Entity, string, error)
InspectEntity returns the entity and its current state.
func (*DebugSession) InspectFlow ¶ added in v0.4.0
func (d *DebugSession) InspectFlow(index int) (*Flow, error)
InspectFlow returns a flow by index.
func (*DebugSession) ListBreakpoints ¶ added in v0.4.0
func (d *DebugSession) ListBreakpoints() []*Breakpoint
ListBreakpoints returns all breakpoints.
func (*DebugSession) ListFlows ¶ added in v0.4.0
func (d *DebugSession) ListFlows() []FlowListItem
ListFlows returns all flows with their status.
func (*DebugSession) Protocol ¶ added in v0.4.0
func (d *DebugSession) Protocol() *Protocol
Protocol returns the protocol being debugged.
func (*DebugSession) RemoveBreakpoint ¶ added in v0.4.0
func (d *DebugSession) RemoveBreakpoint(flowIndex int) error
RemoveBreakpoint removes a breakpoint at the specified flow index.
func (*DebugSession) Reset ¶ added in v0.4.0
func (d *DebugSession) Reset()
Reset restarts the debug session from the beginning.
func (*DebugSession) SetBreakpoint ¶ added in v0.4.0
func (d *DebugSession) SetBreakpoint(flowIndex int, condition string) error
SetBreakpoint sets a breakpoint at the specified flow index.
func (*DebugSession) SetEntityState ¶ added in v0.4.0
func (d *DebugSession) SetEntityState(entityID, stateID string) error
SetEntityState manually sets an entity's state.
func (*DebugSession) Step ¶ added in v0.4.0
func (d *DebugSession) Step() (*ExecutionStep, error)
Step executes the next flow and returns the step details. Returns nil when execution is complete.
func (*DebugSession) Trace ¶ added in v0.4.0
func (d *DebugSession) Trace() *ExecutionTrace
Trace returns the current execution trace.
type DebugState ¶ added in v0.4.0
type DebugState struct {
// FlowIndex is the current position in the protocol.
FlowIndex int
// StepsExecuted is the number of steps executed so far.
StepsExecuted int
// CurrentFlow is the next flow to be executed (nil if complete).
CurrentFlow *Flow
// EntityStates maps entity IDs to their current states.
EntityStates map[string]string
// IsCompleted indicates if execution has finished.
IsCompleted bool
// AtBreakpoint indicates if execution stopped at a breakpoint.
AtBreakpoint bool
// Error holds any execution error.
Error error
}
DebugState represents the current state of a debug session.
func (*DebugState) String ¶ added in v0.4.0
func (d *DebugState) String() string
DebugStateString returns a human-readable representation of the debug state.
type DeploymentComponent ¶ added in v0.4.0
type DeploymentComponent struct {
// ID is the unique identifier for this component.
ID string `json:"id"`
// Name is the human-readable display name.
Name string `json:"name"`
// Type classifies the component (e.g., "idp", "iga", "gateway", "mcp_client").
Type string `json:"type"`
// Description provides additional context.
Description string `json:"description,omitempty"`
// Entities lists the entity IDs contained in this component.
Entities []string `json:"entities,omitempty"`
// Implements lists the protocol roles this component implements.
Implements []ProtocolRole `json:"implements,omitempty"`
// Examples lists real-world products that represent this component type.
Examples []string `json:"examples,omitempty"`
}
DeploymentComponent defines a logical deployment component that groups entities.
type DiffCategory ¶ added in v0.4.0
type DiffCategory string
DiffCategory represents the category of a diff item.
const ( DiffCategoryEntity DiffCategory = "entity" DiffCategoryFlow DiffCategory = "flow" DiffCategoryPhase DiffCategory = "phase" DiffCategoryMetadata DiffCategory = "metadata" )
type DiffItem ¶ added in v0.4.0
type DiffItem struct {
// Type indicates whether the item was added, removed, or modified.
Type DiffType `json:"type"`
// Category classifies what was changed.
Category DiffCategory `json:"category"`
// Path identifies the location of the change (e.g., "entities[0]", "flows[2].action").
Path string `json:"path"`
// OldValue is the value before the change (nil for additions).
OldValue interface{} `json:"old_value,omitempty"`
// NewValue is the value after the change (nil for removals).
NewValue interface{} `json:"new_value,omitempty"`
// Summary is a human-readable description of the change.
Summary string `json:"summary"`
}
DiffItem represents a single difference between two protocols.
type DiffOptions ¶ added in v0.4.0
type DiffOptions struct {
// IgnoreMetadata skips metadata comparison.
IgnoreMetadata bool
// IgnoreDescriptions skips description field comparisons.
IgnoreDescriptions bool
// DeepFlowCompare enables detailed flow field comparison.
DeepFlowCompare bool
}
DiffOptions controls comparison behavior.
func DefaultDiffOptions ¶ added in v0.4.0
func DefaultDiffOptions() DiffOptions
DefaultDiffOptions returns default comparison options.
type DiffSummary ¶ added in v0.4.0
type DiffSummary struct {
// TotalChanges is the total number of differences.
TotalChanges int `json:"total_changes"`
// Added counts items that were added.
Added int `json:"added"`
// Removed counts items that were removed.
Removed int `json:"removed"`
// Modified counts items that were modified.
Modified int `json:"modified"`
// ByCategory breaks down changes by category.
ByCategory map[DiffCategory]int `json:"by_category"`
}
DiffSummary provides counts of changes by category.
type Entity ¶
type Entity struct {
// ID is the unique identifier used in flow references.
ID string `json:"id"`
// Name is the human-readable display name.
Name string `json:"name"`
// Type classifies the entity.
Type EntityType `json:"type"`
// Description of the entity's role.
Description string `json:"description,omitempty"`
// TrustLevel classifies the trust level of this entity.
TrustLevel TrustLevel `json:"trust_level,omitempty"`
// Metadata contains additional entity properties for rendering.
Metadata *EntityMetadata `json:"metadata,omitempty"`
// States defines the possible states for this entity.
States []EntityState `json:"states,omitempty"`
// ProtocolRoles defines the protocol-specific roles this entity implements.
ProtocolRoles []ProtocolRole `json:"protocol_roles,omitempty"`
}
Entity represents a participant in the protocol.
func (Entity) HasProtocolRoles ¶ added in v0.4.0
HasProtocolRoles returns true if the entity has protocol roles defined.
func (Entity) HasStates ¶ added in v0.4.0
HasStates returns true if the entity has any states defined.
func (Entity) InitialState ¶ added in v0.4.0
func (e Entity) InitialState() *EntityState
InitialState returns the initial state, or nil if none is marked as initial.
func (Entity) RolesByProtocol ¶ added in v0.4.0
func (e Entity) RolesByProtocol(protocol string) []ProtocolRole
RolesByProtocol returns all roles for a specific protocol.
func (Entity) StateByID ¶ added in v0.4.0
func (e Entity) StateByID(id string) *EntityState
StateByID returns the state with the given ID, or nil if not found.
type EntityMetadata ¶ added in v0.3.0
type EntityMetadata struct {
// Network is the network boundary this entity belongs to.
Network string `json:"network,omitempty"`
// ServiceType classifies the service (e.g., "api", "database", "gateway").
ServiceType string `json:"type,omitempty"`
}
EntityMetadata contains additional entity properties.
type EntityState ¶ added in v0.4.0
type EntityState struct {
// ID is the unique identifier for this state within the entity.
ID string `json:"id"`
// Name is the human-readable display name.
Name string `json:"name,omitempty"`
// Description provides additional context.
Description string `json:"description,omitempty"`
// Initial marks this as the initial state.
Initial bool `json:"initial,omitempty"`
// Final marks this as a terminal/final state.
Final bool `json:"final,omitempty"`
}
EntityState represents a possible state for an entity.
type EntityType ¶
type EntityType string
EntityType represents the type of an entity.
const ( EntityTypeClient EntityType = "client" EntityTypeAuthorizationServer EntityType = "authorization_server" EntityTypeResourceServer EntityType = "resource_server" EntityTypeUser EntityType = "user" EntityTypeBrowser EntityType = "browser" EntityTypeAgent EntityType = "agent" EntityTypeToolServer EntityType = "tool_server" EntityTypeTool EntityType = "tool" EntityTypeDelegatedAgent EntityType = "delegated_agent" EntityTypeIdentityProvider EntityType = "identity_provider" EntityTypeServiceProvider EntityType = "service_provider" EntityTypeServer EntityType = "server" EntityTypeOther EntityType = "other" )
type ExecutionContext ¶ added in v0.4.0
type ExecutionContext struct {
// Protocol being executed.
Protocol *Protocol
// EntityStates maps entity ID to current state ID.
EntityStates map[string]string
// FlowIndex is the current position in the protocol's flows.
FlowIndex int
// Trace records execution history.
Trace *ExecutionTrace
// EventQueue holds pending events for event-driven execution.
EventQueue []ExecutionEvent
// Completed indicates execution has finished.
Completed bool
// Error holds any execution error.
Error error
}
ExecutionContext holds the runtime state of a protocol execution.
func (*ExecutionContext) CurrentFlow ¶ added in v0.4.0
func (ctx *ExecutionContext) CurrentFlow() *Flow
CurrentFlow returns the next flow to be executed, or nil if complete.
func (*ExecutionContext) GetEntityState ¶ added in v0.4.0
func (ctx *ExecutionContext) GetEntityState(entityID string) string
GetEntityState returns the current state of an entity.
func (*ExecutionContext) Progress ¶ added in v0.4.0
func (ctx *ExecutionContext) Progress() float64
Progress returns execution progress as a percentage (0-100).
func (*ExecutionContext) SetEntityState ¶ added in v0.4.0
func (ctx *ExecutionContext) SetEntityState(entityID, stateID string)
SetEntityState manually sets an entity's state.
type ExecutionEvent ¶ added in v0.4.0
type ExecutionEvent struct {
// Type categorizes the event.
Type string `json:"type"`
// FlowIndex references a specific flow (if applicable).
FlowIndex int `json:"flow_index,omitempty"`
// EntityID references a specific entity (if applicable).
EntityID string `json:"entity_id,omitempty"`
// Data holds event-specific payload.
Data map[string]interface{} `json:"data,omitempty"`
}
ExecutionEvent represents a pending event in the queue.
type ExecutionStep ¶ added in v0.4.0
type ExecutionStep struct {
// StepNumber is the 1-based step counter.
StepNumber int `json:"step_number"`
// FlowIndex is the index in Protocol.Flows.
FlowIndex int `json:"flow_index"`
// Timestamp when this step executed.
Timestamp time.Time `json:"timestamp"`
// From is the source entity ID.
From string `json:"from"`
// To is the target entity ID.
To string `json:"to"`
// Action is the flow action.
Action string `json:"action"`
// Label is the flow display label.
Label string `json:"label,omitempty"`
// Mode is the flow mode.
Mode FlowMode `json:"mode,omitempty"`
// Phase is the phase ID.
Phase string `json:"phase,omitempty"`
// Condition is the flow's condition (if any).
Condition string `json:"condition,omitempty"`
// ConditionMet indicates if condition was satisfied (for conditional flows).
ConditionMet *bool `json:"condition_met,omitempty"`
// StateChanges records state mutations from this step.
StateChanges []StateChange `json:"state_changes,omitempty"`
// Skipped indicates this flow was skipped (condition not met).
Skipped bool `json:"skipped,omitempty"`
// SkipReason explains why flow was skipped.
SkipReason string `json:"skip_reason,omitempty"`
}
ExecutionStep records a single flow execution.
type ExecutionTrace ¶ added in v0.4.0
type ExecutionTrace struct {
// ProtocolID identifies the executed protocol.
ProtocolID string `json:"protocol_id"`
// ProtocolName is the human-readable protocol name.
ProtocolName string `json:"protocol_name"`
// StartTime when execution began.
StartTime time.Time `json:"start_time"`
// EndTime when execution completed.
EndTime time.Time `json:"end_time,omitempty"`
// Steps records each executed flow.
Steps []ExecutionStep `json:"steps"`
// InitialStates captures entity states at start.
InitialStates map[string]string `json:"initial_states,omitempty"`
// FinalStates captures entity states at end.
FinalStates map[string]string `json:"final_states,omitempty"`
// Completed indicates if execution ran to completion.
Completed bool `json:"completed"`
// Error message if execution failed.
Error string `json:"error,omitempty"`
}
ExecutionTrace records the complete execution history.
func (*ExecutionTrace) Duration ¶ added in v0.4.0
func (t *ExecutionTrace) Duration() time.Duration
Duration returns the execution duration so far.
func (*ExecutionTrace) SkippedCount ¶ added in v0.4.0
func (t *ExecutionTrace) SkippedCount() int
SkippedCount returns the number of skipped steps.
func (*ExecutionTrace) StateChangeCount ¶ added in v0.4.0
func (t *ExecutionTrace) StateChangeCount() int
StateChangeCount returns the total number of state changes.
func (*ExecutionTrace) StepCount ¶ added in v0.4.0
func (t *ExecutionTrace) StepCount() int
StepCount returns the number of executed steps.
func (*ExecutionTrace) ToJSON ¶ added in v0.4.0
func (t *ExecutionTrace) ToJSON() ([]byte, error)
ToJSON returns the trace as JSON bytes.
type Executor ¶ added in v0.4.0
type Executor struct {
// Protocol to execute.
Protocol *Protocol
// ConditionEvaluator is called to evaluate flow conditions.
// If nil, all conditions are assumed to be met.
ConditionEvaluator func(ctx *ExecutionContext, flow *Flow) bool
}
Executor runs protocol simulations.
func NewExecutor ¶ added in v0.4.0
NewExecutor creates an Executor for the given protocol.
func (*Executor) NewContext ¶ added in v0.4.0
func (e *Executor) NewContext() *ExecutionContext
NewContext creates a fresh execution context with initial states.
func (*Executor) Reset ¶ added in v0.4.0
func (e *Executor) Reset(ctx *ExecutionContext)
Reset restarts execution from the beginning.
func (*Executor) Run ¶ added in v0.4.0
func (e *Executor) Run(ctx *ExecutionContext) (*ExecutionTrace, error)
Run executes all flows to completion.
func (*Executor) RunN ¶ added in v0.4.0
func (e *Executor) RunN(ctx *ExecutionContext, n int) (*ExecutionTrace, error)
RunN executes up to n steps.
func (*Executor) Step ¶ added in v0.4.0
func (e *Executor) Step(ctx *ExecutionContext) (*ExecutionStep, error)
Step executes the next flow and returns the step details. Returns nil when execution is complete.
type FileValidationResult ¶
type FileValidationResult struct {
Filename string
Protocol *Protocol
Errors ValidationErrors
ParseErr error
}
FileValidationResult contains the result of validating a single file.
func ValidateFiles ¶
func ValidateFiles(filenames []string) []FileValidationResult
ValidateFiles validates multiple PIDL files, returning results for each.
func (FileValidationResult) IsValid ¶
func (r FileValidationResult) IsValid() bool
IsValid returns true if the file parsed and validated successfully.
type Flow ¶
type Flow struct {
// From is the source entity ID.
From string `json:"from"`
// To is the target entity ID.
To string `json:"to"`
// Action identifies the action being performed.
Action string `json:"action"`
// Label is the display label (defaults to Action).
Label string `json:"label,omitempty"`
// Mode is the interaction mode.
Mode FlowMode `json:"mode,omitempty"`
// Phase is the phase ID this flow belongs to.
Phase string `json:"phase,omitempty"`
// Description provides additional details.
Description string `json:"description,omitempty"`
// Sequence provides explicit ordering.
Sequence int `json:"sequence,omitempty"`
// Condition specifies when this flow is executed (e.g., "token_valid", "error").
Condition string `json:"condition,omitempty"`
// Note is a visible annotation displayed on the diagram.
Note string `json:"note,omitempty"`
// Annotations are typed annotations for tooling and documentation.
Annotations []Annotation `json:"annotations,omitempty"`
// Alternatives are alternative paths from this flow point.
Alternatives []Alternative `json:"alternatives,omitempty"`
// Animation configures animation for this flow in animated SVG output.
// Can be a string (preset name) or FlowAnimation object.
Animation *FlowAnimation `json:"animation,omitempty"`
// Sets defines state mutations that occur when this flow executes.
Sets []StateMutation `json:"sets,omitempty"`
// Security specifies security requirements for this flow.
Security *FlowSecurity `json:"security,omitempty"`
}
Flow represents an interaction between two entities.
func (Flow) DisplayLabel ¶
DisplayLabel returns the label for display, falling back to Action if Label is empty.
func (Flow) EffectiveMode ¶
EffectiveMode returns the flow mode, defaulting to FlowModeRequest if empty.
func (Flow) HasAlternatives ¶ added in v0.2.0
HasAlternatives returns true if the flow has alternative paths.
func (Flow) HasAnnotations ¶ added in v0.2.0
HasAnnotations returns true if the flow has annotations.
func (Flow) HasCondition ¶ added in v0.2.0
HasCondition returns true if the flow has a condition.
func (Flow) HasSecurity ¶ added in v0.4.0
HasSecurity returns true if the flow has security requirements.
func (Flow) HasStateMutations ¶ added in v0.4.0
HasStateMutations returns true if the flow has any state mutations.
func (Flow) RequiresEncryption ¶ added in v0.4.0
RequiresEncryption returns true if the flow requires encryption.
func (Flow) RequiresToken ¶ added in v0.4.0
RequiresToken returns true if the flow requires a token.
type FlowAnimation ¶ added in v0.3.0
type FlowAnimation struct {
// Enabled controls whether this flow is animated. Defaults to true.
Enabled *bool `json:"enabled,omitempty"`
// Preset is a semantic preset name (request, success, error, warning, highlight, none).
Preset AnimationPreset `json:"preset,omitempty"`
// Duration is the animation cycle duration (e.g., "2s", "1.5s").
Duration string `json:"duration,omitempty"`
// Delay is the animation start delay (e.g., "0.5s").
Delay string `json:"delay,omitempty"`
// DotColor is the animated dot fill color.
DotColor string `json:"dot_color,omitempty"`
// DotSize is the animated dot radius in pixels.
DotSize int `json:"dot_size,omitempty"`
// Pulse adds a pulsing effect (useful for errors/warnings).
Pulse bool `json:"pulse,omitempty"`
// Easing is the CSS easing function (linear, ease-in-out, etc.).
Easing string `json:"easing,omitempty"`
}
FlowAnimation configures animation for a flow in animated SVG output.
func (*FlowAnimation) EffectiveDotColor ¶ added in v0.3.0
func (f *FlowAnimation) EffectiveDotColor(defaultColor string) string
EffectiveDotColor returns the dot color, applying preset defaults.
func (*FlowAnimation) EffectiveDotSize ¶ added in v0.3.0
func (f *FlowAnimation) EffectiveDotSize(defaultSize int) int
EffectiveDotSize returns the dot size, applying preset defaults.
func (*FlowAnimation) IsAnimationEnabled ¶ added in v0.3.0
func (f *FlowAnimation) IsAnimationEnabled() bool
IsAnimationEnabled returns whether animation is enabled for this flow.
func (*FlowAnimation) ShouldGlow ¶ added in v0.4.0
func (f *FlowAnimation) ShouldGlow() bool
ShouldGlow returns whether the dot should have a glow effect.
func (*FlowAnimation) ShouldPulse ¶ added in v0.3.0
func (f *FlowAnimation) ShouldPulse() bool
ShouldPulse returns whether the dot should pulse.
type FlowListItem ¶ added in v0.4.0
FlowListItem represents a flow for listing purposes.
type FlowMode ¶
type FlowMode string
FlowMode represents the type of interaction.
const ( FlowModeRequest FlowMode = "request" FlowModeResponse FlowMode = "response" FlowModeRedirect FlowMode = "redirect" FlowModeCallback FlowMode = "callback" FlowModeInteractive FlowMode = "interactive" FlowModeEvent FlowMode = "event" FlowModeToolCall FlowMode = "tool_call" FlowModeToolResult FlowMode = "tool_result" )
type FlowSecurity ¶ added in v0.4.0
type FlowSecurity struct {
// Requires lists security mechanisms required for this flow.
Requires []SecurityRequirement `json:"requires,omitempty"`
// Token is the token definition ID used for this flow.
Token string `json:"token,omitempty"`
// Confidential indicates if the flow carries sensitive data.
Confidential bool `json:"confidential,omitempty"`
// Description provides additional security context.
Description string `json:"description,omitempty"`
}
FlowSecurity describes security requirements for a flow.
type NetworkConfig ¶ added in v0.3.0
type NetworkConfig struct {
// Name is the display name for the boundary.
Name string `json:"name,omitempty"`
// Style is the visual style: trusted, dmz, external, cloud.
Style string `json:"style,omitempty"`
// Entities explicitly lists entity IDs in this boundary.
Entities []string `json:"entities,omitempty"`
// Description provides tooltip/hover text.
Description string `json:"description,omitempty"`
// Color overrides the default boundary color.
Color string `json:"color,omitempty"`
}
NetworkConfig defines a network boundary.
type NetworkLayoutConfig ¶ added in v0.3.0
type NetworkLayoutConfig struct {
// Direction is the layout direction: horizontal or vertical.
Direction string `json:"direction,omitempty"`
// Order specifies the boundary ordering.
Order []string `json:"order,omitempty"`
}
NetworkLayoutConfig configures network diagram layout.
type Phase ¶
type Phase struct {
// ID is the unique identifier.
ID string `json:"id"`
// Name is the human-readable name.
Name string `json:"name"`
// Description of the phase.
Description string `json:"description,omitempty"`
// Parent is the ID of the parent phase for nested phases.
Parent string `json:"parent,omitempty"`
}
Phase represents a logical grouping of flows.
type Protocol ¶
type Protocol struct {
// ProtocolMeta contains metadata about the protocol.
ProtocolMeta ProtocolMeta `json:"protocol"`
// Extends specifies a base protocol to extend.
Extends *ProtocolExtends `json:"extends,omitempty"`
// Imports specifies other protocol files to import from.
Imports []ProtocolImport `json:"imports,omitempty"`
// Entities are the participants in the protocol (systems, actors, services).
Entities []Entity `json:"entities"`
// Phases provide optional logical grouping of flows.
Phases []Phase `json:"phases,omitempty"`
// Flows are the interactions between entities.
Flows []Flow `json:"flows"`
// Metadata contains additional protocol-level configuration.
Metadata *ProtocolMetadata `json:"metadata,omitempty"`
// contains filtered or unexported fields
}
Protocol represents a complete PIDL document describing a protocol's choreography.
func MustParse ¶
MustParse parses PIDL JSON data and panics on error. Use only in tests or initialization code.
func MustParseFile ¶
MustParseFile reads and parses a PIDL JSON file, panicking on error. Use only in tests or initialization code.
func NewMinimalProtocol ¶
NewMinimalProtocol creates a minimal valid protocol scaffold.
func ParseReader ¶
ParseReader parses PIDL JSON from an io.Reader.
func (*Protocol) AllComponentTypes ¶ added in v0.4.0
AllComponentTypes returns a unique list of all component types. Returns an empty slice if no components exist or Metadata is nil.
func (*Protocol) AllProtocols ¶ added in v0.4.0
AllProtocols returns a unique list of all protocols referenced in entity roles. Returns an empty slice if no protocols are found.
func (*Protocol) AllTrustRelationTypes ¶ added in v0.4.0
AllTrustRelationTypes returns a unique list of all trust relation types. Returns an empty slice if no trust relations exist or Metadata is nil.
func (*Protocol) ChildPhases ¶ added in v0.2.0
ChildPhases returns phases that have the given parent ID.
func (*Protocol) ComponentByID ¶ added in v0.4.0
func (p *Protocol) ComponentByID(id string) *DeploymentComponent
ComponentByID returns the component with the given ID, or nil if not found.
func (*Protocol) ComponentForEntity ¶ added in v0.4.0
func (p *Protocol) ComponentForEntity(entityID string) *DeploymentComponent
ComponentForEntity returns the component that contains an entity, or nil if not found.
func (*Protocol) ComponentsByType ¶ added in v0.4.0
func (p *Protocol) ComponentsByType(componentType string) []DeploymentComponent
ComponentsByType returns all components of a given type. Returns an empty slice if no components match or Metadata is nil.
func (*Protocol) EntitiesByProtocol ¶ added in v0.4.0
EntitiesByProtocol returns all entities that implement a role for a specific protocol.
func (*Protocol) EntitiesByRole ¶ added in v0.4.0
EntitiesByRole returns all entities that implement a specific protocol role.
func (*Protocol) EntitiesInComponent ¶ added in v0.4.0
EntitiesInComponent returns all entities that belong to a component. Returns an empty slice if the component is not found.
func (*Protocol) EntitiesWithProtocolRoles ¶ added in v0.4.0
EntitiesWithProtocolRoles returns all entities that have protocol roles defined.
func (*Protocol) EntitiesWithStates ¶ added in v0.4.0
EntitiesWithStates returns all entities that have states defined.
func (*Protocol) EntityByID ¶
EntityByID returns the entity with the given ID, or nil if not found.
func (*Protocol) FlowsByPhase ¶
FlowsByPhase returns all flows belonging to the given phase.
func (*Protocol) IsResolved ¶ added in v0.4.0
IsResolved returns true if the protocol has been resolved.
func (*Protocol) NeedsResolution ¶ added in v0.4.0
NeedsResolution returns true if the protocol has imports or extends that need resolution.
func (*Protocol) PhaseDepth ¶ added in v0.2.0
PhaseDepth returns the nesting depth of a phase (0 for root phases).
func (*Protocol) Resolve ¶ added in v0.4.0
func (p *Protocol) Resolve(opts ResolveOptions) (*Protocol, error)
Resolve resolves all imports and extends in the protocol, returning a new fully-resolved Protocol. The original is not modified.
func (*Protocol) RootPhases ¶ added in v0.2.0
RootPhases returns phases that have no parent (top-level phases).
func (*Protocol) StateTransitions ¶ added in v0.4.0
func (p *Protocol) StateTransitions() []StateTransition
StateTransitions extracts all state transitions from the protocol's flows.
func (*Protocol) StateTransitionsForEntity ¶ added in v0.4.0
func (p *Protocol) StateTransitionsForEntity(entityID string) []StateTransition
StateTransitionsForEntity returns state transitions for a specific entity.
func (*Protocol) ToJSONCompact ¶
ToJSONCompact serializes a Protocol to compact JSON.
func (*Protocol) TokenByID ¶ added in v0.4.0
func (p *Protocol) TokenByID(id string) *TokenDefinition
TokenByID returns the token definition with the given ID, or nil if not found.
func (*Protocol) TrustRelationByID ¶ added in v0.4.0
func (p *Protocol) TrustRelationByID(id string) *TrustRelationship
TrustRelationByID returns the trust relation with the given ID, or nil if not found.
func (*Protocol) TrustRelationsByType ¶ added in v0.4.0
func (p *Protocol) TrustRelationsByType(relType string) []TrustRelationship
TrustRelationsByType returns all trust relations of a given type. Returns an empty slice if no relations match or Metadata is nil.
func (*Protocol) TrustRelationsFrom ¶ added in v0.4.0
func (p *Protocol) TrustRelationsFrom(id string) []TrustRelationship
TrustRelationsFrom returns all trust relations originating from an entity or component. Returns an empty slice if no relations match or Metadata is nil.
func (*Protocol) TrustRelationsTo ¶ added in v0.4.0
func (p *Protocol) TrustRelationsTo(id string) []TrustRelationship
TrustRelationsTo returns all trust relations targeting an entity or component. Returns an empty slice if no relations match or Metadata is nil.
func (*Protocol) Validate ¶
func (p *Protocol) Validate() ValidationErrors
Validate checks the Protocol for errors and returns all found issues.
type ProtocolDiff ¶ added in v0.4.0
type ProtocolDiff struct {
// BaseProtocolID is the ID of the base protocol.
BaseProtocolID string `json:"base_protocol_id"`
// NewProtocolID is the ID of the new protocol.
NewProtocolID string `json:"new_protocol_id"`
// Items contains all differences found.
Items []DiffItem `json:"items"`
// Summary provides aggregate statistics.
Summary DiffSummary `json:"summary"`
}
ProtocolDiff contains the complete comparison result.
func Compare ¶ added in v0.4.0
func Compare(base, new *Protocol, opts DiffOptions) *ProtocolDiff
Compare compares two protocols and returns the differences.
func (*ProtocolDiff) HasChanges ¶ added in v0.4.0
func (d *ProtocolDiff) HasChanges() bool
HasChanges returns true if there are any differences.
func (*ProtocolDiff) String ¶ added in v0.4.0
func (d *ProtocolDiff) String() string
String returns a human-readable text representation of the diff.
func (*ProtocolDiff) ToJSON ¶ added in v0.4.0
func (d *ProtocolDiff) ToJSON() ([]byte, error)
ToJSON returns the diff as JSON bytes.
func (*ProtocolDiff) ToMarkdown ¶ added in v0.4.0
func (d *ProtocolDiff) ToMarkdown() string
ToMarkdown returns a markdown representation of the diff.
type ProtocolExtends ¶ added in v0.4.0
type ProtocolExtends struct {
// Path is the file path to the base protocol (relative to current file).
Path string `json:"path"`
// ExcludeEntities lists entity IDs from the base to exclude.
ExcludeEntities []string `json:"exclude_entities,omitempty"`
// ExcludePhases lists phase IDs from the base to exclude.
ExcludePhases []string `json:"exclude_phases,omitempty"`
// ExcludeFlows lists flow indices from the base to exclude.
ExcludeFlows []int `json:"exclude_flows,omitempty"`
}
ProtocolExtends specifies a base protocol to extend.
type ProtocolImport ¶ added in v0.4.0
type ProtocolImport struct {
// Path is the file path to import (relative to current file).
Path string `json:"path"`
// Alias prefixes imported IDs to avoid collisions (e.g., "oauth_").
Alias string `json:"alias,omitempty"`
// Entities lists specific entity IDs to import (empty = all).
Entities []string `json:"entities,omitempty"`
// Phases lists specific phase IDs to import (empty = none unless entities need them).
Phases []string `json:"phases,omitempty"`
// IncludeFlows imports flows between the specified entities.
IncludeFlows bool `json:"include_flows,omitempty"`
}
ProtocolImport specifies another protocol file to import from.
type ProtocolMeta ¶
type ProtocolMeta struct {
// ID is the unique identifier for the protocol.
ID string `json:"id"`
// Name is the human-readable name.
Name string `json:"name"`
// Version of this protocol description.
Version string `json:"version,omitempty"`
// Description provides a brief summary.
Description string `json:"description,omitempty"`
// Category classifies the protocol type.
Category Category `json:"category,omitempty"`
// References links to relevant specifications.
References []Reference `json:"references,omitempty"`
}
ProtocolMeta contains metadata about a protocol.
type ProtocolMetadata ¶ added in v0.3.0
type ProtocolMetadata struct {
// Networks defines network boundary configurations.
Networks map[string]*NetworkConfig `json:"networks,omitempty"`
// NetworkLayout configures network diagram layout.
NetworkLayout *NetworkLayoutConfig `json:"network_layout,omitempty"`
// Tokens defines token types used in the protocol.
Tokens []TokenDefinition `json:"tokens,omitempty"`
// Components defines logical deployment components.
Components []DeploymentComponent `json:"components,omitempty"`
// TrustRelations defines trust relationships between entities or components.
TrustRelations []TrustRelationship `json:"trust_relations,omitempty"`
}
ProtocolMetadata contains additional protocol-level configuration.
type ProtocolRole ¶ added in v0.4.0
type ProtocolRole struct {
// Protocol is the protocol identifier (e.g., "oauth", "scim", "aauth", "authzen", "mcp", "a2a", "spiffe").
Protocol string `json:"protocol"`
// Role is the role within that protocol (e.g., "authorization_server", "client", "pep", "pdp").
Role string `json:"role"`
// Variant is an optional sub-role or variant (e.g., "person_server" vs "access_server" for AAuth).
Variant string `json:"variant,omitempty"`
// Description provides additional context.
Description string `json:"description,omitempty"`
}
ProtocolRole defines a protocol-specific role that an entity implements.
type Reference ¶
type Reference struct {
// Name of the reference (e.g., "RFC 6749").
Name string `json:"name"`
// URL to the reference.
URL string `json:"url"`
}
Reference links to external documentation.
type ResolveOptions ¶ added in v0.4.0
type ResolveOptions struct {
// BasePath is the directory to resolve relative paths from.
BasePath string
// MaxDepth limits import nesting depth (default: 10).
MaxDepth int
}
ResolveOptions configures protocol resolution behavior.
func DefaultResolveOptions ¶ added in v0.4.0
func DefaultResolveOptions() ResolveOptions
DefaultResolveOptions returns default resolution options.
type SecurityRequirement ¶ added in v0.4.0
type SecurityRequirement string
SecurityRequirement represents a security mechanism required for a flow.
const ( // SecurityRequirementToken requires a bearer or bound token. SecurityRequirementToken SecurityRequirement = "token" // SecurityRequirementSignature requires message signing. SecurityRequirementSignature SecurityRequirement = "signature" // SecurityRequirementEncryption requires message encryption. SecurityRequirementEncryption SecurityRequirement = "encryption" // SecurityRequirementMTLS requires mutual TLS authentication. SecurityRequirementMTLS SecurityRequirement = "mtls" // SecurityRequirementMAC requires message authentication code. SecurityRequirementMAC SecurityRequirement = "mac" )
type StateChange ¶ added in v0.4.0
type StateChange struct {
// Entity is the entity ID.
Entity string `json:"entity"`
// FromState is the prior state (empty if not tracked).
FromState string `json:"from_state,omitempty"`
// ToState is the new state.
ToState string `json:"to_state"`
}
StateChange records a single state mutation.
type StateMutation ¶ added in v0.4.0
type StateMutation struct {
// Entity is the ID of the entity whose state changes.
Entity string `json:"entity"`
// To is the target state ID.
To string `json:"to"`
// From is the optional required prior state (for validation).
From string `json:"from,omitempty"`
}
StateMutation represents a state change for an entity triggered by a flow.
type StateTransition ¶ added in v0.4.0
type StateTransition struct {
// EntityID is the entity undergoing the state change.
EntityID string
// FromState is the prior state (empty if not specified).
FromState string
// ToState is the target state.
ToState string
// FlowAction is the action that triggers this transition.
FlowAction string
// FlowLabel is the display label for the triggering flow.
FlowLabel string
}
StateTransition represents a state transition extracted from flows.
type TokenDefinition ¶ added in v0.4.0
type TokenDefinition struct {
// ID is the unique identifier for this token definition.
ID string `json:"id"`
// Name is the human-readable display name.
Name string `json:"name,omitempty"`
// Type is the token type: jwt, opaque, saml, api_key.
Type string `json:"type,omitempty"`
// Issuer is the entity ID that issues this token.
Issuer string `json:"issuer,omitempty"`
// Audience is the entity ID that consumes this token.
Audience string `json:"audience,omitempty"`
// Binding is the token binding method: bearer, mtls, dpop.
Binding string `json:"binding,omitempty"`
// Description provides additional context.
Description string `json:"description,omitempty"`
}
TokenDefinition describes a token type used in the protocol.
type TrustLevel ¶ added in v0.4.0
type TrustLevel string
TrustLevel represents the trust classification of an entity.
const ( // TrustLevelTrusted is for fully trusted internal systems. TrustLevelTrusted TrustLevel = "trusted" // TrustLevelSemiTrusted is for partially trusted systems (DMZ, partners). TrustLevelSemiTrusted TrustLevel = "semi_trusted" // TrustLevelUntrusted is for external/public systems. TrustLevelUntrusted TrustLevel = "untrusted" // TrustLevelAuthoritative is for sources of truth (IdPs, CAs). TrustLevelAuthoritative TrustLevel = "authoritative" )
type TrustRelationship ¶ added in v0.4.0
type TrustRelationship struct {
// ID is an optional unique identifier for this relationship.
ID string `json:"id,omitempty"`
// From is the source entity or component ID.
From string `json:"from"`
// To is the target entity or component ID.
To string `json:"to"`
// Type is the relationship type (e.g., "authenticates", "validates", "delegates").
Type string `json:"type"`
// Credentials lists what credentials are exchanged in this relationship.
Credentials []string `json:"credentials,omitempty"`
// Mutual indicates if this is a bidirectional trust (e.g., mTLS).
Mutual bool `json:"mutual,omitempty"`
// Description provides additional context.
Description string `json:"description,omitempty"`
}
TrustRelationship defines a trust relationship between entities or components.
type ValidationError ¶
ValidationError represents a validation error with context.
func (ValidationError) Error ¶
func (e ValidationError) Error() string
type ValidationErrors ¶
type ValidationErrors []ValidationError
ValidationErrors is a collection of validation errors.
func (ValidationErrors) Error ¶
func (e ValidationErrors) Error() string
func (ValidationErrors) HasErrors ¶
func (e ValidationErrors) HasErrors() bool
HasErrors returns true if there are any validation errors.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package analyze provides security analysis for PIDL protocols.
|
Package analyze provides security analysis for PIDL protocols. |
|
cmd
|
|
|
pidl
command
Command pidl is the CLI tool for the Protocol Interaction Description Language.
|
Command pidl is the CLI tool for the Protocol Interaction Description Language. |
|
Package examples provides embedded PIDL example protocols.
|
Package examples provides embedded PIDL example protocols. |
|
Package render provides diagram renderers for PIDL protocols.
|
Package render provides diagram renderers for PIDL protocols. |
|
svg
Package svg provides SVG rendering utilities for PIDL protocols.
|
Package svg provides SVG rendering utilities for PIDL protocols. |
|
Package schema provides the embedded PIDL JSON Schema.
|
Package schema provides the embedded PIDL JSON Schema. |