// Code generated by seatgen from the seat definitions; DO NOT EDIT. // Package operatorchannel is the contract of the seat "operator-channel", defined whole (seats/operator-channel/seat.json): Asking a person and answering on a channel (ADR 0259): held by the router, the messenger module, whose manifest declares the seat; written from that seat entry (design 26). package operatorchannel // Seat is the seat's name. const Seat = "operator-channel" const ( VerbOpen = "open" VerbHistory = "history" VerbNotify = "notify" VerbTell = "tell" VerbAsks = "asks" ) const ( AcceptAsk = "ask" AcceptCancel = "cancel" AcceptCondition = "condition" ) const ( EventDecided = "decided" ) // Verbs is every verb the seat serves, in its definition's order: a new copy each call. func Verbs() []string { return []string{VerbOpen, VerbHistory, VerbNotify, VerbTell, VerbAsks} } // Events is every event published on the seat's subject: a new copy each call. func Events() []string { return []string{EventDecided} } // Family is where the seat's events are kept: the shared events stream, filtered to the seat's subjects. const ( Family = "operator-channel.decided" FamilyMaxAgeDays = 7 ) // SubjectDecided is where decided is published for one caller. func SubjectDecided(caller string) string { return "mesh.seat.operator-channel.event.decided." + caller } // AcceptSubjectAsk is where one caller sends ask. func AcceptSubjectAsk(caller string) string { return "mesh.seat.operator-channel.accept.ask." + caller } // AcceptSubjectCancel is where one caller sends cancel. func AcceptSubjectCancel(caller string) string { return "mesh.seat.operator-channel.accept.cancel." + caller } // AcceptSubjectCondition is where one caller sends condition. func AcceptSubjectCondition(caller string) string { return "mesh.seat.operator-channel.accept.condition." + caller } // The holder's own events, listed beside the seat and published under the holder's subjects (ADR 0620 §2). const ( HolderEventRefused = "refused" HolderEventOffered = "offered" HolderEventClosed = "closed" ) // HolderSubjectRefused is where the holder publishes refused. func HolderSubjectRefused(holder string) string { return "mesh.mod." + holder + ".event.refused" } // HolderSubjectOffered is where the holder publishes offered, kept in the router's restricted stream (design 55 § 11). func HolderSubjectOffered(holder string) string { return "mesh.mod." + holder + ".event.offered" } // HolderSubjectClosed is where the holder publishes closed, kept in the router's restricted stream (design 55 § 11). func HolderSubjectClosed(holder string) string { return "mesh.mod." + holder + ".event.closed" } const ( RecordAsks = "asks" ) // Ask is a type of the contract. type Ask struct { // what it is about: a newer ask about it replaces the older About string `json:"about,omitempty"` // its secondary words Details string `json:"details,omitempty"` // when it ends unanswered, RFC 3339 Expires string `json:"expires"` // what happened and what it means Explanation string `json:"explanation"` // a few plain words Headline string `json:"headline"` // the asker's own id ID string `json:"id"` // what the asker then does OnExpiry string `json:"on-expiry"` // the answers it offers Options []Option `json:"options"` // urgent Urgent bool `json:"urgent,omitempty"` // who may answer: operator Who string `json:"who"` // the explanation with its values whole Whole string `json:"whole,omitempty"` // the details whole WholeDetails string `json:"whole-details,omitempty"` } // ConditionActionsItem is a type of the contract. type ConditionActionsItem struct { Arguments map[string]string `json:"arguments,omitempty"` // label Label string `json:"label"` // level Level string `json:"level,omitempty"` // machine Machine string `json:"machine,omitempty"` // verb Verb string `json:"verb"` } // ConditionSubject is a type of the contract. type ConditionSubject struct { // id ID string `json:"id"` // machine Machine string `json:"machine,omitempty"` // scope Scope string `json:"scope"` } // Condition is a type of the contract. type Condition struct { // the answers it offers Actions []ConditionActionsItem `json:"actions,omitempty"` // plain words Explanation string `json:"explanation,omitempty"` // plain words Headline string `json:"headline,omitempty"` // the condition's key Key string `json:"key"` // what it needs Needs string `json:"needs,omitempty"` // the line said when it is over Resolved string `json:"resolved,omitempty"` // urgent or warning Severity string `json:"severity,omitempty"` // raised or cleared State string `json:"state"` Subject ConditionSubject `json:"subject"` // one line Summary string `json:"summary,omitempty"` // the form's version, 1 V int64 `json:"v"` } // Option is a type of the contract. type Option struct { // the digest of exactly what the asker performs when it is chosen Binds string `json:"binds,omitempty"` // what it does, in plain words Does string `json:"does"` // the option's id ID string `json:"id"` // the button's label Label string `json:"label"` // the proof its answer needs Level string `json:"level"` } // Person is a type of the contract. type Person struct { // the name shown Display string `json:"display,omitempty"` // the account Identity string `json:"identity"` // the channel kind Kind string `json:"kind"` // how the router knew Verified string `json:"verified"` // the role Who string `json:"who"` } // Warrant is a type of the contract. type Warrant struct { // what it was about About string `json:"about,omitempty"` // the ask Ask string `json:"ask"` // the digest of the ask as the router took it AskDigest string `json:"ask-digest,omitempty"` // its asker Asker string `json:"asker"` // when, RFC 3339 At string `json:"at"` By *Person `json:"by,omitempty"` // the module it came through Channel string `json:"channel,omitempty"` // its label Label string `json:"label,omitempty"` // its level Level string `json:"level,omitempty"` // the option chosen Option string `json:"option,omitempty"` Outcome string `json:"outcome"` // the proofs present Proofs []string `json:"proofs,omitempty"` // why it ended without a choice, or what refused it Words string `json:"words,omitempty"` } // OpenInput is what open takes. type OpenInput struct { } // OpenAnswer is what open answers. type OpenAnswer = map[string]any // HistoryInput is what history takes. type HistoryInput struct { // at most this many of each (default 50) Limit int64 `json:"limit,omitempty"` } // HistoryAnswer is what history answers. type HistoryAnswer = map[string]any // NotifyInput is what notify takes. type NotifyInput struct { // it is over Clear bool `json:"clear,omitempty"` // one or two plain sentences Explanation string `json:"explanation,omitempty"` // plain words Headline string `json:"headline,omitempty"` // the message's key Key string `json:"key,omitempty"` // the line said when it is over Resolved string `json:"resolved,omitempty"` Severity string `json:"severity,omitempty"` // what it is about Subject string `json:"subject,omitempty"` // one line Summary string `json:"summary,omitempty"` } // NotifyAnswer is what notify answers. type NotifyAnswer = map[string]any // TellInput is what tell takes. type TellInput struct { // plain words Headline string `json:"headline,omitempty"` // one or two plain lines Lines []string `json:"lines,omitempty"` // what it is about Subject string `json:"subject,omitempty"` } // TellAnswer is what tell answers. type TellAnswer = map[string]any // AsksInput is what asks takes. type AsksInput struct { } // AsksAnswer is what asks answers. type AsksAnswer = map[string]any // AskAccept is the body of ask. type AskAccept = Ask // CancelAccept is the body of cancel. type CancelAccept struct { // the ask's id ID string `json:"id"` } // ConditionAccept is the body of condition. type ConditionAccept = Condition // DecidedEvent is the body of the event decided. type DecidedEvent = Warrant // OfferedHolderEvent is the body of the holder's event offered. type OfferedHolderEvent struct { // its asker Asker string `json:"asker"` // the channels it was offered on Channels []string `json:"channels,omitempty"` // its headline Headline string `json:"headline,omitempty"` // the ask's id ID string `json:"id"` } // ClosedHolderEvent is the body of the holder's event closed. type ClosedHolderEvent struct { // its asker Asker string `json:"asker"` How string `json:"how"` // the ask's id ID string `json:"id"` } // AsksRecord is one value of the record asks. type AsksRecord = map[string]any