Files
m 6e0040fe89
CI / test (pull_request) Successful in 12s
CI / test (push) Successful in 10s
feat: add notification delivery foundation
2026-08-16 19:08:07 +03:00

82 lines
2.7 KiB
Go

package commit
import (
"git.cin.su/m/Assistant/contracts/authority"
"git.cin.su/m/Assistant/contracts/capability"
"git.cin.su/m/Assistant/contracts/continuity"
"git.cin.su/m/Assistant/contracts/identity"
"git.cin.su/m/Assistant/contracts/work"
"git.cin.su/m/Assistant/platform/ids"
)
type ActionIntentID ids.ID
type ActionAttemptID ids.ID
type AttemptID = ActionAttemptID
type AuthorizedActionID ids.ID
type ActionState string
const (
ActionProposed ActionState = "PROPOSED"
ActionAuthorized ActionState = "AUTHORIZED"
ActionExecuting ActionState = "EXECUTING"
ActionSucceeded ActionState = "SUCCEEDED"
ActionFailed ActionState = "FAILED"
ActionUnknownOutcome ActionState = "UNKNOWN_OUTCOME"
)
type ExternalOperation string
const (
CapabilityTestExecutor capability.CapabilityID = "test-executor"
CapabilityContinuityTransition capability.CapabilityID = "continuity-transition"
CapabilityProspectiveNotification capability.CapabilityID = "prospective-notification-delivery"
OperationTestIdempotentEffect ExternalOperation = "test-idempotent-effect"
OperationSatisfyDelivered ExternalOperation = "satisfy-delivered"
OperationDeliverProspectiveNotification ExternalOperation = "deliver-prospective-notification-v1"
)
const ProspectiveDeliveredTemplateV1 = "prospective-delivered-v1"
// ProspectiveNotificationSubject is immutable Commit evidence. Destination
// data is resolved from the exact Capability binding revision, never from UI.
type ProspectiveNotificationSubject struct {
ProspectiveItemID continuity.ProspectiveItemID
ExpectedRevision continuity.ProspectiveRevision
TemplateCode string
BindingID capability.CapabilityBindingID
BindingRevision int64
RenderedTitle string
RenderedMessage string
RequestDigest string
}
type ActionProposal struct {
IntentID ActionIntentID
ActorID identity.ActorID
CapabilityID capability.CapabilityID
Target work.TaskTarget
Operation ExternalOperation
ContinuitySubject continuity.SatisfyDeliveredSubject
NotificationSubject ProspectiveNotificationSubject
State ActionState
}
type AuthorizedAction struct {
ID AuthorizedActionID
Proposal ActionProposal
PrincipalID identity.PrincipalID
GrantID authority.GrantID
GrantRevision authority.AuthorityRevision
ScopeID authority.ScopeID
AuthorizedAtUnixMillis int64
State ActionState
}
type ActionAttempt struct {
ID ActionAttemptID
AuthorizedID AuthorizedActionID
IntentID ActionIntentID
State ActionState
}