mesh-cli holds no credential: it asks the node-engine on its own machine over a socket, and the node-engine reads the account from the kernel. The socket's path, the request and the answer are shared by the program and the node-engine, so they live here once (ADR 0039: a local protocol a module's program speaks to its runtime). The bus request the node-engine then makes is the transport's, and stays out of the SDK.
20 lines
1.3 KiB
Markdown
20 lines
1.3 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. 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 and watches the module's declared state — all through the runtime (novox/hq ADR 0193, 0198, 0201). 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. Nothing else — no bus, no client, nothing of any module's. `go build ./example` and pipe a `tools/list` request into it.
|