Files
m b097269df4
CI / test (push) Successful in 23s
CI / test (pull_request) Successful in 21s
Route local recovery by semantic intent
2026-08-22 03:00:15 +03:00

181 lines
6.4 KiB
Go

package cognitive
import (
"git.cin.su/m/Assistant/contracts/authority"
"git.cin.su/m/Assistant/contracts/capability"
"git.cin.su/m/Assistant/contracts/identity"
"git.cin.su/m/Assistant/contracts/interaction"
"git.cin.su/m/Assistant/platform/ids"
)
type RequestID ids.ID
type ContextExcerptID ids.ID
type ContractVersion string
type Sensitivity string
type FinishReason string
const (
CreatorAdvisoryV1 ContractVersion = "creator-advisory-v1"
SensitivityPublic Sensitivity = "PUBLIC"
SensitivityPrivateAllowed Sensitivity = "PRIVATE_ALLOWED"
SensitivitySecret Sensitivity = "SECRET"
SensitivityUnknown Sensitivity = "UNKNOWN"
FinishCompleted FinishReason = "COMPLETED"
FinishLengthLimit FinishReason = "LENGTH_LIMIT"
FinishContentRejected FinishReason = "CONTENT_REJECTED"
FinishProviderUnavailable FinishReason = "PROVIDER_UNAVAILABLE"
FinishModelUnavailable FinishReason = "MODEL_UNAVAILABLE"
FinishRateLimited FinishReason = "RATE_LIMITED"
FinishAuthenticationFailed FinishReason = "AUTHENTICATION_FAILED"
FinishBillingOrBudgetBlocked FinishReason = "BILLING_OR_BUDGET_BLOCKED"
FinishContextTooLarge FinishReason = "CONTEXT_TOO_LARGE"
FinishUnsupportedCapability FinishReason = "UNSUPPORTED_CAPABILITY"
FinishTimeout FinishReason = "TIMEOUT"
FinishInvalidProviderResponse FinishReason = "INVALID_PROVIDER_RESPONSE"
FinishInvalidStructuredOutput FinishReason = "INVALID_STRUCTURED_OUTPUT"
FinishDegraded FinishReason = "DEGRADED"
)
type ContextExcerpt struct {
ID ContextExcerptID
SourceKind string
SourceID string
Revision int64
Sensitivity Sensitivity
Text string
}
// AdvisoryRequest is assembled by a trusted gateway. Actor, Principal, Scope
// and Binding fields must never be accepted as browser-selected authority.
type AdvisoryRequest struct {
Version ContractVersion
RequestID RequestID
ActorID identity.ActorID
PrincipalID identity.PrincipalID
ScopeID authority.ScopeID
Message string
Context []ContextExcerpt
Locale string
MaxOutputBytes int
ProviderBindingID capability.CapabilityBindingID
ProviderBindingRevision int64
ProviderInstanceID capability.ProviderInstanceID
ModelDescriptorID capability.ModelDescriptorID
ProviderModelID capability.ProviderModelID
}
// GatewayAdvisoryRequest describes the task and policy requirement. It cannot
// name a provider, model or binding; Capability owns that selection.
type GatewayAdvisoryRequest struct {
Version ContractVersion
RequestID RequestID
ActorID identity.ActorID
PrincipalID identity.PrincipalID
ScopeID authority.ScopeID
Message string
Context []ContextExcerpt
Locale string
MaxOutputBytes int
DataPolicy capability.DataPolicy
EgressAcknowledged bool
Meaning TaskMeaning
}
// TaskMeaning is the trusted semantic summary produced by Core. It is not a
// browser-controlled provider selector; the Capability owner still resolves
// the actual binding.
type TaskMeaning struct {
SpeechAct string
CapabilityKind capability.CapabilityKind
CapabilityHints []capability.CapabilityKind
RequestedOutcome string
InformationRequestKind interaction.InformationRequestKind
ConfidenceMillis int64
}
type GatewayAdvisoryPolicyRequest struct {
PrincipalID identity.PrincipalID
DataPolicy capability.DataPolicy
}
type GatewayAdvisoryPolicy struct {
ExternalEgress bool
AcknowledgementRequired bool
Disclosure string
}
type ProviderUsage struct {
InputUnits int64
OutputUnits int64
}
type InterpretationApplicability string
const (
InterpretationApplicable InterpretationApplicability = "APPLICABLE"
InterpretationLowConfidence InterpretationApplicability = "LOW_CONFIDENCE"
InterpretationMixedIntent InterpretationApplicability = "MIXED_INTENT"
InterpretationNeedsBroader InterpretationApplicability = "NEEDS_BROADER_INTERPRETATION"
InterpretationClarificationRequired InterpretationApplicability = "CLARIFICATION_REQUIRED"
)
type GatewayInterpretationRequest struct {
Version ContractVersion
RequestID RequestID
ActorID identity.ActorID
PrincipalID identity.PrincipalID
ScopeID authority.ScopeID
Message string
Locale string
MaxOutputBytes int
DataPolicy capability.DataPolicy
DeterministicSpeechAct string
DeterministicSecondary string
DeterministicConfidence int64
DeterministicApplicability InterpretationApplicability
RequestedOutcome string
ProjectNames []string
}
type GatewayInterpretationCandidate struct {
PrimarySpeechAct string `json:"primary_speech_act"`
SecondarySpeechAct string `json:"secondary_speech_act,omitempty"`
ConfidenceMillis int64 `json:"confidence_millis"`
Applicability InterpretationApplicability `json:"applicability"`
RequestedOutcome string `json:"requested_outcome,omitempty"`
NeedsCognition bool `json:"needs_cognition"`
Clarification string `json:"clarification"`
SelectionReason string `json:"selection_reason,omitempty"`
CapabilityHints []capability.CapabilityKind `json:"capability_hints,omitempty"`
}
type GatewayInterpretationResponse struct {
Version ContractVersion
RequestID RequestID
Candidate GatewayInterpretationCandidate
FinishReason FinishReason
Usage *ProviderUsage
}
type AdvisoryResponse struct {
Version ContractVersion
RequestID RequestID
ProviderBindingID capability.CapabilityBindingID
ProviderBindingRevision int64
AdvisoryText string
ReferencedExcerptIDs []ContextExcerptID
FinishReason FinishReason
Usage *ProviderUsage
}
type GatewayAdvisoryResponse struct {
Version ContractVersion
RequestID RequestID
AdvisoryText string
ReferencedExcerptIDs []ContextExcerptID
FinishReason FinishReason
Usage *ProviderUsage
}