Skip to content

await with selectors #32

@Gozala

Description

@Gozala

We have discussed this in side channel, but I wanted to capture in the issue so it's available for others to followup on.

I have proposed that we replace await/ok, await/error, await/* custom promise pipelining operators with combination of general ucan/await that can work with jq like selectors that are been introduces into UCAN spec here ucan-wg/delegation#5

Expectation is that selectors will behave as described in the table, if task selector result in output marked as ⛔️ (per table in the linked issue) failure supposed to propagate. Otherwise arguments supposed to substituted with the output of the selector.

Here is a proposed syntax for invocation spec

type Await union {
   AwaitOperand   "ucan/await"
} representation keyed

type AwaitOperand struct {
  selector String
  source   Any    
} representation tuple

here is example from the spec

{
  "bafy...getMailingList": {
    "sub": "did:key:zAlice",
    "cmd": "crud/read",
    "args": {
        "url": "https://exmaple.com/mailinglist"
     }
  },
  "bafy...sendEmail": {
    "sub": "did:key:zAlice",
    "cmd": "msg/send",
    "args": {
      "email": "[email protected]",
      "to": { "ucan/await": [".out.ok.email", { "/": "bafy...getMailingList" }] }
      "title": "hello",
      "body": "world"
    }
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions