@volter/browser-sandboxes 0.1.5 → 0.1.7
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/dist/bin/control-plane.js +0 -0
- package/dist/bin/mcp.js +0 -0
- package/dist/client.d.ts +26 -27
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +270 -194
- package/dist/client.js.map +1 -1
- package/dist/contract.d.ts +11 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +74 -26
- package/dist/contract.js.map +1 -1
- package/dist/control-plane-client.js +1 -1
- package/dist/control-plane.js +1 -1
- package/dist/control-plane.js.map +1 -1
- package/dist/manager.d.ts +1 -1
- package/dist/manager.js +2 -2
- package/dist/transfer.d.ts.map +1 -1
- package/dist/transfer.js +8 -7
- package/dist/transfer.js.map +1 -1
- package/package.json +1 -1
|
File without changes
|
package/dist/bin/mcp.js
CHANGED
|
File without changes
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { multiplexFrame } from "@volter/browser-runtime/docker-engine.js";
|
|
2
2
|
export interface RemoteProcessOptions {
|
|
3
3
|
cwd?: string;
|
|
4
4
|
env?: Record<string, string>;
|
|
@@ -42,14 +42,13 @@ export interface RemotePtyOptions {
|
|
|
42
42
|
env?: Record<string, string>;
|
|
43
43
|
}
|
|
44
44
|
export interface RemotePtySession {
|
|
45
|
-
id:
|
|
45
|
+
id: string;
|
|
46
46
|
pid: number;
|
|
47
47
|
cols: number;
|
|
48
48
|
rows: number;
|
|
49
|
-
allocator: "
|
|
50
|
-
resizable:
|
|
51
|
-
write(data: string | Uint8Array): Promise<
|
|
52
|
-
/** Resolves the applied size, or rejects when the allocator cannot resize. */
|
|
49
|
+
allocator: "exec";
|
|
50
|
+
resizable: true;
|
|
51
|
+
write(data: string | Uint8Array): Promise<void>;
|
|
53
52
|
resize(cols: number, rows: number): Promise<{
|
|
54
53
|
cols: number;
|
|
55
54
|
rows: number;
|
|
@@ -64,7 +63,7 @@ export interface RemoteFileEntry {
|
|
|
64
63
|
size: number;
|
|
65
64
|
}
|
|
66
65
|
export interface RemoteArchive {
|
|
67
|
-
format: "
|
|
66
|
+
format: "tar";
|
|
68
67
|
bytes: Uint8Array;
|
|
69
68
|
integrity: string | null;
|
|
70
69
|
entries: number;
|
|
@@ -93,6 +92,8 @@ export interface RemoteRuntimeOptions {
|
|
|
93
92
|
* the fetch it captured before booting the runtime.
|
|
94
93
|
*/
|
|
95
94
|
fetch?: typeof fetch;
|
|
95
|
+
/** Makes the socket for an exec; a tab passes the page's own, the default is a real WebSocket. */
|
|
96
|
+
socket?: (url: string) => WebSocket;
|
|
96
97
|
}
|
|
97
98
|
export type RemoteBearerToken = string | (() => string | undefined);
|
|
98
99
|
type Listener = (event: Record<string, unknown>) => void;
|
|
@@ -110,10 +111,7 @@ export declare class RemoteRuntime {
|
|
|
110
111
|
remove(path: string): Promise<{
|
|
111
112
|
ok: true;
|
|
112
113
|
}>;
|
|
113
|
-
|
|
114
|
-
files: unknown[];
|
|
115
|
-
}>;
|
|
116
|
-
export(root?: string, format?: "zip" | "json", options?: {
|
|
114
|
+
export(root?: string, format?: "tar", options?: {
|
|
117
115
|
exclude?: readonly string[];
|
|
118
116
|
}): Promise<RemoteArchive>;
|
|
119
117
|
import(bytes: Uint8Array, options?: {
|
|
@@ -122,42 +120,41 @@ export declare class RemoteRuntime {
|
|
|
122
120
|
}): Promise<RemoteImportResult>;
|
|
123
121
|
};
|
|
124
122
|
private readonly base;
|
|
125
|
-
/** The catalogue's base path, from the negotiated descriptor; /v1 until then. */
|
|
126
|
-
private basePath;
|
|
127
|
-
/** The agent's descriptor once negotiated. */
|
|
128
|
-
descriptor: HostedProtocolDescriptor | undefined;
|
|
129
123
|
private readonly token;
|
|
130
124
|
private readonly network;
|
|
125
|
+
private readonly makeSocket;
|
|
131
126
|
private readonly listeners;
|
|
132
|
-
private readonly outputs;
|
|
133
|
-
private readonly pending;
|
|
134
127
|
private readonly abort;
|
|
128
|
+
/** The one container this daemon holds, known after `connect`. */
|
|
129
|
+
private containerId;
|
|
130
|
+
private startedAt;
|
|
135
131
|
constructor(baseUrl: string, token: RemoteBearerToken, options?: RemoteRuntimeOptions);
|
|
132
|
+
private get container();
|
|
136
133
|
/**
|
|
137
|
-
*
|
|
138
|
-
* the
|
|
139
|
-
* refused with
|
|
134
|
+
* Pings the daemon, finds its one container, opens the event stream, and
|
|
135
|
+
* returns the container's health. A server that is not a Docker daemon of
|
|
136
|
+
* ours is refused with its status.
|
|
140
137
|
*/
|
|
141
138
|
connect(): Promise<RemoteHealth>;
|
|
142
139
|
private consume;
|
|
143
140
|
private dispatch;
|
|
144
141
|
on(type: string, listener: Listener): () => void;
|
|
142
|
+
private execCreate;
|
|
143
|
+
private execExitCode;
|
|
144
|
+
private execSocket;
|
|
145
145
|
start(command: string, options?: RemoteProcessOptions): Promise<RemoteProcessHandle>;
|
|
146
146
|
spawn(command: string, options?: RemoteProcessOptions): Promise<RemoteProcessResult>;
|
|
147
|
-
/** A terminal session
|
|
147
|
+
/** A terminal session: an exec of the command with a TTY over the socket; bytes in, bytes out. */
|
|
148
148
|
openPty(options?: RemotePtyOptions): Promise<RemotePtySession>;
|
|
149
|
-
/**
|
|
150
|
-
private startTerminalProcess;
|
|
151
|
-
/** GET / on the agent, judged by the protocol the client speaks. */
|
|
152
|
-
negotiate(): Promise<HostedProtocolDescriptor>;
|
|
153
|
-
/** The agent's health; never counts as activity on the agent. */
|
|
149
|
+
/** The container's health, from inspect and top; never counts as activity on the daemon's clock beyond the request. */
|
|
154
150
|
health(): Promise<RemoteHealth>;
|
|
155
151
|
processes(): Promise<RemoteProcessInfo[]>;
|
|
156
152
|
ports(): Promise<number[]>;
|
|
157
153
|
portUrl(port: number): string;
|
|
158
154
|
request(port: number, input?: string | URL, init?: RequestInit): Promise<Response>;
|
|
155
|
+
/** The profiler's rows, carried under `substrate` in Docker's stats. */
|
|
159
156
|
metrics(): Promise<Record<string, unknown>>;
|
|
160
|
-
/** A WebSocket to a guest port, tunnelled through the
|
|
157
|
+
/** A WebSocket to a guest port, tunnelled through the daemon. */
|
|
161
158
|
webSocket(port: number, input?: string | URL): WebSocket;
|
|
162
159
|
close(): void;
|
|
163
160
|
private call;
|
|
@@ -165,5 +162,7 @@ export declare class RemoteRuntime {
|
|
|
165
162
|
private ok;
|
|
166
163
|
private json;
|
|
167
164
|
}
|
|
165
|
+
/** Frames a chunk the way the daemon frames stdout, for tests and tools that need the shape. */
|
|
166
|
+
export declare const dockerFrame: typeof multiplexFrame;
|
|
168
167
|
export {};
|
|
169
168
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,64 +1,132 @@
|
|
|
1
|
-
// A
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
// A client of the container's wire (ADR-0026): Docker's Engine API, the
|
|
2
|
+
// named subset, over fetch and a WebSocket, with the in-page runtime's method
|
|
3
|
+
// names so a tab drives a hosted container the way it drives its own. Where
|
|
4
|
+
// Docker's API lacks a thing the transfer needs, the client speaks the row
|
|
5
|
+
// the daemon names: a port through the daemon, an event stream, a file
|
|
6
|
+
// listing and removal, and an archive `exclude`, `replace` and `strip`.
|
|
7
|
+
// Browser-safe: no Node globals.
|
|
8
|
+
import { DOCKER_ENGINE_BASE_PATH, multiplexFrame } from "@volter/browser-runtime/docker-engine.js";
|
|
9
|
+
import { packTar, unpackTar } from "@volter/browser-runtime/browser-tar.js";
|
|
10
|
+
const KILL_CLOSE_CODE = 4001;
|
|
8
11
|
function toBody(data) {
|
|
9
|
-
return typeof data === "string" ? data : data
|
|
12
|
+
return typeof data === "string" ? data : new Uint8Array(data).buffer;
|
|
13
|
+
}
|
|
14
|
+
function dirname(path) { const index = path.lastIndexOf("/"); return index <= 0 ? "/" : path.slice(0, index); }
|
|
15
|
+
function basename(path) { return path.slice(path.lastIndexOf("/") + 1); }
|
|
16
|
+
/** Splits Docker's multiplexed stream into stdout and stderr chunks, across message boundaries. */
|
|
17
|
+
class FrameParser {
|
|
18
|
+
onFrame;
|
|
19
|
+
buffered = new Uint8Array(0);
|
|
20
|
+
constructor(onFrame) {
|
|
21
|
+
this.onFrame = onFrame;
|
|
22
|
+
}
|
|
23
|
+
push(bytes) {
|
|
24
|
+
const joined = new Uint8Array(this.buffered.byteLength + bytes.byteLength);
|
|
25
|
+
joined.set(this.buffered);
|
|
26
|
+
joined.set(bytes, this.buffered.byteLength);
|
|
27
|
+
let offset = 0;
|
|
28
|
+
while (joined.byteLength - offset >= 8) {
|
|
29
|
+
const size = new DataView(joined.buffer, joined.byteOffset + offset).getUint32(4, false);
|
|
30
|
+
if (joined.byteLength - offset < 8 + size)
|
|
31
|
+
break;
|
|
32
|
+
this.onFrame(joined[offset], joined.subarray(offset + 8, offset + 8 + size));
|
|
33
|
+
offset += 8 + size;
|
|
34
|
+
}
|
|
35
|
+
this.buffered = joined.slice(offset);
|
|
36
|
+
}
|
|
10
37
|
}
|
|
11
38
|
export class RemoteRuntime {
|
|
12
39
|
files;
|
|
13
40
|
base;
|
|
14
|
-
/** The catalogue's base path, from the negotiated descriptor; /v1 until then. */
|
|
15
|
-
basePath = SUBSTRATE_PROTOCOL_BASE_PATH;
|
|
16
|
-
/** The agent's descriptor once negotiated. */
|
|
17
|
-
descriptor;
|
|
18
41
|
token;
|
|
19
42
|
network;
|
|
43
|
+
makeSocket;
|
|
20
44
|
listeners = new Map();
|
|
21
|
-
outputs = new Map();
|
|
22
|
-
pending = new Map();
|
|
23
45
|
abort = new AbortController();
|
|
46
|
+
/** The one container this daemon holds, known after `connect`. */
|
|
47
|
+
containerId;
|
|
48
|
+
startedAt = Date.now();
|
|
24
49
|
constructor(baseUrl, token, options = {}) {
|
|
25
50
|
this.base = baseUrl.replace(/\/$/, "");
|
|
26
51
|
this.token = token;
|
|
27
52
|
this.network = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
53
|
+
this.makeSocket = options.socket ?? ((url) => new WebSocket(url));
|
|
28
54
|
this.files = {
|
|
29
|
-
read: async (p) =>
|
|
55
|
+
read: async (p) => {
|
|
56
|
+
const entries = unpackTar(new Uint8Array(await (await this.ok(await this.call(`${this.container}/archive?path=${encodeURIComponent(p)}`))).arrayBuffer()));
|
|
57
|
+
const file = entries.find((entry) => entry.type === "file");
|
|
58
|
+
if (!file)
|
|
59
|
+
throw new Error(`${p} is not a file`);
|
|
60
|
+
return file.data ?? new Uint8Array(0);
|
|
61
|
+
},
|
|
30
62
|
readText: async (p) => new TextDecoder().decode(await this.files.read(p)),
|
|
31
|
-
write: async (p, data) =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
write: async (p, data) => {
|
|
64
|
+
const bytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
65
|
+
const tar = packTar([{ path: basename(p), type: "file", mode: 0o644, mtime: Math.floor(Date.now() / 1000), data: bytes }]);
|
|
66
|
+
await this.files.mkdir(dirname(p));
|
|
67
|
+
await this.ok(await this.call(`${this.container}/archive?path=${encodeURIComponent(dirname(p))}`, { method: "PUT", headers: { "content-type": "application/x-tar" }, body: toBody(tar) }));
|
|
68
|
+
return { ok: true };
|
|
69
|
+
},
|
|
70
|
+
list: async (p) => (await this.json(await this.call(`${this.container}/files?path=${encodeURIComponent(p)}`))).map(({ name, type, size }) => ({ name, type, size })),
|
|
71
|
+
mkdir: async (p) => {
|
|
72
|
+
// A directory is made by extracting one into its parent, parent by parent from the root down.
|
|
73
|
+
const parts = p.split("/").filter(Boolean);
|
|
74
|
+
for (let depth = 1; depth <= parts.length; depth += 1) {
|
|
75
|
+
const parent = `/${parts.slice(0, depth - 1).join("/")}`;
|
|
76
|
+
const name = parts[depth - 1];
|
|
77
|
+
const listed = await this.files.list(parent).catch(() => []);
|
|
78
|
+
if (listed.some((entry) => entry.name === name))
|
|
79
|
+
continue;
|
|
80
|
+
const tar = packTar([{ path: name, type: "directory", mode: 0o755, mtime: Math.floor(Date.now() / 1000) }]);
|
|
81
|
+
await this.ok(await this.call(`${this.container}/archive?path=${encodeURIComponent(parent)}`, { method: "PUT", headers: { "content-type": "application/x-tar" }, body: toBody(tar) }));
|
|
82
|
+
}
|
|
83
|
+
return { ok: true };
|
|
84
|
+
},
|
|
85
|
+
remove: async (p) => { await this.ok(await this.call(`${this.container}/files?path=${encodeURIComponent(p)}`, { method: "DELETE" })); return { ok: true }; },
|
|
86
|
+
export: async (root = "/workspace", _format = "tar", options = {}) => {
|
|
37
87
|
const exclude = options.exclude?.length ? `&exclude=${encodeURIComponent(options.exclude.join(","))}` : "";
|
|
38
|
-
const response = await this.ok(await this.call(
|
|
88
|
+
const response = await this.ok(await this.call(`${this.container}/archive?path=${encodeURIComponent(root)}${exclude}`));
|
|
39
89
|
return {
|
|
40
|
-
format,
|
|
90
|
+
format: "tar",
|
|
41
91
|
bytes: new Uint8Array(await response.arrayBuffer()),
|
|
42
92
|
integrity: response.headers.get("x-substrate-integrity"),
|
|
43
93
|
entries: Number(response.headers.get("x-substrate-entries")),
|
|
44
94
|
fileBytes: Number(response.headers.get("x-substrate-file-bytes")),
|
|
45
95
|
};
|
|
46
96
|
},
|
|
47
|
-
import: async (bytes, { root = "/workspace", replace = true } = {}) =>
|
|
97
|
+
import: async (bytes, { root = "/workspace", replace = true } = {}) => {
|
|
98
|
+
await this.files.mkdir(root);
|
|
99
|
+
// The archive's top entry is the tree's own name; `strip=1` lands its contents in `root`.
|
|
100
|
+
const summary = await this.json(await this.call(`${this.container}/archive?path=${encodeURIComponent(root)}&replace=${replace}&strip=1`, { method: "PUT", headers: { "content-type": "application/x-tar" }, body: toBody(bytes) }));
|
|
101
|
+
return { format: "tar", ...summary };
|
|
102
|
+
},
|
|
48
103
|
};
|
|
49
104
|
}
|
|
105
|
+
get container() {
|
|
106
|
+
if (!this.containerId)
|
|
107
|
+
throw new Error("connect() first: the container is not known yet.");
|
|
108
|
+
return `/containers/${this.containerId}`;
|
|
109
|
+
}
|
|
50
110
|
/**
|
|
51
|
-
*
|
|
52
|
-
* the
|
|
53
|
-
* refused with
|
|
111
|
+
* Pings the daemon, finds its one container, opens the event stream, and
|
|
112
|
+
* returns the container's health. A server that is not a Docker daemon of
|
|
113
|
+
* ours is refused with its status.
|
|
54
114
|
*/
|
|
55
115
|
async connect() {
|
|
56
|
-
await this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
116
|
+
const ping = await this.call("/_ping");
|
|
117
|
+
if (!ping.ok)
|
|
118
|
+
throw new Error(`${this.base} did not answer Docker's ping: ${ping.status} ${await ping.text().catch(() => "")}`);
|
|
119
|
+
const containers = await this.json(await this.call("/containers/json"));
|
|
120
|
+
const first = containers[0];
|
|
121
|
+
if (!first)
|
|
122
|
+
throw new Error(`${this.base} holds no container.`);
|
|
123
|
+
this.containerId = first.Id;
|
|
124
|
+
this.startedAt = first.Created * 1000;
|
|
125
|
+
const events = await this.call(`${this.container}/events`, { signal: this.abort.signal });
|
|
126
|
+
await this.ok(events);
|
|
127
|
+
if (events.body)
|
|
128
|
+
void this.consume(events.body);
|
|
129
|
+
return this.health();
|
|
62
130
|
}
|
|
63
131
|
async consume(body) {
|
|
64
132
|
const decoder = new TextDecoder();
|
|
@@ -86,26 +154,7 @@ export class RemoteRuntime {
|
|
|
86
154
|
}
|
|
87
155
|
}
|
|
88
156
|
dispatch(event) {
|
|
89
|
-
const
|
|
90
|
-
if (type === "pty-output" || type === "pty-exit") {
|
|
91
|
-
const key = `pty:${String(event.id)}`;
|
|
92
|
-
const sink = this.outputs.get(key);
|
|
93
|
-
if (sink)
|
|
94
|
-
sink(event);
|
|
95
|
-
else
|
|
96
|
-
this.pending.set(key, [...(this.pending.get(key) ?? []), event]);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
if (type === "output") {
|
|
100
|
-
const key = Number(event.pid);
|
|
101
|
-
const sink = this.outputs.get(key);
|
|
102
|
-
if (sink)
|
|
103
|
-
sink(event);
|
|
104
|
-
else
|
|
105
|
-
this.pending.set(key, [...(this.pending.get(key) ?? []), event]);
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
for (const listener of this.listeners.get(type) ?? [])
|
|
157
|
+
for (const listener of this.listeners.get(String(event.type)) ?? [])
|
|
109
158
|
listener(event);
|
|
110
159
|
}
|
|
111
160
|
on(type, listener) {
|
|
@@ -114,77 +163,158 @@ export class RemoteRuntime {
|
|
|
114
163
|
this.listeners.set(type, set);
|
|
115
164
|
return () => { set.delete(listener); };
|
|
116
165
|
}
|
|
117
|
-
async
|
|
118
|
-
|
|
119
|
-
return this.startTerminalProcess(command, options);
|
|
120
|
-
const { onStdout, onStderr, cwd, env, stdin } = options;
|
|
121
|
-
const started = await this.json(await this.call("/processes", {
|
|
166
|
+
async execCreate(cmd, options) {
|
|
167
|
+
const created = await this.json(await this.call(`${this.container}/exec`, {
|
|
122
168
|
method: "POST",
|
|
123
169
|
headers: { "content-type": "application/json" },
|
|
124
|
-
body: JSON.stringify({
|
|
170
|
+
body: JSON.stringify({
|
|
171
|
+
Cmd: cmd,
|
|
172
|
+
Tty: options.tty,
|
|
173
|
+
AttachStdin: options.stdin,
|
|
174
|
+
AttachStdout: true,
|
|
175
|
+
AttachStderr: true,
|
|
176
|
+
...(options.cwd !== undefined ? { WorkingDir: options.cwd } : {}),
|
|
177
|
+
...(options.env ? { Env: Object.entries(options.env).map(([key, value]) => `${key}=${value}`) } : {}),
|
|
178
|
+
}),
|
|
125
179
|
}));
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
180
|
+
return created.Id;
|
|
181
|
+
}
|
|
182
|
+
async execExitCode(id) {
|
|
183
|
+
const inspect = await this.json(await this.call(`/exec/${id}/json`));
|
|
184
|
+
return inspect.ExitCode ?? 1;
|
|
185
|
+
}
|
|
186
|
+
execSocket(id, options = {}) {
|
|
187
|
+
const url = new URL(`${this.base}${DOCKER_ENGINE_BASE_PATH}/exec/${id}/start`);
|
|
188
|
+
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
|
|
189
|
+
url.searchParams.set("token", this.tokenValue());
|
|
190
|
+
if (options.rows)
|
|
191
|
+
url.searchParams.set("h", String(options.rows));
|
|
192
|
+
if (options.columns)
|
|
193
|
+
url.searchParams.set("w", String(options.columns));
|
|
194
|
+
const socket = this.makeSocket(url.href);
|
|
195
|
+
socket.binaryType = "arraybuffer";
|
|
196
|
+
return socket;
|
|
197
|
+
}
|
|
198
|
+
async start(command, options = {}) {
|
|
199
|
+
const tty = options.terminal !== undefined;
|
|
200
|
+
const wantsStdin = options.stdin !== undefined || options.stdinStream !== undefined || tty;
|
|
201
|
+
const id = await this.execCreate(["sh", "-c", command], { tty, stdin: wantsStdin, ...(options.cwd !== undefined ? { cwd: options.cwd } : {}), ...(options.env ? { env: options.env } : {}) });
|
|
202
|
+
const startedAt = Date.now();
|
|
131
203
|
let state = "running";
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
command: started.command,
|
|
142
|
-
startedAt: started.startedAt,
|
|
143
|
-
get state() { return state; },
|
|
144
|
-
result,
|
|
145
|
-
kill: () => { void this.call(`/processes/${started.pid}/kill`, { method: "POST" }); },
|
|
146
|
-
resize: () => undefined,
|
|
204
|
+
let stdout = "";
|
|
205
|
+
let stderr = "";
|
|
206
|
+
const decoderOut = new TextDecoder();
|
|
207
|
+
const decoderErr = new TextDecoder();
|
|
208
|
+
const onOut = (bytes) => { const text = decoderOut.decode(bytes, { stream: true }); stdout += text; options.onStdout?.(text); };
|
|
209
|
+
const onErr = (bytes) => { const text = decoderErr.decode(bytes, { stream: true }); stderr += text; options.onStderr?.(text); };
|
|
210
|
+
const settle = (exitCode) => {
|
|
211
|
+
state = "exited";
|
|
212
|
+
return { stdout, stderr, exitCode, ...(options.cwd !== undefined ? { cwd: options.cwd } : {}), ...(options.env ? { env: options.env } : {}) };
|
|
147
213
|
};
|
|
214
|
+
let kill = () => undefined;
|
|
215
|
+
let resize = () => undefined;
|
|
216
|
+
let result;
|
|
217
|
+
if (!wantsStdin) {
|
|
218
|
+
// Output only: the hijacked HTTP form, streamed.
|
|
219
|
+
const controller = new AbortController();
|
|
220
|
+
kill = () => controller.abort();
|
|
221
|
+
result = (async () => {
|
|
222
|
+
const response = await this.ok(await this.call(`/exec/${id}/start`, { method: "POST", headers: { "content-type": "application/json" }, body: "{}", signal: controller.signal }));
|
|
223
|
+
const parser = new FrameParser((stream, payload) => (stream === 2 ? onErr : onOut)(payload));
|
|
224
|
+
const reader = response.body?.getReader();
|
|
225
|
+
if (reader)
|
|
226
|
+
for (;;) {
|
|
227
|
+
const { done, value } = await reader.read();
|
|
228
|
+
if (done)
|
|
229
|
+
break;
|
|
230
|
+
parser.push(value);
|
|
231
|
+
}
|
|
232
|
+
return settle(await this.execExitCode(id));
|
|
233
|
+
})().catch((cause) => { state = "failed"; throw cause; });
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Input too: the socket, framed as the daemon frames it.
|
|
237
|
+
const socket = this.execSocket(id, tty ? { rows: options.terminal.rows, columns: options.terminal.columns } : {});
|
|
238
|
+
const parser = new FrameParser((stream, payload) => (stream === 2 ? onErr : onOut)(payload));
|
|
239
|
+
kill = () => socket.close(KILL_CLOSE_CODE, "kill");
|
|
240
|
+
resize = (columns, rows) => { void this.call(`/exec/${id}/resize?h=${rows}&w=${columns}`, { method: "POST" }).catch(() => undefined); };
|
|
241
|
+
const offResize = options.terminal?.onResize?.((columns, rows) => resize(columns, rows));
|
|
242
|
+
result = new Promise((resolve, reject) => {
|
|
243
|
+
socket.onmessage = (event) => {
|
|
244
|
+
const bytes = event.data instanceof ArrayBuffer ? new Uint8Array(event.data) : new TextEncoder().encode(String(event.data));
|
|
245
|
+
if (tty)
|
|
246
|
+
onOut(bytes);
|
|
247
|
+
else
|
|
248
|
+
parser.push(bytes);
|
|
249
|
+
};
|
|
250
|
+
socket.onopen = () => {
|
|
251
|
+
// End of input is an empty binary frame (the daemon's rule); the daemon closes the socket when the process exits.
|
|
252
|
+
if (options.stdin !== undefined) {
|
|
253
|
+
socket.send(options.stdin);
|
|
254
|
+
if (!tty)
|
|
255
|
+
socket.send(new ArrayBuffer(0));
|
|
256
|
+
}
|
|
257
|
+
if (options.stdinStream) {
|
|
258
|
+
void (async () => {
|
|
259
|
+
try {
|
|
260
|
+
for await (const chunk of options.stdinStream)
|
|
261
|
+
socket.send(new Uint8Array(chunk).buffer);
|
|
262
|
+
if (tty)
|
|
263
|
+
socket.send("\u0004");
|
|
264
|
+
else
|
|
265
|
+
socket.send(new ArrayBuffer(0));
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
socket.close(KILL_CLOSE_CODE, "stdin failed");
|
|
269
|
+
}
|
|
270
|
+
})();
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
socket.onerror = () => { state = "failed"; reject(new Error(`the exec's socket failed: ${command}`)); };
|
|
274
|
+
socket.onclose = () => {
|
|
275
|
+
offResize?.();
|
|
276
|
+
this.execExitCode(id).then((code) => resolve(settle(code)), (cause) => { state = "failed"; reject(cause instanceof Error ? cause : new Error(String(cause))); });
|
|
277
|
+
};
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
void result.catch(() => undefined);
|
|
281
|
+
return { pid: 0, command, startedAt, get state() { return state; }, result, kill: () => kill(), resize: (columns, rows) => resize(columns, rows) };
|
|
148
282
|
}
|
|
149
283
|
async spawn(command, options = {}) {
|
|
150
284
|
return (await this.start(command, options)).result;
|
|
151
285
|
}
|
|
152
|
-
/** A terminal session
|
|
286
|
+
/** A terminal session: an exec of the command with a TTY over the socket; bytes in, bytes out. */
|
|
153
287
|
async openPty(options = {}) {
|
|
154
|
-
const
|
|
155
|
-
const
|
|
288
|
+
const { command = "sh", cols = 80, rows = 24, cwd, env } = options;
|
|
289
|
+
const id = await this.execCreate(["sh", "-c", command], { tty: true, stdin: true, ...(cwd !== undefined ? { cwd } : {}), ...(env ? { env } : {}) });
|
|
290
|
+
const socket = this.execSocket(id, { rows, columns: cols });
|
|
156
291
|
const listeners = new Set();
|
|
157
292
|
const retained = [];
|
|
158
293
|
let retainedBytes = 0;
|
|
159
|
-
|
|
160
|
-
const exited = new Promise((resolve) => {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
retainedBytes -= retained.shift().byteLength;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
for (const listener of listeners)
|
|
172
|
-
listener(bytes);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
this.outputs.delete(key);
|
|
177
|
-
resolveExit(Number(event.exitCode));
|
|
294
|
+
const opened = new Promise((resolve, reject) => { socket.onopen = () => resolve(); socket.onerror = () => reject(new Error("the terminal's socket failed")); });
|
|
295
|
+
const exited = new Promise((resolve) => { socket.onclose = () => { void this.execExitCode(id).then(resolve, () => resolve(1)); }; });
|
|
296
|
+
socket.onmessage = (event) => {
|
|
297
|
+
const bytes = event.data instanceof ArrayBuffer ? new Uint8Array(event.data) : new TextEncoder().encode(String(event.data));
|
|
298
|
+
if (listeners.size === 0) {
|
|
299
|
+
retained.push(bytes);
|
|
300
|
+
retainedBytes += bytes.byteLength;
|
|
301
|
+
while (retainedBytes > 64 * 1_024 && retained.length > 1)
|
|
302
|
+
retainedBytes -= retained.shift().byteLength;
|
|
178
303
|
}
|
|
304
|
+
else
|
|
305
|
+
for (const listener of listeners)
|
|
306
|
+
listener(bytes);
|
|
179
307
|
};
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
sink(event);
|
|
183
|
-
this.pending.delete(key);
|
|
308
|
+
await opened;
|
|
309
|
+
let size = { cols, rows };
|
|
184
310
|
return {
|
|
185
|
-
id
|
|
186
|
-
write: (data) =>
|
|
187
|
-
resize: (
|
|
311
|
+
id, pid: 0, cols, rows, allocator: "exec", resizable: true,
|
|
312
|
+
write: async (data) => { socket.send(typeof data === "string" ? data : new Uint8Array(data).buffer); },
|
|
313
|
+
resize: async (nextCols, nextRows) => {
|
|
314
|
+
await this.ok(await this.call(`/exec/${id}/resize?h=${nextRows}&w=${nextCols}`, { method: "POST" }));
|
|
315
|
+
size = { cols: nextCols, rows: nextRows };
|
|
316
|
+
return size;
|
|
317
|
+
},
|
|
188
318
|
onData: (listener) => {
|
|
189
319
|
listeners.add(listener);
|
|
190
320
|
for (const bytes of retained.splice(0))
|
|
@@ -192,109 +322,53 @@ export class RemoteRuntime {
|
|
|
192
322
|
retainedBytes = 0;
|
|
193
323
|
return () => { listeners.delete(listener); };
|
|
194
324
|
},
|
|
195
|
-
kill: () =>
|
|
325
|
+
kill: () => socket.close(KILL_CLOSE_CODE, "kill"),
|
|
196
326
|
exited,
|
|
197
327
|
};
|
|
198
328
|
}
|
|
199
|
-
/**
|
|
200
|
-
async
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
const pty = await this.openPty({
|
|
204
|
-
command,
|
|
205
|
-
cols: terminal.columns,
|
|
206
|
-
rows: terminal.rows,
|
|
207
|
-
...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
|
|
208
|
-
...(options.env !== undefined ? { env: options.env } : {}),
|
|
209
|
-
});
|
|
210
|
-
const decoder = new TextDecoder();
|
|
211
|
-
let stdout = "";
|
|
212
|
-
let state = "running";
|
|
213
|
-
const offData = pty.onData((bytes) => {
|
|
214
|
-
const chunk = decoder.decode(bytes, { stream: true });
|
|
215
|
-
stdout += chunk;
|
|
216
|
-
options.onStdout?.(chunk);
|
|
217
|
-
});
|
|
218
|
-
const offResize = terminal.onResize?.((columns, rows) => {
|
|
219
|
-
void pty.resize(columns, rows).catch(() => undefined);
|
|
220
|
-
});
|
|
221
|
-
if (options.stdin !== undefined)
|
|
222
|
-
await pty.write(options.stdin);
|
|
223
|
-
if (options.stdinStream) {
|
|
224
|
-
void (async () => {
|
|
225
|
-
try {
|
|
226
|
-
for await (const chunk of options.stdinStream)
|
|
227
|
-
await pty.write(chunk);
|
|
228
|
-
await pty.write("\u0004");
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
pty.kill();
|
|
232
|
-
}
|
|
233
|
-
})();
|
|
234
|
-
}
|
|
235
|
-
const result = pty.exited.then((exitCode) => {
|
|
236
|
-
const tail = decoder.decode();
|
|
237
|
-
if (tail) {
|
|
238
|
-
stdout += tail;
|
|
239
|
-
options.onStdout?.(tail);
|
|
240
|
-
}
|
|
241
|
-
offData();
|
|
242
|
-
offResize?.();
|
|
243
|
-
state = "exited";
|
|
244
|
-
return { stdout, stderr: "", exitCode, ...(options.cwd !== undefined ? { cwd: options.cwd } : {}), ...(options.env !== undefined ? { env: options.env } : {}) };
|
|
245
|
-
}, (cause) => {
|
|
246
|
-
offData();
|
|
247
|
-
offResize?.();
|
|
248
|
-
state = "failed";
|
|
249
|
-
throw cause;
|
|
250
|
-
});
|
|
251
|
-
void result.catch(() => undefined);
|
|
329
|
+
/** The container's health, from inspect and top; never counts as activity on the daemon's clock beyond the request. */
|
|
330
|
+
async health() {
|
|
331
|
+
const inspect = await this.json(await this.call(`${this.container}/json`));
|
|
332
|
+
const top = await this.json(await this.call(`${this.container}/top`));
|
|
252
333
|
return {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
334
|
+
ok: true,
|
|
335
|
+
root: inspect.Config.WorkingDir,
|
|
336
|
+
portDiscovery: "inspect",
|
|
337
|
+
ports: Object.keys(inspect.NetworkSettings.Ports).map((key) => Number(key.split("/")[0])),
|
|
338
|
+
startedAt: this.startedAt,
|
|
339
|
+
lastActivityAt: Date.now(),
|
|
340
|
+
liveProcesses: top.Processes.filter((row) => row[2] === "running").length,
|
|
260
341
|
};
|
|
261
342
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
const descriptor = response.ok ? await response.json().catch(() => undefined) : undefined;
|
|
266
|
-
const negotiated = negotiateHostedProtocol(descriptor, { protocol: SUBSTRATE_AGENT_PROTOCOL });
|
|
267
|
-
if (!negotiated.ok)
|
|
268
|
-
throw new Error(`${this.base} is not a ${SUBSTRATE_AGENT_PROTOCOL} server: ${negotiated.reason}`);
|
|
269
|
-
this.descriptor = negotiated.descriptor;
|
|
270
|
-
this.basePath = negotiated.descriptor.basePath.replace(/\/$/, "");
|
|
271
|
-
return negotiated.descriptor;
|
|
343
|
+
async processes() {
|
|
344
|
+
const top = await this.json(await this.call(`${this.container}/top`));
|
|
345
|
+
return top.Processes.map((row) => ({ pid: Number(row[0]), startedAt: Date.parse(row[1] ?? "") || 0, state: row[2] ?? "", command: row[3] ?? "" }));
|
|
272
346
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
async processes() { return this.json(await this.call("/processes")); }
|
|
276
|
-
async ports() { return (await this.json(await this.call("/ports"))).map((entry) => entry.port); }
|
|
277
|
-
portUrl(port) { return `${this.base}${this.basePath}/ports/${port}/`; }
|
|
347
|
+
async ports() { return (await this.health()).ports; }
|
|
348
|
+
portUrl(port) { return `${this.base}${DOCKER_ENGINE_BASE_PATH}${this.container}/ports/${port}/`; }
|
|
278
349
|
request(port, input = "/", init = {}) {
|
|
279
|
-
// An absolute virtual path is relative to the port, never to the
|
|
280
|
-
// the
|
|
281
|
-
const target = new URL(input.toString().replace(/^\//, ""),
|
|
282
|
-
return this.call(target.href.slice(this.base.length +
|
|
350
|
+
// An absolute virtual path is relative to the port, never to the daemon,
|
|
351
|
+
// and the daemon may itself sit behind a path prefix such as a control plane.
|
|
352
|
+
const target = new URL(input.toString().replace(/^\//, ""), this.portUrl(port));
|
|
353
|
+
return this.call(target.href.slice(this.base.length + DOCKER_ENGINE_BASE_PATH.length), init);
|
|
354
|
+
}
|
|
355
|
+
/** The profiler's rows, carried under `substrate` in Docker's stats. */
|
|
356
|
+
async metrics() {
|
|
357
|
+
const stats = await this.json(await this.call(`${this.container}/stats?stream=false`));
|
|
358
|
+
return stats.substrate ?? {};
|
|
283
359
|
}
|
|
284
|
-
|
|
285
|
-
/** A WebSocket to a guest port, tunnelled through the agent. */
|
|
360
|
+
/** A WebSocket to a guest port, tunnelled through the daemon. */
|
|
286
361
|
webSocket(port, input = "/") {
|
|
287
|
-
const target = new URL(input.toString().replace(/^\//, ""),
|
|
362
|
+
const target = new URL(input.toString().replace(/^\//, ""), this.portUrl(port));
|
|
288
363
|
target.protocol = target.protocol === "https:" ? "wss:" : "ws:";
|
|
289
364
|
target.searchParams.set("token", this.tokenValue());
|
|
290
|
-
return
|
|
365
|
+
return this.makeSocket(target.href);
|
|
291
366
|
}
|
|
292
367
|
close() { this.abort.abort(); }
|
|
293
368
|
call(route, init = {}) {
|
|
294
369
|
const headers = new Headers(init.headers);
|
|
295
370
|
headers.set("authorization", `Bearer ${this.tokenValue()}`);
|
|
296
|
-
|
|
297
|
-
return this.network(`${this.base}${this.basePath}${route}`, { ...init, headers });
|
|
371
|
+
return this.network(`${this.base}${DOCKER_ENGINE_BASE_PATH}${route}`, { ...init, headers });
|
|
298
372
|
}
|
|
299
373
|
tokenValue() { return typeof this.token === "function" ? (this.token() ?? "") : this.token; }
|
|
300
374
|
async ok(response) {
|
|
@@ -306,4 +380,6 @@ export class RemoteRuntime {
|
|
|
306
380
|
return (await this.ok(await responseOrPromise)).json();
|
|
307
381
|
}
|
|
308
382
|
}
|
|
383
|
+
/** Frames a chunk the way the daemon frames stdout, for tests and tools that need the shape. */
|
|
384
|
+
export const dockerFrame = multiplexFrame;
|
|
309
385
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,wEAAwE;AACxE,iCAAiC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAoF5E,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,SAAS,MAAM,CAAC,IAAyB;IACvC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,MAAqB,CAAC;AACtF,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,IAAY,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS,QAAQ,CAAC,IAAY,IAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzF,mGAAmG;AACnG,MAAM,WAAW;IAEc;IADrB,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACrC,YAA6B,OAAsD;QAAtD,YAAO,GAAP,OAAO,CAA+C;IAAG,CAAC;IACvF,IAAI,CAAC,KAAiB;QACpB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzF,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI;gBAAE,MAAM;YACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACf,KAAK,CASZ;IAEe,IAAI,CAAS;IACb,KAAK,CAAoB;IACzB,OAAO,CAAe;IACtB,UAAU,CAA6B;IACvC,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IAC/C,kEAAkE;IAC1D,WAAW,CAAqB;IAChC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE/B,YAAY,OAAe,EAAE,KAAwB,EAAE,UAAgC,EAAE;QACvF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAChB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC3J,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBAC5D,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACjD,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gBACvB,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC3H,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3L,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAA2D,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,eAAe,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9N,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACjB,8FAA8F;gBAC9F,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;wBAAE,SAAS;oBAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5G,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzL,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,eAAe,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5J,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,YAAY,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;gBACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxH,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACnD,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;oBACxD,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oBAC5D,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;iBAClE,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;gBACpE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,0FAA0F;gBAC1F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAA4D,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,YAAY,OAAO,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/R,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;YACvC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,IAAY,SAAS;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC3F,OAAO,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,kCAAkC,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAChI,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAyC,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAChH,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,IAAI;YAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAgC;QACpD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,SAAS,CAAC;gBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,IAAI,KAAa,CAAC;gBAClB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACvC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnH,IAAI,IAAI;wBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAA8B;QAC7C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC;IAED,EAAE,CAAC,IAAY,EAAE,QAAkB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAY,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAAsB,EAAE,OAAqF;QACpI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAiB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,OAAO,EAAE;YACxF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,WAAW,EAAE,OAAO,CAAC,KAAK;gBAC1B,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtG,CAAC;SACH,CAAC,CAAC,CAAC;QACJ,OAAO,OAAO,CAAC,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EAAU;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAgD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACpH,OAAO,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,EAAU,EAAE,UAA+C,EAAE;QAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,uBAAuB,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/E,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,OAAO;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,UAAgC,EAAE;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC;QAC3F,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9L,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAiC,SAAS,CAAC;QACpD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAQ,EAAE,GAAG,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClJ,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAQ,EAAE,GAAG,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClJ,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAuB,EAAE;YACvD,KAAK,GAAG,QAAQ,CAAC;YACjB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChJ,CAAC,CAAC;QACF,IAAI,IAAI,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;QACvC,IAAI,MAAM,GAA4C,GAAG,EAAE,CAAC,SAAS,CAAC;QACtE,IAAI,MAAoC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,iDAAiD;YACjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,IAAI,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;gBACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACjL,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC1C,IAAI,MAAM;oBAAE,SAAS,CAAC;wBAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBAAC,IAAI,IAAI;4BAAE,MAAM;wBAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;gBAC1G,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,QAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpH,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7F,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,MAAM,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxI,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACzF,MAAM,GAAG,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5D,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5H,IAAI,GAAG;wBAAE,KAAK,CAAC,KAAK,CAAC,CAAC;;wBAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC,CAAC;gBACF,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;oBACnB,kHAAkH;oBAClH,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAC,IAAI,CAAC,GAAG;4BAAE,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAC3G,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;wBACxB,KAAK,CAAC,KAAK,IAAI,EAAE;4BACf,IAAI,CAAC;gCACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,WAAY;oCAAE,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAqB,CAAC,CAAC;gCACzG,IAAI,GAAG;oCAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;oCAAM,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvE,CAAC;4BAAC,MAAM,CAAC;gCAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;4BAAC,CAAC;wBAC5D,CAAC,CAAC,EAAE,CAAC;oBACP,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;oBACpB,SAAS,EAAE,EAAE,CAAC;oBACd,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5K,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,KAAK,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;IACrJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,UAAgC,EAAE;QAC7D,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,OAAO,CAAC,UAA4B,EAAE;QAC1C,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACnE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpJ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;QACzD,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtK,MAAM,MAAM,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7I,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5H,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;gBAClC,OAAO,aAAa,GAAG,EAAE,GAAG,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAAE,aAAa,IAAI,QAAQ,CAAC,KAAK,EAAG,CAAC,UAAU,CAAC;YAC1G,CAAC;;gBAAM,KAAK,MAAM,QAAQ,IAAI,SAAS;oBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,MAAM,MAAM,CAAC;QACb,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;YAC1D,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,MAAqB,CAAC,CAAC,CAAC,CAAC;YACrH,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBACnC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,QAAQ,MAAM,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrG,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACnB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;oBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxD,aAAa,GAAG,CAAC,CAAC;gBAClB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC;YACjD,MAAM;SACP,CAAC;IACJ,CAAC;IAED,uHAAuH;IACvH,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAuH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;QACjM,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAA4B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;QACjG,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU;YAC/B,aAAa,EAAE,SAAS;YACxB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;YAC1B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM;SAC1E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAA4B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;QACjG,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrJ,CAAC;IAED,KAAK,CAAC,KAAK,KAAwB,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAExE,OAAO,CAAC,IAAY,IAAY,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,uBAAuB,GAAG,IAAI,CAAC,SAAS,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;IAElH,OAAO,CAAC,IAAY,EAAE,QAAsB,GAAG,EAAE,OAAoB,EAAE;QACrE,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/F,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAgD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC;QACtI,OAAO,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,SAAS,CAAC,IAAY,EAAE,QAAsB,GAAG;QAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,KAAW,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7B,IAAI,CAAC,KAAa,EAAE,OAAoB,EAAE;QAChD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,uBAAuB,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACO,UAAU,KAAa,OAAO,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,KAAK,CAAC,EAAE,CAAC,QAAkB;QACjC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACO,KAAK,CAAC,IAAI,CAAc,iBAA+C;QAC7E,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAgB,CAAC;IACvE,CAAC;CACF;AAED,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SUBSTRATE_CONTROL_PLANE_PROTOCOL } from "@volter/browser-runtime/browser-hosted-protocol.js";
|
|
2
2
|
export interface HostedContractTarget {
|
|
3
3
|
baseUrl: string;
|
|
4
|
-
protocol
|
|
4
|
+
protocol?: typeof SUBSTRATE_CONTROL_PLANE_PROTOCOL;
|
|
5
|
+
token?: string;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
}
|
|
8
|
+
export interface DockerContractTarget {
|
|
9
|
+
baseUrl: string;
|
|
5
10
|
token?: string;
|
|
6
11
|
fetch?: typeof fetch;
|
|
7
12
|
}
|
|
@@ -9,5 +14,8 @@ export interface HostedContractFailure {
|
|
|
9
14
|
label: string;
|
|
10
15
|
detail?: unknown;
|
|
11
16
|
}
|
|
12
|
-
|
|
17
|
+
/** The container's wire, in Docker's words: every route of the subset answers Docker's shape, and every refusal is Docker's. */
|
|
18
|
+
export declare function runDockerContract({ baseUrl, token, fetch: network }: DockerContractTarget): Promise<HostedContractFailure[]>;
|
|
19
|
+
/** The control plane's wire: the descriptor negotiated, the catalogue covered, every safe route answering, every refusal a refusal. */
|
|
20
|
+
export declare function runHostedContract({ baseUrl, token, fetch: network }: HostedContractTarget): Promise<HostedContractFailure[]>;
|
|
13
21
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gCAAgC,EAEjC,MAAM,oDAAoD,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,gCAAgC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;AAE1E,gIAAgI;AAChI,wBAAsB,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAA0B,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA0DrJ;AAED,uIAAuI;AACvI,wBAAsB,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAA0B,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAuDrJ"}
|
package/dist/contract.js
CHANGED
|
@@ -1,11 +1,75 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
import {
|
|
8
|
-
|
|
1
|
+
// Two walks. The container's wire is Docker's (ADR-0026): `runDockerContract`
|
|
2
|
+
// drives a daemon the way a Docker client would, over the named subset, and
|
|
3
|
+
// checks the refusals are Docker's. The control plane's wire is ours, since a
|
|
4
|
+
// plane is not a container: `runHostedContract` negotiates its descriptor and
|
|
5
|
+
// walks its catalogue. The same walks prove a self-hosted tier and a managed
|
|
6
|
+
// service are one API.
|
|
7
|
+
import { SUBSTRATE_CONTROL_PLANE_PROTOCOL, SUBSTRATE_CONTROL_PLANE_ROUTES, SUBSTRATE_PROTOCOL_HEADER, hostedProtocolHeader, missingHostedRoutes, negotiateHostedProtocol, parseHostedProtocolHeader, } from "@volter/browser-runtime/browser-hosted-protocol.js";
|
|
8
|
+
import { DOCKER_ENGINE_API_VERSION, DOCKER_ENGINE_BASE_PATH } from "@volter/browser-runtime/docker-engine.js";
|
|
9
|
+
/** The container's wire, in Docker's words: every route of the subset answers Docker's shape, and every refusal is Docker's. */
|
|
10
|
+
export async function runDockerContract({ baseUrl, token, fetch: network = globalThis.fetch }) {
|
|
11
|
+
const failures = [];
|
|
12
|
+
const check = (label, ok, detail) => { if (!ok)
|
|
13
|
+
failures.push({ label: `docker: ${label}`, ...(detail !== undefined ? { detail } : {}) }); };
|
|
14
|
+
const base = `${baseUrl.replace(/\/$/, "")}${DOCKER_ENGINE_BASE_PATH}`;
|
|
15
|
+
const call = (path, init = {}) => {
|
|
16
|
+
const headers = new Headers(init.headers);
|
|
17
|
+
if (token)
|
|
18
|
+
headers.set("authorization", `Bearer ${token}`);
|
|
19
|
+
return network(`${base}${path}`, { ...init, headers });
|
|
20
|
+
};
|
|
21
|
+
const json = async (response) => response.json().then((value) => value).catch(() => undefined);
|
|
22
|
+
const ping = await call("/_ping");
|
|
23
|
+
check("GET /_ping answers OK with API-Version", ping.status === 200 && (await ping.text()) === "OK" && ping.headers.get("api-version") === DOCKER_ENGINE_API_VERSION, { status: ping.status, version: ping.headers.get("api-version") });
|
|
24
|
+
const version = await json(await call("/version"));
|
|
25
|
+
check("GET /version names the API version", version?.ApiVersion === DOCKER_ENGINE_API_VERSION, version);
|
|
26
|
+
const info = await json(await call("/info"));
|
|
27
|
+
check("GET /info answers", typeof info?.Containers === "number", info);
|
|
28
|
+
const list = await json(await call("/containers/json"));
|
|
29
|
+
const id = list?.[0]?.Id;
|
|
30
|
+
check("GET /containers/json lists one container with a 64-hex id", typeof id === "string" && /^[0-9a-f]{64}$/u.test(id) && Array.isArray(list?.[0]?.Names), list);
|
|
31
|
+
if (!id)
|
|
32
|
+
return failures;
|
|
33
|
+
const inspect = await json(await call(`/containers/${id.slice(0, 12)}/json`));
|
|
34
|
+
check("GET /containers/{id}/json inspects by a short id", inspect?.Id === id && typeof inspect?.State?.Status === "string" && typeof inspect?.Config?.WorkingDir === "string" && typeof inspect?.NetworkSettings?.Ports === "object", inspect);
|
|
35
|
+
const top = await json(await call(`/containers/${id}/top`));
|
|
36
|
+
check("GET /containers/{id}/top answers titles and rows", Array.isArray(top?.Titles) && Array.isArray(top?.Processes), top);
|
|
37
|
+
const stats = await json(await call(`/containers/${id}/stats?stream=false`));
|
|
38
|
+
check("GET /containers/{id}/stats answers with the profiler under substrate", typeof stats?.read === "string" && "substrate" in (stats ?? {}), stats);
|
|
39
|
+
const created = await json(await call(`/containers/${id}/exec`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ Cmd: ["sh", "-c", "printf contract; exit 4"], AttachStdout: true }) }));
|
|
40
|
+
check("POST /containers/{id}/exec creates an exec", typeof created?.Id === "string", created);
|
|
41
|
+
if (created?.Id) {
|
|
42
|
+
const started = await call(`/exec/${created.Id}/start`, { method: "POST", headers: { "content-type": "application/json" }, body: "{}" });
|
|
43
|
+
const body = new Uint8Array(await started.arrayBuffer());
|
|
44
|
+
const payload = body.byteLength >= 8 ? new TextDecoder().decode(body.subarray(8)) : "";
|
|
45
|
+
check("POST /exec/{id}/start streams multiplexed frames", started.status === 200 && started.headers.get("content-type") === "application/vnd.docker.multiplexed-stream" && body[0] === 1 && payload === "contract", { status: started.status, payload });
|
|
46
|
+
const execInspect = await json(await call(`/exec/${created.Id}/json`));
|
|
47
|
+
check("GET /exec/{id}/json carries the exit code", execInspect?.Running === false && execInspect?.ExitCode === 4, execInspect);
|
|
48
|
+
}
|
|
49
|
+
const head = await call(`/containers/${id}/archive?path=${encodeURIComponent(inspect?.Config?.WorkingDir ?? "/workspace")}`, { method: "HEAD" });
|
|
50
|
+
check("HEAD /containers/{id}/archive stats the path", head.status === 200 && typeof head.headers.get("x-docker-container-path-stat") === "string", head.status);
|
|
51
|
+
const events = await call(`/containers/${id}/events`);
|
|
52
|
+
check("GET /containers/{id}/events streams events (a row of ours)", events.status === 200 && /text\/event-stream/.test(events.headers.get("content-type") ?? ""), events.status);
|
|
53
|
+
await events.body?.cancel().catch(() => undefined);
|
|
54
|
+
const missing = await call("/containers/0000000000000000000000000000000000000000000000000000000000000000/json");
|
|
55
|
+
const missingBody = await json(missing);
|
|
56
|
+
check("an unknown container is 404 with Docker's message", missing.status === 404 && /No such container/u.test(missingBody?.message ?? ""), { status: missing.status, body: missingBody });
|
|
57
|
+
const unknown = await call("/definitely-not-a-route");
|
|
58
|
+
const unknownBody = await json(unknown);
|
|
59
|
+
check("an unknown route is 404 with a JSON message", unknown.status === 404 && typeof unknownBody?.message === "string", unknown.status);
|
|
60
|
+
const images = await call("/images/json");
|
|
61
|
+
check("the images API is refused in words", images.status === 501, images.status);
|
|
62
|
+
await images.arrayBuffer().catch(() => undefined);
|
|
63
|
+
if (token) {
|
|
64
|
+
const anonymous = await network(`${base}/_ping`);
|
|
65
|
+
check("a missing token is 401", anonymous.status === 401, anonymous.status);
|
|
66
|
+
await anonymous.arrayBuffer().catch(() => undefined);
|
|
67
|
+
}
|
|
68
|
+
return failures;
|
|
69
|
+
}
|
|
70
|
+
/** The control plane's wire: the descriptor negotiated, the catalogue covered, every safe route answering, every refusal a refusal. */
|
|
71
|
+
export async function runHostedContract({ baseUrl, token, fetch: network = globalThis.fetch }) {
|
|
72
|
+
const protocol = SUBSTRATE_CONTROL_PLANE_PROTOCOL;
|
|
9
73
|
const failures = [];
|
|
10
74
|
const check = (label, ok, detail) => { if (!ok)
|
|
11
75
|
failures.push({ label, ...(detail !== undefined ? { detail } : {}) }); };
|
|
@@ -17,7 +81,7 @@ export async function runHostedContract({ baseUrl, token, protocol, fetch: netwo
|
|
|
17
81
|
headers.set(name, value);
|
|
18
82
|
return network(`${base}${path}`, { ...init, headers });
|
|
19
83
|
};
|
|
20
|
-
const catalogue =
|
|
84
|
+
const catalogue = SUBSTRATE_CONTROL_PLANE_ROUTES;
|
|
21
85
|
// 1. The descriptor, negotiated before anything else is trusted.
|
|
22
86
|
const root = await call("/");
|
|
23
87
|
check(`${protocol}: GET / answers`, root.ok, root.status);
|
|
@@ -35,23 +99,7 @@ export async function runHostedContract({ baseUrl, token, protocol, fetch: netwo
|
|
|
35
99
|
check(`${protocol}: the server's catalogue covers the client's`, missing.length === 0, missing.map((r) => `${r.method} ${r.path}`));
|
|
36
100
|
// 3. Every safe route answers something other than "no such route".
|
|
37
101
|
for (const route of catalogue.filter((r) => r.safe && !r.path.includes("{"))) {
|
|
38
|
-
|
|
39
|
-
const controller = new AbortController();
|
|
40
|
-
try {
|
|
41
|
-
const response = await versioned(route.path, { signal: controller.signal });
|
|
42
|
-
check(`${protocol}: ${route.method} ${route.path} streams events`, response.ok && /text\/event-stream/.test(response.headers.get("content-type") ?? ""), response.status);
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
check(`${protocol}: ${route.method} ${route.path} streams events`, false, String(error));
|
|
46
|
-
}
|
|
47
|
-
finally {
|
|
48
|
-
controller.abort();
|
|
49
|
-
}
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
const query = route.path.startsWith("/fs/") ? "?path=/workspace&root=/workspace" : "";
|
|
53
|
-
const response = await versioned(`${route.path}${query}`, { method: route.method });
|
|
54
|
-
// A route may answer 404 for a missing resource; only "no such route" means it is not served.
|
|
102
|
+
const response = await versioned(route.path, { method: route.method });
|
|
55
103
|
const body = response.status === 404 ? (await response.json().catch(() => ({}))) : undefined;
|
|
56
104
|
const routed = response.status !== 404 || !/no such route/.test(String(body?.error ?? ""));
|
|
57
105
|
check(`${protocol}: ${route.method} ${route.path} is routed`, routed, { status: response.status, ...(body ? { body } : {}) });
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ export class RemoteControlPlane {
|
|
|
56
56
|
return {
|
|
57
57
|
kind: "substrate-workspace", version,
|
|
58
58
|
sourceSandboxId: response.headers.get("x-substrate-source-sandbox") ?? id,
|
|
59
|
-
createdAt, processState, format: "
|
|
59
|
+
createdAt, processState, format: "tar",
|
|
60
60
|
bytes: new Uint8Array(await response.arrayBuffer()), integrity,
|
|
61
61
|
entries, fileBytes,
|
|
62
62
|
};
|
package/dist/control-plane.js
CHANGED
|
@@ -99,7 +99,7 @@ export async function serveControlPlane({ manager, port = 4291, bind = "127.0.0.
|
|
|
99
99
|
if (segments.length === 3 && segments[2] === "snapshot" && method === "GET") {
|
|
100
100
|
const snapshot = await manager.snapshot(sandbox.id);
|
|
101
101
|
response.writeHead(200, {
|
|
102
|
-
...cors(request), "content-type": "application/
|
|
102
|
+
...cors(request), "content-type": "application/x-tar", "content-disposition": `attachment; filename=substrate-${sandbox.id}.tar`,
|
|
103
103
|
"x-substrate-integrity": snapshot.integrity, "x-substrate-entries": String(snapshot.entries),
|
|
104
104
|
"x-substrate-file-bytes": String(snapshot.fileBytes), "x-substrate-snapshot-version": String(snapshot.version),
|
|
105
105
|
"x-substrate-source-sandbox": snapshot.sourceSandboxId, "x-substrate-created-at": String(snapshot.createdAt),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../src/control-plane.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../src/control-plane.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.d.ts
CHANGED
package/dist/manager.js
CHANGED
|
@@ -91,12 +91,12 @@ export class SandboxManager {
|
|
|
91
91
|
throw new Error(`Unknown sandbox ${id}.`);
|
|
92
92
|
if (source.state !== "running")
|
|
93
93
|
throw new Error(`Sandbox ${id} must be running to snapshot its workspace.`);
|
|
94
|
-
const archive = await source.runtime.files.export("/workspace", "
|
|
94
|
+
const archive = await source.runtime.files.export("/workspace", "tar");
|
|
95
95
|
if (!archive.integrity)
|
|
96
96
|
throw new Error(`Sandbox ${id} returned a workspace archive without integrity metadata.`);
|
|
97
97
|
return {
|
|
98
98
|
kind: "substrate-workspace", version: 1, sourceSandboxId: id, createdAt: Date.now(), processState: "excluded",
|
|
99
|
-
format: "
|
|
99
|
+
format: "tar", bytes: archive.bytes, integrity: archive.integrity, entries: archive.entries, fileBytes: archive.fileBytes,
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
/** Creates a new sandbox from a portable workspace snapshot. */
|
package/dist/transfer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA4G,CAAC;AAEjK,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,MAAM,EAA2B,GAAG,GAAG,CAAC,MAAM,CAAC,CAkBhJ;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW9F;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,0GAA0G;AAC1G,wBAAsB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,IAAmB,EAAE,OAAO,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAOjM;AAED,2HAA2H;AAC3H,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,IAAmB,EAAE,YAAqC,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA4G,CAAC;AAEjK,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,MAAM,EAA2B,GAAG,GAAG,CAAC,MAAM,CAAC,CAkBhJ;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW9F;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,0GAA0G;AAC1G,wBAAsB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,IAAmB,EAAE,OAAO,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAOjM;AAED,2HAA2H;AAC3H,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,IAAmB,EAAE,YAAqC,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ3R;AAED,MAAM,WAAW,WAAW;IAAG,SAAS,EAAE,WAAW,GAAG,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC5G,MAAM,WAAW,WAAW;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAEtF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,IAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;CAAO,GAAG;IAAE,IAAI,IAAI,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CA8ExQ"}
|
package/dist/transfer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { tarTree, untarTree } from "@volter/browser-runtime/browser-tar.js";
|
|
2
2
|
/** Directory names that a lockfile or a build reproduces; never archived, never mirrored. */
|
|
3
3
|
export const DEPENDENCY_DIRECTORIES = Object.freeze(["node_modules", ".venv", "venv", "__pycache__", ".pglite", ".cache", ".turbo", ".next"]);
|
|
4
4
|
/** Every dependency directory under `root`, at any depth, as absolute paths. */
|
|
@@ -62,7 +62,7 @@ export function installCommand(filesystem, root) {
|
|
|
62
62
|
export async function moveWorkspace(local, remote, { root = "/workspace", exclude } = {}) {
|
|
63
63
|
const started = Date.now();
|
|
64
64
|
const excluded = new Set(exclude ?? dependencyExclusions(local, root));
|
|
65
|
-
const archive = await
|
|
65
|
+
const archive = await tarTree(local, root, root.split("/").filter(Boolean).pop() ?? "workspace", { exclude: excluded });
|
|
66
66
|
const imported = await remote.files.import(archive.bytes, { root, replace: true });
|
|
67
67
|
if (imported.integrity !== archive.integrity)
|
|
68
68
|
throw new Error("the sandbox's import did not match the export");
|
|
@@ -72,8 +72,9 @@ export async function moveWorkspace(local, remote, { root = "/workspace", exclud
|
|
|
72
72
|
export async function returnWorkspace(remote, local, { root = "/workspace", excludeNames = DEPENDENCY_DIRECTORIES } = {}) {
|
|
73
73
|
const started = Date.now();
|
|
74
74
|
const exclude = excludeNames.map((name) => (root === "/" ? `/${name}` : `${root}/${name}`));
|
|
75
|
-
const archive = await remote.files.export(root, "
|
|
76
|
-
|
|
75
|
+
const archive = await remote.files.export(root, "tar", { exclude });
|
|
76
|
+
local.mkdirSync(root, { recursive: true });
|
|
77
|
+
const restored = await untarTree(local, root, archive.bytes, { replace: false, strip: 1 });
|
|
77
78
|
if (archive.integrity && restored.integrity !== archive.integrity)
|
|
78
79
|
throw new Error("the local import did not match the sandbox's export");
|
|
79
80
|
return { bytes: archive.bytes.byteLength, entries: archive.entries, integrity: restored.integrity, ms: Date.now() - started };
|
|
@@ -127,14 +128,14 @@ export function mirrorWorkspace(local, remote, { root = "/workspace", exclude, o
|
|
|
127
128
|
draining = false;
|
|
128
129
|
})();
|
|
129
130
|
};
|
|
130
|
-
const onLocalChange = (path) => {
|
|
131
|
+
const onLocalChange = async (path) => {
|
|
131
132
|
if (!inScope(path))
|
|
132
133
|
return;
|
|
133
134
|
let bytes;
|
|
134
135
|
try {
|
|
135
136
|
if (!local.statSync(path).isFile())
|
|
136
137
|
return;
|
|
137
|
-
bytes = local.
|
|
138
|
+
bytes = await local.readFile(path);
|
|
138
139
|
}
|
|
139
140
|
catch {
|
|
140
141
|
return;
|
|
@@ -167,7 +168,7 @@ export function mirrorWorkspace(local, remote, { root = "/workspace", exclude, o
|
|
|
167
168
|
// A write that changes nothing is an echo too: the move that preceded this
|
|
168
169
|
// mirror, or a tool rewriting a file byte for byte.
|
|
169
170
|
try {
|
|
170
|
-
if (local.statSync(path).isFile() && digestOf(local.
|
|
171
|
+
if (local.statSync(path).isFile() && digestOf(await local.readFile(path)) === digest) {
|
|
171
172
|
stats.suppressed += 1;
|
|
172
173
|
remember(path, digest);
|
|
173
174
|
return;
|
package/dist/transfer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAG5E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjK,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,UAA6B,EAAE,IAAY,EAAE,QAA2B,sBAAsB;IACjI,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO;QACvB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACzD,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBAAC,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAClF,IAAI,CAAC,WAAW;gBAAE,SAAS;YAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACxD,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9B,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,cAAc,CAAC,UAA6B,EAAE,IAAY;IACxE,MAAM,GAAG,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5G,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,gCAAgC,CAAC;IACnE,IAAI,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,0BAA0B,CAAC;IACxD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,+BAA+B,CAAC;IAChF,IAAI,GAAG,CAAC,mBAAmB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,aAAa,CAAC;IAC9C,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACtE,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC;AAYD,0GAA0G;AAC1G,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAwB,EAAE,MAAqB,EAAE,EAAE,IAAI,GAAG,YAAY,EAAE,OAAO,KAAuD,EAAE;IAC1K,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/G,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5N,CAAC;AAED,2HAA2H;AAC3H,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAqB,EAAE,KAAwB,EAAE,EAAE,IAAI,GAAG,YAAY,EAAE,YAAY,GAAG,sBAAsB,KAA0D,EAAE;IAC7M,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3F,IAAI,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC1I,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;AAChI,CAAC;AAKD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,MAAqB,EAAE,EAAE,IAAI,GAAG,YAAY,EAAE,OAAO,EAAE,OAAO,KAA+F,EAAE;IACvN,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAgB,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAClE,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAU,EAAE;QACtD,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,IAAI,CAAC,GAAG,UAAU,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACnE,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvL,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAW,EAAE;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC5G,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAc,EAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,CAAC,IAAyB,EAAQ,EAAE;QAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC;wBAAC,MAAM,IAAI,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;gBAAC,CAAC;YAAC,CAAC;YACrK,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;QAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO;QAC3B,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO;YAAC,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACzG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,OAAO;QACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnJ,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;YAAE,OAAO;QACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrK,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO;QAC3B,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,OAAO;YACjC,2EAA2E;YAC3E,oDAAoD;YACpD,IAAI,CAAC;gBAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;oBAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;oBAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACtL,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;YAAE,OAAO;QACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC;gBAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;wBAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;wBAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAChK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACjH,KAAK;KACN,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/browser-sandboxes",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "The hosted backend's control-plane side: a remote runtime client with the in-page runtime's method names, a sandbox manager with Docker and Fly Machines providers, a control plane a page can call, and an MCP server",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|