@unicity-astrid/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -0
- package/dist/approval.d.ts +23 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +29 -0
- package/dist/approval.js.map +1 -0
- package/dist/capabilities.d.ts +14 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +19 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/capsule.d.ts +39 -0
- package/dist/capsule.d.ts.map +1 -0
- package/dist/capsule.js +67 -0
- package/dist/capsule.js.map +1 -0
- package/dist/contracts.d.ts +1104 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +4 -0
- package/dist/contracts.js.map +1 -0
- package/dist/elicit.d.ts +30 -0
- package/dist/elicit.d.ts.map +1 -0
- package/dist/elicit.js +103 -0
- package/dist/elicit.js.map +1 -0
- package/dist/env.d.ts +19 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +27 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.d.ts +46 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +108 -0
- package/dist/errors.js.map +1 -0
- package/dist/fs.d.ts +135 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +257 -0
- package/dist/fs.js.map +1 -0
- package/dist/http.d.ts +90 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +276 -0
- package/dist/http.js.map +1 -0
- package/dist/identity.d.ts +46 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +69 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors.d.ts +21 -0
- package/dist/interceptors.d.ts.map +1 -0
- package/dist/interceptors.js +22 -0
- package/dist/interceptors.js.map +1 -0
- package/dist/ipc.d.ts +143 -0
- package/dist/ipc.d.ts.map +1 -0
- package/dist/ipc.js +261 -0
- package/dist/ipc.js.map +1 -0
- package/dist/kv.d.ts +45 -0
- package/dist/kv.d.ts.map +1 -0
- package/dist/kv.js +91 -0
- package/dist/kv.js.map +1 -0
- package/dist/log.d.ts +17 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +40 -0
- package/dist/log.js.map +1 -0
- package/dist/net.d.ts +154 -0
- package/dist/net.d.ts.map +1 -0
- package/dist/net.js +421 -0
- package/dist/net.js.map +1 -0
- package/dist/process.d.ts +77 -0
- package/dist/process.d.ts.map +1 -0
- package/dist/process.js +128 -0
- package/dist/process.js.map +1 -0
- package/dist/runtime/bridge.d.ts +34 -0
- package/dist/runtime/bridge.d.ts.map +1 -0
- package/dist/runtime/bridge.js +326 -0
- package/dist/runtime/bridge.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/registry.d.ts +58 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +129 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime.d.ts +36 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +50 -0
- package/dist/runtime.js.map +1 -0
- package/dist/time.d.ts +29 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +43 -0
- package/dist/time.js.map +1 -0
- package/dist/tool.d.ts +48 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +86 -0
- package/dist/tool.js.map +1 -0
- package/dist/uplink.d.ts +27 -0
- package/dist/uplink.d.ts.map +1 -0
- package/dist/uplink.js +36 -0
- package/dist/uplink.js.map +1 -0
- package/package.json +38 -0
- package/src/approval.ts +38 -0
- package/src/capabilities.ts +22 -0
- package/src/capsule.ts +90 -0
- package/src/contracts.ts +1189 -0
- package/src/elicit.ts +136 -0
- package/src/env.ts +31 -0
- package/src/errors.ts +122 -0
- package/src/fs.ts +357 -0
- package/src/http.ts +345 -0
- package/src/identity.ts +101 -0
- package/src/index.ts +83 -0
- package/src/interceptors.ts +25 -0
- package/src/ipc.ts +354 -0
- package/src/kv.ts +123 -0
- package/src/log.ts +43 -0
- package/src/net.ts +545 -0
- package/src/process.ts +205 -0
- package/src/runtime/bridge.ts +374 -0
- package/src/runtime/index.ts +11 -0
- package/src/runtime/registry.ts +178 -0
- package/src/runtime.ts +70 -0
- package/src/time.ts +48 -0
- package/src/tool.ts +125 -0
- package/src/uplink.ts +49 -0
- package/src/wit-imports.d.ts +689 -0
- package/wit-contracts/astrid-contracts.wit +1266 -0
package/dist/ipc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":"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"}
|
package/dist/kv.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key-value persistent storage. Mirrors `astrid_sdk::kv` semantics.
|
|
3
|
+
*
|
|
4
|
+
* Keys are scoped per-(principal, capsule). Each capsule sees an isolated
|
|
5
|
+
* namespace. Keys are UTF-8 NFC strings (max 256 bytes); values are arbitrary
|
|
6
|
+
* bytes (max 1 MiB per value). Per-(principal, capsule) cumulative quota is
|
|
7
|
+
* bounded; exceeding it returns `quota` from the host.
|
|
8
|
+
*/
|
|
9
|
+
export interface KeyPage {
|
|
10
|
+
keys: string[];
|
|
11
|
+
/** Pass back to {@link listKeysPage} for the next page. `undefined` on the last page. */
|
|
12
|
+
nextCursor: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare function getBytes(key: string): Uint8Array | undefined;
|
|
15
|
+
export declare function setBytes(key: string, value: Uint8Array): void;
|
|
16
|
+
export declare function has(key: string): boolean;
|
|
17
|
+
export declare function get<T = unknown>(key: string): T | undefined;
|
|
18
|
+
export declare function set<T>(key: string, value: T): void;
|
|
19
|
+
/** Idempotent: deleting a non-existent key succeeds silently. */
|
|
20
|
+
export declare function del(key: string): void;
|
|
21
|
+
export declare function listKeys(prefix: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Paginated key listing for unbounded stores. Pass `undefined` cursor on the
|
|
24
|
+
* first call and the `nextCursor` from the previous page on subsequent calls.
|
|
25
|
+
* `limit` is capped at 1024 per page; 0 means "use the server default".
|
|
26
|
+
*/
|
|
27
|
+
export declare function listKeysPage(prefix: string, cursor: string | undefined, limit?: number): KeyPage;
|
|
28
|
+
export declare function clearPrefix(prefix: string): bigint;
|
|
29
|
+
/**
|
|
30
|
+
* Atomic compare-and-swap. If the current value for `key` equals `expected`,
|
|
31
|
+
* write `newValue` and return `true`. Otherwise leave the store unchanged and
|
|
32
|
+
* return `false` — the routine lost-race retry path. `expected = undefined`
|
|
33
|
+
* means "swap only if the key does not currently exist" (create-if-absent).
|
|
34
|
+
*
|
|
35
|
+
* SDK-level convenience: the underlying WIT host fn surfaces mismatch as
|
|
36
|
+
* `Err(cas-mismatch)`. We catch that here and return `false` so capsule code
|
|
37
|
+
* can branch on success/mismatch with a boolean. Genuine host errors (quota,
|
|
38
|
+
* invalid key, etc.) still throw via `callHost`.
|
|
39
|
+
*
|
|
40
|
+
* Required for any concurrent coordination on shared state — the kernel runs
|
|
41
|
+
* capsule invocations across a multi-threaded worker pool so naive RMW
|
|
42
|
+
* patterns race.
|
|
43
|
+
*/
|
|
44
|
+
export declare function cas(key: string, expected: Uint8Array | undefined, newValue: Uint8Array): boolean;
|
|
45
|
+
//# sourceMappingURL=kv.d.ts.map
|
package/dist/kv.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yFAAyF;IACzF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE5D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAE7D;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExC;AAED,wBAAgB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAQ3D;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAQlD;AAED,iEAAiE;AACjE,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,GAAE,MAAU,GAChB,OAAO,CAIT;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CACjB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,QAAQ,EAAE,UAAU,GACnB,OAAO,CAUT"}
|
package/dist/kv.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key-value persistent storage. Mirrors `astrid_sdk::kv` semantics.
|
|
3
|
+
*
|
|
4
|
+
* Keys are scoped per-(principal, capsule). Each capsule sees an isolated
|
|
5
|
+
* namespace. Keys are UTF-8 NFC strings (max 256 bytes); values are arbitrary
|
|
6
|
+
* bytes (max 1 MiB per value). Per-(principal, capsule) cumulative quota is
|
|
7
|
+
* bounded; exceeding it returns `quota` from the host.
|
|
8
|
+
*/
|
|
9
|
+
import { kvGet as hostGet, kvSet as hostSet, kvDelete as hostDelete, kvListKeys as hostListKeys, kvListKeysPage as hostListKeysPage, kvClearPrefix as hostClearPrefix, kvCas as hostCas, } from "astrid:kv/host@1.0.0";
|
|
10
|
+
import { SysError, callHost } from "./errors.js";
|
|
11
|
+
const encoder = new TextEncoder();
|
|
12
|
+
const decoder = new TextDecoder();
|
|
13
|
+
export function getBytes(key) {
|
|
14
|
+
return callHost(`kv.getBytes(${quote(key)})`, () => hostGet(key));
|
|
15
|
+
}
|
|
16
|
+
export function setBytes(key, value) {
|
|
17
|
+
callHost(`kv.setBytes(${quote(key)})`, () => hostSet(key, value));
|
|
18
|
+
}
|
|
19
|
+
export function has(key) {
|
|
20
|
+
return getBytes(key) !== undefined;
|
|
21
|
+
}
|
|
22
|
+
export function get(key) {
|
|
23
|
+
const bytes = getBytes(key);
|
|
24
|
+
if (bytes === undefined || bytes.length === 0)
|
|
25
|
+
return undefined;
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(decoder.decode(bytes));
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
throw SysError.json(`kv.get(${quote(key)}): ${err.message}`, err);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function set(key, value) {
|
|
34
|
+
let json;
|
|
35
|
+
try {
|
|
36
|
+
json = JSON.stringify(value);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
throw SysError.json(`kv.set(${quote(key)}): ${err.message}`, err);
|
|
40
|
+
}
|
|
41
|
+
setBytes(key, encoder.encode(json));
|
|
42
|
+
}
|
|
43
|
+
/** Idempotent: deleting a non-existent key succeeds silently. */
|
|
44
|
+
export function del(key) {
|
|
45
|
+
callHost(`kv.delete(${quote(key)})`, () => hostDelete(key));
|
|
46
|
+
}
|
|
47
|
+
export function listKeys(prefix) {
|
|
48
|
+
return callHost(`kv.listKeys(${quote(prefix)})`, () => hostListKeys(prefix));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Paginated key listing for unbounded stores. Pass `undefined` cursor on the
|
|
52
|
+
* first call and the `nextCursor` from the previous page on subsequent calls.
|
|
53
|
+
* `limit` is capped at 1024 per page; 0 means "use the server default".
|
|
54
|
+
*/
|
|
55
|
+
export function listKeysPage(prefix, cursor, limit = 0) {
|
|
56
|
+
return callHost(`kv.listKeysPage(${quote(prefix)})`, () => hostListKeysPage(prefix, cursor, limit));
|
|
57
|
+
}
|
|
58
|
+
export function clearPrefix(prefix) {
|
|
59
|
+
return callHost(`kv.clearPrefix(${quote(prefix)})`, () => hostClearPrefix(prefix));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Atomic compare-and-swap. If the current value for `key` equals `expected`,
|
|
63
|
+
* write `newValue` and return `true`. Otherwise leave the store unchanged and
|
|
64
|
+
* return `false` — the routine lost-race retry path. `expected = undefined`
|
|
65
|
+
* means "swap only if the key does not currently exist" (create-if-absent).
|
|
66
|
+
*
|
|
67
|
+
* SDK-level convenience: the underlying WIT host fn surfaces mismatch as
|
|
68
|
+
* `Err(cas-mismatch)`. We catch that here and return `false` so capsule code
|
|
69
|
+
* can branch on success/mismatch with a boolean. Genuine host errors (quota,
|
|
70
|
+
* invalid key, etc.) still throw via `callHost`.
|
|
71
|
+
*
|
|
72
|
+
* Required for any concurrent coordination on shared state — the kernel runs
|
|
73
|
+
* capsule invocations across a multi-threaded worker pool so naive RMW
|
|
74
|
+
* patterns race.
|
|
75
|
+
*/
|
|
76
|
+
export function cas(key, expected, newValue) {
|
|
77
|
+
try {
|
|
78
|
+
callHost(`kv.cas(${quote(key)})`, () => hostCas(key, expected, newValue));
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (err instanceof SysError && err.message.includes("cas-mismatch")) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
throw err;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function quote(s) {
|
|
89
|
+
return `"${s.replace(/"/g, '\\"')}"`;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=kv.js.map
|
package/dist/kv.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.js","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"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"}
|
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging — mirrors `astrid_sdk::log`. Levels match the WIT
|
|
3
|
+
* `log-level` enum exactly. Messages are coerced to string via the host call.
|
|
4
|
+
* Infallible: the host `log()` function returns void.
|
|
5
|
+
*
|
|
6
|
+
* Deliberate non-feature: this module does NOT override `globalThis.console`.
|
|
7
|
+
* The embedded JS engine may already wire `console` to its own sink, and
|
|
8
|
+
* shadowing risks capturing engine-internal log lines. Users who want
|
|
9
|
+
* `console.log` to flow through Astrid must explicitly forward to one of
|
|
10
|
+
* these functions.
|
|
11
|
+
*/
|
|
12
|
+
export declare function trace(message: unknown): void;
|
|
13
|
+
export declare function debug(message: unknown): void;
|
|
14
|
+
export declare function info(message: unknown): void;
|
|
15
|
+
export declare function warn(message: unknown): void;
|
|
16
|
+
export declare function error(message: unknown): void;
|
|
17
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5C"}
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging — mirrors `astrid_sdk::log`. Levels match the WIT
|
|
3
|
+
* `log-level` enum exactly. Messages are coerced to string via the host call.
|
|
4
|
+
* Infallible: the host `log()` function returns void.
|
|
5
|
+
*
|
|
6
|
+
* Deliberate non-feature: this module does NOT override `globalThis.console`.
|
|
7
|
+
* The embedded JS engine may already wire `console` to its own sink, and
|
|
8
|
+
* shadowing risks capturing engine-internal log lines. Users who want
|
|
9
|
+
* `console.log` to flow through Astrid must explicitly forward to one of
|
|
10
|
+
* these functions.
|
|
11
|
+
*/
|
|
12
|
+
import { log as hostLog } from "astrid:sys/host@1.0.0";
|
|
13
|
+
export function trace(message) {
|
|
14
|
+
hostLog("trace", format(message));
|
|
15
|
+
}
|
|
16
|
+
export function debug(message) {
|
|
17
|
+
hostLog("debug", format(message));
|
|
18
|
+
}
|
|
19
|
+
export function info(message) {
|
|
20
|
+
hostLog("info", format(message));
|
|
21
|
+
}
|
|
22
|
+
export function warn(message) {
|
|
23
|
+
hostLog("warn", format(message));
|
|
24
|
+
}
|
|
25
|
+
export function error(message) {
|
|
26
|
+
hostLog("error", format(message));
|
|
27
|
+
}
|
|
28
|
+
function format(value) {
|
|
29
|
+
if (typeof value === "string")
|
|
30
|
+
return value;
|
|
31
|
+
if (value instanceof Error)
|
|
32
|
+
return value.stack ?? value.message;
|
|
33
|
+
try {
|
|
34
|
+
return JSON.stringify(value);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return String(value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAChE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/net.d.ts
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Networking — Unix domain sockets, outbound TCP, inbound TCP listeners,
|
|
3
|
+
* UDP, and DNS. Mirrors `astrid_sdk::net`. The kernel pre-binds a single
|
|
4
|
+
* Unix-domain listener per capsule; outbound TCP and UDP are gated by
|
|
5
|
+
* `net_connect` / `net_udp` allowlists and run through the SSRF airlock.
|
|
6
|
+
*
|
|
7
|
+
* Resource handles ({@link UnixListener}, {@link TcpListener}, {@link TcpStream},
|
|
8
|
+
* {@link UdpSocket}) are Component Model resources with automatic Drop. Use
|
|
9
|
+
* `using` for scope-bound cleanup or call `.close()` explicitly.
|
|
10
|
+
*
|
|
11
|
+
* Per-capsule caps: 8 concurrent TCP streams, 4 UDP sockets, 4 TCP listeners.
|
|
12
|
+
*/
|
|
13
|
+
import { type ShutdownHow, type UdpDatagram, type UnixListener as WitUnixListener, type TcpListener as WitTcpListener, type TcpStream as WitTcpStream, type UdpSocket as WitUdpSocket } from "astrid:net/host@1.0.0";
|
|
14
|
+
export type { ShutdownHow, NetReadStatus, UdpDatagram } from "astrid:net/host@1.0.0";
|
|
15
|
+
export declare class RecvError extends Error {
|
|
16
|
+
readonly name = "RecvError";
|
|
17
|
+
readonly code: "EPIPE";
|
|
18
|
+
constructor();
|
|
19
|
+
}
|
|
20
|
+
export type TryRecvError = {
|
|
21
|
+
kind: "empty";
|
|
22
|
+
message: string;
|
|
23
|
+
code: "EAGAIN";
|
|
24
|
+
} | {
|
|
25
|
+
kind: "closed";
|
|
26
|
+
message: string;
|
|
27
|
+
code: "EPIPE";
|
|
28
|
+
};
|
|
29
|
+
export declare class SendError extends Error {
|
|
30
|
+
readonly name = "SendError";
|
|
31
|
+
readonly code: "EPIPE";
|
|
32
|
+
constructor();
|
|
33
|
+
}
|
|
34
|
+
/** The capsule's pre-bound Unix domain listener. Activated by {@link bindUnix}. */
|
|
35
|
+
export declare class UnixListener {
|
|
36
|
+
#private;
|
|
37
|
+
constructor(inner: WitUnixListener);
|
|
38
|
+
/** Blocking accept. Performs peer-credential verification + session token handshake. */
|
|
39
|
+
accept(): TcpStream;
|
|
40
|
+
/** Polling accept with caller-controlled timeout. Returns `undefined` if none arrived. */
|
|
41
|
+
pollAccept(timeoutMs: number): TcpStream | undefined;
|
|
42
|
+
close(): void;
|
|
43
|
+
[Symbol.dispose](): void;
|
|
44
|
+
}
|
|
45
|
+
/** A bound TCP listener accepting inbound network connections. Per-capsule cap: 4. */
|
|
46
|
+
export declare class TcpListener {
|
|
47
|
+
#private;
|
|
48
|
+
constructor(inner: WitTcpListener);
|
|
49
|
+
/** Blocking accept. */
|
|
50
|
+
accept(): TcpStream;
|
|
51
|
+
/** Polling accept with caller-controlled timeout. */
|
|
52
|
+
pollAccept(timeoutMs: number): TcpStream | undefined;
|
|
53
|
+
localAddr(): string;
|
|
54
|
+
close(): void;
|
|
55
|
+
[Symbol.dispose](): void;
|
|
56
|
+
}
|
|
57
|
+
export declare class TcpStream {
|
|
58
|
+
#private;
|
|
59
|
+
constructor(inner: WitTcpStream);
|
|
60
|
+
/** Non-blocking framed read. Returns Data/Closed/Pending. Max frame: 10 MB. */
|
|
61
|
+
tryRecv(): Uint8Array | {
|
|
62
|
+
kind: "empty";
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Blocking framed receive. Spins on `tryRecv` with a 50 ms sleep between
|
|
66
|
+
* polls; StarlingMonkey's syncify makes this a real blocking call from the
|
|
67
|
+
* host's POV. Mirrors the Rust SDK polling-loop shape.
|
|
68
|
+
*/
|
|
69
|
+
recv(): Uint8Array;
|
|
70
|
+
/** Write a length-prefixed frame. */
|
|
71
|
+
send(data: Uint8Array): void;
|
|
72
|
+
/**
|
|
73
|
+
* Read up to `maxBytes` without length-prefix framing. Empty array = EOF.
|
|
74
|
+
* Honours any timeout set via {@link setReadTimeout}.
|
|
75
|
+
*/
|
|
76
|
+
readBytes(maxBytes: number): Uint8Array;
|
|
77
|
+
/** Write `data` without framing. Returns bytes written (may be less than `data.length`). */
|
|
78
|
+
writeBytes(data: Uint8Array): number;
|
|
79
|
+
/** Peek up to `maxBytes` without consuming them. */
|
|
80
|
+
peek(maxBytes: number): Uint8Array;
|
|
81
|
+
/** Half-close the read side, write side, or both. */
|
|
82
|
+
shutdown(how: ShutdownHow): void;
|
|
83
|
+
/** Remote peer address as `"ip:port"`. Returns `not-tcp` for Unix-domain streams. */
|
|
84
|
+
peerAddr(): string;
|
|
85
|
+
/** Local socket address as `"ip:port"`. */
|
|
86
|
+
localAddr(): string;
|
|
87
|
+
setNodelay(nodelay: boolean): void;
|
|
88
|
+
nodelay(): boolean;
|
|
89
|
+
setReadTimeout(timeoutMs: number | undefined): void;
|
|
90
|
+
readTimeout(): number | undefined;
|
|
91
|
+
setWriteTimeout(timeoutMs: number | undefined): void;
|
|
92
|
+
writeTimeout(): number | undefined;
|
|
93
|
+
/** IPv6 hop limit / IPv4 TTL. */
|
|
94
|
+
setHopLimit(hops: number): void;
|
|
95
|
+
hopLimit(): number;
|
|
96
|
+
/** TCP keepalive probe interval in seconds (`undefined` disables). */
|
|
97
|
+
setKeepalive(keepaliveSecs: number | undefined): void;
|
|
98
|
+
keepalive(): number | undefined;
|
|
99
|
+
/** SO_LINGER. `undefined` = default; `0` = immediate RST; otherwise drain time in ms. */
|
|
100
|
+
setLinger(lingerMs: number | undefined): void;
|
|
101
|
+
linger(): number | undefined;
|
|
102
|
+
setReuseaddr(reuse: boolean): void;
|
|
103
|
+
reuseaddr(): boolean;
|
|
104
|
+
close(): void;
|
|
105
|
+
[Symbol.dispose](): void;
|
|
106
|
+
/** Async iterator yielding each frame until the peer closes. */
|
|
107
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<Uint8Array>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* UDP datagram socket. Two modes: unconnected (`sendTo`/`recvFrom`) and
|
|
111
|
+
* connected (`connect` + `send`/`recv`). Per-capsule cap: 4.
|
|
112
|
+
*/
|
|
113
|
+
export declare class UdpSocket {
|
|
114
|
+
#private;
|
|
115
|
+
constructor(inner: WitUdpSocket);
|
|
116
|
+
sendTo(data: Uint8Array, peerHost: string, peerPort: number): number;
|
|
117
|
+
recvFrom(maxBytes: number): UdpDatagram | undefined;
|
|
118
|
+
connect(peerHost: string, peerPort: number): void;
|
|
119
|
+
disconnect(): void;
|
|
120
|
+
send(data: Uint8Array): number;
|
|
121
|
+
recv(maxBytes: number): Uint8Array | undefined;
|
|
122
|
+
peerAddr(): string | undefined;
|
|
123
|
+
setReadTimeout(timeoutMs: number | undefined): void;
|
|
124
|
+
localAddr(): string;
|
|
125
|
+
close(): void;
|
|
126
|
+
[Symbol.dispose](): void;
|
|
127
|
+
}
|
|
128
|
+
export { TcpStream as StreamHandle, UnixListener as ListenerHandle };
|
|
129
|
+
/** Bind the kernel-pre-provisioned Unix socket and return a listener. */
|
|
130
|
+
export declare function bindUnix(): UnixListener;
|
|
131
|
+
/**
|
|
132
|
+
* Bind a TCP listener for inbound connections. Gated by `net_tcp_bind`. Port
|
|
133
|
+
* 0 selects an ephemeral port.
|
|
134
|
+
*/
|
|
135
|
+
export declare function bindTcp(host: string, port: number): TcpListener;
|
|
136
|
+
/** Block until the next incoming connection on the Unix listener. */
|
|
137
|
+
export declare function accept(listener: UnixListener): TcpStream;
|
|
138
|
+
/** Non-blocking accept. Returns `undefined` if none ready. */
|
|
139
|
+
export declare function tryAccept(listener: UnixListener): TcpStream | undefined;
|
|
140
|
+
/**
|
|
141
|
+
* Open an outbound TCP connection to `host:port`. Goes through the SSRF
|
|
142
|
+
* airlock (rejects private/loopback/etc.) and the `net_connect` allowlist.
|
|
143
|
+
*/
|
|
144
|
+
export declare function connect(host: string, port: number): TcpStream;
|
|
145
|
+
/** Alias for {@link connect} matching the WIT name. */
|
|
146
|
+
export declare const connectTcp: typeof connect;
|
|
147
|
+
/** Bind a UDP socket. */
|
|
148
|
+
export declare function udpBind(host: string, port: number): UdpSocket;
|
|
149
|
+
/**
|
|
150
|
+
* Resolve a hostname to a list of `"ip:port"` (or `"ip"` if no port in input)
|
|
151
|
+
* strings. SSRF airlock applies — private/loopback/etc. ranges stripped.
|
|
152
|
+
*/
|
|
153
|
+
export declare function lookupHost(host: string): string[];
|
|
154
|
+
//# sourceMappingURL=net.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../src/net.ts"],"names":[],"mappings":"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"}
|