Syndicate API update

This commit is contained in:
Emery Hemingway 2023-10-21 19:03:11 +01:00
parent d5bdd3baf9
commit aea55969bb
11 changed files with 28 additions and 61 deletions

View File

@ -16,8 +16,7 @@ A utility for minting [Sturdyrefs](https://synit.org/book/operation/builtin/gate
## msg
A utility that sends a message to `$SYNDICATE_SOCK` in the form `<ARGV0 ARG1 … ARGVn>`.
The `$SYNDICATE_STEP` variables sets the SturdyRef capability with a default to the SturdyRef generated by `<ref { oid: "syndicate" key: #x"" }>`.
A utility that sends messages to `$SYNDICATE_ROUTE`.
## net_mapper
@ -52,7 +51,7 @@ It can be used to feed the environment variables of a nested child of the Syndic
## syndump
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects to `$SYNDICATE_SOCK`, authenticates with the SturdyRef at `$SYNDICATE_STEP`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`.
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects a dataspace via `$SYNDICATE_ROUTE`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`.
Example
```sh

View File

@ -1,3 +1,2 @@
include_rules
: |> !nim_lk |> | ./<lock>
: lock.json |> !nim_cfg |> | ./<lock>

View File

@ -1 +1 @@
{"depends":[{"method":"fetchzip","packages":["nimcrypto"],"path":"/nix/store/zyr8zwh7vaiycn1s4r8cxwc71f2k5l0h-source","ref":"traditional-api","rev":"602c5d20c69c76137201b5d41f788f72afb95aa8","sha256":"1dmdmgb6b9m5f8dyxk781nnd61dsk3hdxqks7idk9ncnpj9fng65","srcDir":"","url":"https://github.com/cheatfate/nimcrypto/archive/602c5d20c69c76137201b5d41f788f72afb95aa8.tar.gz"},{"method":"fetchzip","packages":["illwill"],"path":"/nix/store/3lmm3z36qn4gz7bfa209zv0pqrpm3di9-source","ref":"v0.3.2","rev":"1d12cb36ab7b76c31d2d25fa421013ecb382e625","sha256":"0f9yncl5gbdja18mrqf5ixrdgrh95k0khda923dm1jd1x1b7ar8z","srcDir":"","url":"https://github.com/johnnovak/illwill/archive/1d12cb36ab7b76c31d2d25fa421013ecb382e625.tar.gz"},{"method":"fetchzip","packages":["syndicate"],"path":"/nix/store/008s11kkqscfqxs6g29q77c38pnrlppi-source","ref":"20231005","rev":"552e51899c82c0c2f4f466382be7d8e22a1da689","sha256":"1j3k0zlh5z02adhfvb7rdqz8fjzc6gri4v3v1fgcv2h2b7vrf0dg","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/552e51899c82c0c2f4f466382be7d8e22a1da689.tar.gz"},{"method":"fetchzip","packages":["hashlib"],"path":"/nix/store/v03nzlpdgbfxd2zhcnkfbkq01d5kqxcl-source","rev":"84e0247555e4488594975900401baaf5bbbfb53","sha256":"1pfczsv8kl36qpv543f93d2y2vgz2acckssfap7l51s2x62m6qwx","srcDir":"","url":"https://github.com/khchen/hashlib/archive/84e0247555e4488594975900401baaf5bbbfb53.tar.gz"},{"method":"fetchzip","packages":["preserves"],"path":"/nix/store/vx6ihnickx7d5lwy69i8k7fsjicv33r3-source","ref":"20230914","rev":"c915accf7d2a36ca1f323e2f02e2df7375e815f1","sha256":"11rlcbs9mvk335ibkbj8fk9aslhmnlaiqhcsjpp5n04k447sr7nx","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/preserves-nim/archive/c915accf7d2a36ca1f323e2f02e2df7375e815f1.tar.gz"},{"method":"fetchzip","packages":["npeg"],"path":"/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source","ref":"1.2.1","rev":"26d62fdc40feb84c6533956dc11d5ee9ea9b6c09","sha256":"0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh","srcDir":"src","url":"https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"}]}
{"depends":[{"method":"fetchzip","packages":["hashlib"],"path":"/nix/store/v03nzlpdgbfxd2zhcnkfbkq01d5kqxcl-source","rev":"84e0247555e4488594975900401baaf5bbbfb53","sha256":"1pfczsv8kl36qpv543f93d2y2vgz2acckssfap7l51s2x62m6qwx","srcDir":"","url":"https://github.com/khchen/hashlib/archive/84e0247555e4488594975900401baaf5bbbfb53.tar.gz"},{"method":"fetchzip","packages":["illwill"],"path":"/nix/store/3lmm3z36qn4gz7bfa209zv0pqrpm3di9-source","ref":"v0.3.2","rev":"1d12cb36ab7b76c31d2d25fa421013ecb382e625","sha256":"0f9yncl5gbdja18mrqf5ixrdgrh95k0khda923dm1jd1x1b7ar8z","srcDir":"","url":"https://github.com/johnnovak/illwill/archive/1d12cb36ab7b76c31d2d25fa421013ecb382e625.tar.gz"},{"method":"fetchzip","packages":["nimcrypto"],"path":"/nix/store/zyr8zwh7vaiycn1s4r8cxwc71f2k5l0h-source","ref":"traditional-api","rev":"602c5d20c69c76137201b5d41f788f72afb95aa8","sha256":"1dmdmgb6b9m5f8dyxk781nnd61dsk3hdxqks7idk9ncnpj9fng65","srcDir":"","url":"https://github.com/cheatfate/nimcrypto/archive/602c5d20c69c76137201b5d41f788f72afb95aa8.tar.gz"},{"method":"fetchzip","packages":["npeg"],"path":"/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source","ref":"1.2.1","rev":"26d62fdc40feb84c6533956dc11d5ee9ea9b6c09","sha256":"0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh","srcDir":"src","url":"https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"},{"method":"fetchzip","packages":["preserves"],"path":"/nix/store/nrcpzf9hx70kry3gwhrdzcs3qicjncjh-source","ref":"20231021","rev":"edece399be70818208bf2263c30cb2bcf435bbff","sha256":"0xmw35wmw3a4lja9q4qvlvpxv3xk0hnkjg4fwfw6f3inh6zfiqki","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/preserves-nim/archive/edece399be70818208bf2263c30cb2bcf435bbff.tar.gz"},{"method":"fetchzip","packages":["syndicate"],"path":"/nix/store/1y3nnpp2mhxqmdb3xh4c4k5k5l9hhqk3-source","ref":"20231019","rev":"57b99b20e7db1b97b1cb9c6df574bd13983c26fc","sha256":"1kgb3a78igs37xkmv8cbaxa17qdjf2h43vdmpda517c9086ggsn5","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/57b99b20e7db1b97b1cb9c6df574bd13983c26fc.tar.gz"}]}

View File

@ -71,7 +71,7 @@ iterator symbols(event: uint32): Symbol =
runActor("inotify_actor") do (root: Cap; turn: var Turn):
let buf = newSeq[byte](8192)
let eventPattern = ?Observe(pattern: !InotifyMessage) ?? { 0: grabLit(), 1: grabLit() }
connectStdio(root, turn)
connectStdio(turn, root)
during(turn, root, ?BootArgs) do (ds: Cap):
let inf = inotify_init1(IN_NONBLOCK)
doAssert inf != -1, $inf & " - " & $strerror(errno)

View File

@ -8,7 +8,7 @@ import preserves, preserves/jsonhooks, syndicate, syndicate/relays
import ./schema/config, ./json_messages
runActor("main") do (root: Cap; turn: var Turn):
connectStdio(root, turn)
connectStdio(turn, root)
during(turn, root, ?JsonSocketTranslatorArguments) do (ds: Cap, socketPath: string):
let socket = newAsyncSocket(
domain = AF_UNIX,

View File

@ -7,7 +7,7 @@ import syndicate, syndicate/relays
from preserves/jsonhooks import toPreserveHook
import ./schema/config, ./json_messages
import ./json_messages
proc runChild: string =
let params = commandLineParams()
@ -25,7 +25,7 @@ proc runChild: string =
quit 1
runActor("main") do (ds: Cap; turn: var Turn):
connectStdio(ds, turn)
connectStdio(turn, ds)
let js = runChild().parseJson()
message(turn, ds, RecvJson(data: js))
discard publish(turn, ds, RecvJson(data: js))

View File

@ -2,29 +2,18 @@
# SPDX-License-Identifier: Unlicense
import std/[asyncdispatch, sequtils, os]
import preserves, syndicate, syndicate/[capabilities, relays]
proc unixSocketPath: Unix =
result.path = getEnv("SYNDICATE_SOCK")
if result.path == "":
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
proc envStep: Assertion =
var s = getEnv("SYNDICATE_STEP")
if s != "": parsePreserves(s, Cap)
else: capabilities.mint().toPreserve(Cap)
import preserves, syndicate, syndicate/relays
proc main =
let
step = envStep()
label = getAppFilename().extractFilename
route = envRoute()
data = map(commandLineParams(), parsePreserves)
discard bootDataspace(label) do (root: Cap; turn: var Turn):
connect(turn, unixSocketPath(), step) do (turn: var Turn; ds: Cap):
message(turn, ds, initRecord(label, data))
discard bootDataspace("msg") do (turn: var Turn; root: Cap):
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
for e in data:
message(turn, ds, e)
for _ in 1..4: poll()
quit()
main()

View File

@ -155,7 +155,7 @@ type Args {.preservesDictionary.} = object
dataspace: Cap
runActor("net_mapper") do (root: Cap; turn: var Turn):
connectStdio(root, turn)
connectStdio(turn, root)
let rttObserver = ?Observe(pattern: !RoundTripTime) ?? {0: grabLit()}
during(turn, root, ?Args) do (ds: Cap):
during(turn, ds, rttObserver) do (address: IpAddress):

View File

@ -5,19 +5,9 @@
import std/[asyncdispatch, os, terminal]
import preserves
import syndicate, syndicate/[capabilities, durings, relays]
import syndicate, syndicate/[durings, relays]
import illwill
proc unixSocketPath: Unix =
result.path = getEnv("SYNDICATE_SOCK")
if result.path == "":
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
proc envStep: Assertion =
var s = getEnv("SYNDICATE_STEP")
if s != "": parsePreserves(s, Cap)
else: capabilities.mint().toPreserve(Cap)
proc exitProc() {.noconv.} =
illwillDeinit()
showCursor()
@ -110,16 +100,15 @@ setControlCHook(exit)
proc main =
let
unix = unixSocketPath()
step = envStep()
route = envRoute()
pat = inputPattern()
if stdout.is_a_TTY:
illwillInit()
hideCursor()
discard bootDataspace("syndex_card") do (ds: Cap; turn: var Turn):
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
discard bootDataspace("syndex_card") do (turn: var Turn; root: Cap):
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
var termBuf = newTerminalBuffer(terminalWidth(), terminalHeight())
termBuf.write(1, 1, $pat, styleBright)
termBuf.drawHorizLine(1, termBuf.width(), 2)
@ -137,7 +126,7 @@ proc main =
else:
let entity = DumpEntity()
runActor("syndex_card") do (root: Cap; turn: var Turn):
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
discard observe(turn, ds, pat, entity)
main()

View File

@ -3,17 +3,8 @@
import std/[os, tables]
import preserves
import syndicate, syndicate/[capabilities, durings, relays]
proc unixSocketPath: Unix =
result.path = getEnv("SYNDICATE_SOCK")
if result.path == "":
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
proc envStep: Assertion =
var s = getEnv("SYNDICATE_STEP")
if s != "": parsePreserves(s, Cap)
else: capabilities.mint().toPreserve(Cap)
import syndicate,
syndicate/[durings, relays]
proc parsePattern(pr: Assertion): Pattern =
let
@ -74,13 +65,13 @@ proc exitProc() {.noconv.} =
proc main =
let
unix = unixSocketPath()
step = envStep()
route = envRoute()
pat = inputPattern()
entity = DumpEntity()
runActor("syndex_card") do (root: Cap; turn: var Turn):
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
discard observe(turn, ds, pat, entity)
discard observe(turn, root, pat, entity)
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
discard observe(turn, ds, pat, entity)
setControlCHook(exitProc)
main()

View File

@ -1,6 +1,6 @@
# Package
version = "20231010"
version = "20231021"
author = "Emery Hemingway"
description = "Utilites for Syndicated Actors and Synit"
license = "unlicense"
@ -10,4 +10,4 @@ bin = @["json_socket_translator", "json_translator", "mintsturdyref",
# Dependencies
requires "nim >= 1.6.6", "illwill", "syndicate >= 20230518"
requires "nim >= 1.6.6", "illwill", "syndicate >= 20231021"