package situation import ( "git.cin.su/m/Assistant/contracts/authority" "git.cin.su/m/Assistant/contracts/identity" "git.cin.su/m/Assistant/contracts/work" "git.cin.su/m/Assistant/platform/ids" ) type SituationID ids.ID type FocusBindingID ids.ID type SessionID ids.ID type WorkspaceID ids.ID type ProjectID ids.ID type ProjectAlias string type ProjectResolutionProvenance string const ( ProjectResolutionExplicit ProjectResolutionProvenance = "EXPLICIT" ProjectResolutionInheritedFocus ProjectResolutionProvenance = "INHERITED_FOCUS" ProjectResolutionEntityReference ProjectResolutionProvenance = "ENTITY_REFERENCE" ProjectResolutionTaskReference ProjectResolutionProvenance = "TASK_REFERENCE" ProjectResolutionRepositoryReference ProjectResolutionProvenance = "REPOSITORY_REFERENCE" ProjectResolutionInferred ProjectResolutionProvenance = "INFERRED" ProjectResolutionUserConfirmed ProjectResolutionProvenance = "USER_CONFIRMED" ProjectResolutionAmbiguous ProjectResolutionProvenance = "AMBIGUOUS" ) // FocusBinding is the situation-owned runtime context used to resolve a request. // User text is deliberately absent: textual similarity is not a routing signal. type FocusBinding struct { ID FocusBindingID ActorID identity.ActorID SessionID SessionID Workspace WorkspaceID ProjectID ProjectID GoalID work.GoalID ScopeID authority.ScopeID Active bool } type RuntimeBinding struct { SessionID SessionID Workspace WorkspaceID } type ProjectDescriptor struct { ID ProjectID DisplayName string Aliases []ProjectAlias RecordedAtUnixMillis int64 } type ActiveProjectFocus struct { ActorID identity.ActorID PrincipalID identity.PrincipalID ProjectID ProjectID ProjectDisplayName string Provenance ProjectResolutionProvenance ConfidenceMillis int64 SourceUtteranceID string UpdatedAtUnixMillis int64 }