Picolab / pico-engine

An implementation of the pico-engine hosted on node.js
http://picolabs.io/
MIT License
43 stars 8 forks source link

Raise an event when a DID exchange results in a connection being established #644

Open b1conrad opened 1 year ago

b1conrad commented 1 year ago

We need the dido library to raise an event at the moment when a DID exchange results in a connection being established. This needs to happen both for the pico receiving the invitation and the one that generated it. An application ruleset (that uses io.picolabs.did-o as a module) would react to this event and maintain a list of connections, on top of the didMap function that the did-o ruleset already provides (the app ruleset is not part of what is asked for here, but is the rationale).

Event attributes need to include

  1. the role of this pico (whether "inviter" or "invitee")
  2. the label from the invitation
  3. the DID that this pico is going to use going forward
  4. the DID that the other pico has communicated for use going forward
  5. anything else that is available and might be useful
b1conrad commented 1 year ago

On the invitee side of a new connection, it might suffice to add this to the receive_invite rule:

     }
     fired {
       raise dido event "send_trust_ping" attributes event:attrs.put("did", invite{"from"})
+      raise dido event "invitation_accepted" attributes {
+        "invite":invite, "my_did":new_did{"id"}
+      }
     }
   }

The dido:invitation_accepted event could then be selected by a rule (in another ruleset) that could obtain

  1. the role would be "invitee"
  2. the label would be event:attrs{["invite","label"]}
  3. the DID for this pico would be event:attrs{"my_did"}
  4. the DID for the other pico would be event:attrs{["invite","from"]}
  5. anything else out of event:attrs{"invite"}, such as perhaps the time when the invitation was created (computed as time:new(event:attrs{["invite","created_time"]}*1000))
joshmann35 commented 1 year ago

@b1conrad This is doable, and I'm in the process of implementing it.

b1conrad commented 1 year ago

Can we have a brief meeting, at your convenience, to talk through this? @joshmann35