181 lines
6.4 KiB
Go
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
|
|
}
|