@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.
Files changed (55) hide show
  1. package/README.md +17 -0
  2. package/dist/device/config.d.ts.map +1 -1
  3. package/dist/device/config.js +11 -5
  4. package/dist/device/config.js.map +1 -1
  5. package/dist/device/mcp.d.ts.map +1 -1
  6. package/dist/device/mcp.js +20 -7
  7. package/dist/device/mcp.js.map +1 -1
  8. package/dist/device/policy.js +3 -3
  9. package/dist/device/policy.js.map +1 -1
  10. package/dist/device/router.d.ts +19 -4
  11. package/dist/device/router.d.ts.map +1 -1
  12. package/dist/device/router.js +8 -1
  13. package/dist/device/router.js.map +1 -1
  14. package/dist/device/tools/describe.d.ts +1 -1
  15. package/dist/device/tools/describe.d.ts.map +1 -1
  16. package/dist/device/tools/describe.js +15 -5
  17. package/dist/device/tools/describe.js.map +1 -1
  18. package/dist/device/tools/files.d.ts.map +1 -1
  19. package/dist/device/tools/files.js +5 -7
  20. package/dist/device/tools/files.js.map +1 -1
  21. package/dist/device/tools/ic-binary.d.ts +9 -0
  22. package/dist/device/tools/ic-binary.d.ts.map +1 -0
  23. package/dist/device/tools/ic-binary.js +73 -0
  24. package/dist/device/tools/ic-binary.js.map +1 -0
  25. package/dist/device/tools/sandboxes.d.ts +14 -21
  26. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  27. package/dist/device/tools/sandboxes.js +83 -195
  28. package/dist/device/tools/sandboxes.js.map +1 -1
  29. package/dist/device/tools/shell.js +2 -2
  30. package/dist/device/tools/shell.js.map +1 -1
  31. package/dist/environments/children.d.ts +1 -0
  32. package/dist/environments/children.d.ts.map +1 -1
  33. package/dist/environments/children.js +3 -1
  34. package/dist/environments/children.js.map +1 -1
  35. package/dist/install.d.ts +1 -1
  36. package/dist/install.d.ts.map +1 -1
  37. package/dist/install.js +4 -2
  38. package/dist/install.js.map +1 -1
  39. package/dist/machine-id.d.ts +4 -0
  40. package/dist/machine-id.d.ts.map +1 -0
  41. package/dist/machine-id.js +40 -0
  42. package/dist/machine-id.js.map +1 -0
  43. package/dist/sync/commands.d.ts +5 -1
  44. package/dist/sync/commands.d.ts.map +1 -1
  45. package/dist/sync/commands.js +12 -8
  46. package/dist/sync/commands.js.map +1 -1
  47. package/dist/sync/mirror.d.ts +1 -1
  48. package/dist/sync/mirror.d.ts.map +1 -1
  49. package/dist/sync/mirror.js +1 -1
  50. package/dist/sync/mirror.js.map +1 -1
  51. package/dist/sync/report.d.ts +1 -1
  52. package/dist/sync/report.d.ts.map +1 -1
  53. package/dist/sync/report.js +4 -2
  54. package/dist/sync/report.js.map +1 -1
  55. 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 type { DeviceScopes, DeviceSandbox, SandboxResources, SandboxResourcesAsk, SandboxResourcesAskFieldsSchema } from "@intentic/sandbox-contract";
1
+ import { type DeviceSandbox, type DeviceScopes, type SandboxResourcesAsk, type SandboxShapeFields, type SandboxShapeWhen } from "@intentic/sandbox-contract";
2
2
  import { z } from "zod";
3
- export interface DockerRow {
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":"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"}
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, readFile, rm, writeFile } from "node:fs/promises";
3
- import { homedir, tmpdir } from "node:os";
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 { STATE_DIR } from "@intentic/constants";
7
- import { HOST_RUNTIME_ENV, OVERLAY_RUNTIME_ENV } from "@intentic/sandbox-run";
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 DOCKER_TIMEOUT_MS = 120_000;
12
- const PREFIX = "intentic-sandbox-";
13
- const TUNNEL_PREFIX = "intentic-sandbox-tunnel-";
14
- export const rowsFrom = (stdout) => stdout
15
- .split(/\r?\n/)
16
- .map((line) => line.trim())
17
- .filter((line) => line.startsWith("{"))
18
- .flatMap((line) => {
19
- try {
20
- const parsed = JSON.parse(line);
21
- return typeof parsed.Names === "string" ? [{ names: parsed.Names, state: String(parsed.State), image: String(parsed.Image) }] : [];
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 DOCKER_MAX_BUFFER = 8 * 1024 * 1024;
45
- const docker = async (args) => await exec("docker", [...args], { timeout: DOCKER_TIMEOUT_MS, maxBuffer: DOCKER_MAX_BUFFER, windowsHide: true }).catch((error) => {
46
- if (error.code === "ENOENT") {
47
- throw new Error("This device has no docker command, so no Intentic sandboxes can run here.");
48
- }
49
- throw error;
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
- catch {
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
- return await Promise.all(boxes.map(async (box) => {
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 fleetDetailed(), undefined, 2);
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 sidecar = target.tunnelRunning === undefined ? [] : [`${TUNNEL_PREFIX}${slug}`];
178
- if (op !== "stop" && (await hasSavedShape(slug))) {
179
- const run = await icFlow(slug, ["sandbox", "reshape", slug], onLine);
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
- return `${verb} sandbox "${slug}"${sidecar.length === 0 ? "" : " and its tunnel"}.`;
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
- const candidates = icCandidates(process.platform, homedir());
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 reshapeSandbox = async (slug, ask, scopes, onLine, { later = false } = {}) => {
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, args, onLine);
235
+ const run = await icFlow(slug, icForgetShapeArgs(slug), onLine);
368
236
  if (run.code !== 0) {
369
- throw new Error(`That reshape failed on this device.\n\n${run.output}`);
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 (later) {
372
- return empty
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
- return `Reshaped sandbox "${slug}". Its files and its history were kept, and the new share survives every later update.`;
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 { stdout, stderr } = await docker(["logs", "--tail", String(lines), `${PREFIX}${slug}`]);
419
- return [stdout, stderr].filter((part) => part !== "").join("\n");
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);