go/seal and its TypeScript twin @novox/mesh-sdk/seal are the ADR 0206 box the licence manager kept to itself. Fixtures made by the licence manager's own seal.go prove both byte for byte, in both directions. (Replaces the placeholder README the branch's first commit carried by mistake.) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
2.0 KiB
Markdown
20 lines
2.0 KiB
Markdown
# mesh-sdk for Go
|
|
|
|
`stdio.Serve("", tools)` speaks MCP over stdio to the node's tool runtime, as the module the runtime
|
|
names (novox/hq ADR 0188, ADR 0193). A `Tool` is a name, a description, an argument schema and a
|
|
function; calls run concurrently. `stdio.CallerOf(args)` inside a tool is who called it: the bus user the runtime took from the subject the call arrived on, named in the call's `_meta`, never read from the arguments — or `stdio.Unproven` when the runtime named none (novox/hq issue 365). A tool named `<seat>.<verb>` is the seat's implementation.
|
|
`stdio.Emit(type, body)` publishes an event as the module, `stdio.Subscribe(pattern, handler)` receives the module's events (taken when the handler returns nil, offered again when it returns an error — the one rule is in the repository README, "Taking an event") and `stdio.Ask(key, body)` calls a tool, and `stdio.State(name)` gets, puts, deletes, lists, watches and reads the kept history of the module's declared state, and `stdio.Log(name)` appends to, reads, and measures a log of operations the module declared — all through the runtime (novox/hq ADR 0193, 0198, 0201, 0297, 0307). Standard library only.
|
|
|
|
## Installing
|
|
|
|
```
|
|
GOPRIVATE=git.novox.be go get git.novox.be/novox/mesh-sdk/go@latest
|
|
```
|
|
|
|
Releases are tagged `go/vX.Y.Z` in this repository, the subdirectory form Go's module system expects,
|
|
at the same version as the TypeScript package.
|
|
|
|
What it holds, under ADR 0039's test: the stdio loop and the tool type, and `cli`, the local protocol
|
|
`mesh-cli` speaks to the node-engine on its machine (novox/hq ADR 0272): the socket's path and one request and one
|
|
answer; and `seal`, the mesh's sealed box (novox/hq ADR 0206: X25519, HKDF-SHA256, AES-256-GCM, `{v, eph, iv, tag, ct}`), byte for byte the box the licence manager made before it lived here and the TypeScript `@novox/mesh-sdk/seal` makes. Nothing else — no bus, no client, nothing of any module's. `go build ./example` and pipe a `tools/list` request into it.
|