Skip to content

Commit 3cc8ba0

Browse files
committed
use local copy of kinode.wit for docs.rs building
1 parent a0008b5 commit 3cc8ba0

File tree

3 files changed

+205
-5
lines changed

3 files changed

+205
-5
lines changed

.gitmodules

Lines changed: 0 additions & 4 deletions
This file was deleted.

kinode-wit

Lines changed: 0 additions & 1 deletion
This file was deleted.

kinode-wit/kinode.wit

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
//
2+
// kinode.wit, copied from https://github.com/kinode-dao/kinode-wit/tree/v0.8
3+
//
4+
5+
package kinode:process@0.8.0;
6+
7+
interface standard {
8+
//
9+
// System types:
10+
//
11+
12+
// JSON is passed over WASM boundary as a string.
13+
type json = string;
14+
15+
type node-id = string;
16+
17+
// Context, like a message body, is a protocol-defined serialized byte
18+
// array. It is used when building a Request to save information that
19+
// will not be part of a Response, in order to more easily handle
20+
// ("contextualize") that Response.
21+
type context = list<u8>;
22+
23+
record process-id {
24+
process-name: string,
25+
package-name: string,
26+
publisher-node: node-id,
27+
}
28+
29+
record package-id {
30+
package-name: string,
31+
publisher-node: node-id,
32+
}
33+
34+
record address {
35+
node: node-id,
36+
process: process-id,
37+
}
38+
39+
record lazy-load-blob {
40+
mime: option<string>,
41+
bytes: list<u8>,
42+
}
43+
44+
record request {
45+
// set in order to inherit lazy-load-blob from parent message, and if
46+
// expects-response is none, direct response to source of parent.
47+
// also carries forward certain aspects of parent message in kernel,
48+
// see documentation for formal spec and examples.
49+
inherit: bool,
50+
// if some, request expects a response in the given number of seconds
51+
expects-response: option<u64>,
52+
body: list<u8>,
53+
metadata: option<json>,
54+
capabilities: list<capability>,
55+
// to grab lazy-load-blob, use get_blob()
56+
}
57+
58+
record response {
59+
inherit: bool,
60+
body: list<u8>,
61+
metadata: option<json>,
62+
capabilities: list<capability>,
63+
// to grab lazy-load-blob, use get_blob()
64+
}
65+
66+
// A message can be a request or a response. within a response, there is
67+
// a result which surfaces any error that happened because of a request.
68+
// A successful response will contain the context of the request it
69+
// matches, if any was set.
70+
variant message {
71+
request(request),
72+
response(tuple<response, option<context>>),
73+
}
74+
75+
record capability {
76+
issuer: address,
77+
params: json,
78+
}
79+
80+
// On-exit is a setting that determines what happens when a process
81+
// panics, completes, or otherwise "ends". NOTE: requests should have
82+
// expects-response set to false, will always be set to that by kernel.
83+
variant on-exit {
84+
none,
85+
restart,
86+
requests(list<tuple<address, request, option<lazy-load-blob>>>),
87+
}
88+
89+
// Network errors come from trying to send a message to another node.
90+
// A message can fail by timing out, or by the node being entirely
91+
// unreachable (offline). In either case, the message is not delivered
92+
// and the process that sent it receives that message along with any
93+
// assigned context and/or lazy-load-blob, and is free to handle it as it
94+
// sees fit.
95+
record send-error {
96+
kind: send-error-kind,
97+
target: address,
98+
message: message,
99+
lazy-load-blob: option<lazy-load-blob>,
100+
}
101+
102+
enum send-error-kind {
103+
offline,
104+
timeout,
105+
}
106+
107+
enum spawn-error {
108+
name-taken,
109+
no-file-at-path,
110+
}
111+
112+
//
113+
// System utils:
114+
//
115+
116+
print-to-terminal: func(verbosity: u8, message: string);
117+
118+
//
119+
// Process management:
120+
//
121+
122+
set-on-exit: func(on-exit: on-exit);
123+
124+
get-on-exit: func() -> on-exit;
125+
126+
get-state: func() -> option<list<u8>>;
127+
128+
set-state: func(bytes: list<u8>);
129+
130+
clear-state: func();
131+
132+
spawn: func(
133+
name: option<string>,
134+
wasm-path: string, // must be located within package's drive
135+
on-exit: on-exit,
136+
request-capabilities: list<capability>,
137+
// note that we are restricting granting to just messaging the
138+
// newly spawned process
139+
grant-capabilities: list<process-id>,
140+
public: bool
141+
) -> result<process-id, spawn-error>;
142+
143+
//
144+
// Capabilities management:
145+
//
146+
147+
// Saves the capabilities to persisted process state.
148+
save-capabilities: func(caps: list<capability>);
149+
150+
// Deletes the capabilities from persisted process state.
151+
drop-capabilities: func(caps: list<capability>);
152+
153+
// Gets all capabilities from persisted process state.
154+
our-capabilities: func() -> list<capability>;
155+
156+
//
157+
// Message I/O:
158+
//
159+
160+
// Ingest next message when it arrives along with its source.
161+
// Almost all long-running processes will call this in a loop.
162+
receive: func() ->
163+
result<tuple<address, message>, tuple<send-error, option<context>>>;
164+
165+
// Gets lazy-load-blob, if any, of the message we most recently received.
166+
get-blob: func() -> option<lazy-load-blob>;
167+
168+
// Send message(s) to target(s).
169+
send-request: func(
170+
target: address,
171+
request: request,
172+
context: option<context>,
173+
lazy-load-blob: option<lazy-load-blob>
174+
);
175+
176+
send-requests: func(
177+
requests: list<tuple<address,
178+
request,
179+
option<context>,
180+
option<lazy-load-blob>>>
181+
);
182+
183+
send-response: func(
184+
response: response,
185+
lazy-load-blob: option<lazy-load-blob>
186+
);
187+
188+
// Send a single request, then block (internally) until its response. The
189+
// type returned is Message but will always contain Response.
190+
send-and-await-response: func(
191+
target: address,
192+
request: request,
193+
lazy-load-blob: option<lazy-load-blob>
194+
) -> result<tuple<address, message>, send-error>;
195+
}
196+
197+
world lib {
198+
import standard;
199+
}
200+
201+
world process-v0 {
202+
include lib;
203+
204+
export init: func(our: string);
205+
}

0 commit comments

Comments
 (0)