@intentic/machine 1.312.0 → 1.313.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/device/config.d.ts.map +1 -1
- package/dist/device/config.js +11 -5
- package/dist/device/config.js.map +1 -1
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +20 -7
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/policy.js +3 -3
- package/dist/device/policy.js.map +1 -1
- package/dist/device/router.d.ts +19 -4
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +8 -1
- package/dist/device/router.js.map +1 -1
- package/dist/device/tools/describe.d.ts +1 -1
- package/dist/device/tools/describe.d.ts.map +1 -1
- package/dist/device/tools/describe.js +15 -5
- package/dist/device/tools/describe.js.map +1 -1
- package/dist/device/tools/files.d.ts.map +1 -1
- package/dist/device/tools/files.js +5 -7
- package/dist/device/tools/files.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +9 -0
- package/dist/device/tools/ic-binary.d.ts.map +1 -0
- package/dist/device/tools/ic-binary.js +73 -0
- package/dist/device/tools/ic-binary.js.map +1 -0
- package/dist/device/tools/sandboxes.d.ts +14 -21
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +83 -195
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.js +2 -2
- package/dist/device/tools/shell.js.map +1 -1
- package/dist/environments/children.d.ts +1 -0
- package/dist/environments/children.d.ts.map +1 -1
- package/dist/environments/children.js +3 -1
- package/dist/environments/children.js.map +1 -1
- package/dist/install.d.ts +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +4 -2
- package/dist/install.js.map +1 -1
- package/dist/machine-id.d.ts +4 -0
- package/dist/machine-id.d.ts.map +1 -0
- package/dist/machine-id.js +40 -0
- package/dist/machine-id.js.map +1 -0
- package/dist/sync/commands.d.ts +5 -1
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +12 -8
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/mirror.d.ts +1 -1
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +1 -1
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/report.d.ts +1 -1
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +4 -2
- package/dist/sync/report.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/device/tools/files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/device/tools/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DeviceFeature } from "@intentic/sandbox-contract";
|
|
2
|
+
export declare const icCandidates: (platform: NodeJS.Platform, home: string | undefined) => string[];
|
|
3
|
+
export declare const icAssetUrl: (version: string) => string;
|
|
4
|
+
export declare const icVersionFrom: (stdout: string) => string | undefined;
|
|
5
|
+
export declare const icNeedsFetch: (installed: string | undefined, agent: string) => boolean;
|
|
6
|
+
export declare const ensureCurrentIc: () => Promise<void>;
|
|
7
|
+
export declare const featuresFrom: (shapeHelp: string | undefined) => DeviceFeature[];
|
|
8
|
+
export declare const deviceFeatures: () => Promise<DeviceFeature[]>;
|
|
9
|
+
//# sourceMappingURL=ic-binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-binary.d.ts","sourceRoot":"","sources":["../../../src/device/tools/ic-binary.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuE,KAAK,aAAa,EAAW,MAAM,4BAA4B,CAAC;AAe9I,eAAO,MAAM,YAAY,aAAc,MAAM,CAAC,QAAQ,QAAQ,MAAM,GAAG,SAAS,KAAG,MAAM,EAKxF,CAAC;AAMF,eAAO,MAAM,UAAU,YAAa,MAAM,KAAG,MACgE,CAAC;AAG9G,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,GAAG,SAA+D,CAAC;AAIxH,eAAO,MAAM,YAAY,cAAe,MAAM,GAAG,SAAS,SAAS,MAAM,KAAG,OACO,CAAC;AAqBpF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,IAAI,CAqBpD,CAAC;AAyBF,eAAO,MAAM,YAAY,cAAe,MAAM,GAAG,SAAS,KAAG,aAAa,EAC+B,CAAC;AAK1G,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,aAAa,EAAE,CAU9D,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { chmod, rename, rm } from "node:fs/promises";
|
|
3
|
+
import { homeDir } from "@intentic/local-agent";
|
|
4
|
+
import { promisify } from "node:util";
|
|
5
|
+
import { DEV_VERSION, DEVICE_FEATURE_RESHAPE_LATER, DEVICE_FEATURE_SET_SHAPE, isNewer } from "@intentic/sandbox-contract";
|
|
6
|
+
import { archToken, download, exe, osToken } from "../../release.js";
|
|
7
|
+
import { MACHINE_VERSION } from "../../version.js";
|
|
8
|
+
const exec = promisify(execFile);
|
|
9
|
+
export const icCandidates = (platform, home) => {
|
|
10
|
+
if (platform === "win32") {
|
|
11
|
+
return [...(home === undefined ? [] : [`${home}\\.intentic\\ic\\bin\\ic.exe`]), "ic.exe"];
|
|
12
|
+
}
|
|
13
|
+
return [...(home === undefined ? [] : [`${home}/.intentic/ic/bin/ic`]), "/usr/local/bin/ic", "ic"];
|
|
14
|
+
};
|
|
15
|
+
const userIcPath = () => icCandidates(process.platform, homeDir())[0];
|
|
16
|
+
export const icAssetUrl = (version) => `https://github.com/intentic/intentic/releases/download/v${version}/ic-${osToken()}-${archToken()}${exe}`;
|
|
17
|
+
export const icVersionFrom = (stdout) => /^ic (\d+\.\d+\.\d+)\s*$/.exec(stdout.trim())?.[1];
|
|
18
|
+
export const icNeedsFetch = (installed, agent) => agent !== DEV_VERSION && (installed === undefined || isNewer(agent, installed));
|
|
19
|
+
const installedVersion = async () => {
|
|
20
|
+
for (const candidate of icCandidates(process.platform, homeDir())) {
|
|
21
|
+
const answer = await exec(candidate, ["--version"], { timeout: 30_000, windowsHide: true }).catch(() => undefined);
|
|
22
|
+
if (answer !== undefined) {
|
|
23
|
+
return icVersionFrom(answer.stdout) ?? DEV_VERSION;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
};
|
|
28
|
+
let checked;
|
|
29
|
+
export const ensureCurrentIc = async () => {
|
|
30
|
+
checked ??= (async () => {
|
|
31
|
+
const target = userIcPath();
|
|
32
|
+
if (target === undefined || !icNeedsFetch(await installedVersion(), MACHINE_VERSION)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const part = `${target}.download`;
|
|
36
|
+
try {
|
|
37
|
+
await download(icAssetUrl(MACHINE_VERSION), part);
|
|
38
|
+
if (process.platform !== "win32") {
|
|
39
|
+
await chmod(part, 0o755);
|
|
40
|
+
}
|
|
41
|
+
await rename(part, target);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
await rm(part, { force: true });
|
|
45
|
+
checked = undefined;
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
})();
|
|
49
|
+
await checked.catch(() => undefined);
|
|
50
|
+
};
|
|
51
|
+
const helpOf = async (verb) => {
|
|
52
|
+
for (const candidate of icCandidates(process.platform, homeDir())) {
|
|
53
|
+
const answer = await exec(candidate, [...verb, "--help"], { timeout: 30_000, windowsHide: true }).then(({ stdout }) => stdout, (error) => (error.code === "ENOENT" ? undefined : ""));
|
|
54
|
+
if (answer !== undefined) {
|
|
55
|
+
return answer === "" ? undefined : answer;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
};
|
|
60
|
+
export const featuresFrom = (shapeHelp) => shapeHelp?.includes("--set") === true ? [DEVICE_FEATURE_RESHAPE_LATER, DEVICE_FEATURE_SET_SHAPE] : [];
|
|
61
|
+
let features;
|
|
62
|
+
export const deviceFeatures = async () => {
|
|
63
|
+
features ??= (async () => {
|
|
64
|
+
await ensureCurrentIc();
|
|
65
|
+
return featuresFrom(await helpOf(["sandbox", "shape"]));
|
|
66
|
+
})();
|
|
67
|
+
const answered = await features;
|
|
68
|
+
if (answered.length === 0) {
|
|
69
|
+
features = undefined;
|
|
70
|
+
}
|
|
71
|
+
return answered;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=ic-binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-binary.js","sourceRoot":"","sources":["../../../src/device/tools/ic-binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type DeviceSandbox, type DeviceScopes, type SandboxResourcesAsk, type SandboxShapeFields, type SandboxShapeWhen } from "@intentic/sandbox-contract";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
export
|
|
4
|
-
readonly names: string;
|
|
5
|
-
readonly state: string;
|
|
6
|
-
readonly image: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const rowsFrom: (stdout: string) => DockerRow[];
|
|
9
|
-
export declare const sandboxesFrom: (rows: readonly DockerRow[]) => DeviceSandbox[];
|
|
10
|
-
export declare const FLEET_ARGS: readonly string[];
|
|
3
|
+
export declare const fleetFrom: (stdout: string) => DeviceSandbox[];
|
|
11
4
|
export declare const fleet: () => Promise<DeviceSandbox[]>;
|
|
12
|
-
export declare const resourcesFrom: (inspected: unknown) => SandboxResources | undefined;
|
|
13
|
-
type SavedShape = z.infer<typeof SandboxResourcesAskFieldsSchema>;
|
|
14
|
-
export declare const savedShapePath: (slug: string, env?: NodeJS.ProcessEnv, home?: string) => string;
|
|
15
|
-
export declare const savedShapeFrom: (text: string) => SavedShape | undefined;
|
|
16
|
-
export declare const fleetDetailed: () => Promise<DeviceSandbox[]>;
|
|
17
5
|
export declare const icInFlight: Set<string>;
|
|
18
6
|
export declare const listSandboxes: (scopes: DeviceScopes) => Promise<string>;
|
|
19
7
|
export declare const SandboxOpSchema: z.ZodEnum<{
|
|
@@ -30,18 +18,12 @@ export declare const SandboxSwapSchema: z.ZodEnum<{
|
|
|
30
18
|
update: "update";
|
|
31
19
|
}>;
|
|
32
20
|
export type SandboxSwap = z.infer<typeof SandboxSwapSchema>;
|
|
33
|
-
export declare const icCandidates: (platform: NodeJS.Platform, home: string | undefined) => string[];
|
|
34
21
|
export declare const icSwapArgs: (swap: SandboxSwap, slug: string, hash: string | undefined) => string[];
|
|
35
22
|
export declare const icRemoveArgs: (slug: string) => string[];
|
|
36
23
|
export declare const icConnectArgs: (setupCode: string | undefined) => string[];
|
|
37
24
|
export declare const icConnectEnv: (platformUrl: string | undefined) => {
|
|
38
25
|
readonly PLATFORM_URL: string;
|
|
39
26
|
};
|
|
40
|
-
export interface ReshapeTiming {
|
|
41
|
-
readonly later?: boolean | undefined;
|
|
42
|
-
readonly saved?: boolean | undefined;
|
|
43
|
-
}
|
|
44
|
-
export declare const icReshapeArgs: (slug: string, ask: SandboxResourcesAsk | undefined, { later, saved }?: ReshapeTiming) => string[];
|
|
45
27
|
export interface RunnerShapeFiles {
|
|
46
28
|
readonly definitionFile?: string;
|
|
47
29
|
readonly overlayFile?: string;
|
|
@@ -62,6 +44,18 @@ export declare const icFlow: (slug: string, args: readonly string[], onLine: (li
|
|
|
62
44
|
output: string;
|
|
63
45
|
}>;
|
|
64
46
|
export declare const swapSandbox: (swap: SandboxSwap, slug: string, hash: string | undefined, scopes: DeviceScopes, onLine: (line: string) => void) => Promise<string>;
|
|
47
|
+
export declare const shapeSandbox: (slug: string, fields: SandboxShapeFields, when: SandboxShapeWhen, scopes: DeviceScopes, onLine: (line: string) => void) => Promise<string>;
|
|
48
|
+
export declare const forgetShape: (slug: string, scopes: DeviceScopes, onLine: (line: string) => void) => Promise<string>;
|
|
49
|
+
export type OlderResizePlan = {
|
|
50
|
+
readonly kind: "shape";
|
|
51
|
+
readonly fields: SandboxShapeFields;
|
|
52
|
+
readonly when: SandboxShapeWhen;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: "forget";
|
|
55
|
+
} | {
|
|
56
|
+
readonly kind: "apply-saved";
|
|
57
|
+
};
|
|
58
|
+
export declare const olderResizePlan: (ask: SandboxResourcesAsk | undefined, later: boolean) => OlderResizePlan;
|
|
65
59
|
export declare const reshapeSandbox: (slug: string, ask: SandboxResourcesAsk | undefined, scopes: DeviceScopes, onLine: (line: string) => void, { later }?: {
|
|
66
60
|
readonly later?: boolean | undefined;
|
|
67
61
|
}) => Promise<string>;
|
|
@@ -72,5 +66,4 @@ export declare const DEFAULT_LOG_LINES = 200;
|
|
|
72
66
|
export declare const MAX_LOG_LINES = 2000;
|
|
73
67
|
export declare const sandboxLogs: (slug: string, lines: number | undefined, scopes: DeviceScopes) => Promise<string>;
|
|
74
68
|
export declare const tailSandboxLogs: (slug: string, scopes: DeviceScopes, onLine: (line: string) => void) => Promise<string>;
|
|
75
|
-
export {};
|
|
76
69
|
//# sourceMappingURL=sandboxes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../../../src/device/tools/sandboxes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../../../src/device/tools/sandboxes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,165 +1,51 @@
|
|
|
1
1
|
import { execFile, spawn } from "node:child_process";
|
|
2
|
-
import { mkdtemp,
|
|
3
|
-
import {
|
|
2
|
+
import { mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { homeDir } from "@intentic/local-agent";
|
|
7
|
+
import { DeviceSandboxSchema, icForgetShapeArgs, icPowerArgs, icShapeArgs, } from "@intentic/sandbox-contract";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { assertScope } from "../policy.js";
|
|
10
|
+
import { ensureCurrentIc, icCandidates } from "./ic-binary.js";
|
|
10
11
|
const exec = promisify(execFile);
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
catch {
|
|
24
|
-
return [];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
export const sandboxesFrom = (rows) => {
|
|
28
|
-
const isSidecar = (name) => {
|
|
29
|
-
const slug = name.startsWith(TUNNEL_PREFIX) ? name.slice(TUNNEL_PREFIX.length) : undefined;
|
|
30
|
-
return slug !== undefined && rows.some((row) => row.names === `${PREFIX}${slug}`);
|
|
31
|
-
};
|
|
32
|
-
return rows
|
|
33
|
-
.filter((row) => !isSidecar(row.names))
|
|
34
|
-
.map((row) => {
|
|
35
|
-
const slug = row.names.slice(PREFIX.length);
|
|
36
|
-
const tunnel = rows.find((candidate) => candidate.names === `${TUNNEL_PREFIX}${slug}`);
|
|
37
|
-
const sandbox = { slug, container: row.names, running: row.state === "running", image: row.image };
|
|
38
|
-
if (tunnel !== undefined) {
|
|
39
|
-
sandbox.tunnelRunning = tunnel.state === "running";
|
|
40
|
-
}
|
|
41
|
-
return sandbox;
|
|
42
|
-
});
|
|
12
|
+
const LIST_TIMEOUT_MS = 60_000;
|
|
13
|
+
const MAX_BUFFER = 8 * 1024 * 1024;
|
|
14
|
+
export const fleetFrom = (stdout) => {
|
|
15
|
+
const line = stdout
|
|
16
|
+
.split(/\r?\n/)
|
|
17
|
+
.map((text) => text.trim())
|
|
18
|
+
.findLast((text) => text.startsWith("["));
|
|
19
|
+
const parsed = line === undefined ? undefined : z.array(DeviceSandboxSchema).safeParse(JSON.parse(line));
|
|
20
|
+
if (parsed?.success !== true) {
|
|
21
|
+
throw new Error("The `ic` on this device did not answer `ic sandbox list --json`. Re-run the sandbox's install command on it to update ic.");
|
|
22
|
+
}
|
|
23
|
+
return parsed.data;
|
|
43
24
|
};
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
export const FLEET_ARGS = [
|
|
52
|
-
"ps",
|
|
53
|
-
"-a",
|
|
54
|
-
"--filter",
|
|
55
|
-
`name=^${PREFIX}`,
|
|
56
|
-
"--format",
|
|
57
|
-
`{"Names":{{json .Names}},"State":{{json .State}},"Image":{{json .Image}}}`,
|
|
58
|
-
];
|
|
59
|
-
export const fleet = async () => sandboxesFrom(rowsFrom((await docker(FLEET_ARGS)).stdout));
|
|
60
|
-
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
61
|
-
const envOf = (env, name) => Array.isArray(env)
|
|
62
|
-
? env.find((entry) => typeof entry === "string" && entry.startsWith(`${name}=`))?.slice(name.length + 1)
|
|
63
|
-
: undefined;
|
|
64
|
-
const tokensOf = (value) => (value ?? "").split(/\s+/).filter((token) => token !== "");
|
|
65
|
-
const capOf = (value) => (typeof value === "number" && value > 0 ? value : undefined);
|
|
66
|
-
const gpuRequested = (host) => (Array.isArray(host["DeviceRequests"]) ? host["DeviceRequests"] : []).some((request) => isRecord(request) &&
|
|
67
|
-
(request["Driver"] === "nvidia" ||
|
|
68
|
-
(Array.isArray(request["Capabilities"]) && request["Capabilities"].some((set) => Array.isArray(set) && set.includes("gpu")))));
|
|
69
|
-
export const resourcesFrom = (inspected) => {
|
|
70
|
-
if (!isRecord(inspected)) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
const host = isRecord(inspected["HostConfig"]) ? inspected["HostConfig"] : {};
|
|
74
|
-
const env = isRecord(inspected["Config"]) ? inspected["Config"]["Env"] : undefined;
|
|
75
|
-
const memory = capOf(host["Memory"]);
|
|
76
|
-
const nanos = capOf(host["NanoCpus"]);
|
|
77
|
-
return {
|
|
78
|
-
...(memory === undefined ? {} : { memoryBytes: memory }),
|
|
79
|
-
...(nanos === undefined ? {} : { cpus: nanos / 1_000_000_000 }),
|
|
80
|
-
privileged: host["Privileged"] === true,
|
|
81
|
-
gpu: gpuRequested(host),
|
|
82
|
-
hostRuntime: tokensOf(envOf(env, HOST_RUNTIME_ENV)),
|
|
83
|
-
overlayRuntime: tokensOf(envOf(env, OVERLAY_RUNTIME_ENV)),
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
export const savedShapePath = (slug, env = process.env, home = homedir()) => join(env["INTENTIC_HOME"] !== undefined && env["INTENTIC_HOME"] !== "" ? env["INTENTIC_HOME"] : join(home, STATE_DIR), `sandbox-${slug}.shape`);
|
|
87
|
-
const savedCap = (value, unit) => {
|
|
88
|
-
if (value === "") {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
const match = unit.exec(value);
|
|
92
|
-
const whole = match === null ? Number.NaN : Number(match[1]);
|
|
93
|
-
return Number.isInteger(whole) && whole > 0 ? whole : undefined;
|
|
94
|
-
};
|
|
95
|
-
export const savedShapeFrom = (text) => {
|
|
96
|
-
const shape = {};
|
|
97
|
-
for (const line of text.split(/\r?\n/)) {
|
|
98
|
-
const at = line.indexOf("=");
|
|
99
|
-
if (at < 0) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const key = line.slice(0, at).trim();
|
|
103
|
-
const value = line.slice(at + 1).trim();
|
|
104
|
-
if (key === "memory") {
|
|
105
|
-
const gib = savedCap(value, /^(\d+)g$/i);
|
|
106
|
-
if (gib !== undefined) {
|
|
107
|
-
shape.memoryGib = gib;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else if (key === "cpus") {
|
|
111
|
-
const cores = savedCap(value, /^(\d+)$/);
|
|
112
|
-
if (cores !== undefined) {
|
|
113
|
-
shape.cpus = cores;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else if ((key === "privileged" || key === "gpus") && (value === "on" || value === "off")) {
|
|
117
|
-
shape[key === "gpus" ? "gpu" : "privileged"] = value === "on";
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return Object.keys(shape).length === 0 ? undefined : shape;
|
|
121
|
-
};
|
|
122
|
-
const savedShape = async (slug) => await readFile(savedShapePath(slug), "utf8").then(savedShapeFrom, () => undefined);
|
|
123
|
-
const hasSavedShape = async (slug) => await readFile(savedShapePath(slug), "utf8").then((text) => /^(memory|cpus|privileged|gpus)=/m.test(text), () => false);
|
|
124
|
-
export const fleetDetailed = async () => {
|
|
125
|
-
const boxes = await fleet();
|
|
126
|
-
if (boxes.length === 0) {
|
|
127
|
-
return boxes;
|
|
128
|
-
}
|
|
129
|
-
const inspected = await docker(["inspect", "--format", "{{json .}}", ...boxes.map((box) => box.container)])
|
|
130
|
-
.then(({ stdout }) => stdout)
|
|
131
|
-
.catch((error) => error.stdout ?? "");
|
|
132
|
-
const byContainer = new Map();
|
|
133
|
-
for (const line of inspected.split(/\r?\n/)) {
|
|
134
|
-
if (!line.trim().startsWith("{")) {
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
try {
|
|
138
|
-
const parsed = JSON.parse(line);
|
|
139
|
-
const resources = resourcesFrom(parsed);
|
|
140
|
-
const name = isRecord(parsed) && typeof parsed["Name"] === "string" ? parsed["Name"].replace(/^\//, "") : undefined;
|
|
141
|
-
if (name !== undefined && resources !== undefined) {
|
|
142
|
-
byContainer.set(name, resources);
|
|
25
|
+
export const fleet = async () => {
|
|
26
|
+
await ensureCurrentIc();
|
|
27
|
+
const candidates = icCandidates(process.platform, homeDir());
|
|
28
|
+
for (const [index, binary] of candidates.entries()) {
|
|
29
|
+
const answer = await exec(binary, ["sandbox", "list", "--json"], { timeout: LIST_TIMEOUT_MS, maxBuffer: MAX_BUFFER, windowsHide: true }).catch((error) => {
|
|
30
|
+
if (error.code === "ENOENT" && index < candidates.length - 1) {
|
|
31
|
+
return undefined;
|
|
143
32
|
}
|
|
144
|
-
|
|
145
|
-
|
|
33
|
+
throw error.code === "ENOENT"
|
|
34
|
+
? new Error("This device has no `ic` command, so its sandboxes can't be listed or managed from here. Re-run the sandbox's install command on it to get one.")
|
|
35
|
+
: new Error(`ic could not list this device's sandboxes: ${(error.stderr ?? error.message).trim()}`);
|
|
36
|
+
});
|
|
37
|
+
if (answer !== undefined) {
|
|
38
|
+
return fleetFrom(answer.stdout);
|
|
146
39
|
}
|
|
147
40
|
}
|
|
148
|
-
|
|
149
|
-
const resources = byContainer.get(box.container);
|
|
150
|
-
if (resources === undefined) {
|
|
151
|
-
return box;
|
|
152
|
-
}
|
|
153
|
-
const saved = await savedShape(box.slug);
|
|
154
|
-
return { ...box, resources: saved === undefined ? resources : { ...resources, saved } };
|
|
155
|
-
}));
|
|
41
|
+
throw new Error("no ic candidate was tried");
|
|
156
42
|
};
|
|
157
43
|
export const icInFlight = new Set();
|
|
158
44
|
export const listSandboxes = async (scopes) => {
|
|
159
45
|
if (scopes.shell !== "on") {
|
|
160
46
|
assertScope(scopes, "sandboxes");
|
|
161
47
|
}
|
|
162
|
-
return JSON.stringify(await
|
|
48
|
+
return JSON.stringify(await fleet(), undefined, 2);
|
|
163
49
|
};
|
|
164
50
|
export const SandboxOpSchema = z.enum(["start", "stop", "restart"]);
|
|
165
51
|
const find = async (slug) => {
|
|
@@ -174,28 +60,15 @@ const find = async (slug) => {
|
|
|
174
60
|
export const manageSandbox = async (op, slug, scopes, onLine = () => { }) => {
|
|
175
61
|
assertScope(scopes, "sandboxes");
|
|
176
62
|
const target = await find(slug);
|
|
177
|
-
const
|
|
178
|
-
if (
|
|
179
|
-
|
|
180
|
-
if (run.code !== 0) {
|
|
181
|
-
throw new Error(`That ${op} failed on this device while applying the share saved for it.\n\n${run.output}`);
|
|
182
|
-
}
|
|
183
|
-
if (op === "start" && sidecar.length > 0) {
|
|
184
|
-
await docker(["start", ...sidecar]);
|
|
185
|
-
}
|
|
186
|
-
return `${op === "start" ? "Started" : "Restarted"} sandbox "${slug}" with the share saved for its next restart. Its files and its history were kept.`;
|
|
63
|
+
const run = await icFlow(slug, icPowerArgs(op, slug), onLine);
|
|
64
|
+
if (run.code !== 0) {
|
|
65
|
+
throw new Error(`That ${op} failed on this device.\n\n${run.output}`);
|
|
187
66
|
}
|
|
188
|
-
await docker([op, ...(op === "stop" ? [...sidecar, target.container] : [target.container, ...sidecar])]);
|
|
189
67
|
const verb = { start: "Started", stop: "Stopped", restart: "Restarted" }[op];
|
|
190
|
-
|
|
68
|
+
const applied = op !== "stop" && target.resources?.desired !== undefined;
|
|
69
|
+
return `${verb} sandbox "${slug}"${applied ? " with the shape saved for its next restart. Its files and its history were kept" : ""}.`;
|
|
191
70
|
};
|
|
192
71
|
export const SandboxSwapSchema = z.enum(["prepare", "update", "rebuild", "rollback"]);
|
|
193
|
-
export const icCandidates = (platform, home) => {
|
|
194
|
-
if (platform === "win32") {
|
|
195
|
-
return [...(home === undefined ? [] : [`${home}\\.intentic\\ic\\bin\\ic.exe`]), "ic.exe"];
|
|
196
|
-
}
|
|
197
|
-
return [...(home === undefined ? [] : [`${home}/.intentic/ic/bin/ic`]), "/usr/local/bin/ic", "ic"];
|
|
198
|
-
};
|
|
199
72
|
export const icSwapArgs = (swap, slug, hash) => {
|
|
200
73
|
if (swap === "rebuild") {
|
|
201
74
|
if (hash === undefined || hash === "") {
|
|
@@ -222,24 +95,6 @@ export const icConnectEnv = (platformUrl) => {
|
|
|
222
95
|
}
|
|
223
96
|
return { PLATFORM_URL: `${url.origin}${url.pathname.replace(/\/+$/, "")}` };
|
|
224
97
|
};
|
|
225
|
-
const capFlag = (value, spell) => value === undefined ? undefined : value === null ? "default" : spell(value);
|
|
226
|
-
const switchFlag = (value) => (value === undefined ? undefined : value ? "on" : "off");
|
|
227
|
-
export const icReshapeArgs = (slug, ask, { later = false, saved = false } = {}) => {
|
|
228
|
-
const flags = [
|
|
229
|
-
["--memory", capFlag(ask?.memoryGib, (gib) => `${gib}g`)],
|
|
230
|
-
["--cpus", capFlag(ask?.cpus, String)],
|
|
231
|
-
["--privileged", switchFlag(ask?.privileged)],
|
|
232
|
-
["--gpus", switchFlag(ask?.gpu)],
|
|
233
|
-
];
|
|
234
|
-
const given = flags.flatMap(([flag, value]) => (value === undefined ? [] : [flag, value]));
|
|
235
|
-
if (later) {
|
|
236
|
-
return ["sandbox", "reshape", slug, ...(given.length === 0 ? ["--forget"] : [...given, "--later"])];
|
|
237
|
-
}
|
|
238
|
-
if (given.length === 0 && !saved) {
|
|
239
|
-
throw new Error(`A reshape has to change something: give a memory or CPU cap, or a privileged/GPU switch.`);
|
|
240
|
-
}
|
|
241
|
-
return ["sandbox", "reshape", slug, ...given];
|
|
242
|
-
};
|
|
243
98
|
export const icRunnerArgs = (op, name, parentUrl, pair, shape = {}) => {
|
|
244
99
|
if (op === "runner-remove") {
|
|
245
100
|
return ["runner", "remove", name, "-y"];
|
|
@@ -324,7 +179,8 @@ const runStreamed = (binary, args, onLine, env) => {
|
|
|
324
179
|
});
|
|
325
180
|
};
|
|
326
181
|
export const runIc = async (args, onLine, env = {}) => {
|
|
327
|
-
|
|
182
|
+
await ensureCurrentIc();
|
|
183
|
+
const candidates = icCandidates(process.platform, homeDir());
|
|
328
184
|
for (const [index, binary] of candidates.entries()) {
|
|
329
185
|
const attempt = await runStreamed(binary, args, onLine, env);
|
|
330
186
|
if (attempt !== "missing") {
|
|
@@ -359,21 +215,50 @@ export const swapSandbox = async (swap, slug, hash, scopes, onLine) => {
|
|
|
359
215
|
const verb = { update: "Updated", rebuild: "Rebuilt", rollback: "Rolled back" }[swap];
|
|
360
216
|
return `${verb} sandbox "${slug}". Its files and its history were kept.`;
|
|
361
217
|
};
|
|
362
|
-
export const
|
|
218
|
+
export const shapeSandbox = async (slug, fields, when, scopes, onLine) => {
|
|
219
|
+
assertScope(scopes, "sandboxes");
|
|
220
|
+
if (Object.values(fields).every((value) => value === undefined)) {
|
|
221
|
+
throw new Error("A shape has to set something: a memory or CPU cap, or a privileged/GPU switch. To apply what is saved, restart the sandbox.");
|
|
222
|
+
}
|
|
223
|
+
await find(slug);
|
|
224
|
+
const run = await icFlow(slug, icShapeArgs(slug, fields, when), onLine);
|
|
225
|
+
if (run.code !== 0) {
|
|
226
|
+
throw new Error(`That shape was not ${when === "now" ? "applied" : "saved"} on this device.\n\n${run.output}`);
|
|
227
|
+
}
|
|
228
|
+
return when === "now"
|
|
229
|
+
? `Reshaped sandbox "${slug}". Its files and its history were kept, and the new shape survives every later update.`
|
|
230
|
+
: `Saved for the next restart of "${slug}" through ic (Restart, Start, an update, a rollback or a rebuild). It keeps running as it is until then.`;
|
|
231
|
+
};
|
|
232
|
+
export const forgetShape = async (slug, scopes, onLine) => {
|
|
363
233
|
assertScope(scopes, "sandboxes");
|
|
364
|
-
const empty = ask === undefined || Object.values(ask).every((value) => value === undefined);
|
|
365
|
-
const args = icReshapeArgs(slug, ask, { later, saved: !later && empty && (await hasSavedShape(slug)) });
|
|
366
234
|
await find(slug);
|
|
367
|
-
const run = await icFlow(slug,
|
|
235
|
+
const run = await icFlow(slug, icForgetShapeArgs(slug), onLine);
|
|
368
236
|
if (run.code !== 0) {
|
|
369
|
-
throw new Error(`That
|
|
237
|
+
throw new Error(`That could not be forgotten on this device.\n\n${run.output}`);
|
|
238
|
+
}
|
|
239
|
+
return `Nothing is saved for the next restart of "${slug}" any more. It keeps running as it is.`;
|
|
240
|
+
};
|
|
241
|
+
export const olderResizePlan = (ask, later) => {
|
|
242
|
+
const fields = ask ?? {};
|
|
243
|
+
const empty = Object.values(fields).every((value) => value === undefined);
|
|
244
|
+
if (empty) {
|
|
245
|
+
return later ? { kind: "forget" } : { kind: "apply-saved" };
|
|
246
|
+
}
|
|
247
|
+
return { kind: "shape", fields, when: later ? "nextRestart" : "now" };
|
|
248
|
+
};
|
|
249
|
+
export const reshapeSandbox = async (slug, ask, scopes, onLine, { later = false } = {}) => {
|
|
250
|
+
assertScope(scopes, "sandboxes");
|
|
251
|
+
const plan = olderResizePlan(ask, later);
|
|
252
|
+
if (plan.kind === "shape") {
|
|
253
|
+
return await shapeSandbox(slug, plan.fields, plan.when, scopes, onLine);
|
|
370
254
|
}
|
|
371
|
-
if (
|
|
372
|
-
return
|
|
373
|
-
? `Nothing is saved for the next restart of "${slug}" any more. It keeps running as it is.`
|
|
374
|
-
: `Saved for the next restart of "${slug}". It keeps running as it is until then.`;
|
|
255
|
+
if (plan.kind === "forget") {
|
|
256
|
+
return await forgetShape(slug, scopes, onLine);
|
|
375
257
|
}
|
|
376
|
-
|
|
258
|
+
if ((await find(slug)).resources?.desired === undefined) {
|
|
259
|
+
throw new Error(`Nothing is saved for the next restart of "${slug}", so there is nothing to apply.`);
|
|
260
|
+
}
|
|
261
|
+
return await manageSandbox("restart", slug, scopes, onLine);
|
|
377
262
|
};
|
|
378
263
|
export const reconnectSandbox = async (slug, setupCode, platformUrl, scopes, onLine) => {
|
|
379
264
|
assertScope(scopes, "sandboxes");
|
|
@@ -415,8 +300,11 @@ const readLogs = async (slug, lines, scopes) => {
|
|
|
415
300
|
assertScope(scopes, "sandboxes");
|
|
416
301
|
}
|
|
417
302
|
await find(slug);
|
|
418
|
-
const
|
|
419
|
-
|
|
303
|
+
const run = await runIc(["sandbox", "logs", slug, "--tail", String(lines)], () => { });
|
|
304
|
+
if (run.code !== 0) {
|
|
305
|
+
throw new Error(`The log of "${slug}" could not be read on this device.\n\n${run.output}`);
|
|
306
|
+
}
|
|
307
|
+
return run.output;
|
|
420
308
|
};
|
|
421
309
|
export const sandboxLogs = async (slug, lines, scopes) => {
|
|
422
310
|
const text = await readLogs(slug, lines ?? DEFAULT_LOG_LINES, scopes);
|