diff --git a/sur/talk.hoon b/sur/talk.hoon index 15d3ae5e4e..07f6760d35 100644 --- a/sur/talk.hoon +++ b/sur/talk.hoon @@ -2,119 +2,154 @@ :::: /hoon/talk/sur !: |% -++ audience (map partner (pair envelope delivery)) :: destination+state -++ atlas (map ship status) :: presence map -++ bouquet (set flavor) :: complete aroma -++ command :: effect on party - $% {$review (list thought)} :: deliver - == :: -++ action :: user action +:: +::TODO station -> circle +:: +::> || +::> || %reader-communication +::> || +::> broker interfaces for readers. +::+| +:: +++ action ::> user action $% :: station configuration :: - {$create (trel knot cord posture)} :: create station - {$source (trel knot ? (set partner))} :: un/sub p to/from r - {$depict (pair knot cord)} :: change description - {$permit (trel knot ? (set ship))} :: invite/banish - {$delete (pair knot (unit @t))} :: delete + announce + {$create (trel knot cord posture)} ::< create station + {$source (trel knot ? (set partner))} ::< un/sub p to/from r + {$depict (pair knot cord)} ::< change description + {$permit (trel knot ? (set ship))} ::< invite/banish + {$delete (pair knot (unit cord))} ::< delete + announce :: messaging :: - {$convey (list thought)} :: post exact - {$phrase (pair (set partner) (list speech))} :: post easy + {$convey (list thought)} ::< post exact + {$phrase (pair (set partner) (list speech))} ::< post easy :: personal metadata :: ::TODO change to target partners, not only our stations. - {$status (pair (set knot) status)} :: our status update + {$status (pair (set knot) status)} ::< our status update :: changing shared ui :: - {$human (pair ship human)} :: new identity - {$glyph (trel char (set partner) ?)} :: un/bind a glyph + {$human (pair ship human)} ::< new identity + {$glyph (trel char (set partner) ?)} ::< un/bind a glyph == :: -++ reaction :: user information - $: kind/?($info $fail) :: result - what/@t :: explain - why/(unit action) :: cause +++ reaction ::> user information + $: kind/?($info $fail) ::< result + what/@t ::< explain + why/(unit action) ::< cause == :: -++ cabal :: metaconfiguration - $: loc/config :: local config - ham/(map station config) :: neighborhood configs - == :: -++ config :: party configuration - $: sources/(set partner) :: pulls from - caption/cord :: about - cordon/control :: restricted to - == :: -++ control (pair posture (set ship)) :: access control -++ delivery :: delivery state - $? $pending :: undelivered - $received :: delivered - $rejected :: undeliverable - $released :: sent one-way - $accepted :: fully processed - == :: -++ envelope (pair ? (unit partner)) :: visible sender -++ flavor path :: content flavor -++ human :: human identifier - $: true/(unit (trel @t (unit @t) @t)) ::TODO used? true name - hand/(unit @t) :: handle - == :: -++ passport :: foreign flow - $% {$twitter p/@t} :: twitter - == :: -++ posture :: security posture - $? $black :: channel, blacklist - $white :: village, whitelist - $green :: journal, author list - $brown :: mailbox, our r, bl w - == :: -++ presence ?($gone $hear $talk) :: status type -++ register (pair atlas (map partner atlas)) :: ping me, ping srcs -++ shelf (map knot (pair posture cord)) :: ship shape -++ report :: talk update - $% {$cabal cabal} :: config neighborhood - {$grams (pair @ud (list telegram))} :: thoughts - {$group register} :: presence - == :: -++ lowdown :: changed shared state +++ lowdown ::> new/changed state $% :: story state :: - {$confs (unit config) (map station (unit config))}:: changed configs - {$precs register} :: changed presences - {$grams (pair @ud (list telegram))} :: new grams + {$confs (unit config) (map station (unit config))}::< configs + {$precs register} ::< presences + {$grams (pair @ud (list telegram))} ::< messages :: ui state :: - {$glyph (jug char (set partner))} :: new bindings - {$names (map ship (unit human))} :: new identities + {$glyph (jug char (set partner))} ::< glyph bindings + {$names (map ship (unit human))} ::< nicknames == :: -++ speech :: narrative action - $% {$lan p/knot q/@t} :: local announce - {$exp p/@t} :: hoon line - {$non $~} :: no content (yo) - ::TODO so, this is extensibility tacked on, rather than built-in? - :: really, talk has been two-split but the guardian is still two - :: things at once. you want base-guardian and talk-guardian. - :: ...that's probably what %gall is, but then why do we have $ext? - {$ext p/@tas q/*} :: extended action - {$fat p/torso q/speech} :: attachment - {$inv p/? q/station} :: inv/ban for station - {$url p/purf} :: parsed url - {$ire p/serial q/speech} :: in-reply-to - {$lin p/? q/@t} :: no/@ text line - {$mor p/(list speech)} :: multiplex - {$app p/@tas q/@t} :: app message - $: $api :: api message - service/@tas :: service name - id/@t :: id on the service - id-url/purf :: link to id - summary/@t :: summary of event - body/@t :: body of event - url/purf :: link to event - meta/json :: other data for web +:: +::> || +::> || %broker-communication +::> || +::> structures for communicating between brokers. +::+| +:: +++ command ::> effect on story + $% {$review (list thought)} ::< deliver + == :: +++ report ::> update + $% {$cabal cabal} ::< config neighborhood + {$group register} ::< presence + {$grams (pair @ud (list telegram))} ::< thoughts + == :: +:: +::> || +::> || %circles +::> || +::> messaging targets and their metadata. +::+| +:: +++ partner (each station passport) ::< message target +++ station (pair ship knot) ::< native target +++ passport ::> foreign target + $% {$twitter p/@t} ::< twitter handle + == :: +::> circle configurations. +++ cabal ::> metaconfiguration + $: loc/config ::< local config + ham/(map station config) ::< neighborhood configs + == :: +++ config ::> station config + $: sources/(set partner) ::< pulls from + caption/cord ::< description + cordon/control ::< restrictions + == :: +++ control (pair posture (set ship)) ::< access control +++ posture ::> security kind + $? $black ::< channel, blacklist + $white ::< village, whitelist + $green ::< journal, author list + $brown ::< mailbox, our r, bl w + == :: +::> participant metadata. +++ register (pair atlas (map partner atlas)) ::< our & srcs presences +++ atlas (map ship status) ::< presence map +++ status (pair presence human) ::< participant +++ presence ?($gone $hear $talk) ::< status type +++ human ::> human identifier + $: true/(unit (trel @t (unit @t) @t)) :: || +::> || %message-data +::> || +::> structures for containing main message data. +::+| +:: +++ telegram (pair ship thought) ::< who thought +++ thought (trel serial audience statement) ::< which whom what +++ statement (trel @da bouquet speech) ::< when this +++ speech ::> narrative action + $% {$non $~} ::< no content (yo) + {$lin p/? q/@t} ::< no/@ text line + {$ire p/serial q/speech} ::< in-reply-to + {$url p/purf} ::< parsed url + {$exp p/@t} ::< hoon line + {$fat p/torso q/speech} ::< attachment + {$lan p/knot q/@t} ::< local announce + {$inv p/? q/station} ::< inv/ban for station + {$mor p/(list speech)} ::< multiplex + {$ext p/@tas q/*} ::< extended action + {$app p/@tas q/@t} ::< app message + $: $api ::< api message + service/@tas ::< service name + id/@t ::< id on the service + id-url/purf ::< link to id + summary/@t ::< summary of event + body/@t ::< body of event + url/purf ::< link to event + meta/json ::< other data for web == :: == :: -++ serial @uvH :: unique identity -++ partner (each station passport) :: interlocutor -++ status (pair presence human) :: participant -++ statement (trel @da bouquet speech) :: when this -++ station (pair ship knot) :: domestic flow -++ telegram (pair ship thought) :: who which whom what -++ thought (trel serial audience statement) :: which whom what -++ torso :: attachment - $% {$name (pair @t torso)} :: named attachment - {$text (list @t)} :: text lines - {$tank (list tank)} :: tank list +++ torso ::> attachment + $% {$name (pair @t torso)} ::< named attachment + {$text (list @t)} ::< text lines + {$tank (list tank)} ::< tank list == :: +:: +::> || +::> || %message-metadata +::> || +:: structures for containing message metadata. +::+| +:: +++ serial @uvH ::< unique identifier +++ audience (map partner (pair envelope delivery)) ::< destination + state +++ envelope (pair ? (unit partner)) ::< visible sender +++ delivery ::> delivery state + $? $pending ::< undelivered + $received ::< delivered + $rejected ::< undeliverable + $released ::< sent one-way + $accepted ::< fully processed + == :: +::TODO what is ++bouquet even for? not yet used... +++ bouquet (set flavor) ::< complete aroma +++ flavor path ::< content flavor --