@microsandbox/control-client 0.7.3 → 0.7.5
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 +4 -2
- package/dist/connection.d.ts +5 -3
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +17 -4
- package/dist/connection.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json-client.d.ts +2 -2
- package/dist/json-client.d.ts.map +1 -1
- package/dist/json-client.js +1 -1
- package/dist/json-client.js.map +1 -1
- package/dist/json-reply.d.ts +8 -1
- package/dist/json-reply.d.ts.map +1 -1
- package/dist/json-reply.js +94 -1
- package/dist/json-reply.js.map +1 -1
- package/dist/json-session.d.ts +6 -6
- package/dist/json-session.d.ts.map +1 -1
- package/dist/json-session.js +7 -7
- package/dist/json-session.js.map +1 -1
- package/dist/legacy-request.d.ts +27 -2
- package/dist/legacy-request.d.ts.map +1 -1
- package/dist/legacy-request.js +23 -1
- package/dist/legacy-request.js.map +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +9 -4
- package/dist/protocol.js.map +1 -1
- package/dist/records.d.ts +126 -1
- package/dist/records.d.ts.map +1 -1
- package/dist/records.js +99 -1
- package/dist/records.js.map +1 -1
- package/dist/request.d.ts +79 -2
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +164 -5
- package/dist/request.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ async function inspectAndResize(path: string) {
|
|
|
22
22
|
}
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Generation-1 checked helpers cover capabilities, memory state/target, CPU state/target, and ordered secret updates. Generation 2 adds `GetRuntimeCapabilities`, `CreateCheckpoint`, `CreateDiskCheckpoint`, `CreateBranch`, `PauseRuntime`, `ResumeRuntime`, `GetPauseState`, `GrowRootDisk`, and `CompactDisks`. They validate replies and retain the actual response on `ControlClientError`. Generic message requests return peer error frames directly. A target reply reports acceptance and observation; it does not establish guest convergence. Secret batches stop at the first failure and retain earlier completed changes.
|
|
26
26
|
|
|
27
27
|
Use `connectControl` for automatic discovery on the same endpoint. It sends the existing read-only JSON capabilities request, closes that exchange, and opens a fresh framed connection only after an affirmative CBOR advertisement. Setup has one total deadline across both connections. Malformed discovery, timeout, EOF without a reply, or a failed welcome never trigger fallback or replay.
|
|
28
28
|
|
|
@@ -53,7 +53,9 @@ async function compatibleResize(path: string) {
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
`ControlConnection.connectConnector` accepts a repeatable caller connector from the browser-safe root. The connection exposes the read-only `capabilities` discovery snapshot, `mode`, `clone()`, `isClosed()`, `close()`, `request()`, and `requestTyped()`. `framed()` returns the complete generic surface in CBOR mode and fails locally with `unsupported_mode` in JSON mode. Encoded messages likewise fail locally in JSON mode; the adapter translates only known, validated native operations.
|
|
56
|
+
`ControlConnection.connectConnector` accepts a repeatable caller connector from the browser-safe root. The connection exposes the read-only generation-1 `capabilities` projection, the complete `runtimeCapabilities` discovery snapshot, `mode`, `clone()`, `isClosed()`, `close()`, `request()`, and `requestTyped()`. `framed()` returns the complete generic surface in CBOR mode and fails locally with `unsupported_mode` in JSON mode. Encoded messages likewise fail locally in JSON mode; the adapter translates only known, validated native operations.
|
|
57
|
+
|
|
58
|
+
When a framed peer selects generation 1, `ControlConnection.requestTyped()` sends generation-2 checked operations through their historical JSON form before any mutation is admitted. An unverified connector rediscovers the endpoint format first. This path is never a retry after a CBOR failure. The explicit `ControlClient` rejects those operations locally against a generation-1 welcome. Linux descriptor-backed branch creation remains outside ordinary CBOR because it requires `SCM_RIGHTS`; generation 2 covers direct local branching without descriptor transfer.
|
|
57
59
|
|
|
58
60
|
`JsonReply` contains the original response line, including its delimiter and whitespace, and a lossless `Map` of fields. `JsonNumber.token` retains each original numeric token; checked memory observations become `bigint` without passing through a JavaScript number. Ordinary requests return `ok:false` replies. Checked helpers raise `legacy_remote` with the original reply and unknown batch progress. Neither arbitrary diagnostic strings nor legacy errors are converted into structured CBOR errors.
|
|
59
61
|
|
package/dist/connection.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { type ConnectOptions, type Connector, type InboundFrame, type OutboundMe
|
|
|
2
2
|
import type { ControlClient } from "./client.js";
|
|
3
3
|
import type { VerifiedControlConnector } from "./dialer.js";
|
|
4
4
|
import type { ControlMode, JsonReply } from "./json-reply.js";
|
|
5
|
-
import { type
|
|
6
|
-
import { type Capabilities } from "./records.js";
|
|
5
|
+
import { type AnyControlRequest } from "./legacy-request.js";
|
|
6
|
+
import { type Capabilities, type RuntimeCapabilities } from "./records.js";
|
|
7
7
|
export type ControlReply = {
|
|
8
8
|
kind: "cbor";
|
|
9
9
|
frame: InboundFrame;
|
|
@@ -22,11 +22,13 @@ export declare class ControlConnection {
|
|
|
22
22
|
get mode(): ControlMode;
|
|
23
23
|
/** Validated discovery snapshot; GetCapabilities explicitly requests a fresh observation. */
|
|
24
24
|
get capabilities(): Readonly<Capabilities>;
|
|
25
|
+
/** Complete generation-two capability inventory obtained during discovery. */
|
|
26
|
+
get runtimeCapabilities(): Readonly<RuntimeCapabilities>;
|
|
25
27
|
isClosed(): boolean;
|
|
26
28
|
framed(): ControlClient;
|
|
27
29
|
close(): Promise<void>;
|
|
28
30
|
request(message: OutboundMessage, options?: RequestOptions): Promise<ControlReply>;
|
|
29
|
-
requestTyped<T>(request:
|
|
31
|
+
requestTyped<T>(request: AnyControlRequest<T>, options?: RequestOptions): Promise<T>;
|
|
30
32
|
private framedOperation;
|
|
31
33
|
}
|
|
32
34
|
//# sourceMappingURL=connection.d.ts.map
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE1M,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAiB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE1M,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAiB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAA2C,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtG,OAAO,EAEL,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAC5C,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAOtG,iFAAiF;AACjF,qBAAa,iBAAiB;IACR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAA5C,OAAO;IACP,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAGvG,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,wBAAwB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;mBAGzG,SAAS;IAkC9B,KAAK,IAAI,iBAAiB;IAC1B,IAAI,IAAI,IAAI,WAAW,CAAkD;IACzE,6FAA6F;IAC7F,IAAI,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAsC;IAChF,8EAA8E;IAC9E,IAAI,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAA6C;IACrG,QAAQ,IAAI,OAAO;IACnB,MAAM,IAAI,aAAa;IAIjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAItF,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;YAQhF,eAAe;CAiB9B"}
|
package/dist/connection.js
CHANGED
|
@@ -2,8 +2,8 @@ import { Client, ClientError, defaultLimits } from "@microsandbox/protocol-clien
|
|
|
2
2
|
import { closeTransport, ControlAttempt, controlError } from "./attempt.js";
|
|
3
3
|
import { ControlClientError } from "./error.js";
|
|
4
4
|
import { JsonSession } from "./json-session.js";
|
|
5
|
-
import { nativeJsonRequest } from "./legacy-request.js";
|
|
6
|
-
import { DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SETUP_TIMEOUT_MS } from "./records.js";
|
|
5
|
+
import { nativeJsonRequest, requestMinGeneration } from "./legacy-request.js";
|
|
6
|
+
import { DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SETUP_TIMEOUT_MS, } from "./records.js";
|
|
7
7
|
import { ControlProtocol } from "./protocol.js";
|
|
8
8
|
/** Shared automatic discovery; JSON and CBOR keep their actual reply formats. */
|
|
9
9
|
export class ControlConnection {
|
|
@@ -18,7 +18,7 @@ export class ControlConnection {
|
|
|
18
18
|
return this.establish({ connector, verifier: connector }, options);
|
|
19
19
|
}
|
|
20
20
|
static async establish(dialer, options) {
|
|
21
|
-
const json = new JsonSession(dialer, options,
|
|
21
|
+
const json = new JsonSession(dialer, options, "json");
|
|
22
22
|
const attempt = new ControlAttempt(options.setupTimeoutMs ?? DEFAULT_SETUP_TIMEOUT_MS, [options.signal]);
|
|
23
23
|
let framed;
|
|
24
24
|
let transport;
|
|
@@ -37,7 +37,14 @@ export class ControlConnection {
|
|
|
37
37
|
transport = undefined; // The generic reader/writer now own the stream.
|
|
38
38
|
}
|
|
39
39
|
attempt.check();
|
|
40
|
-
|
|
40
|
+
const generationOne = {
|
|
41
|
+
root_disk_grow: capabilities.root_disk_grow, cpu_resize: capabilities.cpu_resize,
|
|
42
|
+
memory_resize: capabilities.memory_resize, secrets_update: capabilities.secrets_update,
|
|
43
|
+
};
|
|
44
|
+
return new ControlConnection({
|
|
45
|
+
dialer, options: json.options, json, framed, closed: new AbortController(),
|
|
46
|
+
capabilities: Object.freeze(generationOne), runtimeCapabilities: Object.freeze(capabilities),
|
|
47
|
+
});
|
|
41
48
|
}
|
|
42
49
|
catch (error) {
|
|
43
50
|
if (transport)
|
|
@@ -55,6 +62,8 @@ export class ControlConnection {
|
|
|
55
62
|
get mode() { return this.session.framed ? "cbor" : "json"; }
|
|
56
63
|
/** Validated discovery snapshot; GetCapabilities explicitly requests a fresh observation. */
|
|
57
64
|
get capabilities() { return this.session.capabilities; }
|
|
65
|
+
/** Complete generation-two capability inventory obtained during discovery. */
|
|
66
|
+
get runtimeCapabilities() { return this.session.runtimeCapabilities; }
|
|
58
67
|
isClosed() { return this.session.json.isClosed() || (this.session.framed?.isClosed() ?? false); }
|
|
59
68
|
framed() {
|
|
60
69
|
if (!this.session.framed)
|
|
@@ -73,6 +82,10 @@ export class ControlConnection {
|
|
|
73
82
|
async requestTyped(request, options = {}) {
|
|
74
83
|
if (!this.session.framed)
|
|
75
84
|
return request.decodeJson(await this.session.json.operation(request.jsonRequest(), options));
|
|
85
|
+
if (requestMinGeneration(request) > this.session.framed.ready.welcome.generation) {
|
|
86
|
+
const json = new JsonSession(this.session.dialer, this.session.options, "cbor");
|
|
87
|
+
return request.decodeJson(await json.operation(request.jsonRequest(), options));
|
|
88
|
+
}
|
|
76
89
|
return this.framedOperation(options, remaining => this.session.framed.requestTyped(request, remaining));
|
|
77
90
|
}
|
|
78
91
|
async framedOperation(options, operation) {
|
package/dist/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAyH,MAAM,+BAA+B,CAAC;AAC1M,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export * from "./connection.js";
|
|
|
8
8
|
export * from "./json-client.js";
|
|
9
9
|
export { JsonReply, type ControlMode } from "./json-reply.js";
|
|
10
10
|
export { JsonNumber, type JsonObject, type JsonValue } from "./json-value.js";
|
|
11
|
-
export type { CheckedControlRequest, LegacyControlRequest } from "./legacy-request.js";
|
|
11
|
+
export type { AnyControlRequest, CheckedControlRequest, CompatibleControlRequest, ExtendedLegacyControlRequest, LegacyControlRequest, } from "./legacy-request.js";
|
|
12
12
|
export type { VerifiedControlConnector } from "./dialer.js";
|
|
13
13
|
export * from "@microsandbox/types/size";
|
|
14
14
|
export { Client, ClientError, InboundFrame, typedMessage, encodedMessage, type ByteTransport, type Connector, type ConnectOptions, type RequestOptions, type RawFrame, type TypedMessage, type EncodedMessage, type Request, } from "@microsandbox/protocol-client";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,YAAY,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,YAAY,EACV,iBAAiB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,4BAA4B,EAChG,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAC/D,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAC5E,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,OAAO,GACpE,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;AAM9E,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,GAGhE,MAAM,+BAA+B,CAAC"}
|
package/dist/json-client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConnectOptions, Connector, OutboundMessage, RequestOptions } from "@microsandbox/protocol-client";
|
|
2
|
-
import { type
|
|
2
|
+
import { type AnyControlRequest } from "./legacy-request.js";
|
|
3
3
|
import type { JsonReply } from "./json-reply.js";
|
|
4
4
|
/** Explicit JSON unary adapter. Construction is inert and never probes. */
|
|
5
5
|
export declare class JsonControlClient {
|
|
@@ -10,6 +10,6 @@ export declare class JsonControlClient {
|
|
|
10
10
|
isClosed(): boolean;
|
|
11
11
|
close(): Promise<void>;
|
|
12
12
|
request(message: OutboundMessage, options?: RequestOptions): Promise<JsonReply>;
|
|
13
|
-
requestTyped<T>(request:
|
|
13
|
+
requestTyped<T>(request: AnyControlRequest<T>, options?: RequestOptions): Promise<T>;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=json-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-client.d.ts","sourceRoot":"","sources":["../src/json-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEhH,OAAO,EAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"json-client.d.ts","sourceRoot":"","sources":["../src/json-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEhH,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,2EAA2E;AAC3E,qBAAa,iBAAiB;IACR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAA5C,OAAO;IACP,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,iBAAiB;IAG3F,KAAK,IAAI,iBAAiB;IAC1B,QAAQ,IAAI,OAAO;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAChB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAG/E,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;CAG3F"}
|
package/dist/json-client.js
CHANGED
|
@@ -7,7 +7,7 @@ export class JsonControlClient {
|
|
|
7
7
|
this.session = session;
|
|
8
8
|
}
|
|
9
9
|
static fromConnector(connector, options = {}) {
|
|
10
|
-
return new JsonControlClient(new JsonSession({ connector }, options
|
|
10
|
+
return new JsonControlClient(new JsonSession({ connector }, options));
|
|
11
11
|
}
|
|
12
12
|
clone() { return new JsonControlClient(this.session); }
|
|
13
13
|
isClosed() { return this.session.isClosed(); }
|
package/dist/json-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-client.js","sourceRoot":"","sources":["../src/json-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"json-client.js","sourceRoot":"","sources":["../src/json-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,qBAAqB,CAAC;AAGhF,2EAA2E;AAC3E,MAAM,OAAO,iBAAiB;IACS;IAArC,YAAqC,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAC7D,MAAM,CAAC,aAAa,CAAC,SAAoB,EAAE,UAA0B,EAAE;QACrE,OAAO,IAAI,iBAAiB,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,KAAwB,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,QAAQ,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvD,KAAK,KAAoB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,KAAK,CAAC,OAAO,CAAC,OAAwB,EAAE,OAAwB;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,YAAY,CAAI,OAA6B,EAAE,OAAwB;QAC3E,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF"}
|
package/dist/json-reply.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JsonObject, type JsonValue } from "./json-value.js";
|
|
2
|
-
import type { Capabilities, CpuState, MemoryState } from "./records.js";
|
|
2
|
+
import type { BranchResult, Capabilities, CheckpointState, DiskCheckpointState, DiskCompactionResult, PauseState, RootDiskState, RuntimeCapabilities, CpuState, MemoryState } from "./records.js";
|
|
3
3
|
export type ControlMode = "cbor" | "json";
|
|
4
4
|
/** Actual legacy bytes and an inspectable lossless object; no fabricated frame. */
|
|
5
5
|
export declare class JsonReply {
|
|
@@ -13,6 +13,13 @@ export declare class JsonReply {
|
|
|
13
13
|
checked<T>(decode: (value: JsonObject) => T): T;
|
|
14
14
|
}
|
|
15
15
|
export declare function jsonCapabilities(value: JsonValue | undefined): Capabilities;
|
|
16
|
+
export declare function jsonRuntimeCapabilities(value: JsonValue | undefined): RuntimeCapabilities;
|
|
16
17
|
export declare function jsonMemory(value: JsonValue | undefined): MemoryState;
|
|
17
18
|
export declare function jsonCpu(value: JsonValue | undefined): CpuState;
|
|
19
|
+
export declare function jsonCheckpoint(value: JsonValue | undefined): CheckpointState;
|
|
20
|
+
export declare function jsonDiskCheckpoint(value: JsonValue | undefined): DiskCheckpointState;
|
|
21
|
+
export declare function jsonBranch(value: JsonValue | undefined): BranchResult;
|
|
22
|
+
export declare function jsonPause(value: JsonValue | undefined): PauseState;
|
|
23
|
+
export declare function jsonRootDisk(value: JsonValue | undefined): RootDiskState;
|
|
24
|
+
export declare function jsonDiskCompaction(value: JsonValue | undefined): DiskCompactionResult;
|
|
18
25
|
//# sourceMappingURL=json-reply.d.ts.map
|
package/dist/json-reply.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-reply.d.ts","sourceRoot":"","sources":["../src/json-reply.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"json-reply.d.ts","sourceRoot":"","sources":["../src/json-reply.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EACtF,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EACtE,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,mFAAmF;AACnF,qBAAa,SAAS;;gBAGR,GAAG,EAAE,UAAU;IAI3B,IAAI,GAAG,IAAI,UAAU,CAAsB;IAC3C,IAAI,KAAK,IAAI,UAAU,CAAwB;IAG/C,gFAAgF;IAChF,aAAa,IAAI,WAAW;IAW5B,gFAAgF;IAChF,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC;CAMhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAY3E;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAiBzF;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAGpE;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAG9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,eAAe,CAO5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CASpF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAErE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAQlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAMxE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB,CAkBrF"}
|
package/dist/json-reply.js
CHANGED
|
@@ -50,7 +50,30 @@ export function jsonCapabilities(value) {
|
|
|
50
50
|
throw new ClientError("invalid_data");
|
|
51
51
|
return field;
|
|
52
52
|
};
|
|
53
|
-
return {
|
|
53
|
+
return {
|
|
54
|
+
...(fields.has("root_disk_grow") ? { root_disk_grow: boolean("root_disk_grow") } : {}),
|
|
55
|
+
cpu_resize: boolean("cpu_resize"), memory_resize: boolean("memory_resize"),
|
|
56
|
+
secrets_update: boolean("secrets_update"),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function jsonRuntimeCapabilities(value) {
|
|
60
|
+
const fields = jsonObject(value);
|
|
61
|
+
const boolean = (name) => {
|
|
62
|
+
const field = fields.get(name);
|
|
63
|
+
if (typeof field !== "boolean")
|
|
64
|
+
throw new ClientError("invalid_data");
|
|
65
|
+
return field;
|
|
66
|
+
};
|
|
67
|
+
const optional = (name) => fields.has(name) ? boolean(name) : false;
|
|
68
|
+
return {
|
|
69
|
+
root_disk_grow: optional("root_disk_grow"), guest_flush_policy: optional("guest_flush_policy"),
|
|
70
|
+
optional_disk_integrity: optional("optional_disk_integrity"), branch_create: optional("branch_create"),
|
|
71
|
+
branch_memfd: optional("branch_memfd"), pause_resume: optional("pause_resume"),
|
|
72
|
+
disk_compact: optional("disk_compact"), disk_compact_owned: optional("disk_compact_owned"),
|
|
73
|
+
cpu_resize: boolean("cpu_resize"), memory_resize: boolean("memory_resize"),
|
|
74
|
+
secrets_update: boolean("secrets_update"), checkpoint_create: optional("checkpoint_create"),
|
|
75
|
+
disk_checkpoint_create: optional("disk_checkpoint_create"),
|
|
76
|
+
};
|
|
54
77
|
}
|
|
55
78
|
export function jsonMemory(value) {
|
|
56
79
|
const fields = jsonObject(value), uint = (name) => jsonUint(fields.get(name), 64);
|
|
@@ -60,4 +83,74 @@ export function jsonCpu(value) {
|
|
|
60
83
|
const fields = jsonObject(value), uint = (name) => Number(jsonUint(fields.get(name), 32));
|
|
61
84
|
return { possible: uint("possible"), requested_online: uint("requested_online"), actual_online: uint("actual_online"), enforced: uint("enforced") };
|
|
62
85
|
}
|
|
86
|
+
export function jsonCheckpoint(value) {
|
|
87
|
+
const fields = jsonObject(value), uint = (name) => jsonUint(fields.get(name), 64);
|
|
88
|
+
return {
|
|
89
|
+
checkpoint_id: jsonText(fields.get("checkpoint_id")), checkpoint_root: jsonText(fields.get("checkpoint_root")),
|
|
90
|
+
path: jsonText(fields.get("path")), memory_mode: jsonText(fields.get("memory_mode")),
|
|
91
|
+
memory_logical_bytes: uint("memory_logical_bytes"), memory_emitted_bytes: uint("memory_emitted_bytes"),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export function jsonDiskCheckpoint(value) {
|
|
95
|
+
const fields = jsonObject(value);
|
|
96
|
+
const owned = fields.get("owned_volumes");
|
|
97
|
+
if (owned !== undefined && !Array.isArray(owned))
|
|
98
|
+
throw new ClientError("invalid_data");
|
|
99
|
+
if (!fields.has("disk"))
|
|
100
|
+
throw new ClientError("invalid_data");
|
|
101
|
+
return {
|
|
102
|
+
checkpoint_id: jsonText(fields.get("checkpoint_id")), path: jsonText(fields.get("path")),
|
|
103
|
+
disk: fields.get("disk"), owned_volumes: owned ?? [],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export function jsonBranch(value) {
|
|
107
|
+
return { path: jsonText(value) };
|
|
108
|
+
}
|
|
109
|
+
export function jsonPause(value) {
|
|
110
|
+
const fields = jsonObject(value);
|
|
111
|
+
const unavailable = fields.get("capture_unavailable");
|
|
112
|
+
if (unavailable !== undefined && unavailable !== null && typeof unavailable !== "string")
|
|
113
|
+
throw new ClientError("invalid_data");
|
|
114
|
+
return {
|
|
115
|
+
paused: jsonBool(fields.get("paused")), recovery_required: jsonBool(fields.get("recovery_required")),
|
|
116
|
+
...(typeof unavailable === "string" ? { capture_unavailable: unavailable } : {}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export function jsonRootDisk(value) {
|
|
120
|
+
const fields = jsonObject(value), uint = (name) => jsonUint(fields.get(name), 64);
|
|
121
|
+
return {
|
|
122
|
+
filesystem_bytes: uint("filesystem_bytes"), device_bytes: uint("device_bytes"), total_us: uint("total_us"),
|
|
123
|
+
pause_us: uint("pause_us"), guest_us: uint("guest_us"),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export function jsonDiskCompaction(value) {
|
|
127
|
+
const fields = jsonObject(value), uint = (name) => jsonUint(fields.get(name), 64);
|
|
128
|
+
const entries = fields.get("disks");
|
|
129
|
+
if (!Array.isArray(entries))
|
|
130
|
+
throw new ClientError("invalid_data");
|
|
131
|
+
const disks = entries.map(value => {
|
|
132
|
+
const disk = jsonObject(value), diskUint = (name) => jsonUint(disk.get(name), 64);
|
|
133
|
+
return {
|
|
134
|
+
guest_path: jsonText(disk.get("guest_path")), input_layers: diskUint("input_layers"),
|
|
135
|
+
selected_layers: diskUint("selected_layers"), output_layers: diskUint("output_layers"),
|
|
136
|
+
materialized_bytes: diskUint("materialized_bytes"), total_us: diskUint("total_us"),
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
dry_run: jsonBool(fields.get("dry_run")), input_layers: uint("input_layers"),
|
|
141
|
+
selected_layers: uint("selected_layers"), output_layers: uint("output_layers"),
|
|
142
|
+
materialized_bytes: uint("materialized_bytes"), total_us: uint("total_us"),
|
|
143
|
+
pause_us: uint("pause_us"), disks,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function jsonText(value) {
|
|
147
|
+
if (typeof value !== "string")
|
|
148
|
+
throw new ClientError("invalid_data");
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
function jsonBool(value) {
|
|
152
|
+
if (typeof value !== "boolean")
|
|
153
|
+
throw new ClientError("invalid_data");
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
63
156
|
//# sourceMappingURL=json-reply.js.map
|
package/dist/json-reply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-reply.js","sourceRoot":"","sources":["../src/json-reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"json-reply.js","sourceRoot":"","sources":["../src/json-reply.ts"],"names":[],"mappings":"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"}
|
package/dist/json-session.d.ts
CHANGED
|
@@ -2,22 +2,22 @@ import { type ConnectOptions, type RequestOptions } from "@microsandbox/protocol
|
|
|
2
2
|
import { ControlAttempt } from "./attempt.js";
|
|
3
3
|
import type { ControlDialer } from "./dialer.js";
|
|
4
4
|
import { JsonReply, type ControlMode } from "./json-reply.js";
|
|
5
|
-
import { type
|
|
6
|
-
import { type
|
|
5
|
+
import { type ExtendedLegacyControlRequest } from "./legacy-request.js";
|
|
6
|
+
import { type RuntimeCapabilities } from "./records.js";
|
|
7
7
|
/** Shared internal owner used by the explicit adapter and automatic connection. */
|
|
8
8
|
export declare class JsonSession {
|
|
9
9
|
#private;
|
|
10
10
|
readonly dialer: ControlDialer;
|
|
11
|
-
readonly
|
|
11
|
+
readonly expectedMode?: ControlMode | undefined;
|
|
12
12
|
readonly options: ConnectOptions;
|
|
13
|
-
constructor(dialer: ControlDialer, options: ConnectOptions,
|
|
13
|
+
constructor(dialer: ControlDialer, options: ConnectOptions, expectedMode?: ControlMode | undefined);
|
|
14
14
|
isClosed(): boolean;
|
|
15
15
|
close(): Promise<void>;
|
|
16
16
|
discover(attempt: ControlAttempt): Promise<{
|
|
17
17
|
mode: ControlMode;
|
|
18
|
-
capabilities:
|
|
18
|
+
capabilities: RuntimeCapabilities;
|
|
19
19
|
}>;
|
|
20
|
-
operation(request:
|
|
20
|
+
operation(request: ExtendedLegacyControlRequest, options?: RequestOptions): Promise<JsonReply>;
|
|
21
21
|
private exchange;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=json-session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-session.d.ts","sourceRoot":"","sources":["../src/json-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACzI,OAAO,EAAkB,cAAc,EAAiC,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"json-session.d.ts","sourceRoot":"","sources":["../src/json-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACzI,OAAO,EAAkB,cAAc,EAAiC,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,EAA2B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAqB,KAAK,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAwD,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9G,mFAAmF;AACnF,qBAAa,WAAW;;IAIV,QAAQ,CAAC,MAAM,EAAE,aAAa;IAA2B,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW;IADxG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;gBACZ,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAW,YAAY,CAAC,EAAE,WAAW,YAAA;IAIxG,QAAQ,IAAI,OAAO;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAKpG,SAAS,CAAC,OAAO,EAAE,4BAA4B,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;YAyB1F,QAAQ;CAyCvB"}
|
package/dist/json-session.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { ClientError, defaultLimits } from "@microsandbox/protocol-client";
|
|
2
2
|
import { closeTransport, ControlAttempt, controlError, validateTimeout } from "./attempt.js";
|
|
3
3
|
import { ControlClientError } from "./error.js";
|
|
4
|
-
import { JsonReply,
|
|
4
|
+
import { JsonReply, jsonRuntimeCapabilities } from "./json-reply.js";
|
|
5
5
|
import { encodeJsonRequest } from "./legacy-request.js";
|
|
6
6
|
import { DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SETUP_TIMEOUT_MS } from "./records.js";
|
|
7
7
|
/** Shared internal owner used by the explicit adapter and automatic connection. */
|
|
8
8
|
export class JsonSession {
|
|
9
9
|
dialer;
|
|
10
|
-
|
|
10
|
+
expectedMode;
|
|
11
11
|
#closed = new AbortController();
|
|
12
12
|
#transports = new Set();
|
|
13
13
|
options;
|
|
14
|
-
constructor(dialer, options,
|
|
14
|
+
constructor(dialer, options, expectedMode) {
|
|
15
15
|
this.dialer = dialer;
|
|
16
|
-
this.
|
|
16
|
+
this.expectedMode = expectedMode;
|
|
17
17
|
this.options = { ...options, limits: defaultLimits(options.limits) };
|
|
18
18
|
validateTimeout(options.setupTimeoutMs ?? DEFAULT_SETUP_TIMEOUT_MS);
|
|
19
19
|
}
|
|
@@ -25,7 +25,7 @@ export class JsonSession {
|
|
|
25
25
|
async discover(attempt) {
|
|
26
26
|
const reply = await this.exchange(encodeJsonRequest({ op: "capabilities" }), attempt, attempt, 64 * 1024);
|
|
27
27
|
const mode = reply.discoveryMode();
|
|
28
|
-
return { mode, capabilities:
|
|
28
|
+
return { mode, capabilities: jsonRuntimeCapabilities(reply.value.get("capabilities")) };
|
|
29
29
|
}
|
|
30
30
|
async operation(request, options = {}) {
|
|
31
31
|
// Validate and serialize before discovery so unsupported/invalid native
|
|
@@ -35,7 +35,7 @@ export class JsonSession {
|
|
|
35
35
|
let setup;
|
|
36
36
|
try {
|
|
37
37
|
setup = new ControlAttempt(Math.min(attempt.remaining(), this.options.setupTimeoutMs ?? DEFAULT_SETUP_TIMEOUT_MS), [attempt.signal]);
|
|
38
|
-
if (this.
|
|
38
|
+
if (this.expectedMode && !this.dialer.verifier) {
|
|
39
39
|
let mode;
|
|
40
40
|
try {
|
|
41
41
|
mode = (await this.discover(setup)).mode;
|
|
@@ -46,7 +46,7 @@ export class JsonSession {
|
|
|
46
46
|
const failure = controlError(error);
|
|
47
47
|
throw failure instanceof ClientError ? failure.withDelivery("not_sent") : failure;
|
|
48
48
|
}
|
|
49
|
-
if (mode !==
|
|
49
|
+
if (mode !== this.expectedMode)
|
|
50
50
|
throw new ControlClientError("runtime_changed");
|
|
51
51
|
}
|
|
52
52
|
return await this.exchange(line, attempt, setup);
|
package/dist/json-session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-session.js","sourceRoot":"","sources":["../src/json-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAgE,MAAM,+BAA+B,CAAC;AACzI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"json-session.js","sourceRoot":"","sources":["../src/json-session.ts"],"names":[],"mappings":"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"}
|
package/dist/legacy-request.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type OutboundMessage, type Request } from "@microsandbox/protocol-client";
|
|
2
2
|
import type { JsonReply } from "./json-reply.js";
|
|
3
|
-
import { type SecretChange } from "./records.js";
|
|
3
|
+
import { type BranchCreate, type CheckpointCreate, type DiskCheckpointCreate, type DiskCompact, type Pause, type SecretChange } from "./records.js";
|
|
4
4
|
/** Existing JSON operation spellings, independent of the CBOR envelope. */
|
|
5
5
|
export type LegacyControlRequest = {
|
|
6
6
|
op: "capabilities" | "memory_state" | "cpu_state";
|
|
@@ -14,13 +14,38 @@ export type LegacyControlRequest = {
|
|
|
14
14
|
op: "secrets_update";
|
|
15
15
|
changes: readonly SecretChange[];
|
|
16
16
|
};
|
|
17
|
+
/** JSON fallback operations added alongside framed control generation two. */
|
|
18
|
+
export type ExtendedLegacyControlRequest = LegacyControlRequest | ({
|
|
19
|
+
op: "checkpoint_create";
|
|
20
|
+
} & CheckpointCreate) | ({
|
|
21
|
+
op: "disk_checkpoint_create";
|
|
22
|
+
} & DiskCheckpointCreate) | ({
|
|
23
|
+
op: "branch_create";
|
|
24
|
+
} & BranchCreate) | ({
|
|
25
|
+
op: "pause_with_guest_flush";
|
|
26
|
+
} & Required<Pause>) | {
|
|
27
|
+
op: "pause" | "resume" | "pause_state";
|
|
28
|
+
} | {
|
|
29
|
+
op: "root_disk_grow";
|
|
30
|
+
size_bytes: bigint;
|
|
31
|
+
} | ({
|
|
32
|
+
op: "disk_compact";
|
|
33
|
+
} & DiskCompact);
|
|
17
34
|
/** Prepared operations can decode either actual response representation. */
|
|
18
35
|
export interface CheckedControlRequest<T> extends Request<T> {
|
|
19
36
|
jsonRequest(): LegacyControlRequest;
|
|
20
37
|
decodeJson(reply: JsonReply): T;
|
|
21
38
|
}
|
|
39
|
+
/** Generation-aware requests choose legacy JSON before sending when a peer negotiated generation one. */
|
|
40
|
+
export interface CompatibleControlRequest<T> extends Request<T> {
|
|
41
|
+
readonly minGeneration: number;
|
|
42
|
+
jsonRequest(): ExtendedLegacyControlRequest;
|
|
43
|
+
decodeJson(reply: JsonReply): T;
|
|
44
|
+
}
|
|
45
|
+
export type AnyControlRequest<T> = CheckedControlRequest<T> | CompatibleControlRequest<T>;
|
|
46
|
+
export declare function requestMinGeneration<T>(request: AnyControlRequest<T>): number;
|
|
22
47
|
export declare function nativeJsonRequest(message: OutboundMessage): LegacyControlRequest;
|
|
23
48
|
/** Validate and snapshot without passing a large legacy batch through CBOR. */
|
|
24
49
|
export declare function snapshotChanges(value: unknown): readonly SecretChange[];
|
|
25
|
-
export declare function encodeJsonRequest(request:
|
|
50
|
+
export declare function encodeJsonRequest(request: ExtendedLegacyControlRequest): Uint8Array;
|
|
26
51
|
//# sourceMappingURL=legacy-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-request.d.ts","sourceRoot":"","sources":["../src/legacy-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"legacy-request.d.ts","sourceRoot":"","sources":["../src/legacy-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACQ,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAChF,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAChD,MAAM,cAAc,CAAC;AAEtB,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,cAAc,GAAG,cAAc,GAAG,WAAW,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,CAAC;AAE/D,8EAA8E;AAC9E,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,GAC3D,CAAC;IAAE,EAAE,EAAE,mBAAmB,CAAA;CAAE,GAAG,gBAAgB,CAAC,GAChD,CAAC;IAAE,EAAE,EAAE,wBAAwB,CAAA;CAAE,GAAG,oBAAoB,CAAC,GACzD,CAAC;IAAE,EAAE,EAAE,eAAe,CAAA;CAAE,GAAG,YAAY,CAAC,GACxC,CAAC;IAAE,EAAE,EAAE,wBAAwB,CAAA;CAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GACpD;IAAE,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC5C,CAAC;IAAE,EAAE,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,CAAC,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC1D,WAAW,IAAI,oBAAoB,CAAC;IACpC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC;CACjC;AAED,yGAAyG;AACzG,MAAM,WAAW,wBAAwB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,WAAW,IAAI,4BAA4B,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAE1F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,CAE7E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,oBAAoB,CAYhF;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,YAAY,EAAE,CAcvE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,UAAU,CAqBnF"}
|
package/dist/legacy-request.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ClientError } from "@microsandbox/protocol-client";
|
|
2
2
|
import { ControlClientError } from "./error.js";
|
|
3
|
-
import { checkedUint } from "./records.js";
|
|
3
|
+
import { checkedUint, } from "./records.js";
|
|
4
|
+
export function requestMinGeneration(request) {
|
|
5
|
+
return "minGeneration" in request ? request.minGeneration : 1;
|
|
6
|
+
}
|
|
4
7
|
export function nativeJsonRequest(message) {
|
|
5
8
|
if (message.kind !== "typed")
|
|
6
9
|
throw new ControlClientError("unsupported_mode");
|
|
@@ -52,6 +55,25 @@ export function encodeJsonRequest(request) {
|
|
|
52
55
|
case "secrets_update":
|
|
53
56
|
line = JSON.stringify({ op: request.op, changes: snapshotChanges(request.changes) });
|
|
54
57
|
break;
|
|
58
|
+
case "checkpoint_create":
|
|
59
|
+
case "disk_checkpoint_create":
|
|
60
|
+
case "branch_create":
|
|
61
|
+
case "pause_with_guest_flush":
|
|
62
|
+
line = JSON.stringify(request);
|
|
63
|
+
break;
|
|
64
|
+
case "pause":
|
|
65
|
+
case "resume":
|
|
66
|
+
case "pause_state":
|
|
67
|
+
line = JSON.stringify({ op: request.op });
|
|
68
|
+
break;
|
|
69
|
+
case "root_disk_grow":
|
|
70
|
+
line = '{"op":"root_disk_grow","size_bytes":' + uint(request.size_bytes, 64).toString() + "}";
|
|
71
|
+
break;
|
|
72
|
+
case "disk_compact": {
|
|
73
|
+
const layers = request.layers === undefined ? "" : ',"layers":' + uint(request.layers, 64).toString();
|
|
74
|
+
line = '{"op":"disk_compact","target":' + JSON.stringify(request.target) + layers + ',"dry_run":' + request.dry_run + "}";
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
55
77
|
default: throw new ClientError("invalid_data");
|
|
56
78
|
}
|
|
57
79
|
return new TextEncoder().encode(line + "\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-request.js","sourceRoot":"","sources":["../src/legacy-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsC,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,
|
|
1
|
+
{"version":3,"file":"legacy-request.js","sourceRoot":"","sources":["../src/legacy-request.ts"],"names":[],"mappings":"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"}
|