@network-harness/protocol-skills
v0.2.0
Published
Part of the network harness: @network-harness/protocol-skills.
Readme
@network-harness/protocol-skills
Each node holds instruction documents, advertises some of them, and a peer can ask for one to be applied to something.
A skill is a markdown file with a little front matter, because a skill is something a human writes and edits, and the part that makes it useful -- the prose -- is not data the harness has any business parsing. The front matter is the whole of what a peer may learn about it; the body is the method, and in mode 1 it never leaves the node.
Two modes, and the difference is where the skill runs.
Mode 1 runs it here. The caller sends its input, the owner hands the skill to its own model, and the answer comes back over the session the caller opened. The skill body stays home -- which is why this mode needs no joint computation -- and the caller's input does not, which is why it cannot be used on data the caller will not disclose.
Mode 2 runs it in a box both sides verify and neither owns. The caller
stakes its request and its own private sources, the owner stakes the skill, the
model, and the key that pays for it, and each side gets back only what it is
entitled to: the caller an answer, the owner the fact that a run happened.
Neither node's material passes through the other, and this protocol holds none
of it -- every step that touches material is an apply, and the box program is
proposed byte for byte so both sides approve the same bytes. The program is the
box's own canonical manifest, unchanged: it names which provider may see
plaintext and how much output comes back, and renaming a field of it would mean
proposing a program the box does not run.
| | |
| --------- | ------------------------------------------------------------------------------------------------------ |
| routes | POST /calls, GET /calls, GET /board, GET /skills |
| payloads | call.request, call.reply, call.failed, call.accepted, call.session |
| schedules | advertise 60s (presence), advance 2s (the box state machine), sweep 30s (terminate what stalled) |
| needs | any source (a mode 2 caller stakes what it consents to), the jc.* operations, with jc.submit gated |
| intents | skill -- picked only for something the board is offering right now |
library.ts is the skill files, calls.ts the durable records, index.ts the
state machine. Driving it by hand: devtools/README.md.
