582 lines
32 KiB
Go
582 lines
32 KiB
Go
package slurp
|
|
|
|
import (
|
|
"time"
|
|
|
|
"chorus/pkg/crypto"
|
|
)
|
|
|
|
// Core data types for the SLURP contextual intelligence system.
|
|
// These types define the structure for hierarchical context resolution,
|
|
// temporal evolution tracking, and distributed storage operations.
|
|
|
|
// ContextNode represents a single context entry in the hierarchy.
|
|
//
|
|
// Context nodes form a tree structure where child nodes inherit and
|
|
// override properties from their parents. This enables efficient
|
|
// cascading context resolution with bounded depth traversal.
|
|
type ContextNode struct {
|
|
// Identity and addressing
|
|
ID string `json:"id"` // Unique identifier
|
|
UCXLAddress string `json:"ucxl_address"` // Associated UCXL address
|
|
Path string `json:"path"` // Filesystem path
|
|
|
|
// Core context information
|
|
Summary string `json:"summary"` // Brief description
|
|
Purpose string `json:"purpose"` // What this component does
|
|
Technologies []string `json:"technologies"` // Technologies used
|
|
Tags []string `json:"tags"` // Categorization tags
|
|
Insights []string `json:"insights"` // Analytical insights
|
|
|
|
// Hierarchy relationships
|
|
Parent *string `json:"parent,omitempty"` // Parent context ID
|
|
Children []string `json:"children"` // Child context IDs
|
|
Specificity int `json:"specificity"` // Specificity level (higher = more specific)
|
|
|
|
// File metadata
|
|
FileType string `json:"file_type"` // File extension or type
|
|
Language *string `json:"language,omitempty"` // Programming language
|
|
Size *int64 `json:"size,omitempty"` // File size in bytes
|
|
LastModified *time.Time `json:"last_modified,omitempty"` // Last modification time
|
|
ContentHash *string `json:"content_hash,omitempty"` // Content hash for change detection
|
|
|
|
// Resolution metadata
|
|
CreatedBy string `json:"created_by"` // Who/what created this context
|
|
CreatedAt time.Time `json:"created_at"` // When created
|
|
UpdatedAt time.Time `json:"updated_at"` // When last updated
|
|
UpdatedBy string `json:"updated_by"` // Who performed the last update
|
|
Confidence float64 `json:"confidence"` // Confidence in accuracy (0-1)
|
|
|
|
// Cascading behavior rules
|
|
AppliesTo ContextScope `json:"applies_to"` // Scope of application
|
|
Overrides bool `json:"overrides"` // Whether this overrides parent context
|
|
|
|
// Security and access control
|
|
EncryptedFor []string `json:"encrypted_for"` // Roles that can access
|
|
AccessLevel crypto.AccessLevel `json:"access_level"` // Access level required
|
|
|
|
// Custom metadata
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"` // Additional metadata
|
|
}
|
|
|
|
// ResolvedContext represents the final resolved context for a UCXL address.
|
|
//
|
|
// This is the primary output of the context resolution process, combining
|
|
// information from multiple hierarchy levels and applying global contexts.
|
|
type ResolvedContext struct {
|
|
// Resolved context data
|
|
UCXLAddress string `json:"ucxl_address"` // Original UCXL address
|
|
Summary string `json:"summary"` // Resolved summary
|
|
Purpose string `json:"purpose"` // Resolved purpose
|
|
Technologies []string `json:"technologies"` // Merged technologies
|
|
Tags []string `json:"tags"` // Merged tags
|
|
Insights []string `json:"insights"` // Merged insights
|
|
|
|
// File information
|
|
FileType string `json:"file_type"` // File type
|
|
Language *string `json:"language,omitempty"` // Programming language
|
|
Size *int64 `json:"size,omitempty"` // File size
|
|
LastModified *time.Time `json:"last_modified,omitempty"` // Last modification
|
|
ContentHash *string `json:"content_hash,omitempty"` // Content hash
|
|
|
|
// Resolution metadata
|
|
SourcePath string `json:"source_path"` // Primary source context path
|
|
InheritanceChain []string `json:"inheritance_chain"` // Context inheritance chain
|
|
Confidence float64 `json:"confidence"` // Overall confidence (0-1)
|
|
BoundedDepth int `json:"bounded_depth"` // Actual traversal depth used
|
|
GlobalApplied bool `json:"global_applied"` // Whether global contexts were applied
|
|
ResolvedAt time.Time `json:"resolved_at"` // When resolution occurred
|
|
|
|
// Temporal information
|
|
Version int `json:"version"` // Current version number
|
|
LastUpdated time.Time `json:"last_updated"` // When context was last updated
|
|
EvolutionHistory []string `json:"evolution_history"` // Brief evolution history
|
|
|
|
// Access control
|
|
AccessibleBy []string `json:"accessible_by"` // Roles that can access this
|
|
EncryptionKeys []string `json:"encryption_keys"` // Keys used for encryption
|
|
|
|
// Performance metadata
|
|
ResolutionTime time.Duration `json:"resolution_time"` // Time taken to resolve
|
|
CacheHit bool `json:"cache_hit"` // Whether result was cached
|
|
NodesTraversed int `json:"nodes_traversed"` // Number of hierarchy nodes traversed
|
|
}
|
|
|
|
// ContextScope defines the scope of a context node's application
|
|
type ContextScope string
|
|
|
|
const (
|
|
ScopeLocal ContextScope = "local" // Only applies to this specific file/directory
|
|
ScopeChildren ContextScope = "children" // Applies to this and all child directories
|
|
ScopeGlobal ContextScope = "global" // Applies to the entire project
|
|
)
|
|
|
|
// TemporalNode represents context at a specific decision point in time.
|
|
//
|
|
// Temporal nodes track how context evolves through different decisions
|
|
// and changes, providing decision-hop based analysis rather than
|
|
// simple chronological progression.
|
|
type TemporalNode struct {
|
|
// Node identity
|
|
ID string `json:"id"` // Unique temporal node ID
|
|
UCXLAddress string `json:"ucxl_address"` // Associated UCXL address
|
|
Version int `json:"version"` // Version number (monotonic)
|
|
|
|
// Context snapshot
|
|
Context ContextNode `json:"context"` // Context data at this point
|
|
|
|
// Temporal metadata
|
|
Timestamp time.Time `json:"timestamp"` // When this version was created
|
|
DecisionID string `json:"decision_id"` // Associated decision identifier
|
|
ChangeReason ChangeReason `json:"change_reason"` // Why context changed
|
|
ParentNode *string `json:"parent_node,omitempty"` // Previous version ID
|
|
|
|
// Evolution tracking
|
|
ContextHash string `json:"context_hash"` // Hash of context content
|
|
Confidence float64 `json:"confidence"` // Confidence in this version (0-1)
|
|
Staleness float64 `json:"staleness"` // Staleness indicator (0-1)
|
|
|
|
// Decision graph relationships
|
|
Influences []string `json:"influences"` // UCXL addresses this influences
|
|
InfluencedBy []string `json:"influenced_by"` // UCXL addresses that influence this
|
|
|
|
// Validation metadata
|
|
ValidatedBy []string `json:"validated_by"` // Who/what validated this
|
|
LastValidated time.Time `json:"last_validated"` // When last validated
|
|
|
|
// Change impact analysis
|
|
ImpactScope ImpactScope `json:"impact_scope"` // Scope of change impact
|
|
PropagatedTo []string `json:"propagated_to"` // Addresses that received impact
|
|
|
|
// Custom temporal metadata
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"` // Additional metadata
|
|
}
|
|
|
|
// DecisionMetadata represents metadata about a decision that changed context.
|
|
//
|
|
// Decisions are the fundamental unit of temporal analysis in SLURP,
|
|
// representing why and how context evolved rather than just when.
|
|
type DecisionMetadata struct {
|
|
// Decision identity
|
|
ID string `json:"id"` // Unique decision identifier
|
|
Maker string `json:"maker"` // Who/what made the decision
|
|
Rationale string `json:"rationale"` // Why the decision was made
|
|
|
|
// Impact and scope
|
|
Scope ImpactScope `json:"scope"` // Scope of impact
|
|
ConfidenceLevel float64 `json:"confidence_level"` // Confidence in decision (0-1)
|
|
|
|
// External references
|
|
ExternalRefs []string `json:"external_refs"` // External references (URLs, docs)
|
|
GitCommit *string `json:"git_commit,omitempty"` // Associated git commit
|
|
IssueNumber *int `json:"issue_number,omitempty"` // Associated issue number
|
|
PullRequestNumber *int `json:"pull_request,omitempty"` // Associated PR number
|
|
|
|
// Timing information
|
|
CreatedAt time.Time `json:"created_at"` // When decision was made
|
|
EffectiveAt *time.Time `json:"effective_at,omitempty"` // When decision takes effect
|
|
ExpiresAt *time.Time `json:"expires_at,omitempty"` // When decision expires
|
|
|
|
// Decision quality
|
|
ReviewedBy []string `json:"reviewed_by,omitempty"` // Who reviewed this decision
|
|
ApprovedBy []string `json:"approved_by,omitempty"` // Who approved this decision
|
|
|
|
// Implementation tracking
|
|
ImplementationStatus string `json:"implementation_status"` // Status: planned, active, complete, cancelled
|
|
ImplementationNotes string `json:"implementation_notes"` // Implementation details
|
|
|
|
// Custom metadata
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"` // Additional metadata
|
|
}
|
|
|
|
// ChangeReason represents why context changed
|
|
type ChangeReason string
|
|
|
|
const (
|
|
ReasonInitialCreation ChangeReason = "initial_creation" // First time context creation
|
|
ReasonCodeChange ChangeReason = "code_change" // Code modification
|
|
ReasonDesignDecision ChangeReason = "design_decision" // Design/architecture decision
|
|
ReasonRefactoring ChangeReason = "refactoring" // Code refactoring
|
|
ReasonArchitectureChange ChangeReason = "architecture_change" // Major architecture change
|
|
ReasonRequirementsChange ChangeReason = "requirements_change" // Requirements modification
|
|
ReasonLearningEvolution ChangeReason = "learning_evolution" // Improved understanding
|
|
ReasonRAGEnhancement ChangeReason = "rag_enhancement" // RAG system enhancement
|
|
ReasonTeamInput ChangeReason = "team_input" // Team member input
|
|
ReasonBugDiscovery ChangeReason = "bug_discovery" // Bug found that changes understanding
|
|
ReasonPerformanceInsight ChangeReason = "performance_insight" // Performance analysis insight
|
|
ReasonSecurityReview ChangeReason = "security_review" // Security analysis
|
|
ReasonDependencyChange ChangeReason = "dependency_change" // Dependency update
|
|
ReasonEnvironmentChange ChangeReason = "environment_change" // Environment configuration change
|
|
ReasonToolingUpdate ChangeReason = "tooling_update" // Development tooling update
|
|
ReasonDocumentationUpdate ChangeReason = "documentation_update" // Documentation improvement
|
|
)
|
|
|
|
// ImpactScope represents the scope of a decision's impact
|
|
type ImpactScope string
|
|
|
|
const (
|
|
ImpactLocal ImpactScope = "local" // Affects only local context
|
|
ImpactModule ImpactScope = "module" // Affects current module
|
|
ImpactProject ImpactScope = "project" // Affects entire project
|
|
ImpactSystem ImpactScope = "system" // Affects entire system/ecosystem
|
|
)
|
|
|
|
// DecisionPath represents a path between two decision points in the temporal graph
|
|
type DecisionPath struct {
|
|
From string `json:"from"` // Starting UCXL address
|
|
To string `json:"to"` // Ending UCXL address
|
|
Steps []*DecisionStep `json:"steps"` // Path steps
|
|
TotalHops int `json:"total_hops"` // Total decision hops
|
|
PathType string `json:"path_type"` // Type of path (direct, influence, etc.)
|
|
}
|
|
|
|
// DecisionStep represents a single step in a decision path
|
|
type DecisionStep struct {
|
|
Address string `json:"address"` // UCXL address at this step
|
|
TemporalNode *TemporalNode `json:"temporal_node"` // Temporal node at this step
|
|
HopDistance int `json:"hop_distance"` // Hops from start
|
|
Relationship string `json:"relationship"` // Type of relationship to next step
|
|
}
|
|
|
|
// DecisionTimeline represents the decision evolution timeline for a context
|
|
type DecisionTimeline struct {
|
|
PrimaryAddress string `json:"primary_address"` // Main UCXL address
|
|
DecisionSequence []*DecisionTimelineEntry `json:"decision_sequence"` // Ordered by decision hops
|
|
RelatedDecisions []*RelatedDecision `json:"related_decisions"` // Related decisions within hop limit
|
|
TotalDecisions int `json:"total_decisions"` // Total decisions in timeline
|
|
TimeSpan time.Duration `json:"time_span"` // Time span from first to last
|
|
AnalysisMetadata *TimelineAnalysis `json:"analysis_metadata"` // Analysis metadata
|
|
}
|
|
|
|
// DecisionTimelineEntry represents an entry in the decision timeline
|
|
type DecisionTimelineEntry struct {
|
|
Version int `json:"version"` // Version number
|
|
DecisionHop int `json:"decision_hop"` // Decision distance from initial
|
|
ChangeReason ChangeReason `json:"change_reason"` // Why it changed
|
|
DecisionMaker string `json:"decision_maker"` // Who made the decision
|
|
DecisionRationale string `json:"decision_rationale"` // Rationale for decision
|
|
ConfidenceEvolution float64 `json:"confidence_evolution"` // Confidence at this point
|
|
Timestamp time.Time `json:"timestamp"` // When decision occurred
|
|
InfluencesCount int `json:"influences_count"` // Number of influenced addresses
|
|
InfluencedByCount int `json:"influenced_by_count"` // Number of influencing addresses
|
|
ImpactScope ImpactScope `json:"impact_scope"` // Scope of this decision
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"` // Additional metadata
|
|
}
|
|
|
|
// RelatedDecision represents a decision related through the influence graph
|
|
type RelatedDecision struct {
|
|
Address string `json:"address"` // UCXL address
|
|
DecisionHops int `json:"decision_hops"` // Hops from primary address
|
|
LatestVersion int `json:"latest_version"` // Latest version number
|
|
ChangeReason ChangeReason `json:"change_reason"` // Latest change reason
|
|
DecisionMaker string `json:"decision_maker"` // Latest decision maker
|
|
Confidence float64 `json:"confidence"` // Current confidence
|
|
LastDecisionTimestamp time.Time `json:"last_decision_timestamp"` // When last decision occurred
|
|
RelationshipType string `json:"relationship_type"` // Type of relationship (influences, influenced_by)
|
|
}
|
|
|
|
// TimelineAnalysis contains analysis metadata for decision timelines
|
|
type TimelineAnalysis struct {
|
|
ChangeVelocity float64 `json:"change_velocity"` // Changes per unit time
|
|
ConfidenceTrend string `json:"confidence_trend"` // increasing, decreasing, stable
|
|
DominantChangeReasons []ChangeReason `json:"dominant_change_reasons"` // Most common reasons
|
|
DecisionMakers map[string]int `json:"decision_makers"` // Decision maker frequency
|
|
ImpactScopeDistribution map[ImpactScope]int `json:"impact_scope_distribution"` // Distribution of impact scopes
|
|
InfluenceNetworkSize int `json:"influence_network_size"` // Size of influence network
|
|
AnalyzedAt time.Time `json:"analyzed_at"` // When analysis was performed
|
|
}
|
|
|
|
// NavigationDirection represents direction for temporal navigation
|
|
type NavigationDirection string
|
|
|
|
const (
|
|
NavigationForward NavigationDirection = "forward" // Toward newer decisions
|
|
NavigationBackward NavigationDirection = "backward" // Toward older decisions
|
|
)
|
|
|
|
// StaleContext represents a potentially outdated context
|
|
type StaleContext struct {
|
|
UCXLAddress string `json:"ucxl_address"` // Address of stale context
|
|
TemporalNode *TemporalNode `json:"temporal_node"` // Latest temporal node
|
|
StalenessScore float64 `json:"staleness_score"` // Staleness score (0-1)
|
|
LastUpdated time.Time `json:"last_updated"` // When last updated
|
|
Reasons []string `json:"reasons"` // Reasons why considered stale
|
|
SuggestedActions []string `json:"suggested_actions"` // Suggested remediation actions
|
|
}
|
|
|
|
// GenerationOptions configures context generation behavior
|
|
type GenerationOptions struct {
|
|
// Analysis options
|
|
AnalyzeContent bool `json:"analyze_content"` // Analyze file content
|
|
AnalyzeStructure bool `json:"analyze_structure"` // Analyze directory structure
|
|
AnalyzeHistory bool `json:"analyze_history"` // Analyze git history
|
|
AnalyzeDependencies bool `json:"analyze_dependencies"` // Analyze dependencies
|
|
|
|
// Generation scope
|
|
MaxDepth int `json:"max_depth"` // Maximum directory depth
|
|
IncludePatterns []string `json:"include_patterns"` // File patterns to include
|
|
ExcludePatterns []string `json:"exclude_patterns"` // File patterns to exclude
|
|
|
|
// Quality settings
|
|
MinConfidence float64 `json:"min_confidence"` // Minimum confidence threshold
|
|
RequireValidation bool `json:"require_validation"` // Require human validation
|
|
|
|
// External integration
|
|
UseRAG bool `json:"use_rag"` // Use RAG for enhancement
|
|
RAGEndpoint string `json:"rag_endpoint"` // RAG service endpoint
|
|
|
|
// Output options
|
|
EncryptForRoles []string `json:"encrypt_for_roles"` // Roles to encrypt for
|
|
|
|
// Performance limits
|
|
Timeout time.Duration `json:"timeout"` // Generation timeout
|
|
MaxFileSize int64 `json:"max_file_size"` // Maximum file size to analyze
|
|
|
|
// Custom options
|
|
CustomOptions map[string]interface{} `json:"custom_options,omitempty"` // Additional options
|
|
}
|
|
|
|
// HierarchyStats represents statistics about hierarchy generation
|
|
type HierarchyStats struct {
|
|
NodesCreated int `json:"nodes_created"` // Number of nodes created
|
|
NodesUpdated int `json:"nodes_updated"` // Number of nodes updated
|
|
FilesAnalyzed int `json:"files_analyzed"` // Number of files analyzed
|
|
DirectoriesScanned int `json:"directories_scanned"` // Number of directories scanned
|
|
GenerationTime time.Duration `json:"generation_time"` // Time taken for generation
|
|
AverageConfidence float64 `json:"average_confidence"` // Average confidence score
|
|
TotalSize int64 `json:"total_size"` // Total size of analyzed content
|
|
SkippedFiles int `json:"skipped_files"` // Number of files skipped
|
|
Errors []string `json:"errors"` // Generation errors
|
|
}
|
|
|
|
// ValidationResult represents the result of context validation
|
|
type ValidationResult struct {
|
|
Valid bool `json:"valid"` // Whether context is valid
|
|
ConfidenceScore float64 `json:"confidence_score"` // Overall confidence (0-1)
|
|
QualityScore float64 `json:"quality_score"` // Quality assessment (0-1)
|
|
Issues []*ValidationIssue `json:"issues"` // Validation issues found
|
|
Suggestions []*ValidationSuggestion `json:"suggestions"` // Improvement suggestions
|
|
ValidatedAt time.Time `json:"validated_at"` // When validation occurred
|
|
ValidatedBy string `json:"validated_by"` // Who/what performed validation
|
|
}
|
|
|
|
// ValidationIssue represents an issue found during validation
|
|
type ValidationIssue struct {
|
|
Severity string `json:"severity"` // error, warning, info
|
|
Message string `json:"message"` // Issue description
|
|
Field string `json:"field"` // Affected field
|
|
Suggestion string `json:"suggestion"` // How to fix
|
|
|
|
}
|
|
|
|
// ValidationSuggestion represents a suggestion for context improvement
|
|
type ValidationSuggestion struct {
|
|
Type string `json:"type"` // Type of suggestion
|
|
Description string `json:"description"` // Suggestion description
|
|
Confidence float64 `json:"confidence"` // Confidence in suggestion (0-1)
|
|
Priority int `json:"priority"` // Priority (1=high, 3=low)
|
|
}
|
|
|
|
// CostEstimate represents estimated resource cost for operations
|
|
type CostEstimate struct {
|
|
CPUCost float64 `json:"cpu_cost"` // Estimated CPU cost
|
|
MemoryCost float64 `json:"memory_cost"` // Estimated memory cost
|
|
StorageCost float64 `json:"storage_cost"` // Estimated storage cost
|
|
TimeCost time.Duration `json:"time_cost"` // Estimated time cost
|
|
TotalCost float64 `json:"total_cost"` // Total normalized cost
|
|
CostBreakdown map[string]float64 `json:"cost_breakdown"` // Detailed cost breakdown
|
|
}
|
|
|
|
// AnalysisResult represents the result of context analysis
|
|
type AnalysisResult struct {
|
|
QualityScore float64 `json:"quality_score"` // Overall quality (0-1)
|
|
ConsistencyScore float64 `json:"consistency_score"` // Consistency with hierarchy
|
|
CompletenessScore float64 `json:"completeness_score"` // Completeness assessment
|
|
AccuracyScore float64 `json:"accuracy_score"` // Accuracy assessment
|
|
Issues []*AnalysisIssue `json:"issues"` // Issues found
|
|
Strengths []string `json:"strengths"` // Context strengths
|
|
Improvements []*Suggestion `json:"improvements"` // Improvement suggestions
|
|
AnalyzedAt time.Time `json:"analyzed_at"` // When analysis occurred
|
|
}
|
|
|
|
// AnalysisIssue represents an issue found during analysis
|
|
type AnalysisIssue struct {
|
|
Type string `json:"type"` // Type of issue
|
|
Severity string `json:"severity"` // Severity level
|
|
Description string `json:"description"` // Issue description
|
|
Field string `json:"field"` // Affected field
|
|
Impact float64 `json:"impact"` // Impact score (0-1)
|
|
}
|
|
|
|
// Suggestion represents a suggestion for improvement
|
|
type Suggestion struct {
|
|
Type string `json:"type"` // Type of suggestion
|
|
Description string `json:"description"` // Suggestion description
|
|
Confidence float64 `json:"confidence"` // Confidence in suggestion
|
|
Priority int `json:"priority"` // Priority level
|
|
Action string `json:"action"` // Recommended action
|
|
}
|
|
|
|
// Pattern represents a detected context pattern
|
|
type Pattern struct {
|
|
ID string `json:"id"` // Pattern identifier
|
|
Name string `json:"name"` // Pattern name
|
|
Description string `json:"description"` // Pattern description
|
|
MatchCriteria map[string]interface{} `json:"match_criteria"` // Criteria for matching
|
|
Confidence float64 `json:"confidence"` // Pattern confidence (0-1)
|
|
Frequency int `json:"frequency"` // How often pattern appears
|
|
Examples []string `json:"examples"` // Example contexts that match
|
|
CreatedAt time.Time `json:"created_at"` // When pattern was detected
|
|
}
|
|
|
|
// PatternMatch represents a match between context and pattern
|
|
type PatternMatch struct {
|
|
PatternID string `json:"pattern_id"` // ID of matched pattern
|
|
MatchScore float64 `json:"match_score"` // How well it matches (0-1)
|
|
MatchedFields []string `json:"matched_fields"` // Which fields matched
|
|
Confidence float64 `json:"confidence"` // Confidence in match
|
|
}
|
|
|
|
// ContextPattern represents a registered context pattern template
|
|
type ContextPattern struct {
|
|
ID string `json:"id"` // Pattern identifier
|
|
Name string `json:"name"` // Human-readable name
|
|
Description string `json:"description"` // Pattern description
|
|
Template *ContextNode `json:"template"` // Template for matching
|
|
Criteria map[string]interface{} `json:"criteria"` // Matching criteria
|
|
Priority int `json:"priority"` // Pattern priority
|
|
CreatedBy string `json:"created_by"` // Who created pattern
|
|
CreatedAt time.Time `json:"created_at"` // When created
|
|
UpdatedAt time.Time `json:"updated_at"` // When last updated
|
|
UsageCount int `json:"usage_count"` // How often used
|
|
}
|
|
|
|
// Inconsistency represents a detected inconsistency in the context hierarchy
|
|
type Inconsistency struct {
|
|
Type string `json:"type"` // Type of inconsistency
|
|
Description string `json:"description"` // Description of the issue
|
|
AffectedNodes []string `json:"affected_nodes"` // Nodes involved
|
|
Severity string `json:"severity"` // Severity level
|
|
Suggestion string `json:"suggestion"` // How to resolve
|
|
DetectedAt time.Time `json:"detected_at"` // When detected
|
|
}
|
|
|
|
// SearchQuery represents a context search query
|
|
type SearchQuery struct {
|
|
// Query terms
|
|
Query string `json:"query"` // Main search query
|
|
Tags []string `json:"tags"` // Required tags
|
|
Technologies []string `json:"technologies"` // Required technologies
|
|
FileTypes []string `json:"file_types"` // File types to include
|
|
|
|
// Filters
|
|
MinConfidence float64 `json:"min_confidence"` // Minimum confidence
|
|
MaxAge *time.Duration `json:"max_age"` // Maximum age
|
|
Roles []string `json:"roles"` // Required access roles
|
|
|
|
// Scope
|
|
Scope []string `json:"scope"` // Paths to search within
|
|
ExcludeScope []string `json:"exclude_scope"` // Paths to exclude
|
|
|
|
// Result options
|
|
Limit int `json:"limit"` // Maximum results
|
|
Offset int `json:"offset"` // Result offset
|
|
SortBy string `json:"sort_by"` // Sort field
|
|
SortOrder string `json:"sort_order"` // asc, desc
|
|
|
|
// Advanced options
|
|
FuzzyMatch bool `json:"fuzzy_match"` // Enable fuzzy matching
|
|
IncludeStale bool `json:"include_stale"` // Include stale contexts
|
|
TemporalFilter *TemporalFilter `json:"temporal_filter"` // Temporal filtering
|
|
}
|
|
|
|
// TemporalFilter represents temporal filtering options
|
|
type TemporalFilter struct {
|
|
FromTime *time.Time `json:"from_time"` // Start time
|
|
ToTime *time.Time `json:"to_time"` // End time
|
|
VersionRange *VersionRange `json:"version_range"` // Version range
|
|
ChangeReasons []ChangeReason `json:"change_reasons"` // Specific change reasons
|
|
DecisionMakers []string `json:"decision_makers"` // Specific decision makers
|
|
MinDecisionHops int `json:"min_decision_hops"` // Minimum decision hops
|
|
MaxDecisionHops int `json:"max_decision_hops"` // Maximum decision hops
|
|
}
|
|
|
|
// VersionRange represents a range of versions
|
|
type VersionRange struct {
|
|
MinVersion int `json:"min_version"` // Minimum version (inclusive)
|
|
MaxVersion int `json:"max_version"` // Maximum version (inclusive)
|
|
}
|
|
|
|
// SearchResult represents a single search result
|
|
type SearchResult struct {
|
|
Context *ResolvedContext `json:"context"` // Resolved context
|
|
TemporalNode *TemporalNode `json:"temporal_node"` // Associated temporal node
|
|
MatchScore float64 `json:"match_score"` // How well it matches query (0-1)
|
|
MatchedFields []string `json:"matched_fields"` // Which fields matched
|
|
Snippet string `json:"snippet"` // Text snippet showing match
|
|
Rank int `json:"rank"` // Result rank
|
|
}
|
|
|
|
// IndexMetadata represents metadata for context indexing
|
|
type IndexMetadata struct {
|
|
IndexType string `json:"index_type"` // Type of index
|
|
IndexedFields []string `json:"indexed_fields"` // Fields that are indexed
|
|
IndexedAt time.Time `json:"indexed_at"` // When indexed
|
|
IndexVersion string `json:"index_version"` // Index version
|
|
Metadata map[string]interface{} `json:"metadata"` // Additional metadata
|
|
}
|
|
|
|
// DecisionAnalysis represents analysis of decision patterns
|
|
type DecisionAnalysis struct {
|
|
TotalDecisions int `json:"total_decisions"` // Total decisions analyzed
|
|
DecisionMakers map[string]int `json:"decision_makers"` // Decision maker frequency
|
|
ChangeReasons map[ChangeReason]int `json:"change_reasons"` // Change reason frequency
|
|
ImpactScopes map[ImpactScope]int `json:"impact_scopes"` // Impact scope distribution
|
|
ConfidenceTrends map[string]float64 `json:"confidence_trends"` // Confidence trends over time
|
|
DecisionFrequency map[string]int `json:"decision_frequency"` // Decisions per time period
|
|
InfluenceNetworkStats *InfluenceNetworkStats `json:"influence_network_stats"` // Network statistics
|
|
Patterns []*DecisionPattern `json:"patterns"` // Detected decision patterns
|
|
AnalyzedAt time.Time `json:"analyzed_at"` // When analysis was performed
|
|
AnalysisTimeSpan time.Duration `json:"analysis_time_span"` // Time span analyzed
|
|
}
|
|
|
|
// InfluenceNetworkStats represents statistics about the influence network
|
|
type InfluenceNetworkStats struct {
|
|
TotalNodes int `json:"total_nodes"` // Total nodes in network
|
|
TotalEdges int `json:"total_edges"` // Total influence relationships
|
|
AverageConnections float64 `json:"average_connections"` // Average connections per node
|
|
MaxConnections int `json:"max_connections"` // Maximum connections for any node
|
|
NetworkDensity float64 `json:"network_density"` // Network density (0-1)
|
|
ClusteringCoeff float64 `json:"clustering_coeff"` // Clustering coefficient
|
|
MaxPathLength int `json:"max_path_length"` // Maximum path length in network
|
|
CentralNodes []string `json:"central_nodes"` // Most central nodes
|
|
}
|
|
|
|
// DecisionPattern represents a detected pattern in decision-making
|
|
type DecisionPattern struct {
|
|
ID string `json:"id"` // Pattern identifier
|
|
Name string `json:"name"` // Pattern name
|
|
Description string `json:"description"` // Pattern description
|
|
Frequency int `json:"frequency"` // How often this pattern occurs
|
|
Confidence float64 `json:"confidence"` // Confidence in pattern (0-1)
|
|
ExampleDecisions []string `json:"example_decisions"` // Example decisions that match
|
|
Characteristics map[string]interface{} `json:"characteristics"` // Pattern characteristics
|
|
DetectedAt time.Time `json:"detected_at"` // When pattern was detected
|
|
}
|
|
|
|
// ResolverStatistics represents statistics about context resolution operations
|
|
type ResolverStatistics struct {
|
|
TotalResolutions int64 `json:"total_resolutions"` // Total resolution attempts
|
|
SuccessfulResolutions int64 `json:"successful_resolutions"` // Successful resolutions
|
|
FailedResolutions int64 `json:"failed_resolutions"` // Failed resolutions
|
|
AverageResolutionTime time.Duration `json:"average_resolution_time"` // Average time per resolution
|
|
CacheHitRate float64 `json:"cache_hit_rate"` // Cache hit rate (0-1)
|
|
AverageDepthTraversed float64 `json:"average_depth_traversed"` // Average hierarchy depth
|
|
MaxDepthTraversed int `json:"max_depth_traversed"` // Maximum depth ever traversed
|
|
UniqueAddresses int64 `json:"unique_addresses"` // Unique addresses resolved
|
|
CurrentCacheSize int64 `json:"current_cache_size"` // Current cache size
|
|
MaxCacheSize int64 `json:"max_cache_size"` // Maximum cache size
|
|
CacheEvictions int64 `json:"cache_evictions"` // Number of cache evictions
|
|
LastResetAt time.Time `json:"last_reset_at"` // When statistics were last reset
|
|
}
|