From d7b330e6ddd2c944b7f6c30f1288efb7d530066c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 4 Dec 2023 22:25:40 +0100 Subject: [PATCH 1/2] stdenv.prs --- schema-bundle.bin | 6 +++++- schemas/stdenv.prs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 schemas/stdenv.prs diff --git a/schema-bundle.bin b/schema-bundle.bin index 3fe50c6..12c6b90 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -18,7 +18,11 @@ TraceEntry ExitStatus„„„„„„„„³FacetStopReason“³orµµ±explicitAction“³lit³explicit-action„„µ±inert“³lit³inert„„µ±parentStopping“³lit³parent-stopping„„µ± actorStopping“³lit³actor-stopping„„„„³TurnDescription“³rec“³lit³turn„“³tupleµ“³named³id“³refµ„³TurnId„„“³named³cause“³refµ„³ TurnCause„„“³named³actions“³seqof“³refµ„³ActionDescription„„„„„„³ActionDescription“³orµµ±dequeue“³rec“³lit³dequeue„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±enqueue“³rec“³lit³enqueue„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±dequeueInternal“³rec“³lit³dequeue-internal„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±enqueueInternal“³rec“³lit³enqueue-internal„“³tupleµ“³named³event“³refµ„³TargetedTurnEvent„„„„„„µ±spawn“³rec“³lit³spawn„“³tupleµ“³named³link“³atom³Boolean„„“³named³id“³refµ„³ActorId„„„„„„µ±link“³rec“³lit³link„“³tupleµ“³named³ parentActor“³refµ„³ActorId„„“³named³ childToParent“³refµ³protocol„³Handle„„“³named³ childActor“³refµ„³ActorId„„“³named³ parentToChild“³refµ³protocol„³Handle„„„„„„µ± facetStart“³rec“³lit³ facet-start„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„„„„„µ± facetStop“³rec“³lit³ -facet-stop„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„“³named³reason“³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart“³rec“³lit³linked-task-start„“³tupleµ“³named³taskName“³refµ„³Name„„“³named³id“³refµ„³TaskId„„„„„„„„³TargetedTurnEvent“³rec“³lit³event„“³tupleµ“³named³target“³refµ„³Target„„“³named³detail“³refµ„³ TurnEvent„„„„„³AssertionDescription“³orµµ±value“³rec“³lit³value„“³tupleµ“³named³value³any„„„„„µ±opaque“³rec“³lit³opaque„“³tupleµ“³named³ description³any„„„„„„„³LinkedTaskReleaseReason“³orµµ± cancelled“³lit³ cancelled„„µ±normal“³lit³normal„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³stream„“³schema·³version°³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ +facet-stop„“³tupleµ“³named³path“³seqof“³refµ„³FacetId„„„“³named³reason“³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart“³rec“³lit³linked-task-start„“³tupleµ“³named³taskName“³refµ„³Name„„“³named³id“³refµ„³TaskId„„„„„„„„³TargetedTurnEvent“³rec“³lit³event„“³tupleµ“³named³target“³refµ„³Target„„“³named³detail“³refµ„³ TurnEvent„„„„„³AssertionDescription“³orµµ±value“³rec“³lit³value„“³tupleµ“³named³value³any„„„„„µ±opaque“³rec“³lit³opaque„“³tupleµ“³named³ description³any„„„„„„„³LinkedTaskReleaseReason“³orµµ± cancelled“³lit³ cancelled„„µ±normal“³lit³normal„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³stdenv„“³schema·³version°³ definitions·³ StandardRoute“³orµµ±standard“³ tuplePrefixµ“³named³ +transports“³seqof“³refµ„³StandardTransport„„„“³named³key“³atom³ +ByteString„„“³named³service³any„“³named³sig“³atom³ +ByteString„„“³named³oid³any„„“³named³caveats“³seqof“³refµ³sturdy„³Caveat„„„„„µ±general“³refµ³ +gatekeeper„³Route„„„„³StandardTransport“³orµµ±wsUrl“³atom³String„„µ±other³any„„„„³ embeddedType€„„µ³stream„“³schema·³version°³ definitions·³Mode“³orµµ±bytes“³lit³bytes„„µ±lines“³refµ„³LineMode„„µ±packet“³rec“³lit³packet„“³tupleµ“³named³size“³atom³ SignedInteger„„„„„„µ±object“³rec“³lit³object„“³tupleµ“³named³ description³any„„„„„„„³Sink“³orµµ±source“³rec“³lit³source„“³tupleµ“³named³ controller“³embedded“³refµ„³Source„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±data“³rec“³lit³data„“³tupleµ“³named³payload³any„“³named³mode“³refµ„³Mode„„„„„„µ±eof“³rec“³lit³eof„“³tupleµ„„„„„„³Source“³orµµ±sink“³rec“³lit³sink„“³tupleµ“³named³ controller“³embedded“³refµ„³Sink„„„„„„„µ± StreamError“³refµ„³ StreamError„„µ±credit“³rec“³lit³credit„“³tupleµ“³named³amount“³refµ„³ CreditAmount„„“³named³mode“³refµ„³Mode„„„„„„„„³LineMode“³orµµ±lf“³lit³lf„„µ±crlf“³lit³crlf„„„„³ StreamError“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„„„„³ CreditAmount“³orµµ±count“³atom³ SignedInteger„„µ± unbounded“³lit³ unbounded„„„„³StreamConnection“³rec“³lit³stream-connection„“³tupleµ“³named³source“³embedded“³refµ„³Source„„„“³named³sink“³embedded“³refµ„³Sink„„„“³named³spec³any„„„„³StreamListenerError“³rec“³lit³stream-listener-error„“³tupleµ“³named³spec³any„“³named³message“³atom³String„„„„„³StreamListenerReady“³rec“³lit³stream-listener-ready„“³tupleµ“³named³spec³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³sturdy„“³schema·³version°³ definitions·³Lit“³rec“³lit³lit„“³tupleµ“³named³value³any„„„„³Oid“³atom³ SignedInteger„³Alts“³rec“³lit³or„“³tupleµ“³named³ alternatives“³seqof“³refµ„³Rewrite„„„„„„³PAnd“³rec“³lit³and„“³tupleµ“³named³patterns“³seqof“³refµ„³Pattern„„„„„„³PNot“³rec“³lit³not„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³TRef“³rec“³lit³ref„“³tupleµ“³named³binding“³atom³ SignedInteger„„„„„³PAtom“³orµµ±Boolean“³lit³Boolean„„µ±Float“³lit³Float„„µ±Double“³lit³Double„„µ± SignedInteger“³lit³ SignedInteger„„µ±String“³lit³String„„µ± ByteString“³lit³ diff --git a/schemas/stdenv.prs b/schemas/stdenv.prs new file mode 100644 index 0000000..ecc5790 --- /dev/null +++ b/schemas/stdenv.prs @@ -0,0 +1,31 @@ +version 1 . + +# A "standard" route is +# +# - a collection of websocket urls, for transport. +# - a noise tunnel, for server authentication, confidentiality and integrity. +# - a macaroon, for authorization. +# +# Making these choices allows a compact representation. Encoding a binary-syntax representation +# of a standard route using base64 produces a somewhat-convenient blob of text representing +# access to a network object that users can cut and paste. +# +# A `stdenv.StandardRoute.standard` can be rewritten to a `gatekeeper.Route` like this (with +# `$caveats`, if any, added as appropriate): +# +# > +# +StandardRoute = +/ @standard [@transports [StandardTransport ...] + @key bytes + @service any + @sig bytes + @oid any + @caveats sturdy.Caveat ...] +/ @general gatekeeper.Route +. + +StandardTransport = +/ @wsUrl string +/ @other any +. From 97876335ba8d37575e17481be6bdc40a1bd4959d Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 19 Dec 2023 21:37:41 +1300 Subject: [PATCH 2/2] Save a few bytes on the wire. If not now, never I guess --- schema-bundle.bin | 2 +- schemas/protocol.prs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 12c6b90..fc747ff 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -38,7 +38,7 @@ Parameters Parameters„³SturdyDescriptionDetail“³dict·³key“³named³key“³atom³ ByteString„„³oid“³named³oid³any„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version°³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version°³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ RunService“³rec“³lit³ run-service„“³tupleµ“³named³ serviceName³any„„„„³ ServiceState“³rec“³lit³ service-state„“³tupleµ“³named³ serviceName³any„“³named³state“³refµ„³State„„„„„³ ServiceObject“³rec“³lit³service-object„“³tupleµ“³named³ serviceName³any„“³named³object³any„„„„³RequireService“³rec“³lit³require-service„“³tupleµ“³named³ serviceName³any„„„„³RestartService“³rec“³lit³restart-service„“³tupleµ“³named³ serviceName³any„„„„³ServiceDependency“³rec“³lit³ -depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version°³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³sync„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version°³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ +depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version°³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³S„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³A„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³M„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³R„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version°³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ gatekeeper„“³schema·³version°³ definitions·³Bind“³rec“³lit³bind„“³tupleµ“³named³ description“³refµ„³ Description„„“³named³target“³embedded³any„„“³named³observer“³refµ„³ BindObserver„„„„„³Step“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³Bound“³orµµ±bound“³rec“³lit³bound„“³tupleµ“³named³pathStep“³refµ„³PathStep„„„„„„µ±Rejected“³refµ„³Rejected„„„„³Route“³rec“³lit³route„“³ tuplePrefixµ“³named³ transports“³seqof³any„„„“³named³ pathSteps“³seqof“³refµ„³PathStep„„„„„³Resolve“³rec“³lit³resolve„“³tupleµ“³named³step“³refµ„³Step„„“³named³observer“³embedded“³refµ„³Resolved„„„„„„³PathStep“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³Rejected“³rec“³lit³rejected„“³tupleµ“³named³detail³any„„„„³Resolved“³orµµ±accepted“³rec“³lit³accepted„“³tupleµ“³named³responderSession“³embedded³any„„„„„„µ±Rejected“³refµ„³Rejected„„„„³ Description“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³ ResolvePath“³rec“³lit³ resolve-path„“³tupleµ“³named³route“³refµ„³Route„„“³named³addr³any„“³named³control“³embedded“³refµ„³TransportControl„„„“³named³resolved“³refµ„³Resolved„„„„„³ BindObserver“³orµµ±present“³embedded“³refµ„³Bound„„„µ±absent“³lit€„„„„³ForceDisconnect“³rec“³lit³force-disconnect„“³tupleµ„„„³ResolvedPathStep“³rec“³lit³ path-step„“³tupleµ“³named³origin“³embedded“³refµ„³Resolve„„„“³named³pathStep“³refµ„³PathStep„„“³named³resolved“³refµ„³Resolved„„„„„³TransportControl“³refµ„³ForceDisconnect„³TransportConnection“³rec“³lit³connect-transport„“³tupleµ“³named³addr³any„“³named³control“³embedded“³refµ„³TransportControl„„„“³named³resolved“³refµ„³Resolved„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³transportAddress„“³schema·³version°³ definitions·³Tcp“³rec“³lit³tcp„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³Unix“³rec“³lit³unix„“³tupleµ“³named³path“³atom³String„„„„„³Stdio“³rec“³lit³stdio„“³tupleµ„„„³ WebSocket“³rec“³lit³ws„“³tupleµ“³named³url“³atom³String„„„„„„³ embeddedType€„„µ³dataspacePatterns„“³schema·³version°³ definitions·³DLit“³rec“³lit³lit„“³tupleµ“³named³value“³refµ„³AnyAtom„„„„„³DBind“³rec“³lit³bind„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³AnyAtom“³orµµ±bool“³atom³Boolean„„µ±float“³atom³Float„„µ±double“³atom³Double„„µ±int“³atom³ SignedInteger„„µ±string“³atom³String„„µ±bytes“³atom³ ByteString„„µ±symbol“³atom³Symbol„„µ±embedded“³embedded³any„„„„³Pattern“³orµµ±DDiscard“³refµ„³DDiscard„„µ±DBind“³refµ„³DBind„„µ±DLit“³refµ„³DLit„„µ± DCompound“³refµ„³ DCompound„„„„³DDiscard“³rec“³lit³_„“³tupleµ„„„³ DCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Pattern„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Pattern„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„„„ \ No newline at end of file diff --git a/schemas/protocol.prs b/schemas/protocol.prs index 88a5906..449d6aa 100644 --- a/schemas/protocol.prs +++ b/schemas/protocol.prs @@ -13,7 +13,7 @@ Oid = int . Turn = [TurnEvent ...]. TurnEvent = [@oid Oid @event Event]. -Assert = . -Retract = . -Message = . -Sync = . +Assert = . +Retract = . +Message = . +Sync = .